| 1 |
done |
docs/plans/todo-1-project-foundation.md |
Establish uv/FastAPI project skeleton, DDD package layout, and core failing tests for parser, event agent, and runtime routing. |
uv run pytest fails only because implementation is missing, not because tests or imports are malformed. |
| 2 |
done |
docs/plans/todo-2-domain-runtime.md |
Implement domain models, OpenAI Chat Completions compatible stream parsing, EventAgent tools, and the direct async runtime loop. |
Core tests pass with mocked ChatAgent client. |
| 3 |
done |
docs/plans/todo-3-websocket-api.md |
Add FastAPI config, HTTP routes, WebSocket protocol, static debug page, and assistant transcript persistence for multi-turn LLM calls. |
WebSocket contract tests pass; app imports successfully. |
| 4 |
done |
docs/plans/todo-4-real-llm-smoke.md |
Document env-based real LLM run flow, add a lightweight manual smoke helper, and make sure settings names are clear. |
App starts with env-based config; docs show exact uv commands and required env vars. |
| 5 |
done |
docs/plans/todo-5-tool-call-history.md |
Harden Chat Completions history so assistant tool calls and tool replies are sent in provider-compatible order. |
Tests prove the next model call includes assistant tool_calls before tool replies. |
| 6 |
done |
docs/plans/todo-6-cleanup-closeout.md |
Clean temporary/generated files, update contributor docs, and run final verification. |
Git status contains only intended source/docs files; uv run pytest passes. |
| 7 |
done |
docs/plans/todo-7-provider-compatibility.md |
Fix review findings for real Chat Completions compatible providers: default model fallback, role-aware message serialization, and configurable usage streaming. |
Tests prove provider payload shape and full suite passes. |
| 8 |
done |
docs/plans/todo-8-tool-pre-message-guard.md |
Prevent manually configured pre-messages from producing invalid provider tool payloads without tool_call_id. |
Tests prove invalid tool pre-messages are rejected and UI no longer exposes tool role. |
| 9 |
done |
docs/plans/todo-9-explicit-runtime-queues.md |
Refactor runtime internals to explicit input, output, and event queues while preserving the WebSocket stream contract. |
Tests prove ChatAgent consumes input queue, EventAgent consumes event queue, and output queue drives streamed responses. |
| 10 |
done |
docs/plans/todo-10-tool-registry-management.md |
Replace the single hardcoded EventAgent tool checkbox with a backend tool registry and UI-managed loaded tools. |
Tests prove available tools are listed by API and selected tools control EventAgent behavior. |
| 11 |
done |
docs/plans/todo-11-prompt-workspace.md |
Improve prompt/pre-message editing with browser-side persistence and reusable prompt sets. |
UI tests or focused JS tests prove prompts persist and can be restored. |
| 12 |
done |
docs/plans/todo-12-round-stats.md |
Move round statistics to structured backend events for token counts, cached tokens, TTFT, elapsed time, and per-turn summaries. |
uv run pytest tests/test_debug_runtime.py tests/test_websocket_api.py; uv run pytest. |
| 13 |
done |
docs/plans/todo-13-real-queue-websocket-loop.md |
Make runtime queues real producer/consumer boundaries and let WebSocket run separate upstream/downstream tasks. |
uv run pytest tests/test_debug_runtime.py tests/test_websocket_api.py; uv run pytest. |
| 14 |
done |
docs/plans/todo-14-message-role-validation.md |
Reject provider-invalid API message roles and malformed tool replies before network calls. |
uv run pytest tests/test_websocket_api.py tests/test_event_agent.py; uv run pytest. |
| 15 |
done |
docs/plans/todo-15-static-package-data.md |
Include static UI assets in installed package builds. |
uv run pytest tests/test_packaging.py; uv run pytest; uv build; wheel inspection. |
| 16 |
done |
docs/plans/todo-16-tool-error-isolation.md |
Convert EventAgent tool handler exceptions into structured tool-result errors instead of aborting the session. |
uv run pytest tests/test_event_agent.py tests/test_debug_runtime.py; uv run pytest. |
| 17 |
done |
docs/plans/todo-17-agent-config-audit-tools.md |
Align ChatAgent/EventAgent config, add extra_body defaults, default EventAgent to one event round, add mock tools, audit events, and backend logging. |
uv run pytest passes (42 passed, one existing Starlette deprecation warning). |
| 18 |
done |
docs/plans/todo-18-prompt-modal-tool-ui.md |
Move prompt workspace into a modal and improve visible tool-management UI. |
uv run pytest passes (46 passed), plus local browser check confirms modal and tool UI render. |
| 19 |
done |
docs/plans/todo-19-latency-oriented-polish.md |
Do one optimization pass focused on reducing perceived reply wait time and cleaning frontend/backend rough edges. |
uv run pytest passes (49 passed), plus local browser check confirms tools are visible in the first viewport. |
| 20 |
done |
docs/plans/todo-20-agent-config-modals.md |
Split ChatAgent and EventAgent settings into separate configuration modals so the sidebar is no longer crowded. |
uv run pytest passes. |