rafcode 1.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/settings.local.json +32 -0
- package/CLAUDE.md +187 -0
- package/LICENSE +21 -0
- package/RAF/001-raf-task-improvements/input.md +9 -0
- package/RAF/001-raf-task-improvements/outcomes/001-add-decisions-folder.md +21 -0
- package/RAF/001-raf-task-improvements/outcomes/002-fix-write-error-on-shutdown.md +22 -0
- package/RAF/001-raf-task-improvements/outcomes/003-stash-changes-on-failure.md +34 -0
- package/RAF/001-raf-task-improvements/outcomes/004-add-project-name-to-commits.md +28 -0
- package/RAF/001-raf-task-improvements/outcomes/005-add-running-time-display.md +36 -0
- package/RAF/001-raf-task-improvements/outcomes/006-add-task-name-to-logs.md +22 -0
- package/RAF/001-raf-task-improvements/outcomes/007-show-model-at-task-start.md +52 -0
- package/RAF/001-raf-task-improvements/outcomes/009-remove-editor-placeholder-text.md +20 -0
- package/RAF/001-raf-task-improvements/outcomes/SUMMARY.md +83 -0
- package/RAF/001-raf-task-improvements/plans/001-add-decisions-folder.md +38 -0
- package/RAF/001-raf-task-improvements/plans/002-fix-write-error-on-shutdown.md +33 -0
- package/RAF/001-raf-task-improvements/plans/003-stash-changes-on-failure.md +37 -0
- package/RAF/001-raf-task-improvements/plans/004-add-project-name-to-commits.md +34 -0
- package/RAF/001-raf-task-improvements/plans/005-add-running-time-display.md +39 -0
- package/RAF/001-raf-task-improvements/plans/006-add-task-name-to-logs.md +37 -0
- package/RAF/001-raf-task-improvements/plans/009-remove-editor-placeholder-text.md +34 -0
- package/RAF/002-raf-task-improvements-execution/decisions/DECISIONS.md +13 -0
- package/RAF/002-raf-task-improvements-execution/input.md +3 -0
- package/RAF/002-raf-task-improvements-execution/outcomes/001-commit-show-model-at-task-start.md +17 -0
- package/RAF/002-raf-task-improvements-execution/outcomes/002-delete-skipped-plan.md +23 -0
- package/RAF/002-raf-task-improvements-execution/outcomes/SUMMARY.md +32 -0
- package/RAF/002-raf-task-improvements-execution/plans/001-commit-show-model-at-task-start.md +37 -0
- package/RAF/002-raf-task-improvements-execution/plans/002-delete-skipped-plan.md +23 -0
- package/RAF/003-multi-project-execution/decisions/DECISIONS.md +68 -0
- package/RAF/003-multi-project-execution/input.md +6 -0
- package/RAF/003-multi-project-execution/outcomes/001-remove-state-json.md +52 -0
- package/RAF/003-multi-project-execution/outcomes/002-update-raf-status.md +50 -0
- package/RAF/003-multi-project-execution/outcomes/003-simplify-git-logic.md +35 -0
- package/RAF/003-multi-project-execution/outcomes/004-auto-commit-planning.md +43 -0
- package/RAF/003-multi-project-execution/outcomes/005-rerun-failed-tasks.md +43 -0
- package/RAF/003-multi-project-execution/outcomes/006-multi-project-execution.md +42 -0
- package/RAF/003-multi-project-execution/outcomes/007-verify-timeout.md +54 -0
- package/RAF/003-multi-project-execution/outcomes/008-move-decisions-file.md +38 -0
- package/RAF/003-multi-project-execution/outcomes/SUMMARY.md +79 -0
- package/RAF/003-multi-project-execution/plans/001-remove-state-json.md +71 -0
- package/RAF/003-multi-project-execution/plans/002-update-raf-status.md +65 -0
- package/RAF/003-multi-project-execution/plans/003-simplify-git-logic.md +74 -0
- package/RAF/003-multi-project-execution/plans/004-auto-commit-planning.md +57 -0
- package/RAF/003-multi-project-execution/plans/005-rerun-failed-tasks.md +69 -0
- package/RAF/003-multi-project-execution/plans/006-multi-project-execution.md +81 -0
- package/RAF/003-multi-project-execution/plans/007-verify-timeout.md +63 -0
- package/RAF/003-multi-project-execution/plans/008-move-decisions-file.md +78 -0
- package/RAF/004-task-naming-optimization/decisions.md +22 -0
- package/RAF/004-task-naming-optimization/input.md +6 -0
- package/RAF/004-task-naming-optimization/outcomes/001-remove-summary-file.md +17 -0
- package/RAF/004-task-naming-optimization/outcomes/002-base36-project-numbering.md +32 -0
- package/RAF/004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md +20 -0
- package/RAF/004-task-naming-optimization/outcomes/SUMMARY.md +28 -0
- package/RAF/004-task-naming-optimization/plans/001-remove-summary-file.md +34 -0
- package/RAF/004-task-naming-optimization/plans/002-base36-project-numbering.md +56 -0
- package/RAF/004-task-naming-optimization/plans/003-improve-haiku-prompt.md +50 -0
- package/RAF/005-task-naming-improvements/decisions.md +60 -0
- package/RAF/005-task-naming-improvements/input.md +2 -0
- package/RAF/005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md +42 -0
- package/RAF/005-task-naming-improvements/outcomes/002-add-identifier-support-to-status.md +38 -0
- package/RAF/005-task-naming-improvements/outcomes/003-update-do-for-full-folder-names.md +44 -0
- package/RAF/005-task-naming-improvements/outcomes/004-implement-amend-flag-for-plan.md +55 -0
- package/RAF/005-task-naming-improvements/outcomes/005-commit-outcomes-on-complete.md +47 -0
- package/RAF/005-task-naming-improvements/outcomes/006-update-execution-prompt-commit-schema.md +40 -0
- package/RAF/005-task-naming-improvements/outcomes/007-allow-pending-task-amendments.md +38 -0
- package/RAF/005-task-naming-improvements/outcomes/008-fix-timeout-label.md +24 -0
- package/RAF/005-task-naming-improvements/plans/001-enhance-identifier-resolution.md +46 -0
- package/RAF/005-task-naming-improvements/plans/002-add-identifier-support-to-status.md +36 -0
- package/RAF/005-task-naming-improvements/plans/003-update-do-for-full-folder-names.md +38 -0
- package/RAF/005-task-naming-improvements/plans/004-implement-amend-flag-for-plan.md +67 -0
- package/RAF/005-task-naming-improvements/plans/005-commit-outcomes-on-complete.md +86 -0
- package/RAF/005-task-naming-improvements/plans/006-update-execution-prompt-commit-schema.md +60 -0
- package/RAF/005-task-naming-improvements/plans/007-allow-pending-task-amendments.md +60 -0
- package/RAF/005-task-naming-improvements/plans/008-fix-timeout-label.md +31 -0
- package/RAF/006-fix-double-summary-headers/decisions.md +28 -0
- package/RAF/006-fix-double-summary-headers/input.md +3 -0
- package/RAF/006-fix-double-summary-headers/outcomes/001-fix-double-summary-headers.md +29 -0
- package/RAF/006-fix-double-summary-headers/outcomes/002-update-readme-for-npm.md +31 -0
- package/RAF/006-fix-double-summary-headers/outcomes/003-npm-publish-instructions.md +30 -0
- package/RAF/006-fix-double-summary-headers/outcomes/004-flexible-project-lookup.md +47 -0
- package/RAF/006-fix-double-summary-headers/plans/001-fix-double-summary-headers.md +42 -0
- package/RAF/006-fix-double-summary-headers/plans/002-update-readme-for-npm.md +44 -0
- package/RAF/006-fix-double-summary-headers/plans/003-npm-publish-instructions.md +45 -0
- package/RAF/006-fix-double-summary-headers/plans/004-flexible-project-lookup.md +40 -0
- package/RAF/007-improve-outcome-format/decisions.md +28 -0
- package/RAF/007-improve-outcome-format/input.md +2 -0
- package/RAF/007-improve-outcome-format/outcomes/001-update-execution-prompt.md +10 -0
- package/RAF/007-improve-outcome-format/outcomes/002-update-state-derivation.md +17 -0
- package/RAF/007-improve-outcome-format/outcomes/003-update-do-command-outcome-handling.md +16 -0
- package/RAF/007-improve-outcome-format/outcomes/004-implement-failure-analysis.md +16 -0
- package/RAF/007-improve-outcome-format/outcomes/005-update-documentation.md +15 -0
- package/RAF/007-improve-outcome-format/plans/001-update-execution-prompt.md +36 -0
- package/RAF/007-improve-outcome-format/plans/002-update-state-derivation.md +35 -0
- package/RAF/007-improve-outcome-format/plans/003-update-do-command-outcome-handling.md +37 -0
- package/RAF/007-improve-outcome-format/plans/004-implement-failure-analysis.md +44 -0
- package/RAF/007-improve-outcome-format/plans/005-update-documentation.md +33 -0
- package/RAF/008-beautiful-do/decisions.md +31 -0
- package/RAF/008-beautiful-do/input.md +1 -0
- package/RAF/008-beautiful-do/outcomes/001-terminal-symbols.md +55 -0
- package/RAF/008-beautiful-do/outcomes/002-refactor-do-output.md +95 -0
- package/RAF/008-beautiful-do/outcomes/003-refactor-status-output.md +71 -0
- package/RAF/008-beautiful-do/outcomes/004-simplify-logger.md +53 -0
- package/RAF/008-beautiful-do/outcomes/005-add-tests.md +41 -0
- package/RAF/008-beautiful-do/plans/001-terminal-symbols.md +41 -0
- package/RAF/008-beautiful-do/plans/002-refactor-do-output.md +44 -0
- package/RAF/008-beautiful-do/plans/003-refactor-status-output.md +37 -0
- package/RAF/008-beautiful-do/plans/004-simplify-logger.md +32 -0
- package/RAF/008-beautiful-do/plans/005-add-tests.md +40 -0
- package/RAF/009-system-promt-ammend/decisions.md +13 -0
- package/RAF/009-system-promt-ammend/input.md +9 -0
- package/RAF/009-system-promt-ammend/outcomes/001-model-override.md +79 -0
- package/RAF/009-system-promt-ammend/outcomes/002-system-prompt-append.md +51 -0
- package/RAF/009-system-promt-ammend/outcomes/003-retry-context.md +60 -0
- package/RAF/009-system-promt-ammend/plans/001-model-override.md +61 -0
- package/RAF/009-system-promt-ammend/plans/002-system-prompt-append.md +56 -0
- package/RAF/009-system-promt-ammend/plans/003-retry-context.md +76 -0
- package/RAF/010-outcome-marker-fallback/decisions.md +19 -0
- package/RAF/010-outcome-marker-fallback/input.md +1 -0
- package/RAF/010-outcome-marker-fallback/outcomes/001-outcome-file-marker-fallback.md +35 -0
- package/RAF/010-outcome-marker-fallback/outcomes/002-creative-project-naming.md +47 -0
- package/RAF/010-outcome-marker-fallback/plans/001-outcome-file-marker-fallback.md +58 -0
- package/RAF/010-outcome-marker-fallback/plans/002-creative-project-naming.md +68 -0
- package/RAF/011-do-task-in-commit/decisions.md +22 -0
- package/RAF/011-do-task-in-commit/input.md +1 -0
- package/RAF/011-do-task-in-commit/outcomes/001-update-execution-prompt.md +54 -0
- package/RAF/011-do-task-in-commit/outcomes/002-update-tests.md +61 -0
- package/RAF/011-do-task-in-commit/outcomes/003-update-documentation.md +51 -0
- package/RAF/011-do-task-in-commit/plans/001-update-execution-prompt.md +46 -0
- package/RAF/011-do-task-in-commit/plans/002-update-tests.md +51 -0
- package/RAF/011-do-task-in-commit/plans/003-update-documentation.md +45 -0
- package/RAF/012-name-picker-buffet/decisions.md +40 -0
- package/RAF/012-name-picker-buffet/input.md +6 -0
- package/RAF/012-name-picker-buffet/outcomes/001-name-picker-for-raf-plan.md +49 -0
- package/RAF/012-name-picker-buffet/outcomes/002-interactive-project-picker-for-raf-do.md +49 -0
- package/RAF/012-name-picker-buffet/outcomes/003-raf-status-truncation.md +55 -0
- package/RAF/012-name-picker-buffet/outcomes/004-failure-reason-details.md +65 -0
- package/RAF/012-name-picker-buffet/outcomes/005-remove-raf-commits.md +57 -0
- package/RAF/012-name-picker-buffet/outcomes/006-update-execution-prompt-for-commits.md +47 -0
- package/RAF/012-name-picker-buffet/outcomes/007-fix-plan-mode-user-prompt.md +83 -0
- package/RAF/012-name-picker-buffet/outcomes/008-add-auto-flag-for-plan-mode.md +77 -0
- package/RAF/012-name-picker-buffet/plans/001-name-picker-for-raf-plan.md +47 -0
- package/RAF/012-name-picker-buffet/plans/002-interactive-project-picker-for-raf-do.md +43 -0
- package/RAF/012-name-picker-buffet/plans/003-raf-status-truncation.md +36 -0
- package/RAF/012-name-picker-buffet/plans/004-failure-reason-details.md +46 -0
- package/RAF/012-name-picker-buffet/plans/005-remove-raf-commits.md +42 -0
- package/RAF/012-name-picker-buffet/plans/006-update-execution-prompt-for-commits.md +47 -0
- package/RAF/012-name-picker-buffet/plans/007-fix-plan-mode-user-prompt.md +55 -0
- package/RAF/012-name-picker-buffet/plans/008-add-auto-flag-for-plan-mode.md +49 -0
- package/RAF/013-dependencies-watchdog/decisions.md +37 -0
- package/RAF/013-dependencies-watchdog/input.md +1 -0
- package/RAF/013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md +56 -0
- package/RAF/013-dependencies-watchdog/outcomes/002-update-planning-prompts.md +60 -0
- package/RAF/013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md +81 -0
- package/RAF/013-dependencies-watchdog/outcomes/004-implement-dependency-checking-in-do.md +116 -0
- package/RAF/013-dependencies-watchdog/outcomes/005-update-execution-prompts.md +75 -0
- package/RAF/013-dependencies-watchdog/outcomes/006-add-tests.md +100 -0
- package/RAF/013-dependencies-watchdog/outcomes/007-add-act-alias.md +46 -0
- package/RAF/013-dependencies-watchdog/outcomes/008-add-exit-message.md +52 -0
- package/RAF/013-dependencies-watchdog/plans/001-define-dependency-syntax.md +32 -0
- package/RAF/013-dependencies-watchdog/plans/002-update-planning-prompts.md +38 -0
- package/RAF/013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md +46 -0
- package/RAF/013-dependencies-watchdog/plans/004-implement-dependency-checking-in-do.md +48 -0
- package/RAF/013-dependencies-watchdog/plans/005-update-execution-prompts.md +44 -0
- package/RAF/013-dependencies-watchdog/plans/006-add-tests.md +54 -0
- package/RAF/013-dependencies-watchdog/plans/007-add-act-alias.md +26 -0
- package/RAF/013-dependencies-watchdog/plans/008-add-exit-message.md +31 -0
- package/RAF/014-watchdog/decisions.md +16 -0
- package/RAF/014-watchdog/input.md +2 -0
- package/RAF/014-watchdog/outcomes/001-amend-flag-position.md +50 -0
- package/RAF/014-watchdog/outcomes/002-details-only-on-failure.md +58 -0
- package/RAF/014-watchdog/plans/001-amend-flag-position.md +34 -0
- package/RAF/014-watchdog/plans/002-details-only-on-failure.md +46 -0
- package/RAF/015-name-lottery/decisions.md +14 -0
- package/RAF/015-name-lottery/input.md +3 -0
- package/RAF/015-name-lottery/outcomes/001-auto-pick-project-name.md +31 -0
- package/RAF/015-name-lottery/outcomes/002-mention-plan-files-in-commit.md +23 -0
- package/RAF/015-name-lottery/outcomes/003-fix-input-md-in-amend-flow.md +44 -0
- package/RAF/015-name-lottery/plans/001-auto-pick-project-name.md +38 -0
- package/RAF/015-name-lottery/plans/002-mention-plan-files-in-commit.md +32 -0
- package/RAF/015-name-lottery/plans/003-fix-input-md-in-amend-flow.md +44 -0
- package/README.md +116 -0
- package/dist/commands/do.d.ts +12 -0
- package/dist/commands/do.d.ts.map +1 -0
- package/dist/commands/do.js +684 -0
- package/dist/commands/do.js.map +1 -0
- package/dist/commands/plan.d.ts +3 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +345 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +117 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/claude-runner.d.ts +78 -0
- package/dist/core/claude-runner.d.ts.map +1 -0
- package/dist/core/claude-runner.js +297 -0
- package/dist/core/claude-runner.js.map +1 -0
- package/dist/core/editor.d.ts +10 -0
- package/dist/core/editor.d.ts.map +1 -0
- package/dist/core/editor.js +77 -0
- package/dist/core/editor.js.map +1 -0
- package/dist/core/failure-analyzer.d.ts +28 -0
- package/dist/core/failure-analyzer.d.ts.map +1 -0
- package/dist/core/failure-analyzer.js +305 -0
- package/dist/core/failure-analyzer.js.map +1 -0
- package/dist/core/git.d.ts +42 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +148 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/project-manager.d.ts +72 -0
- package/dist/core/project-manager.d.ts.map +1 -0
- package/dist/core/project-manager.js +193 -0
- package/dist/core/project-manager.js.map +1 -0
- package/dist/core/retry-handler.d.ts +19 -0
- package/dist/core/retry-handler.d.ts.map +1 -0
- package/dist/core/retry-handler.js +51 -0
- package/dist/core/retry-handler.js.map +1 -0
- package/dist/core/shutdown-handler.d.ts +30 -0
- package/dist/core/shutdown-handler.d.ts.map +1 -0
- package/dist/core/shutdown-handler.js +79 -0
- package/dist/core/shutdown-handler.js.map +1 -0
- package/dist/core/state-derivation.d.ts +82 -0
- package/dist/core/state-derivation.d.ts.map +1 -0
- package/dist/core/state-derivation.js +271 -0
- package/dist/core/state-derivation.js.map +1 -0
- package/dist/core/state-manager.d.ts +54 -0
- package/dist/core/state-manager.d.ts.map +1 -0
- package/dist/core/state-manager.js +198 -0
- package/dist/core/state-manager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/output-parser.d.ts +19 -0
- package/dist/parsers/output-parser.d.ts.map +1 -0
- package/dist/parsers/output-parser.js +137 -0
- package/dist/parsers/output-parser.js.map +1 -0
- package/dist/prompts/amend.d.ts +20 -0
- package/dist/prompts/amend.d.ts.map +1 -0
- package/dist/prompts/amend.js +166 -0
- package/dist/prompts/amend.js.map +1 -0
- package/dist/prompts/execution.d.ts +30 -0
- package/dist/prompts/execution.d.ts.map +1 -0
- package/dist/prompts/execution.js +179 -0
- package/dist/prompts/execution.js.map +1 -0
- package/dist/prompts/planning.d.ts +15 -0
- package/dist/prompts/planning.d.ts.map +1 -0
- package/dist/prompts/planning.js +163 -0
- package/dist/prompts/planning.js.map +1 -0
- package/dist/types/config.d.ts +26 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/state.d.ts +33 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +28 -0
- package/dist/types/state.js.map +1 -0
- package/dist/ui/name-picker-subprocess.d.ts +11 -0
- package/dist/ui/name-picker-subprocess.d.ts.map +1 -0
- package/dist/ui/name-picker-subprocess.js +83 -0
- package/dist/ui/name-picker-subprocess.js.map +1 -0
- package/dist/ui/name-picker.d.ts +19 -0
- package/dist/ui/name-picker.d.ts.map +1 -0
- package/dist/ui/name-picker.js +173 -0
- package/dist/ui/name-picker.js.map +1 -0
- package/dist/ui/project-picker.d.ts +27 -0
- package/dist/ui/project-picker.d.ts.map +1 -0
- package/dist/ui/project-picker.js +58 -0
- package/dist/ui/project-picker.js.map +1 -0
- package/dist/utils/config.d.ts +24 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +63 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +32 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +60 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/name-generator.d.ts +20 -0
- package/dist/utils/name-generator.d.ts.map +1 -0
- package/dist/utils/name-generator.js +183 -0
- package/dist/utils/name-generator.js.map +1 -0
- package/dist/utils/paths.d.ts +132 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +412 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/status-line.d.ts +14 -0
- package/dist/utils/status-line.d.ts.map +1 -0
- package/dist/utils/status-line.js +36 -0
- package/dist/utils/status-line.js.map +1 -0
- package/dist/utils/terminal-symbols.d.ts +50 -0
- package/dist/utils/terminal-symbols.d.ts.map +1 -0
- package/dist/utils/terminal-symbols.js +97 -0
- package/dist/utils/terminal-symbols.js.map +1 -0
- package/dist/utils/timer.d.ts +17 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/timer.js +56 -0
- package/dist/utils/timer.js.map +1 -0
- package/dist/utils/validation.d.ts +17 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +106 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +12 -0
- package/dist/utils/version.js.map +1 -0
- package/jest.config.ts +30 -0
- package/package.json +55 -0
- package/src/commands/do.ts +829 -0
- package/src/commands/plan.ts +422 -0
- package/src/commands/status.ts +146 -0
- package/src/core/claude-runner.ts +374 -0
- package/src/core/editor.ts +85 -0
- package/src/core/failure-analyzer.ts +372 -0
- package/src/core/git.ts +166 -0
- package/src/core/project-manager.ts +243 -0
- package/src/core/retry-handler.ts +72 -0
- package/src/core/shutdown-handler.ts +93 -0
- package/src/core/state-derivation.ts +343 -0
- package/src/index.ts +20 -0
- package/src/parsers/output-parser.ts +164 -0
- package/src/prompts/amend.ts +194 -0
- package/src/prompts/execution.ts +223 -0
- package/src/prompts/planning.ts +175 -0
- package/src/types/config.ts +35 -0
- package/src/ui/name-picker-subprocess.ts +96 -0
- package/src/ui/name-picker.ts +198 -0
- package/src/ui/project-picker.ts +80 -0
- package/src/utils/config.ts +69 -0
- package/src/utils/logger.ts +81 -0
- package/src/utils/name-generator.ts +211 -0
- package/src/utils/paths.ts +497 -0
- package/src/utils/status-line.ts +45 -0
- package/src/utils/terminal-symbols.ts +124 -0
- package/src/utils/timer.ts +64 -0
- package/src/utils/validation.ts +132 -0
- package/src/utils/version.ts +12 -0
- package/tests/unit/claude-runner-interactive.test.ts +343 -0
- package/tests/unit/claude-runner.test.ts +629 -0
- package/tests/unit/command-output.test.ts +295 -0
- package/tests/unit/config.test.ts +72 -0
- package/tests/unit/dependency-integration.test.ts +559 -0
- package/tests/unit/do-blocked-tasks.test.ts +323 -0
- package/tests/unit/do-command.test.ts +198 -0
- package/tests/unit/do-multiproject.test.ts +270 -0
- package/tests/unit/do-rerun.test.ts +270 -0
- package/tests/unit/execution-prompt.test.ts +406 -0
- package/tests/unit/failure-analyzer.test.ts +276 -0
- package/tests/unit/failure-history.test.ts +143 -0
- package/tests/unit/git-stash.test.ts +138 -0
- package/tests/unit/git.test.ts +80 -0
- package/tests/unit/logger.test.ts +132 -0
- package/tests/unit/name-generator.test.ts +283 -0
- package/tests/unit/name-picker.test.ts +179 -0
- package/tests/unit/outcome-content.test.ts +166 -0
- package/tests/unit/output-parser.test.ts +178 -0
- package/tests/unit/paths.test.ts +741 -0
- package/tests/unit/plan-command-amend-flag.test.ts +115 -0
- package/tests/unit/plan-command-amend-input.test.ts +156 -0
- package/tests/unit/plan-command-auto-flag.test.ts +112 -0
- package/tests/unit/plan-command.test.ts +580 -0
- package/tests/unit/planning-prompt.test.ts +137 -0
- package/tests/unit/project-manager.test.ts +265 -0
- package/tests/unit/project-picker.test.ts +338 -0
- package/tests/unit/retry-handler.test.ts +89 -0
- package/tests/unit/state-derivation.test.ts +714 -0
- package/tests/unit/status-command.test.ts +271 -0
- package/tests/unit/status-line.test.ts +92 -0
- package/tests/unit/terminal-symbols.test.ts +214 -0
- package/tests/unit/timer.test.ts +102 -0
- package/tests/unit/validation.test.ts +118 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Task: Update Documentation for New Outcome Format
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Update CLAUDE.md and any other documentation to reflect the new outcome file format and status markers.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The status marker has changed from `## Status: SUCCESS/FAILED` to `<promise>COMPLETE</promise>/<promise>FAILED</promise>`. Documentation needs to reflect this change.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Update CLAUDE.md "Architectural Decisions" section
|
|
11
|
+
- Update any references to outcome file format
|
|
12
|
+
- Document the new flow: Claude writes outcome → RAF validates
|
|
13
|
+
- Document failure analysis behavior
|
|
14
|
+
|
|
15
|
+
## Implementation Steps
|
|
16
|
+
1. Read current CLAUDE.md
|
|
17
|
+
2. Update "State Derivation Over Persistence" section:
|
|
18
|
+
- Change "Outcome files must include status marker as first line: `## Status: SUCCESS`"
|
|
19
|
+
- To: "Outcome files must end with `<promise>COMPLETE</promise>` or `<promise>FAILED</promise>`"
|
|
20
|
+
3. Add note about Claude writing outcome files
|
|
21
|
+
4. Document failure analysis with Sonnet
|
|
22
|
+
5. Review and update any other affected documentation
|
|
23
|
+
|
|
24
|
+
## Acceptance Criteria
|
|
25
|
+
- [ ] CLAUDE.md reflects new outcome format
|
|
26
|
+
- [ ] Status marker documentation updated
|
|
27
|
+
- [ ] Failure analysis documented
|
|
28
|
+
- [ ] No stale references to old format
|
|
29
|
+
|
|
30
|
+
## Notes
|
|
31
|
+
- This is a documentation-only task
|
|
32
|
+
- Should be done after implementation tasks are complete
|
|
33
|
+
- Keep documentation concise and accurate
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Project Decisions
|
|
2
|
+
|
|
3
|
+
## What output style do you prefer during task execution?
|
|
4
|
+
Single-line progress: One updating line like `🔧 [2/5] implementing-auth ⏱ 1:23`
|
|
5
|
+
|
|
6
|
+
## How much information should be shown for each task?
|
|
7
|
+
Ultra-minimal: Just emoji + task name + timer, nothing else
|
|
8
|
+
|
|
9
|
+
## Which emoji style do you prefer for task states?
|
|
10
|
+
Dots and symbols: ● running, ✓ done, ✗ failed, ○ pending
|
|
11
|
+
|
|
12
|
+
## What format should task completion use?
|
|
13
|
+
Replace in place: Running line transforms to done like `✓ implementing-auth 2:34`
|
|
14
|
+
|
|
15
|
+
## How should retries and errors be displayed?
|
|
16
|
+
Silent retries: Just show ● until done or failed, no retry noise
|
|
17
|
+
|
|
18
|
+
## What should the project header look like?
|
|
19
|
+
Minimal one-liner: `▶ my-project (5 tasks)`
|
|
20
|
+
|
|
21
|
+
## What should the final summary look like?
|
|
22
|
+
Single result line: `✓ 5/5 completed in 12:34`
|
|
23
|
+
|
|
24
|
+
## Should the timer show during the entire project or just per-task?
|
|
25
|
+
Per-task only: Timer shows task duration, resets between tasks
|
|
26
|
+
|
|
27
|
+
## For the status command, what format do you prefer?
|
|
28
|
+
Compact list: `001 my-project ✓✓●○○ (2/5)`
|
|
29
|
+
|
|
30
|
+
## Should status show task-level detail?
|
|
31
|
+
Project level only: Just show project with overall progress indicator, no task list
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
beautiful terminal output during do phase. consices minimal text, emojies, preserve timer
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Task 001: Terminal Symbols Module - Outcome
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Created a centralized terminal symbols module (`src/utils/terminal-symbols.ts`) that provides consistent visual symbols and formatting helpers for beautiful terminal output in RAF's `do` and `status` commands.
|
|
6
|
+
|
|
7
|
+
## Key Changes
|
|
8
|
+
|
|
9
|
+
### New Files Created
|
|
10
|
+
|
|
11
|
+
1. **`src/utils/terminal-symbols.ts`**
|
|
12
|
+
- Exported `SYMBOLS` constant with all visual symbols:
|
|
13
|
+
- `●` for running/in-progress
|
|
14
|
+
- `✓` for completed/success
|
|
15
|
+
- `✗` for failed
|
|
16
|
+
- `○` for pending
|
|
17
|
+
- `▶` for project header
|
|
18
|
+
- Exported `TaskStatus` type for type-safe status handling
|
|
19
|
+
- Implemented `formatTaskProgress(current, total, status, name, elapsedMs?)` - formats single task line
|
|
20
|
+
- Implemented `formatProjectHeader(name, taskCount)` - formats project header
|
|
21
|
+
- Implemented `formatSummary(completed, failed, pending, elapsedMs?)` - formats completion summary
|
|
22
|
+
- Implemented `formatProgressBar(tasks)` - formats compact status visualization
|
|
23
|
+
|
|
24
|
+
2. **`tests/unit/terminal-symbols.test.ts`**
|
|
25
|
+
- 28 comprehensive unit tests covering all functions and edge cases
|
|
26
|
+
- Tests for empty names, zero tasks, truncation, mixed statuses
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- All functions are pure and testable (no side effects)
|
|
31
|
+
- Reuses existing `formatElapsedTime()` from timer.ts for consistent time formatting
|
|
32
|
+
- Handles edge cases: empty names, zero tasks, long names (truncation with ellipsis)
|
|
33
|
+
- TypeScript strict mode compliant
|
|
34
|
+
|
|
35
|
+
## Acceptance Criteria Met
|
|
36
|
+
|
|
37
|
+
- [x] Symbol constants defined and exported
|
|
38
|
+
- [x] All formatter functions implemented
|
|
39
|
+
- [x] Functions handle edge cases (empty names, zero tasks)
|
|
40
|
+
- [x] All tests pass (28 tests)
|
|
41
|
+
|
|
42
|
+
## Test Results
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Test Suites: 1 passed, 1 total
|
|
46
|
+
Tests: 28 passed, 28 total
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
<promise>COMPLETE</promise>
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## Details
|
|
53
|
+
- Attempts: 2
|
|
54
|
+
- Elapsed time: 3m 8s
|
|
55
|
+
- Completed at: 2026-01-31T11:01:41.535Z
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Task 002: Refactor Do Command Output - Outcome
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Refactored the `do` command to use ultra-minimal, single-line progress display with in-place updates. The new design shows only essential information: symbol + task name + timer, with clean transformation from running to complete/failed states.
|
|
6
|
+
|
|
7
|
+
## Key Changes
|
|
8
|
+
|
|
9
|
+
### Files Modified
|
|
10
|
+
|
|
11
|
+
1. **`src/commands/do.ts`**
|
|
12
|
+
- Added imports for `SYMBOLS`, `formatProjectHeader`, `formatSummary`, `formatTaskProgress` from terminal-symbols
|
|
13
|
+
- Added project-level timer tracking (`projectStartTime`)
|
|
14
|
+
- Normal mode now shows:
|
|
15
|
+
- Project header: `▶ my-project (5 tasks)`
|
|
16
|
+
- During execution: `● implementing-auth 1:23` (updates in place)
|
|
17
|
+
- On completion: `✓ implementing-auth 2:34`
|
|
18
|
+
- On failure: `✗ implementing-auth 2:34`
|
|
19
|
+
- Final summary: `✓ 5/5 completed in 12:34`
|
|
20
|
+
- Verbose mode (`--verbose`) preserves all detailed output
|
|
21
|
+
- Model info hidden in normal mode (only with `--verbose`)
|
|
22
|
+
- Retry messages hidden in normal mode
|
|
23
|
+
- Multi-project summary minimized: `✓ project-name` or `✗ project-name`
|
|
24
|
+
|
|
25
|
+
2. **`src/utils/terminal-symbols.ts`**
|
|
26
|
+
- Updated `formatTaskProgress()` to show elapsed time for all statuses (not just running)
|
|
27
|
+
- This enables showing `✓ task-name 2:34` on completion
|
|
28
|
+
|
|
29
|
+
3. **`tests/unit/terminal-symbols.test.ts`**
|
|
30
|
+
- Added tests for completed and failed tasks with elapsed time
|
|
31
|
+
- Total tests increased from 28 to 30
|
|
32
|
+
|
|
33
|
+
### Output Examples
|
|
34
|
+
|
|
35
|
+
**Normal mode (default):**
|
|
36
|
+
```
|
|
37
|
+
▶ my-project (3 tasks)
|
|
38
|
+
● auth-login 0s ← updates in place
|
|
39
|
+
✓ auth-login 1m 23s ← replaces running line
|
|
40
|
+
● setup-db 0s
|
|
41
|
+
✓ setup-db 45s
|
|
42
|
+
● deploy 0s
|
|
43
|
+
✓ deploy 2m 10s
|
|
44
|
+
✓ 3/3 completed in 4m 18s
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Verbose mode (`--verbose`):**
|
|
48
|
+
```
|
|
49
|
+
Executing project: my-project
|
|
50
|
+
Tasks: 3, Task timeout: 60 minutes
|
|
51
|
+
Using model: claude-opus-4-5-20251101
|
|
52
|
+
|
|
53
|
+
[Task 1/3: auth-login] Executing task 001...
|
|
54
|
+
✓ [Task 1/3: auth-login] Task 001 completed (1m 23s)
|
|
55
|
+
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
✓ All tasks completed!
|
|
59
|
+
✓ Project complete. Committed to git.
|
|
60
|
+
|
|
61
|
+
Summary:
|
|
62
|
+
Completed: 3
|
|
63
|
+
Failed: 0
|
|
64
|
+
Pending: 0
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Acceptance Criteria Met
|
|
68
|
+
|
|
69
|
+
- [x] Single-line progress updates in place during task execution
|
|
70
|
+
- [x] Timer visible and updating during task run
|
|
71
|
+
- [x] Clean transformation from running to complete/failed
|
|
72
|
+
- [x] No retry noise in normal mode
|
|
73
|
+
- [x] Summary shows single result line
|
|
74
|
+
- [x] `--verbose` flag still provides detailed output
|
|
75
|
+
- [x] All existing tests pass or are updated (484 tests pass)
|
|
76
|
+
|
|
77
|
+
## Test Results
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Test Suites: 24 passed, 24 total
|
|
81
|
+
Tests: 484 passed, 484 total
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
<promise>COMPLETE</promise>
|
|
85
|
+
|
|
86
|
+
## Details
|
|
87
|
+
- Attempts: 1
|
|
88
|
+
- Elapsed time: 2m 15s
|
|
89
|
+
- Completed at: 2026-01-31T11:05:30.000Z
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## Details
|
|
93
|
+
- Attempts: 3
|
|
94
|
+
- Elapsed time: 6m 32s
|
|
95
|
+
- Completed at: 2026-01-31T11:08:14.004Z
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Task 003: Refactor Status Command Output - Outcome
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Refactored the `status` command to use compact, minimal output with progress indicators. The command now displays project status using a visual progress bar instead of verbose task lists.
|
|
6
|
+
|
|
7
|
+
## Key Changes
|
|
8
|
+
|
|
9
|
+
### Files Modified
|
|
10
|
+
|
|
11
|
+
1. **`src/commands/status.ts`**
|
|
12
|
+
- Imported terminal symbols: `SYMBOLS`, `formatProgressBar`, `TaskStatus`
|
|
13
|
+
- Updated `listAllProjects()` to show compact format: `001 my-project ✓✓●○○ (2/5)`
|
|
14
|
+
- Simplified single project view: `▶ project-name` with progress bar and counts
|
|
15
|
+
- Added `derivedStatusToTaskStatus()` helper to convert DerivedTaskStatus to TaskStatus
|
|
16
|
+
- Preserved `--json` output unchanged for programmatic use
|
|
17
|
+
- Removed extra hints and verbose task lists
|
|
18
|
+
|
|
19
|
+
### Output Formats
|
|
20
|
+
|
|
21
|
+
**Project List View:**
|
|
22
|
+
```
|
|
23
|
+
001 my-project ✓✓●○○ (2/5)
|
|
24
|
+
002 done-project ✓✓✓ (3/3)
|
|
25
|
+
003 has-failures ✓✗○ (1/3)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Single Project View:**
|
|
29
|
+
```
|
|
30
|
+
▶ my-project
|
|
31
|
+
✓✓●○○ (2/5)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**JSON Output (unchanged):**
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"projectName": "my-project",
|
|
38
|
+
"status": "in_progress",
|
|
39
|
+
"state": { ... },
|
|
40
|
+
"stats": { "completed": 2, "failed": 0, "pending": 3, "total": 5 }
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Progress Bar Symbols
|
|
45
|
+
- `✓` - Completed task
|
|
46
|
+
- `✗` - Failed task
|
|
47
|
+
- `●` - Running/active task
|
|
48
|
+
- `○` - Pending task
|
|
49
|
+
|
|
50
|
+
## Acceptance Criteria Met
|
|
51
|
+
|
|
52
|
+
- [x] Project list shows compact format with progress indicators
|
|
53
|
+
- [x] Progress bar correctly reflects task statuses
|
|
54
|
+
- [x] No task-level detail in list view
|
|
55
|
+
- [x] `--json` output unchanged
|
|
56
|
+
- [x] Clean, minimal output without extra hints
|
|
57
|
+
|
|
58
|
+
## Test Results
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Test Suites: 25 passed, 25 total
|
|
62
|
+
Tests: 521 passed, 521 total
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
<promise>COMPLETE</promise>
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## Details
|
|
69
|
+
- Attempts: 2
|
|
70
|
+
- Elapsed time: 3m 54s
|
|
71
|
+
- Completed at: 2026-01-31T11:29:34.752Z
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Task 004: Simplify Logger for Minimal Output - Outcome
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Simplified the logger module to support the minimal output style by adding a raw `print()` method, updating `error()` to use `✗` prefix instead of "Error:", and deprecating the context prefix feature (now a no-op).
|
|
6
|
+
|
|
7
|
+
## Key Changes
|
|
8
|
+
|
|
9
|
+
### Files Modified
|
|
10
|
+
|
|
11
|
+
1. **`src/utils/logger.ts`**
|
|
12
|
+
- Added `print(message, ...args)` method that outputs exactly what's passed with no prefixes
|
|
13
|
+
- Changed `error()` to use `✗` prefix instead of "Error:" for consistency with other symbols
|
|
14
|
+
- Deprecated `setContext()` and `clearContext()` - now no-ops but kept for backwards compatibility
|
|
15
|
+
- Removed `contextPrefix` private field (no longer needed)
|
|
16
|
+
- Simplified `formatMessage()` to just return the message unchanged
|
|
17
|
+
|
|
18
|
+
2. **`tests/unit/logger.test.ts`**
|
|
19
|
+
- Rewrote tests to reflect new behavior
|
|
20
|
+
- Added tests for new `print()` method (3 tests)
|
|
21
|
+
- Updated `error()` test to expect `✗` prefix
|
|
22
|
+
- Updated context tests to verify no-op behavior
|
|
23
|
+
- Added tests for `info`, `success`, `warn`, `verbose_log`, `debug`, `task`, and `newline`
|
|
24
|
+
- Total: 17 tests for logger module
|
|
25
|
+
|
|
26
|
+
### Backwards Compatibility
|
|
27
|
+
|
|
28
|
+
- `setContext()` and `clearContext()` are kept as no-ops to avoid breaking existing code (used in `do.ts` for verbose mode)
|
|
29
|
+
- These methods are marked with `@deprecated` JSDoc comments
|
|
30
|
+
- The `do` command still calls these methods in verbose mode, but they have no effect
|
|
31
|
+
|
|
32
|
+
## Acceptance Criteria Met
|
|
33
|
+
|
|
34
|
+
- [x] New `print()` method outputs text exactly as passed
|
|
35
|
+
- [x] `error()` uses `✗` prefix
|
|
36
|
+
- [x] Context prefix methods removed or no-op (no-op for backwards compatibility)
|
|
37
|
+
- [x] All existing functionality still works
|
|
38
|
+
- [x] Tests updated/passing (491 tests total)
|
|
39
|
+
|
|
40
|
+
## Test Results
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Test Suites: 24 passed, 24 total
|
|
44
|
+
Tests: 491 passed, 491 total
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
<promise>COMPLETE</promise>
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Details
|
|
51
|
+
- Attempts: 3
|
|
52
|
+
- Elapsed time: 3m 31s
|
|
53
|
+
- Completed at: 2026-01-31T11:17:37.300Z
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Task 005: Add Tests for Beautiful Output
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Verified that comprehensive test coverage exists for the beautiful terminal output feature implemented in this project.
|
|
6
|
+
|
|
7
|
+
## Completed Work
|
|
8
|
+
|
|
9
|
+
### Test Files Created/Verified
|
|
10
|
+
|
|
11
|
+
1. **terminal-symbols.test.ts** (30 tests)
|
|
12
|
+
- All formatter functions tested: `formatTaskProgress()`, `formatProjectHeader()`, `formatSummary()`, `formatProgressBar()`
|
|
13
|
+
- Edge cases covered: empty task names, very long names, zero tasks
|
|
14
|
+
- Symbol constants verified
|
|
15
|
+
|
|
16
|
+
2. **command-output.test.ts** (30 tests)
|
|
17
|
+
- Integration tests for do/status command output formats
|
|
18
|
+
- Verified exact output format matches requirements
|
|
19
|
+
|
|
20
|
+
3. **logger.test.ts** (17 tests)
|
|
21
|
+
- Tests for the simplified logger module
|
|
22
|
+
|
|
23
|
+
## Results
|
|
24
|
+
|
|
25
|
+
- All 521 tests pass with no regressions
|
|
26
|
+
- Test files follow existing project patterns using Jest with ts-jest
|
|
27
|
+
|
|
28
|
+
## Acceptance Criteria Met
|
|
29
|
+
|
|
30
|
+
- [x] All formatter functions have unit tests
|
|
31
|
+
- [x] Edge cases covered (empty, long, zero)
|
|
32
|
+
- [x] Tests verify exact output format
|
|
33
|
+
- [x] All tests pass
|
|
34
|
+
- [x] No regression in existing tests
|
|
35
|
+
|
|
36
|
+
<promise>COMPLETE</promise>
|
|
37
|
+
|
|
38
|
+
## Details
|
|
39
|
+
- Attempts: 3
|
|
40
|
+
- Elapsed time: 7m 57s
|
|
41
|
+
- Completed at: 2026-01-31T11:25:39.856Z
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Task: Create Terminal Symbols Module
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Create a centralized module defining the visual symbols and formatting helpers for beautiful terminal output.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
RAF needs consistent visual symbols across `do` and `status` commands. This module provides the foundation for the ultra-minimal output style using dots and symbols.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Symbol palette using dots/symbols style:
|
|
11
|
+
- `●` for running/in-progress
|
|
12
|
+
- `✓` for completed/success
|
|
13
|
+
- `✗` for failed
|
|
14
|
+
- `○` for pending
|
|
15
|
+
- `▶` for project header
|
|
16
|
+
- Helper functions for formatting:
|
|
17
|
+
- `formatTaskProgress(current, total, status, name, timer?)` → `● auth-login 1:23`
|
|
18
|
+
- `formatProjectHeader(name, taskCount)` → `▶ my-project (5 tasks)`
|
|
19
|
+
- `formatSummary(completed, failed, pending, elapsed?)` → `✓ 5/5 completed in 12:34`
|
|
20
|
+
- `formatProgressBar(tasks)` → `✓✓●○○` (sequence of task symbols)
|
|
21
|
+
- All functions should be pure and testable
|
|
22
|
+
|
|
23
|
+
## Implementation Steps
|
|
24
|
+
1. Create `src/utils/terminal-symbols.ts`
|
|
25
|
+
2. Define symbol constants as readonly object
|
|
26
|
+
3. Implement `formatTaskProgress()` for single-line task display
|
|
27
|
+
4. Implement `formatProjectHeader()` for project header
|
|
28
|
+
5. Implement `formatSummary()` for final result line
|
|
29
|
+
6. Implement `formatProgressBar()` for compact task status visualization
|
|
30
|
+
7. Export all functions and symbols
|
|
31
|
+
|
|
32
|
+
## Acceptance Criteria
|
|
33
|
+
- [ ] Symbol constants defined and exported
|
|
34
|
+
- [ ] All formatter functions implemented
|
|
35
|
+
- [ ] Functions handle edge cases (empty names, zero tasks)
|
|
36
|
+
- [ ] All tests pass
|
|
37
|
+
|
|
38
|
+
## Notes
|
|
39
|
+
- Keep functions pure - no side effects, no console output
|
|
40
|
+
- Timer format should match existing `formatElapsedTime()` from timer.ts
|
|
41
|
+
- Consider terminal width for very long task names (truncate if needed)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Task: Refactor Do Command Output
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Update the `do` command to use ultra-minimal, single-line progress display with in-place updates.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Currently the `do` command outputs verbose logs. The new design uses single-line progress that updates in place, showing only: symbol + task name + timer. When complete, the running line transforms to show the final status.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Project header: `▶ my-project (5 tasks)` - one line only
|
|
11
|
+
- During execution: `● implementing-auth 1:23` (updates in place)
|
|
12
|
+
- On completion: Replace with `✓ implementing-auth 2:34`
|
|
13
|
+
- On failure: Replace with `✗ implementing-auth 2:34`
|
|
14
|
+
- Silent retries: No retry messages, just keep showing `●`
|
|
15
|
+
- Final summary: `✓ 5/5 completed in 12:34` (single line)
|
|
16
|
+
- Remove verbose output by default (keep for `--verbose` flag)
|
|
17
|
+
- No model info in normal mode (only with `--verbose`)
|
|
18
|
+
|
|
19
|
+
## Implementation Steps
|
|
20
|
+
1. Import terminal symbols module
|
|
21
|
+
2. Replace project header logging with `formatProjectHeader()`
|
|
22
|
+
3. Update task execution loop:
|
|
23
|
+
- Use status line to show `● task-name timer`
|
|
24
|
+
- Update timer every second
|
|
25
|
+
- On complete/fail: clear line, print final `✓`/`✗` line
|
|
26
|
+
4. Remove retry logging in normal mode
|
|
27
|
+
5. Remove per-task success/error logger calls
|
|
28
|
+
6. Update final summary to use `formatSummary()`
|
|
29
|
+
7. Keep multi-project summary minimal: `✓ project-name`, `✗ project-name`
|
|
30
|
+
8. Ensure `--verbose` still shows detailed output
|
|
31
|
+
|
|
32
|
+
## Acceptance Criteria
|
|
33
|
+
- [ ] Single-line progress updates in place during task execution
|
|
34
|
+
- [ ] Timer visible and updating during task run
|
|
35
|
+
- [ ] Clean transformation from running to complete/failed
|
|
36
|
+
- [ ] No retry noise in normal mode
|
|
37
|
+
- [ ] Summary shows single result line
|
|
38
|
+
- [ ] `--verbose` flag still provides detailed output
|
|
39
|
+
- [ ] All existing tests pass or are updated
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
- Use existing `createStatusLine()` for in-place updates
|
|
43
|
+
- Preserve timer accuracy from current implementation
|
|
44
|
+
- Multi-project mode should show minimal per-project results
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Task: Refactor Status Command Output
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Update the `status` command to use compact, minimal output with progress indicators.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The current status command shows verbose task lists. The new design shows only project-level info with a compact progress bar.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- List format: `001 my-project ✓✓●○○ (2/5)`
|
|
11
|
+
- Progress bar uses symbols: ✓ (done), ✗ (failed), ● (running/active), ○ (pending)
|
|
12
|
+
- No task-level detail in project list
|
|
13
|
+
- Single project view can keep more detail (optional refinement)
|
|
14
|
+
- Keep `--json` output unchanged for programmatic use
|
|
15
|
+
|
|
16
|
+
## Implementation Steps
|
|
17
|
+
1. Import terminal symbols module
|
|
18
|
+
2. Update `listAllProjects()`:
|
|
19
|
+
- Format each project with `formatProgressBar()`
|
|
20
|
+
- Show project number, name, progress bar, counts
|
|
21
|
+
3. Simplify single project view:
|
|
22
|
+
- Header: `▶ project-name`
|
|
23
|
+
- Progress bar with counts
|
|
24
|
+
- Remove verbose task list
|
|
25
|
+
4. Keep `--json` flag working as-is
|
|
26
|
+
5. Remove extra newlines and "Use 'raf status...'" hint
|
|
27
|
+
|
|
28
|
+
## Acceptance Criteria
|
|
29
|
+
- [ ] Project list shows compact format with progress indicators
|
|
30
|
+
- [ ] Progress bar correctly reflects task statuses
|
|
31
|
+
- [ ] No task-level detail in list view
|
|
32
|
+
- [ ] `--json` output unchanged
|
|
33
|
+
- [ ] Clean, minimal output without extra hints
|
|
34
|
+
|
|
35
|
+
## Notes
|
|
36
|
+
- Consider alignment if project names vary significantly in length
|
|
37
|
+
- The status command has no "running" state derived - use ● for projects with some but not all tasks done
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Task: Simplify Logger for Minimal Output
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Clean up the logger to support the minimal output style without unnecessary prefixes.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The current logger adds prefixes like "Error:", "✓", and context prefixes. For the minimal style, we want cleaner output where the caller controls all formatting.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Add `print(text)` method that outputs exactly what's passed (no prefixes)
|
|
11
|
+
- Keep existing methods for backwards compatibility with verbose mode
|
|
12
|
+
- Remove context prefix feature (no longer needed with minimal output)
|
|
13
|
+
- Simplify `success()` to just output with `✓` (already does this)
|
|
14
|
+
- Simplify `error()` to output with `✗` instead of "Error:" prefix
|
|
15
|
+
|
|
16
|
+
## Implementation Steps
|
|
17
|
+
1. Add `print(message)` method for raw output
|
|
18
|
+
2. Update `error()` to use `✗` prefix instead of "Error:"
|
|
19
|
+
3. Remove or deprecate `setContext()` and `clearContext()`
|
|
20
|
+
4. Keep `warn()` with ⚠️ prefix
|
|
21
|
+
5. Ensure all tests still pass
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria
|
|
24
|
+
- [ ] New `print()` method outputs text exactly as passed
|
|
25
|
+
- [ ] `error()` uses `✗` prefix
|
|
26
|
+
- [ ] Context prefix methods removed or no-op
|
|
27
|
+
- [ ] All existing functionality still works
|
|
28
|
+
- [ ] Tests updated/passing
|
|
29
|
+
|
|
30
|
+
## Notes
|
|
31
|
+
- The `do` command currently uses setContext for task labels - this will be replaced by the new single-line progress format
|
|
32
|
+
- Keep changes minimal - don't over-engineer
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Task: Add Tests for Beautiful Output
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Add unit tests for the new terminal symbols module and updated output formatting.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The new terminal output needs test coverage to ensure correctness and prevent regressions.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
- Test terminal symbols module:
|
|
11
|
+
- `formatTaskProgress()` with various inputs
|
|
12
|
+
- `formatProjectHeader()` with edge cases
|
|
13
|
+
- `formatSummary()` with different completion states
|
|
14
|
+
- `formatProgressBar()` with various task states
|
|
15
|
+
- Test edge cases:
|
|
16
|
+
- Empty task name
|
|
17
|
+
- Very long task name (truncation)
|
|
18
|
+
- Zero tasks
|
|
19
|
+
- All completed, all failed, mixed states
|
|
20
|
+
- Integration: verify do/status commands produce expected format
|
|
21
|
+
|
|
22
|
+
## Implementation Steps
|
|
23
|
+
1. Create `tests/utils/terminal-symbols.test.ts`
|
|
24
|
+
2. Add tests for each formatter function
|
|
25
|
+
3. Test symbol constants are correctly defined
|
|
26
|
+
4. Add edge case tests for boundary conditions
|
|
27
|
+
5. Update existing command tests if output format changed
|
|
28
|
+
6. Run full test suite to ensure no regressions
|
|
29
|
+
|
|
30
|
+
## Acceptance Criteria
|
|
31
|
+
- [ ] All formatter functions have unit tests
|
|
32
|
+
- [ ] Edge cases covered (empty, long, zero)
|
|
33
|
+
- [ ] Tests verify exact output format
|
|
34
|
+
- [ ] All tests pass
|
|
35
|
+
- [ ] No regression in existing tests
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
- Follow existing test patterns in the codebase
|
|
39
|
+
- Use Jest with ts-jest as per project config
|
|
40
|
+
- Mock console output for integration tests if needed
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Project Decisions
|
|
2
|
+
|
|
3
|
+
## For the model override flag, which CLI syntax do you prefer?
|
|
4
|
+
Support both `--model <name>` AND shorthand flag `--sonnet` (only one shorthand). Opus is the default for both plan and do stages.
|
|
5
|
+
|
|
6
|
+
## For system prompt append, how should RAF configure this?
|
|
7
|
+
Use Claude CLI's `--system-prompt-append` flag to pass RAF's prompts at system level, giving them higher precedence than passing as user messages.
|
|
8
|
+
|
|
9
|
+
## For retry context, when should the previous outcome file be passed to Claude?
|
|
10
|
+
On any retry - include previous outcome context on 2nd attempt and beyond, whether task failed or was interrupted.
|
|
11
|
+
|
|
12
|
+
## For retry context, should the outcome file content be embedded in the prompt or should Claude be instructed to read it?
|
|
13
|
+
Instruct Claude to read the outcome file - tell Claude the path to the outcome file and instruct it to read and analyze before starting.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
- [ ] add support for model override for plan and do (--sonnet or --model sonnet|haiku|opus)
|
|
2
|
+
- [ ] append claude prompt (our "system" prompts that RAF passes as a user gives them low preference). search web on how to apped system prompt. here is what is found ```System Prompt with Append (Session-Level Enhancement)
|
|
3
|
+
Using the append method preserves Claude Code’s built-in functionality while adding custom instructions: systemPrompt: {
|
|
4
|
+
type: "preset",
|
|
5
|
+
preset: "claude_code",
|
|
6
|
+
append: "Always include detailed docstrings and implement error handling. Run tests after every feature."
|
|
7
|
+
}
|
|
8
|
+
This approach is ideal for Ralph iterations where you want to add iteration-specific guidance without losing tool definitions or core Claude Code behavior. The appended instructions appear directly above tool definitions in the system prompt hierarchy, giving them strong precedence.```
|
|
9
|
+
- [ ] make sure on retry claude caude recieves outcome file from previous run (failure description should help). add to task prompt improved version of this: "this is Nth attemnt at executing this plan. previous attemt give this <path to outcome file>. account for it in your task execution"
|