rafcode 1.2.0 → 2.0.0
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/CLAUDE.md +118 -22
- package/RAF/aaaabt-verbose-chronicle/decisions.md +25 -0
- package/RAF/aaaabt-verbose-chronicle/input.md +3 -0
- package/RAF/aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md +25 -0
- package/RAF/aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md +31 -0
- package/RAF/aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md +48 -0
- package/RAF/aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md +56 -0
- package/RAF/aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md +35 -0
- package/RAF/aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md +38 -0
- package/RAF/aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md +45 -0
- package/RAF/aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md +62 -0
- package/RAF/aaaacu-worktree-weaver/decisions.md +88 -0
- package/RAF/aaaacu-worktree-weaver/input.md +27 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md +41 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md +44 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md +58 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md +40 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/05-worktree-tests.md +43 -0
- package/RAF/aaaacu-worktree-weaver/outcomes/06-update-documentation.md +33 -0
- package/RAF/aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md +51 -0
- package/RAF/aaaacu-worktree-weaver/plans/02-worktree-plan-command.md +93 -0
- package/RAF/aaaacu-worktree-weaver/plans/03-worktree-do-command.md +81 -0
- package/RAF/aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md +51 -0
- package/RAF/aaaacu-worktree-weaver/plans/05-worktree-tests.md +52 -0
- package/RAF/aaaacu-worktree-weaver/plans/06-update-documentation.md +55 -0
- package/RAF/aaaacv-trim-the-fat/decisions.md +34 -0
- package/RAF/aaaacv-trim-the-fat/input.md +5 -0
- package/RAF/aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md +43 -0
- package/RAF/aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md +50 -0
- package/RAF/aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md +35 -0
- package/RAF/aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md +36 -0
- package/RAF/aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md +43 -0
- package/RAF/aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md +44 -0
- package/RAF/aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md +38 -0
- package/RAF/aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md +38 -0
- package/RAF/aaaacw-prune-cycle/decisions.md +25 -0
- package/RAF/aaaacw-prune-cycle/input.md +5 -0
- package/RAF/aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md +32 -0
- package/RAF/aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md +33 -0
- package/RAF/aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md +40 -0
- package/RAF/aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md +31 -0
- package/RAF/aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md +38 -0
- package/RAF/aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md +50 -0
- package/RAF/aaaacx-epoch-shift/decisions.md +25 -0
- package/RAF/aaaacx-epoch-shift/input.md +1 -0
- package/RAF/aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md +34 -0
- package/RAF/aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md +32 -0
- package/RAF/aaaacx-epoch-shift/outcomes/03-update-tests.md +59 -0
- package/RAF/aaaacx-epoch-shift/outcomes/04-update-documentation.md +30 -0
- package/RAF/aaaacx-epoch-shift/plans/01-epoch-id-generation.md +40 -0
- package/RAF/aaaacx-epoch-shift/plans/02-update-pattern-matching.md +60 -0
- package/RAF/aaaacx-epoch-shift/plans/03-update-tests.md +48 -0
- package/RAF/aaaacx-epoch-shift/plans/04-update-documentation.md +44 -0
- package/RAF/ahmpro-merge-guardian/decisions.md +25 -0
- package/RAF/ahmpro-merge-guardian/input.md +4 -0
- package/RAF/ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md +45 -0
- package/RAF/ahmpro-merge-guardian/outcomes/002-base36-task-ids.md +55 -0
- package/RAF/ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md +41 -0
- package/RAF/ahmpro-merge-guardian/outcomes/004-post-execution-picker.md +53 -0
- package/RAF/ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md +39 -0
- package/RAF/ahmpro-merge-guardian/plans/002-base36-task-ids.md +43 -0
- package/RAF/ahmpro-merge-guardian/plans/003-worktree-pr-creation.md +43 -0
- package/RAF/ahmpro-merge-guardian/plans/004-post-execution-picker.md +51 -0
- package/RAF/ahnbcu-letterjam/decisions.md +13 -0
- package/RAF/ahnbcu-letterjam/input.md +3 -0
- package/RAF/ahnbcu-letterjam/outcomes/01-base26-encoding.md +42 -0
- package/RAF/ahnbcu-letterjam/outcomes/02-update-tests.md +38 -0
- package/RAF/ahnbcu-letterjam/outcomes/03-migrate-command.md +51 -0
- package/RAF/ahnbcu-letterjam/outcomes/04-update-documentation.md +29 -0
- package/RAF/ahnbcu-letterjam/plans/01-base26-encoding.md +36 -0
- package/RAF/ahnbcu-letterjam/plans/02-update-tests.md +37 -0
- package/RAF/ahnbcu-letterjam/plans/03-migrate-command.md +49 -0
- package/RAF/ahnbcu-letterjam/plans/04-update-documentation.md +39 -0
- package/RAF/ahnwrk-worktree-weaver/decisions.md +19 -0
- package/RAF/ahnwrk-worktree-weaver/input.md +4 -0
- package/RAF/ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md +20 -0
- package/RAF/ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md +21 -0
- package/RAF/ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md +34 -0
- package/RAF/ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md +30 -0
- package/RAF/ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md +26 -0
- package/RAF/ahnwrk-worktree-weaver/plans/02-update-task-status-format.md +27 -0
- package/RAF/ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md +37 -0
- package/RAF/ahnwrk-worktree-weaver/plans/04-fix-pr-description.md +50 -0
- package/README.md +56 -10
- package/dist/commands/do.d.ts +15 -0
- package/dist/commands/do.d.ts.map +1 -1
- package/dist/commands/do.js +400 -131
- package/dist/commands/do.js.map +1 -1
- package/dist/commands/migrate.d.ts +14 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +228 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +237 -40
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +221 -47
- package/dist/commands/status.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 +29 -5
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js +95 -18
- package/dist/core/git.js.map +1 -1
- package/dist/core/project-manager.d.ts.map +1 -1
- package/dist/core/project-manager.js +2 -2
- package/dist/core/project-manager.js.map +1 -1
- package/dist/core/pull-request.d.ts +84 -0
- package/dist/core/pull-request.d.ts.map +1 -0
- package/dist/core/pull-request.js +414 -0
- package/dist/core/pull-request.js.map +1 -0
- package/dist/core/state-derivation.d.ts +3 -3
- package/dist/core/state-derivation.d.ts.map +1 -1
- package/dist/core/state-derivation.js +18 -14
- package/dist/core/state-derivation.js.map +1 -1
- package/dist/core/worktree.d.ts +120 -0
- package/dist/core/worktree.d.ts.map +1 -0
- package/dist/core/worktree.js +322 -0
- package/dist/core/worktree.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.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 +1 -0
- package/dist/prompts/amend.d.ts.map +1 -1
- package/dist/prompts/amend.js +25 -10
- package/dist/prompts/amend.js.map +1 -1
- package/dist/prompts/execution.js +5 -5
- package/dist/prompts/execution.js.map +1 -1
- package/dist/prompts/planning.d.ts +1 -0
- package/dist/prompts/planning.d.ts.map +1 -1
- package/dist/prompts/planning.js +11 -10
- package/dist/prompts/planning.js.map +1 -1
- package/dist/types/config.d.ts +5 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/ui/project-picker.d.ts +34 -3
- package/dist/ui/project-picker.d.ts.map +1 -1
- package/dist/ui/project-picker.js +78 -10
- package/dist/ui/project-picker.js.map +1 -1
- package/dist/utils/paths.d.ts +38 -43
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +123 -193
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/terminal-symbols.d.ts +2 -2
- package/dist/utils/terminal-symbols.js +3 -3
- package/dist/utils/terminal-symbols.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +2 -8
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/do.ts +471 -142
- package/src/commands/migrate.ts +269 -0
- package/src/commands/plan.ts +264 -40
- package/src/commands/status.ts +252 -45
- package/src/core/claude-runner.ts +270 -17
- package/src/core/git.ts +99 -19
- package/src/core/project-manager.ts +2 -1
- package/src/core/pull-request.ts +480 -0
- package/src/core/state-derivation.ts +18 -14
- package/src/core/worktree.ts +357 -0
- package/src/index.ts +2 -0
- package/src/parsers/stream-renderer.ts +139 -0
- package/src/prompts/amend.ts +27 -9
- package/src/prompts/execution.ts +5 -5
- package/src/prompts/planning.ts +12 -10
- package/src/types/config.ts +6 -0
- package/src/ui/project-picker.ts +110 -10
- package/src/utils/paths.ts +129 -214
- package/src/utils/terminal-symbols.ts +3 -3
- package/src/utils/validation.ts +2 -9
- package/tests/unit/amend-prompt.test.ts +85 -0
- package/tests/unit/claude-runner.test.ts +567 -1
- package/tests/unit/commit-planning-artifacts-worktree.test.ts +327 -0
- package/tests/unit/commit-planning-artifacts.test.ts +303 -35
- package/tests/unit/dependency-integration.test.ts +95 -95
- package/tests/unit/do-blocked-tasks.test.ts +53 -53
- package/tests/unit/do-command.test.ts +39 -132
- package/tests/unit/do-rerun.test.ts +65 -65
- package/tests/unit/do-worktree-cleanup.test.ts +151 -0
- package/tests/unit/execution-prompt.test.ts +71 -60
- package/tests/unit/failure-history.test.ts +19 -19
- package/tests/unit/git-commit-helpers.test.ts +103 -0
- package/tests/unit/git-stash.test.ts +4 -4
- package/tests/unit/migrate-command.test.ts +197 -0
- package/tests/unit/outcome-content.test.ts +20 -20
- package/tests/unit/paths.test.ts +269 -467
- package/tests/unit/plan-amend-worktree-recreate.test.ts +246 -0
- package/tests/unit/plan-command.test.ts +144 -93
- package/tests/unit/planning-prompt.test.ts +41 -4
- package/tests/unit/post-execution-picker.test.ts +251 -0
- package/tests/unit/project-manager.test.ts +20 -8
- package/tests/unit/project-picker.test.ts +425 -42
- package/tests/unit/pull-request.test.ts +852 -0
- package/tests/unit/state-derivation.test.ts +138 -137
- package/tests/unit/status-command.test.ts +344 -76
- package/tests/unit/stream-renderer.test.ts +286 -0
- package/tests/unit/terminal-symbols.test.ts +4 -4
- package/tests/unit/worktree-integration.test.ts +405 -0
- package/tests/unit/worktree.test.ts +523 -0
- package/tests/unit/do-multiproject.test.ts +0 -270
- /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/input.md +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/001-add-decisions-folder.md → aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/outcomes/02-fix-write-error-on-shutdown.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/outcomes/03-stash-changes-on-failure.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/outcomes/04-add-project-name-to-commits.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/005-add-running-time-display.md → aaaaab-raf-task-improvements/outcomes/05-add-running-time-display.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/outcomes/06-add-task-name-to-logs.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/007-show-model-at-task-start.md → aaaaab-raf-task-improvements/outcomes/07-show-model-at-task-start.md} +0 -0
- /package/RAF/{001-raf-task-improvements/outcomes/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/outcomes/09-remove-editor-placeholder-text.md} +0 -0
- /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
- /package/RAF/{001-raf-task-improvements/plans/001-add-decisions-folder.md → aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/plans/02-fix-write-error-on-shutdown.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/plans/03-stash-changes-on-failure.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/plans/04-add-project-name-to-commits.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/005-add-running-time-display.md → aaaaab-raf-task-improvements/plans/05-add-running-time-display.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/plans/06-add-task-name-to-logs.md} +0 -0
- /package/RAF/{001-raf-task-improvements/plans/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/plans/09-remove-editor-placeholder-text.md} +0 -0
- /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
- /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/input.md +0 -0
- /package/RAF/{002-raf-task-improvements-execution/outcomes/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/outcomes/01-commit-show-model-at-task-start.md} +0 -0
- /package/RAF/{002-raf-task-improvements-execution/outcomes/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/outcomes/02-delete-skipped-plan.md} +0 -0
- /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
- /package/RAF/{002-raf-task-improvements-execution/plans/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/plans/01-commit-show-model-at-task-start.md} +0 -0
- /package/RAF/{002-raf-task-improvements-execution/plans/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/plans/02-delete-skipped-plan.md} +0 -0
- /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/decisions/DECISIONS.md +0 -0
- /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/input.md +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/001-remove-state-json.md → aaaaad-multi-project-execution/outcomes/01-remove-state-json.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/002-update-raf-status.md → aaaaad-multi-project-execution/outcomes/02-update-raf-status.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/003-simplify-git-logic.md → aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/004-auto-commit-planning.md → aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/006-multi-project-execution.md → aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/007-verify-timeout.md → aaaaad-multi-project-execution/outcomes/07-verify-timeout.md} +0 -0
- /package/RAF/{003-multi-project-execution/outcomes/008-move-decisions-file.md → aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md} +0 -0
- /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/outcomes/SUMMARY.md +0 -0
- /package/RAF/{003-multi-project-execution/plans/001-remove-state-json.md → aaaaad-multi-project-execution/plans/01-remove-state-json.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/002-update-raf-status.md → aaaaad-multi-project-execution/plans/02-update-raf-status.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/003-simplify-git-logic.md → aaaaad-multi-project-execution/plans/03-simplify-git-logic.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/004-auto-commit-planning.md → aaaaad-multi-project-execution/plans/04-auto-commit-planning.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/006-multi-project-execution.md → aaaaad-multi-project-execution/plans/06-multi-project-execution.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/007-verify-timeout.md → aaaaad-multi-project-execution/plans/07-verify-timeout.md} +0 -0
- /package/RAF/{003-multi-project-execution/plans/008-move-decisions-file.md → aaaaad-multi-project-execution/plans/08-move-decisions-file.md} +0 -0
- /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/decisions.md +0 -0
- /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/input.md +0 -0
- /package/RAF/{004-task-naming-optimization/outcomes/001-remove-summary-file.md → aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md} +0 -0
- /package/RAF/{004-task-naming-optimization/outcomes/002-base36-project-numbering.md → aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md} +0 -0
- /package/RAF/{004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md} +0 -0
- /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
- /package/RAF/{004-task-naming-optimization/plans/001-remove-summary-file.md → aaaaae-task-naming-optimization/plans/01-remove-summary-file.md} +0 -0
- /package/RAF/{004-task-naming-optimization/plans/002-base36-project-numbering.md → aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md} +0 -0
- /package/RAF/{004-task-naming-optimization/plans/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md} +0 -0
- /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/decisions.md +0 -0
- /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/input.md +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/outcomes/02-add-identifier-support-to-status.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/outcomes/03-update-do-for-full-folder-names.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/outcomes/04-implement-amend-flag-for-plan.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/outcomes/05-commit-outcomes-on-complete.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/outcomes/06-update-execution-prompt-commit-schema.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/outcomes/07-allow-pending-task-amendments.md} +0 -0
- /package/RAF/{005-task-naming-improvements/outcomes/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/plans/02-add-identifier-support-to-status.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/plans/03-update-do-for-full-folder-names.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/plans/04-implement-amend-flag-for-plan.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/plans/05-commit-outcomes-on-complete.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/plans/06-update-execution-prompt-commit-schema.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/plans/07-allow-pending-task-amendments.md} +0 -0
- /package/RAF/{005-task-naming-improvements/plans/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/decisions.md +0 -0
- /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/input.md +0 -0
- /package/RAF/{006-fix-double-summary-headers/outcomes/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/outcomes/01-fix-double-summary-headers.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/outcomes/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/outcomes/02-update-readme-for-npm.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/outcomes/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/outcomes/03-npm-publish-instructions.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/outcomes/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/outcomes/04-flexible-project-lookup.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/plans/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/plans/01-fix-double-summary-headers.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/plans/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/plans/02-update-readme-for-npm.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/plans/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/plans/03-npm-publish-instructions.md} +0 -0
- /package/RAF/{006-fix-double-summary-headers/plans/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/plans/04-flexible-project-lookup.md} +0 -0
- /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/decisions.md +0 -0
- /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/input.md +0 -0
- /package/RAF/{007-improve-outcome-format/outcomes/001-update-execution-prompt.md → aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md} +0 -0
- /package/RAF/{007-improve-outcome-format/outcomes/002-update-state-derivation.md → aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md} +0 -0
- /package/RAF/{007-improve-outcome-format/outcomes/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/outcomes/03-update-do-command-outcome-handling.md} +0 -0
- /package/RAF/{007-improve-outcome-format/outcomes/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md} +0 -0
- /package/RAF/{007-improve-outcome-format/outcomes/005-update-documentation.md → aaaaah-improve-outcome-format/outcomes/05-update-documentation.md} +0 -0
- /package/RAF/{007-improve-outcome-format/plans/001-update-execution-prompt.md → aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md} +0 -0
- /package/RAF/{007-improve-outcome-format/plans/002-update-state-derivation.md → aaaaah-improve-outcome-format/plans/02-update-state-derivation.md} +0 -0
- /package/RAF/{007-improve-outcome-format/plans/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/plans/03-update-do-command-outcome-handling.md} +0 -0
- /package/RAF/{007-improve-outcome-format/plans/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md} +0 -0
- /package/RAF/{007-improve-outcome-format/plans/005-update-documentation.md → aaaaah-improve-outcome-format/plans/05-update-documentation.md} +0 -0
- /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/decisions.md +0 -0
- /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/input.md +0 -0
- /package/RAF/{008-beautiful-do/outcomes/001-terminal-symbols.md → aaaaai-beautiful-do/outcomes/01-terminal-symbols.md} +0 -0
- /package/RAF/{008-beautiful-do/outcomes/002-refactor-do-output.md → aaaaai-beautiful-do/outcomes/02-refactor-do-output.md} +0 -0
- /package/RAF/{008-beautiful-do/outcomes/003-refactor-status-output.md → aaaaai-beautiful-do/outcomes/03-refactor-status-output.md} +0 -0
- /package/RAF/{008-beautiful-do/outcomes/004-simplify-logger.md → aaaaai-beautiful-do/outcomes/04-simplify-logger.md} +0 -0
- /package/RAF/{008-beautiful-do/outcomes/005-add-tests.md → aaaaai-beautiful-do/outcomes/05-add-tests.md} +0 -0
- /package/RAF/{008-beautiful-do/plans/001-terminal-symbols.md → aaaaai-beautiful-do/plans/01-terminal-symbols.md} +0 -0
- /package/RAF/{008-beautiful-do/plans/002-refactor-do-output.md → aaaaai-beautiful-do/plans/02-refactor-do-output.md} +0 -0
- /package/RAF/{008-beautiful-do/plans/003-refactor-status-output.md → aaaaai-beautiful-do/plans/03-refactor-status-output.md} +0 -0
- /package/RAF/{008-beautiful-do/plans/004-simplify-logger.md → aaaaai-beautiful-do/plans/04-simplify-logger.md} +0 -0
- /package/RAF/{008-beautiful-do/plans/005-add-tests.md → aaaaai-beautiful-do/plans/05-add-tests.md} +0 -0
- /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/decisions.md +0 -0
- /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/input.md +0 -0
- /package/RAF/{009-system-promt-ammend/outcomes/001-model-override.md → aaaaaj-system-promt-ammend/outcomes/01-model-override.md} +0 -0
- /package/RAF/{009-system-promt-ammend/outcomes/002-system-prompt-append.md → aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md} +0 -0
- /package/RAF/{009-system-promt-ammend/outcomes/003-retry-context.md → aaaaaj-system-promt-ammend/outcomes/03-retry-context.md} +0 -0
- /package/RAF/{009-system-promt-ammend/plans/001-model-override.md → aaaaaj-system-promt-ammend/plans/01-model-override.md} +0 -0
- /package/RAF/{009-system-promt-ammend/plans/002-system-prompt-append.md → aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md} +0 -0
- /package/RAF/{009-system-promt-ammend/plans/003-retry-context.md → aaaaaj-system-promt-ammend/plans/03-retry-context.md} +0 -0
- /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/decisions.md +0 -0
- /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/input.md +0 -0
- /package/RAF/{010-outcome-marker-fallback/outcomes/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/outcomes/01-outcome-file-marker-fallback.md} +0 -0
- /package/RAF/{010-outcome-marker-fallback/outcomes/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md} +0 -0
- /package/RAF/{010-outcome-marker-fallback/plans/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/plans/01-outcome-file-marker-fallback.md} +0 -0
- /package/RAF/{010-outcome-marker-fallback/plans/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md} +0 -0
- /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/decisions.md +0 -0
- /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/input.md +0 -0
- /package/RAF/{011-do-task-in-commit/outcomes/001-update-execution-prompt.md → aaaabl-do-task-in-commit/outcomes/01-update-execution-prompt.md} +0 -0
- /package/RAF/{011-do-task-in-commit/outcomes/002-update-tests.md → aaaabl-do-task-in-commit/outcomes/02-update-tests.md} +0 -0
- /package/RAF/{011-do-task-in-commit/outcomes/003-update-documentation.md → aaaabl-do-task-in-commit/outcomes/03-update-documentation.md} +0 -0
- /package/RAF/{011-do-task-in-commit/plans/001-update-execution-prompt.md → aaaabl-do-task-in-commit/plans/01-update-execution-prompt.md} +0 -0
- /package/RAF/{011-do-task-in-commit/plans/002-update-tests.md → aaaabl-do-task-in-commit/plans/02-update-tests.md} +0 -0
- /package/RAF/{011-do-task-in-commit/plans/003-update-documentation.md → aaaabl-do-task-in-commit/plans/03-update-documentation.md} +0 -0
- /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/decisions.md +0 -0
- /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/input.md +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/outcomes/01-name-picker-for-raf-plan.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/outcomes/02-interactive-project-picker-for-raf-do.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/003-raf-status-truncation.md → aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/004-failure-reason-details.md → aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/005-remove-raf-commits.md → aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/outcomes/06-update-execution-prompt-for-commits.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/outcomes/07-fix-plan-mode-user-prompt.md} +0 -0
- /package/RAF/{012-name-picker-buffet/outcomes/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/outcomes/08-add-auto-flag-for-plan-mode.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/plans/01-name-picker-for-raf-plan.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/plans/02-interactive-project-picker-for-raf-do.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/003-raf-status-truncation.md → aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/004-failure-reason-details.md → aaaabm-name-picker-buffet/plans/04-failure-reason-details.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/005-remove-raf-commits.md → aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/plans/06-update-execution-prompt-for-commits.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/plans/07-fix-plan-mode-user-prompt.md} +0 -0
- /package/RAF/{012-name-picker-buffet/plans/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/plans/08-add-auto-flag-for-plan-mode.md} +0 -0
- /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/decisions.md +0 -0
- /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/input.md +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/outcomes/04-implement-dependency-checking-in-do.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/006-add-tests.md → aaaabn-dependencies-watchdog/outcomes/06-add-tests.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/007-add-act-alias.md → aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/outcomes/008-add-exit-message.md → aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/plans/04-implement-dependency-checking-in-do.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/006-add-tests.md → aaaabn-dependencies-watchdog/plans/06-add-tests.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/007-add-act-alias.md → aaaabn-dependencies-watchdog/plans/07-add-act-alias.md} +0 -0
- /package/RAF/{013-dependencies-watchdog/plans/008-add-exit-message.md → aaaabn-dependencies-watchdog/plans/08-add-exit-message.md} +0 -0
- /package/RAF/{014-watchdog → aaaabo-watchdog}/decisions.md +0 -0
- /package/RAF/{014-watchdog → aaaabo-watchdog}/input.md +0 -0
- /package/RAF/{014-watchdog/outcomes/001-amend-flag-position.md → aaaabo-watchdog/outcomes/01-amend-flag-position.md} +0 -0
- /package/RAF/{014-watchdog/outcomes/002-details-only-on-failure.md → aaaabo-watchdog/outcomes/02-details-only-on-failure.md} +0 -0
- /package/RAF/{014-watchdog/plans/001-amend-flag-position.md → aaaabo-watchdog/plans/01-amend-flag-position.md} +0 -0
- /package/RAF/{014-watchdog/plans/002-details-only-on-failure.md → aaaabo-watchdog/plans/02-details-only-on-failure.md} +0 -0
- /package/RAF/{015-name-lottery → aaaabp-name-lottery}/decisions.md +0 -0
- /package/RAF/{015-name-lottery → aaaabp-name-lottery}/input.md +0 -0
- /package/RAF/{015-name-lottery/outcomes/001-auto-pick-project-name.md → aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md} +0 -0
- /package/RAF/{015-name-lottery/outcomes/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/outcomes/02-mention-plan-files-in-commit.md} +0 -0
- /package/RAF/{015-name-lottery/outcomes/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/outcomes/03-fix-input-md-in-amend-flow.md} +0 -0
- /package/RAF/{015-name-lottery/plans/001-auto-pick-project-name.md → aaaabp-name-lottery/plans/01-auto-pick-project-name.md} +0 -0
- /package/RAF/{015-name-lottery/plans/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/plans/02-mention-plan-files-in-commit.md} +0 -0
- /package/RAF/{015-name-lottery/plans/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/plans/03-fix-input-md-in-amend-flow.md} +0 -0
- /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/decisions.md +0 -0
- /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/input.md +0 -0
- /package/RAF/{016-planning-scalpel/outcomes/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md} +0 -0
- /package/RAF/{016-planning-scalpel/plans/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md} +0 -0
- /package/RAF/{017-decision-vault → aaaabr-decision-vault}/decisions.md +0 -0
- /package/RAF/{017-decision-vault → aaaabr-decision-vault}/input.md +0 -0
- /package/RAF/{017-decision-vault/outcomes/001-create-git-commit-utility.md → aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md} +0 -0
- /package/RAF/{017-decision-vault/outcomes/002-integrate-commit-into-plan.md → aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md} +0 -0
- /package/RAF/{017-decision-vault/outcomes/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/outcomes/03-add-tests-for-planning-commit.md} +0 -0
- /package/RAF/{017-decision-vault/plans/001-create-git-commit-utility.md → aaaabr-decision-vault/plans/01-create-git-commit-utility.md} +0 -0
- /package/RAF/{017-decision-vault/plans/002-integrate-commit-into-plan.md → aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md} +0 -0
- /package/RAF/{017-decision-vault/plans/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/plans/03-add-tests-for-planning-commit.md} +0 -0
- /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/decisions.md +0 -0
- /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/input.md +0 -0
- /package/RAF/{018-workflow-forge/outcomes/001-add-task-number-progress.md → aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md} +0 -0
- /package/RAF/{018-workflow-forge/outcomes/002-update-plan-do-prompts.md → aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md} +0 -0
- /package/RAF/{018-workflow-forge/plans/001-add-task-number-progress.md → aaaabs-workflow-forge/plans/01-add-task-number-progress.md} +0 -0
- /package/RAF/{018-workflow-forge/plans/002-update-plan-do-prompts.md → aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders stream-json events from Claude CLI into human-readable verbose output.
|
|
3
|
+
*
|
|
4
|
+
* Event types from `claude -p --output-format stream-json --verbose`:
|
|
5
|
+
* - system (init): Session initialization info
|
|
6
|
+
* - assistant: Claude's response with text or tool_use content blocks
|
|
7
|
+
* - user: Tool results (tool_result content blocks)
|
|
8
|
+
* - result: Final result with success/failure status
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Describes what a tool is doing in human-readable form.
|
|
12
|
+
*/
|
|
13
|
+
function describeToolUse(name, input) {
|
|
14
|
+
switch (name) {
|
|
15
|
+
case 'Read':
|
|
16
|
+
return `Reading ${input.file_path ?? 'file'}`;
|
|
17
|
+
case 'Write':
|
|
18
|
+
return `Writing ${input.file_path ?? 'file'}`;
|
|
19
|
+
case 'Edit':
|
|
20
|
+
return `Editing ${input.file_path ?? 'file'}`;
|
|
21
|
+
case 'Bash':
|
|
22
|
+
return `Running: ${truncate(String(input.command ?? ''), 120)}`;
|
|
23
|
+
case 'Glob':
|
|
24
|
+
return `Searching files: ${input.pattern ?? ''}`;
|
|
25
|
+
case 'Grep':
|
|
26
|
+
return `Searching for: ${truncate(String(input.pattern ?? ''), 80)}`;
|
|
27
|
+
case 'WebFetch':
|
|
28
|
+
return `Fetching: ${input.url ?? ''}`;
|
|
29
|
+
case 'WebSearch':
|
|
30
|
+
return `Searching web: ${input.query ?? ''}`;
|
|
31
|
+
case 'TodoWrite':
|
|
32
|
+
return 'Updating task list';
|
|
33
|
+
case 'Task':
|
|
34
|
+
return `Launching agent: ${truncate(String(input.description ?? input.prompt ?? ''), 80)}`;
|
|
35
|
+
case 'NotebookEdit':
|
|
36
|
+
return `Editing notebook: ${input.notebook_path ?? ''}`;
|
|
37
|
+
default:
|
|
38
|
+
return `Using tool: ${name}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function truncate(text, maxLen) {
|
|
42
|
+
if (text.length <= maxLen)
|
|
43
|
+
return text;
|
|
44
|
+
return text.substring(0, maxLen - 3) + '...';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse and render a single NDJSON line from stream-json output.
|
|
48
|
+
* Returns display text for stdout and text content for output accumulation.
|
|
49
|
+
*/
|
|
50
|
+
export function renderStreamEvent(line) {
|
|
51
|
+
if (!line.trim()) {
|
|
52
|
+
return { display: '', textContent: '' };
|
|
53
|
+
}
|
|
54
|
+
let event;
|
|
55
|
+
try {
|
|
56
|
+
event = JSON.parse(line);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Not valid JSON - pass through raw
|
|
60
|
+
return { display: line + '\n', textContent: line };
|
|
61
|
+
}
|
|
62
|
+
switch (event.type) {
|
|
63
|
+
case 'system':
|
|
64
|
+
return { display: '', textContent: '' };
|
|
65
|
+
case 'assistant':
|
|
66
|
+
return renderAssistant(event);
|
|
67
|
+
case 'user':
|
|
68
|
+
// Tool results — skip verbose display (the tool_use already described what's happening)
|
|
69
|
+
return { display: '', textContent: '' };
|
|
70
|
+
case 'result':
|
|
71
|
+
return renderResult(event);
|
|
72
|
+
default:
|
|
73
|
+
return { display: '', textContent: '' };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function renderAssistant(event) {
|
|
77
|
+
const content = event.message?.content;
|
|
78
|
+
if (!content || !Array.isArray(content)) {
|
|
79
|
+
return { display: '', textContent: '' };
|
|
80
|
+
}
|
|
81
|
+
let display = '';
|
|
82
|
+
let textContent = '';
|
|
83
|
+
for (const block of content) {
|
|
84
|
+
if (block.type === 'text' && block.text) {
|
|
85
|
+
textContent += block.text;
|
|
86
|
+
display += block.text + '\n';
|
|
87
|
+
}
|
|
88
|
+
else if (block.type === 'tool_use' && block.name) {
|
|
89
|
+
const description = describeToolUse(block.name, block.input ?? {});
|
|
90
|
+
display += ` → ${description}\n`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { display, textContent };
|
|
94
|
+
}
|
|
95
|
+
function renderResult(_event) {
|
|
96
|
+
// The result event's text duplicates the last assistant message,
|
|
97
|
+
// which is already captured. Skip to avoid double-counting.
|
|
98
|
+
return { display: '', textContent: '' };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=stream-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-renderer.js","sourceRoot":"","sources":["../../src/parsers/stream-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts/amend.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,KAAK,CAAC,WAAW,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CA2M3E"}
|
package/dist/prompts/amend.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { encodeTaskId } from '../utils/paths.js';
|
|
1
2
|
/**
|
|
2
3
|
* Generate a prompt for amending an existing project with new tasks.
|
|
3
4
|
* - systemPrompt: Amendment mode conventions, existing tasks context (via --append-system-prompt)
|
|
4
5
|
* - userMessage: Reference to input.md and new task description (via positional argument, triggers Claude to start)
|
|
5
6
|
*/
|
|
6
7
|
export function getAmendPrompt(params) {
|
|
7
|
-
const { projectPath, existingTasks, nextTaskNumber, newTaskDescription, } = params;
|
|
8
|
+
const { projectPath, existingTasks, nextTaskNumber, newTaskDescription, worktreeMode, } = params;
|
|
9
|
+
const worktreeFlag = worktreeMode ? ' --worktree' : '';
|
|
8
10
|
const existingTasksSummary = existingTasks
|
|
9
11
|
.map((task) => {
|
|
10
12
|
const status = task.status === 'completed'
|
|
@@ -13,7 +15,10 @@ export function getAmendPrompt(params) {
|
|
|
13
15
|
? '[FAILED]'
|
|
14
16
|
: '[PENDING]';
|
|
15
17
|
const modifiability = task.status === 'completed' ? '[PROTECTED]' : '[MODIFIABLE]';
|
|
16
|
-
|
|
18
|
+
const outcomeRef = task.status === 'completed'
|
|
19
|
+
? `\n Outcome: ${projectPath}/outcomes/${task.planFile.replace('plans/', '').replace(/\.md$/, '')}.md`
|
|
20
|
+
: '';
|
|
21
|
+
return `- Task ${task.id}: ${task.taskName} ${status} ${modifiability}${outcomeRef}`;
|
|
17
22
|
})
|
|
18
23
|
.join('\n');
|
|
19
24
|
const protectedTasks = existingTasks.filter((t) => t.status === 'completed');
|
|
@@ -32,7 +37,7 @@ You are in AMENDMENT MODE. This means:
|
|
|
32
37
|
- You MAY modify [MODIFIABLE] tasks (pending/failed) if the user requests changes
|
|
33
38
|
- NEVER modify [PROTECTED] tasks (completed) - their outcomes depend on the original plan
|
|
34
39
|
- DO NOT renumber existing tasks
|
|
35
|
-
- You can create NEW tasks starting from number ${nextTaskNumber
|
|
40
|
+
- You can create NEW tasks starting from number ${encodeTaskId(nextTaskNumber)}
|
|
36
41
|
|
|
37
42
|
## Project Location
|
|
38
43
|
|
|
@@ -67,6 +72,13 @@ Read the user's description of new tasks and identify what needs to be added. Co
|
|
|
67
72
|
- Dependencies on completed tasks (check the ## Dependencies section in existing plan files)
|
|
68
73
|
- Whether new tasks should reference existing task outcomes
|
|
69
74
|
|
|
75
|
+
**Identifying Follow-up Tasks**: When a new task is a follow-up, fix, or iteration of a previously completed task, you MUST reference the previous task's outcome in the new plan's Context section. This gives the executing agent full context about what was done before.
|
|
76
|
+
|
|
77
|
+
Use this format in the Context section:
|
|
78
|
+
\`This is a follow-up to task NN. See outcome: {projectPath}/outcomes/NN-task-name.md\`
|
|
79
|
+
|
|
80
|
+
The outcome file paths for completed tasks are listed above in the Existing Tasks section.
|
|
81
|
+
|
|
70
82
|
### Step 3: Interview the User
|
|
71
83
|
|
|
72
84
|
For EACH new task you identify, use the AskUserQuestion tool to gather:
|
|
@@ -82,15 +94,15 @@ After EACH interview question is answered, append the Q&A pair to the existing d
|
|
|
82
94
|
|
|
83
95
|
Use this format:
|
|
84
96
|
\`\`\`markdown
|
|
85
|
-
## [
|
|
97
|
+
## [Question asked]
|
|
86
98
|
[User's answer]
|
|
87
99
|
\`\`\`
|
|
88
100
|
|
|
89
101
|
### Step 4: Create New Plan Files
|
|
90
102
|
|
|
91
103
|
After interviewing the user about all NEW tasks, create plan files starting from the next available number:
|
|
92
|
-
- ${projectPath}/plans/${nextTaskNumber
|
|
93
|
-
- ${projectPath}/plans/${(nextTaskNumber + 1)
|
|
104
|
+
- ${projectPath}/plans/${encodeTaskId(nextTaskNumber)}-task-name.md
|
|
105
|
+
- ${projectPath}/plans/${encodeTaskId(nextTaskNumber + 1)}-task-name.md
|
|
94
106
|
- etc.
|
|
95
107
|
|
|
96
108
|
Each plan file should follow this structure:
|
|
@@ -104,10 +116,11 @@ Each plan file should follow this structure:
|
|
|
104
116
|
## Context
|
|
105
117
|
[Why this task is needed, how it fits into the larger project]
|
|
106
118
|
[Reference relevant existing tasks if applicable]
|
|
119
|
+
[For follow-up/fix tasks: "This is a follow-up to task NN. See outcome: {projectPath}/outcomes/NN-task-name.md"]
|
|
107
120
|
|
|
108
121
|
## Dependencies
|
|
109
122
|
[Optional section - omit if task has no dependencies]
|
|
110
|
-
[Comma-separated list of task IDs this task depends on, e.g., "
|
|
123
|
+
[Comma-separated list of task IDs this task depends on, e.g., "01, 02"]
|
|
111
124
|
[If a dependency fails, this task will be automatically blocked]
|
|
112
125
|
|
|
113
126
|
## Requirements
|
|
@@ -142,7 +155,9 @@ After creating all new plan files:
|
|
|
142
155
|
2. Display this exit message to the user:
|
|
143
156
|
|
|
144
157
|
\`\`\`
|
|
145
|
-
Planning complete!
|
|
158
|
+
Planning complete! To exit this session and run your tasks:
|
|
159
|
+
1. Press Ctrl-C twice to exit
|
|
160
|
+
2. Then run: raf do <project>${worktreeFlag}
|
|
146
161
|
\`\`\`
|
|
147
162
|
|
|
148
163
|
## Important Rules
|
|
@@ -150,10 +165,10 @@ Planning complete! Press Ctrl-C twice to exit to exit this session
|
|
|
150
165
|
1. NEVER modify COMPLETED task plans - they are [PROTECTED] because their outcomes depend on the original plan
|
|
151
166
|
2. You MAY modify non-completed task plans (pending/failed) if the user requests changes - they are [MODIFIABLE]
|
|
152
167
|
3. ALWAYS interview the user before creating or modifying plans
|
|
153
|
-
4. New tasks start from number ${nextTaskNumber
|
|
168
|
+
4. New tasks start from number ${encodeTaskId(nextTaskNumber)}
|
|
154
169
|
5. Use descriptive, kebab-case names for plan files
|
|
155
170
|
6. Each plan should be self-contained with all context needed
|
|
156
|
-
7. Specify task dependencies using the ## Dependencies section with task IDs only (e.g., "
|
|
171
|
+
7. Specify task dependencies using the ## Dependencies section with task IDs only (e.g., "01, 02")
|
|
157
172
|
8. Tasks without dependencies should omit the Dependencies section entirely
|
|
158
173
|
9. Be specific - vague plans lead to poor execution
|
|
159
174
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend.js","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"amend.js","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,8 +43,8 @@ The following tasks have already been completed. Review them for context and to
|
|
|
43
43
|
${previousOutcomes.map((o) => `### Task ${o.taskId}\n${o.content}`).join('\n\n')}
|
|
44
44
|
`;
|
|
45
45
|
}
|
|
46
|
-
//
|
|
47
|
-
const paddedTaskNumber = taskNumber.toString().padStart(
|
|
46
|
+
// Encode task number to 2-char base36
|
|
47
|
+
const paddedTaskNumber = taskNumber.toString(36).padStart(2, '0');
|
|
48
48
|
const commitInstructions = autoCommit
|
|
49
49
|
? `
|
|
50
50
|
## Git Instructions
|
|
@@ -57,6 +57,8 @@ After successfully completing the task:
|
|
|
57
57
|
2. Commit with message: "RAF[${projectNumber}:${paddedTaskNumber}] <description>"
|
|
58
58
|
- Write a concise description of what was accomplished
|
|
59
59
|
- Focus on the actual change, not the task name
|
|
60
|
+
- The commit message must be a SINGLE LINE — no body, no trailers
|
|
61
|
+
- Do NOT add Co-Authored-By or any other trailers to the commit message
|
|
60
62
|
|
|
61
63
|
**IMPORTANT - On Failure**: If the task fails, do NOT commit. Just write the outcome file with the \`<promise>FAILED</promise>\` marker and stop. Uncommitted changes will be preserved for debugging.
|
|
62
64
|
`
|
|
@@ -119,12 +121,10 @@ First, read the plan file to understand exactly what needs to be done.
|
|
|
119
121
|
### Step 2: Execute the Task
|
|
120
122
|
|
|
121
123
|
Follow the implementation steps in the plan. Key guidelines:
|
|
122
|
-
- **Use the Task tool to delegate work to subagents** - Split complex work into subtasks and use specialized agents (Explore for codebase investigation, Plan for design decisions, general-purpose for implementation)
|
|
123
124
|
- Write clean, maintainable code
|
|
124
125
|
- Follow existing code patterns in the project
|
|
125
126
|
- Add appropriate error handling
|
|
126
|
-
-
|
|
127
|
-
- Follow any CLAUDE.md instructions if present
|
|
127
|
+
- Follow any CLAUDE.md instructions
|
|
128
128
|
${dependencyContextSection}${outcomesSection}
|
|
129
129
|
### Step 3: Verify Completion
|
|
130
130
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/prompts/execution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,2CAA2C;IAC3C,IAAI,OAAO,CAAC,MAAM,IAAI,4BAA4B,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,0CAA0C;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC7E,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,4BAA4B,EAAE,CAAC;YACzE,OAAO,iBAAiB,OAAO,4CAA4C,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACrE,8CAA8C;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,UAAU,GAAG,4BAA4B,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,4CAA4C,CAAC;IAC/F,CAAC;IAED,OAAO,SAAS,GAAG,4CAA4C,CAAC;AAClE,CAAC;AAoBD,MAAM,UAAU,kBAAkB,CAAC,MAA6B;IAC9D,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,GAAG,CAAC,EACjB,mBAAmB,EACnB,aAAa,GAAG,EAAE,EAClB,kBAAkB,GAAG,EAAE,GACxB,GAAG,MAAM,CAAC;IAEX,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,eAAe,GAAG;;;;;EAKpB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;CAC/E,CAAC;IACA,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/prompts/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../src/prompts/planning.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../src/prompts/planning.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CA6KpF"}
|
package/dist/prompts/planning.js
CHANGED
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
* - userMessage: Reference to input.md file (via positional argument, triggers Claude to start)
|
|
5
5
|
*/
|
|
6
6
|
export function getPlanningPrompt(params) {
|
|
7
|
-
const { projectPath } = params;
|
|
7
|
+
const { projectPath, worktreeMode } = params;
|
|
8
|
+
const worktreeFlag = worktreeMode ? ' --worktree' : '';
|
|
8
9
|
const systemPrompt = `You are a project planning assistant for RAF (Ralph's Automation Framework). Your task is to analyze the user's project description and create detailed task plans.
|
|
9
10
|
|
|
10
11
|
## Your Goals
|
|
11
12
|
|
|
12
|
-
1. **Analyze the input** and identify
|
|
13
|
+
1. **Analyze the input** and identify distinct, actionable tasks
|
|
13
14
|
2. **Interview the user** about EACH task to gather specific requirements
|
|
14
15
|
3. **Create plan files** for each task with clear instructions
|
|
15
16
|
|
|
@@ -21,7 +22,7 @@ Project folder: ${projectPath}
|
|
|
21
22
|
|
|
22
23
|
### Step 1: Identify and Order Tasks
|
|
23
24
|
|
|
24
|
-
Based on the project description, identify
|
|
25
|
+
Based on the project description, identify distinct tasks. Each task should:
|
|
25
26
|
- Be independently completable
|
|
26
27
|
- Have a clear outcome
|
|
27
28
|
- Take roughly 10-30 minutes of work for Claude
|
|
@@ -63,8 +64,8 @@ This file serves as documentation of design choices made during planning. Append
|
|
|
63
64
|
### Step 3: Create Plan Files
|
|
64
65
|
|
|
65
66
|
After interviewing the user about all tasks, create plan files in the plans folder:
|
|
66
|
-
- ${projectPath}/plans/
|
|
67
|
-
- ${projectPath}/plans/
|
|
67
|
+
- ${projectPath}/plans/01-task-name.md
|
|
68
|
+
- ${projectPath}/plans/02-task-name.md
|
|
68
69
|
- etc.
|
|
69
70
|
|
|
70
71
|
Each plan file should follow this structure:
|
|
@@ -80,7 +81,7 @@ Each plan file should follow this structure:
|
|
|
80
81
|
|
|
81
82
|
## Dependencies
|
|
82
83
|
[Optional section - omit if task has no dependencies]
|
|
83
|
-
[Comma-separated list of task IDs this task depends on, e.g., "
|
|
84
|
+
[Comma-separated list of task IDs this task depends on, e.g., "01, 02"]
|
|
84
85
|
[If a dependency fails, this task will be automatically blocked]
|
|
85
86
|
|
|
86
87
|
## Requirements
|
|
@@ -117,12 +118,12 @@ For each task, analyze which other tasks must complete successfully before it ca
|
|
|
117
118
|
**Dependency format examples:**
|
|
118
119
|
\`\`\`markdown
|
|
119
120
|
## Dependencies
|
|
120
|
-
|
|
121
|
+
01
|
|
121
122
|
\`\`\`
|
|
122
123
|
or for multiple dependencies:
|
|
123
124
|
\`\`\`markdown
|
|
124
125
|
## Dependencies
|
|
125
|
-
|
|
126
|
+
01, 02
|
|
126
127
|
\`\`\`
|
|
127
128
|
|
|
128
129
|
**Rules for dependencies:**
|
|
@@ -140,13 +141,13 @@ After creating all plan files:
|
|
|
140
141
|
\`\`\`
|
|
141
142
|
Planning complete! To exit this session and run your tasks:
|
|
142
143
|
1. Press Ctrl-C twice to exit
|
|
143
|
-
2. Then run: raf do <project
|
|
144
|
+
2. Then run: raf do <project>${worktreeFlag}
|
|
144
145
|
\`\`\`
|
|
145
146
|
|
|
146
147
|
## Important Rules
|
|
147
148
|
|
|
148
149
|
1. ALWAYS interview the user before creating plans
|
|
149
|
-
2. Create plans in numbered order (
|
|
150
|
+
2. Create plans in numbered order (01, 02, 03, etc.) reflecting logical execution order
|
|
150
151
|
3. Use descriptive, kebab-case names for plan files
|
|
151
152
|
4. Each plan should be self-contained with all context needed
|
|
152
153
|
5. Infer dependencies automatically - analyze task relationships, don't ask the user about dependencies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning.js","sourceRoot":"","sources":["../../src/prompts/planning.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planning.js","sourceRoot":"","sources":["../../src/prompts/planning.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvD,MAAM,YAAY,GAAG;;;;;;;;;;kBAUL,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BzB,WAAW;;;;;;;;;;;;;;;;;;IAkBX,WAAW;IACX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4EkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;wDAyBW,CAAC;IAEvD,MAAM,WAAW,GAAG;;EAEpB,MAAM,CAAC,YAAY;;sDAEiC,CAAC;IAErD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -19,8 +19,13 @@ export interface DoCommandOptions {
|
|
|
19
19
|
force?: boolean;
|
|
20
20
|
model?: ClaudeModelName;
|
|
21
21
|
sonnet?: boolean;
|
|
22
|
+
worktree?: boolean;
|
|
22
23
|
}
|
|
23
24
|
export interface StatusCommandOptions {
|
|
24
25
|
json?: boolean;
|
|
25
26
|
}
|
|
27
|
+
export interface MigrateCommandOptions {
|
|
28
|
+
dryRun?: boolean;
|
|
29
|
+
worktree?: boolean;
|
|
30
|
+
}
|
|
26
31
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,SAKhC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,SAKhC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source of a pending project.
|
|
3
|
+
* - 'local': project lives in the main repo's RAF directory
|
|
4
|
+
* - 'worktree': project lives in a git worktree under ~/.raf/worktrees/
|
|
5
|
+
*/
|
|
6
|
+
export type ProjectSource = 'local' | 'worktree';
|
|
1
7
|
/**
|
|
2
8
|
* Information about a pending project for display in the picker.
|
|
3
9
|
*/
|
|
@@ -8,6 +14,9 @@ export interface PendingProjectInfo {
|
|
|
8
14
|
path: string;
|
|
9
15
|
completedTasks: number;
|
|
10
16
|
totalTasks: number;
|
|
17
|
+
source: ProjectSource;
|
|
18
|
+
/** Worktree root directory — only set when source is 'worktree'. */
|
|
19
|
+
worktreeRoot?: string;
|
|
11
20
|
}
|
|
12
21
|
/**
|
|
13
22
|
* Get all projects that have pending tasks (not fully completed).
|
|
@@ -16,12 +25,34 @@ export interface PendingProjectInfo {
|
|
|
16
25
|
export declare function getPendingProjects(rafDir: string): PendingProjectInfo[];
|
|
17
26
|
/**
|
|
18
27
|
* Format a project for display in the picker.
|
|
19
|
-
* Example: "
|
|
28
|
+
* Example: "aaaaab fix-auth-bug (2/5 tasks)"
|
|
29
|
+
* Worktree projects get a "[worktree]" suffix: "aaaaab my-feature (2/5 tasks) [worktree]"
|
|
20
30
|
*/
|
|
21
31
|
export declare function formatProjectChoice(project: PendingProjectInfo): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get pending worktree projects for the current repo.
|
|
34
|
+
* Scans `~/.raf/worktrees/<repoBasename>/` for projects with pending tasks.
|
|
35
|
+
*
|
|
36
|
+
* @param repoBasename - The basename of the current git repo
|
|
37
|
+
* @param rafRelativePath - The relative path from repo root to the RAF directory (e.g., "RAF")
|
|
38
|
+
* @returns Pending worktree projects sorted by number
|
|
39
|
+
*/
|
|
40
|
+
export declare function getPendingWorktreeProjects(repoBasename: string, rafRelativePath: string): PendingProjectInfo[];
|
|
41
|
+
/**
|
|
42
|
+
* Result of the project picker — includes the selected project's folder name
|
|
43
|
+
* and its source metadata so callers know whether to enable worktree mode.
|
|
44
|
+
*/
|
|
45
|
+
export interface PickerResult {
|
|
46
|
+
folder: string;
|
|
47
|
+
source: ProjectSource;
|
|
48
|
+
worktreeRoot?: string;
|
|
49
|
+
}
|
|
22
50
|
/**
|
|
23
51
|
* Display an interactive project picker for pending projects.
|
|
24
|
-
* Returns the selected project
|
|
52
|
+
* Returns the selected project info or null if no projects or cancelled.
|
|
53
|
+
*
|
|
54
|
+
* @param rafDir - The main repo's RAF directory
|
|
55
|
+
* @param worktreeProjects - Optional worktree projects to merge into the picker
|
|
25
56
|
*/
|
|
26
|
-
export declare function pickPendingProject(rafDir: string): Promise<
|
|
57
|
+
export declare function pickPendingProject(rafDir: string, worktreeProjects?: PendingProjectInfo[]): Promise<PickerResult | null>;
|
|
27
58
|
//# sourceMappingURL=project-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-picker.d.ts","sourceRoot":"","sources":["../../src/ui/project-picker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-picker.d.ts","sourceRoot":"","sources":["../../src/ui/project-picker.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA2BvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAIvE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,kBAAkB,EAAE,CAqCtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,GACtC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoC9B"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { select } from '@inquirer/prompts';
|
|
2
2
|
import { discoverProjects, deriveProjectState, getDerivedStats } from '../core/state-derivation.js';
|
|
3
|
-
import { extractProjectNumber, formatProjectNumber } from '../utils/paths.js';
|
|
3
|
+
import { extractProjectNumber, extractProjectName, parseProjectPrefix, formatProjectNumber } from '../utils/paths.js';
|
|
4
|
+
import { listWorktreeProjects, computeWorktreePath } from '../core/worktree.js';
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import * as path from 'node:path';
|
|
4
7
|
/**
|
|
5
8
|
* Get all projects that have pending tasks (not fully completed).
|
|
6
9
|
* Returns projects sorted by number (oldest first).
|
|
@@ -22,6 +25,7 @@ export function getPendingProjects(rafDir) {
|
|
|
22
25
|
path: project.path,
|
|
23
26
|
completedTasks: stats.completed,
|
|
24
27
|
totalTasks: stats.total,
|
|
28
|
+
source: 'local',
|
|
25
29
|
});
|
|
26
30
|
}
|
|
27
31
|
}
|
|
@@ -30,29 +34,93 @@ export function getPendingProjects(rafDir) {
|
|
|
30
34
|
}
|
|
31
35
|
/**
|
|
32
36
|
* Format a project for display in the picker.
|
|
33
|
-
* Example: "
|
|
37
|
+
* Example: "aaaaab fix-auth-bug (2/5 tasks)"
|
|
38
|
+
* Worktree projects get a "[worktree]" suffix: "aaaaab my-feature (2/5 tasks) [worktree]"
|
|
34
39
|
*/
|
|
35
40
|
export function formatProjectChoice(project) {
|
|
36
41
|
const projectNumber = extractProjectNumber(project.path) ?? formatProjectNumber(project.number);
|
|
37
|
-
|
|
42
|
+
const base = `${projectNumber} ${project.name} (${project.completedTasks}/${project.totalTasks} tasks)`;
|
|
43
|
+
return project.source === 'worktree' ? `${base} [worktree]` : base;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get pending worktree projects for the current repo.
|
|
47
|
+
* Scans `~/.raf/worktrees/<repoBasename>/` for projects with pending tasks.
|
|
48
|
+
*
|
|
49
|
+
* @param repoBasename - The basename of the current git repo
|
|
50
|
+
* @param rafRelativePath - The relative path from repo root to the RAF directory (e.g., "RAF")
|
|
51
|
+
* @returns Pending worktree projects sorted by number
|
|
52
|
+
*/
|
|
53
|
+
export function getPendingWorktreeProjects(repoBasename, rafRelativePath) {
|
|
54
|
+
const wtProjectDirs = listWorktreeProjects(repoBasename);
|
|
55
|
+
const pendingProjects = [];
|
|
56
|
+
for (const wtProjectDir of wtProjectDirs) {
|
|
57
|
+
const numPrefix = extractProjectNumber(wtProjectDir);
|
|
58
|
+
if (!numPrefix)
|
|
59
|
+
continue;
|
|
60
|
+
const projectNumber = parseProjectPrefix(numPrefix);
|
|
61
|
+
if (projectNumber === null)
|
|
62
|
+
continue;
|
|
63
|
+
const wtPath = computeWorktreePath(repoBasename, wtProjectDir);
|
|
64
|
+
const wtProjectPath = path.join(wtPath, rafRelativePath, wtProjectDir);
|
|
65
|
+
if (!fs.existsSync(wtProjectPath))
|
|
66
|
+
continue;
|
|
67
|
+
const state = deriveProjectState(wtProjectPath);
|
|
68
|
+
if (state.tasks.length === 0)
|
|
69
|
+
continue;
|
|
70
|
+
const stats = getDerivedStats(state);
|
|
71
|
+
// Include projects that are not fully completed
|
|
72
|
+
if (stats.pending > 0 || stats.failed > 0) {
|
|
73
|
+
const name = extractProjectName(wtProjectDir) ?? wtProjectDir;
|
|
74
|
+
pendingProjects.push({
|
|
75
|
+
folder: wtProjectDir,
|
|
76
|
+
number: projectNumber,
|
|
77
|
+
name,
|
|
78
|
+
path: wtProjectPath,
|
|
79
|
+
completedTasks: stats.completed,
|
|
80
|
+
totalTasks: stats.total,
|
|
81
|
+
source: 'worktree',
|
|
82
|
+
worktreeRoot: wtPath,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return pendingProjects.sort((a, b) => a.number - b.number);
|
|
38
87
|
}
|
|
39
88
|
/**
|
|
40
89
|
* Display an interactive project picker for pending projects.
|
|
41
|
-
* Returns the selected project
|
|
90
|
+
* Returns the selected project info or null if no projects or cancelled.
|
|
91
|
+
*
|
|
92
|
+
* @param rafDir - The main repo's RAF directory
|
|
93
|
+
* @param worktreeProjects - Optional worktree projects to merge into the picker
|
|
42
94
|
*/
|
|
43
|
-
export async function pickPendingProject(rafDir) {
|
|
44
|
-
const
|
|
45
|
-
|
|
95
|
+
export async function pickPendingProject(rafDir, worktreeProjects) {
|
|
96
|
+
const localProjects = getPendingProjects(rafDir);
|
|
97
|
+
const allProjects = [...localProjects, ...(worktreeProjects ?? [])];
|
|
98
|
+
// Deduplicate: if a project folder appears in both local and worktree, keep only worktree
|
|
99
|
+
const seen = new Map();
|
|
100
|
+
for (const project of allProjects) {
|
|
101
|
+
const existing = seen.get(project.folder);
|
|
102
|
+
if (!existing || project.source === 'worktree') {
|
|
103
|
+
seen.set(project.folder, project);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const deduped = Array.from(seen.values());
|
|
107
|
+
// Sort chronologically by number
|
|
108
|
+
deduped.sort((a, b) => a.number - b.number);
|
|
109
|
+
if (deduped.length === 0) {
|
|
46
110
|
return null;
|
|
47
111
|
}
|
|
48
|
-
const choices =
|
|
112
|
+
const choices = deduped.map((project) => ({
|
|
49
113
|
name: formatProjectChoice(project),
|
|
50
|
-
value: project
|
|
114
|
+
value: project,
|
|
51
115
|
}));
|
|
52
116
|
const selected = await select({
|
|
53
117
|
message: 'Select a project to execute:',
|
|
54
118
|
choices,
|
|
55
119
|
});
|
|
56
|
-
return
|
|
120
|
+
return {
|
|
121
|
+
folder: selected.folder,
|
|
122
|
+
source: selected.source,
|
|
123
|
+
worktreeRoot: selected.worktreeRoot,
|
|
124
|
+
};
|
|
57
125
|
}
|
|
58
126
|
//# sourceMappingURL=project-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-picker.js","sourceRoot":"","sources":["../../src/ui/project-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-picker.js","sourceRoot":"","sources":["../../src/ui/project-picker.ts"],"names":[],"mappings":"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"}
|