rafcode 2.5.1 → 3.2.1

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 (585) 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 +44 -0
  58. package/RAF/38-dual-wielder/input.md +13 -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/outcomes/8-e2e-test-codex-provider.md +139 -0
  67. package/RAF/38-dual-wielder/plans/1-config-schema-provider-types.md +90 -0
  68. package/RAF/38-dual-wielder/plans/2-abstract-cli-runner.md +76 -0
  69. package/RAF/38-dual-wielder/plans/3-implement-codex-runner.md +94 -0
  70. package/RAF/38-dual-wielder/plans/4-update-prompts-llm-agnostic.md +70 -0
  71. package/RAF/38-dual-wielder/plans/5-update-readme-docs.md +52 -0
  72. package/RAF/38-dual-wielder/plans/6-do-unified-project-scanning.md +40 -0
  73. package/RAF/38-dual-wielder/plans/7-fix-plan-amend-automode.md +51 -0
  74. package/RAF/38-dual-wielder/plans/8-e2e-test-codex-provider.md +95 -0
  75. package/RAF/39-pathless-rover/decisions.md +16 -0
  76. package/RAF/39-pathless-rover/input.md +2 -0
  77. package/RAF/39-pathless-rover/outcomes/1-fix-codex-stream-renderer.md +21 -0
  78. package/RAF/39-pathless-rover/outcomes/2-wire-provider-flag.md +28 -0
  79. package/RAF/39-pathless-rover/outcomes/3-remove-worktree-flag-do.md +41 -0
  80. package/RAF/39-pathless-rover/outcomes/4-remove-worktree-flag-plan-amend.md +30 -0
  81. package/RAF/39-pathless-rover/outcomes/5-update-prompts-and-docs.md +26 -0
  82. package/RAF/39-pathless-rover/plans/1-fix-codex-stream-renderer.md +43 -0
  83. package/RAF/39-pathless-rover/plans/2-wire-provider-flag.md +48 -0
  84. package/RAF/39-pathless-rover/plans/3-remove-worktree-flag-do.md +41 -0
  85. package/RAF/39-pathless-rover/plans/4-remove-worktree-flag-plan-amend.md +43 -0
  86. package/RAF/39-pathless-rover/plans/5-update-prompts-and-docs.md +31 -0
  87. package/RAF/40-numeric-order-fix/decisions.md +7 -0
  88. package/RAF/40-numeric-order-fix/input.md +19 -0
  89. package/RAF/40-numeric-order-fix/outcomes/1-fix-numeric-sort-order.md +18 -0
  90. package/RAF/40-numeric-order-fix/outcomes/2-add-npm-keywords.md +10 -0
  91. package/RAF/40-numeric-order-fix/plans/1-fix-numeric-sort-order.md +48 -0
  92. package/RAF/40-numeric-order-fix/plans/2-add-npm-keywords.md +23 -0
  93. package/README.md +62 -18
  94. package/dist/commands/config.js +7 -7
  95. package/dist/commands/config.js.map +1 -1
  96. package/dist/commands/do.d.ts.map +1 -1
  97. package/dist/commands/do.js +51 -230
  98. package/dist/commands/do.js.map +1 -1
  99. package/dist/commands/plan.d.ts.map +1 -1
  100. package/dist/commands/plan.js +96 -147
  101. package/dist/commands/plan.js.map +1 -1
  102. package/dist/commands/status.js +1 -1
  103. package/dist/commands/status.js.map +1 -1
  104. package/dist/core/claude-runner.d.ts +19 -116
  105. package/dist/core/claude-runner.d.ts.map +1 -1
  106. package/dist/core/claude-runner.js +20 -173
  107. package/dist/core/claude-runner.js.map +1 -1
  108. package/dist/core/codex-runner.d.ts +41 -0
  109. package/dist/core/codex-runner.d.ts.map +1 -0
  110. package/dist/core/codex-runner.js +271 -0
  111. package/dist/core/codex-runner.js.map +1 -0
  112. package/dist/core/completion-detector.d.ts +47 -0
  113. package/dist/core/completion-detector.d.ts.map +1 -0
  114. package/dist/core/completion-detector.js +143 -0
  115. package/dist/core/completion-detector.js.map +1 -0
  116. package/dist/core/failure-analyzer.d.ts +1 -1
  117. package/dist/core/failure-analyzer.js +10 -10
  118. package/dist/core/failure-analyzer.js.map +1 -1
  119. package/dist/core/project-manager.d.ts.map +1 -1
  120. package/dist/core/project-manager.js +2 -2
  121. package/dist/core/project-manager.js.map +1 -1
  122. package/dist/core/pull-request.d.ts +4 -4
  123. package/dist/core/pull-request.js +13 -13
  124. package/dist/core/pull-request.js.map +1 -1
  125. package/dist/core/runner-factory.d.ts +12 -0
  126. package/dist/core/runner-factory.d.ts.map +1 -0
  127. package/dist/core/runner-factory.js +30 -0
  128. package/dist/core/runner-factory.js.map +1 -0
  129. package/dist/core/runner-interface.d.ts +14 -0
  130. package/dist/core/runner-interface.d.ts.map +1 -0
  131. package/dist/core/runner-interface.js +2 -0
  132. package/dist/core/runner-interface.js.map +1 -0
  133. package/dist/core/runner-types.d.ts +73 -0
  134. package/dist/core/runner-types.d.ts.map +1 -0
  135. package/dist/core/runner-types.js +2 -0
  136. package/dist/core/runner-types.js.map +1 -0
  137. package/dist/core/shutdown-handler.d.ts +8 -4
  138. package/dist/core/shutdown-handler.d.ts.map +1 -1
  139. package/dist/core/shutdown-handler.js +14 -8
  140. package/dist/core/shutdown-handler.js.map +1 -1
  141. package/dist/core/state-derivation.d.ts +2 -2
  142. package/dist/core/state-derivation.d.ts.map +1 -1
  143. package/dist/core/state-derivation.js +12 -15
  144. package/dist/core/state-derivation.js.map +1 -1
  145. package/dist/core/worktree.d.ts +1 -1
  146. package/dist/core/worktree.d.ts.map +1 -1
  147. package/dist/core/worktree.js +14 -16
  148. package/dist/core/worktree.js.map +1 -1
  149. package/dist/index.js +1 -1
  150. package/dist/index.js.map +1 -1
  151. package/dist/parsers/codex-stream-renderer.d.ts +48 -0
  152. package/dist/parsers/codex-stream-renderer.d.ts.map +1 -0
  153. package/dist/parsers/codex-stream-renderer.js +158 -0
  154. package/dist/parsers/codex-stream-renderer.js.map +1 -0
  155. package/dist/parsers/output-parser.d.ts +2 -2
  156. package/dist/parsers/output-parser.js +2 -2
  157. package/dist/parsers/stream-renderer.d.ts +1 -1
  158. package/dist/parsers/stream-renderer.js +1 -1
  159. package/dist/prompts/amend.d.ts +1 -2
  160. package/dist/prompts/amend.d.ts.map +1 -1
  161. package/dist/prompts/amend.js +8 -9
  162. package/dist/prompts/amend.js.map +1 -1
  163. package/dist/prompts/execution.js +2 -2
  164. package/dist/prompts/execution.js.map +1 -1
  165. package/dist/prompts/planning.d.ts +1 -1
  166. package/dist/prompts/planning.d.ts.map +1 -1
  167. package/dist/prompts/planning.js +14 -15
  168. package/dist/prompts/planning.js.map +1 -1
  169. package/dist/types/config.d.ts +21 -1
  170. package/dist/types/config.d.ts.map +1 -1
  171. package/dist/types/config.js +16 -0
  172. package/dist/types/config.js.map +1 -1
  173. package/dist/ui/project-picker.d.ts.map +1 -1
  174. package/dist/ui/project-picker.js.map +1 -1
  175. package/dist/utils/config.d.ts +24 -6
  176. package/dist/utils/config.d.ts.map +1 -1
  177. package/dist/utils/config.js +155 -15
  178. package/dist/utils/config.js.map +1 -1
  179. package/dist/utils/name-generator.d.ts +2 -2
  180. package/dist/utils/name-generator.js +9 -9
  181. package/dist/utils/name-generator.js.map +1 -1
  182. package/dist/utils/paths.d.ts +32 -51
  183. package/dist/utils/paths.d.ts.map +1 -1
  184. package/dist/utils/paths.js +121 -150
  185. package/dist/utils/paths.js.map +1 -1
  186. package/dist/utils/token-tracker.d.ts +2 -2
  187. package/dist/utils/token-tracker.js +4 -4
  188. package/dist/utils/token-tracker.js.map +1 -1
  189. package/dist/utils/validation.d.ts.map +1 -1
  190. package/dist/utils/validation.js +7 -10
  191. package/dist/utils/validation.js.map +1 -1
  192. package/package.json +7 -2
  193. package/src/commands/config.ts +7 -7
  194. package/src/commands/do.ts +53 -265
  195. package/src/commands/plan.ts +102 -155
  196. package/src/commands/status.ts +1 -1
  197. package/src/core/claude-runner.ts +33 -277
  198. package/src/core/codex-runner.ts +326 -0
  199. package/src/core/completion-detector.ts +177 -0
  200. package/src/core/failure-analyzer.ts +10 -10
  201. package/src/core/project-manager.ts +2 -1
  202. package/src/core/pull-request.ts +13 -13
  203. package/src/core/runner-factory.ts +35 -0
  204. package/src/core/runner-interface.ts +14 -0
  205. package/src/core/runner-types.ts +75 -0
  206. package/src/core/shutdown-handler.ts +17 -10
  207. package/src/core/state-derivation.ts +12 -15
  208. package/src/core/worktree.ts +14 -16
  209. package/src/index.ts +1 -1
  210. package/src/parsers/codex-stream-renderer.ts +210 -0
  211. package/src/parsers/output-parser.ts +2 -2
  212. package/src/parsers/stream-renderer.ts +1 -1
  213. package/src/prompts/amend.ts +7 -10
  214. package/src/prompts/config-docs.md +8 -8
  215. package/src/prompts/execution.ts +2 -2
  216. package/src/prompts/planning.ts +14 -16
  217. package/src/types/config.ts +39 -1
  218. package/src/ui/project-picker.ts +1 -0
  219. package/src/utils/config.ts +170 -14
  220. package/src/utils/name-generator.ts +9 -9
  221. package/src/utils/paths.ts +123 -159
  222. package/src/utils/token-tracker.ts +4 -4
  223. package/src/utils/validation.ts +7 -10
  224. package/tests/unit/commit-planning-artifacts-worktree.test.ts +14 -14
  225. package/tests/unit/commit-planning-artifacts.test.ts +40 -40
  226. package/tests/unit/config.test.ts +8 -8
  227. package/tests/unit/dependency-integration.test.ts +96 -96
  228. package/tests/unit/do-blocked-tasks.test.ts +1 -1
  229. package/tests/unit/do-command.test.ts +36 -36
  230. package/tests/unit/do-rerun.test.ts +1 -1
  231. package/tests/unit/execution-prompt.test.ts +62 -62
  232. package/tests/unit/git-stash.test.ts +4 -4
  233. package/tests/unit/paths.test.ts +135 -249
  234. package/tests/unit/plan-command.test.ts +103 -103
  235. package/tests/unit/planning-prompt.test.ts +3 -3
  236. package/tests/unit/project-manager.test.ts +9 -10
  237. package/tests/unit/project-picker.test.ts +74 -74
  238. package/tests/unit/pull-request.test.ts +3 -3
  239. package/tests/unit/state-derivation.test.ts +144 -144
  240. package/tests/unit/status-command.test.ts +71 -103
  241. package/tests/unit/worktree.test.ts +32 -33
  242. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/input.md +0 -0
  243. /package/RAF/{aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md → 1-raf-task-improvements/outcomes/1-add-decisions-folder.md} +0 -0
  244. /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
  245. /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
  246. /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
  247. /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
  248. /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
  249. /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
  250. /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
  251. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  252. /package/RAF/{aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md → 1-raf-task-improvements/plans/1-add-decisions-folder.md} +0 -0
  253. /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
  254. /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
  255. /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
  256. /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
  257. /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
  258. /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
  259. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/decisions.md +0 -0
  260. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/input.md +0 -0
  261. /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
  262. /package/RAF/{aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md → 10-outcome-marker-fallback/outcomes/2-creative-project-naming.md} +0 -0
  263. /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
  264. /package/RAF/{aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md → 10-outcome-marker-fallback/plans/2-creative-project-naming.md} +0 -0
  265. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/decisions.md +0 -0
  266. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/input.md +0 -0
  267. /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
  268. /package/RAF/{aaaabl-do-task-in-commit/outcomes/02-update-tests.md → 11-do-task-in-commit/outcomes/2-update-tests.md} +0 -0
  269. /package/RAF/{aaaabl-do-task-in-commit/outcomes/03-update-documentation.md → 11-do-task-in-commit/outcomes/3-update-documentation.md} +0 -0
  270. /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
  271. /package/RAF/{aaaabl-do-task-in-commit/plans/02-update-tests.md → 11-do-task-in-commit/plans/2-update-tests.md} +0 -0
  272. /package/RAF/{aaaabl-do-task-in-commit/plans/03-update-documentation.md → 11-do-task-in-commit/plans/3-update-documentation.md} +0 -0
  273. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/decisions.md +0 -0
  274. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/input.md +0 -0
  275. /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
  276. /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
  277. /package/RAF/{aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md → 12-name-picker-buffet/outcomes/3-raf-status-truncation.md} +0 -0
  278. /package/RAF/{aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md → 12-name-picker-buffet/outcomes/4-failure-reason-details.md} +0 -0
  279. /package/RAF/{aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md → 12-name-picker-buffet/outcomes/5-remove-raf-commits.md} +0 -0
  280. /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
  281. /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
  282. /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
  283. /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
  284. /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
  285. /package/RAF/{aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md → 12-name-picker-buffet/plans/3-raf-status-truncation.md} +0 -0
  286. /package/RAF/{aaaabm-name-picker-buffet/plans/04-failure-reason-details.md → 12-name-picker-buffet/plans/4-failure-reason-details.md} +0 -0
  287. /package/RAF/{aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md → 12-name-picker-buffet/plans/5-remove-raf-commits.md} +0 -0
  288. /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
  289. /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
  290. /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
  291. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/decisions.md +0 -0
  292. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/input.md +0 -0
  293. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md → 13-dependencies-watchdog/outcomes/1-define-dependency-syntax.md} +0 -0
  294. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md → 13-dependencies-watchdog/outcomes/2-update-planning-prompts.md} +0 -0
  295. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md → 13-dependencies-watchdog/outcomes/3-parse-dependencies-update-state.md} +0 -0
  296. /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
  297. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md → 13-dependencies-watchdog/outcomes/5-update-execution-prompts.md} +0 -0
  298. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/06-add-tests.md → 13-dependencies-watchdog/outcomes/6-add-tests.md} +0 -0
  299. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md → 13-dependencies-watchdog/outcomes/7-add-act-alias.md} +0 -0
  300. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md → 13-dependencies-watchdog/outcomes/8-add-exit-message.md} +0 -0
  301. /package/RAF/{aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md → 13-dependencies-watchdog/plans/1-define-dependency-syntax.md} +0 -0
  302. /package/RAF/{aaaabn-dependencies-watchdog/plans/07-add-act-alias.md → 13-dependencies-watchdog/plans/7-add-act-alias.md} +0 -0
  303. /package/RAF/{aaaabn-dependencies-watchdog/plans/08-add-exit-message.md → 13-dependencies-watchdog/plans/8-add-exit-message.md} +0 -0
  304. /package/RAF/{aaaabo-watchdog → 14-watchdog}/decisions.md +0 -0
  305. /package/RAF/{aaaabo-watchdog → 14-watchdog}/input.md +0 -0
  306. /package/RAF/{aaaabo-watchdog/outcomes/01-amend-flag-position.md → 14-watchdog/outcomes/1-amend-flag-position.md} +0 -0
  307. /package/RAF/{aaaabo-watchdog/outcomes/02-details-only-on-failure.md → 14-watchdog/outcomes/2-details-only-on-failure.md} +0 -0
  308. /package/RAF/{aaaabo-watchdog/plans/01-amend-flag-position.md → 14-watchdog/plans/1-amend-flag-position.md} +0 -0
  309. /package/RAF/{aaaabo-watchdog/plans/02-details-only-on-failure.md → 14-watchdog/plans/2-details-only-on-failure.md} +0 -0
  310. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/decisions.md +0 -0
  311. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/input.md +0 -0
  312. /package/RAF/{aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md → 15-name-lottery/outcomes/1-auto-pick-project-name.md} +0 -0
  313. /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
  314. /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
  315. /package/RAF/{aaaabp-name-lottery/plans/01-auto-pick-project-name.md → 15-name-lottery/plans/1-auto-pick-project-name.md} +0 -0
  316. /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
  317. /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
  318. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/decisions.md +0 -0
  319. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/input.md +0 -0
  320. /package/RAF/{aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md → 16-planning-scalpel/outcomes/1-update-git-commit-instructions.md} +0 -0
  321. /package/RAF/{aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md → 16-planning-scalpel/plans/1-update-git-commit-instructions.md} +0 -0
  322. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/decisions.md +0 -0
  323. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/input.md +0 -0
  324. /package/RAF/{aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md → 17-decision-vault/outcomes/1-create-git-commit-utility.md} +0 -0
  325. /package/RAF/{aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md → 17-decision-vault/outcomes/2-integrate-commit-into-plan.md} +0 -0
  326. /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
  327. /package/RAF/{aaaabr-decision-vault/plans/01-create-git-commit-utility.md → 17-decision-vault/plans/1-create-git-commit-utility.md} +0 -0
  328. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/decisions.md +0 -0
  329. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/input.md +0 -0
  330. /package/RAF/{aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md → 18-workflow-forge/outcomes/1-add-task-number-progress.md} +0 -0
  331. /package/RAF/{aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md → 18-workflow-forge/outcomes/2-update-plan-do-prompts.md} +0 -0
  332. /package/RAF/{aaaabs-workflow-forge/plans/01-add-task-number-progress.md → 18-workflow-forge/plans/1-add-task-number-progress.md} +0 -0
  333. /package/RAF/{aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md → 18-workflow-forge/plans/2-update-plan-do-prompts.md} +0 -0
  334. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/decisions.md +0 -0
  335. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/input.md +0 -0
  336. /package/RAF/{aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md → 19-verbose-chronicle/outcomes/1-amend-iteration-references.md} +0 -0
  337. /package/RAF/{aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md → 19-verbose-chronicle/outcomes/2-verbose-task-name-display.md} +0 -0
  338. /package/RAF/{aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md → 19-verbose-chronicle/outcomes/3-verbose-streaming-fix.md} +0 -0
  339. /package/RAF/{aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md → 19-verbose-chronicle/outcomes/4-commit-verification-before-halt.md} +0 -0
  340. /package/RAF/{aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md → 19-verbose-chronicle/plans/1-amend-iteration-references.md} +0 -0
  341. /package/RAF/{aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md → 19-verbose-chronicle/plans/2-verbose-task-name-display.md} +0 -0
  342. /package/RAF/{aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md → 19-verbose-chronicle/plans/3-verbose-streaming-fix.md} +0 -0
  343. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  344. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/input.md +0 -0
  345. /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
  346. /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
  347. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  348. /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
  349. /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
  350. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/decisions.md +0 -0
  351. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/input.md +0 -0
  352. /package/RAF/{aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md → 20-worktree-weaver/outcomes/1-git-worktree-utilities.md} +0 -0
  353. /package/RAF/{aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md → 20-worktree-weaver/outcomes/2-worktree-plan-command.md} +0 -0
  354. /package/RAF/{aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md → 20-worktree-weaver/outcomes/3-worktree-do-command.md} +0 -0
  355. /package/RAF/{aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md → 20-worktree-weaver/outcomes/4-auto-merge-and-cleanup.md} +0 -0
  356. /package/RAF/{aaaacu-worktree-weaver/outcomes/05-worktree-tests.md → 20-worktree-weaver/outcomes/5-worktree-tests.md} +0 -0
  357. /package/RAF/{aaaacu-worktree-weaver/outcomes/06-update-documentation.md → 20-worktree-weaver/outcomes/6-update-documentation.md} +0 -0
  358. /package/RAF/{aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md → 20-worktree-weaver/plans/1-git-worktree-utilities.md} +0 -0
  359. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/decisions.md +0 -0
  360. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/input.md +0 -0
  361. /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
  362. /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
  363. /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
  364. /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
  365. /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
  366. /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
  367. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/decisions.md +0 -0
  368. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/input.md +0 -0
  369. /package/RAF/{aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md → 22-prune-cycle/outcomes/1-create-worktree-from-branch.md} +0 -0
  370. /package/RAF/{aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md → 22-prune-cycle/outcomes/2-cleanup-worktree-on-success.md} +0 -0
  371. /package/RAF/{aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md → 22-prune-cycle/outcomes/3-amend-recreate-worktree.md} +0 -0
  372. /package/RAF/{aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md → 22-prune-cycle/plans/1-create-worktree-from-branch.md} +0 -0
  373. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/decisions.md +0 -0
  374. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/input.md +0 -0
  375. /package/RAF/{aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md → 23-epoch-shift/outcomes/1-epoch-id-generation.md} +0 -0
  376. /package/RAF/{aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md → 23-epoch-shift/outcomes/2-update-pattern-matching.md} +0 -0
  377. /package/RAF/{aaaacx-epoch-shift/outcomes/03-update-tests.md → 23-epoch-shift/outcomes/3-update-tests.md} +0 -0
  378. /package/RAF/{aaaacx-epoch-shift/outcomes/04-update-documentation.md → 23-epoch-shift/outcomes/4-update-documentation.md} +0 -0
  379. /package/RAF/{aaaacx-epoch-shift/plans/01-epoch-id-generation.md → 23-epoch-shift/plans/1-epoch-id-generation.md} +0 -0
  380. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/decisions.md +0 -0
  381. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/input.md +0 -0
  382. /package/RAF/{ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md → 24-merge-guardian/outcomes/1-fix-amend-worktree-commit.md} +0 -0
  383. /package/RAF/{ahmpro-merge-guardian/outcomes/002-base36-task-ids.md → 24-merge-guardian/outcomes/2-base36-task-ids.md} +0 -0
  384. /package/RAF/{ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md → 24-merge-guardian/outcomes/3-worktree-pr-creation.md} +0 -0
  385. /package/RAF/{ahmpro-merge-guardian/outcomes/004-post-execution-picker.md → 24-merge-guardian/outcomes/4-post-execution-picker.md} +0 -0
  386. /package/RAF/{ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md → 24-merge-guardian/plans/1-fix-amend-worktree-commit.md} +0 -0
  387. /package/RAF/{ahmpro-merge-guardian/plans/002-base36-task-ids.md → 24-merge-guardian/plans/2-base36-task-ids.md} +0 -0
  388. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/decisions.md +0 -0
  389. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/input.md +0 -0
  390. /package/RAF/{ahnbcu-letterjam/outcomes/01-base26-encoding.md → 25-letterjam/outcomes/1-base26-encoding.md} +0 -0
  391. /package/RAF/{ahnbcu-letterjam/outcomes/02-update-tests.md → 25-letterjam/outcomes/2-update-tests.md} +0 -0
  392. /package/RAF/{ahnbcu-letterjam/outcomes/03-migrate-command.md → 25-letterjam/outcomes/3-migrate-command.md} +0 -0
  393. /package/RAF/{ahnbcu-letterjam/outcomes/04-update-documentation.md → 25-letterjam/outcomes/4-update-documentation.md} +0 -0
  394. /package/RAF/{ahnbcu-letterjam/plans/01-base26-encoding.md → 25-letterjam/plans/1-base26-encoding.md} +0 -0
  395. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/decisions.md +0 -0
  396. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/input.md +0 -0
  397. /package/RAF/{ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md → 26-worktree-weaver/outcomes/1-remove-co-authored-by.md} +0 -0
  398. /package/RAF/{ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md → 26-worktree-weaver/outcomes/2-update-task-status-format.md} +0 -0
  399. /package/RAF/{ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md → 26-worktree-weaver/outcomes/3-worktree-auto-discovery.md} +0 -0
  400. /package/RAF/{ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md → 26-worktree-weaver/outcomes/4-fix-pr-description.md} +0 -0
  401. /package/RAF/{ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md → 26-worktree-weaver/plans/1-remove-co-authored-by.md} +0 -0
  402. /package/RAF/{ahnwrk-worktree-weaver/plans/02-update-task-status-format.md → 26-worktree-weaver/plans/2-update-task-status-format.md} +0 -0
  403. /package/RAF/{ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md → 26-worktree-weaver/plans/3-worktree-auto-discovery.md} +0 -0
  404. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/decisions.md +0 -0
  405. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/input.md +0 -0
  406. /package/RAF/{ahrren-turbo-finder/outcomes/01-worktree-auto-detect.md → 27-turbo-finder/outcomes/1-worktree-auto-detect.md} +0 -0
  407. /package/RAF/{ahrren-turbo-finder/outcomes/02-medium-effort-do.md → 27-turbo-finder/outcomes/2-medium-effort-do.md} +0 -0
  408. /package/RAF/{ahrren-turbo-finder/plans/01-worktree-auto-detect.md → 27-turbo-finder/plans/1-worktree-auto-detect.md} +0 -0
  409. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/decisions.md +0 -0
  410. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/input.md +0 -0
  411. /package/RAF/{ahslfe-config-wizard/outcomes/01-define-config-schema.md → 28-config-wizard/outcomes/1-define-config-schema.md} +0 -0
  412. /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
  413. /package/RAF/{ahslfe-config-wizard/outcomes/03-create-config-documentation.md → 28-config-wizard/outcomes/3-create-config-documentation.md} +0 -0
  414. /package/RAF/{ahslfe-config-wizard/outcomes/04-implement-raf-config-command.md → 28-config-wizard/outcomes/4-implement-raf-config-command.md} +0 -0
  415. /package/RAF/{ahslfe-config-wizard/outcomes/05-update-claude-md.md → 28-config-wizard/outcomes/5-update-claude-md.md} +0 -0
  416. /package/RAF/{ahslfe-config-wizard/plans/01-define-config-schema.md → 28-config-wizard/plans/1-define-config-schema.md} +0 -0
  417. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/decisions.md +0 -0
  418. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/input.md +0 -0
  419. /package/RAF/{ahstvo-token-tracker/outcomes/01-full-model-id-support.md → 29-token-tracker/outcomes/1-full-model-id-support.md} +0 -0
  420. /package/RAF/{ahstvo-token-tracker/outcomes/02-name-generation-no-session.md → 29-token-tracker/outcomes/2-name-generation-no-session.md} +0 -0
  421. /package/RAF/{ahstvo-token-tracker/outcomes/03-unify-stream-json-execution.md → 29-token-tracker/outcomes/3-unify-stream-json-execution.md} +0 -0
  422. /package/RAF/{ahstvo-token-tracker/outcomes/04-token-tracking-cost-calculation.md → 29-token-tracker/outcomes/4-token-tracking-cost-calculation.md} +0 -0
  423. /package/RAF/{ahstvo-token-tracker/outcomes/05-token-cost-console-reporting.md → 29-token-tracker/outcomes/5-token-cost-console-reporting.md} +0 -0
  424. /package/RAF/{ahstvo-token-tracker/outcomes/06-runtime-verbose-toggle.md → 29-token-tracker/outcomes/6-runtime-verbose-toggle.md} +0 -0
  425. /package/RAF/{ahstvo-token-tracker/outcomes/07-readme-config-docs.md → 29-token-tracker/outcomes/7-readme-config-docs.md} +0 -0
  426. /package/RAF/{ahstvo-token-tracker/plans/01-full-model-id-support.md → 29-token-tracker/plans/1-full-model-id-support.md} +0 -0
  427. /package/RAF/{ahstvo-token-tracker/plans/02-name-generation-no-session.md → 29-token-tracker/plans/2-name-generation-no-session.md} +0 -0
  428. /package/RAF/{ahstvo-token-tracker/plans/07-readme-config-docs.md → 29-token-tracker/plans/7-readme-config-docs.md} +0 -0
  429. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/decisions/DECISIONS.md +0 -0
  430. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/input.md +0 -0
  431. /package/RAF/{aaaaad-multi-project-execution/outcomes/01-remove-state-json.md → 3-multi-project-execution/outcomes/1-remove-state-json.md} +0 -0
  432. /package/RAF/{aaaaad-multi-project-execution/outcomes/02-update-raf-status.md → 3-multi-project-execution/outcomes/2-update-raf-status.md} +0 -0
  433. /package/RAF/{aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md → 3-multi-project-execution/outcomes/3-simplify-git-logic.md} +0 -0
  434. /package/RAF/{aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md → 3-multi-project-execution/outcomes/4-auto-commit-planning.md} +0 -0
  435. /package/RAF/{aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md → 3-multi-project-execution/outcomes/5-rerun-failed-tasks.md} +0 -0
  436. /package/RAF/{aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md → 3-multi-project-execution/outcomes/6-multi-project-execution.md} +0 -0
  437. /package/RAF/{aaaaad-multi-project-execution/outcomes/07-verify-timeout.md → 3-multi-project-execution/outcomes/7-verify-timeout.md} +0 -0
  438. /package/RAF/{aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md → 3-multi-project-execution/outcomes/8-move-decisions-file.md} +0 -0
  439. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  440. /package/RAF/{aaaaad-multi-project-execution/plans/01-remove-state-json.md → 3-multi-project-execution/plans/1-remove-state-json.md} +0 -0
  441. /package/RAF/{aaaaad-multi-project-execution/plans/02-update-raf-status.md → 3-multi-project-execution/plans/2-update-raf-status.md} +0 -0
  442. /package/RAF/{aaaaad-multi-project-execution/plans/03-simplify-git-logic.md → 3-multi-project-execution/plans/3-simplify-git-logic.md} +0 -0
  443. /package/RAF/{aaaaad-multi-project-execution/plans/04-auto-commit-planning.md → 3-multi-project-execution/plans/4-auto-commit-planning.md} +0 -0
  444. /package/RAF/{aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md → 3-multi-project-execution/plans/5-rerun-failed-tasks.md} +0 -0
  445. /package/RAF/{aaaaad-multi-project-execution/plans/06-multi-project-execution.md → 3-multi-project-execution/plans/6-multi-project-execution.md} +0 -0
  446. /package/RAF/{aaaaad-multi-project-execution/plans/07-verify-timeout.md → 3-multi-project-execution/plans/7-verify-timeout.md} +0 -0
  447. /package/RAF/{aaaaad-multi-project-execution/plans/08-move-decisions-file.md → 3-multi-project-execution/plans/8-move-decisions-file.md} +0 -0
  448. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/decisions.md +0 -0
  449. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/input.md +0 -0
  450. /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
  451. /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
  452. /package/RAF/{ahtahs-token-reaper/outcomes/03-per-attempt-display-formatting.md → 30-token-reaper/outcomes/3-per-attempt-display-formatting.md} +0 -0
  453. /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
  454. /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
  455. /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
  456. /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
  457. /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
  458. /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
  459. /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
  460. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/decisions.md +0 -0
  461. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/input.md +0 -0
  462. /package/RAF/{ahvrih-rate-forge/outcomes/01-remove-claude-command-config.md → 31-rate-forge/outcomes/1-remove-claude-command-config.md} +0 -0
  463. /package/RAF/{ahvrih-rate-forge/outcomes/02-fix-mixed-attempt-cost.md → 31-rate-forge/outcomes/2-fix-mixed-attempt-cost.md} +0 -0
  464. /package/RAF/{ahvrih-rate-forge/outcomes/03-rate-limit-estimation.md → 31-rate-forge/outcomes/3-rate-limit-estimation.md} +0 -0
  465. /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
  466. /package/RAF/{ahvrih-rate-forge/outcomes/05-sync-main-before-worktree.md → 31-rate-forge/outcomes/5-sync-main-before-worktree.md} +0 -0
  467. /package/RAF/{ahvrih-rate-forge/outcomes/06-sync-readme-with-codebase.md → 31-rate-forge/outcomes/6-sync-readme-with-codebase.md} +0 -0
  468. /package/RAF/{ahvrih-rate-forge/outcomes/07-no-session-persistence.md → 31-rate-forge/outcomes/7-no-session-persistence.md} +0 -0
  469. /package/RAF/{ahvrih-rate-forge/outcomes/08-plan-execution-metadata.md → 31-rate-forge/outcomes/8-plan-execution-metadata.md} +0 -0
  470. /package/RAF/{ahvrih-rate-forge/plans/01-remove-claude-command-config.md → 31-rate-forge/plans/1-remove-claude-command-config.md} +0 -0
  471. /package/RAF/{ahvrih-rate-forge/plans/02-fix-mixed-attempt-cost.md → 31-rate-forge/plans/2-fix-mixed-attempt-cost.md} +0 -0
  472. /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
  473. /package/RAF/{ahvrih-rate-forge/plans/05-sync-main-before-worktree.md → 31-rate-forge/plans/5-sync-main-before-worktree.md} +0 -0
  474. /package/RAF/{ahvrih-rate-forge/plans/07-no-session-persistence.md → 31-rate-forge/plans/7-no-session-persistence.md} +0 -0
  475. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/decisions.md +0 -0
  476. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/input.md +0 -0
  477. /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
  478. /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
  479. /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
  480. /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
  481. /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
  482. /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
  483. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/07-update-frontmatter-format.md → 32-quick-fix-gremlin/outcomes/7-update-frontmatter-format.md} +0 -0
  484. /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
  485. /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
  486. /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
  487. /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
  488. /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
  489. /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
  490. /package/RAF/{ahwidh-quick-fix-gremlin/plans/07-update-frontmatter-format.md → 32-quick-fix-gremlin/plans/7-update-frontmatter-format.md} +0 -0
  491. /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
  492. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/decisions.md +0 -0
  493. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/input.md +0 -0
  494. /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
  495. /package/RAF/{ahwqwq-model-whisperer/outcomes/02-use-claude-cost-estimation.md → 33-model-whisperer/outcomes/2-use-claude-cost-estimation.md} +0 -0
  496. /package/RAF/{ahwqwq-model-whisperer/outcomes/03-add-plan-resume-flag.md → 33-model-whisperer/outcomes/3-add-plan-resume-flag.md} +0 -0
  497. /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
  498. /package/RAF/{ahwqwq-model-whisperer/plans/02-use-claude-cost-estimation.md → 33-model-whisperer/plans/2-use-claude-cost-estimation.md} +0 -0
  499. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/decisions.md +0 -0
  500. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/input.md +0 -0
  501. /package/RAF/{ahwvrz-legacy-sunset/outcomes/01-remove-migrate-command.md → 34-legacy-sunset/outcomes/1-remove-migrate-command.md} +0 -0
  502. /package/RAF/{ahwvrz-legacy-sunset/outcomes/02-fix-resume-worktree-resolution.md → 34-legacy-sunset/outcomes/2-fix-resume-worktree-resolution.md} +0 -0
  503. /package/RAF/{ahwvrz-legacy-sunset/plans/01-remove-migrate-command.md → 34-legacy-sunset/plans/1-remove-migrate-command.md} +0 -0
  504. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/decisions.md +0 -0
  505. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/input.md +0 -0
  506. /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
  507. /package/RAF/{ahwzmc-echo-forge/outcomes/02-add-no-worktree-flag.md → 35-echo-forge/outcomes/2-add-no-worktree-flag.md} +0 -0
  508. /package/RAF/{ahwzmc-echo-forge/outcomes/03-update-readme.md → 35-echo-forge/outcomes/3-update-readme.md} +0 -0
  509. /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
  510. /package/RAF/{ahwzmc-echo-forge/plans/02-add-no-worktree-flag.md → 35-echo-forge/plans/2-add-no-worktree-flag.md} +0 -0
  511. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/decisions.md +0 -0
  512. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/input.md +0 -0
  513. /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
  514. /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
  515. /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
  516. /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
  517. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/decisions.md +0 -0
  518. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/input.md +0 -0
  519. /package/RAF/{aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md → 4-task-naming-optimization/outcomes/1-remove-summary-file.md} +0 -0
  520. /package/RAF/{aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md → 4-task-naming-optimization/outcomes/2-base36-project-numbering.md} +0 -0
  521. /package/RAF/{aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md → 4-task-naming-optimization/outcomes/3-improve-haiku-prompt.md} +0 -0
  522. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  523. /package/RAF/{aaaaae-task-naming-optimization/plans/01-remove-summary-file.md → 4-task-naming-optimization/plans/1-remove-summary-file.md} +0 -0
  524. /package/RAF/{aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md → 4-task-naming-optimization/plans/2-base36-project-numbering.md} +0 -0
  525. /package/RAF/{aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md → 4-task-naming-optimization/plans/3-improve-haiku-prompt.md} +0 -0
  526. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/decisions.md +0 -0
  527. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/input.md +0 -0
  528. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md → 5-task-naming-improvements/outcomes/1-enhance-identifier-resolution.md} +0 -0
  529. /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
  530. /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
  531. /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
  532. /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
  533. /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
  534. /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
  535. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md → 5-task-naming-improvements/outcomes/8-fix-timeout-label.md} +0 -0
  536. /package/RAF/{aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md → 5-task-naming-improvements/plans/1-enhance-identifier-resolution.md} +0 -0
  537. /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
  538. /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
  539. /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
  540. /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
  541. /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
  542. /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
  543. /package/RAF/{aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md → 5-task-naming-improvements/plans/8-fix-timeout-label.md} +0 -0
  544. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/decisions.md +0 -0
  545. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/input.md +0 -0
  546. /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
  547. /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
  548. /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
  549. /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
  550. /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
  551. /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
  552. /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
  553. /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
  554. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/decisions.md +0 -0
  555. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/input.md +0 -0
  556. /package/RAF/{aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md → 7-improve-outcome-format/outcomes/1-update-execution-prompt.md} +0 -0
  557. /package/RAF/{aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md → 7-improve-outcome-format/outcomes/2-update-state-derivation.md} +0 -0
  558. /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
  559. /package/RAF/{aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md → 7-improve-outcome-format/outcomes/4-implement-failure-analysis.md} +0 -0
  560. /package/RAF/{aaaaah-improve-outcome-format/outcomes/05-update-documentation.md → 7-improve-outcome-format/outcomes/5-update-documentation.md} +0 -0
  561. /package/RAF/{aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md → 7-improve-outcome-format/plans/1-update-execution-prompt.md} +0 -0
  562. /package/RAF/{aaaaah-improve-outcome-format/plans/02-update-state-derivation.md → 7-improve-outcome-format/plans/2-update-state-derivation.md} +0 -0
  563. /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
  564. /package/RAF/{aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md → 7-improve-outcome-format/plans/4-implement-failure-analysis.md} +0 -0
  565. /package/RAF/{aaaaah-improve-outcome-format/plans/05-update-documentation.md → 7-improve-outcome-format/plans/5-update-documentation.md} +0 -0
  566. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/decisions.md +0 -0
  567. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/input.md +0 -0
  568. /package/RAF/{aaaaai-beautiful-do/outcomes/01-terminal-symbols.md → 8-beautiful-do/outcomes/1-terminal-symbols.md} +0 -0
  569. /package/RAF/{aaaaai-beautiful-do/outcomes/02-refactor-do-output.md → 8-beautiful-do/outcomes/2-refactor-do-output.md} +0 -0
  570. /package/RAF/{aaaaai-beautiful-do/outcomes/03-refactor-status-output.md → 8-beautiful-do/outcomes/3-refactor-status-output.md} +0 -0
  571. /package/RAF/{aaaaai-beautiful-do/outcomes/04-simplify-logger.md → 8-beautiful-do/outcomes/4-simplify-logger.md} +0 -0
  572. /package/RAF/{aaaaai-beautiful-do/outcomes/05-add-tests.md → 8-beautiful-do/outcomes/5-add-tests.md} +0 -0
  573. /package/RAF/{aaaaai-beautiful-do/plans/01-terminal-symbols.md → 8-beautiful-do/plans/1-terminal-symbols.md} +0 -0
  574. /package/RAF/{aaaaai-beautiful-do/plans/02-refactor-do-output.md → 8-beautiful-do/plans/2-refactor-do-output.md} +0 -0
  575. /package/RAF/{aaaaai-beautiful-do/plans/03-refactor-status-output.md → 8-beautiful-do/plans/3-refactor-status-output.md} +0 -0
  576. /package/RAF/{aaaaai-beautiful-do/plans/04-simplify-logger.md → 8-beautiful-do/plans/4-simplify-logger.md} +0 -0
  577. /package/RAF/{aaaaai-beautiful-do/plans/05-add-tests.md → 8-beautiful-do/plans/5-add-tests.md} +0 -0
  578. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/decisions.md +0 -0
  579. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/input.md +0 -0
  580. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/01-model-override.md → 9-system-promt-ammend/outcomes/1-model-override.md} +0 -0
  581. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md → 9-system-promt-ammend/outcomes/2-system-prompt-append.md} +0 -0
  582. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/03-retry-context.md → 9-system-promt-ammend/outcomes/3-retry-context.md} +0 -0
  583. /package/RAF/{aaaaaj-system-promt-ammend/plans/01-model-override.md → 9-system-promt-ammend/plans/1-model-override.md} +0 -0
  584. /package/RAF/{aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md → 9-system-promt-ammend/plans/2-system-prompt-append.md} +0 -0
  585. /package/RAF/{aaaaaj-system-promt-ammend/plans/03-retry-context.md → 9-system-promt-ammend/plans/3-retry-context.md} +0 -0
