Phase model changes:
- Drop `number` column (ordering now by createdAt + dependency DAG)
- Replace `description` (plain text) with `content` (Tiptap JSON)
- Add `approved` status as dispatch gate
- Add phase dependency management (list, remove, dependents)
- Approval gate in PhaseDispatchManager.queuePhase()
Agent log chunks:
- New `agent_log_chunks` table for DB-first output persistence
- LogChunkRepository port + DrizzleLogChunkRepository adapter
- FileTailer onRawContent callback streams chunks to DB
- getAgentOutput reads from DB first, falls back to file
Agent lifecycle module (src/agent/lifecycle/):
- SignalManager: atomic signal.json read/write/wait operations
- RetryPolicy: exponential backoff with error-specific strategies
- ErrorAnalyzer: pattern-based error classification
- CleanupStrategy: debug archival vs production cleanup
- AgentLifecycleController: orchestrates retry/recovery flow
- Missing signal recovery with instruction injection
Completion detection fixes:
- Read signal.json file instead of parsing stdout as JSON
- Cancellable pollForCompletion with { cancel } handle
- Centralized state cleanup via cleanupAgentState()
- Credential handler consolidation (prepareProcessEnv)
Prompts refactor:
- Split monolithic prompts.ts into per-mode modules
- Add workspace layout section to agent prompts
- Fix markdown-to-tiptap double-serialization
Server/tRPC:
- Subscription heartbeat (30s) and bounded queue (1000 max)
- Phase CRUD: approvePhase, deletePhase, dependency queries
- Page: findByIds, getPageUpdatedAtMap
- Wire new repositories through container and context
13 lines
471 B
SQL
13 lines
471 B
SQL
-- Migration: Add agent_log_chunks table for DB-first agent output persistence
|
|
-- Chunks survive agent deletion (no FK to agents table)
|
|
|
|
CREATE TABLE `agent_log_chunks` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`agent_id` text NOT NULL,
|
|
`agent_name` text NOT NULL,
|
|
`session_number` integer DEFAULT 1 NOT NULL,
|
|
`content` text NOT NULL,
|
|
`created_at` integer NOT NULL
|
|
);--> statement-breakpoint
|
|
CREATE INDEX `agent_log_chunks_agent_id_idx` ON `agent_log_chunks` (`agent_id`);
|