@entelligentsia/forgecli 1.0.25 → 1.0.36

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 (390) hide show
  1. package/CHANGELOG.md +258 -0
  2. package/README.md +2 -0
  3. package/dist/CHANGELOG-forge-plugin.md +163 -0
  4. package/dist/bin/argv.d.ts +2 -2
  5. package/dist/bin/argv.js +25 -0
  6. package/dist/bin/argv.js.map +1 -1
  7. package/dist/bin/forge.js +12 -0
  8. package/dist/bin/forge.js.map +1 -1
  9. package/dist/bin/init.d.ts +23 -0
  10. package/dist/bin/init.js +123 -0
  11. package/dist/bin/init.js.map +1 -0
  12. package/dist/bin/uninstall.d.ts +20 -0
  13. package/dist/bin/uninstall.js +141 -0
  14. package/dist/bin/uninstall.js.map +1 -0
  15. package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
  16. package/dist/extensions/forgecli/add-pipeline.js +143 -0
  17. package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
  18. package/dist/extensions/forgecli/add-task.d.ts +20 -0
  19. package/dist/extensions/forgecli/add-task.js +154 -0
  20. package/dist/extensions/forgecli/add-task.js.map +1 -0
  21. package/dist/extensions/forgecli/approve.d.ts +22 -0
  22. package/dist/extensions/forgecli/approve.js +152 -0
  23. package/dist/extensions/forgecli/approve.js.map +1 -0
  24. package/dist/extensions/forgecli/banner.d.ts +10 -0
  25. package/dist/extensions/forgecli/banner.js +36 -0
  26. package/dist/extensions/forgecli/banner.js.map +1 -0
  27. package/dist/extensions/forgecli/calibrate.d.ts +64 -0
  28. package/dist/extensions/forgecli/calibrate.js +481 -0
  29. package/dist/extensions/forgecli/calibrate.js.map +1 -0
  30. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.d.ts +40 -0
  31. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js +593 -0
  32. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js.map +1 -0
  33. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.d.ts +46 -0
  34. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js +245 -0
  35. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js.map +1 -0
  36. package/dist/extensions/forgecli/claude-bootstrap/uninstall.d.ts +23 -0
  37. package/dist/extensions/forgecli/claude-bootstrap/uninstall.js +215 -0
  38. package/dist/extensions/forgecli/claude-bootstrap/uninstall.js.map +1 -0
  39. package/dist/extensions/forgecli/collate.d.ts +22 -0
  40. package/dist/extensions/forgecli/collate.js +134 -0
  41. package/dist/extensions/forgecli/collate.js.map +1 -0
  42. package/dist/extensions/forgecli/commit.d.ts +22 -0
  43. package/dist/extensions/forgecli/commit.js +152 -0
  44. package/dist/extensions/forgecli/commit.js.map +1 -0
  45. package/dist/extensions/forgecli/config-command.d.ts +8 -0
  46. package/dist/extensions/forgecli/config-command.js +67 -0
  47. package/dist/extensions/forgecli/config-command.js.map +1 -0
  48. package/dist/extensions/forgecli/config-layer.d.ts +53 -0
  49. package/dist/extensions/forgecli/config-layer.js +72 -0
  50. package/dist/extensions/forgecli/config-layer.js.map +1 -0
  51. package/dist/extensions/forgecli/config-writer.d.ts +16 -0
  52. package/dist/extensions/forgecli/config-writer.js +69 -0
  53. package/dist/extensions/forgecli/config-writer.js.map +1 -0
  54. package/dist/extensions/forgecli/dashboard/component.js +10 -7
  55. package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
  56. package/dist/extensions/forgecli/enhance.d.ts +27 -0
  57. package/dist/extensions/forgecli/enhance.js +199 -0
  58. package/dist/extensions/forgecli/enhance.js.map +1 -0
  59. package/dist/extensions/forgecli/fix-bug.d.ts +85 -0
  60. package/dist/extensions/forgecli/fix-bug.js +1580 -0
  61. package/dist/extensions/forgecli/fix-bug.js.map +1 -0
  62. package/dist/extensions/forgecli/forge-header.d.ts +12 -0
  63. package/dist/extensions/forgecli/forge-header.js +114 -0
  64. package/dist/extensions/forgecli/forge-header.js.map +1 -0
  65. package/dist/extensions/forgecli/forge-init.d.ts +26 -0
  66. package/dist/extensions/forgecli/forge-init.js +514 -0
  67. package/dist/extensions/forgecli/forge-init.js.map +1 -0
  68. package/dist/extensions/forgecli/forge-root.d.ts +10 -0
  69. package/dist/extensions/forgecli/forge-root.js +62 -0
  70. package/dist/extensions/forgecli/forge-root.js.map +1 -0
  71. package/dist/extensions/forgecli/forge-update-command.d.ts +100 -0
  72. package/dist/extensions/forgecli/forge-update-command.js +435 -0
  73. package/dist/extensions/forgecli/forge-update-command.js.map +1 -0
  74. package/dist/extensions/forgecli/friction-emit.d.ts +99 -0
  75. package/dist/extensions/forgecli/friction-emit.js +245 -0
  76. package/dist/extensions/forgecli/friction-emit.js.map +1 -0
  77. package/dist/extensions/forgecli/implement.d.ts +22 -0
  78. package/dist/extensions/forgecli/implement.js +170 -0
  79. package/dist/extensions/forgecli/implement.js.map +1 -0
  80. package/dist/extensions/forgecli/init-context.d.ts +99 -0
  81. package/dist/extensions/forgecli/init-context.js +178 -0
  82. package/dist/extensions/forgecli/init-context.js.map +1 -0
  83. package/dist/extensions/forgecli/init-progress.d.ts +39 -0
  84. package/dist/extensions/forgecli/init-progress.js +117 -0
  85. package/dist/extensions/forgecli/init-progress.js.map +1 -0
  86. package/dist/extensions/forgecli/input-router.d.ts +33 -0
  87. package/dist/extensions/forgecli/input-router.js +136 -0
  88. package/dist/extensions/forgecli/input-router.js.map +1 -0
  89. package/dist/extensions/forgecli/lib/halt-advisor.d.ts +59 -0
  90. package/dist/extensions/forgecli/lib/halt-advisor.js +113 -0
  91. package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -0
  92. package/dist/extensions/forgecli/lib/orchestrator-preflight.d.ts +46 -0
  93. package/dist/extensions/forgecli/lib/orchestrator-preflight.js +64 -0
  94. package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -0
  95. package/dist/extensions/forgecli/materialize.d.ts +16 -0
  96. package/dist/extensions/forgecli/materialize.js +195 -0
  97. package/dist/extensions/forgecli/materialize.js.map +1 -0
  98. package/dist/extensions/forgecli/migrate.d.ts +22 -0
  99. package/dist/extensions/forgecli/migrate.js +260 -0
  100. package/dist/extensions/forgecli/migrate.js.map +1 -0
  101. package/dist/extensions/forgecli/migration-engine.d.ts +117 -0
  102. package/dist/extensions/forgecli/migration-engine.js +563 -0
  103. package/dist/extensions/forgecli/migration-engine.js.map +1 -0
  104. package/dist/extensions/forgecli/model-registry.d.ts +61 -0
  105. package/dist/extensions/forgecli/model-registry.js +127 -0
  106. package/dist/extensions/forgecli/model-registry.js.map +1 -0
  107. package/dist/extensions/forgecli/model-resolver.d.ts +32 -0
  108. package/dist/extensions/forgecli/model-resolver.js +65 -0
  109. package/dist/extensions/forgecli/model-resolver.js.map +1 -0
  110. package/dist/extensions/forgecli/model-validator.d.ts +29 -0
  111. package/dist/extensions/forgecli/model-validator.js +107 -0
  112. package/dist/extensions/forgecli/model-validator.js.map +1 -0
  113. package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +26 -0
  114. package/dist/extensions/forgecli/orchestrator-status-bar.js +213 -0
  115. package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -0
  116. package/dist/extensions/forgecli/orchestrators/bug/bug-body.d.ts +1 -0
  117. package/dist/extensions/forgecli/orchestrators/bug/bug-body.js +65 -0
  118. package/dist/extensions/forgecli/orchestrators/bug/bug-body.js.map +1 -0
  119. package/dist/extensions/forgecli/orchestrators/bug/bug-id.d.ts +23 -0
  120. package/dist/extensions/forgecli/orchestrators/bug/bug-id.js +140 -0
  121. package/dist/extensions/forgecli/orchestrators/bug/bug-id.js.map +1 -0
  122. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.d.ts +54 -0
  123. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js +349 -0
  124. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js.map +1 -0
  125. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.d.ts +8 -0
  126. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js +60 -0
  127. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js.map +1 -0
  128. package/dist/extensions/forgecli/orchestrators/bug/bug-state.d.ts +14 -0
  129. package/dist/extensions/forgecli/orchestrators/bug/bug-state.js +100 -0
  130. package/dist/extensions/forgecli/orchestrators/bug/bug-state.js.map +1 -0
  131. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.d.ts +72 -0
  132. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js +204 -0
  133. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js.map +1 -0
  134. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.d.ts +38 -0
  135. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js +166 -0
  136. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js.map +1 -0
  137. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.d.ts +3 -0
  138. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js +55 -0
  139. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js.map +1 -0
  140. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.d.ts +7 -0
  141. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js +293 -0
  142. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js.map +1 -0
  143. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.d.ts +2 -0
  144. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js +501 -0
  145. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js.map +1 -0
  146. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.d.ts +41 -0
  147. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js +5 -0
  148. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js.map +1 -0
  149. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.d.ts +43 -0
  150. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js +85 -0
  151. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js.map +1 -0
  152. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.d.ts +8 -0
  153. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js +37 -0
  154. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js.map +1 -0
  155. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.d.ts +28 -0
  156. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js +45 -0
  157. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js.map +1 -0
  158. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.d.ts +26 -0
  159. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js +75 -0
  160. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js.map +1 -0
  161. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.d.ts +24 -0
  162. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js +37 -0
  163. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js.map +1 -0
  164. package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +9 -93
  165. package/dist/extensions/forgecli/orchestrators/fix-bug.js +23 -1721
  166. package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -1
  167. package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +3 -12
  168. package/dist/extensions/forgecli/orchestrators/run-sprint.js +48 -270
  169. package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -1
  170. package/dist/extensions/forgecli/orchestrators/run-task.d.ts +10 -214
  171. package/dist/extensions/forgecli/orchestrators/run-task.js +31 -1481
  172. package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -1
  173. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.d.ts +33 -0
  174. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js +135 -0
  175. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js.map +1 -0
  176. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.d.ts +18 -0
  177. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js +55 -0
  178. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js.map +1 -0
  179. package/dist/extensions/forgecli/orchestrators/task/run-task-command.d.ts +9 -0
  180. package/dist/extensions/forgecli/orchestrators/task/run-task-command.js +174 -0
  181. package/dist/extensions/forgecli/orchestrators/task/run-task-command.js.map +1 -0
  182. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.d.ts +2 -0
  183. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js +494 -0
  184. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js.map +1 -0
  185. package/dist/extensions/forgecli/orchestrators/task/run-task-types.d.ts +62 -0
  186. package/dist/extensions/forgecli/orchestrators/task/run-task-types.js +5 -0
  187. package/dist/extensions/forgecli/orchestrators/task/run-task-types.js.map +1 -0
  188. package/dist/extensions/forgecli/orchestrators/task/task-body.d.ts +4 -0
  189. package/dist/extensions/forgecli/orchestrators/task/task-body.js +48 -0
  190. package/dist/extensions/forgecli/orchestrators/task/task-body.js.map +1 -0
  191. package/dist/extensions/forgecli/orchestrators/task/task-events.d.ts +63 -0
  192. package/dist/extensions/forgecli/orchestrators/task/task-events.js +185 -0
  193. package/dist/extensions/forgecli/orchestrators/task/task-events.js.map +1 -0
  194. package/dist/extensions/forgecli/orchestrators/task/task-gates.d.ts +34 -0
  195. package/dist/extensions/forgecli/orchestrators/task/task-gates.js +78 -0
  196. package/dist/extensions/forgecli/orchestrators/task/task-gates.js.map +1 -0
  197. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.d.ts +42 -0
  198. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js +370 -0
  199. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js.map +1 -0
  200. package/dist/extensions/forgecli/orchestrators/task/task-phases.d.ts +14 -0
  201. package/dist/extensions/forgecli/orchestrators/task/task-phases.js +26 -0
  202. package/dist/extensions/forgecli/orchestrators/task/task-phases.js.map +1 -0
  203. package/dist/extensions/forgecli/orchestrators/task/task-record.d.ts +9 -0
  204. package/dist/extensions/forgecli/orchestrators/task/task-record.js +58 -0
  205. package/dist/extensions/forgecli/orchestrators/task/task-record.js.map +1 -0
  206. package/dist/extensions/forgecli/orchestrators/task/task-state.d.ts +14 -0
  207. package/dist/extensions/forgecli/orchestrators/task/task-state.js +35 -0
  208. package/dist/extensions/forgecli/orchestrators/task/task-state.js.map +1 -0
  209. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.d.ts +36 -0
  210. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js +152 -0
  211. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js.map +1 -0
  212. package/dist/extensions/forgecli/plan.d.ts +22 -0
  213. package/dist/extensions/forgecli/plan.js +167 -0
  214. package/dist/extensions/forgecli/plan.js.map +1 -0
  215. package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
  216. package/dist/extensions/forgecli/quiz-agent.js +98 -0
  217. package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
  218. package/dist/extensions/forgecli/read-command.d.ts +2 -0
  219. package/dist/extensions/forgecli/read-command.js +100 -0
  220. package/dist/extensions/forgecli/read-command.js.map +1 -0
  221. package/dist/extensions/forgecli/regenerate.d.ts +40 -0
  222. package/dist/extensions/forgecli/regenerate.js +438 -0
  223. package/dist/extensions/forgecli/regenerate.js.map +1 -0
  224. package/dist/extensions/forgecli/remove-command.d.ts +17 -0
  225. package/dist/extensions/forgecli/remove-command.js +124 -0
  226. package/dist/extensions/forgecli/remove-command.js.map +1 -0
  227. package/dist/extensions/forgecli/report-bug.d.ts +25 -0
  228. package/dist/extensions/forgecli/report-bug.js +159 -0
  229. package/dist/extensions/forgecli/report-bug.js.map +1 -0
  230. package/dist/extensions/forgecli/retrospective.d.ts +20 -0
  231. package/dist/extensions/forgecli/retrospective.js +126 -0
  232. package/dist/extensions/forgecli/retrospective.js.map +1 -0
  233. package/dist/extensions/forgecli/review-code.d.ts +35 -0
  234. package/dist/extensions/forgecli/review-code.js +196 -0
  235. package/dist/extensions/forgecli/review-code.js.map +1 -0
  236. package/dist/extensions/forgecli/review-plan.d.ts +35 -0
  237. package/dist/extensions/forgecli/review-plan.js +200 -0
  238. package/dist/extensions/forgecli/review-plan.js.map +1 -0
  239. package/dist/extensions/forgecli/run-sprint.d.ts +27 -0
  240. package/dist/extensions/forgecli/run-sprint.js +716 -0
  241. package/dist/extensions/forgecli/run-sprint.js.map +1 -0
  242. package/dist/extensions/forgecli/run-task.d.ts +204 -0
  243. package/dist/extensions/forgecli/run-task.js +1403 -0
  244. package/dist/extensions/forgecli/run-task.js.map +1 -0
  245. package/dist/extensions/forgecli/skill-curation-flag.d.ts +21 -0
  246. package/dist/extensions/forgecli/skill-curation-flag.js +71 -0
  247. package/dist/extensions/forgecli/skill-curation-flag.js.map +1 -0
  248. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +102 -0
  249. package/dist/extensions/forgecli/skill-curator-subagent.js +339 -0
  250. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -0
  251. package/dist/extensions/forgecli/skill-retriever.d.ts +84 -0
  252. package/dist/extensions/forgecli/skill-retriever.js +246 -0
  253. package/dist/extensions/forgecli/skill-retriever.js.map +1 -0
  254. package/dist/extensions/forgecli/skill-usage-tracker.d.ts +91 -0
  255. package/dist/extensions/forgecli/skill-usage-tracker.js +224 -0
  256. package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -0
  257. package/dist/extensions/forgecli/sprint-intake.d.ts +10 -0
  258. package/dist/extensions/forgecli/sprint-intake.js +91 -0
  259. package/dist/extensions/forgecli/sprint-intake.js.map +1 -0
  260. package/dist/extensions/forgecli/sprint-plan.d.ts +14 -0
  261. package/dist/extensions/forgecli/sprint-plan.js +122 -0
  262. package/dist/extensions/forgecli/sprint-plan.js.map +1 -0
  263. package/dist/extensions/forgecli/status-command.d.ts +19 -0
  264. package/dist/extensions/forgecli/status-command.js +140 -0
  265. package/dist/extensions/forgecli/status-command.js.map +1 -0
  266. package/dist/extensions/forgecli/store-error-remediation.d.ts +65 -0
  267. package/dist/extensions/forgecli/store-error-remediation.js +307 -0
  268. package/dist/extensions/forgecli/store-error-remediation.js.map +1 -0
  269. package/dist/extensions/forgecli/store-query.d.ts +22 -0
  270. package/dist/extensions/forgecli/store-query.js +107 -0
  271. package/dist/extensions/forgecli/store-query.js.map +1 -0
  272. package/dist/extensions/forgecli/store-repair.d.ts +17 -0
  273. package/dist/extensions/forgecli/store-repair.js +123 -0
  274. package/dist/extensions/forgecli/store-repair.js.map +1 -0
  275. package/dist/extensions/forgecli/store-resolver.d.ts +56 -0
  276. package/dist/extensions/forgecli/store-resolver.js +263 -0
  277. package/dist/extensions/forgecli/store-resolver.js.map +1 -0
  278. package/dist/extensions/forgecli/store-validator.d.ts +16 -0
  279. package/dist/extensions/forgecli/store-validator.js +32 -0
  280. package/dist/extensions/forgecli/store-validator.js.map +1 -0
  281. package/dist/extensions/forgecli/test-orchestrate.d.ts +2 -0
  282. package/dist/extensions/forgecli/test-orchestrate.js +182 -0
  283. package/dist/extensions/forgecli/test-orchestrate.js.map +1 -0
  284. package/dist/extensions/forgecli/thread-switcher.d.ts +5 -0
  285. package/dist/extensions/forgecli/thread-switcher.js +189 -0
  286. package/dist/extensions/forgecli/thread-switcher.js.map +1 -0
  287. package/dist/extensions/forgecli/transition-guard.d.ts +20 -0
  288. package/dist/extensions/forgecli/transition-guard.js +89 -0
  289. package/dist/extensions/forgecli/transition-guard.js.map +1 -0
  290. package/dist/extensions/forgecli/update/forge-update-command.js +10 -7
  291. package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -1
  292. package/dist/extensions/forgecli/update-check.d.ts +37 -0
  293. package/dist/extensions/forgecli/update-check.js +185 -0
  294. package/dist/extensions/forgecli/update-check.js.map +1 -0
  295. package/dist/extensions/forgecli/update-tools.d.ts +23 -0
  296. package/dist/extensions/forgecli/update-tools.js +135 -0
  297. package/dist/extensions/forgecli/update-tools.js.map +1 -0
  298. package/dist/extensions/forgecli/validate.d.ts +22 -0
  299. package/dist/extensions/forgecli/validate.js +152 -0
  300. package/dist/extensions/forgecli/validate.js.map +1 -0
  301. package/dist/extensions/forgecli/viewport-events.d.ts +78 -0
  302. package/dist/extensions/forgecli/viewport-events.js +243 -0
  303. package/dist/extensions/forgecli/viewport-events.js.map +1 -0
  304. package/dist/extensions/forgecli/viewport-renderer.d.ts +83 -0
  305. package/dist/extensions/forgecli/viewport-renderer.js +233 -0
  306. package/dist/extensions/forgecli/viewport-renderer.js.map +1 -0
  307. package/dist/extensions/forgecli/viewport-theme.d.ts +11 -0
  308. package/dist/extensions/forgecli/viewport-theme.js +128 -0
  309. package/dist/extensions/forgecli/viewport-theme.js.map +1 -0
  310. package/dist/extensions/forgecli/whats-new-widget.d.ts +26 -0
  311. package/dist/extensions/forgecli/whats-new-widget.js +376 -0
  312. package/dist/extensions/forgecli/whats-new-widget.js.map +1 -0
  313. package/dist/extensions/forgecli/whats-new.d.ts +120 -0
  314. package/dist/extensions/forgecli/whats-new.js +470 -0
  315. package/dist/extensions/forgecli/whats-new.js.map +1 -0
  316. package/dist/forge-payload/.base-pack/commands/approve.md +2 -2
  317. package/dist/forge-payload/.base-pack/commands/check-agent.md +2 -2
  318. package/dist/forge-payload/.base-pack/commands/collate.md +2 -2
  319. package/dist/forge-payload/.base-pack/commands/commit.md +2 -2
  320. package/dist/forge-payload/.base-pack/commands/enhance.md +2 -2
  321. package/dist/forge-payload/.base-pack/commands/fix-bug.md +2 -2
  322. package/dist/forge-payload/.base-pack/commands/implement.md +2 -2
  323. package/dist/forge-payload/.base-pack/commands/init.md +278 -0
  324. package/dist/forge-payload/.base-pack/commands/new-sprint.md +2 -2
  325. package/dist/forge-payload/.base-pack/commands/plan-sprint.md +2 -2
  326. package/dist/forge-payload/.base-pack/commands/plan.md +2 -2
  327. package/dist/forge-payload/.base-pack/commands/retro.md +2 -2
  328. package/dist/forge-payload/.base-pack/commands/review-code.md +2 -2
  329. package/dist/forge-payload/.base-pack/commands/review-plan.md +2 -2
  330. package/dist/forge-payload/.base-pack/commands/run-sprint.md +2 -2
  331. package/dist/forge-payload/.base-pack/commands/run-task.md +2 -2
  332. package/dist/forge-payload/.base-pack/commands/validate.md +2 -2
  333. package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -6
  334. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +1 -1
  335. package/dist/forge-payload/.base-pack/workflows-js/wfl-init.js +449 -0
  336. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  337. package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
  338. package/dist/forge-payload/.schemas/migrations.json +85 -0
  339. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  340. package/dist/forge-payload/commands/add-task.md +3 -3
  341. package/dist/forge-payload/commands/ask.md +1 -1
  342. package/dist/forge-payload/commands/check-agent.md +1 -1
  343. package/dist/forge-payload/commands/config.md +1 -1
  344. package/dist/forge-payload/commands/health.md +1 -1
  345. package/dist/forge-payload/commands/init.md +62 -7
  346. package/dist/forge-payload/commands/rebuild.md +3 -3
  347. package/dist/forge-payload/commands/remove.md +1 -1
  348. package/dist/forge-payload/commands/repair.md +1 -1
  349. package/dist/forge-payload/commands/report-bug.md +1 -1
  350. package/dist/forge-payload/commands/status.md +1 -1
  351. package/dist/forge-payload/commands/update.md +3 -3
  352. package/dist/forge-payload/hooks/lib/common.cjs +228 -0
  353. package/dist/forge-payload/hooks/lib/plugin-detection.cjs +106 -0
  354. package/dist/forge-payload/hooks/lib/update-msg.cjs +23 -0
  355. package/dist/forge-payload/hooks/lib/update-url.cjs +46 -0
  356. package/dist/forge-payload/hooks/lib/write-registry.js +53 -0
  357. package/dist/forge-payload/init/discovery/discover-database.md +32 -0
  358. package/dist/forge-payload/init/discovery/discover-processes.md +31 -0
  359. package/dist/forge-payload/init/discovery/discover-routing.md +31 -0
  360. package/dist/forge-payload/init/discovery/discover-stack.md +33 -0
  361. package/dist/forge-payload/init/discovery/discover-testing.md +34 -0
  362. package/dist/forge-payload/init/generation/generate-commands.md +171 -0
  363. package/dist/forge-payload/init/generation/generate-kb-doc.md +60 -0
  364. package/dist/forge-payload/init/generation/generate-knowledge-base.md +56 -0
  365. package/dist/forge-payload/init/generation/generate-persona.md +73 -0
  366. package/dist/forge-payload/init/generation/generate-personas.md +54 -0
  367. package/dist/forge-payload/init/generation/generate-skill.md +66 -0
  368. package/dist/forge-payload/init/generation/generate-skills.md +36 -0
  369. package/dist/forge-payload/init/generation/generate-template.md +60 -0
  370. package/dist/forge-payload/init/generation/generate-templates.md +39 -0
  371. package/dist/forge-payload/init/generation/generate-tools.md +133 -0
  372. package/dist/forge-payload/init/generation/generate-workflows.md +78 -0
  373. package/dist/forge-payload/init/phases/phase-1-collect.md +10 -2
  374. package/dist/forge-payload/init/phases/phase-3-materialize.md +1 -1
  375. package/dist/forge-payload/init/phases/phase-4-register.md +8 -0
  376. package/dist/forge-payload/init/workflow-gen-plan.json +17 -0
  377. package/dist/forge-payload/integrity.json +16 -16
  378. package/dist/forge-payload/meta/workflows/meta-collate.md +5 -6
  379. package/dist/forge-payload/meta/workflows/meta-migrate.md +1 -1
  380. package/dist/forge-payload/schemas/enum-catalog.json +2 -2
  381. package/dist/forge-payload/schemas/structure-manifest.json +3 -12
  382. package/dist/forge-payload/tools/forge-preflight.cjs +268 -0
  383. package/dist/forge-payload/tools/lib/paths.cjs +12 -11
  384. package/dist/forge-payload/tools/lib/pricing.cjs +31 -11
  385. package/dist/forge-payload/tools/query-logger.cjs +34 -0
  386. package/dist/forge-payload/tools/substitute-placeholders.cjs +5 -6
  387. package/node_modules/@mariozechner/clipboard/package.json +1 -2
  388. package/package.json +2 -2
  389. package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +0 -3
  390. package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +0 -25