@@ -22,9 +22,9 @@ The above only changes `models.plan` — all other model settings keep their def
22
22
 
23
23
  ## Config Reference
24
24
 
25
- ### `models` — Claude Model Selection
25
+ ### `models` — Model Selection
26
26
 
27
- Controls which Claude model is used for each scenario. Values can be a short alias (`"sonnet"`, `"haiku"`, `"opus"`) or a full model ID.
27
+ Controls which model is used for each scenario. Values can be a short alias (`"sonnet"`, `"haiku"`, `"opus"`) or a full model ID.
28
28
 
29
29
  **Model ID format**: Full model IDs follow the pattern `claude-{family}-{version}`, for example:
30
30
  - `"claude-opus-4-5-20251101"` — Opus 4.5 from November 2025
@@ -45,7 +45,7 @@ Controls which Claude model is used for each scenario. Values can be a short ali
45
45
 
46
46
  ### `effortMapping` — Task Effort to Model Mapping
47
47
 
48
- Maps task complexity labels (in plan frontmatter) to Claude models. When a plan file has `effort: medium`, RAF resolves the execution model using this mapping.
48
+ Maps task complexity labels (in plan frontmatter) to models. When a plan file has `effort: medium`, RAF resolves the execution model using this mapping.
49
49
 
50
50
  | Key | Default | Description |
