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,137 @@
|
|
|
1
|
+
const COMPLETE_PATTERN = /<promise>COMPLETE<\/promise>/i;
|
|
2
|
+
const FAILED_PATTERN = /<promise>FAILED<\/promise>/i;
|
|
3
|
+
const FAILURE_REASON_PATTERN = /Reason:\s*(.+?)(?:\n|$)/i;
|
|
4
|
+
const CONTEXT_OVERFLOW_PATTERNS = [
|
|
5
|
+
/context length exceeded/i,
|
|
6
|
+
/token limit/i,
|
|
7
|
+
/maximum context/i,
|
|
8
|
+
/context window/i,
|
|
9
|
+
/too many tokens/i,
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* Parse Claude's output to determine task result.
|
|
13
|
+
*/
|
|
14
|
+
export function parseOutput(output) {
|
|
15
|
+
const result = {
|
|
16
|
+
result: 'unknown',
|
|
17
|
+
contextOverflow: false,
|
|
18
|
+
};
|
|
19
|
+
// Check for context overflow
|
|
20
|
+
for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
|
|
21
|
+
if (pattern.test(output)) {
|
|
22
|
+
result.contextOverflow = true;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Check for completion markers (search from the end for the last occurrence)
|
|
27
|
+
const completeMatch = output.match(COMPLETE_PATTERN);
|
|
28
|
+
const failedMatch = output.match(FAILED_PATTERN);
|
|
29
|
+
if (completeMatch && failedMatch) {
|
|
30
|
+
// Both present - use whichever appears last
|
|
31
|
+
const completeIndex = output.lastIndexOf(completeMatch[0]);
|
|
32
|
+
const failedIndex = output.lastIndexOf(failedMatch[0]);
|
|
33
|
+
if (failedIndex > completeIndex) {
|
|
34
|
+
result.result = 'failed';
|
|
35
|
+
extractFailureReason(output, result);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
result.result = 'complete';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (completeMatch) {
|
|
42
|
+
result.result = 'complete';
|
|
43
|
+
}
|
|
44
|
+
else if (failedMatch) {
|
|
45
|
+
result.result = 'failed';
|
|
46
|
+
extractFailureReason(output, result);
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
function extractFailureReason(output, result) {
|
|
51
|
+
const reasonMatch = output.match(FAILURE_REASON_PATTERN);
|
|
52
|
+
if (reasonMatch) {
|
|
53
|
+
result.failureReason = reasonMatch[1]?.trim();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Try to find any text after the FAILED marker
|
|
57
|
+
const failedIndex = output.lastIndexOf('<promise>FAILED</promise>');
|
|
58
|
+
if (failedIndex !== -1) {
|
|
59
|
+
const afterFailed = output.substring(failedIndex + '<promise>FAILED</promise>'.length).trim();
|
|
60
|
+
if (afterFailed) {
|
|
61
|
+
// Take first few lines as reason
|
|
62
|
+
const lines = afterFailed.split('\n').slice(0, 3);
|
|
63
|
+
result.failureReason = lines.join(' ').trim().substring(0, 500);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!result.failureReason) {
|
|
68
|
+
result.failureReason = 'Unknown failure (no reason provided)';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if output indicates a retryable failure.
|
|
73
|
+
*/
|
|
74
|
+
export function isRetryableFailure(parsed) {
|
|
75
|
+
// Context overflow is not retryable
|
|
76
|
+
if (parsed.contextOverflow) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
// Unknown result might be retryable
|
|
80
|
+
if (parsed.result === 'unknown') {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
// Check failure reason for non-retryable patterns
|
|
84
|
+
if (parsed.result === 'failed' && parsed.failureReason) {
|
|
85
|
+
const nonRetryable = [
|
|
86
|
+
/cannot be done/i,
|
|
87
|
+
/impossible/i,
|
|
88
|
+
/not supported/i,
|
|
89
|
+
/permission denied/i,
|
|
90
|
+
/access denied/i,
|
|
91
|
+
];
|
|
92
|
+
for (const pattern of nonRetryable) {
|
|
93
|
+
if (pattern.test(parsed.failureReason)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Most failures are retryable
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Extract a summary from Claude's output for the outcome file.
|
|
104
|
+
*/
|
|
105
|
+
export function extractSummary(output) {
|
|
106
|
+
// Remove ANSI codes
|
|
107
|
+
const cleanOutput = output.replace(/\x1b\[[0-9;]*m/g, '');
|
|
108
|
+
// Try to find meaningful summary sections
|
|
109
|
+
const lines = cleanOutput.split('\n');
|
|
110
|
+
const summaryLines = [];
|
|
111
|
+
let inCodeBlock = false;
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
// Skip code blocks
|
|
114
|
+
if (line.trim().startsWith('```')) {
|
|
115
|
+
inCodeBlock = !inCodeBlock;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (inCodeBlock) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
// Skip empty lines and very short lines
|
|
122
|
+
if (line.trim().length < 5) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
// Skip lines that look like file paths or commands
|
|
126
|
+
if (line.trim().startsWith('/') || line.trim().startsWith('$')) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
summaryLines.push(line);
|
|
130
|
+
// Limit summary length
|
|
131
|
+
if (summaryLines.length >= 50) {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return summaryLines.join('\n').trim() || 'No summary available.';
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=output-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-parser.js","sourceRoot":"","sources":["../../src/parsers/output-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DerivedTask } from '../core/state-derivation.js';
|
|
2
|
+
export interface AmendPromptParams {
|
|
3
|
+
projectPath: string;
|
|
4
|
+
existingTasks: Array<DerivedTask & {
|
|
5
|
+
taskName: string;
|
|
6
|
+
}>;
|
|
7
|
+
nextTaskNumber: number;
|
|
8
|
+
newTaskDescription: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AmendPromptResult {
|
|
11
|
+
systemPrompt: string;
|
|
12
|
+
userMessage: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate a prompt for amending an existing project with new tasks.
|
|
16
|
+
* - systemPrompt: Amendment mode conventions, existing tasks context (via --append-system-prompt)
|
|
17
|
+
* - userMessage: Reference to input.md and new task description (via positional argument, triggers Claude to start)
|
|
18
|
+
*/
|
|
19
|
+
export declare function getAmendPrompt(params: AmendPromptParams): AmendPromptResult;
|
|
20
|
+
//# sourceMappingURL=amend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,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;CAC5B;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,CA8K3E"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a prompt for amending an existing project with new tasks.
|
|
3
|
+
* - systemPrompt: Amendment mode conventions, existing tasks context (via --append-system-prompt)
|
|
4
|
+
* - userMessage: Reference to input.md and new task description (via positional argument, triggers Claude to start)
|
|
5
|
+
*/
|
|
6
|
+
export function getAmendPrompt(params) {
|
|
7
|
+
const { projectPath, existingTasks, nextTaskNumber, newTaskDescription, } = params;
|
|
8
|
+
const existingTasksSummary = existingTasks
|
|
9
|
+
.map((task) => {
|
|
10
|
+
const status = task.status === 'completed'
|
|
11
|
+
? '[COMPLETED]'
|
|
12
|
+
: task.status === 'failed'
|
|
13
|
+
? '[FAILED]'
|
|
14
|
+
: '[PENDING]';
|
|
15
|
+
const modifiability = task.status === 'completed' ? '[PROTECTED]' : '[MODIFIABLE]';
|
|
16
|
+
return `- Task ${task.id}: ${task.taskName} ${status} ${modifiability}`;
|
|
17
|
+
})
|
|
18
|
+
.join('\n');
|
|
19
|
+
const protectedTasks = existingTasks.filter((t) => t.status === 'completed');
|
|
20
|
+
const modifiableTasks = existingTasks.filter((t) => t.status !== 'completed');
|
|
21
|
+
const protectedTasksList = protectedTasks.length > 0
|
|
22
|
+
? protectedTasks.map((t) => `- Task ${t.id}: ${t.taskName}`).join('\n')
|
|
23
|
+
: '(none)';
|
|
24
|
+
const modifiableTasksList = modifiableTasks.length > 0
|
|
25
|
+
? modifiableTasks.map((t) => `- Task ${t.id}: ${t.taskName}`).join('\n')
|
|
26
|
+
: '(none)';
|
|
27
|
+
const systemPrompt = `You are a project planning assistant for RAF (Ralph's Automation Framework). Your task is to ADD NEW TASKS or MODIFY PENDING tasks in an existing project.
|
|
28
|
+
|
|
29
|
+
## IMPORTANT: Amendment Mode
|
|
30
|
+
|
|
31
|
+
You are in AMENDMENT MODE. This means:
|
|
32
|
+
- You MAY modify [MODIFIABLE] tasks (pending/failed) if the user requests changes
|
|
33
|
+
- NEVER modify [PROTECTED] tasks (completed) - their outcomes depend on the original plan
|
|
34
|
+
- DO NOT renumber existing tasks
|
|
35
|
+
- You can create NEW tasks starting from number ${nextTaskNumber.toString().padStart(3, '0')}
|
|
36
|
+
|
|
37
|
+
## Project Location
|
|
38
|
+
|
|
39
|
+
Project folder: ${projectPath}
|
|
40
|
+
|
|
41
|
+
## Existing Tasks
|
|
42
|
+
|
|
43
|
+
The following tasks already exist in this project:
|
|
44
|
+
|
|
45
|
+
${existingTasksSummary}
|
|
46
|
+
|
|
47
|
+
### Protected Tasks (COMPLETED - cannot be modified)
|
|
48
|
+
${protectedTasksList}
|
|
49
|
+
|
|
50
|
+
### Modifiable Tasks (PENDING/FAILED - can be modified if requested)
|
|
51
|
+
${modifiableTasksList}
|
|
52
|
+
|
|
53
|
+
## Instructions
|
|
54
|
+
|
|
55
|
+
### Step 1: Read Context
|
|
56
|
+
|
|
57
|
+
First, read the original project description from:
|
|
58
|
+
- ${projectPath}/input.md
|
|
59
|
+
|
|
60
|
+
And review existing decisions from:
|
|
61
|
+
- ${projectPath}/decisions.md (if it exists)
|
|
62
|
+
|
|
63
|
+
### Step 2: Analyze New Requirements
|
|
64
|
+
|
|
65
|
+
Read the user's description of new tasks and identify what needs to be added. Consider:
|
|
66
|
+
- How the new tasks relate to existing ones
|
|
67
|
+
- Dependencies on completed tasks (check the ## Dependencies section in existing plan files)
|
|
68
|
+
- Whether new tasks should reference existing task outcomes
|
|
69
|
+
|
|
70
|
+
### Step 3: Interview the User
|
|
71
|
+
|
|
72
|
+
For EACH new task you identify, use the AskUserQuestion tool to gather:
|
|
73
|
+
- Specific requirements and constraints
|
|
74
|
+
- Technology preferences
|
|
75
|
+
- Any existing code or patterns to follow
|
|
76
|
+
- Edge cases to handle
|
|
77
|
+
|
|
78
|
+
### Step 3.5: Record Decisions
|
|
79
|
+
|
|
80
|
+
After EACH interview question is answered, append the Q&A pair to the existing decisions file:
|
|
81
|
+
- ${projectPath}/decisions.md
|
|
82
|
+
|
|
83
|
+
Use this format:
|
|
84
|
+
\`\`\`markdown
|
|
85
|
+
## [Amendment] [Question asked]
|
|
86
|
+
[User's answer]
|
|
87
|
+
\`\`\`
|
|
88
|
+
|
|
89
|
+
### Step 4: Create New Plan Files
|
|
90
|
+
|
|
91
|
+
After interviewing the user about all NEW tasks, create plan files starting from the next available number:
|
|
92
|
+
- ${projectPath}/plans/${nextTaskNumber.toString().padStart(3, '0')}-task-name.md
|
|
93
|
+
- ${projectPath}/plans/${(nextTaskNumber + 1).toString().padStart(3, '0')}-task-name.md
|
|
94
|
+
- etc.
|
|
95
|
+
|
|
96
|
+
Each plan file should follow this structure:
|
|
97
|
+
|
|
98
|
+
\`\`\`markdown
|
|
99
|
+
# Task: [Task Name]
|
|
100
|
+
|
|
101
|
+
## Objective
|
|
102
|
+
[Clear, one-sentence description of what this task accomplishes]
|
|
103
|
+
|
|
104
|
+
## Context
|
|
105
|
+
[Why this task is needed, how it fits into the larger project]
|
|
106
|
+
[Reference relevant existing tasks if applicable]
|
|
107
|
+
|
|
108
|
+
## Dependencies
|
|
109
|
+
[Optional section - omit if task has no dependencies]
|
|
110
|
+
[Comma-separated list of task IDs this task depends on, e.g., "001, 002"]
|
|
111
|
+
[If a dependency fails, this task will be automatically blocked]
|
|
112
|
+
|
|
113
|
+
## Requirements
|
|
114
|
+
[Specific requirements gathered from the user interview]
|
|
115
|
+
- Requirement 1
|
|
116
|
+
- Requirement 2
|
|
117
|
+
- ...
|
|
118
|
+
|
|
119
|
+
## Implementation Steps
|
|
120
|
+
1. [Step 1]
|
|
121
|
+
2. [Step 2]
|
|
122
|
+
3. [Step 3]
|
|
123
|
+
...
|
|
124
|
+
|
|
125
|
+
## Acceptance Criteria
|
|
126
|
+
- [ ] Criterion 1
|
|
127
|
+
- [ ] Criterion 2
|
|
128
|
+
- [ ] All tests pass
|
|
129
|
+
|
|
130
|
+
## Notes
|
|
131
|
+
[Any additional context, warnings, or considerations]
|
|
132
|
+
[Reference to existing task outcomes if relevant]
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
### Step 5: Confirm Completion
|
|
136
|
+
|
|
137
|
+
After creating all new plan files:
|
|
138
|
+
1. Provide a summary of:
|
|
139
|
+
- The new tasks you've created
|
|
140
|
+
- How they relate to existing tasks
|
|
141
|
+
- Total task count in the project
|
|
142
|
+
2. Display this exit message to the user:
|
|
143
|
+
|
|
144
|
+
\`\`\`
|
|
145
|
+
Planning complete! Press Ctrl-C twice to exit to exit this session
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
## Important Rules
|
|
149
|
+
|
|
150
|
+
1. NEVER modify COMPLETED task plans - they are [PROTECTED] because their outcomes depend on the original plan
|
|
151
|
+
2. You MAY modify non-completed task plans (pending/failed) if the user requests changes - they are [MODIFIABLE]
|
|
152
|
+
3. ALWAYS interview the user before creating or modifying plans
|
|
153
|
+
4. New tasks start from number ${nextTaskNumber.toString().padStart(3, '0')}
|
|
154
|
+
5. Use descriptive, kebab-case names for plan files
|
|
155
|
+
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., "001, 002")
|
|
157
|
+
8. Tasks without dependencies should omit the Dependencies section entirely
|
|
158
|
+
9. Be specific - vague plans lead to poor execution`;
|
|
159
|
+
const userMessage = `I want to add the following new tasks to this project:
|
|
160
|
+
|
|
161
|
+
${newTaskDescription}
|
|
162
|
+
|
|
163
|
+
Please analyze this and start the planning interview for the new tasks.`;
|
|
164
|
+
return { systemPrompt, userMessage };
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=amend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amend.js","sourceRoot":"","sources":["../../src/prompts/amend.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,MAAM,EACJ,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,GAAG,MAAM,CAAC;IAEX,MAAM,oBAAoB,GAAG,aAAa;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,WAAW;YACzB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;gBACxB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,WAAW,CAAC;QACpB,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;QAC/D,OAAO,UAAU,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,aAAa,EAAE,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAE9E,MAAM,kBAAkB,GACtB,cAAc,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvE,CAAC,CAAC,QAAQ,CAAC;IACf,MAAM,mBAAmB,GACvB,eAAe,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxE,CAAC,CAAC,QAAQ,CAAC;IAEf,MAAM,YAAY,GAAG;;;;;;;;kDAQ2B,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;kBAI1E,WAAW;;;;;;EAM3B,oBAAoB;;;EAGpB,kBAAkB;;;EAGlB,mBAAmB;;;;;;;IAOjB,WAAW;;;IAGX,WAAW;;;;;;;;;;;;;;;;;;;;IAoBX,WAAW;;;;;;;;;;;IAWX,WAAW,UAAU,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC/D,WAAW,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4DxC,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;;oDAKvB,CAAC;IAEnD,MAAM,WAAW,GAAG;;EAEpB,kBAAkB;;wEAEoD,CAAC;IAEvE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summarize an outcome for dependency context.
|
|
3
|
+
* Extracts the key sections (Summary, Key Changes, Notes) and truncates if needed.
|
|
4
|
+
*/
|
|
5
|
+
export declare function summarizeOutcome(content: string): string;
|
|
6
|
+
export interface ExecutionPromptParams {
|
|
7
|
+
projectPath: string;
|
|
8
|
+
planPath: string;
|
|
9
|
+
taskId: string;
|
|
10
|
+
taskNumber: number;
|
|
11
|
+
totalTasks: number;
|
|
12
|
+
previousOutcomes: Array<{
|
|
13
|
+
taskId: string;
|
|
14
|
+
content: string;
|
|
15
|
+
}>;
|
|
16
|
+
autoCommit: boolean;
|
|
17
|
+
projectNumber: string;
|
|
18
|
+
outcomeFilePath: string;
|
|
19
|
+
attemptNumber?: number;
|
|
20
|
+
previousOutcomeFile?: string;
|
|
21
|
+
/** Task IDs that this task depends on */
|
|
22
|
+
dependencyIds?: string[];
|
|
23
|
+
/** Outcomes of dependency tasks, keyed by task ID */
|
|
24
|
+
dependencyOutcomes?: Array<{
|
|
25
|
+
taskId: string;
|
|
26
|
+
content: string;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export declare function getExecutionPrompt(params: ExecutionPromptParams): string;
|
|
30
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/prompts/execution.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BxD;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAqKxE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum characters for a dependency outcome summary.
|
|
3
|
+
* Outcomes larger than this will be truncated to avoid context bloat.
|
|
4
|
+
*/
|
|
5
|
+
const MAX_DEPENDENCY_OUTCOME_CHARS = 4000;
|
|
6
|
+
/**
|
|
7
|
+
* Summarize an outcome for dependency context.
|
|
8
|
+
* Extracts the key sections (Summary, Key Changes, Notes) and truncates if needed.
|
|
9
|
+
*/
|
|
10
|
+
export function summarizeOutcome(content) {
|
|
11
|
+
// If content is small enough, return as-is
|
|
12
|
+
if (content.length <= MAX_DEPENDENCY_OUTCOME_CHARS) {
|
|
13
|
+
return content;
|
|
14
|
+
}
|
|
15
|
+
// Try to extract just the Summary section
|
|
16
|
+
const summaryMatch = content.match(/^## Summary\s*\n([\s\S]*?)(?=\n## |$)/m);
|
|
17
|
+
if (summaryMatch && summaryMatch[1]) {
|
|
18
|
+
const summary = summaryMatch[1].trim();
|
|
19
|
+
if (summary.length > 0 && summary.length <= MAX_DEPENDENCY_OUTCOME_CHARS) {
|
|
20
|
+
return `## Summary\n\n${summary}\n\n*[Outcome truncated for context size]*`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Fallback: truncate the full content
|
|
24
|
+
const truncated = content.substring(0, MAX_DEPENDENCY_OUTCOME_CHARS);
|
|
25
|
+
// Find a good break point (newline or period)
|
|
26
|
+
const lastNewline = truncated.lastIndexOf('\n');
|
|
27
|
+
const lastPeriod = truncated.lastIndexOf('. ');
|
|
28
|
+
const breakPoint = Math.max(lastNewline, lastPeriod);
|
|
29
|
+
if (breakPoint > MAX_DEPENDENCY_OUTCOME_CHARS / 2) {
|
|
30
|
+
return truncated.substring(0, breakPoint + 1) + '\n\n*[Outcome truncated for context size]*';
|
|
31
|
+
}
|
|
32
|
+
return truncated + '\n\n*[Outcome truncated for context size]*';
|
|
33
|
+
}
|
|
34
|
+
export function getExecutionPrompt(params) {
|
|
35
|
+
const { projectPath, planPath, taskId, taskNumber, totalTasks, previousOutcomes, autoCommit, projectNumber, outcomeFilePath, attemptNumber = 1, previousOutcomeFile, dependencyIds = [], dependencyOutcomes = [], } = params;
|
|
36
|
+
let outcomesSection = '';
|
|
37
|
+
if (previousOutcomes.length > 0) {
|
|
38
|
+
outcomesSection = `
|
|
39
|
+
## Previous Task Outcomes
|
|
40
|
+
|
|
41
|
+
The following tasks have already been completed. Review them for context and to avoid duplication:
|
|
42
|
+
|
|
43
|
+
${previousOutcomes.map((o) => `### Task ${o.taskId}\n${o.content}`).join('\n\n')}
|
|
44
|
+
`;
|
|
45
|
+
}
|
|
46
|
+
// Zero-pad task number to 3 digits
|
|
47
|
+
const paddedTaskNumber = taskNumber.toString().padStart(3, '0');
|
|
48
|
+
const commitInstructions = autoCommit
|
|
49
|
+
? `
|
|
50
|
+
## Git Instructions
|
|
51
|
+
|
|
52
|
+
After successfully completing the task:
|
|
53
|
+
1. Stage all changes with \`git add -A\`
|
|
54
|
+
- This includes any new plan files in the \`plans/\` folder
|
|
55
|
+
2. Commit with message: "RAF[${projectNumber}:${paddedTaskNumber}] <description>"
|
|
56
|
+
- Write a concise description of what was accomplished
|
|
57
|
+
- Focus on the actual change, not the task name
|
|
58
|
+
|
|
59
|
+
**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.
|
|
60
|
+
`
|
|
61
|
+
: '';
|
|
62
|
+
// Generate retry context section for attempt 2+
|
|
63
|
+
let retryContextSection = '';
|
|
64
|
+
if (attemptNumber > 1 && previousOutcomeFile) {
|
|
65
|
+
retryContextSection = `
|
|
66
|
+
## Retry Context
|
|
67
|
+
|
|
68
|
+
This is attempt ${attemptNumber} at executing this task. The previous attempt produced an outcome file that you should review before starting.
|
|
69
|
+
|
|
70
|
+
**Previous outcome file**: ${previousOutcomeFile}
|
|
71
|
+
|
|
72
|
+
Please:
|
|
73
|
+
1. Read the previous outcome file first
|
|
74
|
+
2. Understand what was attempted and why it failed
|
|
75
|
+
3. Account for the previous failure in your approach
|
|
76
|
+
4. Avoid making the same mistakes
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
// Generate dependency context section if task has dependencies
|
|
80
|
+
let dependencyContextSection = '';
|
|
81
|
+
if (dependencyIds.length > 0 && dependencyOutcomes.length > 0) {
|
|
82
|
+
const depOutcomesFormatted = dependencyOutcomes.map((o) => {
|
|
83
|
+
const summarized = summarizeOutcome(o.content);
|
|
84
|
+
return `### Task ${o.taskId}\n${summarized}`;
|
|
85
|
+
}).join('\n\n');
|
|
86
|
+
dependencyContextSection = `
|
|
87
|
+
## Dependency Context
|
|
88
|
+
|
|
89
|
+
This task depends on the following completed tasks. Review their outcomes to understand what was accomplished and build upon their work:
|
|
90
|
+
|
|
91
|
+
**Dependencies**: ${dependencyIds.join(', ')}
|
|
92
|
+
|
|
93
|
+
${depOutcomesFormatted}
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
return `You are executing a planned task for RAF (Ralph's Automation Framework).
|
|
97
|
+
|
|
98
|
+
## Task Information
|
|
99
|
+
|
|
100
|
+
- Task: ${taskNumber} of ${totalTasks}
|
|
101
|
+
- Task ID: ${taskId}
|
|
102
|
+
- Project folder: ${projectPath}
|
|
103
|
+
|
|
104
|
+
## Your Mission
|
|
105
|
+
|
|
106
|
+
1. Read the plan file at: ${planPath}
|
|
107
|
+
2. Execute the task according to the plan
|
|
108
|
+
3. Verify all acceptance criteria are met
|
|
109
|
+
4. Signal completion with the appropriate marker
|
|
110
|
+
|
|
111
|
+
## Instructions
|
|
112
|
+
${retryContextSection}
|
|
113
|
+
### Step 1: Read the Plan
|
|
114
|
+
|
|
115
|
+
First, read the plan file to understand exactly what needs to be done.
|
|
116
|
+
|
|
117
|
+
### Step 2: Execute the Task
|
|
118
|
+
|
|
119
|
+
Follow the implementation steps in the plan. Key guidelines:
|
|
120
|
+
- Write clean, maintainable code
|
|
121
|
+
- Follow existing code patterns in the project
|
|
122
|
+
- Add appropriate error handling
|
|
123
|
+
- Write tests if specified in the plan
|
|
124
|
+
- Follow any CLAUDE.md instructions if present
|
|
125
|
+
${dependencyContextSection}${outcomesSection}
|
|
126
|
+
### Step 3: Verify Completion
|
|
127
|
+
|
|
128
|
+
Before marking the task complete:
|
|
129
|
+
- Check all acceptance criteria from the plan
|
|
130
|
+
- Run any relevant tests
|
|
131
|
+
- Ensure no regressions were introduced
|
|
132
|
+
${commitInstructions}
|
|
133
|
+
### Step 4: Write Outcome File
|
|
134
|
+
|
|
135
|
+
**CRITICAL**: You MUST write an outcome file to document what was accomplished.
|
|
136
|
+
|
|
137
|
+
**Outcome file path**: \`${outcomeFilePath}\`
|
|
138
|
+
|
|
139
|
+
The outcome file should contain:
|
|
140
|
+
1. A summary of what was done
|
|
141
|
+
2. Key changes made (files modified, features added, etc.)
|
|
142
|
+
3. Any important notes or follow-up items
|
|
143
|
+
4. The completion marker as the LAST line
|
|
144
|
+
|
|
145
|
+
**For code tasks**: Summarize what was changed and why
|
|
146
|
+
**For documentation/report tasks**: The outcome IS the deliverable - include the full content
|
|
147
|
+
|
|
148
|
+
**CRITICAL**: The outcome file MUST end with one of these markers:
|
|
149
|
+
|
|
150
|
+
If the task was completed successfully, end the file with:
|
|
151
|
+
\`\`\`
|
|
152
|
+
<promise>COMPLETE</promise>
|
|
153
|
+
\`\`\`
|
|
154
|
+
|
|
155
|
+
If the task failed and cannot be completed, end the file with:
|
|
156
|
+
\`\`\`
|
|
157
|
+
<promise>FAILED</promise>
|
|
158
|
+
Reason: [explain why the task failed]
|
|
159
|
+
\`\`\`
|
|
160
|
+
|
|
161
|
+
## Important Rules
|
|
162
|
+
|
|
163
|
+
1. ALWAYS read the plan file first
|
|
164
|
+
2. Follow the plan precisely
|
|
165
|
+
3. Do not skip any acceptance criteria
|
|
166
|
+
4. If you encounter blockers, try to resolve them
|
|
167
|
+
5. The outcome file MUST contain EXACTLY ONE completion marker
|
|
168
|
+
6. The completion marker MUST be the LAST line in the outcome file
|
|
169
|
+
7. On SUCCESS: Commit code changes AND outcome file together BEFORE you finish
|
|
170
|
+
8. On FAILURE: Do NOT commit - just write the outcome file with FAILED marker
|
|
171
|
+
|
|
172
|
+
## Error Handling
|
|
173
|
+
|
|
174
|
+
If you encounter errors:
|
|
175
|
+
- Try to fix them yourself first
|
|
176
|
+
- If an error prevents completion, write the outcome file with FAILED status and a clear reason
|
|
177
|
+
- Do not mark COMPLETE if there are failing tests or unmet criteria`;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/prompts/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface PlanningPromptParams {
|
|
2
|
+
projectPath: string;
|
|
3
|
+
inputContent: string;
|
|
4
|
+
}
|
|
5
|
+
export interface PlanningPromptResult {
|
|
6
|
+
systemPrompt: string;
|
|
7
|
+
userMessage: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generate the planning prompt with system instructions and user message separated.
|
|
11
|
+
* - systemPrompt: RAF planning conventions, file structure, interview process (via --append-system-prompt)
|
|
12
|
+
* - userMessage: Reference to input.md file (via positional argument, triggers Claude to start)
|
|
13
|
+
*/
|
|
14
|
+
export declare function getPlanningPrompt(params: PlanningPromptParams): PlanningPromptResult;
|
|
15
|
+
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -0,0 +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;CACtB;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,CA+JpF"}
|