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,297 @@
|
|
|
1
|
+
import * as pty from 'node-pty';
|
|
2
|
+
import { execSync, spawn } from 'node:child_process';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
function getClaudePath() {
|
|
5
|
+
try {
|
|
6
|
+
return execSync('which claude', { encoding: 'utf-8' }).trim();
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
throw new Error('Claude CLI not found. Please ensure it is installed and in your PATH.');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const CONTEXT_OVERFLOW_PATTERNS = [
|
|
13
|
+
/context length exceeded/i,
|
|
14
|
+
/token limit/i,
|
|
15
|
+
/maximum context/i,
|
|
16
|
+
/context window/i,
|
|
17
|
+
];
|
|
18
|
+
export class ClaudeRunner {
|
|
19
|
+
activeProcess = null;
|
|
20
|
+
killed = false;
|
|
21
|
+
model;
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
this.model = config.model ?? 'opus';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run Claude interactively with stdin/stdout passthrough.
|
|
27
|
+
* Used for planning phase where user interaction is needed.
|
|
28
|
+
*
|
|
29
|
+
* @param systemPrompt - Instructions appended to Claude's system prompt via --append-system-prompt
|
|
30
|
+
* @param userMessage - User message passed as positional argument to trigger Claude to start
|
|
31
|
+
* @param options - Runner options (cwd, dangerouslySkipPermissions)
|
|
32
|
+
*/
|
|
33
|
+
async runInteractive(systemPrompt, userMessage, options = {}) {
|
|
34
|
+
const { cwd = process.cwd(), dangerouslySkipPermissions = false } = options;
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
const args = ['--model', this.model];
|
|
37
|
+
// Add --dangerously-skip-permissions if requested (for --auto mode)
|
|
38
|
+
if (dangerouslySkipPermissions) {
|
|
39
|
+
args.push('--dangerously-skip-permissions');
|
|
40
|
+
}
|
|
41
|
+
// System instructions via --append-system-prompt
|
|
42
|
+
args.push('--append-system-prompt', systemPrompt);
|
|
43
|
+
// User message as positional argument - Claude starts immediately
|
|
44
|
+
args.push(userMessage);
|
|
45
|
+
logger.debug(`Starting interactive Claude session with model: ${this.model}`);
|
|
46
|
+
this.activeProcess = pty.spawn(getClaudePath(), args, {
|
|
47
|
+
name: 'xterm-256color',
|
|
48
|
+
cols: process.stdout.columns ?? 80,
|
|
49
|
+
rows: process.stdout.rows ?? 24,
|
|
50
|
+
cwd,
|
|
51
|
+
env: process.env,
|
|
52
|
+
});
|
|
53
|
+
// Set raw mode to pass through all input
|
|
54
|
+
if (process.stdin.isTTY) {
|
|
55
|
+
process.stdin.setRawMode(true);
|
|
56
|
+
}
|
|
57
|
+
process.stdin.resume();
|
|
58
|
+
// Pipe input to Claude
|
|
59
|
+
const onData = (data) => {
|
|
60
|
+
if (this.activeProcess && !this.killed) {
|
|
61
|
+
this.activeProcess.write(data.toString());
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
process.stdin.on('data', onData);
|
|
65
|
+
// Pipe output to stdout
|
|
66
|
+
this.activeProcess.onData((data) => {
|
|
67
|
+
process.stdout.write(data);
|
|
68
|
+
});
|
|
69
|
+
this.activeProcess.onExit(({ exitCode }) => {
|
|
70
|
+
// Cleanup
|
|
71
|
+
process.stdin.off('data', onData);
|
|
72
|
+
if (process.stdin.isTTY) {
|
|
73
|
+
process.stdin.setRawMode(false);
|
|
74
|
+
}
|
|
75
|
+
process.stdin.pause();
|
|
76
|
+
this.activeProcess = null;
|
|
77
|
+
if (this.killed) {
|
|
78
|
+
resolve(130); // SIGINT exit code
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
resolve(exitCode);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Run Claude non-interactively and collect output.
|
|
88
|
+
* Used for execution phase where we parse the results.
|
|
89
|
+
* Uses child_process.spawn with -p flag for prompt (like ralphy).
|
|
90
|
+
*
|
|
91
|
+
* TIMEOUT BEHAVIOR:
|
|
92
|
+
* - The timeout is applied per individual call to this method
|
|
93
|
+
* - Each call gets a fresh timeout - elapsed time is NOT shared between calls
|
|
94
|
+
* - When used with retries (in do.ts), each retry attempt gets its own fresh timeout
|
|
95
|
+
* - Timeout includes all time Claude is running, including context building
|
|
96
|
+
* - Default timeout is 60 minutes if not specified
|
|
97
|
+
*/
|
|
98
|
+
async run(prompt, options = {}) {
|
|
99
|
+
const { timeout = 60, cwd = process.cwd() } = options;
|
|
100
|
+
// Ensure timeout is a positive number, fallback to 60 minutes
|
|
101
|
+
const validatedTimeout = Number(timeout) > 0 ? Number(timeout) : 60;
|
|
102
|
+
const timeoutMs = validatedTimeout * 60 * 1000;
|
|
103
|
+
return new Promise((resolve) => {
|
|
104
|
+
let output = '';
|
|
105
|
+
let stderr = '';
|
|
106
|
+
let timedOut = false;
|
|
107
|
+
let contextOverflow = false;
|
|
108
|
+
const claudePath = getClaudePath();
|
|
109
|
+
logger.debug(`Starting Claude execution session with model: ${this.model}`);
|
|
110
|
+
logger.debug(`Claude path: ${claudePath}`);
|
|
111
|
+
// Use --append-system-prompt to add RAF instructions to system prompt
|
|
112
|
+
// This gives RAF instructions stronger precedence than passing as user message
|
|
113
|
+
// --dangerously-skip-permissions bypasses interactive prompts
|
|
114
|
+
// -p enables print mode (non-interactive)
|
|
115
|
+
const proc = spawn(claudePath, [
|
|
116
|
+
'--dangerously-skip-permissions',
|
|
117
|
+
'--model',
|
|
118
|
+
this.model,
|
|
119
|
+
'--append-system-prompt',
|
|
120
|
+
prompt,
|
|
121
|
+
'-p',
|
|
122
|
+
'Execute the task as described in the system prompt.',
|
|
123
|
+
], {
|
|
124
|
+
cwd,
|
|
125
|
+
env: process.env,
|
|
126
|
+
stdio: ['ignore', 'pipe', 'pipe'], // no stdin needed
|
|
127
|
+
});
|
|
128
|
+
// Track this process
|
|
129
|
+
this.activeProcess = proc;
|
|
130
|
+
// Set up timeout
|
|
131
|
+
const timeoutHandle = setTimeout(() => {
|
|
132
|
+
timedOut = true;
|
|
133
|
+
logger.warn('Claude session timed out');
|
|
134
|
+
proc.kill('SIGTERM');
|
|
135
|
+
}, timeoutMs);
|
|
136
|
+
// Collect stdout
|
|
137
|
+
proc.stdout.on('data', (data) => {
|
|
138
|
+
const text = data.toString();
|
|
139
|
+
output += text;
|
|
140
|
+
// Check for context overflow
|
|
141
|
+
for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
|
|
142
|
+
if (pattern.test(text)) {
|
|
143
|
+
contextOverflow = true;
|
|
144
|
+
logger.warn('Context overflow detected');
|
|
145
|
+
proc.kill('SIGTERM');
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// Collect stderr
|
|
151
|
+
proc.stderr.on('data', (data) => {
|
|
152
|
+
stderr += data.toString();
|
|
153
|
+
});
|
|
154
|
+
proc.on('close', (exitCode) => {
|
|
155
|
+
clearTimeout(timeoutHandle);
|
|
156
|
+
this.activeProcess = null;
|
|
157
|
+
if (stderr) {
|
|
158
|
+
logger.debug(`Claude stderr: ${stderr}`);
|
|
159
|
+
}
|
|
160
|
+
resolve({
|
|
161
|
+
output,
|
|
162
|
+
exitCode: exitCode ?? (this.killed ? 130 : 1),
|
|
163
|
+
timedOut,
|
|
164
|
+
contextOverflow,
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Run Claude non-interactively with verbose output to stdout.
|
|
171
|
+
* Uses child_process.spawn with -p flag for prompt (like ralphy).
|
|
172
|
+
*
|
|
173
|
+
* TIMEOUT BEHAVIOR:
|
|
174
|
+
* - The timeout is applied per individual call to this method
|
|
175
|
+
* - Each call gets a fresh timeout - elapsed time is NOT shared between calls
|
|
176
|
+
* - When used with retries (in do.ts), each retry attempt gets its own fresh timeout
|
|
177
|
+
* - Timeout includes all time Claude is running, including context building
|
|
178
|
+
* - Default timeout is 60 minutes if not specified
|
|
179
|
+
*/
|
|
180
|
+
async runVerbose(prompt, options = {}) {
|
|
181
|
+
const { timeout = 60, cwd = process.cwd() } = options;
|
|
182
|
+
// Ensure timeout is a positive number, fallback to 60 minutes
|
|
183
|
+
const validatedTimeout = Number(timeout) > 0 ? Number(timeout) : 60;
|
|
184
|
+
const timeoutMs = validatedTimeout * 60 * 1000;
|
|
185
|
+
return new Promise((resolve) => {
|
|
186
|
+
let output = '';
|
|
187
|
+
let stderr = '';
|
|
188
|
+
let timedOut = false;
|
|
189
|
+
let contextOverflow = false;
|
|
190
|
+
const claudePath = getClaudePath();
|
|
191
|
+
logger.debug(`Starting Claude execution session (verbose) with model: ${this.model}`);
|
|
192
|
+
logger.debug(`Prompt length: ${prompt.length}, timeout: ${timeoutMs}ms, cwd: ${cwd}`);
|
|
193
|
+
logger.debug(`Claude path: ${claudePath}`);
|
|
194
|
+
logger.debug('Spawning process...');
|
|
195
|
+
// Use --append-system-prompt to add RAF instructions to system prompt
|
|
196
|
+
// This gives RAF instructions stronger precedence than passing as user message
|
|
197
|
+
// --dangerously-skip-permissions bypasses interactive prompts
|
|
198
|
+
// -p enables print mode (non-interactive)
|
|
199
|
+
const proc = spawn(claudePath, [
|
|
200
|
+
'--dangerously-skip-permissions',
|
|
201
|
+
'--model',
|
|
202
|
+
this.model,
|
|
203
|
+
'--append-system-prompt',
|
|
204
|
+
prompt,
|
|
205
|
+
'-p',
|
|
206
|
+
'Execute the task as described in the system prompt.',
|
|
207
|
+
], {
|
|
208
|
+
cwd,
|
|
209
|
+
env: process.env,
|
|
210
|
+
stdio: ['ignore', 'pipe', 'pipe'], // no stdin needed
|
|
211
|
+
});
|
|
212
|
+
// Track this process
|
|
213
|
+
this.activeProcess = proc;
|
|
214
|
+
logger.debug('Process spawned');
|
|
215
|
+
// Set up timeout
|
|
216
|
+
const timeoutHandle = setTimeout(() => {
|
|
217
|
+
timedOut = true;
|
|
218
|
+
logger.warn('Claude session timed out');
|
|
219
|
+
proc.kill('SIGTERM');
|
|
220
|
+
}, timeoutMs);
|
|
221
|
+
// Collect and display stdout
|
|
222
|
+
let dataReceived = false;
|
|
223
|
+
proc.stdout.on('data', (data) => {
|
|
224
|
+
if (!dataReceived) {
|
|
225
|
+
logger.debug('First data chunk received');
|
|
226
|
+
dataReceived = true;
|
|
227
|
+
}
|
|
228
|
+
const text = data.toString();
|
|
229
|
+
output += text;
|
|
230
|
+
process.stdout.write(text);
|
|
231
|
+
// Check for context overflow
|
|
232
|
+
for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
|
|
233
|
+
if (pattern.test(text)) {
|
|
234
|
+
contextOverflow = true;
|
|
235
|
+
logger.warn('Context overflow detected');
|
|
236
|
+
proc.kill('SIGTERM');
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
// Collect stderr
|
|
242
|
+
proc.stderr.on('data', (data) => {
|
|
243
|
+
stderr += data.toString();
|
|
244
|
+
});
|
|
245
|
+
proc.on('close', (exitCode) => {
|
|
246
|
+
clearTimeout(timeoutHandle);
|
|
247
|
+
this.activeProcess = null;
|
|
248
|
+
logger.debug(`Claude exited with code ${exitCode}, output length: ${output.length}, timedOut: ${timedOut}, contextOverflow: ${contextOverflow}`);
|
|
249
|
+
if (stderr) {
|
|
250
|
+
logger.debug(`Claude stderr: ${stderr}`);
|
|
251
|
+
}
|
|
252
|
+
resolve({
|
|
253
|
+
output,
|
|
254
|
+
exitCode: exitCode ?? (this.killed ? 130 : 1),
|
|
255
|
+
timedOut,
|
|
256
|
+
contextOverflow,
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Kill the active Claude process gracefully.
|
|
263
|
+
*/
|
|
264
|
+
kill() {
|
|
265
|
+
if (this.activeProcess) {
|
|
266
|
+
this.killed = true;
|
|
267
|
+
// Send Ctrl+C first for graceful shutdown (only for PTY processes)
|
|
268
|
+
// ChildProcess from spawn() doesn't have write(), only PTY does
|
|
269
|
+
try {
|
|
270
|
+
if (typeof this.activeProcess.write === 'function') {
|
|
271
|
+
this.activeProcess.write('\x03');
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// Ignore write errors - process may already be closing
|
|
276
|
+
}
|
|
277
|
+
// Force kill after 5 seconds if still running
|
|
278
|
+
setTimeout(() => {
|
|
279
|
+
if (this.activeProcess) {
|
|
280
|
+
try {
|
|
281
|
+
this.activeProcess.kill();
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
// Ignore kill errors - process may already be dead
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}, 5000);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Check if a process is currently running.
|
|
292
|
+
*/
|
|
293
|
+
isRunning() {
|
|
294
|
+
return this.activeProcess !== null;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=claude-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-runner.js","sourceRoot":"","sources":["../../src/core/claude-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open the user's preferred editor and return the content they wrote.
|
|
3
|
+
*/
|
|
4
|
+
export declare function openEditor(initialContent?: string): Promise<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Returns initial content for the project description editor.
|
|
7
|
+
* Opens with an empty file for a clean user experience.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getInputTemplate(): string;
|
|
10
|
+
//# sourceMappingURL=editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/core/editor.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,wBAAsB,UAAU,CAAC,cAAc,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C7E;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import * as os from 'node:os';
|
|
5
|
+
import { getEditor } from '../utils/config.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Escape a file path for shell usage.
|
|
9
|
+
*/
|
|
10
|
+
function escapeShellPath(filePath) {
|
|
11
|
+
// Use single quotes and escape any existing single quotes
|
|
12
|
+
return `'${filePath.replace(/'/g, "'\\''")}'`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Open the user's preferred editor and return the content they wrote.
|
|
16
|
+
*/
|
|
17
|
+
export async function openEditor(initialContent = '') {
|
|
18
|
+
const editor = getEditor();
|
|
19
|
+
const tempDir = os.tmpdir();
|
|
20
|
+
const tempFile = path.join(tempDir, `raf-input-${Date.now()}.md`);
|
|
21
|
+
// Write initial content if any
|
|
22
|
+
fs.writeFileSync(tempFile, initialContent);
|
|
23
|
+
// Build shell command with properly escaped file path
|
|
24
|
+
// This handles editors like "code --wait" or "vim" uniformly
|
|
25
|
+
const shellCommand = `${editor} ${escapeShellPath(tempFile)}`;
|
|
26
|
+
logger.debug(`Opening editor: ${shellCommand}`);
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
// Use shell: true with the full command as a single string
|
|
29
|
+
// This correctly handles editors with arguments (e.g., "code --wait")
|
|
30
|
+
const editorProcess = spawn(shellCommand, [], {
|
|
31
|
+
stdio: 'inherit',
|
|
32
|
+
shell: true,
|
|
33
|
+
});
|
|
34
|
+
editorProcess.on('error', (error) => {
|
|
35
|
+
cleanupTempFile(tempFile);
|
|
36
|
+
reject(new Error(`Failed to open editor: ${error.message}`));
|
|
37
|
+
});
|
|
38
|
+
editorProcess.on('exit', (code) => {
|
|
39
|
+
// Read the file content regardless of exit code
|
|
40
|
+
// Many editors (vim included) may exit with non-zero for various benign reasons
|
|
41
|
+
try {
|
|
42
|
+
const content = fs.readFileSync(tempFile, 'utf-8');
|
|
43
|
+
cleanupTempFile(tempFile);
|
|
44
|
+
// Only treat as error if file is empty/unchanged AND exit code is non-zero
|
|
45
|
+
// This distinguishes between "user cancelled" and "editor failed"
|
|
46
|
+
if (code !== 0 && content === initialContent) {
|
|
47
|
+
reject(new Error(`Editor exited with code ${code}`));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
resolve(content);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
cleanupTempFile(tempFile);
|
|
54
|
+
reject(new Error(`Failed to read editor content: ${error}`));
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Safely remove temp file, ignoring errors if file doesn't exist.
|
|
61
|
+
*/
|
|
62
|
+
function cleanupTempFile(filePath) {
|
|
63
|
+
try {
|
|
64
|
+
fs.unlinkSync(filePath);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore errors - file may already be deleted
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns initial content for the project description editor.
|
|
72
|
+
* Opens with an empty file for a clean user experience.
|
|
73
|
+
*/
|
|
74
|
+
export function getInputTemplate() {
|
|
75
|
+
return '';
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/core/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,0DAA0D;IAC1D,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,iBAAyB,EAAE;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAElE,+BAA+B;IAC/B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE3C,sDAAsD;IACtD,6DAA6D;IAC7D,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,2DAA2D;QAC3D,sEAAsE;QACtE,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE;YAC5C,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,gDAAgD;YAChD,gFAAgF;YAChF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAE1B,2EAA2E;gBAC3E,kEAAkE;gBAClE,IAAI,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;oBAC7C,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrD,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure types that can be detected programmatically without using the API.
|
|
3
|
+
*/
|
|
4
|
+
export type ProgrammaticFailureType = 'api_error' | 'rate_limit' | 'timeout' | 'context_overflow';
|
|
5
|
+
/**
|
|
6
|
+
* Result of analyzing task failure.
|
|
7
|
+
*/
|
|
8
|
+
export interface FailureAnalysisResult {
|
|
9
|
+
failureReason: string;
|
|
10
|
+
analysis: string;
|
|
11
|
+
suggestedFix: string;
|
|
12
|
+
relevantOutput: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Detect if the failure is a known programmatic failure type.
|
|
16
|
+
* Returns null if the failure type requires AI analysis.
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectProgrammaticFailure(output: string, failureReason: string): ProgrammaticFailureType | null;
|
|
19
|
+
/**
|
|
20
|
+
* Generate a programmatic failure report for known failure types.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateProgrammaticReport(failureType: ProgrammaticFailureType, _failureReason: string, output: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Analyze a failure using Claude (Sonnet/Haiku) and generate a structured report.
|
|
25
|
+
* Uses a fast model for cost efficiency.
|
|
26
|
+
*/
|
|
27
|
+
export declare function analyzeFailure(output: string, failureReason: string, taskId: string, timeoutMs?: number): Promise<string>;
|
|
28
|
+
//# sourceMappingURL=failure-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-analyzer.d.ts","sourceRoot":"","sources":["../../src/core/failure-analyzer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B,WAAW,GACX,YAAY,GACZ,SAAS,GACT,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAoCD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,uBAAuB,GAAG,IAAI,CA8BhC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,uBAAuB,EACpC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAsFR;AAiCD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
|