51
51
  |-----|---------|-------------|
@@ -84,13 +84,13 @@ Example:
84
84
 
85
85
  - **Type**: boolean
86
86
  - **Default**: `true`
87
- - **Description**: When `true`, Claude automatically commits changes after completing each task. When `false`, changes are left uncommitted.
87
+ - **Description**: When `true`, RAF automatically commits changes after completing each task. When `false`, changes are left uncommitted.
88
88
 
89
89
  ### `worktree` — Default Worktree Mode
90
90
 
91
91
  - **Type**: boolean
92
92
  - **Default**: `false`
93
- - **Description**: When `true`, `raf plan` and `raf do` default to worktree mode (isolated git worktree). Can be overridden per-command with `--worktree` flag.
93
+ - **Description**: When `true`, `raf plan` defaults to worktree mode (isolated git worktree). Can be overridden with `--worktree` flag. `raf do` auto-detects worktree projects regardless of this setting.
94
94
 
95
95
  ### `syncMainBranch` — Sync Main Branch with Remote
96
96
 
@@ -158,7 +158,7 @@ Example:
158
158
  The config is validated when loaded. Invalid configs cause an error with a descriptive message. The following rules are enforced:
159
159
 
160
160
  - **Unknown keys are rejected** at every nesting level. Typos like `"model"` instead of `"models"` will be caught.
