Conversation
WalkthroughAdds a new Archon CodeRabbit helper template Markdown file and updates .gitignore to ignore PRPs/completed/. No code or API changes. Changes
Sequence Diagram(s)Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.claude/commands/archon/archon-coderabbit-helper.md (1)
69-74: Fix incomplete bullet in “User feedback” section.Last bullet ends mid-sentence; complete it so assistants know what to do.
- If the user is ready to implement the recommended option right away + - If the user is ready to implement the recommended option right away, + provide a concise task list (bulleted), confirm ownership and timeline, + and offer to generate diffs or code snippets to start implementation.
🧹 Nitpick comments (2)
.gitignore (1)
6-6: Anchor the ignored directory to repo root for precision.Use a leading slash to avoid accidental matches in nested paths.
-PRPs/completed/ +/PRPs/completed/Consider similarly anchoring
PRPs/localfor consistency..claude/commands/archon/archon-coderabbit-helper.md (1)
34-47: Pin the output contract to reduce drift across assistants.Explicitly require exact headings and no extra sections to keep summaries machine-consumable.
## Response Format + +Follow this schema exactly. Use these headings verbatim and do not add, +rename, or reorder sections. Keep prose concise and avoid pre/post text.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
.claude/commands/archon/archon-coderabbit-helper.md(1 hunks).gitignore(1 hunks)
🧰 Additional context used
🪛 LanguageTool
.claude/commands/archon/archon-coderabbit-helper.md
[style] ~15-~15: Consider a different adjective to strengthen your wording.
Context: ...ggestion following these steps: ### 1. Deep Analysis - Understand the technical is...
(DEEP_PROFOUND)
[grammar] ~18-~18: There might be a mistake here.
Context: ...g raised - Check if it's a real problem or false positive - Search the codebase fo...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ...base for related patterns and context - Consider project phase (early beta) and architec...
(QB_NEW_EN)
[grammar] ~36-~36: There might be a mistake here.
Context: ...## Response Format ### 📋 Issue Summary _[One sentence describing what CodeRabbit...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...planation]_ ### 🎯 Priority for this PR [HIGH/MEDIUM/LOW/SKIP with reasoning] ...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ... reasoning]_ ### 🔧 Options & Tradeoffs Option 1: [Name] - What: _[Brief desc...
(QB_NEW_EN)
[grammar] ~52-~52: There might be a mistake here.
Context: ...: [Name]** - What: [Brief description] - Pros: [Benefits] - Cons: [Drawbacks]...
(QB_NEW_EN)
[grammar] ~53-~53: There might be a mistake here.
Context: ...[Brief description]_ - Pros: [Benefits] - Cons: [Drawbacks] - Effort: _[Low/Medi...
(QB_NEW_EN)
[grammar] ~54-~54: There might be a mistake here.
Context: ... Pros: [Benefits] - Cons: [Drawbacks] - Effort: [Low/Medium/High] **Option 2:...
(QB_NEW_EN)
[grammar] ~59-~59: There might be a mistake here.
Context: ...: [Name]** - What: [Brief description] - Pros: [Benefits] - Cons: [Drawbacks]...
(QB_NEW_EN)
[grammar] ~60-~60: There might be a mistake here.
Context: ...[Brief description]_ - Pros: [Benefits] - Cons: [Drawbacks] - Effort: _[Low/Medi...
(QB_NEW_EN)
[grammar] ~61-~61: There might be a mistake here.
Context: ... Pros: [Benefits] - Cons: [Drawbacks] - Effort: [Low/Medium/High] ### 💡 Reco...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...Low/Medium/High]_ ### 💡 Recommendation _[Your recommended option with 1-2 senten...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...their feedback on the suggested changes. - Ask the user if they wish to discuss any...
(QB_NEW_EN)
[grammar] ~72-~72: There might be a mistake here.
Context: ...provide additional options or tradeoffs. - If the user is ready to implement the re...
(QB_NEW_EN)
Bumps the pip group with 1 update in the /pmoves/docs/PMOVES.AI PLANS/Enhanced Media Stack with Advanced AudioVideo Analysis directory: [python-multipart](https://github.com/Kludex/python-multipart). Updates `python-multipart` from 0.0.20 to 0.0.22 - [Release notes](https://github.com/Kludex/python-multipart/releases) - [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md) - [Commits](Kludex/python-multipart@0.0.20...0.0.22) --- updated-dependencies: - dependency-name: python-multipart dependency-version: 0.0.22 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix: StepLogs always shows placeholder — wire events to lines prop (#550) StepLogs rendered a permanent placeholder because WorkflowExecution.tsx called <StepLogs> without a `lines` prop. The component had no data-fetching logic of its own and defaulted lines to []. The fix adds a useMemo in WorkflowExecution that extracts step lifecycle events (step_started, step_completed, step_failed, parallel_agent_*, loop_iteration_*, node_*) from the already-fetched queryData.events and formats them as readable timestamped log lines. These are passed to StepLogs via the lines prop. Changes: - Add useMemo import - Add WorkflowEventResponse to WorkflowRunQueryData interface - Store data.events in queryFn return value - Add stepLogLines useMemo to compute formatted log lines for selected step - Pass lines={stepLogLines} to StepLogs component No new API calls — data.events was already fetched by the existing useQuery. Fixes #550 * fix: address PR review issues — cancel error handling, NaN guards, URI encoding, error state - Fix NaN elapsed time when startedAt is null (WorkflowProgressCard, LoopIterationView) - URI-encode conversationId in API calls to handle special characters - Detect Windows drive letter paths in Sidebar local path detection - Add Navigate redirect for /workflows/runs to /workflows in App.tsx - Export ITransportWriter interface from transport.ts for testability - Decouple WorkflowList project selector from global ProjectContext (local state) - Split server test script into separate bun test invocations to avoid mock pollution Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: remove web. log event prefix from transport.ts to match test expectations The PR removed web. prefix from persistence.ts log events but missed transport.ts. The transport.test.ts assertions expect unprefixed event names (e.g. 'adapter_ready', 'sse_write_failed'), so align transport.ts to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * perf: throttle activity updates + memoize workflow dispatch hydration - executor.ts: throttle updateWorkflowActivity to at most once per 10s per workflow run to reduce DB write pressure during long-running steps. Clean up the lastActivityUpdate map entry on run completion to prevent leaks. - ChatInterface.tsx: memoize workflowDispatchIds as a joined string so the workflow-hydration useEffect only re-fires when a new dispatch is added, not on every streaming token. Prevents redundant getWorkflowRunByWorker calls during active streaming. - ws-transport.ts: add WebSocketTransport class implementing ITransportWriter for bidirectional WebSocket communication with per-conversation buffering, stale connection replacement, and graceful shutdown. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(workflows): fix executor activity update test for 10s throttle The activity-update-failure test was making rapid consecutive calls that the new 10-second throttle would suppress. Add a Date.now spy that advances by 11s per call so each message in the test bypasses the gate and the warning threshold is still exercised correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: add ws-transport tests, buffer guard comment, and WorkflowList project init fix - Add ws-transport.test.ts covering buffer overflow, connection, and message routing - Add clarifying comment on the 200-conversation buffer guard in ws-transport.ts - Add TODO comment on DAG node_* events not appearing in StepLogs (step_index=null) - Fix WorkflowList to initialise localProjectId from selectedProjectId context Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(review): address code review findings in ws-transport tests and WorkflowList - Split server test script so each adapter test file runs in its own bun test invocation — prevents mock.module('@archon/paths') collision between transport.test.ts, persistence.test.ts, and ws-transport.test.ts - Replace 62-second real-timer test with synchronous clearTimeout spy: verifies the cleanup timer is cancelled on reconnection without blocking CI - Add useEffect sync guard in WorkflowList: if the locally-selected project is removed from the global codebase list, fall back to selectedProjectId Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: remove WebSocket transport infrastructure WebSocket transport was added as dead code (never wired up in routes or index.ts). Per analysis in PR #528, SSE+REST is sufficient for our single-developer tool — WebSocket adds complexity without user-visible benefit. Removed: - ws-transport.ts and ws-transport.test.ts (496 lines) - WebAdapter WS methods (registerWebSocket, removeWebSocket, handleWebSocketMessage, setWebSocketTransport) - Dual-emit to wsTransport in all WebAdapter methods - ITransportWriter interface (only needed for WS abstraction) - ws-transport test invocation from server package.json Kept all legitimate changes from this PR: - StepLogs fix, NaN guards, URI encoding, executor throttle, etc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Add missing lastActivityUpdate.delete() calls in 3 executor exit paths where the module-level Map entry was not being cleaned up: 1. Between-step cancellation (cancel_detected) 2. Parallel block failure 3. Sequential step failure Without these, cancelled or failed workflow run IDs accumulate in the Map forever — a slow memory leak in long-running server processes. The success and finally-block cleanup paths already had this call; these 3 early-return error paths were missed when the throttle was introduced in PR #553. Closes #548 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… (coleam00#553) * Fix: StepLogs always shows placeholder — wire events to lines prop (coleam00#550) StepLogs rendered a permanent placeholder because WorkflowExecution.tsx called <StepLogs> without a `lines` prop. The component had no data-fetching logic of its own and defaulted lines to []. The fix adds a useMemo in WorkflowExecution that extracts step lifecycle events (step_started, step_completed, step_failed, parallel_agent_*, loop_iteration_*, node_*) from the already-fetched queryData.events and formats them as readable timestamped log lines. These are passed to StepLogs via the lines prop. Changes: - Add useMemo import - Add WorkflowEventResponse to WorkflowRunQueryData interface - Store data.events in queryFn return value - Add stepLogLines useMemo to compute formatted log lines for selected step - Pass lines={stepLogLines} to StepLogs component No new API calls — data.events was already fetched by the existing useQuery. Fixes coleam00#550 * fix: address PR review issues — cancel error handling, NaN guards, URI encoding, error state - Fix NaN elapsed time when startedAt is null (WorkflowProgressCard, LoopIterationView) - URI-encode conversationId in API calls to handle special characters - Detect Windows drive letter paths in Sidebar local path detection - Add Navigate redirect for /workflows/runs to /workflows in App.tsx - Export ITransportWriter interface from transport.ts for testability - Decouple WorkflowList project selector from global ProjectContext (local state) - Split server test script into separate bun test invocations to avoid mock pollution Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: remove web. log event prefix from transport.ts to match test expectations The PR removed web. prefix from persistence.ts log events but missed transport.ts. The transport.test.ts assertions expect unprefixed event names (e.g. 'adapter_ready', 'sse_write_failed'), so align transport.ts to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * perf: throttle activity updates + memoize workflow dispatch hydration - executor.ts: throttle updateWorkflowActivity to at most once per 10s per workflow run to reduce DB write pressure during long-running steps. Clean up the lastActivityUpdate map entry on run completion to prevent leaks. - ChatInterface.tsx: memoize workflowDispatchIds as a joined string so the workflow-hydration useEffect only re-fires when a new dispatch is added, not on every streaming token. Prevents redundant getWorkflowRunByWorker calls during active streaming. - ws-transport.ts: add WebSocketTransport class implementing ITransportWriter for bidirectional WebSocket communication with per-conversation buffering, stale connection replacement, and graceful shutdown. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(workflows): fix executor activity update test for 10s throttle The activity-update-failure test was making rapid consecutive calls that the new 10-second throttle would suppress. Add a Date.now spy that advances by 11s per call so each message in the test bypasses the gate and the warning threshold is still exercised correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: add ws-transport tests, buffer guard comment, and WorkflowList project init fix - Add ws-transport.test.ts covering buffer overflow, connection, and message routing - Add clarifying comment on the 200-conversation buffer guard in ws-transport.ts - Add TODO comment on DAG node_* events not appearing in StepLogs (step_index=null) - Fix WorkflowList to initialise localProjectId from selectedProjectId context Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(review): address code review findings in ws-transport tests and WorkflowList - Split server test script so each adapter test file runs in its own bun test invocation — prevents mock.module('@archon/paths') collision between transport.test.ts, persistence.test.ts, and ws-transport.test.ts - Replace 62-second real-timer test with synchronous clearTimeout spy: verifies the cleanup timer is cancelled on reconnection without blocking CI - Add useEffect sync guard in WorkflowList: if the locally-selected project is removed from the global codebase list, fall back to selectedProjectId Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: remove WebSocket transport infrastructure WebSocket transport was added as dead code (never wired up in routes or index.ts). Per analysis in PR coleam00#528, SSE+REST is sufficient for our single-developer tool — WebSocket adds complexity without user-visible benefit. Removed: - ws-transport.ts and ws-transport.test.ts (496 lines) - WebAdapter WS methods (registerWebSocket, removeWebSocket, handleWebSocketMessage, setWebSocketTransport) - Dual-emit to wsTransport in all WebAdapter methods - ITransportWriter interface (only needed for WS abstraction) - ws-transport test invocation from server package.json Kept all legitimate changes from this PR: - StepLogs fix, NaN guards, URI encoding, executor throttle, etc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…leam00#557) Add missing lastActivityUpdate.delete() calls in 3 executor exit paths where the module-level Map entry was not being cleaned up: 1. Between-step cancellation (cancel_detected) 2. Parallel block failure 3. Sequential step failure Without these, cancelled or failed workflow run IDs accumulate in the Map forever — a slow memory leak in long-running server processes. The success and finally-block cleanup paths already had this call; these 3 early-return error paths were missed when the throttle was introduced in PR coleam00#553. Closes coleam00#548 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… (coleam00#553) * Fix: StepLogs always shows placeholder — wire events to lines prop (coleam00#550) StepLogs rendered a permanent placeholder because WorkflowExecution.tsx called <StepLogs> without a `lines` prop. The component had no data-fetching logic of its own and defaulted lines to []. The fix adds a useMemo in WorkflowExecution that extracts step lifecycle events (step_started, step_completed, step_failed, parallel_agent_*, loop_iteration_*, node_*) from the already-fetched queryData.events and formats them as readable timestamped log lines. These are passed to StepLogs via the lines prop. Changes: - Add useMemo import - Add WorkflowEventResponse to WorkflowRunQueryData interface - Store data.events in queryFn return value - Add stepLogLines useMemo to compute formatted log lines for selected step - Pass lines={stepLogLines} to StepLogs component No new API calls — data.events was already fetched by the existing useQuery. Fixes coleam00#550 * fix: address PR review issues — cancel error handling, NaN guards, URI encoding, error state - Fix NaN elapsed time when startedAt is null (WorkflowProgressCard, LoopIterationView) - URI-encode conversationId in API calls to handle special characters - Detect Windows drive letter paths in Sidebar local path detection - Add Navigate redirect for /workflows/runs to /workflows in App.tsx - Export ITransportWriter interface from transport.ts for testability - Decouple WorkflowList project selector from global ProjectContext (local state) - Split server test script into separate bun test invocations to avoid mock pollution Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: remove web. log event prefix from transport.ts to match test expectations The PR removed web. prefix from persistence.ts log events but missed transport.ts. The transport.test.ts assertions expect unprefixed event names (e.g. 'adapter_ready', 'sse_write_failed'), so align transport.ts to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * perf: throttle activity updates + memoize workflow dispatch hydration - executor.ts: throttle updateWorkflowActivity to at most once per 10s per workflow run to reduce DB write pressure during long-running steps. Clean up the lastActivityUpdate map entry on run completion to prevent leaks. - ChatInterface.tsx: memoize workflowDispatchIds as a joined string so the workflow-hydration useEffect only re-fires when a new dispatch is added, not on every streaming token. Prevents redundant getWorkflowRunByWorker calls during active streaming. - ws-transport.ts: add WebSocketTransport class implementing ITransportWriter for bidirectional WebSocket communication with per-conversation buffering, stale connection replacement, and graceful shutdown. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(workflows): fix executor activity update test for 10s throttle The activity-update-failure test was making rapid consecutive calls that the new 10-second throttle would suppress. Add a Date.now spy that advances by 11s per call so each message in the test bypasses the gate and the warning threshold is still exercised correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: add ws-transport tests, buffer guard comment, and WorkflowList project init fix - Add ws-transport.test.ts covering buffer overflow, connection, and message routing - Add clarifying comment on the 200-conversation buffer guard in ws-transport.ts - Add TODO comment on DAG node_* events not appearing in StepLogs (step_index=null) - Fix WorkflowList to initialise localProjectId from selectedProjectId context Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(review): address code review findings in ws-transport tests and WorkflowList - Split server test script so each adapter test file runs in its own bun test invocation — prevents mock.module('@archon/paths') collision between transport.test.ts, persistence.test.ts, and ws-transport.test.ts - Replace 62-second real-timer test with synchronous clearTimeout spy: verifies the cleanup timer is cancelled on reconnection without blocking CI - Add useEffect sync guard in WorkflowList: if the locally-selected project is removed from the global codebase list, fall back to selectedProjectId Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: remove WebSocket transport infrastructure WebSocket transport was added as dead code (never wired up in routes or index.ts). Per analysis in PR coleam00#528, SSE+REST is sufficient for our single-developer tool — WebSocket adds complexity without user-visible benefit. Removed: - ws-transport.ts and ws-transport.test.ts (496 lines) - WebAdapter WS methods (registerWebSocket, removeWebSocket, handleWebSocketMessage, setWebSocketTransport) - Dual-emit to wsTransport in all WebAdapter methods - ITransportWriter interface (only needed for WS abstraction) - ws-transport test invocation from server package.json Kept all legitimate changes from this PR: - StepLogs fix, NaN guards, URI encoding, executor throttle, etc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…leam00#557) Add missing lastActivityUpdate.delete() calls in 3 executor exit paths where the module-level Map entry was not being cleaned up: 1. Between-step cancellation (cancel_detected) 2. Parallel block failure 3. Sequential step failure Without these, cancelled or failed workflow run IDs accumulate in the Map forever — a slow memory leak in long-running server processes. The success and finally-block cleanup paths already had this call; these 3 early-return error paths were missed when the throttle was introduced in PR coleam00#553. Closes coleam00#548 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Summary
.claude/commands/archon/archon-coderabbit-helper.mdslash command for CodeRabbit integrationPRPs/completed/to.gitignoreto exclude completed PRPs from version controlWhat changed?
.gitignoreto prevent tracking of completed PRP filesTest plan
.claude/commands/archon/archon-coderabbit-helper.mdslash command is availablePRPs/completed/directory is ignored by gitNotes
This adds a helper command for generating structured review summaries that work well with CodeRabbit's AI review system.
Summary by CodeRabbit
Documentation
Chores