todos.md 5.4 KB

Agent Lab MVP Todos

Workflow

  • Main session owns this file and evaluates progress after each todo.
  • Work on one todo at a time: write its plan, execute it, verify it, then update this file.
  • Do not plan all implementation details upfront. Later todos may change after each evaluation.
  • Detailed plans live beside this file as docs/plans/todo-N-*.md.
  • Status values: pending, in_progress, done, blocked.

Current State

  • Branch: codex/agent-lab-mvp.
  • MVP committed at 6babafa with FastAPI, WebSocket, static UI, OpenAI-compatible streaming, EventAgent handoff, provider-compatibility guards, and tests.
  • Post-MVP work now evolves toward the original queue/event-driven debugging-console requirements.

Coverage Review

  • OpenAI Chat Completions compatible streaming and provider payload guards are covered by todos 2, 5, and 7.
  • Queue/event-driven ChatAgent and EventAgent handoff is covered by todo 9.
  • EventAgent tool loading and UI management is covered by todo 10.
  • Prompt/pre-message editing, parameter controls, and reusable prompt sets are covered by todos 3 and 11.
  • Chat-window token, cached-token, TTFT, elapsed-time, and per-round stats are covered by todo 12.
  • Review follow-up found remaining gaps in real queue boundaries, API validation, packaging, and tool error isolation.

Todos

ID Status Plan Goal Verification
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 pending docs/plans/todo-14-message-role-validation.md Reject provider-invalid API message roles and malformed tool replies before network calls. Tests prove request validation rejects invalid roles and orphan tool messages.
15 pending 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.