Commit Graph

6 Commits

Author SHA1 Message Date
Yaojia Wang
006b4ee5d7 fix: resolve ruff lint errors in Phase 2 code
- Move intent imports to TYPE_CHECKING block in graph.py (TC001)
- Rename test classes to CapWords convention (N801)
- Fix line length violations across test files (E501)
- Auto-fix import sorting (I001)
2026-03-30 21:44:47 +02:00
Yaojia Wang
b861ff055f test: add routing integration tests for Phase 2 test requirements
9 tests covering the complete multi-agent routing flow:
- Single-intent routing to each agent (order_lookup, order_actions, discount, fallback)
- Multi-intent routing hint injection for sequential execution
- Ambiguity detection skips graph and returns clarification
- Low confidence threshold triggers ambiguity
- No-classifier fallback to supervisor prompt routing

Fills Phase 2 test requirement for integration-level routing coverage.
Total: 197 tests, 92.60% coverage.
2026-03-30 21:41:01 +02:00
Yaojia Wang
512f988dd0 test: add Phase 2 checkpoint acceptance tests
18 integration tests validating all 7 Phase 2 checkpoint criteria:
1. Order query routes to order_lookup agent
2. Multi-intent classification with routing hint injection
3. Ambiguous message triggers clarification prompt
4. 30-min interrupt TTL auto-cancel with retry prompt
5. Webhook POST escalation with retry on failure
6. E-commerce template loads 4 correctly configured agents
7. Coverage at 92.60% (188 tests total)
2026-03-30 21:38:25 +02:00
Yaojia Wang
6e7b824b64 test: add integration tests for WebSocket message flow
17 integration tests covering:
- Happy path: token streaming, tool calls, multi-message sessions
- Interrupt flow: approve and reject paths with manager tracking
- Session TTL: expiration, sliding window reset, interrupt extension
- Validation: invalid JSON, missing fields, size limits
- Interrupt TTL: expired interrupt sends retry prompt

Fills Phase 1 test gap for integration-level WebSocket coverage.
Total: 170 tests, 92.15% coverage.
2026-03-30 21:24:31 +02:00
Yaojia Wang
1050df780d feat: complete phase 2 -- multi-agent routing, interrupt TTL, escalation, templates
- Intent classification with LLM structured output (single/multi/ambiguous)
- Discount agent with apply_discount and generate_coupon tools
- Interrupt manager with 30-min TTL auto-expiration and retry prompts
- Webhook escalation module with exponential backoff retry (max 3)
- Three vertical industry templates (e-commerce, SaaS, fintech)
- Template loading in AgentRegistry
- Enhanced supervisor prompt with dynamic agent descriptions
- 153 tests passing, 90.18% coverage
2026-03-30 21:04:39 +02:00
Yaojia Wang
33488fd634 feat: complete phase 1 -- core framework with chat loop, agents, and React UI
Backend:
- FastAPI WebSocket /ws endpoint with streaming via LangGraph astream
- LangGraph Supervisor connecting 3 mock agents (order_lookup, order_actions, fallback)
- YAML Agent Registry with Pydantic validation and immutable configs
- PostgresSaver checkpoint persistence via langgraph-checkpoint-postgres
- Session TTL with 30-min sliding window and interrupt extension
- LLM provider abstraction (Anthropic/OpenAI/Google)
- Token usage + cost tracking callback handler
- Input validation: message size cap, thread_id format, content length
- Security: no hardcoded defaults, startup API key validation, no input reflection

Frontend:
- React 19 + TypeScript + Vite chat UI
- WebSocket hook with reconnect + exponential backoff
- Streaming token display with agent attribution
- Interrupt approval/reject UI for write operations
- Collapsible tool call viewer

Testing:
- 87 unit tests, 87% coverage (exceeds 80% requirement)
- Ruff lint + format clean

Infrastructure:
- Docker Compose (PostgreSQL 16 + backend)
- pyproject.toml with full dependency management
2026-03-30 00:54:21 +02:00