rafcode 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/.claude/settings.local.json +32 -0
  2. package/CLAUDE.md +187 -0
  3. package/LICENSE +21 -0
  4. package/RAF/001-raf-task-improvements/input.md +9 -0
  5. package/RAF/001-raf-task-improvements/outcomes/001-add-decisions-folder.md +21 -0
  6. package/RAF/001-raf-task-improvements/outcomes/002-fix-write-error-on-shutdown.md +22 -0
  7. package/RAF/001-raf-task-improvements/outcomes/003-stash-changes-on-failure.md +34 -0
  8. package/RAF/001-raf-task-improvements/outcomes/004-add-project-name-to-commits.md +28 -0
  9. package/RAF/001-raf-task-improvements/outcomes/005-add-running-time-display.md +36 -0
  10. package/RAF/001-raf-task-improvements/outcomes/006-add-task-name-to-logs.md +22 -0
  11. package/RAF/001-raf-task-improvements/outcomes/007-show-model-at-task-start.md +52 -0
  12. package/RAF/001-raf-task-improvements/outcomes/009-remove-editor-placeholder-text.md +20 -0
  13. package/RAF/001-raf-task-improvements/outcomes/SUMMARY.md +83 -0
  14. package/RAF/001-raf-task-improvements/plans/001-add-decisions-folder.md +38 -0
  15. package/RAF/001-raf-task-improvements/plans/002-fix-write-error-on-shutdown.md +33 -0
  16. package/RAF/001-raf-task-improvements/plans/003-stash-changes-on-failure.md +37 -0
  17. package/RAF/001-raf-task-improvements/plans/004-add-project-name-to-commits.md +34 -0
  18. package/RAF/001-raf-task-improvements/plans/005-add-running-time-display.md +39 -0
  19. package/RAF/001-raf-task-improvements/plans/006-add-task-name-to-logs.md +37 -0
  20. package/RAF/001-raf-task-improvements/plans/009-remove-editor-placeholder-text.md +34 -0
  21. package/RAF/002-raf-task-improvements-execution/decisions/DECISIONS.md +13 -0
  22. package/RAF/002-raf-task-improvements-execution/input.md +3 -0
  23. package/RAF/002-raf-task-improvements-execution/outcomes/001-commit-show-model-at-task-start.md +17 -0
  24. package/RAF/002-raf-task-improvements-execution/outcomes/002-delete-skipped-plan.md +23 -0
  25. package/RAF/002-raf-task-improvements-execution/outcomes/SUMMARY.md +32 -0
  26. package/RAF/002-raf-task-improvements-execution/plans/001-commit-show-model-at-task-start.md +37 -0
  27. package/RAF/002-raf-task-improvements-execution/plans/002-delete-skipped-plan.md +23 -0
  28. package/RAF/003-multi-project-execution/decisions/DECISIONS.md +68 -0
  29. package/RAF/003-multi-project-execution/input.md +6 -0
  30. package/RAF/003-multi-project-execution/outcomes/001-remove-state-json.md +52 -0
  31. package/RAF/003-multi-project-execution/outcomes/002-update-raf-status.md +50 -0
  32. package/RAF/003-multi-project-execution/outcomes/003-simplify-git-logic.md +35 -0
  33. package/RAF/003-multi-project-execution/outcomes/004-auto-commit-planning.md +43 -0
  34. package/RAF/003-multi-project-execution/outcomes/005-rerun-failed-tasks.md +43 -0
  35. package/RAF/003-multi-project-execution/outcomes/006-multi-project-execution.md +42 -0
  36. package/RAF/003-multi-project-execution/outcomes/007-verify-timeout.md +54 -0
  37. package/RAF/003-multi-project-execution/outcomes/008-move-decisions-file.md +38 -0
  38. package/RAF/003-multi-project-execution/outcomes/SUMMARY.md +79 -0
  39. package/RAF/003-multi-project-execution/plans/001-remove-state-json.md +71 -0
  40. package/RAF/003-multi-project-execution/plans/002-update-raf-status.md +65 -0
  41. package/RAF/003-multi-project-execution/plans/003-simplify-git-logic.md +74 -0
  42. package/RAF/003-multi-project-execution/plans/004-auto-commit-planning.md +57 -0
  43. package/RAF/003-multi-project-execution/plans/005-rerun-failed-tasks.md +69 -0
  44. package/RAF/003-multi-project-execution/plans/006-multi-project-execution.md +81 -0
  45. package/RAF/003-multi-project-execution/plans/007-verify-timeout.md +63 -0
  46. package/RAF/003-multi-project-execution/plans/008-move-decisions-file.md +78 -0
  47. package/RAF/004-task-naming-optimization/decisions.md +22 -0
  48. package/RAF/004-task-naming-optimization/input.md +6 -0
  49. package/RAF/004-task-naming-optimization/outcomes/001-remove-summary-file.md +17 -0
  50. package/RAF/004-task-naming-optimization/outcomes/002-base36-project-numbering.md +32 -0
  51. package/RAF/004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md +20 -0
  52. package/RAF/004-task-naming-optimization/outcomes/SUMMARY.md +28 -0
  53. package/RAF/004-task-naming-optimization/plans/001-remove-summary-file.md +34 -0
  54. package/RAF/004-task-naming-optimization/plans/002-base36-project-numbering.md +56 -0
  55. package/RAF/004-task-naming-optimization/plans/003-improve-haiku-prompt.md +50 -0
  56. package/RAF/005-task-naming-improvements/decisions.md +60 -0
  57. package/RAF/005-task-naming-improvements/input.md +2 -0
  58. package/RAF/005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md +42 -0
  59. package/RAF/005-task-naming-improvements/outcomes/002-add-identifier-support-to-status.md +38 -0
  60. package/RAF/005-task-naming-improvements/outcomes/003-update-do-for-full-folder-names.md +44 -0
  61. package/RAF/005-task-naming-improvements/outcomes/004-implement-amend-flag-for-plan.md +55 -0
  62. package/RAF/005-task-naming-improvements/outcomes/005-commit-outcomes-on-complete.md +47 -0
  63. package/RAF/005-task-naming-improvements/outcomes/006-update-execution-prompt-commit-schema.md +40 -0
  64. package/RAF/005-task-naming-improvements/outcomes/007-allow-pending-task-amendments.md +38 -0
  65. package/RAF/005-task-naming-improvements/outcomes/008-fix-timeout-label.md +24 -0
  66. package/RAF/005-task-naming-improvements/plans/001-enhance-identifier-resolution.md +46 -0
  67. package/RAF/005-task-naming-improvements/plans/002-add-identifier-support-to-status.md +36 -0
  68. package/RAF/005-task-naming-improvements/plans/003-update-do-for-full-folder-names.md +38 -0
  69. package/RAF/005-task-naming-improvements/plans/004-implement-amend-flag-for-plan.md +67 -0
  70. package/RAF/005-task-naming-improvements/plans/005-commit-outcomes-on-complete.md +86 -0
  71. package/RAF/005-task-naming-improvements/plans/006-update-execution-prompt-commit-schema.md +60 -0
  72. package/RAF/005-task-naming-improvements/plans/007-allow-pending-task-amendments.md +60 -0
  73. package/RAF/005-task-naming-improvements/plans/008-fix-timeout-label.md +31 -0
  74. package/RAF/006-fix-double-summary-headers/decisions.md +28 -0
  75. package/RAF/006-fix-double-summary-headers/input.md +3 -0
  76. package/RAF/006-fix-double-summary-headers/outcomes/001-fix-double-summary-headers.md +29 -0
  77. package/RAF/006-fix-double-summary-headers/outcomes/002-update-readme-for-npm.md +31 -0
  78. package/RAF/006-fix-double-summary-headers/outcomes/003-npm-publish-instructions.md +30 -0
  79. package/RAF/006-fix-double-summary-headers/outcomes/004-flexible-project-lookup.md +47 -0
  80. package/RAF/006-fix-double-summary-headers/plans/001-fix-double-summary-headers.md +42 -0
  81. package/RAF/006-fix-double-summary-headers/plans/002-update-readme-for-npm.md +44 -0
  82. package/RAF/006-fix-double-summary-headers/plans/003-npm-publish-instructions.md +45 -0
  83. package/RAF/006-fix-double-summary-headers/plans/004-flexible-project-lookup.md +40 -0
  84. package/RAF/007-improve-outcome-format/decisions.md +28 -0
  85. package/RAF/007-improve-outcome-format/input.md +2 -0
  86. package/RAF/007-improve-outcome-format/outcomes/001-update-execution-prompt.md +10 -0
  87. package/RAF/007-improve-outcome-format/outcomes/002-update-state-derivation.md +17 -0
  88. package/RAF/007-improve-outcome-format/outcomes/003-update-do-command-outcome-handling.md +16 -0
  89. package/RAF/007-improve-outcome-format/outcomes/004-implement-failure-analysis.md +16 -0
  90. package/RAF/007-improve-outcome-format/outcomes/005-update-documentation.md +15 -0
  91. package/RAF/007-improve-outcome-format/plans/001-update-execution-prompt.md +36 -0
  92. package/RAF/007-improve-outcome-format/plans/002-update-state-derivation.md +35 -0
  93. package/RAF/007-improve-outcome-format/plans/003-update-do-command-outcome-handling.md +37 -0
  94. package/RAF/007-improve-outcome-format/plans/004-implement-failure-analysis.md +44 -0
  95. package/RAF/007-improve-outcome-format/plans/005-update-documentation.md +33 -0
  96. package/RAF/008-beautiful-do/decisions.md +31 -0
  97. package/RAF/008-beautiful-do/input.md +1 -0
  98. package/RAF/008-beautiful-do/outcomes/001-terminal-symbols.md +55 -0
  99. package/RAF/008-beautiful-do/outcomes/002-refactor-do-output.md +95 -0
  100. package/RAF/008-beautiful-do/outcomes/003-refactor-status-output.md +71 -0
  101. package/RAF/008-beautiful-do/outcomes/004-simplify-logger.md +53 -0
  102. package/RAF/008-beautiful-do/outcomes/005-add-tests.md +41 -0
  103. package/RAF/008-beautiful-do/plans/001-terminal-symbols.md +41 -0
  104. package/RAF/008-beautiful-do/plans/002-refactor-do-output.md +44 -0
  105. package/RAF/008-beautiful-do/plans/003-refactor-status-output.md +37 -0
  106. package/RAF/008-beautiful-do/plans/004-simplify-logger.md +32 -0
  107. package/RAF/008-beautiful-do/plans/005-add-tests.md +40 -0
  108. package/RAF/009-system-promt-ammend/decisions.md +13 -0
  109. package/RAF/009-system-promt-ammend/input.md +9 -0
  110. package/RAF/009-system-promt-ammend/outcomes/001-model-override.md +79 -0
  111. package/RAF/009-system-promt-ammend/outcomes/002-system-prompt-append.md +51 -0
  112. package/RAF/009-system-promt-ammend/outcomes/003-retry-context.md +60 -0
  113. package/RAF/009-system-promt-ammend/plans/001-model-override.md +61 -0
  114. package/RAF/009-system-promt-ammend/plans/002-system-prompt-append.md +56 -0
  115. package/RAF/009-system-promt-ammend/plans/003-retry-context.md +76 -0
  116. package/RAF/010-outcome-marker-fallback/decisions.md +19 -0
  117. package/RAF/010-outcome-marker-fallback/input.md +1 -0
  118. package/RAF/010-outcome-marker-fallback/outcomes/001-outcome-file-marker-fallback.md +35 -0
  119. package/RAF/010-outcome-marker-fallback/outcomes/002-creative-project-naming.md +47 -0
  120. package/RAF/010-outcome-marker-fallback/plans/001-outcome-file-marker-fallback.md +58 -0
  121. package/RAF/010-outcome-marker-fallback/plans/002-creative-project-naming.md +68 -0
  122. package/RAF/011-do-task-in-commit/decisions.md +22 -0
  123. package/RAF/011-do-task-in-commit/input.md +1 -0
  124. package/RAF/011-do-task-in-commit/outcomes/001-update-execution-prompt.md +54 -0
  125. package/RAF/011-do-task-in-commit/outcomes/002-update-tests.md +61 -0
  126. package/RAF/011-do-task-in-commit/outcomes/003-update-documentation.md +51 -0
  127. package/RAF/011-do-task-in-commit/plans/001-update-execution-prompt.md +46 -0
  128. package/RAF/011-do-task-in-commit/plans/002-update-tests.md +51 -0
  129. package/RAF/011-do-task-in-commit/plans/003-update-documentation.md +45 -0
  130. package/RAF/012-name-picker-buffet/decisions.md +40 -0
  131. package/RAF/012-name-picker-buffet/input.md +6 -0
  132. package/RAF/012-name-picker-buffet/outcomes/001-name-picker-for-raf-plan.md +49 -0
  133. package/RAF/012-name-picker-buffet/outcomes/002-interactive-project-picker-for-raf-do.md +49 -0
  134. package/RAF/012-name-picker-buffet/outcomes/003-raf-status-truncation.md +55 -0
  135. package/RAF/012-name-picker-buffet/outcomes/004-failure-reason-details.md +65 -0
  136. package/RAF/012-name-picker-buffet/outcomes/005-remove-raf-commits.md +57 -0
  137. package/RAF/012-name-picker-buffet/outcomes/006-update-execution-prompt-for-commits.md +47 -0
  138. package/RAF/012-name-picker-buffet/outcomes/007-fix-plan-mode-user-prompt.md +83 -0
  139. package/RAF/012-name-picker-buffet/outcomes/008-add-auto-flag-for-plan-mode.md +77 -0
  140. package/RAF/012-name-picker-buffet/plans/001-name-picker-for-raf-plan.md +47 -0
  141. package/RAF/012-name-picker-buffet/plans/002-interactive-project-picker-for-raf-do.md +43 -0
  142. package/RAF/012-name-picker-buffet/plans/003-raf-status-truncation.md +36 -0
  143. package/RAF/012-name-picker-buffet/plans/004-failure-reason-details.md +46 -0
  144. package/RAF/012-name-picker-buffet/plans/005-remove-raf-commits.md +42 -0
  145. package/RAF/012-name-picker-buffet/plans/006-update-execution-prompt-for-commits.md +47 -0
  146. package/RAF/012-name-picker-buffet/plans/007-fix-plan-mode-user-prompt.md +55 -0
  147. package/RAF/012-name-picker-buffet/plans/008-add-auto-flag-for-plan-mode.md +49 -0
  148. package/RAF/013-dependencies-watchdog/decisions.md +37 -0
  149. package/RAF/013-dependencies-watchdog/input.md +1 -0
  150. package/RAF/013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md +56 -0
  151. package/RAF/013-dependencies-watchdog/outcomes/002-update-planning-prompts.md +60 -0
  152. package/RAF/013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md +81 -0
  153. package/RAF/013-dependencies-watchdog/outcomes/004-implement-dependency-checking-in-do.md +116 -0
  154. package/RAF/013-dependencies-watchdog/outcomes/005-update-execution-prompts.md +75 -0
  155. package/RAF/013-dependencies-watchdog/outcomes/006-add-tests.md +100 -0
  156. package/RAF/013-dependencies-watchdog/outcomes/007-add-act-alias.md +46 -0
  157. package/RAF/013-dependencies-watchdog/outcomes/008-add-exit-message.md +52 -0
  158. package/RAF/013-dependencies-watchdog/plans/001-define-dependency-syntax.md +32 -0
  159. package/RAF/013-dependencies-watchdog/plans/002-update-planning-prompts.md +38 -0
  160. package/RAF/013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md +46 -0
  161. package/RAF/013-dependencies-watchdog/plans/004-implement-dependency-checking-in-do.md +48 -0
  162. package/RAF/013-dependencies-watchdog/plans/005-update-execution-prompts.md +44 -0
  163. package/RAF/013-dependencies-watchdog/plans/006-add-tests.md +54 -0
  164. package/RAF/013-dependencies-watchdog/plans/007-add-act-alias.md +26 -0
  165. package/RAF/013-dependencies-watchdog/plans/008-add-exit-message.md +31 -0
  166. package/RAF/014-watchdog/decisions.md +16 -0
  167. package/RAF/014-watchdog/input.md +2 -0
  168. package/RAF/014-watchdog/outcomes/001-amend-flag-position.md +50 -0
  169. package/RAF/014-watchdog/outcomes/002-details-only-on-failure.md +58 -0
  170. package/RAF/014-watchdog/plans/001-amend-flag-position.md +34 -0
  171. package/RAF/014-watchdog/plans/002-details-only-on-failure.md +46 -0
  172. package/RAF/015-name-lottery/decisions.md +14 -0
  173. package/RAF/015-name-lottery/input.md +3 -0
  174. package/RAF/015-name-lottery/outcomes/001-auto-pick-project-name.md +31 -0
  175. package/RAF/015-name-lottery/outcomes/002-mention-plan-files-in-commit.md +23 -0
  176. package/RAF/015-name-lottery/outcomes/003-fix-input-md-in-amend-flow.md +44 -0
  177. package/RAF/015-name-lottery/plans/001-auto-pick-project-name.md +38 -0
  178. package/RAF/015-name-lottery/plans/002-mention-plan-files-in-commit.md +32 -0
  179. package/RAF/015-name-lottery/plans/003-fix-input-md-in-amend-flow.md +44 -0
  180. package/README.md +116 -0
  181. package/dist/commands/do.d.ts +12 -0
  182. package/dist/commands/do.d.ts.map +1 -0
  183. package/dist/commands/do.js +684 -0
  184. package/dist/commands/do.js.map +1 -0
  185. package/dist/commands/plan.d.ts +3 -0
  186. package/dist/commands/plan.d.ts.map +1 -0
  187. package/dist/commands/plan.js +345 -0
  188. package/dist/commands/plan.js.map +1 -0
  189. package/dist/commands/status.d.ts +3 -0
  190. package/dist/commands/status.d.ts.map +1 -0
  191. package/dist/commands/status.js +117 -0
  192. package/dist/commands/status.js.map +1 -0
  193. package/dist/core/claude-runner.d.ts +78 -0
  194. package/dist/core/claude-runner.d.ts.map +1 -0
  195. package/dist/core/claude-runner.js +297 -0
  196. package/dist/core/claude-runner.js.map +1 -0
  197. package/dist/core/editor.d.ts +10 -0
  198. package/dist/core/editor.d.ts.map +1 -0
  199. package/dist/core/editor.js +77 -0
  200. package/dist/core/editor.js.map +1 -0
  201. package/dist/core/failure-analyzer.d.ts +28 -0
  202. package/dist/core/failure-analyzer.d.ts.map +1 -0
  203. package/dist/core/failure-analyzer.js +305 -0
  204. package/dist/core/failure-analyzer.js.map +1 -0
  205. package/dist/core/git.d.ts +42 -0
  206. package/dist/core/git.d.ts.map +1 -0
  207. package/dist/core/git.js +148 -0
  208. package/dist/core/git.js.map +1 -0
  209. package/dist/core/project-manager.d.ts +72 -0
  210. package/dist/core/project-manager.d.ts.map +1 -0
  211. package/dist/core/project-manager.js +193 -0
  212. package/dist/core/project-manager.js.map +1 -0
  213. package/dist/core/retry-handler.d.ts +19 -0
  214. package/dist/core/retry-handler.d.ts.map +1 -0
  215. package/dist/core/retry-handler.js +51 -0
  216. package/dist/core/retry-handler.js.map +1 -0
  217. package/dist/core/shutdown-handler.d.ts +30 -0
  218. package/dist/core/shutdown-handler.d.ts.map +1 -0
  219. package/dist/core/shutdown-handler.js +79 -0
  220. package/dist/core/shutdown-handler.js.map +1 -0
  221. package/dist/core/state-derivation.d.ts +82 -0
  222. package/dist/core/state-derivation.d.ts.map +1 -0
  223. package/dist/core/state-derivation.js +271 -0
  224. package/dist/core/state-derivation.js.map +1 -0
  225. package/dist/core/state-manager.d.ts +54 -0
  226. package/dist/core/state-manager.d.ts.map +1 -0
  227. package/dist/core/state-manager.js +198 -0
  228. package/dist/core/state-manager.js.map +1 -0
  229. package/dist/index.d.ts +3 -0
  230. package/dist/index.d.ts.map +1 -0
  231. package/dist/index.js +16 -0
  232. package/dist/index.js.map +1 -0
  233. package/dist/parsers/output-parser.d.ts +19 -0
  234. package/dist/parsers/output-parser.d.ts.map +1 -0
  235. package/dist/parsers/output-parser.js +137 -0
  236. package/dist/parsers/output-parser.js.map +1 -0
  237. package/dist/prompts/amend.d.ts +20 -0
  238. package/dist/prompts/amend.d.ts.map +1 -0
  239. package/dist/prompts/amend.js +166 -0
  240. package/dist/prompts/amend.js.map +1 -0
  241. package/dist/prompts/execution.d.ts +30 -0
  242. package/dist/prompts/execution.d.ts.map +1 -0
  243. package/dist/prompts/execution.js +179 -0
  244. package/dist/prompts/execution.js.map +1 -0
  245. package/dist/prompts/planning.d.ts +15 -0
  246. package/dist/prompts/planning.d.ts.map +1 -0
  247. package/dist/prompts/planning.js +163 -0
  248. package/dist/prompts/planning.js.map +1 -0
  249. package/dist/types/config.d.ts +26 -0
  250. package/dist/types/config.d.ts.map +1 -0
  251. package/dist/types/config.js +7 -0
  252. package/dist/types/config.js.map +1 -0
  253. package/dist/types/state.d.ts +33 -0
  254. package/dist/types/state.d.ts.map +1 -0
  255. package/dist/types/state.js +28 -0
  256. package/dist/types/state.js.map +1 -0
  257. package/dist/ui/name-picker-subprocess.d.ts +11 -0
  258. package/dist/ui/name-picker-subprocess.d.ts.map +1 -0
  259. package/dist/ui/name-picker-subprocess.js +83 -0
  260. package/dist/ui/name-picker-subprocess.js.map +1 -0
  261. package/dist/ui/name-picker.d.ts +19 -0
  262. package/dist/ui/name-picker.d.ts.map +1 -0
  263. package/dist/ui/name-picker.js +173 -0
  264. package/dist/ui/name-picker.js.map +1 -0
  265. package/dist/ui/project-picker.d.ts +27 -0
  266. package/dist/ui/project-picker.d.ts.map +1 -0
  267. package/dist/ui/project-picker.js +58 -0
  268. package/dist/ui/project-picker.js.map +1 -0
  269. package/dist/utils/config.d.ts +24 -0
  270. package/dist/utils/config.d.ts.map +1 -0
  271. package/dist/utils/config.js +63 -0
  272. package/dist/utils/config.js.map +1 -0
  273. package/dist/utils/logger.d.ts +32 -0
  274. package/dist/utils/logger.d.ts.map +1 -0
  275. package/dist/utils/logger.js +60 -0
  276. package/dist/utils/logger.js.map +1 -0
  277. package/dist/utils/name-generator.d.ts +20 -0
  278. package/dist/utils/name-generator.d.ts.map +1 -0
  279. package/dist/utils/name-generator.js +183 -0
  280. package/dist/utils/name-generator.js.map +1 -0
  281. package/dist/utils/paths.d.ts +132 -0
  282. package/dist/utils/paths.d.ts.map +1 -0
  283. package/dist/utils/paths.js +412 -0
  284. package/dist/utils/paths.js.map +1 -0
  285. package/dist/utils/status-line.d.ts +14 -0
  286. package/dist/utils/status-line.d.ts.map +1 -0
  287. package/dist/utils/status-line.js +36 -0
  288. package/dist/utils/status-line.js.map +1 -0
  289. package/dist/utils/terminal-symbols.d.ts +50 -0
  290. package/dist/utils/terminal-symbols.d.ts.map +1 -0
  291. package/dist/utils/terminal-symbols.js +97 -0
  292. package/dist/utils/terminal-symbols.js.map +1 -0
  293. package/dist/utils/timer.d.ts +17 -0
  294. package/dist/utils/timer.d.ts.map +1 -0
  295. package/dist/utils/timer.js +56 -0
  296. package/dist/utils/timer.js.map +1 -0
  297. package/dist/utils/validation.d.ts +17 -0
  298. package/dist/utils/validation.d.ts.map +1 -0
  299. package/dist/utils/validation.js +106 -0
  300. package/dist/utils/validation.js.map +1 -0
  301. package/dist/utils/version.d.ts +2 -0
  302. package/dist/utils/version.d.ts.map +1 -0
  303. package/dist/utils/version.js +12 -0
  304. package/dist/utils/version.js.map +1 -0
  305. package/jest.config.ts +30 -0
  306. package/package.json +55 -0
  307. package/src/commands/do.ts +829 -0
  308. package/src/commands/plan.ts +422 -0
  309. package/src/commands/status.ts +146 -0
  310. package/src/core/claude-runner.ts +374 -0
  311. package/src/core/editor.ts +85 -0
  312. package/src/core/failure-analyzer.ts +372 -0
  313. package/src/core/git.ts +166 -0
  314. package/src/core/project-manager.ts +243 -0
  315. package/src/core/retry-handler.ts +72 -0
  316. package/src/core/shutdown-handler.ts +93 -0
  317. package/src/core/state-derivation.ts +343 -0
  318. package/src/index.ts +20 -0
  319. package/src/parsers/output-parser.ts +164 -0
  320. package/src/prompts/amend.ts +194 -0
  321. package/src/prompts/execution.ts +223 -0
  322. package/src/prompts/planning.ts +175 -0
  323. package/src/types/config.ts +35 -0
  324. package/src/ui/name-picker-subprocess.ts +96 -0
  325. package/src/ui/name-picker.ts +198 -0
  326. package/src/ui/project-picker.ts +80 -0
  327. package/src/utils/config.ts +69 -0
  328. package/src/utils/logger.ts +81 -0
  329. package/src/utils/name-generator.ts +211 -0
  330. package/src/utils/paths.ts +497 -0
  331. package/src/utils/status-line.ts +45 -0
  332. package/src/utils/terminal-symbols.ts +124 -0
  333. package/src/utils/timer.ts +64 -0
  334. package/src/utils/validation.ts +132 -0
  335. package/src/utils/version.ts +12 -0
  336. package/tests/unit/claude-runner-interactive.test.ts +343 -0
  337. package/tests/unit/claude-runner.test.ts +629 -0
  338. package/tests/unit/command-output.test.ts +295 -0
  339. package/tests/unit/config.test.ts +72 -0
  340. package/tests/unit/dependency-integration.test.ts +559 -0
  341. package/tests/unit/do-blocked-tasks.test.ts +323 -0
  342. package/tests/unit/do-command.test.ts +198 -0
  343. package/tests/unit/do-multiproject.test.ts +270 -0
  344. package/tests/unit/do-rerun.test.ts +270 -0
  345. package/tests/unit/execution-prompt.test.ts +406 -0
  346. package/tests/unit/failure-analyzer.test.ts +276 -0
  347. package/tests/unit/failure-history.test.ts +143 -0
  348. package/tests/unit/git-stash.test.ts +138 -0
  349. package/tests/unit/git.test.ts +80 -0
  350. package/tests/unit/logger.test.ts +132 -0
  351. package/tests/unit/name-generator.test.ts +283 -0
  352. package/tests/unit/name-picker.test.ts +179 -0
  353. package/tests/unit/outcome-content.test.ts +166 -0
  354. package/tests/unit/output-parser.test.ts +178 -0
  355. package/tests/unit/paths.test.ts +741 -0
  356. package/tests/unit/plan-command-amend-flag.test.ts +115 -0
  357. package/tests/unit/plan-command-amend-input.test.ts +156 -0
  358. package/tests/unit/plan-command-auto-flag.test.ts +112 -0
  359. package/tests/unit/plan-command.test.ts +580 -0
  360. package/tests/unit/planning-prompt.test.ts +137 -0
  361. package/tests/unit/project-manager.test.ts +265 -0
  362. package/tests/unit/project-picker.test.ts +338 -0
  363. package/tests/unit/retry-handler.test.ts +89 -0
  364. package/tests/unit/state-derivation.test.ts +714 -0
  365. package/tests/unit/status-command.test.ts +271 -0
  366. package/tests/unit/status-line.test.ts +92 -0
  367. package/tests/unit/terminal-symbols.test.ts +214 -0
  368. package/tests/unit/timer.test.ts +102 -0
  369. package/tests/unit/validation.test.ts +118 -0
  370. package/tsconfig.json +26 -0
