| 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 |
in_progress |
docs/plans/todo-15-static-package-data.md |
Include static UI assets in installed package builds. |
Build/package inspection proves index.html, JS, and CSS are present. |
| 16 |
pending |
docs/plans/todo-16-tool-error-isolation.md |
Convert EventAgent tool handler exceptions into structured tool-result errors instead of aborting the session. |
Tests prove a failing tool returns an error payload and the WebSocket run stays structured. |