rafcode 1.2.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RAF/019-verbose-chronicle/decisions.md +25 -0
- package/RAF/019-verbose-chronicle/input.md +3 -0
- package/RAF/019-verbose-chronicle/outcomes/001-amend-iteration-references.md +25 -0
- package/RAF/019-verbose-chronicle/outcomes/002-verbose-task-name-display.md +31 -0
- package/RAF/019-verbose-chronicle/outcomes/003-verbose-streaming-fix.md +48 -0
- package/RAF/019-verbose-chronicle/outcomes/004-commit-verification-before-halt.md +56 -0
- package/RAF/019-verbose-chronicle/plans/001-amend-iteration-references.md +35 -0
- package/RAF/019-verbose-chronicle/plans/002-verbose-task-name-display.md +38 -0
- package/RAF/019-verbose-chronicle/plans/003-verbose-streaming-fix.md +45 -0
- package/RAF/019-verbose-chronicle/plans/004-commit-verification-before-halt.md +62 -0
- package/dist/commands/do.js +19 -11
- package/dist/commands/do.js.map +1 -1
- package/dist/core/claude-runner.d.ts +52 -1
- package/dist/core/claude-runner.d.ts.map +1 -1
- package/dist/core/claude-runner.js +195 -17
- package/dist/core/claude-runner.js.map +1 -1
- package/dist/core/git.d.ts +15 -0
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js +44 -0
- package/dist/core/git.js.map +1 -1
- package/dist/parsers/stream-renderer.d.ts +42 -0
- package/dist/parsers/stream-renderer.d.ts.map +1 -0
- package/dist/parsers/stream-renderer.js +100 -0
- package/dist/parsers/stream-renderer.js.map +1 -0
- package/dist/prompts/amend.d.ts.map +1 -1
- package/dist/prompts/amend.js +13 -2
- package/dist/prompts/amend.js.map +1 -1
- package/dist/prompts/execution.d.ts.map +1 -1
- package/dist/prompts/execution.js +1 -3
- package/dist/prompts/execution.js.map +1 -1
- package/dist/prompts/planning.js +2 -2
- package/package.json +1 -1
- package/src/commands/do.ts +20 -11
- package/src/core/claude-runner.ts +270 -17
- package/src/core/git.ts +44 -0
- package/src/parsers/stream-renderer.ts +139 -0
- package/src/prompts/amend.ts +14 -2
- package/src/prompts/execution.ts +1 -3
- package/src/prompts/planning.ts +2 -2
- package/tests/unit/claude-runner.test.ts +567 -1
- package/tests/unit/git-commit-helpers.test.ts +103 -0
- package/tests/unit/plan-command.test.ts +51 -0
- package/tests/unit/stream-renderer.test.ts +286 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Project Decisions
|
|
2
|
+
|
|
3
|
+
## For the amendment iteration reference feature — when a new task looks like a follow-up/fix to a previous completed task, how should the reference appear in the new plan?
|
|
4
|
+
Context section, make sure to put file path to prev task outcome.
|
|
5
|
+
|
|
6
|
+
## Should the iteration reference be determined automatically by the planning Claude (via prompt instructions), or should RAF code analyze task content programmatically?
|
|
7
|
+
Prompt-based (Recommended) — update the amend system prompt to instruct Claude to identify follow-ups and include references to previous tasks in new plans.
|
|
8
|
+
|
|
9
|
+
## For verbose task name display — should the task name appear everywhere task ID is shown, or just in the main header?
|
|
10
|
+
Everywhere — show task name alongside ID in all verbose log messages, status updates, and summaries.
|
|
11
|
+
|
|
12
|
+
## For streaming Claude output in verbose mode — is it currently broken or is there a different streaming behavior wanted?
|
|
13
|
+
In verbose mode only a summary of completed work is shown, not constant stream of how Claude executes. Need to investigate and fix — streaming should show real-time Claude output.
|
|
14
|
+
|
|
15
|
+
## For verifying git commits before halting Claude — how should RAF check that the commit landed?
|
|
16
|
+
All three checks combined: (1) HEAD changed from before task, (2) new commit message starts with RAF[project:task], and (3) outcome file is committed in git.
|
|
17
|
+
|
|
18
|
+
## If the commit hasn't landed when the grace period expires, what should happen?
|
|
19
|
+
Extend grace period — keep waiting (with a maximum cap) until the commit appears or a hard timeout is reached.
|
|
20
|
+
|
|
21
|
+
## What should the maximum cap be for the extended grace period when waiting for commit?
|
|
22
|
+
180 seconds (3 minutes total max wait for commit). Current grace period is 60 seconds.
|
|
23
|
+
|
|
24
|
+
## For the verbose streaming fix — any suspicion about what's wrong?
|
|
25
|
+
Investigate fully — debug the entire verbose code path end-to-end to find why streaming isn't working.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
- [ ] in amendment, if new task looks like follow up or fix to previous completed task in the project - you should reference it in new plan (iteration plan)
|
|
2
|
+
- [ ] in 'raf do --verbose' add task name (not just "Executing task 011..."). also steam output from claude into terminal in verbose mode
|
|
3
|
+
- [ ] raf halted before commit was done. make sure commit is there before halting claude by checking commits. see previous halt work in commit 4d3868c3ef4c607c59829e94462ffd0490d82a98
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Outcome: Amend Iteration References
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Enhanced the amend planning prompt to include outcome file paths for completed tasks and instruct Claude to reference previous task outcomes when creating follow-up/fix plans.
|
|
5
|
+
|
|
6
|
+
## Changes Made
|
|
7
|
+
|
|
8
|
+
### `src/prompts/amend.ts`
|
|
9
|
+
- **Enhanced `existingTasksSummary`**: Completed tasks now include an `Outcome:` line with the full path to their outcome file (e.g., `Outcome: /project/outcomes/001-setup.md`). Non-completed tasks are unaffected.
|
|
10
|
+
- **Added follow-up task instructions**: New "Identifying Follow-up Tasks" paragraph in Step 2 instructs Claude to reference previous task outcomes in the Context section when creating follow-up, fix, or iteration tasks. Includes the exact format to use.
|
|
11
|
+
- **Updated plan template**: Added a placeholder line in the Context section showing the follow-up reference format.
|
|
12
|
+
|
|
13
|
+
### `tests/unit/plan-command.test.ts`
|
|
14
|
+
- Added 3 new tests:
|
|
15
|
+
- Verifies outcome file paths appear for completed tasks in the task summary
|
|
16
|
+
- Verifies outcome file paths do NOT appear for pending/failed tasks
|
|
17
|
+
- Verifies follow-up task instructions are present in the system prompt
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
- [x] Amend prompt includes outcome file paths for completed tasks in the task summary
|
|
21
|
+
- [x] Prompt instructs Claude to identify follow-up/fix tasks and reference outcomes in Context section
|
|
22
|
+
- [x] Existing amend functionality is not broken (all 40 plan-command tests pass)
|
|
23
|
+
- [x] All tests pass (1 pre-existing failure in planning-prompt.test.ts is unrelated)
|
|
24
|
+
|
|
25
|
+
<promise>COMPLETE</promise>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Outcome: Verbose Task Name Display
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Updated all verbose mode log messages in `do.ts` to include the task name alongside the task ID, using the format `task 011 (fix-login-bug)` instead of just `task 011`.
|
|
5
|
+
|
|
6
|
+
## Changes Made
|
|
7
|
+
|
|
8
|
+
### `src/commands/do.ts`
|
|
9
|
+
- **Added `taskLabel` variable** (line 449): Computes `${task.id} (${displayName})` when the name differs from the ID, or just `${task.id}` when they're the same (to avoid redundant `001 (001)` display).
|
|
10
|
+
- **Updated 7 verbose log messages** to use `taskLabel`:
|
|
11
|
+
- Blocked task warning: `Task ${taskLabel} blocked by failed dependency: ...`
|
|
12
|
+
- Retry message: `Retrying task ${taskLabel} (previously failed)...`
|
|
13
|
+
- Force re-run message: `Re-running task ${taskLabel} (force mode)...`
|
|
14
|
+
- Execute message: `Executing task ${taskLabel}...`
|
|
15
|
+
- Retry loop message: `Retry N/M for task ${taskLabel}...`
|
|
16
|
+
- Completion message: `Task ${taskLabel} completed (elapsed)`
|
|
17
|
+
- Stash message: `Changes for task ${taskLabel} stashed as: ...`
|
|
18
|
+
- Failure message: `Task ${taskLabel} failed: reason (elapsed)`
|
|
19
|
+
|
|
20
|
+
### No test changes needed
|
|
21
|
+
- The `formatRetryHistoryForConsole` function already supported task name display
|
|
22
|
+
- No existing tests assert on verbose log message format directly
|
|
23
|
+
- All 757 tests pass (1 pre-existing failure in planning-prompt.test.ts is unrelated)
|
|
24
|
+
|
|
25
|
+
## Acceptance Criteria
|
|
26
|
+
- [x] All verbose log messages that mention a task ID also show the task name
|
|
27
|
+
- [x] Format is consistent across all messages (`taskLabel` pattern)
|
|
28
|
+
- [x] Non-verbose mode is unaffected (uses `formatTaskProgress` separately)
|
|
29
|
+
- [x] All tests pass
|
|
30
|
+
|
|
31
|
+
<promise>COMPLETE</promise>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Outcome: Verbose Streaming Fix
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Fixed `runVerbose()` to stream Claude's real-time execution output (tool calls, file operations, text) by using `--output-format stream-json --verbose` instead of plain `-p` mode which only showed the final summary.
|
|
5
|
+
|
|
6
|
+
## Root Cause
|
|
7
|
+
The `runVerbose()` method used the same `-p` (print) flag as `run()`, which runs Claude in non-interactive mode and only outputs the final assistant response text. This meant users saw a summary of completed work rather than real-time streaming of Claude's activity.
|
|
8
|
+
|
|
9
|
+
## Changes Made
|
|
10
|
+
|
|
11
|
+
### `src/parsers/stream-renderer.ts` (NEW)
|
|
12
|
+
- **Stream event parser**: Parses NDJSON lines from Claude CLI `stream-json` output
|
|
13
|
+
- **Human-readable rendering**: Converts events to user-friendly display:
|
|
14
|
+
- Text blocks: displayed directly
|
|
15
|
+
- Tool calls: descriptive one-line summaries (e.g., `→ Reading /src/main.ts`, `→ Running: npm test`)
|
|
16
|
+
- System/result events: suppressed (not useful for display)
|
|
17
|
+
- **Tool descriptions**: Custom formatting for Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, TodoWrite, Task, and NotebookEdit tools
|
|
18
|
+
- **Text content extraction**: Returns text content separately for completion marker detection and output parsing
|
|
19
|
+
|
|
20
|
+
### `src/core/claude-runner.ts`
|
|
21
|
+
- **Modified `runVerbose()` spawn args**: Added `--output-format stream-json --verbose` flags to get real-time NDJSON streaming events
|
|
22
|
+
- **NDJSON line buffering**: Added line buffer to handle data chunks that split across NDJSON line boundaries
|
|
23
|
+
- **Event rendering pipeline**: Each complete NDJSON line is parsed by `renderStreamEvent()`, display text goes to stdout, text content accumulates in `output` for completion detection and parsing
|
|
24
|
+
- **Preserved all existing behavior**: Timeout, context overflow detection, completion marker detection, outcome file polling, and kill mechanisms all work unchanged
|
|
25
|
+
- **`run()` method unchanged**: Non-verbose mode remains exactly as before
|
|
26
|
+
|
|
27
|
+
### `tests/unit/stream-renderer.test.ts` (NEW)
|
|
28
|
+
- 25 tests covering all event types: system, assistant (text), assistant (tool_use), user (tool results), result
|
|
29
|
+
- Edge cases: empty lines, invalid JSON, empty content, unknown events
|
|
30
|
+
- Tool-specific rendering: all 11 supported tools tested
|
|
31
|
+
|
|
32
|
+
### `tests/unit/claude-runner.test.ts`
|
|
33
|
+
- Added 4 new tests in `verbose stream-json output` describe block:
|
|
34
|
+
- Verifies `runVerbose()` includes `--output-format stream-json --verbose` flags
|
|
35
|
+
- Verifies `run()` does NOT include these flags
|
|
36
|
+
- Verifies NDJSON assistant events are parsed and text extracted correctly
|
|
37
|
+
- Verifies tool_use events don't add text to output
|
|
38
|
+
|
|
39
|
+
## Acceptance Criteria
|
|
40
|
+
- [x] `raf do --verbose` shows Claude's real-time execution (tool calls, file operations, thinking)
|
|
41
|
+
- [x] Completion marker detection still works correctly
|
|
42
|
+
- [x] Timeout mechanism still functions
|
|
43
|
+
- [x] Context overflow detection still works
|
|
44
|
+
- [x] Non-verbose mode (`raf do`) is completely unaffected
|
|
45
|
+
- [x] Success/failure parsing still works from the captured output
|
|
46
|
+
- [x] All existing tests pass (786 pass, 1 pre-existing failure in planning-prompt.test.ts is unrelated)
|
|
47
|
+
|
|
48
|
+
<promise>COMPLETE</promise>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Outcome: Commit Verification Before Halt
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Added commit verification to the grace period logic so that when a COMPLETE marker is detected, the system verifies the expected git commit has actually landed before terminating. If the commit hasn't landed within the initial 60-second grace period, it extends polling up to a hard maximum of 180 seconds.
|
|
5
|
+
|
|
6
|
+
## Changes Made
|
|
7
|
+
|
|
8
|
+
### `src/core/git.ts`
|
|
9
|
+
- **`getHeadCommitHash()`**: Returns the current HEAD commit hash (or null if not in a git repo)
|
|
10
|
+
- **`getHeadCommitMessage()`**: Returns the HEAD commit message first line (or null)
|
|
11
|
+
- **`isFileCommittedInHead(filePath)`**: Checks if a file exists in HEAD's tree using `git ls-tree`
|
|
12
|
+
|
|
13
|
+
### `src/core/claude-runner.ts`
|
|
14
|
+
- **New exports**: `COMPLETION_HARD_MAX_MS` (180s), `COMMIT_POLL_INTERVAL_MS` (10s), `CommitContext` interface
|
|
15
|
+
- **New `commitContext` field in `ClaudeRunnerOptions`**: Allows passing pre-execution HEAD hash, expected commit prefix, and outcome file path
|
|
16
|
+
- **`verifyCommit()` helper**: Checks all three conditions (HEAD changed, message prefix matches, outcome file committed)
|
|
17
|
+
- **Updated `createCompletionDetector()`**: Accepts optional `commitContext` parameter. On grace period expiry:
|
|
18
|
+
- If COMPLETE marker and `commitContext` provided: verifies commit before killing
|
|
19
|
+
- If commit not verified: starts polling every 10s up to 180s total
|
|
20
|
+
- If FAILED marker or no `commitContext`: kills immediately (existing behavior)
|
|
21
|
+
- **Both `run()` and `runVerbose()`**: Pass `commitContext` through to completion detector
|
|
22
|
+
|
|
23
|
+
### `src/commands/do.ts`
|
|
24
|
+
- **Captures HEAD hash** before each task execution attempt using `getHeadCommitHash()`
|
|
25
|
+
- **Builds `commitContext`** with `preExecutionHead`, `expectedPrefix` (e.g., `RAF[005:001]`), and `outcomeFilePath`
|
|
26
|
+
- **Passes `commitContext`** to both `run()` and `runVerbose()` calls
|
|
27
|
+
- Gracefully handles non-git-repo case (skips commit verification)
|
|
28
|
+
|
|
29
|
+
### `tests/unit/git-commit-helpers.test.ts` (NEW)
|
|
30
|
+
- 11 tests covering all three new git functions:
|
|
31
|
+
- `getHeadCommitHash`: normal, not-in-repo, empty output, whitespace trimming
|
|
32
|
+
- `getHeadCommitMessage`: normal, not-in-repo, empty output
|
|
33
|
+
- `isFileCommittedInHead`: file exists, file missing, not-in-repo, command failure
|
|
34
|
+
|
|
35
|
+
### `tests/unit/claude-runner.test.ts`
|
|
36
|
+
- Added mock for `git.js` module (`getHeadCommitHash`, `getHeadCommitMessage`, `isFileCommittedInHead`)
|
|
37
|
+
- Added 7 new tests in `commit verification during grace period` describe block:
|
|
38
|
+
- Commit verified within initial grace period (kills normally)
|
|
39
|
+
- Commit found during extended polling (extends, then kills)
|
|
40
|
+
- Commit never lands (hard max at 180s)
|
|
41
|
+
- FAILED markers don't trigger commit verification
|
|
42
|
+
- Backward compatible without commitContext
|
|
43
|
+
- Verifies commit message prefix must match
|
|
44
|
+
- Verifies outcome file must be committed
|
|
45
|
+
|
|
46
|
+
## Acceptance Criteria
|
|
47
|
+
- [x] HEAD hash is recorded before each task execution
|
|
48
|
+
- [x] Grace period checks for commit matching `RAF[project:task]` pattern
|
|
49
|
+
- [x] Grace period checks that outcome file is committed
|
|
50
|
+
- [x] Grace period extends up to 180 seconds if commit not found
|
|
51
|
+
- [x] Process is killed with a warning after 180 seconds if commit never lands
|
|
52
|
+
- [x] Normal flow (commit lands within 60s) is not affected
|
|
53
|
+
- [x] All existing tests pass (805 pass, 1 pre-existing failure in planning-prompt.test.ts is unrelated)
|
|
54
|
+
- [x] New tests cover: commit found within grace, commit found in extended grace, commit never found (hard timeout)
|
|
55
|
+
|
|
56
|
+
<promise>COMPLETE</promise>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Task: Amend Iteration References
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
When amending a project, instruct the planning Claude to reference previous completed tasks (with outcome file paths) in the Context section of new plans that are follow-ups or fixes.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Currently, amendment mode shows existing tasks with their status (COMPLETED/PENDING/FAILED) but doesn't guide Claude to treat new tasks as iterations on previous work. When a user amends a project to fix or follow up on a completed task, the new plan should reference the previous task's outcome file so the executing agent has full context about what was done before.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Update the amend system prompt in `src/prompts/amend.ts` to instruct Claude to:
|
|
11
|
+
- Identify when new tasks are follow-ups, fixes, or iterations of previously completed tasks
|
|
12
|
+
- Include a reference to the previous task's outcome file path in the Context section of the new plan
|
|
13
|
+
- Use the format: "This is a follow-up to task NNN. See outcome: {projectPath}/outcomes/NNN-task-name.md"
|
|
14
|
+
- The existing tasks summary already includes task IDs and names — enhance it to also show the outcome file path for completed tasks so Claude has the information readily available
|
|
15
|
+
- This is purely a prompt engineering change — no programmatic detection logic needed
|
|
16
|
+
- Do NOT modify the plan template structure (no new dedicated fields) — use the existing Context section
|
|
17
|
+
|
|
18
|
+
## Implementation Steps
|
|
19
|
+
1. Read the current amend prompt in `src/prompts/amend.ts`
|
|
20
|
+
2. Enhance the `existingTasksSummary` generation to include outcome file paths for completed tasks
|
|
21
|
+
3. Add instructions in the system prompt (Step 2: Analyze New Requirements section) telling Claude to identify follow-up/fix tasks and reference previous outcomes in the Context section
|
|
22
|
+
4. Add an example in the prompt showing how to reference a previous task's outcome
|
|
23
|
+
5. Update tests for the amend prompt if any exist
|
|
24
|
+
|
|
25
|
+
## Acceptance Criteria
|
|
26
|
+
- [ ] Amend prompt includes outcome file paths for completed tasks in the task summary
|
|
27
|
+
- [ ] Prompt instructs Claude to identify follow-up/fix tasks and reference outcomes in Context section
|
|
28
|
+
- [ ] Existing amend functionality is not broken
|
|
29
|
+
- [ ] All tests pass
|
|
30
|
+
|
|
31
|
+
## Notes
|
|
32
|
+
- The outcome file path follows the pattern: `{projectPath}/outcomes/{taskId}-{taskName}.md`
|
|
33
|
+
- Only completed tasks have meaningful outcome files to reference
|
|
34
|
+
- The `AmendPromptParams` interface already includes `projectPath` which can be used to construct outcome paths
|
|
35
|
+
- The `existingTasks` array includes `planFile` from which the task name can be extracted for outcome path construction
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Task: Verbose Task Name Display
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Show the task name alongside the task ID in all verbose mode log messages (e.g., "Executing task 011 (fix-login-bug)..." instead of "Executing task 011...").
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Currently in verbose mode, log messages reference tasks by ID only (e.g., "Executing task 011..."). The task name is available via `extractTaskNameFromPlanFile()` and is already stored in `displayName`, but not consistently used in all log messages. Users need the task name to quickly understand what's running without cross-referencing plan files.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Add task name to ALL verbose log messages that reference a task ID, including:
|
|
11
|
+
- "Executing task 011..." → "Executing task 011 (fix-login-bug)..."
|
|
12
|
+
- "Retrying task 011 (previously failed)..." → include name
|
|
13
|
+
- "Re-running task 011 (force mode)..." → include name
|
|
14
|
+
- "Task 011 completed (2m 30s)" → include name
|
|
15
|
+
- "Task 011 failed: reason (2m 30s)" → include name
|
|
16
|
+
- "Task 011 blocked by failed dependency: 003" → include name
|
|
17
|
+
- Retry messages
|
|
18
|
+
- Changes stashed messages
|
|
19
|
+
- The task name is already computed as `displayName` in `do.ts` — use it consistently
|
|
20
|
+
- Also update the `logger.setContext()` call if it's being used (currently no-op but may be restored)
|
|
21
|
+
- Update the verbose summary section to include task names where applicable
|
|
22
|
+
|
|
23
|
+
## Implementation Steps
|
|
24
|
+
1. Read `src/commands/do.ts` and identify all verbose log messages that reference task IDs
|
|
25
|
+
2. Update each message to include `displayName` in parentheses after the task ID
|
|
26
|
+
3. Ensure the format is consistent: `task ${task.id} (${displayName})` everywhere
|
|
27
|
+
4. Update tests if any test verbose output format
|
|
28
|
+
|
|
29
|
+
## Acceptance Criteria
|
|
30
|
+
- [ ] All verbose log messages that mention a task ID also show the task name
|
|
31
|
+
- [ ] Format is consistent across all messages
|
|
32
|
+
- [ ] Non-verbose mode is unaffected
|
|
33
|
+
- [ ] All tests pass
|
|
34
|
+
|
|
35
|
+
## Notes
|
|
36
|
+
- `displayName` is already computed at line 447 of `do.ts` as `taskName ?? task.id`
|
|
37
|
+
- When `displayName` equals `task.id` (name extraction failed), showing it in parens would be redundant — consider only showing parens when name differs from ID
|
|
38
|
+
- The `setContext` and `clearContext` methods on logger are currently no-ops (deprecated) but the calls remain in do.ts
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Task: Verbose Streaming Fix
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Investigate and fix why verbose mode only shows a summary of completed work instead of streaming Claude's real-time execution output.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The `runVerbose()` method in `claude-runner.ts` does call `process.stdout.write(text)` on stdout data, but users report only seeing a summary rather than a real-time stream. The likely root cause is that Claude CLI is invoked with the `-p` (print/pipe) flag, which runs in non-interactive mode and only outputs the final assistant response text — not the intermediate tool calls, file reads, code edits, and thinking steps that constitute the real-time execution flow.
|
|
8
|
+
|
|
9
|
+
The non-verbose `run()` method correctly uses `-p` since it only needs the final output for parsing. But `runVerbose()` needs a different approach to show Claude's work as it happens.
|
|
10
|
+
|
|
11
|
+
## Requirements
|
|
12
|
+
- Investigate the exact cause of why streaming doesn't show real-time Claude activity
|
|
13
|
+
- Fix `runVerbose()` to stream Claude's real-time execution output (tool calls, file operations, code writing, etc.)
|
|
14
|
+
- The fix likely involves either:
|
|
15
|
+
- Removing `-p` flag and using a different mode that streams intermediate output
|
|
16
|
+
- Using `--output-format stream-json` to get streaming JSON events and rendering them
|
|
17
|
+
- Using PTY-based execution (like `runInteractive`) but without stdin interaction
|
|
18
|
+
- The completion marker detection must still work with the new approach
|
|
19
|
+
- Output parsing for success/failure must still function correctly
|
|
20
|
+
- The timeout mechanism must still work
|
|
21
|
+
- Non-verbose mode must remain unchanged
|
|
22
|
+
|
|
23
|
+
## Implementation Steps
|
|
24
|
+
1. Investigate what Claude CLI output modes are available (check `claude --help` or documentation)
|
|
25
|
+
2. Determine the best approach for streaming real-time output while maintaining completion detection
|
|
26
|
+
3. Modify `runVerbose()` to use the chosen streaming approach
|
|
27
|
+
4. Ensure completion markers can still be detected in the new output format
|
|
28
|
+
5. Test that timeout, context overflow detection, and kill mechanisms still work
|
|
29
|
+
6. Verify output can still be parsed for success/failure determination
|
|
30
|
+
|
|
31
|
+
## Acceptance Criteria
|
|
32
|
+
- [ ] `raf do --verbose` shows Claude's real-time execution (tool calls, file operations, thinking)
|
|
33
|
+
- [ ] Completion marker detection still works correctly
|
|
34
|
+
- [ ] Timeout mechanism still functions
|
|
35
|
+
- [ ] Context overflow detection still works
|
|
36
|
+
- [ ] Non-verbose mode (`raf do`) is completely unaffected
|
|
37
|
+
- [ ] Success/failure parsing still works from the captured output
|
|
38
|
+
- [ ] All existing tests pass (update as needed for new implementation)
|
|
39
|
+
|
|
40
|
+
## Notes
|
|
41
|
+
- The `run()` method must NOT be changed — only `runVerbose()` needs modification
|
|
42
|
+
- Claude CLI streaming options may include `--output-format stream-json` which outputs JSON events
|
|
43
|
+
- If using stream-json, a renderer/formatter will be needed to display events in a human-readable way
|
|
44
|
+
- PTY-based approach (similar to `runInteractive`) could work but would need `--dangerously-skip-permissions` to avoid interactive prompts
|
|
45
|
+
- The `activeProcess` tracking needs to work with whichever approach is chosen for the shutdown handler
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Task: Commit Verification Before Halt
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Before halting Claude after detecting a completion marker, verify that the expected git commit has actually been made, extending the grace period if the commit hasn't landed yet.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The current halt mechanism in `claude-runner.ts` detects completion markers (`<promise>COMPLETE/FAILED</promise>`) and starts a fixed 60-second grace period before killing Claude. However, if Claude hasn't finished its git commit within that window, the process gets killed mid-commit, potentially leaving the repository in a broken state. The previous halt work was introduced in commit `4d3868c`. This task adds commit verification to ensure the grace period only expires after the commit is confirmed.
|
|
8
|
+
|
|
9
|
+
See previous halt work: commit `4d3868c3ef4c607c59829e94462ffd0490d82a98`
|
|
10
|
+
|
|
11
|
+
## Dependencies
|
|
12
|
+
003
|
|
13
|
+
|
|
14
|
+
## Requirements
|
|
15
|
+
- Record the HEAD commit hash before task execution begins
|
|
16
|
+
- After the grace period triggers, verify the commit landed by checking ALL three conditions:
|
|
17
|
+
1. HEAD has changed from the pre-execution hash
|
|
18
|
+
2. The new HEAD commit message starts with the expected `RAF[project:task]` pattern
|
|
19
|
+
3. The outcome file is tracked in git (committed, not just on disk)
|
|
20
|
+
- If the commit hasn't landed when the initial grace period (60s) expires:
|
|
21
|
+
- Extend the grace period by polling for the commit
|
|
22
|
+
- Continue extending until either the commit is confirmed or a hard maximum of 180 seconds is reached
|
|
23
|
+
- Poll at a reasonable interval (e.g., every 10 seconds)
|
|
24
|
+
- If the hard maximum is reached without commit confirmation, kill the process and log a warning
|
|
25
|
+
- Add git helper functions to `src/core/git.ts` for:
|
|
26
|
+
- Getting the current HEAD hash
|
|
27
|
+
- Checking if a commit message matches a pattern
|
|
28
|
+
- Checking if a file is committed in HEAD
|
|
29
|
+
- The completion detector factory (`createCompletionDetector`) needs additional parameters:
|
|
30
|
+
- Pre-execution HEAD hash
|
|
31
|
+
- Expected commit message prefix (e.g., `RAF[005:001]`)
|
|
32
|
+
- Outcome file path (already available)
|
|
33
|
+
- Pass the necessary context from `do.ts` when creating the completion detector
|
|
34
|
+
|
|
35
|
+
## Implementation Steps
|
|
36
|
+
1. Add new git utility functions to `src/core/git.ts`:
|
|
37
|
+
- `getHeadCommitHash()`: returns current HEAD hash
|
|
38
|
+
- `getHeadCommitMessage()`: returns HEAD commit message
|
|
39
|
+
- `isFileCommittedInHead(filePath)`: checks if file is in HEAD commit
|
|
40
|
+
2. Update `createCompletionDetector` in `claude-runner.ts` to accept commit verification parameters
|
|
41
|
+
3. Modify the grace period logic: instead of a single `setTimeout`, use an interval that checks for the commit
|
|
42
|
+
4. If initial 60s grace period expires without commit, continue polling up to 180s total
|
|
43
|
+
5. Update `do.ts` to capture HEAD hash before task execution and pass commit context to the runner
|
|
44
|
+
6. Add unit tests for the new git functions
|
|
45
|
+
7. Add unit tests for the extended grace period behavior
|
|
46
|
+
|
|
47
|
+
## Acceptance Criteria
|
|
48
|
+
- [ ] HEAD hash is recorded before each task execution
|
|
49
|
+
- [ ] Grace period checks for commit matching `RAF[project:task]` pattern
|
|
50
|
+
- [ ] Grace period checks that outcome file is committed
|
|
51
|
+
- [ ] Grace period extends up to 180 seconds if commit not found
|
|
52
|
+
- [ ] Process is killed with a warning after 180 seconds if commit never lands
|
|
53
|
+
- [ ] Normal flow (commit lands within 60s) is not affected
|
|
54
|
+
- [ ] All existing tests pass
|
|
55
|
+
- [ ] New tests cover: commit found within grace, commit found in extended grace, commit never found (hard timeout)
|
|
56
|
+
|
|
57
|
+
## Notes
|
|
58
|
+
- The `ClaudeRunnerOptions` interface may need new fields for the commit context
|
|
59
|
+
- On task failure, Claude does NOT commit (changes are stashed) — the commit check should only apply when a COMPLETE marker is detected, not FAILED
|
|
60
|
+
- The project number and task ID are already available in `do.ts` where the runner is called
|
|
61
|
+
- Use `execSync` for git commands (consistent with existing `git.ts` functions)
|
|
62
|
+
- Handle "not in git repo" gracefully — skip commit verification if not in a git repo
|
package/dist/commands/do.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Command } from 'commander';
|
|
|
3
3
|
import { ProjectManager } from '../core/project-manager.js';
|
|
4
4
|
import { ClaudeRunner } from '../core/claude-runner.js';
|
|
5
5
|
import { shutdownHandler } from '../core/shutdown-handler.js';
|
|
6
|
-
import { stashChanges, hasUncommittedChanges } from '../core/git.js';
|
|
6
|
+
import { stashChanges, hasUncommittedChanges, isGitRepo, getHeadCommitHash } from '../core/git.js';
|
|
7
7
|
import { getExecutionPrompt } from '../prompts/execution.js';
|
|
8
8
|
import { parseOutput, isRetryableFailure } from '../parsers/output-parser.js';
|
|
9
9
|
import { validatePlansExist, resolveModelOption } from '../utils/validation.js';
|
|
@@ -333,6 +333,7 @@ async function executeSingleProject(projectPath, projectName, options) {
|
|
|
333
333
|
const taskName = extractTaskNameFromPlanFile(task.planFile);
|
|
334
334
|
const displayName = taskName ?? task.id;
|
|
335
335
|
const taskId = task.id; // Capture for closure
|
|
336
|
+
const taskLabel = displayName !== task.id ? `${task.id} (${displayName})` : task.id;
|
|
336
337
|
// Handle blocked tasks separately - skip Claude execution
|
|
337
338
|
if (task.status === 'blocked') {
|
|
338
339
|
// Find which dependency caused the block for the message
|
|
@@ -344,7 +345,7 @@ async function executeSingleProject(projectPath, projectName, options) {
|
|
|
344
345
|
if (verbose) {
|
|
345
346
|
const taskContext = `[Task ${taskNumber}/${totalTasks}: ${displayName}]`;
|
|
346
347
|
logger.setContext(taskContext);
|
|
347
|
-
logger.warn(`Task ${
|
|
348
|
+
logger.warn(`Task ${taskLabel} blocked by failed dependency: ${blockingDep}`);
|
|
348
349
|
}
|
|
349
350
|
else {
|
|
350
351
|
// Minimal mode: show blocked task line with distinct symbol
|
|
@@ -365,13 +366,13 @@ async function executeSingleProject(projectPath, projectName, options) {
|
|
|
365
366
|
logger.setContext(taskContext);
|
|
366
367
|
// Log task execution status
|
|
367
368
|
if (task.status === 'failed') {
|
|
368
|
-
logger.info(`Retrying task ${
|
|
369
|
+
logger.info(`Retrying task ${taskLabel} (previously failed)...`);
|
|
369
370
|
}
|
|
370
371
|
else if (task.status === 'completed' && force) {
|
|
371
|
-
logger.info(`Re-running task ${
|
|
372
|
+
logger.info(`Re-running task ${taskLabel} (force mode)...`);
|
|
372
373
|
}
|
|
373
374
|
else {
|
|
374
|
-
logger.info(`Executing task ${
|
|
375
|
+
logger.info(`Executing task ${taskLabel}...`);
|
|
375
376
|
}
|
|
376
377
|
}
|
|
377
378
|
// Get previous outcomes for context
|
|
@@ -402,7 +403,7 @@ async function executeSingleProject(projectPath, projectName, options) {
|
|
|
402
403
|
while (!success && attempts < maxRetries) {
|
|
403
404
|
attempts++;
|
|
404
405
|
if (verbose && attempts > 1) {
|
|
405
|
-
logger.info(` Retry ${attempts}/${maxRetries}...`);
|
|
406
|
+
logger.info(` Retry ${attempts}/${maxRetries} for task ${taskLabel}...`);
|
|
406
407
|
}
|
|
407
408
|
// Build execution prompt (inside loop to include retry context on retries)
|
|
408
409
|
// Check if previous outcome file exists for retry context
|
|
@@ -424,10 +425,17 @@ async function executeSingleProject(projectPath, projectName, options) {
|
|
|
424
425
|
dependencyIds,
|
|
425
426
|
dependencyOutcomes,
|
|
426
427
|
});
|
|
428
|
+
// Capture HEAD hash before execution for commit verification
|
|
429
|
+
const preExecutionHead = isGitRepo() ? getHeadCommitHash() : null;
|
|
430
|
+
const commitContext = preExecutionHead ? {
|
|
431
|
+
preExecutionHead,
|
|
432
|
+
expectedPrefix: `RAF[${projectNumber}:${task.id}]`,
|
|
433
|
+
outcomeFilePath,
|
|
434
|
+
} : undefined;
|
|
427
435
|
// Run Claude
|
|
428
436
|
const result = verbose
|
|
429
|
-
? await claudeRunner.runVerbose(prompt, { timeout })
|
|
430
|
-
: await claudeRunner.run(prompt, { timeout });
|
|
437
|
+
? await claudeRunner.runVerbose(prompt, { timeout, outcomeFilePath, commitContext })
|
|
438
|
+
: await claudeRunner.run(prompt, { timeout, outcomeFilePath, commitContext });
|
|
431
439
|
lastOutput = result.output;
|
|
432
440
|
// Parse result
|
|
433
441
|
const parsed = parseOutput(result.output);
|
|
@@ -533,7 +541,7 @@ Task completed. No detailed report provided.
|
|
|
533
541
|
}
|
|
534
542
|
projectManager.saveOutcome(projectPath, task.id, outcomeContent);
|
|
535
543
|
if (verbose) {
|
|
536
|
-
logger.success(` Task ${
|
|
544
|
+
logger.success(` Task ${taskLabel} completed (${elapsedFormatted})`);
|
|
537
545
|
}
|
|
538
546
|
else {
|
|
539
547
|
// Minimal mode: show completed task line
|
|
@@ -549,11 +557,11 @@ Task completed. No detailed report provided.
|
|
|
549
557
|
stashName = `raf-${projectNum}-task-${task.id}-failed`;
|
|
550
558
|
const stashed = stashChanges(stashName);
|
|
551
559
|
if (verbose && stashed) {
|
|
552
|
-
logger.info(` Changes stashed as: ${stashName}`);
|
|
560
|
+
logger.info(` Changes for task ${taskLabel} stashed as: ${stashName}`);
|
|
553
561
|
}
|
|
554
562
|
}
|
|
555
563
|
if (verbose) {
|
|
556
|
-
logger.error(` Task ${
|
|
564
|
+
logger.error(` Task ${taskLabel} failed: ${failureReason} (${elapsedFormatted})`);
|
|
557
565
|
logger.info(' Analyzing failure...');
|
|
558
566
|
}
|
|
559
567
|
else {
|
package/dist/commands/do.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"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"}
|