161
- - **Model values** (`models.*`, `effortMapping.*`) must be a short alias (`"sonnet"`, `"haiku"`, `"opus"`) or a full model ID matching the pattern `claude-{family}-{version}` (e.g., `"claude-sonnet-4-5-20250929"`).
161
+ - **Model values** (`models.*`, `effortMapping.*`) must be a short alias (`"sonnet"`, `"haiku"`, `"opus"`) or a full model ID (e.g., `"claude-sonnet-4-5-20250929"`, `"o3"`).
162
162
  - **`effortMapping` keys** must be `"low"`, `"medium"`, or `"high"`.
163
163
  - **`timeout`** must be a positive finite number.
164
164
  - **`maxRetries`** must be a non-negative integer.
@@ -277,9 +277,9 @@ To reset a single setting, remove its key from the config file. Any key not pres
277
277
 
278
278
  ---
279
279
 
280
- ## For Claude — Config Editing Session Instructions
280
+ ## Config Editing Session Instructions
281
281
 
282
- This section contains instructions for Claude when operating as the interactive config editor during `raf config` sessions.
282
+ This section contains instructions for the LLM when operating as the interactive config editor during `raf config` sessions.
283
283
 
284
284
  ### Your Role
285
285
 
@@ -85,8 +85,8 @@ ${previousOutcomes.map((o) => `### Task ${o.taskId}\n${o.content}`).join('\n\n')
85
85
  `;
86
86
  }
87
87
 
88
- // Encode task number to 2-char base36
89
- const paddedTaskNumber = taskNumber.toString(36).padStart(2, '0');
88
+ // Encode task number to plain numeric string
89
+ const paddedTaskNumber = taskNumber.toString();
90
90
 
91
91
  // Build example commit message from config template
92
92
  const commitTemplate = getCommitFormat('task');
@@ -12,12 +12,10 @@ export interface PlanningPromptResult {
12
12
  /**
13
13
  * Generate the planning prompt with system instructions and user message separated.
14
14
  * - systemPrompt: RAF planning conventions, file structure, interview process (via --append-system-prompt)
15
- * - userMessage: Reference to input.md file (via positional argument, triggers Claude to start)
15
+ * - userMessage: Reference to input.md file (via positional argument, triggers the LLM to start)
16
16
  */
17
17
  export function getPlanningPrompt(params: PlanningPromptParams): PlanningPromptResult {
18
- const { projectPath, worktreeMode } = params;
19
- const worktreeFlag = worktreeMode ? ' --worktree' : '';
20
-
18
+ const { projectPath } = params;
21
19
  const systemPrompt = `You are a project planning assistant for RAF (Ralph's Automation Framework). Your task is to analyze the user's project description and create detailed task plans.
22
20
 
23
21
  ## Your Goals
@@ -37,7 +35,7 @@ Project folder: ${projectPath}
37
35
  Based on the project description, identify distinct tasks. Each task should:
38
36
  - Be independently completable
39
37
  - Have a clear outcome
40
- - Take roughly 10-30 minutes of work for Claude
38
+ - Take roughly 10-30 minutes of work
41
39
 
42
40
  **CRITICAL: Order tasks by logical execution order.** Lower-numbered tasks should be completed before higher-numbered ones. Consider:
43
41
  - Setup/foundation tasks come first (e.g., defining schemas, creating interfaces)
@@ -76,8 +74,8 @@ This file serves as documentation of design choices made during planning. Append
76
74
  ### Step 3: Create Plan Files
77
75
 
78
76
  After interviewing the user about all tasks, create plan files in the plans folder:
79
- - ${projectPath}/plans/01-task-name.md
80
- - ${projectPath}/plans/02-task-name.md
77
+ - ${projectPath}/plans/1-task-name.md
78
+ - ${projectPath}/plans/2-task-name.md
81
79
  - etc.
82
80
 
83
81
  Each plan file MUST have Obsidian-style frontmatter at the top, before the \`# Task:\` heading. The frontmatter uses standard YAML format with opening and closing \`---\` delimiters:
@@ -96,7 +94,7 @@ effort: medium
96
94
 
97
95
  ## Dependencies
98
96
  [Optional section - omit if task has no dependencies]
99
- [Comma-separated list of task IDs this task depends on, e.g., "01, 02"]
97
+ [Comma-separated list of task IDs this task depends on, e.g., "1, 2"]
100
98
  [If a dependency fails, this task will be automatically blocked]
101
99
 
102
100
  ## Requirements
@@ -122,7 +120,7 @@ effort: medium
122
120
 
123
121
  ### Frontmatter Requirements
124
122
 
125
- The \`effort\` field is REQUIRED in every plan file. It indicates task complexity and determines which Claude model will execute the task:
123
+ The \`effort\` field is REQUIRED in every plan file. It indicates task complexity and determines which model will execute the task:
126
124
  - \`effort: low\` — Trivial/mechanical changes, simple one-file edits, config changes
127
125
  - \`effort: medium\` — Well-scoped feature work, bug fixes with clear plans, multi-file changes following existing patterns
128
126
  - \`effort: high\` — Architectural changes, complex logic, tasks requiring deep codebase understanding
@@ -151,12 +149,12 @@ For each task, analyze which other tasks must complete successfully before it ca
151
149
  **Dependency format examples:**
152
150
  \`\`\`markdown
153
151
  ## Dependencies
154
- 01
152
+ 1
155
153
  \`\`\`
156
154
  or for multiple dependencies:
157
155
  \`\`\`markdown
158
156
  ## Dependencies
159
- 01, 02
157
+ 1, 2
160
158
  \`\`\`
161
159
 
162
160
  **Rules for dependencies:**
@@ -169,21 +167,21 @@ or for multiple dependencies:
169
167
 
170
168
  After creating all plan files:
171
169
  1. Provide a summary of the tasks you've created, including the effort level for each task. Example:
172
- - Task 01: setup-database (effort: low)
173
- - Task 02: implement-auth (effort: medium)
174
- - Task 03: refactor-api (effort: high)
170
+ - Task 1: setup-database (effort: low)
171
+ - Task 2: implement-auth (effort: medium)
172
+ - Task 3: refactor-api (effort: high)
175
173
  2. Display this exit message to the user:
176
174
 
177
175
  \`\`\`
178
176
  Planning complete! To exit this session and run your tasks:
179
177
  1. Press Ctrl-C twice to exit
180
- 2. Then run: raf do <project>${worktreeFlag}
178
+ 2. Then run: raf do <project>
181
179
  \`\`\`
182
180
 
183
181
  ## Important Rules
184
182
 
185
183
  1. ALWAYS interview the user before creating plans
186
- 2. Create plans in numbered order (01, 02, 03, etc.) reflecting logical execution order
184
+ 2. Create plans in numbered order (1, 2, 3, etc.) reflecting logical execution order
187
185
  3. Use descriptive, kebab-case names for plan files
188
186
  4. Each plan should be self-contained with all context needed
189
187
  5. Infer dependencies automatically - analyze task relationships, don't ask the user about dependencies
@@ -1,12 +1,25 @@
1
+ /** CLI harness provider */
2
+ export type HarnessProvider = 'claude' | 'codex';
3
+
1
4
  /** Short alias for a Claude model family */
2
5
  export type ClaudeModelAlias = 'sonnet' | 'haiku' | 'opus';
3
6
 
7
+ /** Short alias for a Codex model family */
8
+ export type CodexModelAlias = 'spark' | 'codex' | 'gpt54';
9
+
10
+ /** Provider-agnostic model alias (union of all provider aliases) */
11
+ export type ModelAlias = ClaudeModelAlias | CodexModelAlias;
12
+
4
13
  /**
5
14
  * Accepts short aliases (`sonnet`, `haiku`, `opus`) or full model IDs
6
15
  * matching the pattern `claude-{family}-{version}` (e.g., `claude-opus-4-5-20251101`).
16
+ * Also accepts harness-prefixed format: `claude/opus`, `codex/gpt-5.4`.
7
17
  */
8
18
  export type ClaudeModelName = ClaudeModelAlias | (string & { __brand?: 'FullModelId' });
9
19
 
20
+ /** Provider-agnostic model name — accepts any alias, full ID, or harness-prefixed format */
21
+ export type ModelName = string & { __brand?: 'ModelName' };
22
+
10
23
  /** Task complexity label for per-task effort frontmatter. Maps to models via effortMapping. */
11
24
  export type TaskEffortLevel = 'low' | 'medium' | 'high';
12
25
 
@@ -46,9 +59,15 @@ export interface DisplayConfig {
46
59
  }
47
60
 
48
61
  export interface RafConfig {
62
+ /** CLI harness provider. Default: 'claude' */
63
+ provider: HarnessProvider;
49
64
  models: ModelsConfig;
50
65
  /** Maps task complexity labels (low/medium/high) to models. Used for per-task effort frontmatter. */
51
66
  effortMapping: EffortMappingConfig;
67
+ /** Codex model assignments per scenario */
68
+ codexModels: ModelsConfig;
69
+ /** Maps task complexity labels to Codex models */
70
+ codexEffortMapping: EffortMappingConfig;
52
71
  timeout: number;
53
72
  maxRetries: number;
54
73
  autoCommit: boolean;
@@ -60,6 +79,7 @@ export interface RafConfig {
60
79
  }
61
80
 
62
81
  export const DEFAULT_CONFIG: RafConfig = {
82
+ provider: 'claude',
63
83
  models: {
64
84
  plan: 'opus',
65
85
  execute: 'opus',
@@ -73,6 +93,19 @@ export const DEFAULT_CONFIG: RafConfig = {
73
93
  medium: 'opus',
74
94
  high: 'opus',
75
95
  },
96
+ codexModels: {
97
+ plan: 'gpt-5.3-codex',
98
+ execute: 'gpt-5.4',
99
+ nameGeneration: 'gpt-5.3-codex-spark',
100
+ failureAnalysis: 'gpt-5.3-codex-spark',
101
+ prGeneration: 'gpt-5.3-codex',
102
+ config: 'gpt-5.3-codex',
103
+ },
104
+ codexEffortMapping: {
105
+ low: 'gpt-5.3-codex-spark',
106
+ medium: 'gpt-5.3-codex',
107
+ high: 'gpt-5.4',
108
+ },
76
109
  timeout: 60,
77
110
  maxRetries: 3,
78
111
  autoCommit: true,
@@ -98,6 +131,10 @@ export type UserConfig = DeepPartial<RafConfig>;
98
131
 
99
132
  export const VALID_MODEL_ALIASES: readonly ClaudeModelAlias[] = ['sonnet', 'haiku', 'opus'];
100
133
 
134
+ export const VALID_CODEX_MODEL_ALIASES: readonly CodexModelAlias[] = ['spark', 'codex', 'gpt54'];
135
+
136
+ export const VALID_HARNESS_PROVIDERS: readonly HarnessProvider[] = ['claude', 'codex'];
137
+
101
138
  /**
102
139
  * Regex for full Claude model IDs (e.g., `claude-sonnet-4-5-20250929`, `claude-opus-4-5-20251101`).
103
140
  * Pattern: claude-{family}-{major}(-{minor})?(-{date})?
@@ -122,6 +159,7 @@ export interface PlanCommandOptions {
122
159
  projectName?: string;
123
160
  model?: ClaudeModelName;
124
161
  sonnet?: boolean;
162
+ provider?: HarnessProvider;
125
163
  }
126
164
 
127
165
  export interface DoCommandOptions {
@@ -131,7 +169,7 @@ export interface DoCommandOptions {
131
169
  force?: boolean;
132
170
  model?: ClaudeModelName;
133
171
  sonnet?: boolean;
134
- worktree?: boolean;
172
+ provider?: HarnessProvider;
135
173
  }
136
174
 
137
175
  export interface StatusCommandOptions {
@@ -1,6 +1,7 @@
1
1
  import { select } from '@inquirer/prompts';
2
2
  import { discoverProjects, deriveProjectState, getDerivedStats } from '../core/state-derivation.js';
3
3
  import { extractProjectNumber, extractProjectName, parseProjectPrefix, formatProjectNumber } from '../utils/paths.js';
4
+
4
5
  import { listWorktreeProjects, computeWorktreePath } from '../core/worktree.js';
5
6
  import * as fs from 'node:fs';
6
7
  import * as path from 'node:path';
@@ -7,6 +7,8 @@ import {
7
7
  DEFAULT_RAF_CONFIG,
8
8
  UserConfig,
9
9
  VALID_MODEL_ALIASES,
10
+ VALID_CODEX_MODEL_ALIASES,
11
+ VALID_HARNESS_PROVIDERS,
10
12
  FULL_MODEL_ID_PATTERN,
11
13
  ClaudeModelName,
12
14
  TaskEffortLevel,
@@ -14,6 +16,7 @@ import {
14
16
  CommitFormatType,
15
17
  DisplayConfig,
16
18
  EffortMappingConfig,
19
+ HarnessProvider,
17
20
  } from '../types/config.js';
18
21
 
19
22
  const CONFIG_DIR = path.join(os.homedir(), '.raf');
@@ -33,7 +36,8 @@ export function getClaudeSettingsPath(): string {
33
36
  // ---- Validation ----
34
37
 
35
38
  const VALID_TOP_LEVEL_KEYS = new Set<string>([
36
- 'models', 'effortMapping', 'timeout', 'maxRetries', 'autoCommit',
39
+ 'provider', 'models', 'effortMapping', 'codexModels', 'codexEffortMapping',
40
+ 'timeout', 'maxRetries', 'autoCommit',
37
41
  'worktree', 'syncMainBranch', 'commitFormat', 'display',
38
42
  ]);
39
43
 
@@ -62,11 +66,64 @@ function checkUnknownKeys(obj: Record<string, unknown>, validKeys: Set<string>,
62
66
  }
63
67
  }
64
68
 
69
+ /** Regex for raw Codex model IDs (e.g., `gpt-5.4`, `gpt-5.3-codex-spark`). Requires dot-separated version. */
70
+ const CODEX_MODEL_ID_PATTERN = /^gpt-\d+\.\d+(-.+)*$/;
71
+
65
72
  /**
66
- * Check whether a string is a valid model name — either a short alias or a full model ID.
73
+ * Check whether a string is a valid model name.
74
+ * Accepts:
75
+ * - Claude short aliases: sonnet, haiku, opus
76
+ * - Claude full IDs: claude-opus-4-6
77
+ * - Codex short aliases: spark, codex, gpt54
78
+ * - Raw Codex model IDs: gpt-5.4, gpt-5.3-codex-spark
79
+ * - Harness-prefixed format: claude/opus, codex/gpt-5.4
67
80
  */
68
81
  export function isValidModelName(value: string): boolean {
69
- return (VALID_MODEL_ALIASES as readonly string[]).includes(value) || FULL_MODEL_ID_PATTERN.test(value);
82
+ // Harness-prefixed format: provider/model
83
+ const prefixMatch = value.match(/^(claude|codex)\/(.+)$/);
84
+ if (prefixMatch) {
85
+ const [, provider, model] = prefixMatch;
86
+ if (provider === 'claude') {
87
+ return (VALID_MODEL_ALIASES as readonly string[]).includes(model!) || FULL_MODEL_ID_PATTERN.test(model!);
88
+ }
89
+ if (provider === 'codex') {
90
+ return (VALID_CODEX_MODEL_ALIASES as readonly string[]).includes(model!) || CODEX_MODEL_ID_PATTERN.test(model!);
91
+ }
92
+ }
93
+
94
+ // Unprefixed: Claude aliases and full IDs
95
+ if ((VALID_MODEL_ALIASES as readonly string[]).includes(value) || FULL_MODEL_ID_PATTERN.test(value)) {
96
+ return true;
97
+ }
98
+
99
+ // Unprefixed: Codex aliases and raw IDs
100
+ if ((VALID_CODEX_MODEL_ALIASES as readonly string[]).includes(value) || CODEX_MODEL_ID_PATTERN.test(value)) {
101
+ return true;
102
+ }
103
+
104
+ return false;
105
+ }
106
+
107
+ /**
108
+ * Parse a model spec string into its provider and model components.
109
+ * - `codex/gpt-5.4` -> { provider: 'codex', model: 'gpt-5.4' }
110
+ * - `claude/opus` -> { provider: 'claude', model: 'opus' }
111
+ * - `opus` -> { provider: 'claude', model: 'opus' } (defaults to claude)
112
+ * - `gpt-5.4` -> { provider: 'codex', model: 'gpt-5.4' } (inferred from model format)
113
+ */
114
+ export function parseModelSpec(modelSpec: string): { provider: HarnessProvider; model: string } {
115
+ const prefixMatch = modelSpec.match(/^(claude|codex)\/(.+)$/);
116
+ if (prefixMatch) {
117
+ return { provider: prefixMatch[1] as HarnessProvider, model: prefixMatch[2]! };
118
+ }
119
+
120
+ // Infer provider from model format
121
+ if ((VALID_CODEX_MODEL_ALIASES as readonly string[]).includes(modelSpec) || CODEX_MODEL_ID_PATTERN.test(modelSpec)) {
122
+ return { provider: 'codex', model: modelSpec };
123
+ }
124
+
125
+ // Default to claude
126
+ return { provider: 'claude', model: modelSpec };
70
127
  }
71
128
 
72
129
  export function validateConfig(config: unknown): UserConfig {
@@ -77,6 +134,13 @@ export function validateConfig(config: unknown): UserConfig {
77
134
  const obj = config as Record<string, unknown>;
78
135
  checkUnknownKeys(obj, VALID_TOP_LEVEL_KEYS, '');
79
136
 
137
+ // provider
138
+ if (obj.provider !== undefined) {
139
+ if (typeof obj.provider !== 'string' || !(VALID_HARNESS_PROVIDERS as readonly string[]).includes(obj.provider)) {
140
+ throw new ConfigValidationError(`provider must be one of: ${VALID_HARNESS_PROVIDERS.join(', ')}`);
141
+ }
142
+ }
143
+
80
144
  // models
81
145
  if (obj.models !== undefined) {
82
146
  if (typeof obj.models !== 'object' || obj.models === null || Array.isArray(obj.models)) {
@@ -109,6 +173,38 @@ export function validateConfig(config: unknown): UserConfig {
109
173
  }
110
174
  }
111
175
 
176
+ // codexModels
177
+ if (obj.codexModels !== undefined) {
178
+ if (typeof obj.codexModels !== 'object' || obj.codexModels === null || Array.isArray(obj.codexModels)) {
179
+ throw new ConfigValidationError('codexModels must be an object');
180
+ }
181
+ const codexModels = obj.codexModels as Record<string, unknown>;
182
+ checkUnknownKeys(codexModels, VALID_MODEL_KEYS, 'codexModels');
183
+ for (const [key, val] of Object.entries(codexModels)) {
184
+ if (typeof val !== 'string' || !isValidModelName(val)) {
185
+ throw new ConfigValidationError(
186
+ `codexModels.${key} must be a valid model name (e.g., gpt-5.4, gpt-5.3-codex-spark)`
187
+ );
188
+ }
189
+ }
190
+ }
191
+
192
+ // codexEffortMapping
193
+ if (obj.codexEffortMapping !== undefined) {
194
+ if (typeof obj.codexEffortMapping !== 'object' || obj.codexEffortMapping === null || Array.isArray(obj.codexEffortMapping)) {
195
+ throw new ConfigValidationError('codexEffortMapping must be an object');
196
+ }
197
+ const codexEffortMapping = obj.codexEffortMapping as Record<string, unknown>;
198
+ checkUnknownKeys(codexEffortMapping, VALID_EFFORT_MAPPING_KEYS, 'codexEffortMapping');
199
+ for (const [key, val] of Object.entries(codexEffortMapping)) {
200
+ if (typeof val !== 'string' || !isValidModelName(val)) {
201
+ throw new ConfigValidationError(
202
+ `codexEffortMapping.${key} must be a valid model name (e.g., gpt-5.4, gpt-5.3-codex-spark)`
203
+ );
204
+ }
205
+ }
206
+ }
207
+
112
208
  // timeout
113
209
  if (obj.timeout !== undefined) {
114
210
  if (typeof obj.timeout !== 'number' || obj.timeout <= 0 || !Number.isFinite(obj.timeout)) {
@@ -180,12 +276,19 @@ export function validateConfig(config: unknown): UserConfig {
180
276
  function deepMerge(defaults: RafConfig, overrides: UserConfig): RafConfig {
181
277
  const result = { ...defaults };
182
278
 
279
+ if (overrides.provider !== undefined) result.provider = overrides.provider;
183
280
  if (overrides.models) {
184
281
  result.models = { ...defaults.models, ...overrides.models };
185
282
  }
186
283
  if (overrides.effortMapping) {
187
284
  result.effortMapping = { ...defaults.effortMapping, ...overrides.effortMapping };
188
285
  }
286
+ if (overrides.codexModels) {
287
+ result.codexModels = { ...defaults.codexModels, ...overrides.codexModels };
288
+ }
289
+ if (overrides.codexEffortMapping) {
290
+ result.codexEffortMapping = { ...defaults.codexEffortMapping, ...overrides.codexEffortMapping };
291
+ }
189
292
  if (overrides.commitFormat) {
190
293
  result.commitFormat = { ...defaults.commitFormat, ...overrides.commitFormat };
191
294
  }
@@ -215,6 +318,8 @@ export function resolveConfig(configPath?: string): RafConfig {
215
318
  ...DEFAULT_CONFIG,
216
319
  models: { ...DEFAULT_CONFIG.models },
217
320
  effortMapping: { ...DEFAULT_CONFIG.effortMapping },
321
+ codexModels: { ...DEFAULT_CONFIG.codexModels },
322
+ codexEffortMapping: { ...DEFAULT_CONFIG.codexEffortMapping },
218
323
  commitFormat: { ...DEFAULT_CONFIG.commitFormat },
219
324
  display: { ...DEFAULT_CONFIG.display },
220
325
  };
@@ -260,22 +365,37 @@ export function resetConfigCache(): void {
260
365
  _cachedConfig = null;
261
366
  }
262
367
 
263
- export function getModel(scenario: ModelScenario): ClaudeModelName {
264
- return getResolvedConfig().models[scenario];
368
+ export function getModel(scenario: ModelScenario, provider?: HarnessProvider): ClaudeModelName {
369
+ const config = getResolvedConfig();
370
+ const effectiveProvider = provider ?? config.provider;
371
+ if (effectiveProvider === 'codex') {
372
+ return config.codexModels[scenario];
373
+ }
374
+ return config.models[scenario];
265
375
  }
266
376
 
267
377
  /**
268
378
  * Get the full effort mapping config.
269
379
  */
270
- export function getEffortMapping(): EffortMappingConfig {
271
- return getResolvedConfig().effortMapping;
380
+ export function getEffortMapping(provider?: HarnessProvider): EffortMappingConfig {
381
+ const config = getResolvedConfig();
382
+ const effectiveProvider = provider ?? config.provider;
383
+ if (effectiveProvider === 'codex') {
384
+ return config.codexEffortMapping;
385
+ }
386
+ return config.effortMapping;
272
387
  }
273
388
 
274
389
  /**
275
390
  * Resolve a task effort level to a model name using the effort mapping config.
276
391
  */
277
- export function resolveEffortToModel(effort: TaskEffortLevel): ClaudeModelName {
278
- return getResolvedConfig().effortMapping[effort];
392
+ export function resolveEffortToModel(effort: TaskEffortLevel, provider?: HarnessProvider): ClaudeModelName {
393
+ const config = getResolvedConfig();
394
+ const effectiveProvider = provider ?? config.provider;
395
+ if (effectiveProvider === 'codex') {
396
+ return config.codexEffortMapping[effort];
397
+ }
398
+ return config.effortMapping[effort];
279
399
  }
280
400
 
281
401
  /**
@@ -289,19 +409,35 @@ const MODEL_TIER_ORDER: Record<string, number> = {
289
409
  opus: 3,
290
410
  };
291
411
 
412
+ /** Codex model tier ordering: spark (1) < codex (2) < gpt-5.4 (3) */
413
+ const CODEX_MODEL_TIER_ORDER: Record<string, number> = {
414
+ spark: 1,
415
+ 'gpt-5.3-codex-spark': 1,
416
+ codex: 2,
417
+ 'gpt-5.3-codex': 2,
418
+ gpt54: 3,
419
+ 'gpt-5.4': 3,
420
+ };
421
+
292
422
  /**
293
423
  * Get the numeric tier of a model for comparison.
294
424
  * Extracts family from full model IDs (e.g., 'claude-opus-4-6' -> 3).
295
425
  * Unknown models default to highest tier (3) so they're never accidentally capped.
296
426
  */
297
427
  export function getModelTier(modelName: string): number {
298
- // Check short aliases first
428
+ // Check Claude short aliases first
299
429
  const tier = MODEL_TIER_ORDER[modelName];
300
430
  if (tier !== undefined) {
301
431
  return tier;
302
432
  }
303
433
 
304
- // Extract family from full model ID
434
+ // Check Codex model tiers
435
+ const codexTier = CODEX_MODEL_TIER_ORDER[modelName];
436
+ if (codexTier !== undefined) {
437
+ return codexTier;
438
+ }
439
+
440
+ // Extract family from full Claude model ID
305
441
  const match = modelName.match(/^claude-([a-z]+)-/);
306
442
  if (match && match[1]) {
307
443
  const familyTier = MODEL_TIER_ORDER[match[1]];
@@ -364,11 +500,19 @@ export function getSyncMainBranch(): boolean {
364
500
  * Returns the original string if no known alias can be extracted.
365
501
  */
366
502
  export function getModelShortName(modelId: string): string {
367
- // Already a short alias
503
+ // Already a short Claude alias
368
504
  if (modelId === 'opus' || modelId === 'sonnet' || modelId === 'haiku') {
369
505
  return modelId;
370
506
  }
371
- // Extract family from full model ID: claude-{family}-{version}
507
+ // Codex short aliases
508
+ if (modelId === 'spark' || modelId === 'codex' || modelId === 'gpt54') {
509
+ return modelId;
510
+ }
511
+ // Codex model IDs -> short names
512
+ if (modelId === 'gpt-5.3-codex-spark') return 'spark';
513
+ if (modelId === 'gpt-5.3-codex') return 'codex';
514
+ if (modelId === 'gpt-5.4') return 'gpt54';
515
+ // Extract family from full Claude model ID: claude-{family}-{version}
372
516
  const match = modelId.match(/^claude-([a-z]+)-/);
373
517
  if (match) {
374
518
  const family = match[1];
@@ -388,14 +532,26 @@ const MODEL_ALIAS_TO_FULL_ID: Record<string, string> = {
388
532
  opus: 'claude-opus-4-6',
389
533
  sonnet: 'claude-sonnet-4-5-20250929',
390
534
  haiku: 'claude-haiku-4-5-20251001',
535
+ spark: 'gpt-5.3-codex-spark',
536
+ codex: 'gpt-5.3-codex',
537
+ gpt54: 'gpt-5.4',
391
538
  };
392
539
 
393
540
  /**
394
541
  * Resolve a model name to its full model ID.
395
542
  * If already a full model ID, returns as-is.
396
- * If a short alias (opus, sonnet, haiku), returns the corresponding full ID.
543
+ * If a short alias, returns the corresponding full ID.
544
+ * Handles harness-prefixed format: strips prefix and resolves.
397
545
  */
398
546
  export function resolveFullModelId(modelName: string): string {
547
+ // Handle harness-prefixed format
548
+ const prefixMatch = modelName.match(/^(claude|codex)\/(.+)$/);
549
+ if (prefixMatch) {
550
+ const model = prefixMatch[2]!;
551
+ const fullId = MODEL_ALIAS_TO_FULL_ID[model];
552
+ return fullId ?? model;
553
+ }
554
+
399
555
  const fullId = MODEL_ALIAS_TO_FULL_ID[modelName];
400
556
  if (fullId) {
401
557
  return fullId;
@@ -30,7 +30,7 @@ Rules:
30
30
  Project description:`;
31
31
 
32
32
  /**
33
- * Run Claude CLI with the given prompt and return stdout.
33
+ * Run the CLI with the given prompt and return stdout.
34
34
  * Uses spawn with --no-session-persistence to avoid cluttering session history.
35
35
  */
36
36
  function runClaudePrint(prompt: string): Promise<string | null> {
@@ -65,7 +65,7 @@ function runClaudePrint(prompt: string): Promise<string | null> {
65
65
  clearTimeout(timeoutHandle);
66
66
  if (exitCode !== 0) {
67
67
  if (stderr) {
68
- logger.debug(`Claude CLI stderr: ${stderr}`);
68
+ logger.debug(`CLI stderr: ${stderr}`);
69
69
  }
70
70
  resolve(null);
71
71
  } else {
@@ -75,14 +75,14 @@ function runClaudePrint(prompt: string): Promise<string | null> {
75
75
 
76
76
  proc.on('error', (error) => {
77
77
  clearTimeout(timeoutHandle);
78
- logger.debug(`Claude CLI spawn error: ${error}`);
78
+ logger.debug(`CLI spawn error: ${error}`);
79
79
  resolve(null);
80
80
  });
81
81
  });
82
82
  }
83
83
 
84
84
  /**
85
- * Generate a single project name using Claude.
85
+ * Generate a single project name using the LLM.
86
86
  * Falls back to extracting words from the description if the API call fails.
87
87
  */
88
88
  export async function generateProjectName(description: string): Promise<string> {
@@ -96,7 +96,7 @@ export async function generateProjectName(description: string): Promise<string>
96
96
  }
97
97
  }
98
98
  } catch (error) {
99
- logger.debug(`Failed to generate name with Claude: ${error}`);
99
+ logger.debug(`Failed to generate name: ${error}`);
100
100
  }
101
101
 
102
102
  // Fallback to extracting words from description
@@ -104,7 +104,7 @@ export async function generateProjectName(description: string): Promise<string>
104
104
  }