@@ -0,0 +1,501 @@
1
+ // run-bug-pipeline.ts — the per-bug orchestrator pipeline (runBugPipeline thin
2
+ // wrapper + runBugPipelineInner phase loop). Extracted VERBATIM from fix-bug.ts
3
+ // (FORGE-S31 file-size refactor); the only logic-neutral changes are that the
4
+ // per-phase dispatch, the post-triage bugId capture, the review-phase verdict
5
+ // handling, and the post-triage Path A/B routing are delegated to helpers in
6
+ // bug-phase-dispatch.ts / bug-triage-routing.ts / bug-verdict-loop.ts and the
7
+ // loop switches on their discriminated results.
8
+ //
9
+ // Iron Laws enforced here:
10
+ // IL6 — no shell-string interpolation; all external calls via spawnSync argv arrays
11
+ // IL7 — every failure path emits ctx.ui.notify and returns; no silent continuation
12
+ // IL10 — ALL LLM dispatch goes through runForgeSubagent (NO sendKickoff calls here)
13
+ //
14
+ // sendKickoff is NEVER called from this file.
15
+ import { spawnSync } from "node:child_process";
16
+ import * as fs from "node:fs";
17
+ import * as path from "node:path";
18
+ import { assertAudience, CallerContextStore } from "../../audience-gate.js";
19
+ import { checkMaterialization } from "../../lib/manifest-checker.js";
20
+ import { loadWorkflow } from "../../parsers/workflow-loader.js";
21
+ import { BUG_SUMMARY_KEY_BY_ROLE } from "../../subagent/phase-summary-map.js";
22
+ import { fmtPhaseSummary } from "../../viewport/renderer.js";
23
+ import { resolveAdvisorModel, runHaltAdvisor } from "../halt-advisor.js";
24
+ import { createOrchestratorNotifier } from "../common/orchestrator-notify.js";
25
+ import { runPipelinePreflight } from "../common/orchestrator-entry.js";
26
+ import { withOrchestratorTranscript, } from "../common/orchestrator-transcript-session.js";
27
+ import { buildPhaseEvent, drainFrictionFile, emitEvent, judgementFromSummary, runPreflightGateWithData, } from "../run-task.js";
28
+ import { dispatchBugPhase } from "./bug-phase-dispatch.js";
29
+ import { BUG_PHASES, BUG_TYPE_TOKENS } from "./bug-phases.js";
30
+ import { readBugRecord } from "./bug-id.js";
31
+ import { deleteBugState, writeBugState } from "./bug-state.js";
32
+ import { captureTriageBugId, maybeSkipPhase, routeAfterTriage } from "./bug-triage-routing.js";
33
+ import { handleBugReviewVerdict } from "./bug-verdict-loop.js";
34
+ const STATUS_KEY = "forge:fix-bug";
35
+ const MESSAGE_KEY = "forge:fix-bug:message";
36
+ export async function runBugPipeline(opts) {
37
+ // Entry preflight (layered-config schema + model-config validation) runs
38
+ // BEFORE the transcript writer is created, so a failed preflight never
39
+ // leaves a transcript file behind.
40
+ const notify = createOrchestratorNotifier(opts.ctx, {
41
+ label: "forge:fix-bug",
42
+ statusKey: STATUS_KEY,
43
+ messageKey: MESSAGE_KEY,
44
+ });
45
+ const pre = runPipelinePreflight({ cwd: opts.cwd, ctx: opts.ctx, notify });
46
+ if (!pre.proceed) {
47
+ return {
48
+ status: "failed",
49
+ lastPhaseIndex: opts.resumeFromState?.phaseIndex ?? 0,
50
+ iterationCounts: opts.resumeFromState?.iterationCounts ?? {},
51
+ lastError: pre.lastError,
52
+ };
53
+ }
54
+ // The transcript session owns ctx.ui.notify interception and the guaranteed
55
+ // pipeline-end close on every outcome (see orchestrator-transcript-session).
56
+ return withOrchestratorTranscript({ cwd: opts.cwd, entityKind: "bug", entityId: opts.bugId, ctx: opts.ctx }, (session) => runBugPipelineInner(opts, pre.modelRoutingConfig, session));
57
+ }
58
+ async function runBugPipelineInner(opts, modelRoutingConfig, session) {
59
+ const { bugId: initialBugId, originalArg, isNewBug, cwd, ctx, forgeRoot, storeCli, preflightGate, registry, resumeFromState, } = opts;
60
+ // Mutable bugId — for new bugs, pre-assign a real FORGE-BUG-NNN ID
61
+ // before triage so the subagent never needs to create or discover one.
62
+ // This replaces the fragile PENDING→capture pattern where the subagent was
63
+ // expected to create the bug record and we'd fish the ID from events.
64
+ let bugId = initialBugId;
65
+ let currentPhaseIndex = resumeFromState?.phaseIndex ?? 0;
66
+ const iterationCounts = resumeFromState?.iterationCounts ?? {};
67
+ // Per-phase completion-recovery guard (forge-engineering#41): each role gets
68
+ // at most one deterministic set-bug-summary recovery attempt before a
69
+ // missing-summary hard-fail. Prevents recovery loops.
70
+ const recoveredPhases = new Set();
71
+ // Per-role dispatch counter for OrchestratorTree node identity. Distinct
72
+ // from iterationCounts (which only tracks review-verdict revisions): every
73
+ // dispatch of a role — including a plan-fix re-run after a review
74
+ // loopback — gets its own `<bugId>:<role>:<attempt>` node, so the
75
+ // dashboard renders one leaf per run in dispatch order instead of merging
76
+ // attempts into one node (CART-BUG-003 dashboard regression). Seeded from
77
+ // resume state so resumed runs continue numbering past prior attempts.
78
+ const dispatchCounts = { ...(resumeFromState?.iterationCounts ?? {}) };
79
+ let lastModel;
80
+ let lastProvider;
81
+ // modelRoutingConfig is loaded and validated by runPipelinePreflight (in
82
+ // runBugPipeline) before the transcript writer exists, then passed in.
83
+ // Pipeline name "fix-bug" lets users configure per-phase overrides under
84
+ // pipelines["fix-bug"] in their routing config.
85
+ // Orchestrator transcript writer — created and notify-intercepted by
86
+ // withOrchestratorTranscript; the loop records structured phase-boundary
87
+ // events through it (one JSONL file per run).
88
+ const orchTranscript = session.writer;
89
+ const pipelineStartMs = Date.now();
90
+ while (currentPhaseIndex < BUG_PHASES.length) {
91
+ // ── Between-phase cancellation gate ────────────────────────────
92
+ if (opts.signal?.aborted) {
93
+ ctx.ui.notify(`⊘ forge:fix-bug — ${bugId} cancelled by user.`, "info");
94
+ registry.completePhase(bugId, BUG_PHASES[currentPhaseIndex]?.role ?? "unknown", "cancelled");
95
+ registry.confirmCancelled(bugId);
96
+ // ADR-S21-01: preserve state file so cancelled runs are resumable
97
+ writeBugState(cwd, {
98
+ bugId,
99
+ phaseIndex: currentPhaseIndex,
100
+ iterationCounts,
101
+ halted: false,
102
+ status: "cancelled",
103
+ lastError: undefined,
104
+ savedAt: new Date().toISOString(),
105
+ });
106
+ return { status: "cancelled", lastPhaseIndex: currentPhaseIndex, iterationCounts };
107
+ }
108
+ const phase = BUG_PHASES[currentPhaseIndex];
109
+ if (!phase) {
110
+ ctx.ui.notify(`× forge:fix-bug — invalid phase index ${currentPhaseIndex}`, "error");
111
+ return {
112
+ status: "failed",
113
+ lastPhaseIndex: currentPhaseIndex,
114
+ iterationCounts,
115
+ lastError: `invalid phase index ${currentPhaseIndex}`,
116
+ };
117
+ }
118
+ ctx.ui.setStatus?.(STATUS_KEY, `fix-bug ${bugId}: phase ${currentPhaseIndex + 1}/${BUG_PHASES.length} (${phase.role})`);
119
+ ctx.ui.notify(`→ ${bugId}: ${phase.role} (phase ${currentPhaseIndex + 1}/${BUG_PHASES.length})`, "info");
120
+ orchTranscript.record({
121
+ kind: "phase-start",
122
+ ts: new Date().toISOString(),
123
+ phase: phase.role,
124
+ phaseIndex: currentPhaseIndex,
125
+ phaseCount: BUG_PHASES.length,
126
+ attempt: (iterationCounts[phase.role] ?? 0) + 1,
127
+ workflowFile: phase.workflowFile,
128
+ persona: phase.personaNoun,
129
+ });
130
+ const subWorkflowPath = path.join(cwd, ".forge", "workflows", `${phase.workflowFile}.md`);
131
+ // ── Read sub-workflow ─────────────────────────────────────────
132
+ let subWorkflowMd;
133
+ let subWorkflowAudience = "any";
134
+ try {
135
+ const loaded = loadWorkflow(subWorkflowPath);
136
+ subWorkflowMd = loaded.rawMarkdown;
137
+ subWorkflowAudience = loaded.audience;
138
+ }
139
+ catch (err) {
140
+ const e = err;
141
+ ctx.ui.notify(`× forge:fix-bug — failed to read sub-workflow for ${phase.role}: ${e.message ?? "unknown"}`, "error");
142
+ writeBugState(cwd, {
143
+ bugId,
144
+ phaseIndex: currentPhaseIndex,
145
+ iterationCounts,
146
+ halted: true,
147
+ lastError: `sub-workflow read failed: ${e.message ?? "unknown"}`,
148
+ savedAt: new Date().toISOString(),
149
+ });
150
+ return {
151
+ status: "failed",
152
+ lastPhaseIndex: currentPhaseIndex,
153
+ iterationCounts,
154
+ lastError: `sub-workflow read failed: ${e.message ?? "unknown"}`,
155
+ };
156
+ }
157
+ // ── 6a. Phase skip (state-aware, defense-in-depth) ─────────────
158
+ const bugNow = readBugRecord(bugId, storeCli, cwd);
159
+ if (maybeSkipPhase({ phase, bugId, cwd, ctx, storeCli, bugNow, summaryKeyByRole: BUG_SUMMARY_KEY_BY_ROLE })) {
160
+ currentPhaseIndex++;
161
+ continue;
162
+ }
163
+ // ── 6b. Preflight gate ────────────────────────────────────────
164
+ // Skip preflight gate for triage phase of new bugs (PENDING- placeholder)
165
+ // because the bug record doesn't exist yet — gates referencing bug fields
166
+ // would always fail.
167
+ //
168
+ // Also skip for review phases when the bug is already in a terminal
169
+ // state ("fixed"). Path A bugs get fixed during triage, then the
170
+ // preflight gate's `forbid bug.status == fixed` and `after implement
171
+ // = n/a` checks block review-code/review-plan even though we
172
+ // deliberately want to run those reviews. The review subagent handles
173
+ // the already-fixed scenario internally.
174
+ const pendingBugId = bugId.startsWith("PENDING-");
175
+ const bugAlreadyFixed = bugNow?.status === "fixed" && phase.isReview;
176
+ if (!pendingBugId && !bugAlreadyFixed && fs.existsSync(preflightGate)) {
177
+ const preflightOutcome = runPreflightGateWithData(preflightGate, phase.role, bugId, cwd, "bug");
178
+ if (preflightOutcome.result === "halt") {
179
+ // Render structured failure reason if available.
180
+ if (preflightOutcome.gateFailure) {
181
+ ctx.ui.notify(`× forge:fix-bug — preflight gate failed for phase ${phase.role} ` +
182
+ `[${preflightOutcome.gateFailure.reasonCode}]: ${preflightOutcome.gateFailure.detail}`, "error");
183
+ }
184
+ else {
185
+ ctx.ui.notify(`× forge:fix-bug — preflight gate failed for phase ${phase.role} (exit 1); halting.`, "error");
186
+ }
187
+ writeBugState(cwd, {
188
+ bugId,
189
+ phaseIndex: currentPhaseIndex,
190
+ iterationCounts,
191
+ halted: true,
192
+ lastError: `preflight gate exit 1 for ${phase.role}`,
193
+ savedAt: new Date().toISOString(),
194
+ });
195
+ // Spawn halt-recovery advisor (Tier 1, best-effort — non-fatal).
196
+ if (preflightOutcome.gateFailure) {
197
+ const advisorModel = resolveAdvisorModel(modelRoutingConfig, ctx.model);
198
+ void runHaltAdvisor({
199
+ gateFailure: preflightOutcome.gateFailure,
200
+ advisorModel,
201
+ taskId: bugId,
202
+ cwd,
203
+ ctx: { ui: ctx.ui },
204
+ forgeRoot,
205
+ });
206
+ }
207
+ return {
208
+ status: "halted",
209
+ lastPhaseIndex: currentPhaseIndex,
210
+ iterationCounts,
211
+ lastError: `preflight gate exit 1 for ${phase.role}`,
212
+ };
213
+ }
214
+ if (preflightOutcome.result === "escalate") {
215
+ ctx.ui.notify(`× forge:fix-bug — preflight gate escalated for phase ${phase.role} (exit 2); manual intervention required.`, "error");
216
+ writeBugState(cwd, {
217
+ bugId,
218
+ phaseIndex: currentPhaseIndex,
219
+ iterationCounts,
220
+ halted: true,
221
+ lastError: `preflight gate exit 2 (escalate) for ${phase.role}`,
222
+ savedAt: new Date().toISOString(),
223
+ });
224
+ return {
225
+ status: "escalated",
226
+ lastPhaseIndex: currentPhaseIndex,
227
+ iterationCounts,
228
+ lastError: `preflight gate exit 2 (escalate) for ${phase.role}`,
229
+ };
230
+ }
231
+ }
232
+ // ── 6. Materialization-marker check ───────────────────────────
233
+ // FORGE-BUG-040: every BUG phase is now a true `audience: subagent`
234
+ // sub-workflow — triage / plan-fix / implement no longer alias to
235
+ // fix_bug.md. The marker check is therefore unconditional; a missing
236
+ // marker is a hard failure on the first dispatch.
237
+ {
238
+ const markerCheck = checkMaterialization(subWorkflowPath, subWorkflowMd);
239
+ if (!markerCheck.ok) {
240
+ for (const marker of markerCheck.missing) {
241
+ ctx.ui.notify(`× workflow regression: ${marker} not found in ${subWorkflowPath}`, "error");
242
+ }
243
+ return {
244
+ status: "failed",
245
+ lastPhaseIndex: currentPhaseIndex,
246
+ iterationCounts,
247
+ lastError: `materialization markers missing: ${markerCheck.missing.join(", ")}`,
248
+ };
249
+ }
250
+ }
251
+ // ── 5. Audience check ─────────────────────────────────────────
252
+ // FORGE-BUG-040: every BUG phase is a true `audience: subagent`
253
+ // workflow now; the previous `fix_bug.md` audience-bypass is gone.
254
+ const audienceOk = CallerContextStore.asSubagent(phase.role, () => assertAudience({ workflowName: phase.workflowFile, audience: subWorkflowAudience }, ctx));
255
+ if (!audienceOk) {
256
+ writeBugState(cwd, {
257
+ bugId,
258
+ phaseIndex: currentPhaseIndex,
259
+ iterationCounts,
260
+ halted: true,
261
+ lastError: `audience check failed for ${phase.workflowFile}`,
262
+ savedAt: new Date().toISOString(),
263
+ });
264
+ return {
265
+ status: "failed",
266
+ lastPhaseIndex: currentPhaseIndex,
267
+ iterationCounts,
268
+ lastError: `audience check failed for ${phase.workflowFile}`,
269
+ };
270
+ }
271
+ // ── Read bug record for current status ────────────────────────
272
+ // Skip for PENDING bugIds (bug doesn't exist yet).
273
+ const bugRecordBefore = pendingBugId ? null : readBugRecord(bugId, storeCli, cwd);
274
+ const bugStatusBeforePhase = bugRecordBefore?.status;
275
+ // ── Dispatch (persona load + runForgeSubagent + observer + abort/halt) ──
276
+ // Extracted to bug-phase-dispatch.ts (FORGE-S31). Returns either a
277
+ // terminal result or the live locals the rest of the loop needs.
278
+ const dispatch = await dispatchBugPhase({
279
+ opts,
280
+ phase,
281
+ bugId,
282
+ cwd,
283
+ ctx,
284
+ storeCli,
285
+ currentPhaseIndex,
286
+ iterationCounts,
287
+ dispatchCounts,
288
+ modelRoutingConfig,
289
+ registry,
290
+ isNewBug,
291
+ originalArg,
292
+ subWorkflowMd,
293
+ bugRecordBefore,
294
+ bugStatusBeforePhase,
295
+ pendingBugId,
296
+ });
297
+ if (dispatch.kind === "return")
298
+ return dispatch.result;
299
+ const { result, finishPhaseNode, observer, phaseStart, toolExecutionEvents, debugLogDisabled } = dispatch;
300
+ let { writeDebug, debugLogPath } = dispatch;
301
+ // Capture model/provider from subagent result.
302
+ if (result.model)
303
+ lastModel = result.model;
304
+ if (result.provider)
305
+ lastProvider = result.provider;
306
+ // ── BugId capture after triage phase (Finding #1, #2) ──────────
307
+ // For new bugs, the triage subagent creates the bug record via store-cli.
308
+ // We capture the bugId by scanning tool_execution_end events.
309
+ if (phase.role === "triage" && isNewBug && bugId.startsWith("PENDING-")) {
310
+ const capture = captureTriageBugId({
311
+ bugId,
312
+ cwd,
313
+ ctx,
314
+ storeCli,
315
+ currentPhaseIndex,
316
+ iterationCounts,
317
+ debugLogDisabled,
318
+ toolExecutionEvents,
319
+ }, writeDebug, debugLogPath);
320
+ if (capture.kind === "return")
321
+ return capture.result;
322
+ bugId = capture.bugId;
323
+ debugLogPath = capture.debugLogPath;
324
+ writeDebug = capture.writeDebug;
325
+ }
326
+ {
327
+ const elapsed = Math.floor((Date.now() - phaseStart) / 1000);
328
+ const { turn, toolCount, errCount, cumUsage, cumCompression } = observer.state;
329
+ ctx.ui.notify(`✓ ${phase.role}: ${turn} turn${turn === 1 ? "" : "s"} · ${toolCount} tool call${toolCount === 1 ? "" : "s"}${errCount ? ` · ${errCount} err` : ""} · ${elapsed}s`, "info");
330
+ orchTranscript.record({
331
+ kind: "phase-end",
332
+ ts: new Date().toISOString(),
333
+ phase: phase.role,
334
+ phaseIndex: currentPhaseIndex,
335
+ attempt: (iterationCounts[phase.role] ?? 0) + 1,
336
+ verdict: "n/a",
337
+ elapsedMs: Date.now() - phaseStart,
338
+ turns: turn,
339
+ toolCount,
340
+ errCount,
341
+ subagentTranscriptPath: result.subagentTranscriptPath,
342
+ });
343
+ registry.appendTail(bugId, phase.role, fmtPhaseSummary({
344
+ role: phase.role,
345
+ turns: turn,
346
+ tools: toolCount,
347
+ errors: errCount,
348
+ wallSeconds: elapsed,
349
+ usage: cumUsage,
350
+ model: result.model,
351
+ provider: result.provider,
352
+ compression: cumCompression.tokensSaved > 0 ? cumCompression : undefined,
353
+ }));
354
+ }
355
+ // ── Slice-2: orchestrator emits phase event ──────────────────
356
+ // sprintId for bug event emission is the literal "bugs" (routing key),
357
+ // matching the convention in .forge/workflows/fix_bug.md.
358
+ const phaseEndMs = Date.now();
359
+ const bugRecord = readBugRecord(bugId, storeCli, cwd);
360
+ const sprintId = "bugs"; // routing key for bug events — not a sprint reference
361
+ const phaseIteration = (iterationCounts[phase.role] ?? 0) + 1;
362
+ // Read summary judgement for review phases (using bug summary key map)
363
+ const judgement = phase.isReview
364
+ ? judgementFromSummary(bugRecord ?? null, phase.role, BUG_SUMMARY_KEY_BY_ROLE)
365
+ : undefined;
366
+ const emitCtx = {
367
+ entityType: "bug",
368
+ bugId,
369
+ sprintId, // routing key "bugs" — not a sprint reference
370
+ phase,
371
+ iteration: phaseIteration,
372
+ startMs: phaseStart,
373
+ endMs: phaseEndMs,
374
+ model: result.model ?? "unknown",
375
+ provider: result.provider ?? "unknown",
376
+ usage: {
377
+ input: result.usage.input,
378
+ output: result.usage.output,
379
+ cacheRead: result.usage.cacheRead,
380
+ cacheWrite: result.usage.cacheWrite,
381
+ },
382
+ judgement,
383
+ storeCli,
384
+ cwd,
385
+ };
386
+ const phaseEvent = buildPhaseEvent(emitCtx);
387
+ // Set bug event type based on BUG_TYPE_TOKENS mapping.
388
+ const typeTokenEntry = BUG_TYPE_TOKENS[phase.role];
389
+ if (typeTokenEntry) {
390
+ if (phase.isReview && judgement?.verdict === "revision") {
391
+ phaseEvent.type = typeTokenEntry.fail;
392
+ }
393
+ else {
394
+ phaseEvent.type = typeTokenEntry.pass;
395
+ }
396
+ }
397
+ const emitResult = emitEvent(storeCli, cwd, sprintId, phaseEvent);
398
+ if (!emitResult.ok) {
399
+ ctx.ui.notify(`⚠ forge:fix-bug — phase event emit failed for ${phase.role}: ${emitResult.stderr.trim()}`, "warning");
400
+ writeDebug({ kind: "emit_failed", stderr: emitResult.stderr });
401
+ }
402
+ else {
403
+ writeDebug({ kind: "emit_ok", eventId: phaseEvent.eventId });
404
+ }
405
+ // Drain friction file for this phase.
406
+ const frictionPath = path.join(cwd, ".forge", "cache", `FRICTION-${phase.role}.jsonl`);
407
+ const drain = drainFrictionFile(frictionPath, emitCtx);
408
+ if (drain.emitted + drain.failed > 0) {
409
+ writeDebug({ kind: "friction_drain", ...drain });
410
+ if (drain.failed > 0) {
411
+ ctx.ui.notify(`⚠ forge:fix-bug — friction drain for ${phase.role}: ${drain.emitted} ok, ${drain.failed} failed`, "warning");
412
+ }
413
+ }
414
+ // ── AC §C.16: Bug FSM canonical-enum assertion ────────────────
415
+ // After each phase that could transition bug status, validate the new
416
+ // status via store-cli (single source of truth). Surface a warning (not halt) if invalid.
417
+ const currentBugRecordForAssert = readBugRecord(bugId, storeCli, cwd);
418
+ if (currentBugRecordForAssert && currentBugRecordForAssert.status) {
419
+ // Defer to store-cli's isLegalTransition as authoritative guard.
420
+ // Only warn on statuses store-cli itself would reject.
421
+ const validateResult = spawnSync("node", [storeCli, "validate", "bug", JSON.stringify(currentBugRecordForAssert)], { cwd, encoding: "utf8" });
422
+ if (validateResult.status !== 0) {
423
+ const detail = typeof validateResult.stderr === "string" ? validateResult.stderr.trim() : "unknown";
424
+ ctx.ui.notify(`⚠ forge:fix-bug — bug ${bugId} validation warning: ${detail}`, "warning");
425
+ writeDebug({ kind: "fsm_assertion_warning", bugId, status: currentBugRecordForAssert.status, detail });
426
+ }
427
+ }
428
+ // ── 6b. Verdict check (review phases only) ────────────────────
429
+ if (phase.isReview) {
430
+ const outcome = handleBugReviewVerdict({
431
+ phase,
432
+ bugId,
433
+ storeCli,
434
+ cwd,
435
+ forgeRoot,
436
+ iterationCounts,
437
+ currentPhaseIndex,
438
+ modelRoutingConfig,
439
+ ctx,
440
+ orchTranscript,
441
+ summaryKeyByRole: BUG_SUMMARY_KEY_BY_ROLE,
442
+ recoveredPhases,
443
+ finishPhaseNode,
444
+ });
445
+ if (outcome.kind === "return")
446
+ return outcome.result;
447
+ if (outcome.kind === "loopback") {
448
+ currentPhaseIndex = outcome.toIndex;
449
+ continue;
450
+ }
451
+ // outcome.kind === "advance": fall through to advance
452
+ }
453
+ // ── Advance to next phase ─────────────────────────────────────
454
+ registry.completePhase(bugId, phase.role, "completed");
455
+ finishPhaseNode("completed");
456
+ writeBugState(cwd, {
457
+ bugId,
458
+ phaseIndex: currentPhaseIndex,
459
+ iterationCounts,
460
+ halted: false,
461
+ savedAt: new Date().toISOString(),
462
+ });
463
+ // ── 6c. Path A / Path B branch (post-triage) ──────────────────
464
+ // Per meta-fix-bug.md § Triage Judgement (forge v0.44.0+), the
465
+ // triage subagent records the route decision in
466
+ // bug.summaries.triage.route. The orchestrator reads it after
467
+ // triage returns and selects the downstream phase list:
468
+ // Path A (short-circuit): skip plan-fix + review-plan
469
+ // Path B (default, full loop): run all phases
470
+ //
471
+ // If route is missing or malformed, default to Path B (the safe
472
+ // choice — running extra phases never produces an unsafe outcome).
473
+ // The PHASE_SKIP_STATES heuristic at section 6a remains as
474
+ // defense-in-depth for cases where the field is missing but the
475
+ // bug status proves the work happened.
476
+ if (phase.role === "triage") {
477
+ const routing = routeAfterTriage({ bugId, cwd, ctx, storeCli, currentPhaseIndex });
478
+ if (routing.kind === "jump") {
479
+ currentPhaseIndex = routing.toIndex;
480
+ continue;
481
+ }
482
+ }
483
+ currentPhaseIndex++;
484
+ }
485
+ // ── All phases complete ───────────────────────────────────────────
486
+ deleteBugState(cwd, bugId);
487
+ orchTranscript.record({
488
+ kind: "pipeline-end",
489
+ ts: new Date().toISOString(),
490
+ outcome: "complete",
491
+ elapsedMs: Date.now() - pipelineStartMs,
492
+ });
493
+ return {
494
+ status: "completed",
495
+ lastPhaseIndex: BUG_PHASES.length - 1,
496
+ iterationCounts,
497
+ model: lastModel,
498
+ provider: lastProvider,
499
+ };
500
+ }
501
+ //# sourceMappingURL=run-bug-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-bug-pipeline.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/run-bug-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
2
+ import { type ForgeToolDefs } from "../../forge-tools.js";
3
+ import { getSessionRegistry } from "../../session-registry.js";
4
+ import type { RunBugState } from "./bug-state.js";
5
+ export type RunBugPipelineStatus = "completed" | "halted" | "escalated" | "failed" | "cancelled";
6
+ export interface RunBugPipelineResult {
7
+ status: RunBugPipelineStatus;
8
+ lastPhaseIndex: number;
9
+ iterationCounts: Record<string, number>;
10
+ lastError?: string;
11
+ model?: string;
12
+ provider?: string;
13
+ /**
14
+ * Project-local orchestrator JSONL path for this run. Callers hand it to
15
+ * archiveRun() to mirror the run into the central transcript archive.
16
+ * Unset only when the pipeline returned before the writer was created.
17
+ */
18
+ orchestratorTranscriptPath?: string;
19
+ }
20
+ export interface RunBugPipelineOptions {
21
+ bugId: string;
22
+ /** Original free-form text argument when creating a new bug (not a FORGE-BUG-NNN ID).
23
+ * Passed to triage-phase subagent so it can create the bug with a meaningful description. */
24
+ originalArg?: string;
25
+ /** Whether this is a new bug (free-form text) vs. an existing FORGE-BUG-NNN ID. */
26
+ isNewBug?: boolean;
27
+ cwd: string;
28
+ ctx: ExtensionCommandContext;
29
+ forgeRoot: string;
30
+ storeCli: string;
31
+ preflightGate: string;
32
+ registry: ReturnType<typeof getSessionRegistry>;
33
+ resumeFromState?: RunBugState;
34
+ /**
35
+ * Optional AbortSignal from SessionRegistry. When provided, the pipeline
36
+ * checks signal.aborted between phases and passes the signal to
37
+ * runForgeSubagent so in-flight subagents can be aborted.
38
+ */
39
+ signal?: AbortSignal;
40
+ forgeToolDefs?: ForgeToolDefs;
41
+ }
@@ -0,0 +1,5 @@
1
+ // run-bug-types.ts — pipeline option/result/status types for the bug pipeline.
2
+ // Extracted VERBATIM from fix-bug.ts (FORGE-S31 file-size refactor); no logic
3
+ // changes.
4
+ export {};
5
+ //# sourceMappingURL=run-bug-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-bug-types.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/run-bug-types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,WAAW"}
@@ -0,0 +1,43 @@
1
+ import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
2
+ import { type MergedConfig } from "../../config/config-layer.js";
3
+ import type { OrchestratorNotifier } from "./orchestrator-notify.js";
4
+ export interface ModelValidationInputs {
5
+ personaCatalogue: string[];
6
+ pipelineCatalogue: string[] | null;
7
+ availableModels: Array<{
8
+ provider: string;
9
+ id: string;
10
+ }>;
11
+ }
12
+ /** Gather the model-validation inputs shared by every orchestrator entry: the
13
+ * bundled persona catalogue, the project pipeline names, and the session model
14
+ * registry. The persona dir is resolved relative to this module's dist
15
+ * location (orchestrators/common → four levels up to dist/forge-payload). */
16
+ export declare function gatherModelValidationInputs(cwd: string, ctx: Pick<ExtensionCommandContext, "modelRegistry">): ModelValidationInputs;
17
+ export interface OrchestratorEntry {
18
+ forgeRoot: string;
19
+ storeCli: string;
20
+ preflightGate: string;
21
+ }
22
+ /** Discover the Forge config at cwd. On success, sweep orphaned project
23
+ * transcripts and return the resolved tool paths. On failure, notify and clear
24
+ * the status line, then return null (caller returns immediately). */
25
+ export declare function resolveOrchestratorEntry(opts: {
26
+ cwd: string;
27
+ notify: OrchestratorNotifier;
28
+ }): OrchestratorEntry | null;
29
+ export type PipelinePreflightOutcome = {
30
+ proceed: true;
31
+ modelRoutingConfig: MergedConfig;
32
+ } | {
33
+ proceed: false;
34
+ lastError: string;
35
+ };
36
+ /** Layered-config schema check followed by full model-config validation.
37
+ * Surfaces schema/validation errors via the notifier (matching the legacy
38
+ * inline strings) and returns the merged routing config on success. */
39
+ export declare function runPipelinePreflight(opts: {
40
+ cwd: string;
41
+ ctx: ExtensionCommandContext;
42
+ notify: OrchestratorNotifier;
43
+ }): PipelinePreflightOutcome;