rafcode 1.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CLAUDE.md +118 -22
  2. package/RAF/aaaacu-worktree-weaver/decisions.md +88 -0
  3. package/RAF/aaaacu-worktree-weaver/input.md +27 -0
  4. package/RAF/aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md +41 -0
  5. package/RAF/aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md +44 -0
  6. package/RAF/aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md +58 -0
  7. package/RAF/aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md +40 -0
  8. package/RAF/aaaacu-worktree-weaver/outcomes/05-worktree-tests.md +43 -0
  9. package/RAF/aaaacu-worktree-weaver/outcomes/06-update-documentation.md +33 -0
  10. package/RAF/aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md +51 -0
  11. package/RAF/aaaacu-worktree-weaver/plans/02-worktree-plan-command.md +93 -0
  12. package/RAF/aaaacu-worktree-weaver/plans/03-worktree-do-command.md +81 -0
  13. package/RAF/aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md +51 -0
  14. package/RAF/aaaacu-worktree-weaver/plans/05-worktree-tests.md +52 -0
  15. package/RAF/aaaacu-worktree-weaver/plans/06-update-documentation.md +55 -0
  16. package/RAF/aaaacv-trim-the-fat/decisions.md +34 -0
  17. package/RAF/aaaacv-trim-the-fat/input.md +5 -0
  18. package/RAF/aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md +43 -0
  19. package/RAF/aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md +50 -0
  20. package/RAF/aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md +35 -0
  21. package/RAF/aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md +36 -0
  22. package/RAF/aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md +43 -0
  23. package/RAF/aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md +44 -0
  24. package/RAF/aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md +38 -0
  25. package/RAF/aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md +38 -0
  26. package/RAF/aaaacw-prune-cycle/decisions.md +25 -0
  27. package/RAF/aaaacw-prune-cycle/input.md +5 -0
  28. package/RAF/aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md +32 -0
  29. package/RAF/aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md +33 -0
  30. package/RAF/aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md +40 -0
  31. package/RAF/aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md +31 -0
  32. package/RAF/aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md +38 -0
  33. package/RAF/aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md +50 -0
  34. package/RAF/aaaacx-epoch-shift/decisions.md +25 -0
  35. package/RAF/aaaacx-epoch-shift/input.md +1 -0
  36. package/RAF/aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md +34 -0
  37. package/RAF/aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md +32 -0
  38. package/RAF/aaaacx-epoch-shift/outcomes/03-update-tests.md +59 -0
  39. package/RAF/aaaacx-epoch-shift/outcomes/04-update-documentation.md +30 -0
  40. package/RAF/aaaacx-epoch-shift/plans/01-epoch-id-generation.md +40 -0
  41. package/RAF/aaaacx-epoch-shift/plans/02-update-pattern-matching.md +60 -0
  42. package/RAF/aaaacx-epoch-shift/plans/03-update-tests.md +48 -0
  43. package/RAF/aaaacx-epoch-shift/plans/04-update-documentation.md +44 -0
  44. package/RAF/ahmpro-merge-guardian/decisions.md +25 -0
  45. package/RAF/ahmpro-merge-guardian/input.md +4 -0
  46. package/RAF/ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md +45 -0
  47. package/RAF/ahmpro-merge-guardian/outcomes/002-base36-task-ids.md +55 -0
  48. package/RAF/ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md +41 -0
  49. package/RAF/ahmpro-merge-guardian/outcomes/004-post-execution-picker.md +53 -0
  50. package/RAF/ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md +39 -0
  51. package/RAF/ahmpro-merge-guardian/plans/002-base36-task-ids.md +43 -0
  52. package/RAF/ahmpro-merge-guardian/plans/003-worktree-pr-creation.md +43 -0
  53. package/RAF/ahmpro-merge-guardian/plans/004-post-execution-picker.md +51 -0
  54. package/RAF/ahnbcu-letterjam/decisions.md +13 -0
  55. package/RAF/ahnbcu-letterjam/input.md +3 -0
  56. package/RAF/ahnbcu-letterjam/outcomes/01-base26-encoding.md +42 -0
  57. package/RAF/ahnbcu-letterjam/outcomes/02-update-tests.md +38 -0
  58. package/RAF/ahnbcu-letterjam/outcomes/03-migrate-command.md +51 -0
  59. package/RAF/ahnbcu-letterjam/outcomes/04-update-documentation.md +29 -0
  60. package/RAF/ahnbcu-letterjam/plans/01-base26-encoding.md +36 -0
  61. package/RAF/ahnbcu-letterjam/plans/02-update-tests.md +37 -0
  62. package/RAF/ahnbcu-letterjam/plans/03-migrate-command.md +49 -0
  63. package/RAF/ahnbcu-letterjam/plans/04-update-documentation.md +39 -0
  64. package/RAF/ahnwrk-worktree-weaver/decisions.md +19 -0
  65. package/RAF/ahnwrk-worktree-weaver/input.md +4 -0
  66. package/RAF/ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md +20 -0
  67. package/RAF/ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md +21 -0
  68. package/RAF/ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md +34 -0
  69. package/RAF/ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md +30 -0
  70. package/RAF/ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md +26 -0
  71. package/RAF/ahnwrk-worktree-weaver/plans/02-update-task-status-format.md +27 -0
  72. package/RAF/ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md +37 -0
  73. package/RAF/ahnwrk-worktree-weaver/plans/04-fix-pr-description.md +50 -0
  74. package/README.md +56 -10
  75. package/dist/commands/do.d.ts +15 -0
  76. package/dist/commands/do.d.ts.map +1 -1
  77. package/dist/commands/do.js +384 -123
  78. package/dist/commands/do.js.map +1 -1
  79. package/dist/commands/migrate.d.ts +14 -0
  80. package/dist/commands/migrate.d.ts.map +1 -0
  81. package/dist/commands/migrate.js +228 -0
  82. package/dist/commands/migrate.js.map +1 -0
  83. package/dist/commands/plan.d.ts.map +1 -1
  84. package/dist/commands/plan.js +237 -40
  85. package/dist/commands/plan.js.map +1 -1
  86. package/dist/commands/status.d.ts.map +1 -1
  87. package/dist/commands/status.js +221 -47
  88. package/dist/commands/status.js.map +1 -1
  89. package/dist/core/claude-runner.d.ts +2 -2
  90. package/dist/core/claude-runner.d.ts.map +1 -1
  91. package/dist/core/git.d.ts +15 -6
  92. package/dist/core/git.d.ts.map +1 -1
  93. package/dist/core/git.js +53 -20
  94. package/dist/core/git.js.map +1 -1
  95. package/dist/core/project-manager.d.ts.map +1 -1
  96. package/dist/core/project-manager.js +2 -2
  97. package/dist/core/project-manager.js.map +1 -1
  98. package/dist/core/pull-request.d.ts +84 -0
  99. package/dist/core/pull-request.d.ts.map +1 -0
  100. package/dist/core/pull-request.js +414 -0
  101. package/dist/core/pull-request.js.map +1 -0
  102. package/dist/core/state-derivation.d.ts +3 -3
  103. package/dist/core/state-derivation.d.ts.map +1 -1
  104. package/dist/core/state-derivation.js +18 -14
  105. package/dist/core/state-derivation.js.map +1 -1
  106. package/dist/core/worktree.d.ts +120 -0
  107. package/dist/core/worktree.d.ts.map +1 -0
  108. package/dist/core/worktree.js +322 -0
  109. package/dist/core/worktree.js.map +1 -0
  110. package/dist/index.js +2 -0
  111. package/dist/index.js.map +1 -1
  112. package/dist/prompts/amend.d.ts +1 -0
  113. package/dist/prompts/amend.d.ts.map +1 -1
  114. package/dist/prompts/amend.js +14 -10
  115. package/dist/prompts/amend.js.map +1 -1
  116. package/dist/prompts/execution.d.ts.map +1 -1
  117. package/dist/prompts/execution.js +4 -2
  118. package/dist/prompts/execution.js.map +1 -1
  119. package/dist/prompts/planning.d.ts +1 -0
  120. package/dist/prompts/planning.d.ts.map +1 -1
  121. package/dist/prompts/planning.js +9 -8
  122. package/dist/prompts/planning.js.map +1 -1
  123. package/dist/types/config.d.ts +5 -0
  124. package/dist/types/config.d.ts.map +1 -1
  125. package/dist/ui/project-picker.d.ts +34 -3
  126. package/dist/ui/project-picker.d.ts.map +1 -1
  127. package/dist/ui/project-picker.js +78 -10
  128. package/dist/ui/project-picker.js.map +1 -1
  129. package/dist/utils/paths.d.ts +38 -43
  130. package/dist/utils/paths.d.ts.map +1 -1
  131. package/dist/utils/paths.js +123 -193
  132. package/dist/utils/paths.js.map +1 -1
  133. package/dist/utils/terminal-symbols.d.ts +2 -2
  134. package/dist/utils/terminal-symbols.js +3 -3
  135. package/dist/utils/terminal-symbols.js.map +1 -1
  136. package/dist/utils/validation.d.ts.map +1 -1
  137. package/dist/utils/validation.js +2 -8
  138. package/dist/utils/validation.js.map +1 -1
  139. package/package.json +1 -1
  140. package/src/commands/do.ts +454 -134
  141. package/src/commands/migrate.ts +269 -0
  142. package/src/commands/plan.ts +264 -40
  143. package/src/commands/status.ts +252 -45
  144. package/src/core/claude-runner.ts +2 -2
  145. package/src/core/git.ts +57 -21
  146. package/src/core/project-manager.ts +2 -1
  147. package/src/core/pull-request.ts +480 -0
  148. package/src/core/state-derivation.ts +18 -14
  149. package/src/core/worktree.ts +357 -0
  150. package/src/index.ts +2 -0
  151. package/src/prompts/amend.ts +15 -9
  152. package/src/prompts/execution.ts +4 -2
  153. package/src/prompts/planning.ts +10 -8
  154. package/src/types/config.ts +6 -0
  155. package/src/ui/project-picker.ts +110 -10
  156. package/src/utils/paths.ts +129 -214
  157. package/src/utils/terminal-symbols.ts +3 -3
  158. package/src/utils/validation.ts +2 -9
  159. package/tests/unit/amend-prompt.test.ts +85 -0
  160. package/tests/unit/claude-runner.test.ts +9 -9
  161. package/tests/unit/commit-planning-artifacts-worktree.test.ts +327 -0
  162. package/tests/unit/commit-planning-artifacts.test.ts +303 -35
  163. package/tests/unit/dependency-integration.test.ts +95 -95
  164. package/tests/unit/do-blocked-tasks.test.ts +53 -53
  165. package/tests/unit/do-command.test.ts +39 -132
  166. package/tests/unit/do-rerun.test.ts +65 -65
  167. package/tests/unit/do-worktree-cleanup.test.ts +151 -0
  168. package/tests/unit/execution-prompt.test.ts +71 -60
  169. package/tests/unit/failure-history.test.ts +19 -19
  170. package/tests/unit/git-commit-helpers.test.ts +5 -5
  171. package/tests/unit/git-stash.test.ts +4 -4
  172. package/tests/unit/migrate-command.test.ts +197 -0
  173. package/tests/unit/outcome-content.test.ts +20 -20
  174. package/tests/unit/paths.test.ts +269 -467
  175. package/tests/unit/plan-amend-worktree-recreate.test.ts +246 -0
  176. package/tests/unit/plan-command.test.ts +103 -103
  177. package/tests/unit/planning-prompt.test.ts +41 -4
  178. package/tests/unit/post-execution-picker.test.ts +251 -0
  179. package/tests/unit/project-manager.test.ts +20 -8
  180. package/tests/unit/project-picker.test.ts +425 -42
  181. package/tests/unit/pull-request.test.ts +852 -0
  182. package/tests/unit/state-derivation.test.ts +138 -137
  183. package/tests/unit/status-command.test.ts +344 -76
  184. package/tests/unit/terminal-symbols.test.ts +4 -4
  185. package/tests/unit/worktree-integration.test.ts +405 -0
  186. package/tests/unit/worktree.test.ts +523 -0
  187. package/tests/unit/do-multiproject.test.ts +0 -270
  188. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/input.md +0 -0
  189. /package/RAF/{001-raf-task-improvements/outcomes/001-add-decisions-folder.md → aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md} +0 -0
  190. /package/RAF/{001-raf-task-improvements/outcomes/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/outcomes/02-fix-write-error-on-shutdown.md} +0 -0
  191. /package/RAF/{001-raf-task-improvements/outcomes/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/outcomes/03-stash-changes-on-failure.md} +0 -0
  192. /package/RAF/{001-raf-task-improvements/outcomes/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/outcomes/04-add-project-name-to-commits.md} +0 -0
  193. /package/RAF/{001-raf-task-improvements/outcomes/005-add-running-time-display.md → aaaaab-raf-task-improvements/outcomes/05-add-running-time-display.md} +0 -0
  194. /package/RAF/{001-raf-task-improvements/outcomes/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/outcomes/06-add-task-name-to-logs.md} +0 -0
  195. /package/RAF/{001-raf-task-improvements/outcomes/007-show-model-at-task-start.md → aaaaab-raf-task-improvements/outcomes/07-show-model-at-task-start.md} +0 -0
  196. /package/RAF/{001-raf-task-improvements/outcomes/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/outcomes/09-remove-editor-placeholder-text.md} +0 -0
  197. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  198. /package/RAF/{001-raf-task-improvements/plans/001-add-decisions-folder.md → aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md} +0 -0
  199. /package/RAF/{001-raf-task-improvements/plans/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/plans/02-fix-write-error-on-shutdown.md} +0 -0
  200. /package/RAF/{001-raf-task-improvements/plans/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/plans/03-stash-changes-on-failure.md} +0 -0
  201. /package/RAF/{001-raf-task-improvements/plans/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/plans/04-add-project-name-to-commits.md} +0 -0
  202. /package/RAF/{001-raf-task-improvements/plans/005-add-running-time-display.md → aaaaab-raf-task-improvements/plans/05-add-running-time-display.md} +0 -0
  203. /package/RAF/{001-raf-task-improvements/plans/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/plans/06-add-task-name-to-logs.md} +0 -0
  204. /package/RAF/{001-raf-task-improvements/plans/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/plans/09-remove-editor-placeholder-text.md} +0 -0
  205. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  206. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/input.md +0 -0
  207. /package/RAF/{002-raf-task-improvements-execution/outcomes/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/outcomes/01-commit-show-model-at-task-start.md} +0 -0
  208. /package/RAF/{002-raf-task-improvements-execution/outcomes/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/outcomes/02-delete-skipped-plan.md} +0 -0
  209. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  210. /package/RAF/{002-raf-task-improvements-execution/plans/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/plans/01-commit-show-model-at-task-start.md} +0 -0
  211. /package/RAF/{002-raf-task-improvements-execution/plans/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/plans/02-delete-skipped-plan.md} +0 -0
  212. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/decisions/DECISIONS.md +0 -0
  213. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/input.md +0 -0
  214. /package/RAF/{003-multi-project-execution/outcomes/001-remove-state-json.md → aaaaad-multi-project-execution/outcomes/01-remove-state-json.md} +0 -0
  215. /package/RAF/{003-multi-project-execution/outcomes/002-update-raf-status.md → aaaaad-multi-project-execution/outcomes/02-update-raf-status.md} +0 -0
  216. /package/RAF/{003-multi-project-execution/outcomes/003-simplify-git-logic.md → aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md} +0 -0
  217. /package/RAF/{003-multi-project-execution/outcomes/004-auto-commit-planning.md → aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md} +0 -0
  218. /package/RAF/{003-multi-project-execution/outcomes/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md} +0 -0
  219. /package/RAF/{003-multi-project-execution/outcomes/006-multi-project-execution.md → aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md} +0 -0
  220. /package/RAF/{003-multi-project-execution/outcomes/007-verify-timeout.md → aaaaad-multi-project-execution/outcomes/07-verify-timeout.md} +0 -0
  221. /package/RAF/{003-multi-project-execution/outcomes/008-move-decisions-file.md → aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md} +0 -0
  222. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  223. /package/RAF/{003-multi-project-execution/plans/001-remove-state-json.md → aaaaad-multi-project-execution/plans/01-remove-state-json.md} +0 -0
  224. /package/RAF/{003-multi-project-execution/plans/002-update-raf-status.md → aaaaad-multi-project-execution/plans/02-update-raf-status.md} +0 -0
  225. /package/RAF/{003-multi-project-execution/plans/003-simplify-git-logic.md → aaaaad-multi-project-execution/plans/03-simplify-git-logic.md} +0 -0
  226. /package/RAF/{003-multi-project-execution/plans/004-auto-commit-planning.md → aaaaad-multi-project-execution/plans/04-auto-commit-planning.md} +0 -0
  227. /package/RAF/{003-multi-project-execution/plans/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md} +0 -0
  228. /package/RAF/{003-multi-project-execution/plans/006-multi-project-execution.md → aaaaad-multi-project-execution/plans/06-multi-project-execution.md} +0 -0
  229. /package/RAF/{003-multi-project-execution/plans/007-verify-timeout.md → aaaaad-multi-project-execution/plans/07-verify-timeout.md} +0 -0
  230. /package/RAF/{003-multi-project-execution/plans/008-move-decisions-file.md → aaaaad-multi-project-execution/plans/08-move-decisions-file.md} +0 -0
  231. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/decisions.md +0 -0
  232. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/input.md +0 -0
  233. /package/RAF/{004-task-naming-optimization/outcomes/001-remove-summary-file.md → aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md} +0 -0
  234. /package/RAF/{004-task-naming-optimization/outcomes/002-base36-project-numbering.md → aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md} +0 -0
  235. /package/RAF/{004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md} +0 -0
  236. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  237. /package/RAF/{004-task-naming-optimization/plans/001-remove-summary-file.md → aaaaae-task-naming-optimization/plans/01-remove-summary-file.md} +0 -0
  238. /package/RAF/{004-task-naming-optimization/plans/002-base36-project-numbering.md → aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md} +0 -0
  239. /package/RAF/{004-task-naming-optimization/plans/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md} +0 -0
  240. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/decisions.md +0 -0
  241. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/input.md +0 -0
  242. /package/RAF/{005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md} +0 -0
  243. /package/RAF/{005-task-naming-improvements/outcomes/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/outcomes/02-add-identifier-support-to-status.md} +0 -0
  244. /package/RAF/{005-task-naming-improvements/outcomes/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/outcomes/03-update-do-for-full-folder-names.md} +0 -0
  245. /package/RAF/{005-task-naming-improvements/outcomes/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/outcomes/04-implement-amend-flag-for-plan.md} +0 -0
  246. /package/RAF/{005-task-naming-improvements/outcomes/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/outcomes/05-commit-outcomes-on-complete.md} +0 -0
  247. /package/RAF/{005-task-naming-improvements/outcomes/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/outcomes/06-update-execution-prompt-commit-schema.md} +0 -0
  248. /package/RAF/{005-task-naming-improvements/outcomes/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/outcomes/07-allow-pending-task-amendments.md} +0 -0
  249. /package/RAF/{005-task-naming-improvements/outcomes/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md} +0 -0
  250. /package/RAF/{005-task-naming-improvements/plans/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md} +0 -0
  251. /package/RAF/{005-task-naming-improvements/plans/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/plans/02-add-identifier-support-to-status.md} +0 -0
  252. /package/RAF/{005-task-naming-improvements/plans/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/plans/03-update-do-for-full-folder-names.md} +0 -0
  253. /package/RAF/{005-task-naming-improvements/plans/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/plans/04-implement-amend-flag-for-plan.md} +0 -0
  254. /package/RAF/{005-task-naming-improvements/plans/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/plans/05-commit-outcomes-on-complete.md} +0 -0
  255. /package/RAF/{005-task-naming-improvements/plans/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/plans/06-update-execution-prompt-commit-schema.md} +0 -0
  256. /package/RAF/{005-task-naming-improvements/plans/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/plans/07-allow-pending-task-amendments.md} +0 -0
  257. /package/RAF/{005-task-naming-improvements/plans/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md} +0 -0
  258. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/decisions.md +0 -0
  259. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/input.md +0 -0
  260. /package/RAF/{006-fix-double-summary-headers/outcomes/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/outcomes/01-fix-double-summary-headers.md} +0 -0
  261. /package/RAF/{006-fix-double-summary-headers/outcomes/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/outcomes/02-update-readme-for-npm.md} +0 -0
  262. /package/RAF/{006-fix-double-summary-headers/outcomes/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/outcomes/03-npm-publish-instructions.md} +0 -0
  263. /package/RAF/{006-fix-double-summary-headers/outcomes/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/outcomes/04-flexible-project-lookup.md} +0 -0
  264. /package/RAF/{006-fix-double-summary-headers/plans/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/plans/01-fix-double-summary-headers.md} +0 -0
  265. /package/RAF/{006-fix-double-summary-headers/plans/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/plans/02-update-readme-for-npm.md} +0 -0
  266. /package/RAF/{006-fix-double-summary-headers/plans/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/plans/03-npm-publish-instructions.md} +0 -0
  267. /package/RAF/{006-fix-double-summary-headers/plans/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/plans/04-flexible-project-lookup.md} +0 -0
  268. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/decisions.md +0 -0
  269. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/input.md +0 -0
  270. /package/RAF/{007-improve-outcome-format/outcomes/001-update-execution-prompt.md → aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md} +0 -0
  271. /package/RAF/{007-improve-outcome-format/outcomes/002-update-state-derivation.md → aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md} +0 -0
  272. /package/RAF/{007-improve-outcome-format/outcomes/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/outcomes/03-update-do-command-outcome-handling.md} +0 -0
  273. /package/RAF/{007-improve-outcome-format/outcomes/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md} +0 -0
  274. /package/RAF/{007-improve-outcome-format/outcomes/005-update-documentation.md → aaaaah-improve-outcome-format/outcomes/05-update-documentation.md} +0 -0
  275. /package/RAF/{007-improve-outcome-format/plans/001-update-execution-prompt.md → aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md} +0 -0
  276. /package/RAF/{007-improve-outcome-format/plans/002-update-state-derivation.md → aaaaah-improve-outcome-format/plans/02-update-state-derivation.md} +0 -0
  277. /package/RAF/{007-improve-outcome-format/plans/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/plans/03-update-do-command-outcome-handling.md} +0 -0
  278. /package/RAF/{007-improve-outcome-format/plans/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md} +0 -0
  279. /package/RAF/{007-improve-outcome-format/plans/005-update-documentation.md → aaaaah-improve-outcome-format/plans/05-update-documentation.md} +0 -0
  280. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/decisions.md +0 -0
  281. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/input.md +0 -0
  282. /package/RAF/{008-beautiful-do/outcomes/001-terminal-symbols.md → aaaaai-beautiful-do/outcomes/01-terminal-symbols.md} +0 -0
  283. /package/RAF/{008-beautiful-do/outcomes/002-refactor-do-output.md → aaaaai-beautiful-do/outcomes/02-refactor-do-output.md} +0 -0
  284. /package/RAF/{008-beautiful-do/outcomes/003-refactor-status-output.md → aaaaai-beautiful-do/outcomes/03-refactor-status-output.md} +0 -0
  285. /package/RAF/{008-beautiful-do/outcomes/004-simplify-logger.md → aaaaai-beautiful-do/outcomes/04-simplify-logger.md} +0 -0
  286. /package/RAF/{008-beautiful-do/outcomes/005-add-tests.md → aaaaai-beautiful-do/outcomes/05-add-tests.md} +0 -0
  287. /package/RAF/{008-beautiful-do/plans/001-terminal-symbols.md → aaaaai-beautiful-do/plans/01-terminal-symbols.md} +0 -0
  288. /package/RAF/{008-beautiful-do/plans/002-refactor-do-output.md → aaaaai-beautiful-do/plans/02-refactor-do-output.md} +0 -0
  289. /package/RAF/{008-beautiful-do/plans/003-refactor-status-output.md → aaaaai-beautiful-do/plans/03-refactor-status-output.md} +0 -0
  290. /package/RAF/{008-beautiful-do/plans/004-simplify-logger.md → aaaaai-beautiful-do/plans/04-simplify-logger.md} +0 -0
  291. /package/RAF/{008-beautiful-do/plans/005-add-tests.md → aaaaai-beautiful-do/plans/05-add-tests.md} +0 -0
  292. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/decisions.md +0 -0
  293. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/input.md +0 -0
  294. /package/RAF/{009-system-promt-ammend/outcomes/001-model-override.md → aaaaaj-system-promt-ammend/outcomes/01-model-override.md} +0 -0
  295. /package/RAF/{009-system-promt-ammend/outcomes/002-system-prompt-append.md → aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md} +0 -0
  296. /package/RAF/{009-system-promt-ammend/outcomes/003-retry-context.md → aaaaaj-system-promt-ammend/outcomes/03-retry-context.md} +0 -0
  297. /package/RAF/{009-system-promt-ammend/plans/001-model-override.md → aaaaaj-system-promt-ammend/plans/01-model-override.md} +0 -0
  298. /package/RAF/{009-system-promt-ammend/plans/002-system-prompt-append.md → aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md} +0 -0
  299. /package/RAF/{009-system-promt-ammend/plans/003-retry-context.md → aaaaaj-system-promt-ammend/plans/03-retry-context.md} +0 -0
  300. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/decisions.md +0 -0
  301. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/input.md +0 -0
  302. /package/RAF/{010-outcome-marker-fallback/outcomes/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/outcomes/01-outcome-file-marker-fallback.md} +0 -0
  303. /package/RAF/{010-outcome-marker-fallback/outcomes/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md} +0 -0
  304. /package/RAF/{010-outcome-marker-fallback/plans/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/plans/01-outcome-file-marker-fallback.md} +0 -0
  305. /package/RAF/{010-outcome-marker-fallback/plans/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md} +0 -0
  306. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/decisions.md +0 -0
  307. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/input.md +0 -0
  308. /package/RAF/{011-do-task-in-commit/outcomes/001-update-execution-prompt.md → aaaabl-do-task-in-commit/outcomes/01-update-execution-prompt.md} +0 -0
  309. /package/RAF/{011-do-task-in-commit/outcomes/002-update-tests.md → aaaabl-do-task-in-commit/outcomes/02-update-tests.md} +0 -0
  310. /package/RAF/{011-do-task-in-commit/outcomes/003-update-documentation.md → aaaabl-do-task-in-commit/outcomes/03-update-documentation.md} +0 -0
  311. /package/RAF/{011-do-task-in-commit/plans/001-update-execution-prompt.md → aaaabl-do-task-in-commit/plans/01-update-execution-prompt.md} +0 -0
  312. /package/RAF/{011-do-task-in-commit/plans/002-update-tests.md → aaaabl-do-task-in-commit/plans/02-update-tests.md} +0 -0
  313. /package/RAF/{011-do-task-in-commit/plans/003-update-documentation.md → aaaabl-do-task-in-commit/plans/03-update-documentation.md} +0 -0
  314. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/decisions.md +0 -0
  315. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/input.md +0 -0
  316. /package/RAF/{012-name-picker-buffet/outcomes/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/outcomes/01-name-picker-for-raf-plan.md} +0 -0
  317. /package/RAF/{012-name-picker-buffet/outcomes/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/outcomes/02-interactive-project-picker-for-raf-do.md} +0 -0
  318. /package/RAF/{012-name-picker-buffet/outcomes/003-raf-status-truncation.md → aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md} +0 -0
  319. /package/RAF/{012-name-picker-buffet/outcomes/004-failure-reason-details.md → aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md} +0 -0
  320. /package/RAF/{012-name-picker-buffet/outcomes/005-remove-raf-commits.md → aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md} +0 -0
  321. /package/RAF/{012-name-picker-buffet/outcomes/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/outcomes/06-update-execution-prompt-for-commits.md} +0 -0
  322. /package/RAF/{012-name-picker-buffet/outcomes/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/outcomes/07-fix-plan-mode-user-prompt.md} +0 -0
  323. /package/RAF/{012-name-picker-buffet/outcomes/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/outcomes/08-add-auto-flag-for-plan-mode.md} +0 -0
  324. /package/RAF/{012-name-picker-buffet/plans/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/plans/01-name-picker-for-raf-plan.md} +0 -0
  325. /package/RAF/{012-name-picker-buffet/plans/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/plans/02-interactive-project-picker-for-raf-do.md} +0 -0
  326. /package/RAF/{012-name-picker-buffet/plans/003-raf-status-truncation.md → aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md} +0 -0
  327. /package/RAF/{012-name-picker-buffet/plans/004-failure-reason-details.md → aaaabm-name-picker-buffet/plans/04-failure-reason-details.md} +0 -0
  328. /package/RAF/{012-name-picker-buffet/plans/005-remove-raf-commits.md → aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md} +0 -0
  329. /package/RAF/{012-name-picker-buffet/plans/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/plans/06-update-execution-prompt-for-commits.md} +0 -0
  330. /package/RAF/{012-name-picker-buffet/plans/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/plans/07-fix-plan-mode-user-prompt.md} +0 -0
  331. /package/RAF/{012-name-picker-buffet/plans/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/plans/08-add-auto-flag-for-plan-mode.md} +0 -0
  332. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/decisions.md +0 -0
  333. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/input.md +0 -0
  334. /package/RAF/{013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md} +0 -0
  335. /package/RAF/{013-dependencies-watchdog/outcomes/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md} +0 -0
  336. /package/RAF/{013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md} +0 -0
  337. /package/RAF/{013-dependencies-watchdog/outcomes/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/outcomes/04-implement-dependency-checking-in-do.md} +0 -0
  338. /package/RAF/{013-dependencies-watchdog/outcomes/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md} +0 -0
  339. /package/RAF/{013-dependencies-watchdog/outcomes/006-add-tests.md → aaaabn-dependencies-watchdog/outcomes/06-add-tests.md} +0 -0
  340. /package/RAF/{013-dependencies-watchdog/outcomes/007-add-act-alias.md → aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md} +0 -0
  341. /package/RAF/{013-dependencies-watchdog/outcomes/008-add-exit-message.md → aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md} +0 -0
  342. /package/RAF/{013-dependencies-watchdog/plans/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md} +0 -0
  343. /package/RAF/{013-dependencies-watchdog/plans/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md} +0 -0
  344. /package/RAF/{013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md} +0 -0
  345. /package/RAF/{013-dependencies-watchdog/plans/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/plans/04-implement-dependency-checking-in-do.md} +0 -0
  346. /package/RAF/{013-dependencies-watchdog/plans/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md} +0 -0
  347. /package/RAF/{013-dependencies-watchdog/plans/006-add-tests.md → aaaabn-dependencies-watchdog/plans/06-add-tests.md} +0 -0
  348. /package/RAF/{013-dependencies-watchdog/plans/007-add-act-alias.md → aaaabn-dependencies-watchdog/plans/07-add-act-alias.md} +0 -0
  349. /package/RAF/{013-dependencies-watchdog/plans/008-add-exit-message.md → aaaabn-dependencies-watchdog/plans/08-add-exit-message.md} +0 -0
  350. /package/RAF/{014-watchdog → aaaabo-watchdog}/decisions.md +0 -0
  351. /package/RAF/{014-watchdog → aaaabo-watchdog}/input.md +0 -0
  352. /package/RAF/{014-watchdog/outcomes/001-amend-flag-position.md → aaaabo-watchdog/outcomes/01-amend-flag-position.md} +0 -0
  353. /package/RAF/{014-watchdog/outcomes/002-details-only-on-failure.md → aaaabo-watchdog/outcomes/02-details-only-on-failure.md} +0 -0
  354. /package/RAF/{014-watchdog/plans/001-amend-flag-position.md → aaaabo-watchdog/plans/01-amend-flag-position.md} +0 -0
  355. /package/RAF/{014-watchdog/plans/002-details-only-on-failure.md → aaaabo-watchdog/plans/02-details-only-on-failure.md} +0 -0
  356. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/decisions.md +0 -0
  357. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/input.md +0 -0
  358. /package/RAF/{015-name-lottery/outcomes/001-auto-pick-project-name.md → aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md} +0 -0
  359. /package/RAF/{015-name-lottery/outcomes/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/outcomes/02-mention-plan-files-in-commit.md} +0 -0
  360. /package/RAF/{015-name-lottery/outcomes/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/outcomes/03-fix-input-md-in-amend-flow.md} +0 -0
  361. /package/RAF/{015-name-lottery/plans/001-auto-pick-project-name.md → aaaabp-name-lottery/plans/01-auto-pick-project-name.md} +0 -0
  362. /package/RAF/{015-name-lottery/plans/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/plans/02-mention-plan-files-in-commit.md} +0 -0
  363. /package/RAF/{015-name-lottery/plans/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/plans/03-fix-input-md-in-amend-flow.md} +0 -0
  364. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/decisions.md +0 -0
  365. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/input.md +0 -0
  366. /package/RAF/{016-planning-scalpel/outcomes/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md} +0 -0
  367. /package/RAF/{016-planning-scalpel/plans/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md} +0 -0
  368. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/decisions.md +0 -0
  369. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/input.md +0 -0
  370. /package/RAF/{017-decision-vault/outcomes/001-create-git-commit-utility.md → aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md} +0 -0
  371. /package/RAF/{017-decision-vault/outcomes/002-integrate-commit-into-plan.md → aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md} +0 -0
  372. /package/RAF/{017-decision-vault/outcomes/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/outcomes/03-add-tests-for-planning-commit.md} +0 -0
  373. /package/RAF/{017-decision-vault/plans/001-create-git-commit-utility.md → aaaabr-decision-vault/plans/01-create-git-commit-utility.md} +0 -0
  374. /package/RAF/{017-decision-vault/plans/002-integrate-commit-into-plan.md → aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md} +0 -0
  375. /package/RAF/{017-decision-vault/plans/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/plans/03-add-tests-for-planning-commit.md} +0 -0
  376. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/decisions.md +0 -0
  377. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/input.md +0 -0
  378. /package/RAF/{018-workflow-forge/outcomes/001-add-task-number-progress.md → aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md} +0 -0
  379. /package/RAF/{018-workflow-forge/outcomes/002-update-plan-do-prompts.md → aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md} +0 -0
  380. /package/RAF/{018-workflow-forge/plans/001-add-task-number-progress.md → aaaabs-workflow-forge/plans/01-add-task-number-progress.md} +0 -0
  381. /package/RAF/{018-workflow-forge/plans/002-update-plan-do-prompts.md → aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md} +0 -0
  382. /package/RAF/{019-verbose-chronicle → aaaabt-verbose-chronicle}/decisions.md +0 -0
  383. /package/RAF/{019-verbose-chronicle → aaaabt-verbose-chronicle}/input.md +0 -0
  384. /package/RAF/{019-verbose-chronicle/outcomes/001-amend-iteration-references.md → aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md} +0 -0
  385. /package/RAF/{019-verbose-chronicle/outcomes/002-verbose-task-name-display.md → aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md} +0 -0
  386. /package/RAF/{019-verbose-chronicle/outcomes/003-verbose-streaming-fix.md → aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md} +0 -0
  387. /package/RAF/{019-verbose-chronicle/outcomes/004-commit-verification-before-halt.md → aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md} +0 -0
  388. /package/RAF/{019-verbose-chronicle/plans/001-amend-iteration-references.md → aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md} +0 -0
  389. /package/RAF/{019-verbose-chronicle/plans/002-verbose-task-name-display.md → aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md} +0 -0
  390. /package/RAF/{019-verbose-chronicle/plans/003-verbose-streaming-fix.md → aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md} +0 -0
  391. /package/RAF/{019-verbose-chronicle/plans/004-commit-verification-before-halt.md → aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md} +0 -0