105
105
 
106
106
  /**
107
- * Generate multiple project name suggestions using Claude.
107
+ * Generate multiple project name suggestions using the LLM.
108
108
  * Returns 3-5 unique names with varied styles.
109
109
  */
110
110
  export async function generateProjectNames(description: string): Promise<string[]> {
@@ -115,7 +115,7 @@ export async function generateProjectNames(description: string): Promise<string[
115
115
  return names;
116
116
  }
117
117
  } catch (error) {
118
- logger.debug(`Failed to generate names with Claude: ${error}`);
118
+ logger.debug(`Failed to generate names: ${error}`);
119
119
  }
120
120
 
121
121
  // Fallback: generate a single fallback name
@@ -125,7 +125,7 @@ export async function generateProjectNames(description: string): Promise<string[
125
125
  }
126
126
 
127
127
  /**
128
- * Call Claude to generate a single project name.
128
+ * Call the LLM to generate a single project name.
129
129
  */
130
130
  async function callSonnetForName(description: string): Promise<string | null> {
131
131
  const fullPrompt = `${NAME_GENERATION_PROMPT}\n${description}`;
@@ -133,7 +133,7 @@ async function callSonnetForName(description: string): Promise<string | null> {
133
133
  }
134
134
 
135
135
  /**
136
- * Call Claude to generate multiple project names.
136
+ * Call the LLM to generate multiple project names.
137
137
  */
138
138
  async function callSonnetForMultipleNames(description: string): Promise<string[]> {
139
139
  const fullPrompt = `${MULTI_NAME_GENERATION_PROMPT}\n${description}`;