@@ -0,0 +1,33 @@
1
+ # Task: Update Documentation for New Outcome Format
2
+
3
+ ## Objective
4
+ Update CLAUDE.md and any other documentation to reflect the new outcome file format and status markers.
5
+
6
+ ## Context
7
+ The status marker has changed from `## Status: SUCCESS/FAILED` to `<promise>COMPLETE</promise>/<promise>FAILED</promise>`. Documentation needs to reflect this change.
8
+
9
+ ## Requirements
10
+ - Update CLAUDE.md "Architectural Decisions" section
11
+ - Update any references to outcome file format
12
+ - Document the new flow: Claude writes outcome → RAF validates
13
+ - Document failure analysis behavior
14
+
15
+ ## Implementation Steps
16
+ 1. Read current CLAUDE.md
17
+ 2. Update "State Derivation Over Persistence" section:
18
+ - Change "Outcome files must include status marker as first line: `## Status: SUCCESS`"
19
+ - To: "Outcome files must end with `<promise>COMPLETE</promise>` or `<promise>FAILED</promise>`"
20
+ 3. Add note about Claude writing outcome files
21
+ 4. Document failure analysis with Sonnet
22
+ 5. Review and update any other affected documentation
23
+
24
+ ## Acceptance Criteria
25
+ - [ ] CLAUDE.md reflects new outcome format
26
+ - [ ] Status marker documentation updated
27
+ - [ ] Failure analysis documented
28
+ - [ ] No stale references to old format
29
+
30
+ ## Notes
31
+ - This is a documentation-only task
32
+ - Should be done after implementation tasks are complete
33
+ - Keep documentation concise and accurate
@@ -0,0 +1,31 @@
1
+ # Project Decisions
2
+
3
+ ## What output style do you prefer during task execution?
4
+ Single-line progress: One updating line like `🔧 [2/5] implementing-auth ⏱ 1:23`
5
+
6
+ ## How much information should be shown for each task?
7
+ Ultra-minimal: Just emoji + task name + timer, nothing else
8
+
9
+ ## Which emoji style do you prefer for task states?
10
+ Dots and symbols: ● running, ✓ done, ✗ failed, ○ pending
11
+
12
+ ## What format should task completion use?
13
+ Replace in place: Running line transforms to done like `✓ implementing-auth 2:34`
14
+
15
+ ## How should retries and errors be displayed?
16
+ Silent retries: Just show ● until done or failed, no retry noise
17
+
18
+ ## What should the project header look like?
19
+ Minimal one-liner: `▶ my-project (5 tasks)`
20
+
21
+ ## What should the final summary look like?
22
+ Single result line: `✓ 5/5 completed in 12:34`
23
+
24
+ ## Should the timer show during the entire project or just per-task?
25
+ Per-task only: Timer shows task duration, resets between tasks
26
+
27
+ ## For the status command, what format do you prefer?
28
+ Compact list: `001 my-project ✓✓●○○ (2/5)`
29
+
30
+ ## Should status show task-level detail?
31
+ Project level only: Just show project with overall progress indicator, no task list
@@ -0,0 +1 @@
1
+ beautiful terminal output during do phase. consices minimal text, emojies, preserve timer
@@ -0,0 +1,55 @@
1
+ # Task 001: Terminal Symbols Module - Outcome
2
+
3
+ ## Summary
4
+
5
+ Created a centralized terminal symbols module (`src/utils/terminal-symbols.ts`) that provides consistent visual symbols and formatting helpers for beautiful terminal output in RAF's `do` and `status` commands.
6
+
7
+ ## Key Changes
8
+
9
+ ### New Files Created
10
+
11
+ 1. **`src/utils/terminal-symbols.ts`**
12
+ - Exported `SYMBOLS` constant with all visual symbols:
13
+ - `●` for running/in-progress
14
+ - `✓` for completed/success
15
+ - `✗` for failed
16
+ - `○` for pending
17
+ - `▶` for project header
18
+ - Exported `TaskStatus` type for type-safe status handling
19
+ - Implemented `formatTaskProgress(current, total, status, name, elapsedMs?)` - formats single task line
20
+ - Implemented `formatProjectHeader(name, taskCount)` - formats project header
21
+ - Implemented `formatSummary(completed, failed, pending, elapsedMs?)` - formats completion summary
22
+ - Implemented `formatProgressBar(tasks)` - formats compact status visualization
23
+
24
+ 2. **`tests/unit/terminal-symbols.test.ts`**
25
+ - 28 comprehensive unit tests covering all functions and edge cases
26
+ - Tests for empty names, zero tasks, truncation, mixed statuses
27
+
28
+ ### Features
29
+
30
+ - All functions are pure and testable (no side effects)
31
+ - Reuses existing `formatElapsedTime()` from timer.ts for consistent time formatting
32
+ - Handles edge cases: empty names, zero tasks, long names (truncation with ellipsis)
33
+ - TypeScript strict mode compliant
34
+
35
+ ## Acceptance Criteria Met
36
+
37
+ - [x] Symbol constants defined and exported
38
+ - [x] All formatter functions implemented
39
+ - [x] Functions handle edge cases (empty names, zero tasks)
40
+ - [x] All tests pass (28 tests)
41
+
42
+ ## Test Results
43
+
44
+ ```
45
+ Test Suites: 1 passed, 1 total
46
+ Tests: 28 passed, 28 total
47
+ ```
48
+
49
+ <promise>COMPLETE</promise>
50
+
51
+
52
+ ## Details
53
+ - Attempts: 2
54
+ - Elapsed time: 3m 8s
55
+ - Completed at: 2026-01-31T11:01:41.535Z
@@ -0,0 +1,95 @@
1
+ # Task 002: Refactor Do Command Output - Outcome
2
+
3
+ ## Summary
4
+
5
+ Refactored the `do` command to use ultra-minimal, single-line progress display with in-place updates. The new design shows only essential information: symbol + task name + timer, with clean transformation from running to complete/failed states.
6
+
7
+ ## Key Changes
8
+
9
+ ### Files Modified
10
+
11
+ 1. **`src/commands/do.ts`**
12
+ - Added imports for `SYMBOLS`, `formatProjectHeader`, `formatSummary`, `formatTaskProgress` from terminal-symbols
13
+ - Added project-level timer tracking (`projectStartTime`)
14
+ - Normal mode now shows:
15
+ - Project header: `▶ my-project (5 tasks)`
16
+ - During execution: `● implementing-auth 1:23` (updates in place)
17
+ - On completion: `✓ implementing-auth 2:34`
18
+ - On failure: `✗ implementing-auth 2:34`
19
+ - Final summary: `✓ 5/5 completed in 12:34`
20
+ - Verbose mode (`--verbose`) preserves all detailed output
21
+ - Model info hidden in normal mode (only with `--verbose`)
22
+ - Retry messages hidden in normal mode
23
+ - Multi-project summary minimized: `✓ project-name` or `✗ project-name`
24
+
25
+ 2. **`src/utils/terminal-symbols.ts`**
26
+ - Updated `formatTaskProgress()` to show elapsed time for all statuses (not just running)
27
+ - This enables showing `✓ task-name 2:34` on completion
28
+
29
+ 3. **`tests/unit/terminal-symbols.test.ts`**
30
+ - Added tests for completed and failed tasks with elapsed time
31
+ - Total tests increased from 28 to 30
32
+
33
+ ### Output Examples
34
+
35
+ **Normal mode (default):**
36
+ ```
37
+ ▶ my-project (3 tasks)
38
+ ● auth-login 0s ← updates in place
39
+ ✓ auth-login 1m 23s ← replaces running line
40
+ ● setup-db 0s
41
+ ✓ setup-db 45s
42
+ ● deploy 0s
43
+ ✓ deploy 2m 10s
44
+ ✓ 3/3 completed in 4m 18s
45
+ ```
46
+
47
+ **Verbose mode (`--verbose`):**
48
+ ```
49
+ Executing project: my-project
50
+ Tasks: 3, Task timeout: 60 minutes
51
+ Using model: claude-opus-4-5-20251101
52
+
53
+ [Task 1/3: auth-login] Executing task 001...
54
+ ✓ [Task 1/3: auth-login] Task 001 completed (1m 23s)
55
+
56
+ ...
57
+
58
+ ✓ All tasks completed!
59
+ ✓ Project complete. Committed to git.
60
+
61
+ Summary:
62
+ Completed: 3
63
+ Failed: 0
64
+ Pending: 0
65
+ ```
66
+
67
+ ## Acceptance Criteria Met
68
+
69
+ - [x] Single-line progress updates in place during task execution
70
+ - [x] Timer visible and updating during task run
71
+ - [x] Clean transformation from running to complete/failed
72
+ - [x] No retry noise in normal mode
73
+ - [x] Summary shows single result line
74
+ - [x] `--verbose` flag still provides detailed output
75
+ - [x] All existing tests pass or are updated (484 tests pass)
76
+
77
+ ## Test Results
78
+
79
+ ```
80
+ Test Suites: 24 passed, 24 total
81
+ Tests: 484 passed, 484 total
82
+ ```
83
+
84
+ <promise>COMPLETE</promise>
85
+
86
+ ## Details
87
+ - Attempts: 1
88
+ - Elapsed time: 2m 15s
89
+ - Completed at: 2026-01-31T11:05:30.000Z
90
+
91
+
92
+ ## Details
93
+ - Attempts: 3
94
+ - Elapsed time: 6m 32s
95
+ - Completed at: 2026-01-31T11:08:14.004Z
@@ -0,0 +1,71 @@
1
+ # Task 003: Refactor Status Command Output - Outcome
2
+
3
+ ## Summary
4
+
5
+ Refactored the `status` command to use compact, minimal output with progress indicators. The command now displays project status using a visual progress bar instead of verbose task lists.
6
+
7
+ ## Key Changes
8
+
9
+ ### Files Modified
10
+
11
+ 1. **`src/commands/status.ts`**
12
+ - Imported terminal symbols: `SYMBOLS`, `formatProgressBar`, `TaskStatus`
13
+ - Updated `listAllProjects()` to show compact format: `001 my-project ✓✓●○○ (2/5)`
14
+ - Simplified single project view: `▶ project-name` with progress bar and counts
15
+ - Added `derivedStatusToTaskStatus()` helper to convert DerivedTaskStatus to TaskStatus
16
+ - Preserved `--json` output unchanged for programmatic use
17
+ - Removed extra hints and verbose task lists
18
+
19
+ ### Output Formats
20
+
21
+ **Project List View:**
22
+ ```
23
+ 001 my-project ✓✓●○○ (2/5)
24
+ 002 done-project ✓✓✓ (3/3)
25
+ 003 has-failures ✓✗○ (1/3)
26
+ ```
27
+
28
+ **Single Project View:**
29
+ ```
30
+ ▶ my-project
31
+ ✓✓●○○ (2/5)
32
+ ```
33
+
34
+ **JSON Output (unchanged):**
35
+ ```json
36
+ {
37
+ "projectName": "my-project",
38
+ "status": "in_progress",
39
+ "state": { ... },
40
+ "stats": { "completed": 2, "failed": 0, "pending": 3, "total": 5 }
41
+ }
42
+ ```
43
+
44
+ ### Progress Bar Symbols
45
+ - `✓` - Completed task
46
+ - `✗` - Failed task
47
+ - `●` - Running/active task
48
+ - `○` - Pending task
49
+
50
+ ## Acceptance Criteria Met
51
+
52
+ - [x] Project list shows compact format with progress indicators
53
+ - [x] Progress bar correctly reflects task statuses
54
+ - [x] No task-level detail in list view
55
+ - [x] `--json` output unchanged
56
+ - [x] Clean, minimal output without extra hints
57
+
58
+ ## Test Results
59
+
60
+ ```
61
+ Test Suites: 25 passed, 25 total
62
+ Tests: 521 passed, 521 total
63
+ ```
64
+
65
+ <promise>COMPLETE</promise>
66
+
67
+
68
+ ## Details
69
+ - Attempts: 2
70
+ - Elapsed time: 3m 54s
71
+ - Completed at: 2026-01-31T11:29:34.752Z
@@ -0,0 +1,53 @@
1
+ # Task 004: Simplify Logger for Minimal Output - Outcome
2
+
3
+ ## Summary
4
+
5
+ Simplified the logger module to support the minimal output style by adding a raw `print()` method, updating `error()` to use `✗` prefix instead of "Error:", and deprecating the context prefix feature (now a no-op).
6
+
7
+ ## Key Changes
8
+
9
+ ### Files Modified
10
+
11
+ 1. **`src/utils/logger.ts`**
12
+ - Added `print(message, ...args)` method that outputs exactly what's passed with no prefixes
13
+ - Changed `error()` to use `✗` prefix instead of "Error:" for consistency with other symbols
14
+ - Deprecated `setContext()` and `clearContext()` - now no-ops but kept for backwards compatibility
15
+ - Removed `contextPrefix` private field (no longer needed)
16
+ - Simplified `formatMessage()` to just return the message unchanged
17
+
18
+ 2. **`tests/unit/logger.test.ts`**
19
+ - Rewrote tests to reflect new behavior
20
+ - Added tests for new `print()` method (3 tests)
21
+ - Updated `error()` test to expect `✗` prefix
22
+ - Updated context tests to verify no-op behavior
23
+ - Added tests for `info`, `success`, `warn`, `verbose_log`, `debug`, `task`, and `newline`
24
+ - Total: 17 tests for logger module
25
+
26
+ ### Backwards Compatibility
27
+
28
+ - `setContext()` and `clearContext()` are kept as no-ops to avoid breaking existing code (used in `do.ts` for verbose mode)
29
+ - These methods are marked with `@deprecated` JSDoc comments
30
+ - The `do` command still calls these methods in verbose mode, but they have no effect
31
+
32
+ ## Acceptance Criteria Met
33
+
34
+ - [x] New `print()` method outputs text exactly as passed
35
+ - [x] `error()` uses `✗` prefix
36
+ - [x] Context prefix methods removed or no-op (no-op for backwards compatibility)
37
+ - [x] All existing functionality still works
38
+ - [x] Tests updated/passing (491 tests total)
39
+
40
+ ## Test Results
41
+
42
+ ```
43
+ Test Suites: 24 passed, 24 total
44
+ Tests: 491 passed, 491 total
45
+ ```
46
+
47
+ <promise>COMPLETE</promise>
48
+
49
+
50
+ ## Details
51
+ - Attempts: 3
52
+ - Elapsed time: 3m 31s
53
+ - Completed at: 2026-01-31T11:17:37.300Z
@@ -0,0 +1,41 @@
1
+ # Task 005: Add Tests for Beautiful Output
2
+
3
+ ## Summary
4
+
5
+ Verified that comprehensive test coverage exists for the beautiful terminal output feature implemented in this project.
6
+
7
+ ## Completed Work
8
+
9
+ ### Test Files Created/Verified
10
+
11
+ 1. **terminal-symbols.test.ts** (30 tests)
12
+ - All formatter functions tested: `formatTaskProgress()`, `formatProjectHeader()`, `formatSummary()`, `formatProgressBar()`
13
+ - Edge cases covered: empty task names, very long names, zero tasks
14
+ - Symbol constants verified
15
+
16
+ 2. **command-output.test.ts** (30 tests)
17
+ - Integration tests for do/status command output formats
18
+ - Verified exact output format matches requirements
19
+
20
+ 3. **logger.test.ts** (17 tests)
21
+ - Tests for the simplified logger module
22
+
23
+ ## Results
24
+
25
+ - All 521 tests pass with no regressions
26
+ - Test files follow existing project patterns using Jest with ts-jest
27
+
28
+ ## Acceptance Criteria Met
29
+
30
+ - [x] All formatter functions have unit tests
31
+ - [x] Edge cases covered (empty, long, zero)
32
+ - [x] Tests verify exact output format
33
+ - [x] All tests pass
34
+ - [x] No regression in existing tests
35
+
36
+ <promise>COMPLETE</promise>
37
+
38
+ ## Details
39
+ - Attempts: 3
40
+ - Elapsed time: 7m 57s
41
+ - Completed at: 2026-01-31T11:25:39.856Z
@@ -0,0 +1,41 @@
1
+ # Task: Create Terminal Symbols Module
2
+
3
+ ## Objective
4
+ Create a centralized module defining the visual symbols and formatting helpers for beautiful terminal output.
5
+
6
+ ## Context
7
+ RAF needs consistent visual symbols across `do` and `status` commands. This module provides the foundation for the ultra-minimal output style using dots and symbols.
8
+
9
+ ## Requirements
10
+ - Symbol palette using dots/symbols style:
11
+ - `●` for running/in-progress
12
+ - `✓` for completed/success
13
+ - `✗` for failed
14
+ - `○` for pending
15
+ - `▶` for project header
16
+ - Helper functions for formatting:
17
+ - `formatTaskProgress(current, total, status, name, timer?)` → `● auth-login 1:23`
18
+ - `formatProjectHeader(name, taskCount)` → `▶ my-project (5 tasks)`
19
+ - `formatSummary(completed, failed, pending, elapsed?)` → `✓ 5/5 completed in 12:34`
20
+ - `formatProgressBar(tasks)` → `✓✓●○○` (sequence of task symbols)
21
+ - All functions should be pure and testable
22
+
23
+ ## Implementation Steps
24
+ 1. Create `src/utils/terminal-symbols.ts`
25
+ 2. Define symbol constants as readonly object
26
+ 3. Implement `formatTaskProgress()` for single-line task display
27
+ 4. Implement `formatProjectHeader()` for project header
28
+ 5. Implement `formatSummary()` for final result line
29
+ 6. Implement `formatProgressBar()` for compact task status visualization
30
+ 7. Export all functions and symbols
31
+
32
+ ## Acceptance Criteria
33
+ - [ ] Symbol constants defined and exported
34
+ - [ ] All formatter functions implemented
35
+ - [ ] Functions handle edge cases (empty names, zero tasks)
36
+ - [ ] All tests pass
37
+
38
+ ## Notes
39
+ - Keep functions pure - no side effects, no console output
40
+ - Timer format should match existing `formatElapsedTime()` from timer.ts
41
+ - Consider terminal width for very long task names (truncate if needed)
@@ -0,0 +1,44 @@
1
+ # Task: Refactor Do Command Output
2
+
3
+ ## Objective
4
+ Update the `do` command to use ultra-minimal, single-line progress display with in-place updates.
5
+
6
+ ## Context
7
+ Currently the `do` command outputs verbose logs. The new design uses single-line progress that updates in place, showing only: symbol + task name + timer. When complete, the running line transforms to show the final status.
8
+
9
+ ## Requirements
10
+ - Project header: `▶ my-project (5 tasks)` - one line only
11
+ - During execution: `● implementing-auth 1:23` (updates in place)
12
+ - On completion: Replace with `✓ implementing-auth 2:34`
13
+ - On failure: Replace with `✗ implementing-auth 2:34`
14
+ - Silent retries: No retry messages, just keep showing `●`
15
+ - Final summary: `✓ 5/5 completed in 12:34` (single line)
16
+ - Remove verbose output by default (keep for `--verbose` flag)
17
+ - No model info in normal mode (only with `--verbose`)
18
+
19
+ ## Implementation Steps
20
+ 1. Import terminal symbols module
21
+ 2. Replace project header logging with `formatProjectHeader()`
22
+ 3. Update task execution loop:
23
+ - Use status line to show `● task-name timer`
24
+ - Update timer every second
25
+ - On complete/fail: clear line, print final `✓`/`✗` line
26
+ 4. Remove retry logging in normal mode
27
+ 5. Remove per-task success/error logger calls
28
+ 6. Update final summary to use `formatSummary()`
29
+ 7. Keep multi-project summary minimal: `✓ project-name`, `✗ project-name`
30
+ 8. Ensure `--verbose` still shows detailed output
31
+
32
+ ## Acceptance Criteria
33
+ - [ ] Single-line progress updates in place during task execution
34
+ - [ ] Timer visible and updating during task run
35
+ - [ ] Clean transformation from running to complete/failed
36
+ - [ ] No retry noise in normal mode
37
+ - [ ] Summary shows single result line
38
+ - [ ] `--verbose` flag still provides detailed output
39
+ - [ ] All existing tests pass or are updated
40
+
41
+ ## Notes
42
+ - Use existing `createStatusLine()` for in-place updates
43
+ - Preserve timer accuracy from current implementation
44
+ - Multi-project mode should show minimal per-project results
@@ -0,0 +1,37 @@
1
+ # Task: Refactor Status Command Output
2
+
3
+ ## Objective
4
+ Update the `status` command to use compact, minimal output with progress indicators.
5
+
6
+ ## Context
7
+ The current status command shows verbose task lists. The new design shows only project-level info with a compact progress bar.
8
+
9
+ ## Requirements
10
+ - List format: `001 my-project ✓✓●○○ (2/5)`
11
+ - Progress bar uses symbols: ✓ (done), ✗ (failed), ● (running/active), ○ (pending)
12
+ - No task-level detail in project list
13
+ - Single project view can keep more detail (optional refinement)
14
+ - Keep `--json` output unchanged for programmatic use
15
+
16
+ ## Implementation Steps
17
+ 1. Import terminal symbols module
18
+ 2. Update `listAllProjects()`:
19
+ - Format each project with `formatProgressBar()`
20
+ - Show project number, name, progress bar, counts
21
+ 3. Simplify single project view:
22
+ - Header: `▶ project-name`
23
+ - Progress bar with counts
24
+ - Remove verbose task list
25
+ 4. Keep `--json` flag working as-is
26
+ 5. Remove extra newlines and "Use 'raf status...'" hint
27
+
28
+ ## Acceptance Criteria
29
+ - [ ] Project list shows compact format with progress indicators
30
+ - [ ] Progress bar correctly reflects task statuses
31
+ - [ ] No task-level detail in list view
32
+ - [ ] `--json` output unchanged
33
+ - [ ] Clean, minimal output without extra hints
34
+
35
+ ## Notes
36
+ - Consider alignment if project names vary significantly in length
37
+ - The status command has no "running" state derived - use ● for projects with some but not all tasks done
@@ -0,0 +1,32 @@
1
+ # Task: Simplify Logger for Minimal Output
2
+
3
+ ## Objective
4
+ Clean up the logger to support the minimal output style without unnecessary prefixes.
5
+
6
+ ## Context
7
+ The current logger adds prefixes like "Error:", "✓", and context prefixes. For the minimal style, we want cleaner output where the caller controls all formatting.
8
+
9
+ ## Requirements
10
+ - Add `print(text)` method that outputs exactly what's passed (no prefixes)
11
+ - Keep existing methods for backwards compatibility with verbose mode
12
+ - Remove context prefix feature (no longer needed with minimal output)
13
+ - Simplify `success()` to just output with `✓` (already does this)
14
+ - Simplify `error()` to output with `✗` instead of "Error:" prefix
15
+
16
+ ## Implementation Steps
17
+ 1. Add `print(message)` method for raw output
18
+ 2. Update `error()` to use `✗` prefix instead of "Error:"
19
+ 3. Remove or deprecate `setContext()` and `clearContext()`
20
+ 4. Keep `warn()` with ⚠️ prefix
21
+ 5. Ensure all tests still pass
22
+
23
+ ## Acceptance Criteria
24
+ - [ ] New `print()` method outputs text exactly as passed
25
+ - [ ] `error()` uses `✗` prefix
26
+ - [ ] Context prefix methods removed or no-op
27
+ - [ ] All existing functionality still works
28
+ - [ ] Tests updated/passing
29
+
30
+ ## Notes
31
+ - The `do` command currently uses setContext for task labels - this will be replaced by the new single-line progress format
32
+ - Keep changes minimal - don't over-engineer
@@ -0,0 +1,40 @@
1
+ # Task: Add Tests for Beautiful Output
2
+
3
+ ## Objective
4
+ Add unit tests for the new terminal symbols module and updated output formatting.
5
+
6
+ ## Context
7
+ The new terminal output needs test coverage to ensure correctness and prevent regressions.
8
+
9
+ ## Requirements
10
+ - Test terminal symbols module:
11
+ - `formatTaskProgress()` with various inputs
12
+ - `formatProjectHeader()` with edge cases
13
+ - `formatSummary()` with different completion states
14
+ - `formatProgressBar()` with various task states
15
+ - Test edge cases:
16
+ - Empty task name
17
+ - Very long task name (truncation)
18
+ - Zero tasks
19
+ - All completed, all failed, mixed states
20
+ - Integration: verify do/status commands produce expected format
21
+
22
+ ## Implementation Steps
23
+ 1. Create `tests/utils/terminal-symbols.test.ts`
24
+ 2. Add tests for each formatter function
25
+ 3. Test symbol constants are correctly defined
26
+ 4. Add edge case tests for boundary conditions
27
+ 5. Update existing command tests if output format changed
28
+ 6. Run full test suite to ensure no regressions
29
+
30
+ ## Acceptance Criteria
31
+ - [ ] All formatter functions have unit tests
32
+ - [ ] Edge cases covered (empty, long, zero)
33
+ - [ ] Tests verify exact output format
34
+ - [ ] All tests pass
35
+ - [ ] No regression in existing tests
36
+
37
+ ## Notes
38
+ - Follow existing test patterns in the codebase
39
+ - Use Jest with ts-jest as per project config
40
+ - Mock console output for integration tests if needed
@@ -0,0 +1,13 @@
1
+ # Project Decisions
2
+
3
+ ## For the model override flag, which CLI syntax do you prefer?
4
+ Support both `--model <name>` AND shorthand flag `--sonnet` (only one shorthand). Opus is the default for both plan and do stages.
5
+
6
+ ## For system prompt append, how should RAF configure this?
7
+ Use Claude CLI's `--system-prompt-append` flag to pass RAF's prompts at system level, giving them higher precedence than passing as user messages.
8
+
9
+ ## For retry context, when should the previous outcome file be passed to Claude?
10
+ On any retry - include previous outcome context on 2nd attempt and beyond, whether task failed or was interrupted.
11
+
12
+ ## For retry context, should the outcome file content be embedded in the prompt or should Claude be instructed to read it?
13
+ Instruct Claude to read the outcome file - tell Claude the path to the outcome file and instruct it to read and analyze before starting.
@@ -0,0 +1,9 @@
1
+ - [ ] add support for model override for plan and do (--sonnet or --model sonnet|haiku|opus)
2
+ - [ ] append claude prompt (our "system" prompts that RAF passes as a user gives them low preference). search web on how to apped system prompt. here is what is found ```System Prompt with Append (Session-Level Enhancement)
3
+ Using the append method preserves Claude Code’s built-in functionality while adding custom instructions: systemPrompt: {
4
+ type: "preset",
5
+ preset: "claude_code",
6
+ append: "Always include detailed docstrings and implement error handling. Run tests after every feature."
7
+ }
8
+ This approach is ideal for Ralph iterations where you want to add iteration-specific guidance without losing tool definitions or core Claude Code behavior. The appended instructions appear directly above tool definitions in the system prompt hierarchy, giving them strong precedence.```
9
+ - [ ] make sure on retry claude caude recieves outcome file from previous run (failure description should help). add to task prompt improved version of this: "this is Nth attemnt at executing this plan. previous attemt give this <path to outcome file>. account for it in your task execution"