@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,166 @@
1
+ // bug-verdict-loop.ts — review-phase verdict + revision/loopback handling for
2
+ // the fix-bug pipeline. Extracted VERBATIM from fix-bug.ts's phase loop
3
+ // (FORGE-S31 file-size refactor) as a pure decision function: it performs the
4
+ // same store reads, ctx.ui notifications, state writes, transcript records,
5
+ // tree-node finalization, status-reset transition, and halt-advisor dispatch the
6
+ // inline block did, and returns a small discriminated result the caller's loop
7
+ // switches on.
8
+ //
9
+ // Behavior-preserving: no logic changes. The only structural change is that the
10
+ // inline `return {...}` paths now return `{ kind: "return"; result }`, the
11
+ // `continue` path returns `{ kind: "loopback"; toIndex }`, and the fall-through
12
+ // (approved) path returns `{ kind: "advance" }`.
13
+ import { spawnSync } from "node:child_process";
14
+ import { resolveAdvisorModel, runHaltAdvisor } from "../halt-advisor.js";
15
+ import { recoverPhaseSummary } from "../common/summary-recovery.js";
16
+ import { findPredecessorIndex } from "../run-task.js";
17
+ import { BUG_PHASES } from "./bug-phases.js";
18
+ import { readBugRecord } from "./bug-id.js";
19
+ import { writeBugState } from "./bug-state.js";
20
+ import { readBugVerdict } from "./bug-verdict.js";
21
+ /**
22
+ * Evaluate the review-phase verdict and decide the loop's next move.
23
+ * Mirrors the inline block that previously lived in runBugPipelineInner.
24
+ */
25
+ export function handleBugReviewVerdict(p) {
26
+ const { phase, bugId, storeCli, cwd, forgeRoot, iterationCounts, currentPhaseIndex, modelRoutingConfig, ctx } = p;
27
+ const { orchTranscript, finishPhaseNode, summaryKeyByRole, recoveredPhases } = p;
28
+ // Re-read bug record for latest status after subagent ran
29
+ const updatedBugRecord = readBugRecord(bugId, storeCli, cwd);
30
+ let verdict = readBugVerdict(updatedBugRecord, phase.role, summaryKeyByRole);
31
+ // Completion recovery (forge-engineering#41): a clean stop with no verdict in
32
+ // the store is most often the subagent writing the {PHASE}-SUMMARY.json
33
+ // sidecar but eliding the set-bug-summary that registers it. Register the
34
+ // sidecar ourselves (once per phase), then re-read. Phases whose verdict comes
35
+ // from bug.status (e.g. commit → summaryKey null) are not recoverable this way.
36
+ if (verdict === "missing") {
37
+ const summaryKey = summaryKeyByRole[phase.role];
38
+ if (summaryKey && !recoveredPhases.has(phase.role)) {
39
+ recoveredPhases.add(phase.role);
40
+ const rec = recoverPhaseSummary({
41
+ storeCli,
42
+ entityId: bugId,
43
+ summaryKey,
44
+ cwd,
45
+ summaryVerb: "set-bug-summary",
46
+ });
47
+ if (rec.ok) {
48
+ const recheck = readBugVerdict(readBugRecord(bugId, storeCli, cwd), phase.role, summaryKeyByRole);
49
+ if (recheck !== "missing") {
50
+ ctx.ui.notify(`⟳ forge:fix-bug — ${phase.role}: subagent skipped set-bug-summary; orchestrator registered ` +
51
+ `the '${summaryKey}' sidecar and the verdict is now present.`, "info");
52
+ verdict = recheck;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ if (verdict === "missing") {
58
+ ctx.ui.notify(`× forge:fix-bug — verdict missing for phase ${phase.role} after subagent completed. Halting for advisory.`, "error");
59
+ finishPhaseNode("failed");
60
+ writeBugState(cwd, {
61
+ bugId,
62
+ phaseIndex: currentPhaseIndex,
63
+ iterationCounts,
64
+ halted: true,
65
+ lastError: `verdict missing for ${phase.role}`,
66
+ savedAt: new Date().toISOString(),
67
+ });
68
+ // A missing verdict IS a postflight-outputs failure: the canonical
69
+ // phase summary the subagent must write (e.g. summaries.code_review,
70
+ // linked via set-bug-summary) was never recorded, so there is no
71
+ // verdict to route on. Route it through the halt-recovery advisor
72
+ // (FORGE-S26-T18) — the same hand-off the preflight/postflight gate
73
+ // failures use — instead of a bare escalation. Best-effort, non-fatal.
74
+ const advisorModel = resolveAdvisorModel(modelRoutingConfig, ctx.model);
75
+ void runHaltAdvisor({
76
+ gateFailure: {
77
+ phase: phase.role,
78
+ reasonCode: "verdict-missing",
79
+ detail: `Phase '${phase.role}' completed but no verdict was found in the store. ` +
80
+ "The canonical phase summary was not written, so the orchestrator has no verdict to route on.",
81
+ remediation: "Re-run the phase and ensure the subagent's forge_store set-bug-summary call " +
82
+ 'uses args:["<bugId>", "<phaseKey>"] with the literal phase key as args[1] ' +
83
+ "(e.g. code_review), and that the call exits zero before the subagent returns.",
84
+ },
85
+ advisorModel,
86
+ taskId: bugId,
87
+ cwd,
88
+ ctx: { ui: ctx.ui },
89
+ forgeRoot,
90
+ });
91
+ return {
92
+ kind: "return",
93
+ result: {
94
+ status: "halted",
95
+ lastPhaseIndex: currentPhaseIndex,
96
+ iterationCounts,
97
+ lastError: `verdict missing for ${phase.role}`,
98
+ },
99
+ };
100
+ }
101
+ if (verdict === "revision") {
102
+ iterationCounts[phase.role] = (iterationCounts[phase.role] ?? 0) + 1;
103
+ if (iterationCounts[phase.role] >= phase.maxIterations) {
104
+ ctx.ui.notify(`× forge:fix-bug — revision cap reached for phase ${phase.role} ` +
105
+ `(${iterationCounts[phase.role]}/${phase.maxIterations} iterations). Escalating.`, "error");
106
+ finishPhaseNode("escalated");
107
+ writeBugState(cwd, {
108
+ bugId,
109
+ phaseIndex: currentPhaseIndex,
110
+ iterationCounts,
111
+ halted: true,
112
+ lastError: `revision cap reached for ${phase.role}`,
113
+ savedAt: new Date().toISOString(),
114
+ });
115
+ return {
116
+ kind: "return",
117
+ result: {
118
+ status: "escalated",
119
+ lastPhaseIndex: currentPhaseIndex,
120
+ iterationCounts,
121
+ lastError: `revision cap reached for ${phase.role}`,
122
+ },
123
+ };
124
+ }
125
+ // Transition bug back to in-progress before re-dispatching implement.
126
+ // This is required for review-code → implement and approve → implement loops.
127
+ const currentBugStatus = updatedBugRecord?.status;
128
+ if (currentBugStatus === "fixed" || currentBugStatus === "approved") {
129
+ const transitionResult = spawnSync("node", [storeCli, "update-status", "bug", bugId, "status", "in-progress"], { cwd, encoding: "utf8" });
130
+ if (transitionResult.status !== 0) {
131
+ ctx.ui.notify(`⚠ forge:fix-bug — failed to transition bug ${bugId} from ${currentBugStatus} to in-progress: ${transitionResult.stderr ?? "unknown"}`, "warning");
132
+ }
133
+ else {
134
+ ctx.ui.notify(`⟳ forge:fix-bug — transitioned bug ${bugId}: ${currentBugStatus} → in-progress`, "info");
135
+ }
136
+ }
137
+ // The review subagent itself finished cleanly — `revision`
138
+ // is its verdict, not a failure — so its node closes as
139
+ // completed before the predecessor re-dispatches under a
140
+ // fresh node ID.
141
+ finishPhaseNode("completed");
142
+ const predIndex = findPredecessorIndex(BUG_PHASES, currentPhaseIndex);
143
+ ctx.ui.notify(`⟳ forge:fix-bug — ${phase.role} returned revision; looping to ${BUG_PHASES[predIndex]?.role ?? predIndex} ` +
144
+ `(attempt ${iterationCounts[phase.role]}/${phase.maxIterations})`, "info");
145
+ orchTranscript.record({
146
+ kind: "phase-loopback",
147
+ ts: new Date().toISOString(),
148
+ fromPhase: phase.role,
149
+ toPhase: BUG_PHASES[predIndex]?.role ?? String(predIndex),
150
+ fromPhaseIndex: currentPhaseIndex,
151
+ toPhaseIndex: predIndex,
152
+ reason: `${phase.role} returned revision (attempt ${iterationCounts[phase.role]}/${phase.maxIterations})`,
153
+ });
154
+ writeBugState(cwd, {
155
+ bugId,
156
+ phaseIndex: predIndex,
157
+ iterationCounts,
158
+ halted: false,
159
+ savedAt: new Date().toISOString(),
160
+ });
161
+ return { kind: "loopback", toIndex: predIndex };
162
+ }
163
+ // verdict === "approved": fall through to advance
164
+ return { kind: "advance" };
165
+ }
166
+ //# sourceMappingURL=bug-verdict-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bug-verdict-loop.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-verdict-loop.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,eAAe;AACf,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,iDAAiD;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAwB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA4BlD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,CAAuB;IAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClH,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAEjF,0DAA0D;IAC1D,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,OAAO,GAAG,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAE7E,8EAA8E;IAC9E,wEAAwE;IACxE,0EAA0E;IAC1E,+EAA+E;IAC/E,gFAAgF;IAChF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,mBAAmB,CAAC;gBAC/B,QAAQ;gBACR,QAAQ,EAAE,KAAK;gBACf,UAAU;gBACV,GAAG;gBACH,WAAW,EAAE,iBAAiB;aAC9B,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBAClG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qBAAqB,KAAK,CAAC,IAAI,8DAA8D;wBAC5F,QAAQ,UAAU,2CAA2C,EAC9D,MAAM,CACN,CAAC;oBACF,OAAO,GAAG,OAAO,CAAC;gBACnB,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,+CAA+C,KAAK,CAAC,IAAI,kDAAkD,EAC3G,OAAO,CACP,CAAC;QACF,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,iBAAiB;YAC7B,eAAe;YACf,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,uBAAuB,KAAK,CAAC,IAAI,EAAE;YAC9C,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,kEAAkE;QAClE,oEAAoE;QACpE,uEAAuE;QACvE,MAAM,YAAY,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAY,CAAC,CAAC;QAC/E,KAAK,cAAc,CAAC;YACnB,WAAW,EAAE;gBACZ,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,UAAU,EAAE,iBAAiB;gBAC7B,MAAM,EACL,UAAU,KAAK,CAAC,IAAI,qDAAqD;oBACzE,8FAA8F;gBAC/F,WAAW,EACV,8EAA8E;oBAC9E,4EAA4E;oBAC5E,+EAA+E;aAChF;YACD,YAAY;YACZ,MAAM,EAAE,KAAK;YACb,GAAG;YACH,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAS,EAAE;YAC1B,SAAS;SACT,CAAC,CAAC;QACH,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,iBAAiB;gBACjC,eAAe;gBACf,SAAS,EAAE,uBAAuB,KAAK,CAAC,IAAI,EAAE;aAC9C;SACD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5B,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAErE,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,oDAAoD,KAAK,CAAC,IAAI,GAAG;gBAChE,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,2BAA2B,EAClF,OAAO,CACP,CAAC;YACF,eAAe,CAAC,WAAW,CAAC,CAAC;YAC7B,aAAa,CAAC,GAAG,EAAE;gBAClB,KAAK;gBACL,UAAU,EAAE,iBAAiB;gBAC7B,eAAe;gBACf,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,4BAA4B,KAAK,CAAC,IAAI,EAAE;gBACnD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACjC,CAAC,CAAC;YACH,OAAO;gBACN,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,cAAc,EAAE,iBAAiB;oBACjC,eAAe;oBACf,SAAS,EAAE,4BAA4B,KAAK,CAAC,IAAI,EAAE;iBACnD;aACD,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,8EAA8E;QAC9E,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,CAAC;QAClD,IAAI,gBAAgB,KAAK,OAAO,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACrE,MAAM,gBAAgB,GAAG,SAAS,CACjC,MAAM,EACN,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,EAClE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CACzB,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,8CAA8C,KAAK,SAAS,gBAAgB,oBAAoB,gBAAgB,CAAC,MAAM,IAAI,SAAS,EAAE,EACtI,SAAS,CACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sCAAsC,KAAK,KAAK,gBAAgB,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACzG,CAAC;QACF,CAAC;QAED,2DAA2D;QAC3D,wDAAwD;QACxD,yDAAyD;QACzD,iBAAiB;QACjB,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACtE,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qBAAqB,KAAK,CAAC,IAAI,kCAAkC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,SAAS,GAAG;YAC3G,YAAY,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,EAClE,MAAM,CACN,CAAC;QACF,cAAc,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,gBAAgB;YACtB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC;YACzD,cAAc,EAAE,iBAAiB;YACjC,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,+BAA+B,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG;SACzG,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,SAAS;YACrB,eAAe;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,kDAAkD;IAClD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BugRecord } from "./bug-id.js";
2
+ export type BugVerdict = "approved" | "revision" | "n/a" | "missing";
3
+ export declare function readBugVerdict(bugRecord: BugRecord | null, phaseRole: string, summaryKeyByRole: Record<string, string | null>): BugVerdict;
@@ -0,0 +1,55 @@
1
+ // bug-verdict.ts — read the routing verdict for a bug phase from the bug
2
+ // record (approve summary / commit status / review summaries). Extracted
3
+ // VERBATIM from fix-bug.ts (FORGE-S31 file-size refactor); no logic changes.
4
+ export function readBugVerdict(bugRecord, phaseRole, summaryKeyByRole) {
5
+ if (!bugRecord)
6
+ return "missing";
7
+ // Approve phase: read approve summary verdict (set via set-bug-summary).
8
+ // The forge v0.44.0 contract makes summaries.approve.verdict the canonical
9
+ // approve signal for bugs — `bug.status` does NOT carry an "approved"
10
+ // value (that enum was dropped). See read-verdict.cjs §
11
+ // BUG_PHASE_VERDICT_SOURCE for the matching plugin-side wiring.
12
+ if (phaseRole === "approve") {
13
+ const summaryKey = summaryKeyByRole["approve"];
14
+ if (summaryKey) {
15
+ const summaries = bugRecord.summaries ?? {};
16
+ const blob = summaries[summaryKey];
17
+ if (blob && typeof blob === "object") {
18
+ const verdict = blob?.verdict;
19
+ if (typeof verdict === "string") {
20
+ if (verdict === "approved")
21
+ return "approved";
22
+ if (verdict === "revision")
23
+ return "revision";
24
+ }
25
+ }
26
+ }
27
+ return "missing";
28
+ }
29
+ // Commit phase: read bug status directly. Terminal target is `fixed`.
30
+ if (phaseRole === "commit") {
31
+ if (bugRecord.status === "fixed")
32
+ return "approved";
33
+ // in-progress means commit did not advance status — treat as revision-needed.
34
+ if (bugRecord.status === "in-progress")
35
+ return "revision";
36
+ return "missing";
37
+ }
38
+ // Review phases: read from summaries via key map.
39
+ const summaryKey = summaryKeyByRole[phaseRole];
40
+ if (!summaryKey)
41
+ return "missing";
42
+ const summaries = bugRecord.summaries ?? {};
43
+ const blob = summaries[summaryKey];
44
+ if (!blob || typeof blob !== "object")
45
+ return "missing";
46
+ const verdict = blob?.verdict;
47
+ if (typeof verdict !== "string")
48
+ return "missing";
49
+ if (verdict === "approved")
50
+ return "approved";
51
+ if (verdict === "revision")
52
+ return "revision";
53
+ return "missing";
54
+ }
55
+ //# sourceMappingURL=bug-verdict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bug-verdict.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-verdict.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAQ7E,MAAM,UAAU,cAAc,CAC7B,SAA2B,EAC3B,SAAiB,EACjB,gBAA+C;IAE/C,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,wDAAwD;IACxD,gEAAgE;IAChE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAI,SAAqC,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAI,IAAgC,EAAE,OAAO,CAAC;gBAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACjC,IAAI,OAAO,KAAK,UAAU;wBAAE,OAAO,UAAU,CAAC;oBAC9C,IAAI,OAAO,KAAK,UAAU;wBAAE,OAAO,UAAU,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,UAAU,CAAC;QACpD,8EAA8E;QAC9E,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa;YAAE,OAAO,UAAU,CAAC;QAC1D,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAI,SAAqC,CAAC,UAAU,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,OAAO,GAAI,IAAgC,EAAE,OAAO,CAAC;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC9C,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+ import { type ForgeToolDefs } from "../../forge-tools.js";
3
+ export interface RegisterFixBugOptions {
4
+ cwd?: string;
5
+ forgeToolDefs?: ForgeToolDefs;
6
+ }
7
+ export declare function registerFixBug(pi: ExtensionAPI, options?: RegisterFixBugOptions): void;
@@ -0,0 +1,293 @@
1
+ // run-bug-command.ts — the /forge:fix-bug command handler (config discovery,
2
+ // bug-ID resolution / minting, resume detection, session registration, then
3
+ // delegate to runBugPipeline). Extracted VERBATIM from fix-bug.ts (no logic
4
+ // changes).
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import { assertAudience, CallerContextStore } from "../../audience-gate.js";
8
+ import { loadGovernorProjectConfig } from "../../governor-config.js";
9
+ import { getOrchestratorTree } from "../../orchestrator-tree.js";
10
+ import { loadWorkflow } from "../../parsers/workflow-loader.js";
11
+ import { getSessionRegistry } from "../../session-registry.js";
12
+ import { resolveToCanonicalId, resolveToolDir } from "../../store/store-resolver.js";
13
+ import { archiveRun } from "../../transcript-archive.js";
14
+ import { createOrchestratorNotifier } from "../common/orchestrator-notify.js";
15
+ import { resolveOrchestratorEntry } from "../common/orchestrator-entry.js";
16
+ import { formatLocalTime, isNonInteractive } from "../common/orchestrator-misc.js";
17
+ import { assignNextBugId, extractBugIdFromReportText, preCreateBug, readBugRecord } from "./bug-id.js";
18
+ import { BUG_PHASES, BUG_TERMINAL_STATES } from "./bug-phases.js";
19
+ import { deleteBugState, isBugStateStale, readBugState } from "./bug-state.js";
20
+ import { runBugPipeline } from "./run-bug-pipeline.js";
21
+ const STATUS_KEY = "forge:fix-bug";
22
+ const MESSAGE_KEY = "forge:fix-bug:message";
23
+ export function registerFixBug(pi, options = {}) {
24
+ pi.registerCommand("forge:fix-bug", {
25
+ description: "Run the full bug-fix pipeline (triage → plan-fix → review-plan → implement → review-code → approve → commit). " +
26
+ "Usage: /forge:fix-bug <BUG_ID_OR_SUMMARY>. " +
27
+ "Orchestrator archetype: each phase is an isolated subagent session (IL10).",
28
+ async handler(args, ctx) {
29
+ const cwd = options.cwd ?? process.cwd();
30
+ const rawArg = args.trim();
31
+ if (!rawArg) {
32
+ ctx.ui.notify("× forge:fix-bug — bug ID or summary required. Usage: /forge:fix-bug <BUG_ID_OR_SUMMARY>", "error");
33
+ return;
34
+ }
35
+ const notify = createOrchestratorNotifier(ctx, {
36
+ label: "forge:fix-bug",
37
+ statusKey: STATUS_KEY,
38
+ messageKey: MESSAGE_KEY,
39
+ });
40
+ notify.setStatus(`fix-bug: initializing…`);
41
+ // ── Discover forge config + sweep orphaned transcripts ───────────
42
+ const entry = resolveOrchestratorEntry({ cwd, notify });
43
+ if (!entry)
44
+ return;
45
+ const { forgeRoot, storeCli, preflightGate } = entry;
46
+ // ── Determine bugId ────────────────────────────────────────────
47
+ let bugId;
48
+ let isNewBug = false;
49
+ // Check if arg looks like it could be a bug ID (prefixed or unprefixed).
50
+ // Covers: FORGE-BUG-042, BUG-042, B042.
51
+ const looksLikeBugId = /^(?:[A-Z0-9]+-)?(?:BUG-?\d+|B\d+)$/i.test(rawArg) || /^BUG-\d+$/i.test(rawArg);
52
+ if (/^[A-Z][A-Z0-9]*-BUG-\d+$/.test(rawArg)) {
53
+ // Canonical prefixed bug ID (any project prefix, e.g. FORGE-BUG-042,
54
+ // CART-BUG-001) — verify it exists. Previously hardcoded to FORGE-,
55
+ // which pushed other-prefix canonical IDs through the resolver.
56
+ bugId = rawArg;
57
+ const bugRecord = readBugRecord(bugId, storeCli, cwd);
58
+ if (!bugRecord) {
59
+ ctx.ui.notify(`× forge:fix-bug — bug ${bugId} not found in store.`, "error");
60
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
61
+ return;
62
+ }
63
+ // Check if bug is already in a terminal state
64
+ if (BUG_TERMINAL_STATES.has(bugRecord.status ?? "")) {
65
+ ctx.ui.notify(`× forge:fix-bug — bug ${bugId} is already in terminal state '${bugRecord.status}'. No further processing.`, "error");
66
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
67
+ return;
68
+ }
69
+ }
70
+ else if (looksLikeBugId) {
71
+ // Unprefixed bug ID — resolve through the store cascade.
72
+ // Issue #20: unprefixed entity IDs silently poisoned substitutions.
73
+ const toolDir = resolveToolDir(forgeRoot);
74
+ const resolvedBugId = await resolveToCanonicalId(rawArg, toolDir, cwd, "bug", {
75
+ ctx,
76
+ commandLabel: "forge:fix-bug",
77
+ });
78
+ if (!resolvedBugId) {
79
+ // Error already emitted by resolver
80
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
81
+ ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
82
+ return;
83
+ }
84
+ bugId = resolvedBugId;
85
+ // Re-verify the resolved bug exists
86
+ const bugRecord = readBugRecord(bugId, storeCli, cwd);
87
+ if (!bugRecord) {
88
+ ctx.ui.notify(`× forge:fix-bug — bug ${bugId} not found in store.`, "error");
89
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
90
+ return;
91
+ }
92
+ if (BUG_TERMINAL_STATES.has(bugRecord.status ?? "")) {
93
+ ctx.ui.notify(`× forge:fix-bug — bug ${bugId} is already in terminal state '${bugRecord.status}'. No further processing.`, "error");
94
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
95
+ return;
96
+ }
97
+ }
98
+ else {
99
+ // @file or free-form text. If an @file report references a canonical
100
+ // <PREFIX>-BUG-NNN that already exists in the store, fix THAT record —
101
+ // minting a new bug here duplicated CART-BUG-001 as a phantom in the
102
+ // CART incident (the report header carried the real ID all along).
103
+ let reportBugId = null;
104
+ if (rawArg.startsWith("@")) {
105
+ const rel = rawArg.slice(1).trim();
106
+ const reportPath = path.isAbsolute(rel) ? rel : path.join(cwd, rel);
107
+ try {
108
+ // 256 KB cap — bug reports are small; never slurp arbitrary files.
109
+ if (fs.existsSync(reportPath) && fs.statSync(reportPath).size <= 262144) {
110
+ const projectPrefix = loadGovernorProjectConfig(cwd).prefix;
111
+ reportBugId = extractBugIdFromReportText(fs.readFileSync(reportPath, "utf8"), projectPrefix);
112
+ }
113
+ }
114
+ catch {
115
+ /* unreadable report — fall through to new-bug intake */
116
+ }
117
+ }
118
+ const reportRecord = reportBugId ? readBugRecord(reportBugId, storeCli, cwd) : null;
119
+ if (reportBugId && reportRecord) {
120
+ if (BUG_TERMINAL_STATES.has(reportRecord.status ?? "")) {
121
+ ctx.ui.notify(`× forge:fix-bug — ${rawArg} references ${reportBugId}, which is already in terminal state ` +
122
+ `'${reportRecord.status}'. No further processing.`, "error");
123
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
124
+ return;
125
+ }
126
+ bugId = reportBugId;
127
+ ctx.ui.notify(`forge:fix-bug — ${rawArg} references existing bug ${bugId}; fixing it (no new record minted).`, "info");
128
+ }
129
+ else {
130
+ // Free-form text (or report with no resolvable ID) — defer bug
131
+ // creation to the triage-phase subagent via a PENDING placeholder.
132
+ bugId = `PENDING-${Date.now()}`;
133
+ isNewBug = true;
134
+ }
135
+ }
136
+ // ── Pre-flight confirm ───────────────────────────────────────────
137
+ if (!isNonInteractive()) {
138
+ const confirmMsg = isNewBug
139
+ ? `Fix bug: "${rawArg.slice(0, 80)}"? A bug record will be created during triage.`
140
+ : `Fix bug ${bugId}?`;
141
+ const proceed = await ctx.ui.confirm(`Fix bug?`, confirmMsg);
142
+ if (!proceed) {
143
+ ctx.ui.notify("forge:fix-bug — cancelled.", "info");
144
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
145
+ return;
146
+ }
147
+ }
148
+ // ── Resume detection ─────────────────────────────────────────────
149
+ const registry = getSessionRegistry();
150
+ const existing = isNewBug ? null : readBugState(cwd, bugId);
151
+ let resumeFromState;
152
+ if (existing) {
153
+ if (isBugStateStale(existing)) {
154
+ ctx.ui.notify(`⚠ forge:fix-bug — cached state for ${bugId} is stale (>7 days old, saved at ${formatLocalTime(existing.savedAt)}). Offering purge.`, "warning");
155
+ if (!isNonInteractive()) {
156
+ const purge = await ctx.ui.confirm(`Purge stale state for ${bugId}?`, "The cached state is older than 7 days. Purge and restart from the beginning?");
157
+ if (purge) {
158
+ deleteBugState(cwd, bugId);
159
+ }
160
+ else {
161
+ ctx.ui.notify("forge:fix-bug — stale state kept; aborting.", "info");
162
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
163
+ ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
164
+ return;
165
+ }
166
+ }
167
+ else {
168
+ ctx.ui.notify("forge:fix-bug — stale state; non-interactive mode auto-aborting.", "info");
169
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
170
+ ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
171
+ return;
172
+ }
173
+ }
174
+ else {
175
+ // ADR-S21-01: offer resume for ALL non-stale states — halted=true
176
+ // (explicit failure), halted=false (cancelled/interrupted), and
177
+ // any state with existing.status set.
178
+ const stateStatus = existing.status ?? (existing.halted ? "halted" : "interrupted");
179
+ const statusLabel = stateStatus === "cancelled" ? "cancelled" : stateStatus === "halted" ? "halted" : "interrupted";
180
+ const phaseRole = BUG_PHASES[existing.phaseIndex]?.role ?? existing.phaseIndex;
181
+ if (!isNonInteractive()) {
182
+ const resume = await ctx.ui.confirm(`Resume ${bugId}?`, `Cached state — phase ${existing.phaseIndex} (${phaseRole}), ${statusLabel}, ` +
183
+ `saved at ${formatLocalTime(existing.savedAt)}. Resume from here?`);
184
+ if (resume) {
185
+ resumeFromState = existing;
186
+ ctx.ui.notify(`forge:fix-bug — resuming ${bugId} from phase ${phaseRole} (${statusLabel})`, "info");
187
+ }
188
+ else {
189
+ deleteBugState(cwd, bugId);
190
+ }
191
+ }
192
+ else {
193
+ // Non-interactive: auto-resume from state (no confirmation).
194
+ // Cancelled/interrupted states are valid resume points.
195
+ resumeFromState = existing;
196
+ ctx.ui.notify(`forge:fix-bug — resuming ${bugId} from phase ${phaseRole} (${statusLabel})`, "info");
197
+ }
198
+ }
199
+ }
200
+ // For new bugs, triage phase will create the bug record.
201
+ // After triage, we need to capture the bugId from the subagent events.
202
+ // This is handled inside runBugPipeline via onEvent interception.
203
+ // For now, we pass the temporary bugId; runBugPipeline will update it.
204
+ // ── Materialization check (top-level workflow) ──────────────────
205
+ const workflowPath = path.join(cwd, ".forge", "workflows", "fix_bug.md");
206
+ if (fs.existsSync(workflowPath)) {
207
+ try {
208
+ const loaded = loadWorkflow(workflowPath);
209
+ // AC#12: Top-level audience check for the fix_bug.md workflow.
210
+ // The orchestrator ITSELF runs fix_bug.md (not a subagent), so check
211
+ // from orchestrator context. Using asSubagent would falsely reject
212
+ // orchestrator-only workflows called by the orchestrator.
213
+ const topAudienceOk = CallerContextStore.asOrchestrator(() => assertAudience({ workflowName: "fix_bug", audience: loaded.audience }, ctx));
214
+ if (!topAudienceOk) {
215
+ ctx.ui.notify("× forge:fix-bug — audience check failed for top-level fix_bug workflow.", "error");
216
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
217
+ ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
218
+ return;
219
+ }
220
+ // Note: no materialization-marker check here. fix_bug.md is the
221
+ // orchestrator workflow (prose algorithm), not a sub-workflow that
222
+ // subagents run directly. Per-phase sub-workflows (architect_approve,
223
+ // review_code, etc.) each get their own materialization check inside
224
+ // runBugPipeline at line ~481, which is the correct guard layer.
225
+ }
226
+ catch {
227
+ // Workflow file exists but couldn't be read — non-fatal, continue
228
+ }
229
+ }
230
+ // ── Pre-assign real bug ID for new bugs ────────────────────────
231
+ // Previously this was done inside runBugPipeline, but the session registry
232
+ // needs the real ID before startSession is called.
233
+ if (isNewBug && bugId.startsWith("PENDING-")) {
234
+ const realBugId = assignNextBugId(storeCli, cwd, loadGovernorProjectConfig(cwd).prefix);
235
+ const title = rawArg && !rawArg.startsWith("@") ? rawArg.slice(0, 120) : "New bug (pending triage)";
236
+ if (preCreateBug(realBugId, title, storeCli, cwd)) {
237
+ ctx.ui.notify(`forge:fix-bug — pre-assigned bug ID: ${realBugId}`, "info");
238
+ bugId = realBugId;
239
+ }
240
+ else {
241
+ ctx.ui.notify("× forge:fix-bug — failed to pre-create bug record. Falling back to PENDING capture.", "error");
242
+ }
243
+ }
244
+ // Register session
245
+ registry.startSession(bugId);
246
+ // Bridge: register bug in OrchestratorTree.
247
+ const tree = getOrchestratorTree();
248
+ tree.startNode(bugId, { label: `fix-bug ${bugId}`, kind: "orchestrator" });
249
+ // ── Delegate to pipeline ─────────────────────────────────────────
250
+ // ── Delegate to pipeline ─────────────────────────────────────────
251
+ const signal = registry.getAbortSignal(bugId);
252
+ const pipelineResult = await runBugPipeline({
253
+ bugId,
254
+ originalArg: isNewBug ? rawArg : undefined,
255
+ isNewBug,
256
+ cwd,
257
+ ctx,
258
+ forgeRoot,
259
+ storeCli,
260
+ preflightGate,
261
+ registry,
262
+ resumeFromState,
263
+ signal,
264
+ forgeToolDefs: options.forgeToolDefs,
265
+ });
266
+ // ── Handle result ────────────────────────────────────────────────
267
+ if (pipelineResult.status === "completed") {
268
+ registry.completeSession(bugId, "completed");
269
+ tree.completeNode(bugId, "completed");
270
+ ctx.ui.notify(`〇 forge:fix-bug — ${bugId} pipeline complete (${BUG_PHASES.length} phases).`, "info");
271
+ }
272
+ else if (pipelineResult.status === "cancelled") {
273
+ registry.completeSession(bugId, "cancelled");
274
+ tree.completeNode(bugId, "cancelled");
275
+ }
276
+ else {
277
+ registry.completeSession(bugId, "failed");
278
+ tree.completeNode(bugId, "failed");
279
+ }
280
+ // Mirror this run into the central transcript archive (best-effort —
281
+ // archiveRun never throws).
282
+ if (pipelineResult.orchestratorTranscriptPath) {
283
+ archiveRun({
284
+ cwd,
285
+ orchestratorJsonlPath: pipelineResult.orchestratorTranscriptPath,
286
+ });
287
+ }
288
+ ctx.ui.setStatus?.(STATUS_KEY, undefined);
289
+ ctx.ui.setStatus?.(MESSAGE_KEY, undefined);
290
+ },
291
+ });
292
+ }
293
+ //# sourceMappingURL=run-bug-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-bug-command.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/run-bug-command.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,YAAY;AAEZ,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,GAAG,eAAe,CAAC;AACnC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAS5C,MAAM,UAAU,cAAc,CAAC,EAAgB,EAAE,UAAiC,EAAE;IACnF,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE;QACnC,WAAW,EACV,gHAAgH;YAChH,6CAA6C;YAC7C,4EAA4E;QAC7E,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAA4B;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,yFAAyF,EACzF,OAAO,CACP,CAAC;gBACF,OAAO;YACR,CAAC;YAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,EAAE;gBAC9C,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAE3C,oEAAoE;YACpE,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;YAErD,kEAAkE;YAClE,IAAI,KAAa,CAAC;YAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,yEAAyE;YACzE,wCAAwC;YACxC,MAAM,cAAc,GAAG,qCAAqC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvG,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,qEAAqE;gBACrE,oEAAoE;gBACpE,gEAAgE;gBAChE,KAAK,GAAG,MAAM,CAAC;gBACf,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,KAAK,sBAAsB,EAAE,OAAO,CAAC,CAAC;oBAC7E,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACR,CAAC;gBACD,8CAA8C;gBAC9C,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,yBAAyB,KAAK,kCAAkC,SAAS,CAAC,MAAM,2BAA2B,EAC3G,OAAO,CACP,CAAC;oBACF,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACR,CAAC;YACF,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBAC3B,yDAAyD;gBACzD,oEAAoE;gBACpE,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;oBAC7E,GAAG;oBACH,YAAY,EAAE,eAAe;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;oBACpB,oCAAoC;oBACpC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;oBAC3C,OAAO;gBACR,CAAC;gBACD,KAAK,GAAG,aAAa,CAAC;gBACtB,oCAAoC;gBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,KAAK,sBAAsB,EAAE,OAAO,CAAC,CAAC;oBAC7E,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACR,CAAC;gBACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,yBAAyB,KAAK,kCAAkC,SAAS,CAAC,MAAM,2BAA2B,EAC3G,OAAO,CACP,CAAC;oBACF,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACR,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,qEAAqE;gBACrE,uEAAuE;gBACvE,qEAAqE;gBACrE,mEAAmE;gBACnE,IAAI,WAAW,GAAkB,IAAI,CAAC;gBACtC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACpE,IAAI,CAAC;wBACJ,mEAAmE;wBACnE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;4BACzE,MAAM,aAAa,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;4BAC5D,WAAW,GAAG,0BAA0B,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;wBAC9F,CAAC;oBACF,CAAC;oBAAC,MAAM,CAAC;wBACR,wDAAwD;oBACzD,CAAC;gBACF,CAAC;gBAED,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpF,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;oBACjC,IAAI,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;wBACxD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qBAAqB,MAAM,eAAe,WAAW,uCAAuC;4BAC3F,IAAI,YAAY,CAAC,MAAM,2BAA2B,EACnD,OAAO,CACP,CAAC;wBACF,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC1C,OAAO;oBACR,CAAC;oBACD,KAAK,GAAG,WAAW,CAAC;oBACpB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,mBAAmB,MAAM,4BAA4B,KAAK,qCAAqC,EAC/F,MAAM,CACN,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,+DAA+D;oBAC/D,mEAAmE;oBACnE,KAAK,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBAChC,QAAQ,GAAG,IAAI,CAAC;gBACjB,CAAC;YACF,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,QAAQ;oBAC1B,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,gDAAgD;oBAClF,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC;gBACvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;oBACpD,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACR,CAAC;YACF,CAAC;YAED,oEAAoE;YACpE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,eAAwC,CAAC;YAE7C,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,sCAAsC,KAAK,oCAAoC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EACpI,SAAS,CACT,CAAC;oBACF,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACjC,yBAAyB,KAAK,GAAG,EACjC,8EAA8E,CAC9E,CAAC;wBACF,IAAI,KAAK,EAAE,CAAC;4BACX,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC5B,CAAC;6BAAM,CAAC;4BACP,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;4BACrE,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;4BAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;4BAC3C,OAAO;wBACR,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kEAAkE,EAAE,MAAM,CAAC,CAAC;wBAC1F,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;wBAC3C,OAAO;oBACR,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,kEAAkE;oBAClE,gEAAgE;oBAChE,sCAAsC;oBACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;oBACpF,MAAM,WAAW,GAChB,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;oBACjG,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC;oBAC/E,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAClC,UAAU,KAAK,GAAG,EAClB,wBAAwB,QAAQ,CAAC,UAAU,KAAK,SAAS,MAAM,WAAW,IAAI;4BAC7E,YAAY,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CACnE,CAAC;wBACF,IAAI,MAAM,EAAE,CAAC;4BACZ,eAAe,GAAG,QAAQ,CAAC;4BAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,4BAA4B,KAAK,eAAe,SAAS,KAAK,WAAW,GAAG,EAC5E,MAAM,CACN,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACP,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC5B,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,6DAA6D;wBAC7D,wDAAwD;wBACxD,eAAe,GAAG,QAAQ,CAAC;wBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,KAAK,eAAe,SAAS,KAAK,WAAW,GAAG,EAAE,MAAM,CAAC,CAAC;oBACrG,CAAC;gBACF,CAAC;YACF,CAAC;YAED,yDAAyD;YACzD,uEAAuE;YACvE,kEAAkE;YAClE,uEAAuE;YAEvE,mEAAmE;YACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YACzE,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC1C,+DAA+D;oBAC/D,qEAAqE;oBACrE,mEAAmE;oBACnE,0DAA0D;oBAC1D,MAAM,aAAa,GAAG,kBAAkB,CAAC,cAAc,CAAC,GAAG,EAAE,CAC5D,cAAc,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAC3E,CAAC;oBACF,IAAI,CAAC,aAAa,EAAE,CAAC;wBACpB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yEAAyE,EAAE,OAAO,CAAC,CAAC;wBAClG,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;wBAC3C,OAAO;oBACR,CAAC;oBAED,gEAAgE;oBAChE,mEAAmE;oBACnE,sEAAsE;oBACtE,qEAAqE;oBACrE,iEAAiE;gBAClE,CAAC;gBAAC,MAAM,CAAC;oBACR,kEAAkE;gBACnE,CAAC;YACF,CAAC;YAED,kEAAkE;YAClE,2EAA2E;YAC3E,mDAAmD;YACnD,IAAI,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;gBACxF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBACpG,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;oBACnD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC3E,KAAK,GAAG,SAAS,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACP,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qFAAqF,EACrF,OAAO,CACP,CAAC;gBACH,CAAC;YACF,CAAC;YAED,mBAAmB;YACnB,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAE7B,4CAA4C;YAC5C,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAE3E,oEAAoE;YACpE,oEAAoE;YACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAE9C,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;gBAC3C,KAAK;gBACL,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC1C,QAAQ;gBACR,GAAG;gBACH,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,aAAa;gBACb,QAAQ;gBACR,eAAe;gBACf,MAAM;gBACN,aAAa,EAAE,OAAO,CAAC,aAAa;aACpC,CAAC,CAAC;YAEH,oEAAoE;YACpE,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3C,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,KAAK,uBAAuB,UAAU,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,CAAC;YACtG,CAAC;iBAAM,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpC,CAAC;YAED,qEAAqE;YACrE,4BAA4B;YAC5B,IAAI,cAAc,CAAC,0BAA0B,EAAE,CAAC;gBAC/C,UAAU,CAAC;oBACV,GAAG;oBACH,qBAAqB,EAAE,cAAc,CAAC,0BAA0B;iBAChE,CAAC,CAAC;YACJ,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { RunBugPipelineOptions, RunBugPipelineResult } from "./run-bug-types.js";
2
+ export declare function runBugPipeline(opts: RunBugPipelineOptions): Promise<RunBugPipelineResult>;