Commit Graph

2644 Commits

Author SHA1 Message Date
Dustin Byrne
289f865689 feat(HAI-027): complete Step 2 — inject commands into triage agent context 2026-03-25 22:17:44 -04:00
Dustin Byrne
e7c4977dc4 feat(HAI-027): complete Step 1 — add testCommand and buildCommand to Settings type 2026-03-25 22:15:46 -04:00
Dustin Byrne
4bb1651e8d feat(HAI-026): add worktreeInitCommand setting for post-worktree-creation hooks
- Add worktreeInitCommand field to Settings type in core types
- Execute worktreeInitCommand in executor after worktree creation
- Add worktreeInitCommand UI field to SettingsModal for user configuration
- Add settings round-trip tests for worktreeInitCommand persistence
- Add executor tests for worktreeInitCommand execution behavior
2026-03-25 22:14:14 -04:00
Dustin Byrne
e1a165b9dc test(HAI-026): complete Step 4 — add settings round-trip tests for worktreeInitCommand 2026-03-25 22:13:14 -04:00
Dustin Byrne
a1380e8637 feat(HAI-026): complete Step 3 — add worktreeInitCommand UI field to SettingsModal 2026-03-25 22:12:35 -04:00
Dustin Byrne
8ae79a95de feat(HAI-026): complete Step 2 — execute worktreeInitCommand after worktree creation 2026-03-25 22:11:36 -04:00
Dustin Byrne
a38e54106b fix: install missing multer dependency 2026-03-25 22:11:33 -04:00
Dustin Byrne
0ec136a1c0 feat(HAI-026): complete Step 1 — add worktreeInitCommand to Settings 2026-03-25 22:09:43 -04:00
Dustin Byrne
bbe2ed2166 feat(HAI-023): add file attachments support for tasks
- Add core types and store methods for attachment CRUD operations
- Add dashboard API routes for upload, download, and delete of attachments
- Add attachment UI in TaskDetailModal with upload and management controls
- Add CLI 'attach' command for attaching files to tasks
- Update documentation with attachment feature usage details
2026-03-25 22:06:58 -04:00
Dustin Byrne
a6a70a1ac0 feat(HAI-023): complete Step 6 — documentation updates 2026-03-25 22:06:37 -04:00
Dustin Byrne
554137b73f feat(HAI-023): complete Step 4 — CLI attach command 2026-03-25 22:05:19 -04:00
Dustin Byrne
f4e6420b1f feat(HAI-025): add column-based agent-active glow for in-progress cards
- Add agent-active glow styling to TaskCard based on column status
- Update store to support column-based agent-active state tracking
- Refactor merger logic for improved agent-active handling
- Add comprehensive column-based agent-active test cases for TaskCard
2026-03-25 22:04:07 -04:00
Dustin Byrne
2750d4b262 feat(HAI-023): complete Step 3 — dashboard UI view and upload screenshots 2026-03-25 22:03:42 -04:00
Dustin Byrne
239ec0a537 test(HAI-025): complete Step 2 — add column-based agent-active test cases 2026-03-25 22:02:45 -04:00
Dustin Byrne
69ff2f7aa0 feat: squash merge for clean one-commit-per-task history
- git merge --squash replaces git merge --no-ff
- Merge agent prompt updated for squash flow
- Fallback detection uses staged changes instead of MERGE_HEAD
- Abort uses git reset --merge instead of git merge --abort
- Store fallback merge also squashes + commits
2026-03-25 22:02:33 -04:00
Dustin Byrne
f6c5c62f93 feat(HAI-025): complete Step 1 — add column-based agent-active glow for in-progress cards 2026-03-25 22:02:27 -04:00
Dustin Byrne
005e504565 feat(HAI-024): remove PROMPT.md header from TaskDetailModal
- Remove the hard-coded PROMPT.md h4 heading from the task detail section
- Add test asserting the PROMPT.md heading is no longer rendered
2026-03-25 22:02:01 -04:00
Dustin Byrne
27c8744c46 feat(HAI-024): complete Step 1 — remove PROMPT.md header from TaskDetailModal 2026-03-25 22:01:29 -04:00
Dustin Byrne
507c0d6b67 feat(HAI-023): complete Step 2 — dashboard API upload/download/delete routes 2026-03-25 22:00:51 -04:00
Dustin Byrne
7f47f1e781 feat(HAI-023): complete Step 1 — core types and store methods for attachments 2026-03-25 21:57:51 -04:00
Dustin Byrne
a6d18e1b53 feat: replace .DONE file with task_done tool
- task_done() marks all remaining steps as done and signals completion
- No more filesystem side channel for completion detection
- Removes all .DONE references from executor and prompts
2026-03-25 21:51:34 -04:00
Dustin Byrne
b5da595f3b feat: triage agent gets task_list and task_get tools for duplicate detection
- task_list: returns all non-done tasks (ID, column, description, deps)
- task_get: returns full task detail including PROMPT.md content
- Agent calls task_list to scan for duplicates, task_get to verify
2026-03-25 21:48:33 -04:00
Dustin Byrne
f74a1f3597 feat(HAI-022): add duplicate task detection during triage
- Add duplicate check instructions to specification prompt
- Read existing tasks before writing spec to detect duplicates
- Agent outputs DUPLICATE: {id} instead of PROMPT.md when duplicate found
- Parse agent output for duplicate flag and auto-close duplicate tasks
- Log duplicate relationship before deleting the duplicate task
2026-03-25 21:48:22 -04:00
Dustin Byrne
285893d026 feat: triage agent checks for duplicate tasks before specifying
- Triage prompt instructs agent to read existing task.json files
- If duplicate found, agent writes DUPLICATE: HAI-XXX to PROMPT.md
- Triage processor detects this and deletes the duplicate task
- Avoids wasting tokens specifying work that's already tracked
2026-03-25 21:47:23 -04:00
Dustin Byrne
34fe3fe969 fix(HAI-019): add generic type parameters to tool definitions
- Extract tool parameter schemas to module-level constants for reuse
- Add Static<typeof schema> type annotations to tool execute callbacks
- Import Static type from @mariozechner/pi-ai
- Remove inline parameter schema definitions from tool objects
2026-03-25 21:45:43 -04:00
Dustin Byrne
e7d964f9d2 feat(HAI-013): add markdown rendering styles and TaskDetailModal tests
- Add markdown-body base styles in dashboard styles.css
- Remove backdrop and enable scroll on task detail prompt rendering
- Add TaskDetailModal unit tests with vitest jsdom environment
- Update vitest config with globals and jsdom support
- Clean up unused test files and legacy concurrency module
2026-03-25 21:45:05 -04:00
Dustin Byrne
dbea81c67e feat(HAI-015): add agent-active glow effect to TaskCard
- Add agent-active CSS with animated purple border glow using in-progress theme color
- Apply agent-active class conditionally in TaskCard component
- Add TaskCard agent-active unit tests
- Move TaskCard tests to __tests__ directory
2026-03-25 21:44:26 -04:00
Dustin Byrne
f34d849282 feat(HAI-020): add atomic writes and remove truncation recovery workarounds
- Add atomic writes for config.json with config lock in store
- Simplify safeReadTaskJson to readTaskJson, removing truncation recovery logic
- Remove withRetry workaround from fetchTaskDetail in dashboard API
- Remove related retry logic from executor and dashboard command
- Update store tests to cover atomic write behavior
2026-03-25 21:43:57 -04:00
Dustin Byrne
bce41ca00c feat(HAI-013): complete Step 1 — add markdown-body base styles, ensure no backdrop on prompt rendering 2026-03-25 21:43:46 -04:00
Dustin Byrne
99502e4e05 feat: resume orphaned in-progress tasks on engine restart 2026-03-25 21:42:47 -04:00
Dustin Byrne
2488e1c9d2 feat(HAI-020): complete Step 3 — remove withRetry workaround from fetchTaskDetail 2026-03-25 21:38:16 -04:00
Dustin Byrne
6975fae33f feat(HAI-020): complete Step 2 — simplify safeReadTaskJson to readTaskJson, remove truncation recovery 2026-03-25 21:37:44 -04:00
Dustin Byrne
6d2c234d89 feat(HAI-020): complete Step 1 — atomic writes for config.json with config lock 2026-03-25 21:36:38 -04:00
Dustin Byrne
0e023c7b2b fix(HAI-018): improve error handling for task detail fetching
- Fix server-side error handling in GET /tasks/:id with retry on transient failures
- Add client-side retry logic for fetchTaskDetail in dashboard
- Add unit tests for routes and API error/retry behavior
- Remove outdated core store tests and vitest config
- Update documentation for error handling improvements
2026-03-25 21:33:39 -04:00
Dustin Byrne
9596430016 fix(HAI-019): complete Step 1 — add generic type parameters to tool definitions
Extract TypeBox schemas to module-level constants and use Static<typeof schema>
to explicitly type execute callback params, resolving all TS7006 implicit-any
errors in the four create*Tool methods.
2026-03-25 21:33:15 -04:00
Dustin Byrne
0c0ca5ad95 fix(HAI-018): complete Step 4 — documentation & delivery 2026-03-25 21:32:46 -04:00
Dustin Byrne
6f1cc2cb48 fix(HAI-018): complete Step 2 — add client-side retry for fetchTaskDetail
- Added withRetry wrapper in api.ts (1 retry, 200ms delay)
- fetchTaskDetail now retries transient 500s transparently
- TaskCard shows 'Failed to load task details' instead of raw error
- Added api.test.ts with success, retry-success, and exhaustion tests
2026-03-25 21:32:11 -04:00
Dustin Byrne
d452aeb0c1 fix(HAI-018): complete Step 1 — fix server-side error handling in GET /tasks/:id
- Route now returns 404 only for ENOENT, 500 for transient errors
- store.getTask() retries once after 50ms on non-ENOENT failures
- Added route tests for success, 404, and 500 cases
- Updated vitest config to include src/**/*.test.* files
2026-03-25 21:30:18 -04:00
Dustin Byrne
01752d5d6a feat(HAI-017): add per-task write lock, atomic writes, and defensive JSON parsing to TaskStore
- Add per-task write lock in TaskStore to prevent concurrent write corruption
- Implement defensive JSON parsing with recovery for task.json files
- Use atomic writes (write-to-temp + rename) for task.json updates
- Add vitest config and tests for lock, parsing, and atomic write behavior
- Remove concurrency module from engine, consolidating store safety in core
2026-03-25 21:29:10 -04:00
Dustin Byrne
ea2a9399c7 feat(HAI-017): complete Step 5 — documentation and delivery 2026-03-25 21:28:52 -04:00
Dustin Byrne
a8f31782a8 test(HAI-017): complete Step 4 — add vitest config and tests for lock, parsing, atomic writes 2026-03-25 21:27:49 -04:00
Dustin Byrne
60be31927f feat(HAI-016): add shared AgentSemaphore for concurrent agent limiting
- Create AgentSemaphore class in engine/src/concurrency.ts with configurable maxConcurrent
- Integrate semaphore into TriageProcessor and TaskExecutor to gate agent spawning
- Wire semaphore into merge path and dashboard engine components
- Add comprehensive tests for concurrency, executor, and triage integration
- Update JSDoc and types for maxConcurrent configuration option
2026-03-25 21:27:29 -04:00
Dustin Byrne
dcf9da35a0 docs(HAI-016): complete Step 7 — update JSDoc for maxConcurrent and AgentSemaphore 2026-03-25 21:27:05 -04:00
Dustin Byrne
0f80d4f2b2 feat(HAI-016): complete Step 5 — wire semaphore into dashboard engine components 2026-03-25 21:25:07 -04:00
Dustin Byrne
65ed0d919e feat(HAI-017): complete Step 3 — use atomic writes for task.json 2026-03-25 21:24:46 -04:00
Dustin Byrne
1ebde5701a feat: task_create tool accepts optional dependencies 2026-03-25 21:22:19 -04:00
Dustin Byrne
6a45531a79 feat(HAI-016): complete Step 4 — integrate semaphore into merge path 2026-03-25 21:21:42 -04:00
Dustin Byrne
edb31077d4 feat(HAI-017): complete Step 2 — add defensive JSON parsing with recovery 2026-03-25 21:21:15 -04:00
Dustin Byrne
ab3acd59b5 feat(HAI-017): complete Step 1 — add per-task write lock to TaskStore 2026-03-25 21:19:19 -04:00
Dustin Byrne
d487ebee51 feat(HAI-016): complete Step 3 — integrate semaphore into TaskExecutor 2026-03-25 21:19:07 -04:00