rafcode 2.5.1-0 → 3.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.
Files changed (557) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/CLAUDE.md +7 -345
  3. package/RAF/{aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md → 13-dependencies-watchdog/plans/2-update-planning-prompts.md} +1 -1
  4. package/RAF/{aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md → 13-dependencies-watchdog/plans/3-parse-dependencies-update-state.md} +1 -1
  5. package/RAF/{aaaabn-dependencies-watchdog/plans/04-implement-dependency-checking-in-do.md → 13-dependencies-watchdog/plans/4-implement-dependency-checking-in-do.md} +1 -1
  6. package/RAF/{aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md → 13-dependencies-watchdog/plans/5-update-execution-prompts.md} +1 -1
  7. package/RAF/{aaaabn-dependencies-watchdog/plans/06-add-tests.md → 13-dependencies-watchdog/plans/6-add-tests.md} +1 -1
  8. package/RAF/{aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md → 17-decision-vault/plans/2-integrate-commit-into-plan.md} +1 -1
  9. package/RAF/{aaaabr-decision-vault/plans/03-add-tests-for-planning-commit.md → 17-decision-vault/plans/3-add-tests-for-planning-commit.md} +1 -1
  10. package/RAF/{aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md → 19-verbose-chronicle/plans/4-commit-verification-before-halt.md} +1 -1
  11. package/RAF/{aaaacu-worktree-weaver/plans/02-worktree-plan-command.md → 20-worktree-weaver/plans/2-worktree-plan-command.md} +1 -1
  12. package/RAF/{aaaacu-worktree-weaver/plans/03-worktree-do-command.md → 20-worktree-weaver/plans/3-worktree-do-command.md} +1 -1
  13. package/RAF/{aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md → 20-worktree-weaver/plans/4-auto-merge-and-cleanup.md} +1 -1
  14. package/RAF/{aaaacu-worktree-weaver/plans/05-worktree-tests.md → 20-worktree-weaver/plans/5-worktree-tests.md} +1 -1
  15. package/RAF/{aaaacu-worktree-weaver/plans/06-update-documentation.md → 20-worktree-weaver/plans/6-update-documentation.md} +1 -1
  16. package/RAF/{aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md → 21-trim-the-fat/plans/3-commit-artifacts-on-amend.md} +1 -1
  17. package/RAF/{aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md → 21-trim-the-fat/plans/4-worktree-aware-exit-messages.md} +1 -1
  18. package/RAF/{aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md → 22-prune-cycle/plans/2-cleanup-worktree-on-success.md} +1 -1
  19. package/RAF/{aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md → 22-prune-cycle/plans/3-amend-recreate-worktree.md} +1 -1
  20. package/RAF/{aaaacx-epoch-shift/plans/02-update-pattern-matching.md → 23-epoch-shift/plans/2-update-pattern-matching.md} +1 -1
  21. package/RAF/{aaaacx-epoch-shift/plans/03-update-tests.md → 23-epoch-shift/plans/3-update-tests.md} +1 -1
  22. package/RAF/{aaaacx-epoch-shift/plans/04-update-documentation.md → 23-epoch-shift/plans/4-update-documentation.md} +1 -1
  23. package/RAF/{ahmpro-merge-guardian/plans/003-worktree-pr-creation.md → 24-merge-guardian/plans/3-worktree-pr-creation.md} +1 -1
  24. package/RAF/{ahmpro-merge-guardian/plans/004-post-execution-picker.md → 24-merge-guardian/plans/4-post-execution-picker.md} +1 -1
  25. package/RAF/{ahnbcu-letterjam/plans/02-update-tests.md → 25-letterjam/plans/2-update-tests.md} +1 -1
  26. package/RAF/{ahnbcu-letterjam/plans/03-migrate-command.md → 25-letterjam/plans/3-migrate-command.md} +1 -1
  27. package/RAF/{ahnbcu-letterjam/plans/04-update-documentation.md → 25-letterjam/plans/4-update-documentation.md} +1 -1
  28. package/RAF/{ahnwrk-worktree-weaver/plans/04-fix-pr-description.md → 26-worktree-weaver/plans/4-fix-pr-description.md} +1 -1
  29. package/RAF/{ahrren-turbo-finder/plans/02-medium-effort-do.md → 27-turbo-finder/plans/2-medium-effort-do.md} +1 -1
  30. package/RAF/{ahslfe-config-wizard/plans/02-refactor-codebase-to-use-config.md → 28-config-wizard/plans/2-refactor-codebase-to-use-config.md} +1 -1
  31. package/RAF/{ahslfe-config-wizard/plans/03-create-config-documentation.md → 28-config-wizard/plans/3-create-config-documentation.md} +1 -1
  32. package/RAF/{ahslfe-config-wizard/plans/04-implement-raf-config-command.md → 28-config-wizard/plans/4-implement-raf-config-command.md} +1 -1
  33. package/RAF/{ahslfe-config-wizard/plans/05-update-claude-md.md → 28-config-wizard/plans/5-update-claude-md.md} +1 -1
  34. package/RAF/{ahstvo-token-tracker/plans/03-unify-stream-json-execution.md → 29-token-tracker/plans/3-unify-stream-json-execution.md} +1 -1
  35. package/RAF/{ahstvo-token-tracker/plans/04-token-tracking-cost-calculation.md → 29-token-tracker/plans/4-token-tracking-cost-calculation.md} +1 -1
  36. package/RAF/{ahstvo-token-tracker/plans/05-token-cost-console-reporting.md → 29-token-tracker/plans/5-token-cost-console-reporting.md} +1 -1
  37. package/RAF/{ahstvo-token-tracker/plans/06-runtime-verbose-toggle.md → 29-token-tracker/plans/6-runtime-verbose-toggle.md} +1 -1
  38. package/RAF/{ahtahs-token-reaper/plans/02-accumulate-usage-in-retry-loop.md → 30-token-reaper/plans/2-accumulate-usage-in-retry-loop.md} +1 -1
  39. package/RAF/{ahtahs-token-reaper/plans/03-per-attempt-display-formatting.md → 30-token-reaper/plans/3-per-attempt-display-formatting.md} +1 -1
  40. package/RAF/{ahvrih-rate-forge/plans/03-rate-limit-estimation.md → 31-rate-forge/plans/3-rate-limit-estimation.md} +1 -1
  41. package/RAF/{ahvrih-rate-forge/plans/06-sync-readme-with-codebase.md → 31-rate-forge/plans/6-sync-readme-with-codebase.md} +1 -1
  42. package/RAF/{ahvrih-rate-forge/plans/08-plan-execution-metadata.md → 31-rate-forge/plans/8-plan-execution-metadata.md} +1 -1
  43. package/RAF/{ahwidh-quick-fix-gremlin/plans/06-sync-worktree-branch-before-execution.md → 32-quick-fix-gremlin/plans/6-sync-worktree-branch-before-execution.md} +1 -1
  44. package/RAF/{ahwqwq-model-whisperer/plans/03-add-plan-resume-flag.md → 33-model-whisperer/plans/3-add-plan-resume-flag.md} +1 -1
  45. package/RAF/{ahwvrz-legacy-sunset/plans/02-fix-resume-worktree-resolution.md → 34-legacy-sunset/plans/2-fix-resume-worktree-resolution.md} +1 -1
  46. package/RAF/{ahwzmc-echo-forge/plans/03-update-readme.md → 35-echo-forge/plans/3-update-readme.md} +1 -1
  47. package/RAF/37-flux-weave/decisions.md +22 -0
  48. package/RAF/37-flux-weave/input.md +4 -0
  49. package/RAF/37-flux-weave/outcomes/1-numeric-project-ids.md +32 -0
  50. package/RAF/37-flux-weave/outcomes/2-numeric-task-ids.md +34 -0
  51. package/RAF/37-flux-weave/outcomes/3-amend-commit-without-new-plans.md +23 -0
  52. package/RAF/37-flux-weave/outcomes/4-auto-detect-existing-project.md +30 -0
  53. package/RAF/37-flux-weave/plans/1-numeric-project-ids.md +75 -0
  54. package/RAF/37-flux-weave/plans/2-numeric-task-ids.md +65 -0
  55. package/RAF/37-flux-weave/plans/3-amend-commit-without-new-plans.md +54 -0
  56. package/RAF/37-flux-weave/plans/4-auto-detect-existing-project.md +52 -0
  57. package/RAF/38-dual-wielder/decisions.md +35 -0
  58. package/RAF/38-dual-wielder/input.md +8 -0
  59. package/RAF/38-dual-wielder/outcomes/1-config-schema-provider-types.md +47 -0
  60. package/RAF/38-dual-wielder/outcomes/2-abstract-cli-runner.md +33 -0
  61. package/RAF/38-dual-wielder/outcomes/3-implement-codex-runner.md +38 -0
  62. package/RAF/38-dual-wielder/outcomes/4-update-prompts-llm-agnostic.md +50 -0
  63. package/RAF/38-dual-wielder/outcomes/5-update-readme-docs.md +33 -0
  64. package/RAF/38-dual-wielder/outcomes/6-do-unified-project-scanning.md +25 -0
  65. package/RAF/38-dual-wielder/outcomes/7-fix-plan-amend-automode.md +28 -0
  66. package/RAF/38-dual-wielder/plans/1-config-schema-provider-types.md +90 -0
  67. package/RAF/38-dual-wielder/plans/2-abstract-cli-runner.md +76 -0
  68. package/RAF/38-dual-wielder/plans/3-implement-codex-runner.md +94 -0
  69. package/RAF/38-dual-wielder/plans/4-update-prompts-llm-agnostic.md +70 -0
  70. package/RAF/38-dual-wielder/plans/5-update-readme-docs.md +52 -0
  71. package/RAF/38-dual-wielder/plans/6-do-unified-project-scanning.md +40 -0
  72. package/RAF/38-dual-wielder/plans/7-fix-plan-amend-automode.md +51 -0
  73. package/README.md +57 -10
  74. package/dist/commands/config.js +7 -7
  75. package/dist/commands/config.js.map +1 -1
  76. package/dist/commands/do.d.ts.map +1 -1
  77. package/dist/commands/do.js +42 -69
  78. package/dist/commands/do.js.map +1 -1
  79. package/dist/commands/plan.d.ts.map +1 -1
  80. package/dist/commands/plan.js +71 -34
  81. package/dist/commands/plan.js.map +1 -1
  82. package/dist/commands/status.js +1 -1
  83. package/dist/commands/status.js.map +1 -1
  84. package/dist/core/claude-runner.d.ts +19 -116
  85. package/dist/core/claude-runner.d.ts.map +1 -1
  86. package/dist/core/claude-runner.js +20 -173
  87. package/dist/core/claude-runner.js.map +1 -1
  88. package/dist/core/codex-runner.d.ts +41 -0
  89. package/dist/core/codex-runner.d.ts.map +1 -0
  90. package/dist/core/codex-runner.js +271 -0
  91. package/dist/core/codex-runner.js.map +1 -0
  92. package/dist/core/completion-detector.d.ts +47 -0
  93. package/dist/core/completion-detector.d.ts.map +1 -0
  94. package/dist/core/completion-detector.js +143 -0
  95. package/dist/core/completion-detector.js.map +1 -0
  96. package/dist/core/failure-analyzer.d.ts +1 -1
  97. package/dist/core/failure-analyzer.js +10 -10
  98. package/dist/core/failure-analyzer.js.map +1 -1
  99. package/dist/core/pull-request.d.ts +4 -4
  100. package/dist/core/pull-request.js +11 -11
  101. package/dist/core/pull-request.js.map +1 -1
  102. package/dist/core/runner-factory.d.ts +12 -0
  103. package/dist/core/runner-factory.d.ts.map +1 -0
  104. package/dist/core/runner-factory.js +30 -0
  105. package/dist/core/runner-factory.js.map +1 -0
  106. package/dist/core/runner-interface.d.ts +14 -0
  107. package/dist/core/runner-interface.d.ts.map +1 -0
  108. package/dist/core/runner-interface.js +2 -0
  109. package/dist/core/runner-interface.js.map +1 -0
  110. package/dist/core/runner-types.d.ts +73 -0
  111. package/dist/core/runner-types.d.ts.map +1 -0
  112. package/dist/core/runner-types.js +2 -0
  113. package/dist/core/runner-types.js.map +1 -0
  114. package/dist/core/shutdown-handler.d.ts +8 -4
  115. package/dist/core/shutdown-handler.d.ts.map +1 -1
  116. package/dist/core/shutdown-handler.js +14 -8
  117. package/dist/core/shutdown-handler.js.map +1 -1
  118. package/dist/core/state-derivation.d.ts +2 -2
  119. package/dist/core/state-derivation.d.ts.map +1 -1
  120. package/dist/core/state-derivation.js +10 -13
  121. package/dist/core/state-derivation.js.map +1 -1
  122. package/dist/core/worktree.d.ts +1 -1
  123. package/dist/core/worktree.d.ts.map +1 -1
  124. package/dist/core/worktree.js +14 -16
  125. package/dist/core/worktree.js.map +1 -1
  126. package/dist/index.js +1 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/parsers/codex-stream-renderer.d.ts +31 -0
  129. package/dist/parsers/codex-stream-renderer.d.ts.map +1 -0
  130. package/dist/parsers/codex-stream-renderer.js +81 -0
  131. package/dist/parsers/codex-stream-renderer.js.map +1 -0
  132. package/dist/parsers/output-parser.d.ts +2 -2
  133. package/dist/parsers/output-parser.js +2 -2
  134. package/dist/parsers/stream-renderer.d.ts +1 -1
  135. package/dist/parsers/stream-renderer.js +1 -1
  136. package/dist/prompts/amend.d.ts +1 -1
  137. package/dist/prompts/amend.js +6 -6
  138. package/dist/prompts/execution.js +2 -2
  139. package/dist/prompts/execution.js.map +1 -1
  140. package/dist/prompts/planning.d.ts +1 -1
  141. package/dist/prompts/planning.js +12 -12
  142. package/dist/types/config.d.ts +21 -0
  143. package/dist/types/config.d.ts.map +1 -1
  144. package/dist/types/config.js +16 -0
  145. package/dist/types/config.js.map +1 -1
  146. package/dist/ui/project-picker.d.ts.map +1 -1
  147. package/dist/ui/project-picker.js.map +1 -1
  148. package/dist/utils/config.d.ts +24 -6
  149. package/dist/utils/config.d.ts.map +1 -1
  150. package/dist/utils/config.js +155 -15
  151. package/dist/utils/config.js.map +1 -1
  152. package/dist/utils/name-generator.d.ts +2 -2
  153. package/dist/utils/name-generator.js +9 -9
  154. package/dist/utils/name-generator.js.map +1 -1
  155. package/dist/utils/paths.d.ts +27 -51
  156. package/dist/utils/paths.d.ts.map +1 -1
  157. package/dist/utils/paths.js +112 -150
  158. package/dist/utils/paths.js.map +1 -1
  159. package/dist/utils/token-tracker.d.ts +2 -2
  160. package/dist/utils/token-tracker.js +4 -4
  161. package/dist/utils/token-tracker.js.map +1 -1
  162. package/dist/utils/validation.d.ts.map +1 -1
  163. package/dist/utils/validation.js +7 -10
  164. package/dist/utils/validation.js.map +1 -1
  165. package/package.json +1 -1
  166. package/src/commands/config.ts +7 -7
  167. package/src/commands/do.ts +45 -79
  168. package/src/commands/plan.ts +74 -34
  169. package/src/commands/status.ts +1 -1
  170. package/src/core/claude-runner.ts +33 -277
  171. package/src/core/codex-runner.ts +326 -0
  172. package/src/core/completion-detector.ts +177 -0
  173. package/src/core/failure-analyzer.ts +10 -10
  174. package/src/core/pull-request.ts +11 -11
  175. package/src/core/runner-factory.ts +35 -0
  176. package/src/core/runner-interface.ts +14 -0
  177. package/src/core/runner-types.ts +75 -0
  178. package/src/core/shutdown-handler.ts +17 -10
  179. package/src/core/state-derivation.ts +10 -13
  180. package/src/core/worktree.ts +14 -16
  181. package/src/index.ts +1 -1
  182. package/src/parsers/codex-stream-renderer.ts +108 -0
  183. package/src/parsers/output-parser.ts +2 -2
  184. package/src/parsers/stream-renderer.ts +1 -1
  185. package/src/prompts/amend.ts +6 -6
  186. package/src/prompts/config-docs.md +7 -7
  187. package/src/prompts/execution.ts +2 -2
  188. package/src/prompts/planning.ts +12 -12
  189. package/src/types/config.ts +39 -0
  190. package/src/ui/project-picker.ts +1 -0
  191. package/src/utils/config.ts +170 -14
  192. package/src/utils/name-generator.ts +9 -9
  193. package/src/utils/paths.ts +113 -159
  194. package/src/utils/token-tracker.ts +4 -4
  195. package/src/utils/validation.ts +7 -10
  196. package/tests/unit/commit-planning-artifacts-worktree.test.ts +14 -14
  197. package/tests/unit/commit-planning-artifacts.test.ts +40 -40
  198. package/tests/unit/config.test.ts +8 -8
  199. package/tests/unit/dependency-integration.test.ts +96 -96
  200. package/tests/unit/do-blocked-tasks.test.ts +1 -1
  201. package/tests/unit/do-command.test.ts +36 -36
  202. package/tests/unit/do-rerun.test.ts +1 -1
  203. package/tests/unit/execution-prompt.test.ts +62 -62
  204. package/tests/unit/git-stash.test.ts +4 -4
  205. package/tests/unit/paths.test.ts +135 -249
  206. package/tests/unit/plan-command.test.ts +103 -103
  207. package/tests/unit/planning-prompt.test.ts +3 -3
  208. package/tests/unit/project-manager.test.ts +9 -10
  209. package/tests/unit/project-picker.test.ts +74 -74
  210. package/tests/unit/pull-request.test.ts +3 -3
  211. package/tests/unit/state-derivation.test.ts +144 -144
  212. package/tests/unit/status-command.test.ts +71 -103
  213. package/tests/unit/worktree.test.ts +32 -33
  214. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/input.md +0 -0
  215. /package/RAF/{aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md → 1-raf-task-improvements/outcomes/1-add-decisions-folder.md} +0 -0
  216. /package/RAF/{aaaaab-raf-task-improvements/outcomes/02-fix-write-error-on-shutdown.md → 1-raf-task-improvements/outcomes/2-fix-write-error-on-shutdown.md} +0 -0
  217. /package/RAF/{aaaaab-raf-task-improvements/outcomes/03-stash-changes-on-failure.md → 1-raf-task-improvements/outcomes/3-stash-changes-on-failure.md} +0 -0
  218. /package/RAF/{aaaaab-raf-task-improvements/outcomes/04-add-project-name-to-commits.md → 1-raf-task-improvements/outcomes/4-add-project-name-to-commits.md} +0 -0
  219. /package/RAF/{aaaaab-raf-task-improvements/outcomes/05-add-running-time-display.md → 1-raf-task-improvements/outcomes/5-add-running-time-display.md} +0 -0
  220. /package/RAF/{aaaaab-raf-task-improvements/outcomes/06-add-task-name-to-logs.md → 1-raf-task-improvements/outcomes/6-add-task-name-to-logs.md} +0 -0
  221. /package/RAF/{aaaaab-raf-task-improvements/outcomes/07-show-model-at-task-start.md → 1-raf-task-improvements/outcomes/7-show-model-at-task-start.md} +0 -0
  222. /package/RAF/{aaaaab-raf-task-improvements/outcomes/09-remove-editor-placeholder-text.md → 1-raf-task-improvements/outcomes/9-remove-editor-placeholder-text.md} +0 -0
  223. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  224. /package/RAF/{aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md → 1-raf-task-improvements/plans/1-add-decisions-folder.md} +0 -0
  225. /package/RAF/{aaaaab-raf-task-improvements/plans/02-fix-write-error-on-shutdown.md → 1-raf-task-improvements/plans/2-fix-write-error-on-shutdown.md} +0 -0
  226. /package/RAF/{aaaaab-raf-task-improvements/plans/03-stash-changes-on-failure.md → 1-raf-task-improvements/plans/3-stash-changes-on-failure.md} +0 -0
  227. /package/RAF/{aaaaab-raf-task-improvements/plans/04-add-project-name-to-commits.md → 1-raf-task-improvements/plans/4-add-project-name-to-commits.md} +0 -0
  228. /package/RAF/{aaaaab-raf-task-improvements/plans/05-add-running-time-display.md → 1-raf-task-improvements/plans/5-add-running-time-display.md} +0 -0
  229. /package/RAF/{aaaaab-raf-task-improvements/plans/06-add-task-name-to-logs.md → 1-raf-task-improvements/plans/6-add-task-name-to-logs.md} +0 -0
  230. /package/RAF/{aaaaab-raf-task-improvements/plans/09-remove-editor-placeholder-text.md → 1-raf-task-improvements/plans/9-remove-editor-placeholder-text.md} +0 -0
  231. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/decisions.md +0 -0
  232. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/input.md +0 -0
  233. /package/RAF/{aaaabk-outcome-marker-fallback/outcomes/01-outcome-file-marker-fallback.md → 10-outcome-marker-fallback/outcomes/1-outcome-file-marker-fallback.md} +0 -0
  234. /package/RAF/{aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md → 10-outcome-marker-fallback/outcomes/2-creative-project-naming.md} +0 -0
  235. /package/RAF/{aaaabk-outcome-marker-fallback/plans/01-outcome-file-marker-fallback.md → 10-outcome-marker-fallback/plans/1-outcome-file-marker-fallback.md} +0 -0
  236. /package/RAF/{aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md → 10-outcome-marker-fallback/plans/2-creative-project-naming.md} +0 -0
  237. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/decisions.md +0 -0
  238. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/input.md +0 -0
  239. /package/RAF/{aaaabl-do-task-in-commit/outcomes/01-update-execution-prompt.md → 11-do-task-in-commit/outcomes/1-update-execution-prompt.md} +0 -0
  240. /package/RAF/{aaaabl-do-task-in-commit/outcomes/02-update-tests.md → 11-do-task-in-commit/outcomes/2-update-tests.md} +0 -0
  241. /package/RAF/{aaaabl-do-task-in-commit/outcomes/03-update-documentation.md → 11-do-task-in-commit/outcomes/3-update-documentation.md} +0 -0
  242. /package/RAF/{aaaabl-do-task-in-commit/plans/01-update-execution-prompt.md → 11-do-task-in-commit/plans/1-update-execution-prompt.md} +0 -0
  243. /package/RAF/{aaaabl-do-task-in-commit/plans/02-update-tests.md → 11-do-task-in-commit/plans/2-update-tests.md} +0 -0
  244. /package/RAF/{aaaabl-do-task-in-commit/plans/03-update-documentation.md → 11-do-task-in-commit/plans/3-update-documentation.md} +0 -0
  245. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/decisions.md +0 -0
  246. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/input.md +0 -0
  247. /package/RAF/{aaaabm-name-picker-buffet/outcomes/01-name-picker-for-raf-plan.md → 12-name-picker-buffet/outcomes/1-name-picker-for-raf-plan.md} +0 -0
  248. /package/RAF/{aaaabm-name-picker-buffet/outcomes/02-interactive-project-picker-for-raf-do.md → 12-name-picker-buffet/outcomes/2-interactive-project-picker-for-raf-do.md} +0 -0
  249. /package/RAF/{aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md → 12-name-picker-buffet/outcomes/3-raf-status-truncation.md} +0 -0
  250. /package/RAF/{aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md → 12-name-picker-buffet/outcomes/4-failure-reason-details.md} +0 -0
  251. /package/RAF/{aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md → 12-name-picker-buffet/outcomes/5-remove-raf-commits.md} +0 -0
  252. /package/RAF/{aaaabm-name-picker-buffet/outcomes/06-update-execution-prompt-for-commits.md → 12-name-picker-buffet/outcomes/6-update-execution-prompt-for-commits.md} +0 -0
  253. /package/RAF/{aaaabm-name-picker-buffet/outcomes/07-fix-plan-mode-user-prompt.md → 12-name-picker-buffet/outcomes/7-fix-plan-mode-user-prompt.md} +0 -0
  254. /package/RAF/{aaaabm-name-picker-buffet/outcomes/08-add-auto-flag-for-plan-mode.md → 12-name-picker-buffet/outcomes/8-add-auto-flag-for-plan-mode.md} +0 -0
  255. /package/RAF/{aaaabm-name-picker-buffet/plans/01-name-picker-for-raf-plan.md → 12-name-picker-buffet/plans/1-name-picker-for-raf-plan.md} +0 -0
  256. /package/RAF/{aaaabm-name-picker-buffet/plans/02-interactive-project-picker-for-raf-do.md → 12-name-picker-buffet/plans/2-interactive-project-picker-for-raf-do.md} +0 -0
  257. /package/RAF/{aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md → 12-name-picker-buffet/plans/3-raf-status-truncation.md} +0 -0
  258. /package/RAF/{aaaabm-name-picker-buffet/plans/04-failure-reason-details.md → 12-name-picker-buffet/plans/4-failure-reason-details.md} +0 -0
  259. /package/RAF/{aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md → 12-name-picker-buffet/plans/5-remove-raf-commits.md} +0 -0
  260. /package/RAF/{aaaabm-name-picker-buffet/plans/06-update-execution-prompt-for-commits.md → 12-name-picker-buffet/plans/6-update-execution-prompt-for-commits.md} +0 -0
  261. /package/RAF/{aaaabm-name-picker-buffet/plans/07-fix-plan-mode-user-prompt.md → 12-name-picker-buffet/plans/7-fix-plan-mode-user-prompt.md} +0 -0
  262. /package/RAF/{aaaabm-name-picker-buffet/plans/08-add-auto-flag-for-plan-mode.md → 12-name-picker-buffet/plans/8-add-auto-flag-for-plan-mode.md} +0 -0
  263. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/decisions.md +0 -0
  264. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/input.md +0 -0
  265. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md → 13-dependencies-watchdog/outcomes/1-define-dependency-syntax.md} +0 -0
  266. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md → 13-dependencies-watchdog/outcomes/2-update-planning-prompts.md} +0 -0
  267. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md → 13-dependencies-watchdog/outcomes/3-parse-dependencies-update-state.md} +0 -0
  268. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/04-implement-dependency-checking-in-do.md → 13-dependencies-watchdog/outcomes/4-implement-dependency-checking-in-do.md} +0 -0
  269. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md → 13-dependencies-watchdog/outcomes/5-update-execution-prompts.md} +0 -0
  270. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/06-add-tests.md → 13-dependencies-watchdog/outcomes/6-add-tests.md} +0 -0
  271. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md → 13-dependencies-watchdog/outcomes/7-add-act-alias.md} +0 -0
  272. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md → 13-dependencies-watchdog/outcomes/8-add-exit-message.md} +0 -0
  273. /package/RAF/{aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md → 13-dependencies-watchdog/plans/1-define-dependency-syntax.md} +0 -0
  274. /package/RAF/{aaaabn-dependencies-watchdog/plans/07-add-act-alias.md → 13-dependencies-watchdog/plans/7-add-act-alias.md} +0 -0
  275. /package/RAF/{aaaabn-dependencies-watchdog/plans/08-add-exit-message.md → 13-dependencies-watchdog/plans/8-add-exit-message.md} +0 -0
  276. /package/RAF/{aaaabo-watchdog → 14-watchdog}/decisions.md +0 -0
  277. /package/RAF/{aaaabo-watchdog → 14-watchdog}/input.md +0 -0
  278. /package/RAF/{aaaabo-watchdog/outcomes/01-amend-flag-position.md → 14-watchdog/outcomes/1-amend-flag-position.md} +0 -0
  279. /package/RAF/{aaaabo-watchdog/outcomes/02-details-only-on-failure.md → 14-watchdog/outcomes/2-details-only-on-failure.md} +0 -0
  280. /package/RAF/{aaaabo-watchdog/plans/01-amend-flag-position.md → 14-watchdog/plans/1-amend-flag-position.md} +0 -0
  281. /package/RAF/{aaaabo-watchdog/plans/02-details-only-on-failure.md → 14-watchdog/plans/2-details-only-on-failure.md} +0 -0
  282. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/decisions.md +0 -0
  283. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/input.md +0 -0
  284. /package/RAF/{aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md → 15-name-lottery/outcomes/1-auto-pick-project-name.md} +0 -0
  285. /package/RAF/{aaaabp-name-lottery/outcomes/02-mention-plan-files-in-commit.md → 15-name-lottery/outcomes/2-mention-plan-files-in-commit.md} +0 -0
  286. /package/RAF/{aaaabp-name-lottery/outcomes/03-fix-input-md-in-amend-flow.md → 15-name-lottery/outcomes/3-fix-input-md-in-amend-flow.md} +0 -0
  287. /package/RAF/{aaaabp-name-lottery/plans/01-auto-pick-project-name.md → 15-name-lottery/plans/1-auto-pick-project-name.md} +0 -0
  288. /package/RAF/{aaaabp-name-lottery/plans/02-mention-plan-files-in-commit.md → 15-name-lottery/plans/2-mention-plan-files-in-commit.md} +0 -0
  289. /package/RAF/{aaaabp-name-lottery/plans/03-fix-input-md-in-amend-flow.md → 15-name-lottery/plans/3-fix-input-md-in-amend-flow.md} +0 -0
  290. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/decisions.md +0 -0
  291. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/input.md +0 -0
  292. /package/RAF/{aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md → 16-planning-scalpel/outcomes/1-update-git-commit-instructions.md} +0 -0
  293. /package/RAF/{aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md → 16-planning-scalpel/plans/1-update-git-commit-instructions.md} +0 -0
  294. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/decisions.md +0 -0
  295. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/input.md +0 -0
  296. /package/RAF/{aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md → 17-decision-vault/outcomes/1-create-git-commit-utility.md} +0 -0
  297. /package/RAF/{aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md → 17-decision-vault/outcomes/2-integrate-commit-into-plan.md} +0 -0
  298. /package/RAF/{aaaabr-decision-vault/outcomes/03-add-tests-for-planning-commit.md → 17-decision-vault/outcomes/3-add-tests-for-planning-commit.md} +0 -0
  299. /package/RAF/{aaaabr-decision-vault/plans/01-create-git-commit-utility.md → 17-decision-vault/plans/1-create-git-commit-utility.md} +0 -0
  300. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/decisions.md +0 -0
  301. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/input.md +0 -0
  302. /package/RAF/{aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md → 18-workflow-forge/outcomes/1-add-task-number-progress.md} +0 -0
  303. /package/RAF/{aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md → 18-workflow-forge/outcomes/2-update-plan-do-prompts.md} +0 -0
  304. /package/RAF/{aaaabs-workflow-forge/plans/01-add-task-number-progress.md → 18-workflow-forge/plans/1-add-task-number-progress.md} +0 -0
  305. /package/RAF/{aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md → 18-workflow-forge/plans/2-update-plan-do-prompts.md} +0 -0
  306. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/decisions.md +0 -0
  307. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/input.md +0 -0
  308. /package/RAF/{aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md → 19-verbose-chronicle/outcomes/1-amend-iteration-references.md} +0 -0
  309. /package/RAF/{aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md → 19-verbose-chronicle/outcomes/2-verbose-task-name-display.md} +0 -0
  310. /package/RAF/{aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md → 19-verbose-chronicle/outcomes/3-verbose-streaming-fix.md} +0 -0
  311. /package/RAF/{aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md → 19-verbose-chronicle/outcomes/4-commit-verification-before-halt.md} +0 -0
  312. /package/RAF/{aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md → 19-verbose-chronicle/plans/1-amend-iteration-references.md} +0 -0
  313. /package/RAF/{aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md → 19-verbose-chronicle/plans/2-verbose-task-name-display.md} +0 -0
  314. /package/RAF/{aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md → 19-verbose-chronicle/plans/3-verbose-streaming-fix.md} +0 -0
  315. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  316. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/input.md +0 -0
  317. /package/RAF/{aaaaac-raf-task-improvements-execution/outcomes/01-commit-show-model-at-task-start.md → 2-raf-task-improvements-execution/outcomes/1-commit-show-model-at-task-start.md} +0 -0
  318. /package/RAF/{aaaaac-raf-task-improvements-execution/outcomes/02-delete-skipped-plan.md → 2-raf-task-improvements-execution/outcomes/2-delete-skipped-plan.md} +0 -0
  319. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  320. /package/RAF/{aaaaac-raf-task-improvements-execution/plans/01-commit-show-model-at-task-start.md → 2-raf-task-improvements-execution/plans/1-commit-show-model-at-task-start.md} +0 -0
  321. /package/RAF/{aaaaac-raf-task-improvements-execution/plans/02-delete-skipped-plan.md → 2-raf-task-improvements-execution/plans/2-delete-skipped-plan.md} +0 -0
  322. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/decisions.md +0 -0
  323. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/input.md +0 -0
  324. /package/RAF/{aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md → 20-worktree-weaver/outcomes/1-git-worktree-utilities.md} +0 -0
  325. /package/RAF/{aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md → 20-worktree-weaver/outcomes/2-worktree-plan-command.md} +0 -0
  326. /package/RAF/{aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md → 20-worktree-weaver/outcomes/3-worktree-do-command.md} +0 -0
  327. /package/RAF/{aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md → 20-worktree-weaver/outcomes/4-auto-merge-and-cleanup.md} +0 -0
  328. /package/RAF/{aaaacu-worktree-weaver/outcomes/05-worktree-tests.md → 20-worktree-weaver/outcomes/5-worktree-tests.md} +0 -0
  329. /package/RAF/{aaaacu-worktree-weaver/outcomes/06-update-documentation.md → 20-worktree-weaver/outcomes/6-update-documentation.md} +0 -0
  330. /package/RAF/{aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md → 20-worktree-weaver/plans/1-git-worktree-utilities.md} +0 -0
  331. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/decisions.md +0 -0
  332. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/input.md +0 -0
  333. /package/RAF/{aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md → 21-trim-the-fat/outcomes/1-add-worktree-support-to-status.md} +0 -0
  334. /package/RAF/{aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md → 21-trim-the-fat/outcomes/2-remove-multi-project-from-do.md} +0 -0
  335. /package/RAF/{aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md → 21-trim-the-fat/outcomes/3-commit-artifacts-on-amend.md} +0 -0
  336. /package/RAF/{aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md → 21-trim-the-fat/outcomes/4-worktree-aware-exit-messages.md} +0 -0
  337. /package/RAF/{aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md → 21-trim-the-fat/plans/1-add-worktree-support-to-status.md} +0 -0
  338. /package/RAF/{aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md → 21-trim-the-fat/plans/2-remove-multi-project-from-do.md} +0 -0
  339. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/decisions.md +0 -0
  340. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/input.md +0 -0
  341. /package/RAF/{aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md → 22-prune-cycle/outcomes/1-create-worktree-from-branch.md} +0 -0
  342. /package/RAF/{aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md → 22-prune-cycle/outcomes/2-cleanup-worktree-on-success.md} +0 -0
  343. /package/RAF/{aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md → 22-prune-cycle/outcomes/3-amend-recreate-worktree.md} +0 -0
  344. /package/RAF/{aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md → 22-prune-cycle/plans/1-create-worktree-from-branch.md} +0 -0
  345. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/decisions.md +0 -0
  346. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/input.md +0 -0
  347. /package/RAF/{aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md → 23-epoch-shift/outcomes/1-epoch-id-generation.md} +0 -0
  348. /package/RAF/{aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md → 23-epoch-shift/outcomes/2-update-pattern-matching.md} +0 -0
  349. /package/RAF/{aaaacx-epoch-shift/outcomes/03-update-tests.md → 23-epoch-shift/outcomes/3-update-tests.md} +0 -0
  350. /package/RAF/{aaaacx-epoch-shift/outcomes/04-update-documentation.md → 23-epoch-shift/outcomes/4-update-documentation.md} +0 -0
  351. /package/RAF/{aaaacx-epoch-shift/plans/01-epoch-id-generation.md → 23-epoch-shift/plans/1-epoch-id-generation.md} +0 -0
  352. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/decisions.md +0 -0
  353. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/input.md +0 -0
  354. /package/RAF/{ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md → 24-merge-guardian/outcomes/1-fix-amend-worktree-commit.md} +0 -0
  355. /package/RAF/{ahmpro-merge-guardian/outcomes/002-base36-task-ids.md → 24-merge-guardian/outcomes/2-base36-task-ids.md} +0 -0
  356. /package/RAF/{ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md → 24-merge-guardian/outcomes/3-worktree-pr-creation.md} +0 -0
  357. /package/RAF/{ahmpro-merge-guardian/outcomes/004-post-execution-picker.md → 24-merge-guardian/outcomes/4-post-execution-picker.md} +0 -0
  358. /package/RAF/{ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md → 24-merge-guardian/plans/1-fix-amend-worktree-commit.md} +0 -0
  359. /package/RAF/{ahmpro-merge-guardian/plans/002-base36-task-ids.md → 24-merge-guardian/plans/2-base36-task-ids.md} +0 -0
  360. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/decisions.md +0 -0
  361. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/input.md +0 -0
  362. /package/RAF/{ahnbcu-letterjam/outcomes/01-base26-encoding.md → 25-letterjam/outcomes/1-base26-encoding.md} +0 -0
  363. /package/RAF/{ahnbcu-letterjam/outcomes/02-update-tests.md → 25-letterjam/outcomes/2-update-tests.md} +0 -0
  364. /package/RAF/{ahnbcu-letterjam/outcomes/03-migrate-command.md → 25-letterjam/outcomes/3-migrate-command.md} +0 -0
  365. /package/RAF/{ahnbcu-letterjam/outcomes/04-update-documentation.md → 25-letterjam/outcomes/4-update-documentation.md} +0 -0
  366. /package/RAF/{ahnbcu-letterjam/plans/01-base26-encoding.md → 25-letterjam/plans/1-base26-encoding.md} +0 -0
  367. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/decisions.md +0 -0
  368. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/input.md +0 -0
  369. /package/RAF/{ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md → 26-worktree-weaver/outcomes/1-remove-co-authored-by.md} +0 -0
  370. /package/RAF/{ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md → 26-worktree-weaver/outcomes/2-update-task-status-format.md} +0 -0
  371. /package/RAF/{ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md → 26-worktree-weaver/outcomes/3-worktree-auto-discovery.md} +0 -0
  372. /package/RAF/{ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md → 26-worktree-weaver/outcomes/4-fix-pr-description.md} +0 -0
  373. /package/RAF/{ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md → 26-worktree-weaver/plans/1-remove-co-authored-by.md} +0 -0
  374. /package/RAF/{ahnwrk-worktree-weaver/plans/02-update-task-status-format.md → 26-worktree-weaver/plans/2-update-task-status-format.md} +0 -0
  375. /package/RAF/{ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md → 26-worktree-weaver/plans/3-worktree-auto-discovery.md} +0 -0
  376. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/decisions.md +0 -0
  377. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/input.md +0 -0
  378. /package/RAF/{ahrren-turbo-finder/outcomes/01-worktree-auto-detect.md → 27-turbo-finder/outcomes/1-worktree-auto-detect.md} +0 -0
  379. /package/RAF/{ahrren-turbo-finder/outcomes/02-medium-effort-do.md → 27-turbo-finder/outcomes/2-medium-effort-do.md} +0 -0
  380. /package/RAF/{ahrren-turbo-finder/plans/01-worktree-auto-detect.md → 27-turbo-finder/plans/1-worktree-auto-detect.md} +0 -0
  381. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/decisions.md +0 -0
  382. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/input.md +0 -0
  383. /package/RAF/{ahslfe-config-wizard/outcomes/01-define-config-schema.md → 28-config-wizard/outcomes/1-define-config-schema.md} +0 -0
  384. /package/RAF/{ahslfe-config-wizard/outcomes/02-refactor-codebase-to-use-config.md → 28-config-wizard/outcomes/2-refactor-codebase-to-use-config.md} +0 -0
  385. /package/RAF/{ahslfe-config-wizard/outcomes/03-create-config-documentation.md → 28-config-wizard/outcomes/3-create-config-documentation.md} +0 -0
  386. /package/RAF/{ahslfe-config-wizard/outcomes/04-implement-raf-config-command.md → 28-config-wizard/outcomes/4-implement-raf-config-command.md} +0 -0
  387. /package/RAF/{ahslfe-config-wizard/outcomes/05-update-claude-md.md → 28-config-wizard/outcomes/5-update-claude-md.md} +0 -0
  388. /package/RAF/{ahslfe-config-wizard/plans/01-define-config-schema.md → 28-config-wizard/plans/1-define-config-schema.md} +0 -0
  389. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/decisions.md +0 -0
  390. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/input.md +0 -0
  391. /package/RAF/{ahstvo-token-tracker/outcomes/01-full-model-id-support.md → 29-token-tracker/outcomes/1-full-model-id-support.md} +0 -0
  392. /package/RAF/{ahstvo-token-tracker/outcomes/02-name-generation-no-session.md → 29-token-tracker/outcomes/2-name-generation-no-session.md} +0 -0
  393. /package/RAF/{ahstvo-token-tracker/outcomes/03-unify-stream-json-execution.md → 29-token-tracker/outcomes/3-unify-stream-json-execution.md} +0 -0
  394. /package/RAF/{ahstvo-token-tracker/outcomes/04-token-tracking-cost-calculation.md → 29-token-tracker/outcomes/4-token-tracking-cost-calculation.md} +0 -0
  395. /package/RAF/{ahstvo-token-tracker/outcomes/05-token-cost-console-reporting.md → 29-token-tracker/outcomes/5-token-cost-console-reporting.md} +0 -0
  396. /package/RAF/{ahstvo-token-tracker/outcomes/06-runtime-verbose-toggle.md → 29-token-tracker/outcomes/6-runtime-verbose-toggle.md} +0 -0
  397. /package/RAF/{ahstvo-token-tracker/outcomes/07-readme-config-docs.md → 29-token-tracker/outcomes/7-readme-config-docs.md} +0 -0
  398. /package/RAF/{ahstvo-token-tracker/plans/01-full-model-id-support.md → 29-token-tracker/plans/1-full-model-id-support.md} +0 -0
  399. /package/RAF/{ahstvo-token-tracker/plans/02-name-generation-no-session.md → 29-token-tracker/plans/2-name-generation-no-session.md} +0 -0
  400. /package/RAF/{ahstvo-token-tracker/plans/07-readme-config-docs.md → 29-token-tracker/plans/7-readme-config-docs.md} +0 -0
  401. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/decisions/DECISIONS.md +0 -0
  402. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/input.md +0 -0
  403. /package/RAF/{aaaaad-multi-project-execution/outcomes/01-remove-state-json.md → 3-multi-project-execution/outcomes/1-remove-state-json.md} +0 -0
  404. /package/RAF/{aaaaad-multi-project-execution/outcomes/02-update-raf-status.md → 3-multi-project-execution/outcomes/2-update-raf-status.md} +0 -0
  405. /package/RAF/{aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md → 3-multi-project-execution/outcomes/3-simplify-git-logic.md} +0 -0
  406. /package/RAF/{aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md → 3-multi-project-execution/outcomes/4-auto-commit-planning.md} +0 -0
  407. /package/RAF/{aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md → 3-multi-project-execution/outcomes/5-rerun-failed-tasks.md} +0 -0
  408. /package/RAF/{aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md → 3-multi-project-execution/outcomes/6-multi-project-execution.md} +0 -0
  409. /package/RAF/{aaaaad-multi-project-execution/outcomes/07-verify-timeout.md → 3-multi-project-execution/outcomes/7-verify-timeout.md} +0 -0
  410. /package/RAF/{aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md → 3-multi-project-execution/outcomes/8-move-decisions-file.md} +0 -0
  411. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  412. /package/RAF/{aaaaad-multi-project-execution/plans/01-remove-state-json.md → 3-multi-project-execution/plans/1-remove-state-json.md} +0 -0
  413. /package/RAF/{aaaaad-multi-project-execution/plans/02-update-raf-status.md → 3-multi-project-execution/plans/2-update-raf-status.md} +0 -0
  414. /package/RAF/{aaaaad-multi-project-execution/plans/03-simplify-git-logic.md → 3-multi-project-execution/plans/3-simplify-git-logic.md} +0 -0
  415. /package/RAF/{aaaaad-multi-project-execution/plans/04-auto-commit-planning.md → 3-multi-project-execution/plans/4-auto-commit-planning.md} +0 -0
  416. /package/RAF/{aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md → 3-multi-project-execution/plans/5-rerun-failed-tasks.md} +0 -0
  417. /package/RAF/{aaaaad-multi-project-execution/plans/06-multi-project-execution.md → 3-multi-project-execution/plans/6-multi-project-execution.md} +0 -0
  418. /package/RAF/{aaaaad-multi-project-execution/plans/07-verify-timeout.md → 3-multi-project-execution/plans/7-verify-timeout.md} +0 -0
  419. /package/RAF/{aaaaad-multi-project-execution/plans/08-move-decisions-file.md → 3-multi-project-execution/plans/8-move-decisions-file.md} +0 -0
  420. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/decisions.md +0 -0
  421. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/input.md +0 -0
  422. /package/RAF/{ahtahs-token-reaper/outcomes/01-extend-token-tracker-data-model.md → 30-token-reaper/outcomes/1-extend-token-tracker-data-model.md} +0 -0
  423. /package/RAF/{ahtahs-token-reaper/outcomes/02-accumulate-usage-in-retry-loop.md → 30-token-reaper/outcomes/2-accumulate-usage-in-retry-loop.md} +0 -0
  424. /package/RAF/{ahtahs-token-reaper/outcomes/03-per-attempt-display-formatting.md → 30-token-reaper/outcomes/3-per-attempt-display-formatting.md} +0 -0
  425. /package/RAF/{ahtahs-token-reaper/outcomes/04-add-model-name-to-claude-call-logs.md → 30-token-reaper/outcomes/4-add-model-name-to-claude-call-logs.md} +0 -0
  426. /package/RAF/{ahtahs-token-reaper/outcomes/05-handle-invalid-config-in-raf-config.md → 30-token-reaper/outcomes/5-handle-invalid-config-in-raf-config.md} +0 -0
  427. /package/RAF/{ahtahs-token-reaper/outcomes/06-fix-verbose-toggle-timer-display.md → 30-token-reaper/outcomes/6-fix-verbose-toggle-timer-display.md} +0 -0
  428. /package/RAF/{ahtahs-token-reaper/plans/01-extend-token-tracker-data-model.md → 30-token-reaper/plans/1-extend-token-tracker-data-model.md} +0 -0
  429. /package/RAF/{ahtahs-token-reaper/plans/04-add-model-name-to-claude-call-logs.md → 30-token-reaper/plans/4-add-model-name-to-claude-call-logs.md} +0 -0
  430. /package/RAF/{ahtahs-token-reaper/plans/05-handle-invalid-config-in-raf-config.md → 30-token-reaper/plans/5-handle-invalid-config-in-raf-config.md} +0 -0
  431. /package/RAF/{ahtahs-token-reaper/plans/06-fix-verbose-toggle-timer-display.md → 30-token-reaper/plans/6-fix-verbose-toggle-timer-display.md} +0 -0
  432. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/decisions.md +0 -0
  433. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/input.md +0 -0
  434. /package/RAF/{ahvrih-rate-forge/outcomes/01-remove-claude-command-config.md → 31-rate-forge/outcomes/1-remove-claude-command-config.md} +0 -0
  435. /package/RAF/{ahvrih-rate-forge/outcomes/02-fix-mixed-attempt-cost.md → 31-rate-forge/outcomes/2-fix-mixed-attempt-cost.md} +0 -0
  436. /package/RAF/{ahvrih-rate-forge/outcomes/03-rate-limit-estimation.md → 31-rate-forge/outcomes/3-rate-limit-estimation.md} +0 -0
  437. /package/RAF/{ahvrih-rate-forge/outcomes/04-show-version-in-do-logs.md → 31-rate-forge/outcomes/4-show-version-in-do-logs.md} +0 -0
  438. /package/RAF/{ahvrih-rate-forge/outcomes/05-sync-main-before-worktree.md → 31-rate-forge/outcomes/5-sync-main-before-worktree.md} +0 -0
  439. /package/RAF/{ahvrih-rate-forge/outcomes/06-sync-readme-with-codebase.md → 31-rate-forge/outcomes/6-sync-readme-with-codebase.md} +0 -0
  440. /package/RAF/{ahvrih-rate-forge/outcomes/07-no-session-persistence.md → 31-rate-forge/outcomes/7-no-session-persistence.md} +0 -0
  441. /package/RAF/{ahvrih-rate-forge/outcomes/08-plan-execution-metadata.md → 31-rate-forge/outcomes/8-plan-execution-metadata.md} +0 -0
  442. /package/RAF/{ahvrih-rate-forge/plans/01-remove-claude-command-config.md → 31-rate-forge/plans/1-remove-claude-command-config.md} +0 -0
  443. /package/RAF/{ahvrih-rate-forge/plans/02-fix-mixed-attempt-cost.md → 31-rate-forge/plans/2-fix-mixed-attempt-cost.md} +0 -0
  444. /package/RAF/{ahvrih-rate-forge/plans/04-show-version-in-do-logs.md → 31-rate-forge/plans/4-show-version-in-do-logs.md} +0 -0
  445. /package/RAF/{ahvrih-rate-forge/plans/05-sync-main-before-worktree.md → 31-rate-forge/plans/5-sync-main-before-worktree.md} +0 -0
  446. /package/RAF/{ahvrih-rate-forge/plans/07-no-session-persistence.md → 31-rate-forge/plans/7-no-session-persistence.md} +0 -0
  447. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/decisions.md +0 -0
  448. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/input.md +0 -0
  449. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/01-fix-name-generation-prompt.md → 32-quick-fix-gremlin/outcomes/1-fix-name-generation-prompt.md} +0 -0
  450. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/02-fix-amend-commit-scope.md → 32-quick-fix-gremlin/outcomes/2-fix-amend-commit-scope.md} +0 -0
  451. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/03-fix-diverged-main-branch-sync.md → 32-quick-fix-gremlin/outcomes/3-fix-diverged-main-branch-sync.md} +0 -0
  452. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/04-wire-rate-limit-to-do-command.md → 32-quick-fix-gremlin/outcomes/4-wire-rate-limit-to-do-command.md} +0 -0
  453. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/05-add-config-get-set-flags.md → 32-quick-fix-gremlin/outcomes/5-add-config-get-set-flags.md} +0 -0
  454. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/06-sync-worktree-branch-before-execution.md → 32-quick-fix-gremlin/outcomes/6-sync-worktree-branch-before-execution.md} +0 -0
  455. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/07-update-frontmatter-format.md → 32-quick-fix-gremlin/outcomes/7-update-frontmatter-format.md} +0 -0
  456. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/08-remove-plan-token-report.md → 32-quick-fix-gremlin/outcomes/8-remove-plan-token-report.md} +0 -0
  457. /package/RAF/{ahwidh-quick-fix-gremlin/plans/01-fix-name-generation-prompt.md → 32-quick-fix-gremlin/plans/1-fix-name-generation-prompt.md} +0 -0
  458. /package/RAF/{ahwidh-quick-fix-gremlin/plans/02-fix-amend-commit-scope.md → 32-quick-fix-gremlin/plans/2-fix-amend-commit-scope.md} +0 -0
  459. /package/RAF/{ahwidh-quick-fix-gremlin/plans/03-fix-diverged-main-branch-sync.md → 32-quick-fix-gremlin/plans/3-fix-diverged-main-branch-sync.md} +0 -0
  460. /package/RAF/{ahwidh-quick-fix-gremlin/plans/04-wire-rate-limit-to-do-command.md → 32-quick-fix-gremlin/plans/4-wire-rate-limit-to-do-command.md} +0 -0
  461. /package/RAF/{ahwidh-quick-fix-gremlin/plans/05-add-config-get-set-flags.md → 32-quick-fix-gremlin/plans/5-add-config-get-set-flags.md} +0 -0
  462. /package/RAF/{ahwidh-quick-fix-gremlin/plans/07-update-frontmatter-format.md → 32-quick-fix-gremlin/plans/7-update-frontmatter-format.md} +0 -0
  463. /package/RAF/{ahwidh-quick-fix-gremlin/plans/08-remove-plan-token-report.md → 32-quick-fix-gremlin/plans/8-remove-plan-token-report.md} +0 -0
  464. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/decisions.md +0 -0
  465. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/input.md +0 -0
  466. /package/RAF/{ahwqwq-model-whisperer/outcomes/01-show-model-on-task-line.md → 33-model-whisperer/outcomes/1-show-model-on-task-line.md} +0 -0
  467. /package/RAF/{ahwqwq-model-whisperer/outcomes/02-use-claude-cost-estimation.md → 33-model-whisperer/outcomes/2-use-claude-cost-estimation.md} +0 -0
  468. /package/RAF/{ahwqwq-model-whisperer/outcomes/03-add-plan-resume-flag.md → 33-model-whisperer/outcomes/3-add-plan-resume-flag.md} +0 -0
  469. /package/RAF/{ahwqwq-model-whisperer/plans/01-show-model-on-task-line.md → 33-model-whisperer/plans/1-show-model-on-task-line.md} +0 -0
  470. /package/RAF/{ahwqwq-model-whisperer/plans/02-use-claude-cost-estimation.md → 33-model-whisperer/plans/2-use-claude-cost-estimation.md} +0 -0
  471. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/decisions.md +0 -0
  472. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/input.md +0 -0
  473. /package/RAF/{ahwvrz-legacy-sunset/outcomes/01-remove-migrate-command.md → 34-legacy-sunset/outcomes/1-remove-migrate-command.md} +0 -0
  474. /package/RAF/{ahwvrz-legacy-sunset/outcomes/02-fix-resume-worktree-resolution.md → 34-legacy-sunset/outcomes/2-fix-resume-worktree-resolution.md} +0 -0
  475. /package/RAF/{ahwvrz-legacy-sunset/plans/01-remove-migrate-command.md → 34-legacy-sunset/plans/1-remove-migrate-command.md} +0 -0
  476. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/decisions.md +0 -0
  477. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/input.md +0 -0
  478. /package/RAF/{ahwzmc-echo-forge/outcomes/01-change-low-effort-default-to-sonnet.md → 35-echo-forge/outcomes/1-change-low-effort-default-to-sonnet.md} +0 -0
  479. /package/RAF/{ahwzmc-echo-forge/outcomes/02-add-no-worktree-flag.md → 35-echo-forge/outcomes/2-add-no-worktree-flag.md} +0 -0
  480. /package/RAF/{ahwzmc-echo-forge/outcomes/03-update-readme.md → 35-echo-forge/outcomes/3-update-readme.md} +0 -0
  481. /package/RAF/{ahwzmc-echo-forge/plans/01-change-low-effort-default-to-sonnet.md → 35-echo-forge/plans/1-change-low-effort-default-to-sonnet.md} +0 -0
  482. /package/RAF/{ahwzmc-echo-forge/plans/02-add-no-worktree-flag.md → 35-echo-forge/plans/2-add-no-worktree-flag.md} +0 -0
  483. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/decisions.md +0 -0
  484. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/input.md +0 -0
  485. /package/RAF/{aifqwf-fix-amend-commit-again/outcomes/01-update-effort-mapping-defaults.md → 36-fix-amend-commit-again/outcomes/1-update-effort-mapping-defaults.md} +0 -0
  486. /package/RAF/{aifqwf-fix-amend-commit-again/outcomes/02-fix-amend-worktree-commit.md → 36-fix-amend-commit-again/outcomes/2-fix-amend-worktree-commit.md} +0 -0
  487. /package/RAF/{aifqwf-fix-amend-commit-again/plans/01-update-effort-mapping-defaults.md → 36-fix-amend-commit-again/plans/1-update-effort-mapping-defaults.md} +0 -0
  488. /package/RAF/{aifqwf-fix-amend-commit-again/plans/02-fix-amend-worktree-commit.md → 36-fix-amend-commit-again/plans/2-fix-amend-worktree-commit.md} +0 -0
  489. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/decisions.md +0 -0
  490. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/input.md +0 -0
  491. /package/RAF/{aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md → 4-task-naming-optimization/outcomes/1-remove-summary-file.md} +0 -0
  492. /package/RAF/{aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md → 4-task-naming-optimization/outcomes/2-base36-project-numbering.md} +0 -0
  493. /package/RAF/{aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md → 4-task-naming-optimization/outcomes/3-improve-haiku-prompt.md} +0 -0
  494. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  495. /package/RAF/{aaaaae-task-naming-optimization/plans/01-remove-summary-file.md → 4-task-naming-optimization/plans/1-remove-summary-file.md} +0 -0
  496. /package/RAF/{aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md → 4-task-naming-optimization/plans/2-base36-project-numbering.md} +0 -0
  497. /package/RAF/{aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md → 4-task-naming-optimization/plans/3-improve-haiku-prompt.md} +0 -0
  498. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/decisions.md +0 -0
  499. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/input.md +0 -0
  500. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md → 5-task-naming-improvements/outcomes/1-enhance-identifier-resolution.md} +0 -0
  501. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/02-add-identifier-support-to-status.md → 5-task-naming-improvements/outcomes/2-add-identifier-support-to-status.md} +0 -0
  502. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/03-update-do-for-full-folder-names.md → 5-task-naming-improvements/outcomes/3-update-do-for-full-folder-names.md} +0 -0
  503. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/04-implement-amend-flag-for-plan.md → 5-task-naming-improvements/outcomes/4-implement-amend-flag-for-plan.md} +0 -0
  504. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/05-commit-outcomes-on-complete.md → 5-task-naming-improvements/outcomes/5-commit-outcomes-on-complete.md} +0 -0
  505. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/06-update-execution-prompt-commit-schema.md → 5-task-naming-improvements/outcomes/6-update-execution-prompt-commit-schema.md} +0 -0
  506. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/07-allow-pending-task-amendments.md → 5-task-naming-improvements/outcomes/7-allow-pending-task-amendments.md} +0 -0
  507. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md → 5-task-naming-improvements/outcomes/8-fix-timeout-label.md} +0 -0
  508. /package/RAF/{aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md → 5-task-naming-improvements/plans/1-enhance-identifier-resolution.md} +0 -0
  509. /package/RAF/{aaaaaf-task-naming-improvements/plans/02-add-identifier-support-to-status.md → 5-task-naming-improvements/plans/2-add-identifier-support-to-status.md} +0 -0
  510. /package/RAF/{aaaaaf-task-naming-improvements/plans/03-update-do-for-full-folder-names.md → 5-task-naming-improvements/plans/3-update-do-for-full-folder-names.md} +0 -0
  511. /package/RAF/{aaaaaf-task-naming-improvements/plans/04-implement-amend-flag-for-plan.md → 5-task-naming-improvements/plans/4-implement-amend-flag-for-plan.md} +0 -0
  512. /package/RAF/{aaaaaf-task-naming-improvements/plans/05-commit-outcomes-on-complete.md → 5-task-naming-improvements/plans/5-commit-outcomes-on-complete.md} +0 -0
  513. /package/RAF/{aaaaaf-task-naming-improvements/plans/06-update-execution-prompt-commit-schema.md → 5-task-naming-improvements/plans/6-update-execution-prompt-commit-schema.md} +0 -0
  514. /package/RAF/{aaaaaf-task-naming-improvements/plans/07-allow-pending-task-amendments.md → 5-task-naming-improvements/plans/7-allow-pending-task-amendments.md} +0 -0
  515. /package/RAF/{aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md → 5-task-naming-improvements/plans/8-fix-timeout-label.md} +0 -0
  516. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/decisions.md +0 -0
  517. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/input.md +0 -0
  518. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/01-fix-double-summary-headers.md → 6-fix-double-summary-headers/outcomes/1-fix-double-summary-headers.md} +0 -0
  519. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/02-update-readme-for-npm.md → 6-fix-double-summary-headers/outcomes/2-update-readme-for-npm.md} +0 -0
  520. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/03-npm-publish-instructions.md → 6-fix-double-summary-headers/outcomes/3-npm-publish-instructions.md} +0 -0
  521. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/04-flexible-project-lookup.md → 6-fix-double-summary-headers/outcomes/4-flexible-project-lookup.md} +0 -0
  522. /package/RAF/{aaaaag-fix-double-summary-headers/plans/01-fix-double-summary-headers.md → 6-fix-double-summary-headers/plans/1-fix-double-summary-headers.md} +0 -0
  523. /package/RAF/{aaaaag-fix-double-summary-headers/plans/02-update-readme-for-npm.md → 6-fix-double-summary-headers/plans/2-update-readme-for-npm.md} +0 -0
  524. /package/RAF/{aaaaag-fix-double-summary-headers/plans/03-npm-publish-instructions.md → 6-fix-double-summary-headers/plans/3-npm-publish-instructions.md} +0 -0
  525. /package/RAF/{aaaaag-fix-double-summary-headers/plans/04-flexible-project-lookup.md → 6-fix-double-summary-headers/plans/4-flexible-project-lookup.md} +0 -0
  526. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/decisions.md +0 -0
  527. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/input.md +0 -0
  528. /package/RAF/{aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md → 7-improve-outcome-format/outcomes/1-update-execution-prompt.md} +0 -0
  529. /package/RAF/{aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md → 7-improve-outcome-format/outcomes/2-update-state-derivation.md} +0 -0
  530. /package/RAF/{aaaaah-improve-outcome-format/outcomes/03-update-do-command-outcome-handling.md → 7-improve-outcome-format/outcomes/3-update-do-command-outcome-handling.md} +0 -0
  531. /package/RAF/{aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md → 7-improve-outcome-format/outcomes/4-implement-failure-analysis.md} +0 -0
  532. /package/RAF/{aaaaah-improve-outcome-format/outcomes/05-update-documentation.md → 7-improve-outcome-format/outcomes/5-update-documentation.md} +0 -0
  533. /package/RAF/{aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md → 7-improve-outcome-format/plans/1-update-execution-prompt.md} +0 -0
  534. /package/RAF/{aaaaah-improve-outcome-format/plans/02-update-state-derivation.md → 7-improve-outcome-format/plans/2-update-state-derivation.md} +0 -0
  535. /package/RAF/{aaaaah-improve-outcome-format/plans/03-update-do-command-outcome-handling.md → 7-improve-outcome-format/plans/3-update-do-command-outcome-handling.md} +0 -0
  536. /package/RAF/{aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md → 7-improve-outcome-format/plans/4-implement-failure-analysis.md} +0 -0
  537. /package/RAF/{aaaaah-improve-outcome-format/plans/05-update-documentation.md → 7-improve-outcome-format/plans/5-update-documentation.md} +0 -0
  538. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/decisions.md +0 -0
  539. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/input.md +0 -0
  540. /package/RAF/{aaaaai-beautiful-do/outcomes/01-terminal-symbols.md → 8-beautiful-do/outcomes/1-terminal-symbols.md} +0 -0
  541. /package/RAF/{aaaaai-beautiful-do/outcomes/02-refactor-do-output.md → 8-beautiful-do/outcomes/2-refactor-do-output.md} +0 -0
  542. /package/RAF/{aaaaai-beautiful-do/outcomes/03-refactor-status-output.md → 8-beautiful-do/outcomes/3-refactor-status-output.md} +0 -0
  543. /package/RAF/{aaaaai-beautiful-do/outcomes/04-simplify-logger.md → 8-beautiful-do/outcomes/4-simplify-logger.md} +0 -0
  544. /package/RAF/{aaaaai-beautiful-do/outcomes/05-add-tests.md → 8-beautiful-do/outcomes/5-add-tests.md} +0 -0
  545. /package/RAF/{aaaaai-beautiful-do/plans/01-terminal-symbols.md → 8-beautiful-do/plans/1-terminal-symbols.md} +0 -0
  546. /package/RAF/{aaaaai-beautiful-do/plans/02-refactor-do-output.md → 8-beautiful-do/plans/2-refactor-do-output.md} +0 -0
  547. /package/RAF/{aaaaai-beautiful-do/plans/03-refactor-status-output.md → 8-beautiful-do/plans/3-refactor-status-output.md} +0 -0
  548. /package/RAF/{aaaaai-beautiful-do/plans/04-simplify-logger.md → 8-beautiful-do/plans/4-simplify-logger.md} +0 -0
  549. /package/RAF/{aaaaai-beautiful-do/plans/05-add-tests.md → 8-beautiful-do/plans/5-add-tests.md} +0 -0
  550. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/decisions.md +0 -0
  551. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/input.md +0 -0
  552. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/01-model-override.md → 9-system-promt-ammend/outcomes/1-model-override.md} +0 -0
  553. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md → 9-system-promt-ammend/outcomes/2-system-prompt-append.md} +0 -0
  554. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/03-retry-context.md → 9-system-promt-ammend/outcomes/3-retry-context.md} +0 -0
  555. /package/RAF/{aaaaaj-system-promt-ammend/plans/01-model-override.md → 9-system-promt-ammend/plans/1-model-override.md} +0 -0
  556. /package/RAF/{aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md → 9-system-promt-ammend/plans/2-system-prompt-append.md} +0 -0
  557. /package/RAF/{aaaaaj-system-promt-ammend/plans/03-retry-context.md → 9-system-promt-ammend/plans/3-retry-context.md} +0 -0
