Lukas May
342b490fe7
feat: Task decomposition for Tailwind/Radix/shadcn foundation setup
...
Decomposed "Foundation Setup - Install Dependencies & Configure Tailwind"
phase into 6 executable tasks:
1. Install Tailwind CSS, PostCSS & Autoprefixer
2. Map MUI theme to Tailwind design tokens
3. Setup CSS variables for dynamic theming
4. Install Radix UI primitives
5. Initialize shadcn/ui and setup component directory
6. Move MUI to devDependencies and verify setup
Tasks follow logical dependency chain with final human verification
checkpoint before proceeding with component migration.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-10 09:48:51 +01:00
Lukas May
fab7706f5c
feat: Phase schema refactor, agent lifecycle module, and log chunks
...
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
2026-02-09 22:33:28 +01:00
Lukas May
2877484012
Add userDismissedAt field to agents schema
2026-02-07 00:33:12 +01:00
Lukas May
1aac486f48
test(14-07): add DefaultPhaseDispatchManager tests
...
- Add queuePhase tests (add to queue, emit event, include deps)
- Add getNextDispatchablePhase tests (empty, no deps first, skip incomplete, oldest)
- Add dispatchNextPhase tests (update status, emit event, remove from queue)
- Add completePhase tests (update status, remove from queue, emit event)
- Add blockPhase tests (update status, add to blocked, emit event)
- Add dependency scenario test (diamond dependency pattern)
2026-02-02 13:48:35 +01:00
Lukas May
053168f6cf
feat(14-04): export DefaultPhaseDispatchManager from dispatch module
...
- Add export for phase dispatch adapter
- Consistent with DefaultDispatchManager export pattern
2026-02-02 13:40:33 +01:00
Lukas May
1ba95871f5
feat(14-04): implement DefaultPhaseDispatchManager adapter
...
- In-memory queue with Map<string, QueuedPhase>
- Dependency checking via phaseRepository.getDependencies()
- queuePhase: fetch phase, get dependencies, emit PhaseQueuedEvent
- getNextDispatchablePhase: filter queue, sort by queuedAt
- dispatchNextPhase: update status to in_progress, emit PhaseStartedEvent
- completePhase: update status to completed, emit PhaseCompletedEvent
- blockPhase: update status to blocked, emit PhaseBlockedEvent
- getPhaseQueueState: return queued, ready, blocked arrays
2026-02-02 13:40:17 +01:00
Lukas May
a890df75d5
feat(14-03): export phase dispatch types from dispatch module
...
- Export QueuedPhase interface
- Export PhaseDispatchResult interface
- Export PhaseDispatchManager port interface
2026-02-02 13:36:25 +01:00
Lukas May
22cd82da40
feat(14-03): define PhaseDispatchManager port interface
...
- Add QueuedPhase interface (phaseId, initiativeId, queuedAt, dependsOn)
- Add PhaseDispatchResult interface (success, phaseId, reason)
- Add PhaseDispatchManager interface with queue/dispatch operations
- Methods mirror DispatchManager for consistency
2026-02-02 13:36:12 +01:00
Lukas May
91e57c66eb
feat(11-01): add AgentMode type and database column
...
- Add AgentMode type: 'execute' | 'discuss' | 'breakdown'
- Add mode column to agents table with 'execute' default
- Update SpawnAgentOptions to accept optional mode
- Update AgentInfo interface to include mode field
- Update ClaudeAgentManager.toAgentInfo to map mode
- Fix MockAgentManager to include mode in spawn
- Fix dispatch manager tests to include mode
2026-01-31 19:03:42 +01:00
Lukas May
151a4c99f7
feat(10-01): extend agent schema to multi-question array
...
- Change status from 'question' to 'questions' (plural)
- Add QuestionItem with id field for answer matching
- Update PendingQuestion to PendingQuestions with questions array
- Update AgentWaitingEvent payload to questions array
- Update ClaudeAgentManager and MockAgentManager adapters
- Update TestHarness and all test files
2026-01-31 17:57:34 +01:00
Lukas May
3a3d3f4c08
feat(08.1-01): update AgentWaitingEvent with structured question data
...
- Add options array for predefined question choices
- Add multiSelect boolean for multi-selection questions
- Update dispatch manager test mock with getPendingQuestion
2026-01-31 15:25:11 +01:00
Lukas May
364ffc357b
test(05-04): add DispatchManager tests and wire up exports
...
- Add 14 comprehensive tests for DefaultDispatchManager
- Test queue(), getNextDispatchable(), completeTask(), blockTask()
- Test dispatchNext() with agent dispatch flow
- Test getQueueState() for queue visibility
- Test priority ordering and dependency scenario
- Export DefaultDispatchManager from dispatch module
2026-01-30 20:42:38 +01:00
Lukas May
e924fb655a
feat(05-04): implement DefaultDispatchManager with dependency checking
...
- Add DefaultDispatchManager class implementing DispatchManager interface
- Implement queue() with task fetching and event emission
- Implement getNextDispatchable() with priority-based ordering
- Implement completeTask() and blockTask() with status updates
- Implement dispatchNext() for agent assignment
- Implement getQueueState() for queue visibility
- Use in-memory Map for queue management
2026-01-30 20:40:34 +01:00
Lukas May
b2e7c2920f
feat(05-03): create DispatchManager port interface
...
- QueuedTask type with priority and dependencies
- DispatchResult type for dispatch operation outcomes
- DispatchManager interface with queue/dispatch/complete/block methods
- Follows hexagonal architecture pattern (same as EventBus, AgentManager)
2026-01-30 20:32:43 +01:00