@@ -0,0 +1,357 @@
1
+ import { execSync } from 'node:child_process';
2
+ import * as fs from 'node:fs';
3
+ import * as os from 'node:os';
4
+ import * as path from 'node:path';
5
+ import { logger } from '../utils/logger.js';
6
+
7
+ export interface WorktreeCreateResult {
8
+ success: boolean;
9
+ worktreePath: string;
10
+ branch: string;
11
+ error?: string;
12
+ }
13
+
14
+ export interface WorktreeMergeResult {
15
+ success: boolean;
16
+ merged: boolean;
17
+ fastForward: boolean;
18
+ error?: string;
19
+ }
20
+
21
+ export interface WorktreeValidation {
22
+ exists: boolean;
23
+ isValidWorktree: boolean;
24
+ hasProjectFolder: boolean;
25
+ hasPlans: boolean;
26
+ projectPath: string | null;
27
+ }
28
+
29
+ /**
30
+ * Get the git toplevel directory (repo root).
31
+ * Returns null if not in a git repo.
32
+ */
33
+ export function getRepoRoot(): string | null {
34
+ try {
35
+ return execSync('git rev-parse --show-toplevel', { encoding: 'utf-8', stdio: 'pipe' }).trim() || null;
36
+ } catch {
37
+ return null;
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Get the basename of the repo root directory.
43
+ * E.g., "/Users/me/projects/myapp" -> "myapp"
44
+ * Returns null if not in a git repo.
45
+ */
46
+ export function getRepoBasename(): string | null {
47
+ const root = getRepoRoot();
48
+ if (!root) {
49
+ return null;
50
+ }
51
+ return path.basename(root);
52
+ }
53
+
54
+ /**
55
+ * Get the current branch name.
56
+ * Returns null if not in a git repo or in detached HEAD state.
57
+ */
58
+ export function getCurrentBranch(): string | null {
59
+ try {
60
+ const branch = execSync('git branch --show-current', { encoding: 'utf-8', stdio: 'pipe' }).trim();
61
+ return branch || null;
62
+ } catch {
63
+ return null;
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Compute the worktree path for a project.
69
+ * Returns `~/.raf/worktrees/<repo-basename>/<project-id>`.
70
+ *
71
+ * @param repoBasename - The basename of the repo root directory
72
+ * @param projectId - The full project folder name (e.g., "020-worktree-weaver")
73
+ */
74
+ export function computeWorktreePath(repoBasename: string, projectId: string): string {
75
+ return path.join(os.homedir(), '.raf', 'worktrees', repoBasename, projectId);
76
+ }
77
+
78
+ /**
79
+ * Compute the worktree base directory for a repo.
80
+ * Returns `~/.raf/worktrees/<repo-basename>/`.
81
+ *
82
+ * @param repoBasename - The basename of the repo root directory
83
+ */
84
+ export function computeWorktreeBaseDir(repoBasename: string): string {
85
+ return path.join(os.homedir(), '.raf', 'worktrees', repoBasename);
86
+ }
87
+
88
+ /**
89
+ * Get the project path inside a worktree.
90
+ * The project folder is at the same relative path from repo root as in the main repo.
91
+ *
92
+ * @param worktreePath - The worktree root directory
93
+ * @param projectRelativePath - The relative path from repo root to the project folder (e.g., "RAF/020-worktree-weaver")
94
+ */
95
+ export function getWorktreeProjectPath(worktreePath: string, projectRelativePath: string): string {
96
+ return path.join(worktreePath, projectRelativePath);
97
+ }
98
+
99
+ /**
100
+ * Create a git worktree at the computed path with a new branch.
101
+ *
102
+ * @param repoBasename - The basename of the repo root directory
103
+ * @param projectId - The full project folder name (used as both directory name and branch name)
104
+ */
105
+ export function createWorktree(repoBasename: string, projectId: string): WorktreeCreateResult {
106
+ const worktreePath = computeWorktreePath(repoBasename, projectId);
107
+ const branch = projectId;
108
+
109
+ // Ensure parent directory exists
110
+ const baseDir = computeWorktreeBaseDir(repoBasename);
111
+ try {
112
+ fs.mkdirSync(baseDir, { recursive: true });
113
+ } catch (error) {
114
+ return {
115
+ success: false,
116
+ worktreePath,
117
+ branch,
118
+ error: `Failed to create parent directory ${baseDir}: ${error}`,
119
+ };
120
+ }
121
+
122
+ try {
123
+ execSync(`git worktree add "${worktreePath}" -b "${branch}"`, {
124
+ encoding: 'utf-8',
125
+ stdio: 'pipe',
126
+ });
127
+ return { success: true, worktreePath, branch };
128
+ } catch (error) {
129
+ const msg = error instanceof Error ? error.message : String(error);
130
+ return {
131
+ success: false,
132
+ worktreePath,
133
+ branch,
134
+ error: `Failed to create worktree: ${msg}`,
135
+ };
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Validate that a worktree exists, is a valid git worktree, and contains the expected project content.
141
+ *
142
+ * @param worktreePath - The worktree root directory
143
+ * @param projectRelativePath - The relative path from repo root to the project folder
144
+ */
145
+ export function validateWorktree(worktreePath: string, projectRelativePath: string): WorktreeValidation {
146
+ const result: WorktreeValidation = {
147
+ exists: false,
148
+ isValidWorktree: false,
149
+ hasProjectFolder: false,
150
+ hasPlans: false,
151
+ projectPath: null,
152
+ };
153
+
154
+ // Check directory exists
155
+ if (!fs.existsSync(worktreePath)) {
156
+ return result;
157
+ }
158
+ result.exists = true;
159
+
160
+ // Check it appears in git worktree list
161
+ try {
162
+ const listOutput = execSync('git worktree list --porcelain', { encoding: 'utf-8', stdio: 'pipe' });
163
+ const normalizedWorktreePath = path.resolve(worktreePath);
164
+ const isListed = listOutput.split('\n').some(line => {
165
+ if (line.startsWith('worktree ')) {
166
+ const listedPath = path.resolve(line.slice('worktree '.length).trim());
167
+ return listedPath === normalizedWorktreePath;
168
+ }
169
+ return false;
170
+ });
171
+ result.isValidWorktree = isListed;
172
+ } catch {
173
+ return result;
174
+ }
175
+
176
+ // Check project folder exists in worktree
177
+ const projectPath = getWorktreeProjectPath(worktreePath, projectRelativePath);
178
+ if (fs.existsSync(projectPath)) {
179
+ result.hasProjectFolder = true;
180
+ result.projectPath = projectPath;
181
+
182
+ // Check for plans directory
183
+ const plansDir = path.join(projectPath, 'plans');
184
+ if (fs.existsSync(plansDir)) {
185
+ result.hasPlans = true;
186
+ }
187
+ }
188
+
189
+ return result;
190
+ }
191
+
192
+ /**
193
+ * Merge a worktree branch into the current branch.
194
+ * Attempts fast-forward first; falls back to merge commit.
195
+ * On conflicts, aborts merge and returns failure.
196
+ *
197
+ * MUST be called from the original repo (not the worktree).
198
+ *
199
+ * @param branch - The branch name to merge (typically the project folder name)
200
+ * @param originalBranch - The branch to merge into (the branch that was active when worktree was created)
201
+ */
202
+ export function mergeWorktreeBranch(branch: string, originalBranch: string): WorktreeMergeResult {
203
+ // Switch to the original branch
204
+ try {
205
+ execSync(`git checkout "${originalBranch}"`, { encoding: 'utf-8', stdio: 'pipe' });
206
+ } catch (error) {
207
+ const msg = error instanceof Error ? error.message : String(error);
208
+ return {
209
+ success: false,
210
+ merged: false,
211
+ fastForward: false,
212
+ error: `Failed to checkout ${originalBranch}: ${msg}`,
213
+ };
214
+ }
215
+
216
+ // Try fast-forward merge first
217
+ try {
218
+ execSync(`git merge --ff-only "${branch}"`, { encoding: 'utf-8', stdio: 'pipe' });
219
+ return { success: true, merged: true, fastForward: true };
220
+ } catch {
221
+ // Fast-forward not possible, try regular merge
222
+ }
223
+
224
+ // Try regular merge
225
+ try {
226
+ execSync(`git merge "${branch}"`, { encoding: 'utf-8', stdio: 'pipe' });
227
+ return { success: true, merged: true, fastForward: false };
228
+ } catch {
229
+ // Merge conflicts - abort
230
+ try {
231
+ execSync('git merge --abort', { encoding: 'utf-8', stdio: 'pipe' });
232
+ } catch {
233
+ logger.warn('Failed to abort merge - repo may be in an inconsistent state');
234
+ }
235
+
236
+ return {
237
+ success: false,
238
+ merged: false,
239
+ fastForward: false,
240
+ error: `Merge conflicts detected. Please merge branch "${branch}" into "${originalBranch}" manually.`,
241
+ };
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Remove a single worktree.
247
+ * Used for failed-plan cleanup and post-completion cleanup.
248
+ * The git branch is preserved — only the worktree directory is removed.
249
+ *
250
+ * @param worktreePath - The worktree directory to remove
251
+ * @returns true if removal succeeded, false otherwise
252
+ */
253
+ export function removeWorktree(worktreePath: string): { success: boolean; error?: string } {
254
+ try {
255
+ execSync(`git worktree remove "${worktreePath}"`, { encoding: 'utf-8', stdio: 'pipe' });
256
+ return { success: true };
257
+ } catch (error) {
258
+ const msg = error instanceof Error ? error.message : String(error);
259
+ return {
260
+ success: false,
261
+ error: `Failed to remove worktree at ${worktreePath}: ${msg}`,
262
+ };
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Check if a local branch exists.
268
+ *
269
+ * @param branchName - The branch name to check
270
+ * @returns true if the branch exists locally
271
+ */
272
+ export function branchExists(branchName: string): boolean {
273
+ try {
274
+ const output = execSync(`git branch --list "${branchName}"`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
275
+ return output.length > 0;
276
+ } catch {
277
+ return false;
278
+ }
279
+ }
280
+
281
+ /**
282
+ * Create a git worktree at the computed path from an existing branch.
283
+ * Unlike `createWorktree()`, this does NOT create a new branch — it attaches
284
+ * to a branch that already exists locally.
285
+ *
286
+ * @param repoBasename - The basename of the repo root directory
287
+ * @param projectId - The full project folder name (used as both directory name and branch name)
288
+ */
289
+ export function createWorktreeFromBranch(repoBasename: string, projectId: string): WorktreeCreateResult {
290
+ const worktreePath = computeWorktreePath(repoBasename, projectId);
291
+ const branch = projectId;
292
+
293
+ // Check branch exists
294
+ if (!branchExists(branch)) {
295
+ return {
296
+ success: false,
297
+ worktreePath,
298
+ branch,
299
+ error: `Branch "${branch}" does not exist locally`,
300
+ };
301
+ }
302
+
303
+ // Ensure parent directory exists
304
+ const baseDir = computeWorktreeBaseDir(repoBasename);
305
+ try {
306
+ fs.mkdirSync(baseDir, { recursive: true });
307
+ } catch (error) {
308
+ return {
309
+ success: false,
310
+ worktreePath,
311
+ branch,
312
+ error: `Failed to create parent directory ${baseDir}: ${error}`,
313
+ };
314
+ }
315
+
316
+ try {
317
+ execSync(`git worktree add "${worktreePath}" "${branch}"`, {
318
+ encoding: 'utf-8',
319
+ stdio: 'pipe',
320
+ });
321
+ return { success: true, worktreePath, branch };
322
+ } catch (error) {
323
+ const msg = error instanceof Error ? error.message : String(error);
324
+ return {
325
+ success: false,
326
+ worktreePath,
327
+ branch,
328
+ error: `Failed to create worktree: ${msg}`,
329
+ };
330
+ }
331
+ }
332
+
333
+ /**
334
+ * List all worktree project directories for the current repo.
335
+ * Scans `~/.raf/worktrees/<repo-basename>/` and returns the list of project folder names.
336
+ *
337
+ * @param repoBasename - The basename of the repo root directory
338
+ * @returns Sorted array of project folder names (e.g., ['020-worktree-weaver', '021-another-feature'])
339
+ */
340
+ export function listWorktreeProjects(repoBasename: string): string[] {
341
+ const baseDir = computeWorktreeBaseDir(repoBasename);
342
+
343
+ if (!fs.existsSync(baseDir)) {
344
+ return [];
345
+ }
346
+
347
+ try {
348
+ const entries = fs.readdirSync(baseDir, { withFileTypes: true });
349
+ const projects = entries
350
+ .filter(entry => entry.isDirectory())
351
+ .map(entry => entry.name)
352
+ .sort();
353
+ return projects;
354
+ } catch {
355
+ return [];
356
+ }
357
+ }
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ import { Command } from 'commander';
4
4
  import { createPlanCommand } from './commands/plan.js';
5
5
  import { createDoCommand } from './commands/do.js';
6
6
  import { createStatusCommand } from './commands/status.js';
7
+ import { createMigrateCommand } from './commands/migrate.js';
7
8
  import { getVersion } from './utils/version.js';
8
9
 
9
10
  const program = new Command();
@@ -16,5 +17,6 @@ program
16
17
  program.addCommand(createPlanCommand());
17
18
  program.addCommand(createDoCommand());
18
19
  program.addCommand(createStatusCommand());
20
+ program.addCommand(createMigrateCommand());
19
21
 
20
22
  program.parse();
@@ -1,10 +1,12 @@
1
1
  import { DerivedTask } from '../core/state-derivation.js';
2
+ import { encodeTaskId } from '../utils/paths.js';
2
3
 
3
4
  export interface AmendPromptParams {
4
5
  projectPath: string;
5
6
  existingTasks: Array<DerivedTask & { taskName: string }>;
6
7
  nextTaskNumber: number;
7
8
  newTaskDescription: string;
9
+ worktreeMode?: boolean;
8
10
  }
9
11
 
10
12
  export interface AmendPromptResult {
@@ -23,7 +25,9 @@ export function getAmendPrompt(params: AmendPromptParams): AmendPromptResult {
23
25
  existingTasks,
24
26
  nextTaskNumber,
25
27
  newTaskDescription,
28
+ worktreeMode,
26
29
  } = params;
30
+ const worktreeFlag = worktreeMode ? ' --worktree' : '';
27
31
 
28
32
  const existingTasksSummary = existingTasks
29
33
  .map((task) => {
@@ -63,7 +67,7 @@ You are in AMENDMENT MODE. This means:
63
67
  - You MAY modify [MODIFIABLE] tasks (pending/failed) if the user requests changes
64
68
  - NEVER modify [PROTECTED] tasks (completed) - their outcomes depend on the original plan
65
69
  - DO NOT renumber existing tasks
66
- - You can create NEW tasks starting from number ${nextTaskNumber.toString().padStart(3, '0')}
70
+ - You can create NEW tasks starting from number ${encodeTaskId(nextTaskNumber)}
67
71
 
68
72
  ## Project Location
69
73
 
@@ -101,7 +105,7 @@ Read the user's description of new tasks and identify what needs to be added. Co
101
105
  **Identifying Follow-up Tasks**: When a new task is a follow-up, fix, or iteration of a previously completed task, you MUST reference the previous task's outcome in the new plan's Context section. This gives the executing agent full context about what was done before.
102
106
 
103
107
  Use this format in the Context section:
104
- \`This is a follow-up to task NNN. See outcome: {projectPath}/outcomes/NNN-task-name.md\`
108
+ \`This is a follow-up to task NN. See outcome: {projectPath}/outcomes/NN-task-name.md\`
105
109
 
106
110
  The outcome file paths for completed tasks are listed above in the Existing Tasks section.
107
111
 
@@ -127,8 +131,8 @@ Use this format:
127
131
  ### Step 4: Create New Plan Files
128
132
 
129
133
  After interviewing the user about all NEW tasks, create plan files starting from the next available number:
130
- - ${projectPath}/plans/${nextTaskNumber.toString().padStart(3, '0')}-task-name.md
131
- - ${projectPath}/plans/${(nextTaskNumber + 1).toString().padStart(3, '0')}-task-name.md
134
+ - ${projectPath}/plans/${encodeTaskId(nextTaskNumber)}-task-name.md
135
+ - ${projectPath}/plans/${encodeTaskId(nextTaskNumber + 1)}-task-name.md
132
136
  - etc.
133
137
 
134
138
  Each plan file should follow this structure:
@@ -142,11 +146,11 @@ Each plan file should follow this structure:
142
146
  ## Context
143
147
  [Why this task is needed, how it fits into the larger project]
144
148
  [Reference relevant existing tasks if applicable]
145
- [For follow-up/fix tasks: "This is a follow-up to task NNN. See outcome: {projectPath}/outcomes/NNN-task-name.md"]
149
+ [For follow-up/fix tasks: "This is a follow-up to task NN. See outcome: {projectPath}/outcomes/NN-task-name.md"]
146
150
 
147
151
  ## Dependencies
148
152
  [Optional section - omit if task has no dependencies]
149
- [Comma-separated list of task IDs this task depends on, e.g., "001, 002"]
153
+ [Comma-separated list of task IDs this task depends on, e.g., "01, 02"]
150
154
  [If a dependency fails, this task will be automatically blocked]
151
155
 
152
156
  ## Requirements
@@ -181,7 +185,9 @@ After creating all new plan files:
181
185
  2. Display this exit message to the user:
182
186
 
183
187
  \`\`\`
184
- Planning complete! Press Ctrl-C twice to exit to exit this session
188
+ Planning complete! To exit this session and run your tasks:
189
+ 1. Press Ctrl-C twice to exit
190
+ 2. Then run: raf do <project>${worktreeFlag}
185
191
  \`\`\`
186
192
 
187
193
  ## Important Rules
@@ -189,10 +195,10 @@ Planning complete! Press Ctrl-C twice to exit to exit this session
189
195
  1. NEVER modify COMPLETED task plans - they are [PROTECTED] because their outcomes depend on the original plan
190
196
  2. You MAY modify non-completed task plans (pending/failed) if the user requests changes - they are [MODIFIABLE]
191
197
  3. ALWAYS interview the user before creating or modifying plans
192
- 4. New tasks start from number ${nextTaskNumber.toString().padStart(3, '0')}
198
+ 4. New tasks start from number ${encodeTaskId(nextTaskNumber)}
193
199
  5. Use descriptive, kebab-case names for plan files
194
200
  6. Each plan should be self-contained with all context needed
195
- 7. Specify task dependencies using the ## Dependencies section with task IDs only (e.g., "001, 002")
201
+ 7. Specify task dependencies using the ## Dependencies section with task IDs only (e.g., "01, 02")
196
202
  8. Tasks without dependencies should omit the Dependencies section entirely
197
203
  9. Be specific - vague plans lead to poor execution
198
204
 
@@ -83,8 +83,8 @@ ${previousOutcomes.map((o) => `### Task ${o.taskId}\n${o.content}`).join('\n\n')
83
83
  `;
84
84
  }
85
85
 
86
- // Zero-pad task number to 3 digits
87
- const paddedTaskNumber = taskNumber.toString().padStart(3, '0');
86
+ // Encode task number to 2-char base36
87
+ const paddedTaskNumber = taskNumber.toString(36).padStart(2, '0');
88
88
 
89
89
  const commitInstructions = autoCommit
90
90
  ? `
@@ -98,6 +98,8 @@ After successfully completing the task:
98
98
  2. Commit with message: "RAF[${projectNumber}:${paddedTaskNumber}] <description>"
99
99
  - Write a concise description of what was accomplished
100
100
  - Focus on the actual change, not the task name
101
+ - The commit message must be a SINGLE LINE — no body, no trailers
102
+ - Do NOT add Co-Authored-By or any other trailers to the commit message
101
103
 
102
104
  **IMPORTANT - On Failure**: If the task fails, do NOT commit. Just write the outcome file with the \`<promise>FAILED</promise>\` marker and stop. Uncommitted changes will be preserved for debugging.
103
105
  `
@@ -1,6 +1,7 @@
1
1
  export interface PlanningPromptParams {
2
2
  projectPath: string;
3
3
  inputContent: string;
4
+ worktreeMode?: boolean;
4
5
  }
5
6
 
6
7
  export interface PlanningPromptResult {
@@ -14,7 +15,8 @@ export interface PlanningPromptResult {
14
15
  * - userMessage: Reference to input.md file (via positional argument, triggers Claude to start)
15
16
  */
16
17
  export function getPlanningPrompt(params: PlanningPromptParams): PlanningPromptResult {
17
- const { projectPath } = params;
18
+ const { projectPath, worktreeMode } = params;
19
+ const worktreeFlag = worktreeMode ? ' --worktree' : '';
18
20
 
19
21
  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.
20
22
 
@@ -74,8 +76,8 @@ This file serves as documentation of design choices made during planning. Append
74
76
  ### Step 3: Create Plan Files
75
77
 
76
78
  After interviewing the user about all tasks, create plan files in the plans folder:
77
- - ${projectPath}/plans/001-task-name.md
78
- - ${projectPath}/plans/002-task-name.md
79
+ - ${projectPath}/plans/01-task-name.md
80
+ - ${projectPath}/plans/02-task-name.md
79
81
  - etc.
80
82
 
81
83
  Each plan file should follow this structure:
@@ -91,7 +93,7 @@ Each plan file should follow this structure:
91
93
 
92
94
  ## Dependencies
93
95
  [Optional section - omit if task has no dependencies]
94
- [Comma-separated list of task IDs this task depends on, e.g., "001, 002"]
96
+ [Comma-separated list of task IDs this task depends on, e.g., "01, 02"]
95
97
  [If a dependency fails, this task will be automatically blocked]
96
98
 
97
99
  ## Requirements
@@ -128,12 +130,12 @@ For each task, analyze which other tasks must complete successfully before it ca
128
130
  **Dependency format examples:**
129
131
  \`\`\`markdown
130
132
  ## Dependencies
131
- 001
133
+ 01
132
134
  \`\`\`
133
135
  or for multiple dependencies:
134
136
  \`\`\`markdown
135
137
  ## Dependencies
136
- 001, 002
138
+ 01, 02
137
139
  \`\`\`
138
140
 
139
141
  **Rules for dependencies:**
@@ -151,13 +153,13 @@ After creating all plan files:
151
153
  \`\`\`
152
154
  Planning complete! To exit this session and run your tasks:
153
155
  1. Press Ctrl-C twice to exit
154
- 2. Then run: raf do <project>
156
+ 2. Then run: raf do <project>${worktreeFlag}
155
157
  \`\`\`
156
158
 
157
159
  ## Important Rules
158
160
 
159
161
  1. ALWAYS interview the user before creating plans
160
- 2. Create plans in numbered order (001, 002, 003, etc.) reflecting logical execution order
162
+ 2. Create plans in numbered order (01, 02, 03, etc.) reflecting logical execution order
161
163
  3. Use descriptive, kebab-case names for plan files
162
164
  4. Each plan should be self-contained with all context needed
163
165
  5. Infer dependencies automatically - analyze task relationships, don't ask the user about dependencies
@@ -28,8 +28,14 @@ export interface DoCommandOptions {
28
28
  force?: boolean;
29
29
  model?: ClaudeModelName;
30
30
  sonnet?: boolean;
31
+ worktree?: boolean;
31
32
  }
32
33
 
33
34
  export interface StatusCommandOptions {
34
35
  json?: boolean;
35
36
  }
37
+
38
+ export interface MigrateCommandOptions {
39
+ dryRun?: boolean;
40
+ worktree?: boolean;
41
+ }