@@ -0,0 +1,326 @@
1
+ import * as pty from 'node-pty';
2
+ import type { IDisposable } from 'node-pty';
3
+ import { execSync, spawn } from 'node:child_process';
4
+ import { logger } from '../utils/logger.js';
5
+ import { renderCodexStreamEvent } from '../parsers/codex-stream-renderer.js';
6
+ import { getModel } from '../utils/config.js';
7
+ import type { ICliRunner } from './runner-interface.js';
8
+ import type { RunnerOptions, RunnerConfig, RunResult } from './runner-types.js';
9
+ import { createCompletionDetector } from './completion-detector.js';
10
+
11
+ function getCodexPath(): string {
12
+ try {
13
+ return execSync('which codex', { encoding: 'utf-8' }).trim();
14
+ } catch {
15
+ throw new Error('Codex CLI not found. Please ensure it is installed and in your PATH.');
16
+ }
17
+ }
18
+
19
+ /**
20
+ * Combine system prompt and user message into a single prompt for Codex.
21
+ * Codex CLI does not support a separate --system-prompt flag, so the system
22
+ * instructions are prepended to the user message.
23
+ */
24
+ function buildCombinedPrompt(systemPrompt: string, userMessage: string): string {
25
+ return `[System Instructions]\n\n${systemPrompt}\n\n[User Request]\n\n${userMessage}`;
26
+ }
27
+
28
+ const CONTEXT_OVERFLOW_PATTERNS = [
29
+ /context length exceeded/i,
30
+ /token limit/i,
31
+ /maximum context/i,
32
+ /context window/i,
33
+ ];
34
+
35
+ export class CodexRunner implements ICliRunner {
36
+ private activeProcess: pty.IPty | null = null;
37
+ private killed = false;
38
+ private model: string;
39
+
40
+ constructor(config: RunnerConfig = {}) {
41
+ this.model = config.model ?? getModel('execute', 'codex');
42
+ }
43
+
44
+ /**
45
+ * Run Codex interactively with stdin/stdout passthrough via PTY.
46
+ * Spawns `codex -m <model> <combined_prompt>` (no `exec` subcommand).
47
+ */
48
+ async runInteractive(
49
+ systemPrompt: string,
50
+ userMessage: string,
51
+ options: RunnerOptions = {}
52
+ ): Promise<number> {
53
+ const { cwd = process.cwd() } = options;
54
+
55
+ return new Promise((resolve) => {
56
+ const combinedPrompt = buildCombinedPrompt(systemPrompt, userMessage);
57
+ const args = ['-m', this.model, combinedPrompt];
58
+
59
+ logger.debug(`Starting interactive Codex session with model: ${this.model}`);
60
+
61
+ this.activeProcess = pty.spawn(getCodexPath(), args, {
62
+ name: 'xterm-256color',
63
+ cols: process.stdout.columns ?? 80,
64
+ rows: process.stdout.rows ?? 24,
65
+ cwd,
66
+ env: process.env as Record<string, string>,
67
+ });
68
+
69
+ // Set raw mode to pass through all input
70
+ if (process.stdin.isTTY) {
71
+ process.stdin.setRawMode(true);
72
+ }
73
+ process.stdin.resume();
74
+
75
+ // Pipe input to Codex
76
+ const onData = (data: Buffer): void => {
77
+ if (this.activeProcess && !this.killed) {
78
+ this.activeProcess.write(data.toString());
79
+ }
80
+ };
81
+ process.stdin.on('data', onData);
82
+
83
+ // Store disposables for proper cleanup
84
+ const disposables: IDisposable[] = [];
85
+
86
+ // Pipe output to stdout
87
+ disposables.push(this.activeProcess.onData((data) => {
88
+ process.stdout.write(data);
89
+ }));
90
+
91
+ disposables.push(this.activeProcess.onExit(({ exitCode }) => {
92
+ // Cleanup stdin
93
+ process.stdin.off('data', onData);
94
+ if (process.stdin.isTTY) {
95
+ process.stdin.setRawMode(false);
96
+ }
97
+ process.stdin.pause();
98
+
99
+ // Dispose all event listeners to prevent FD leaks
100
+ for (const disposable of disposables) {
101
+ try {
102
+ disposable.dispose();
103
+ } catch {
104
+ // Ignore disposal errors
105
+ }
106
+ }
107
+
108
+ // Ensure PTY is fully cleaned up
109
+ if (this.activeProcess) {
110
+ try {
111
+ this.activeProcess.kill();
112
+ } catch {
113
+ // Ignore - process may already be dead
114
+ }
115
+ this.activeProcess = null;
116
+ }
117
+
118
+ if (this.killed) {
119
+ resolve(130); // SIGINT exit code
120
+ } else {
121
+ resolve(exitCode);
122
+ }
123
+ }));
124
+ });
125
+ }
126
+
127
+ /**
128
+ * Session resume is not supported by Codex CLI.
129
+ */
130
+ async runResume(_options: RunnerOptions = {}): Promise<number> {
131
+ throw new Error('Session resume is not supported by Codex CLI');
132
+ }
133
+
134
+ /**
135
+ * Run Codex non-interactively and collect output.
136
+ * Tool display is suppressed (non-verbose mode).
137
+ */
138
+ async run(prompt: string, options: RunnerOptions = {}): Promise<RunResult> {
139
+ return this._runExec(prompt, options, false);
140
+ }
141
+
142
+ /**
143
+ * Run Codex non-interactively with verbose output to stdout.
144
+ * Uses `codex exec --full-auto --json` to get JSONL streaming events.
145
+ */
146
+ async runVerbose(prompt: string, options: RunnerOptions = {}): Promise<RunResult> {
147
+ return this._runExec(prompt, options, true);
148
+ }
149
+
150
+ /**
151
+ * Internal unified execution method using `codex exec --full-auto --json`.
152
+ * Both run() and runVerbose() delegate to this method.
153
+ */
154
+ private async _runExec(
155
+ prompt: string,
156
+ options: RunnerOptions,
157
+ verbose: boolean,
158
+ ): Promise<RunResult> {
159
+ const { timeout = 60, cwd = process.cwd(), outcomeFilePath, commitContext, verboseCheck } = options;
160
+ const validatedTimeout = Number(timeout) > 0 ? Number(timeout) : 60;
161
+ const timeoutMs = validatedTimeout * 60 * 1000;
162
+
163
+ const shouldDisplay = verboseCheck ?? (() => verbose);
164
+
165
+ return new Promise((resolve) => {
166
+ let output = '';
167
+ let stderr = '';
168
+ let timedOut = false;
169
+ let contextOverflow = false;
170
+
171
+ const codexPath = getCodexPath();
172
+
173
+ logger.debug(`Starting Codex execution session (json, verbose=${verbose}) with model: ${this.model}`);
174
+ logger.debug(`Prompt length: ${prompt.length}, timeout: ${timeoutMs}ms, cwd: ${cwd}`);
175
+ logger.debug(`Codex path: ${codexPath}`);
176
+
177
+ logger.debug('Spawning process...');
178
+ const proc = spawn(codexPath, [
179
+ 'exec',
180
+ '--full-auto',
181
+ '--json',
182
+ '--ephemeral',
183
+ '-m',
184
+ this.model,
185
+ prompt,
186
+ ], {
187
+ cwd,
188
+ env: process.env,
189
+ stdio: ['ignore', 'pipe', 'pipe'],
190
+ });
191
+
192
+ // Track this process
193
+ this.activeProcess = proc as any;
194
+ logger.debug('Process spawned');
195
+
196
+ // Set up timeout
197
+ const timeoutHandle = setTimeout(() => {
198
+ timedOut = true;
199
+ logger.warn('Codex session timed out');
200
+ proc.kill('SIGTERM');
201
+ }, timeoutMs);
202
+
203
+ // Set up completion detection (stdout marker + outcome file polling)
204
+ const completionDetector = createCompletionDetector(
205
+ () => proc.kill('SIGTERM'),
206
+ outcomeFilePath,
207
+ commitContext,
208
+ );
209
+
210
+ // Buffer for incomplete JSONL lines
211
+ let lineBuffer = '';
212
+ let dataReceived = false;
213
+
214
+ proc.stdout.on('data', (data) => {
215
+ if (!dataReceived) {
216
+ logger.debug('First data chunk received');
217
+ dataReceived = true;
218
+ }
219
+
220
+ lineBuffer += data.toString();
221
+
222
+ // Process complete lines from the JSONL stream
223
+ let newlineIndex: number;
224
+ while ((newlineIndex = lineBuffer.indexOf('\n')) !== -1) {
225
+ const line = lineBuffer.substring(0, newlineIndex);
226
+ lineBuffer = lineBuffer.substring(newlineIndex + 1);
227
+
228
+ const rendered = renderCodexStreamEvent(line);
229
+
230
+ if (rendered.textContent) {
231
+ output += rendered.textContent;
232
+
233
+ // Check for completion marker to start grace period
234
+ completionDetector.checkOutput(output);
235
+
236
+ // Check for context overflow
237
+ for (const pattern of CONTEXT_OVERFLOW_PATTERNS) {
238
+ if (pattern.test(rendered.textContent)) {
239
+ contextOverflow = true;
240
+ logger.warn('Context overflow detected');
241
+ proc.kill('SIGTERM');
242
+ break;
243
+ }
244
+ }
245
+ }
246
+
247
+ if (shouldDisplay() && rendered.display) {
248
+ process.stdout.write(rendered.display);
249
+ }
250
+ }
251
+ });
252
+
253
+ // Collect stderr
254
+ proc.stderr.on('data', (data) => {
255
+ stderr += data.toString();
256
+ });
257
+
258
+ proc.on('close', (exitCode) => {
259
+ // Process any remaining data in the line buffer
260
+ if (lineBuffer.trim()) {
261
+ const rendered = renderCodexStreamEvent(lineBuffer);
262
+ if (rendered.textContent) {
263
+ output += rendered.textContent;
264
+ }
265
+ if (shouldDisplay() && rendered.display) {
266
+ process.stdout.write(rendered.display);
267
+ }
268
+ }
269
+
270
+ clearTimeout(timeoutHandle);
271
+ completionDetector.cleanup();
272
+ this.activeProcess = null;
273
+ logger.debug(`Codex exited with code ${exitCode}, output length: ${output.length}, timedOut: ${timedOut}, contextOverflow: ${contextOverflow}`);
274
+
275
+ if (stderr) {
276
+ logger.debug(`Codex stderr: ${stderr}`);
277
+ }
278
+
279
+ resolve({
280
+ output,
281
+ exitCode: exitCode ?? (this.killed ? 130 : 1),
282
+ timedOut,
283
+ contextOverflow,
284
+ // Codex does not provide usage data in the same format — omit gracefully
285
+ usageData: undefined,
286
+ });
287
+ });
288
+ });
289
+ }
290
+
291
+ /**
292
+ * Kill the active Codex process gracefully.
293
+ */
294
+ kill(): void {
295
+ if (this.activeProcess) {
296
+ this.killed = true;
297
+
298
+ // Send Ctrl+C first for graceful shutdown (only for PTY processes)
299
+ try {
300
+ if (typeof this.activeProcess.write === 'function') {
301
+ this.activeProcess.write('\x03');
302
+ }
303
+ } catch {
304
+ // Ignore write errors - process may already be closing
305
+ }
306
+
307
+ // Force kill after 5 seconds if still running
308
+ setTimeout(() => {
309
+ if (this.activeProcess) {
310
+ try {
311
+ this.activeProcess.kill();
312
+ } catch {
313
+ // Ignore kill errors - process may already be dead
314
+ }
315
+ }
316
+ }, 5000);
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Check if a process is currently running.
322
+ */
323
+ isRunning(): boolean {
324
+ return this.activeProcess !== null;
325
+ }
326
+ }
@@ -0,0 +1,177 @@
1
+ import * as fs from 'node:fs';
2
+ import { logger } from '../utils/logger.js';
3
+ import { getHeadCommitHash, getHeadCommitMessage, isFileCommittedInHead } from './git.js';
4
+
5
+ /**
6
+ * Grace period in ms after completion marker is detected before terminating.
7
+ * Allows time for git commit operations to complete.
8
+ */
9
+ export const COMPLETION_GRACE_PERIOD_MS = 60_000;
10
+
11
+ /**
12
+ * Hard maximum grace period in ms. If the commit hasn't landed by this point,
13
+ * the process is killed regardless.
14
+ */
15
+ export const COMPLETION_HARD_MAX_MS = 180_000;
16
+
17
+ /**
18
+ * Interval in ms for polling commit verification after the initial grace period expires.
19
+ */
20
+ export const COMMIT_POLL_INTERVAL_MS = 10_000;
21
+
22
+ /**
23
+ * Interval in ms for polling the outcome file for completion markers.
24
+ */
25
+ export const OUTCOME_POLL_INTERVAL_MS = 5_000;
26
+
27
+ export const COMPLETION_MARKER_PATTERN = /<promise>(COMPLETE|FAILED)<\/promise>/i;
28
+
29
+ const COMPLETE_MARKER_PATTERN = /<promise>COMPLETE<\/promise>/i;
30
+
31
+ /**
32
+ * Context for commit verification during grace period.
33
+ */
34
+ export interface CommitContext {
35
+ /** HEAD commit hash recorded before task execution began. */
36
+ preExecutionHead: string;
37
+ /** Expected commit message prefix (e.g., "RAF[005:01]"). */
38
+ expectedPrefix: string;
39
+ /** Path to the outcome file that should be committed. */
40
+ outcomeFilePath: string;
41
+ }
42
+
43
+ /**
44
+ * Monitors for task completion markers in stdout and outcome files.
45
+ * When a marker is detected, starts a grace period before killing the process.
46
+ */
47
+ export interface CompletionDetector {
48
+ /** Check accumulated stdout output for completion markers. */
49
+ checkOutput(output: string): void;
50
+ /** Clean up all timers. Must be called when the process exits. */
51
+ cleanup(): void;
52
+ }
53
+
54
+ /**
55
+ * Verify that the expected commit has been made.
56
+ * Checks: HEAD changed, commit message matches prefix, outcome file is committed.
57
+ */
58
+ export function verifyCommit(commitContext: CommitContext): boolean {
59
+ const currentHead = getHeadCommitHash();
60
+ if (!currentHead || currentHead === commitContext.preExecutionHead) {
61
+ return false;
62
+ }
63
+
64
+ const message = getHeadCommitMessage();
65
+ if (!message || !message.startsWith(commitContext.expectedPrefix)) {
66
+ return false;
67
+ }
68
+
69
+ if (!isFileCommittedInHead(commitContext.outcomeFilePath)) {
70
+ return false;
71
+ }
72
+
73
+ return true;
74
+ }
75
+
76
+ export function createCompletionDetector(
77
+ killFn: () => void,
78
+ outcomeFilePath?: string,
79
+ commitContext?: CommitContext,
80
+ ): CompletionDetector {
81
+ let graceHandle: ReturnType<typeof setTimeout> | null = null;
82
+ let commitPollHandle: ReturnType<typeof setInterval> | null = null;
83
+ let hardMaxHandle: ReturnType<typeof setTimeout> | null = null;
84
+ let pollHandle: ReturnType<typeof setInterval> | null = null;
85
+ let initialMtime = 0;
86
+ let detectedMarkerIsComplete = false;
87
+
88
+ // Record initial mtime of outcome file to avoid false positives from previous runs
89
+ if (outcomeFilePath) {
90
+ try {
91
+ if (fs.existsSync(outcomeFilePath)) {
92
+ initialMtime = fs.statSync(outcomeFilePath).mtimeMs;
93
+ }
94
+ } catch {
95
+ // Ignore stat errors
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Called when the initial grace period expires.
101
+ * If commit verification is needed and the commit hasn't landed yet,
102
+ * start polling for the commit up to the hard maximum.
103
+ */
104
+ function onGracePeriodExpired(): void {
105
+ if (commitContext && detectedMarkerIsComplete) {
106
+ // Check if commit already landed
107
+ if (verifyCommit(commitContext)) {
108
+ logger.debug('Grace period expired - commit verified, terminating process');
109
+ killFn();
110
+ return;
111
+ }
112
+
113
+ // Commit not found yet - extend with polling
114
+ logger.debug('Grace period expired but commit not verified - extending with polling');
115
+ const remainingMs = COMPLETION_HARD_MAX_MS - COMPLETION_GRACE_PERIOD_MS;
116
+
117
+ hardMaxHandle = setTimeout(() => {
118
+ logger.warn('Hard maximum grace period reached without commit verification - terminating process');
119
+ if (commitPollHandle) clearInterval(commitPollHandle);
120
+ killFn();
121
+ }, remainingMs);
122
+
123
+ commitPollHandle = setInterval(() => {
124
+ if (commitContext && verifyCommit(commitContext)) {
125
+ logger.debug('Commit verified during extended grace period - terminating process');
126
+ if (commitPollHandle) clearInterval(commitPollHandle);
127
+ if (hardMaxHandle) clearTimeout(hardMaxHandle);
128
+ killFn();
129
+ }
130
+ }, COMMIT_POLL_INTERVAL_MS);
131
+ } else {
132
+ // No commit verification needed (FAILED marker or no context) - kill immediately
133
+ logger.debug('Grace period expired - terminating process');
134
+ killFn();
135
+ }
136
+ }
137
+
138
+ function startGracePeriod(markerOutput: string): void {
139
+ if (graceHandle) return; // Already started
140
+ detectedMarkerIsComplete = COMPLETE_MARKER_PATTERN.test(markerOutput);
141
+ logger.debug('Completion marker detected - starting grace period before termination');
142
+ graceHandle = setTimeout(onGracePeriodExpired, COMPLETION_GRACE_PERIOD_MS);
143
+ }
144
+
145
+ function checkOutput(output: string): void {
146
+ if (!graceHandle && COMPLETION_MARKER_PATTERN.test(output)) {
147
+ startGracePeriod(output);
148
+ }
149
+ }
150
+
151
+ // Start outcome file polling if path provided
152
+ if (outcomeFilePath) {
153
+ const filePath = outcomeFilePath;
154
+ pollHandle = setInterval(() => {
155
+ try {
156
+ if (!fs.existsSync(filePath)) return;
157
+ const stat = fs.statSync(filePath);
158
+ if (stat.mtimeMs <= initialMtime) return; // File unchanged from before execution
159
+ const content = fs.readFileSync(filePath, 'utf-8');
160
+ if (COMPLETION_MARKER_PATTERN.test(content)) {
161
+ startGracePeriod(content);
162
+ }
163
+ } catch {
164
+ // Ignore read errors - file may be mid-write
165
+ }
166
+ }, OUTCOME_POLL_INTERVAL_MS);
167
+ }
168
+
169
+ function cleanup(): void {
170
+ if (graceHandle) clearTimeout(graceHandle);
171
+ if (pollHandle) clearInterval(pollHandle);
172
+ if (commitPollHandle) clearInterval(commitPollHandle);
173
+ if (hardMaxHandle) clearTimeout(hardMaxHandle);
174
+ }
175
+
176
+ return { checkOutput, cleanup };
177
+ }
@@ -110,7 +110,7 @@ export function generateProgrammaticReport(
110
110
  API error occurred during task execution.
111
111
 
112
112
  ## Analysis
113
- The Claude API returned an error response. This is typically a temporary issue with the API service.
113
+ The API returned an error response. This is typically a temporary issue with the API service.
114
114
 
115
115
  ## Suggested Fix
116
116
  - Wait a few minutes and retry the task
@@ -150,13 +150,13 @@ Task execution timed out.
150
150
  ## Analysis
151
151
  The task took longer than the configured timeout to complete. This could indicate:
152
152
  - The task is too complex or large for a single execution
153
- - Claude is stuck or making slow progress
153
+ - The LLM is stuck or making slow progress
154
154
  - Network issues causing delays
155
155
 
156
156
  ## Suggested Fix
157
157
  - Increase the timeout with \`--timeout <minutes>\`
158
158
  - Break the task into smaller subtasks
159
- - Check the logs for what Claude was doing before timeout
159
+ - Check the logs for what the LLM was doing before timeout
160
160
 
161
161
  ## Relevant Output
162
162
  \`\`\`
@@ -170,14 +170,14 @@ ${relevantOutput}
170
170
  Context window exceeded during task execution.
171
171
 
172
172
  ## Analysis
173
- The conversation context grew too large for Claude to process. This typically happens when:
173
+ The conversation context grew too large for the LLM to process. This typically happens when:
174
174
  - Too much code or output was included in the context
175
175
  - The task involves very large files
176
176
  - Multiple previous outcomes created a large context
177
177
 
178
178
  ## Suggested Fix
179
179
  - Break the task into smaller, independent subtasks
180
- - Reduce the amount of context passed to Claude
180
+ - Reduce the amount of context passed to the LLM
181
181
  - Consider processing files in chunks
182
182
 
183
183
  ## Relevant Output
@@ -210,18 +210,18 @@ function extractRelevantOutput(output: string, maxLines: number): string {
210
210
  }
211
211
 
212
212
  /**
213
- * Get the path to Claude CLI.
213
+ * Get the path to the CLI binary.
214
214
  */
215
215
  function getClaudePath(): string {
216
216
  try {
217
217
  return execSync('which claude', { encoding: 'utf-8' }).trim();
218
218
  } catch {
219
- throw new Error('Claude CLI not found. Please ensure it is installed and in your PATH.');
219
+ throw new Error('CLI not found. Please ensure it is installed and in your PATH.');
220
220
  }
221
221
  }
222
222
 
223
223
  /**
224
- * Analyze a failure using Claude (Sonnet/Haiku) and generate a structured report.
224
+ * Analyze a failure using the LLM and generate a structured report.
225
225
  * Uses a fast model for cost efficiency.
226
226
  */
227
227
  export async function analyzeFailure(
@@ -236,7 +236,7 @@ export async function analyzeFailure(
236
236
  return generateProgrammaticReport(programmaticType, failureReason, output);
237
237
  }
238
238
 
239
- // For other failures, use Claude to analyze
239
+ // For other failures, use the LLM to analyze
240
240
  try {
241
241
  const analysisResult = await callClaudeForAnalysis(output, failureReason, taskId, timeoutMs);
242
242
  return analysisResult;
@@ -262,7 +262,7 @@ ${relevantOutput}
262
262
  }
263
263
 
264
264
  /**
265
- * Call Claude CLI to analyze the failure.
265
+ * Call the LLM CLI to analyze the failure.
266
266
  * Uses the print mode with a concise prompt.
267
267
  */
268
268
  async function callClaudeForAnalysis(
@@ -223,8 +223,8 @@ export function readProjectContext(projectPath: string): {
223
223
  }
224
224
 
225
225
  /**
226
- * Generate a PR body by calling Claude to summarize project context.
227
- * Falls back to a simple body if Claude is unavailable.
226
+ * Generate a PR body by calling the LLM to summarize project context.
227
+ * Falls back to a simple body if the CLI is unavailable.
228
228
  */
229
229
  export async function generatePrBody(
230
230
  projectPath: string,
@@ -232,7 +232,7 @@ export async function generatePrBody(
232
232
  ): Promise<string> {
233
233
  const context = readProjectContext(projectPath);
234
234
 
235
- // Build context for Claude
235
+ // Build context for LLM
236
236
  const parts: string[] = [];
237
237
 
238
238
  if (context.input) {
@@ -284,13 +284,13 @@ Respond with ONLY the PR body in this exact format (no extra text, no code fence
284
284
  const body = await callClaudeForPrBody(prompt, timeoutMs);
285
285
  return body;
286
286
  } catch (error) {
287
- logger.debug(`PR body generation via Claude failed: ${error instanceof Error ? error.message : String(error)}`);
287
+ logger.debug(`PR body generation failed: ${error instanceof Error ? error.message : String(error)}`);
288
288
  return generateFallbackBody(projectPath);
289
289
  }
290
290
  }
291
291
 
292
292
  /**
293
- * Generate a simple fallback PR body when Claude is unavailable.
293
+ * Generate a simple fallback PR body when the CLI is unavailable.
294
294
  */
295
295
  function generateFallbackBody(projectPath: string): string {
296
296
  const context = readProjectContext(projectPath);
@@ -330,8 +330,8 @@ function generateFallbackBody(projectPath: string): string {
330
330
  }
331
331
 
332
332
  /**
333
- * Filter Claude CLI output to remove non-markdown log/warning lines.
334
- * Claude CLI stdout may include warning or progress lines mixed with the response.
333
+ * Filter CLI output to remove non-markdown log/warning lines.
334
+ * CLI stdout may include warning or progress lines mixed with the response.
335
335
  */
336
336
  export function filterClaudeOutput(output: string): string {
337
337
  const lines = output.split('\n');
@@ -351,14 +351,14 @@ export function filterClaudeOutput(output: string): string {
351
351
  }
352
352
 
353
353
  /**
354
- * Call Claude to generate a PR body.
354
+ * Call the LLM CLI to generate a PR body.
355
355
  */
356
356
  async function callClaudeForPrBody(prompt: string, timeoutMs: number): Promise<string> {
357
357
  let claudePath: string;
358
358
  try {
359
359
  claudePath = execSync('which claude', { encoding: 'utf-8', stdio: 'pipe' }).trim();
360
360
  } catch {
361
- throw new Error('Claude CLI not found');
361
+ throw new Error('CLI not found');
362
362
  }
363
363
 
364
364
  return new Promise((resolve, reject) => {
@@ -394,13 +394,13 @@ async function callClaudeForPrBody(prompt: string, timeoutMs: number): Promise<s
394
394
  clearTimeout(timeout);
395
395
 
396
396
  if (exitCode !== 0) {
397
- reject(new Error(`Claude exited with code ${exitCode}: ${stderr}`));
397
+ reject(new Error(`Process exited with code ${exitCode}: ${stderr}`));
398
398
  return;
399
399
  }
400
400
 
401
401
  const filtered = filterClaudeOutput(output);
402
402
  if (!filtered) {
403
- reject(new Error('Claude returned empty output'));
403
+ reject(new Error('LLM returned empty output'));
404
404
  return;
405
405
  }
406
406
 
@@ -0,0 +1,35 @@
1
+ import type { HarnessProvider } from '../types/config.js';
2
+ import type { ICliRunner } from './runner-interface.js';
3
+ import type { RunnerConfig } from './runner-types.js';
4
+ import { ClaudeRunner } from './claude-runner.js';
5
+ import { CodexRunner } from './codex-runner.js';
6
+
7
+ /**
8
+ * Create a CLI runner for the given provider configuration.
9
+ */
10
+ export function createRunner(config: RunnerConfig = {}): ICliRunner {
11
+ const provider = config.provider ?? 'claude';
12
+
13
+ switch (provider) {
14
+ case 'claude':
15
+ return new ClaudeRunner(config);
16
+ case 'codex':
17
+ return new CodexRunner(config);
18
+ default:
19
+ throw new Error(`Unknown provider: ${provider}`);
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Get the binary name for a given provider.
25
+ */
26
+ export function getProviderBinaryName(provider: HarnessProvider): string {
27
+ switch (provider) {
28
+ case 'claude':
29
+ return 'claude';
30
+ case 'codex':
31
+ return 'codex';
32
+ default:
33
+ throw new Error(`Unknown provider: ${provider}`);
34
+ }
35
+ }