@entelligentsia/forgecli 0.21.0 → 1.0.3

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 (364) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +31 -33
  3. package/dist/CHANGELOG-forge-plugin.md +142 -0
  4. package/dist/CHANGELOG-pi.md +24 -1
  5. package/dist/bin/forgecli.d.ts +2 -0
  6. package/dist/bin/forgecli.js +6 -0
  7. package/dist/bin/forgecli.js.map +1 -0
  8. package/dist/extensions/forgecli/add-pipeline.js +1 -1
  9. package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
  10. package/dist/extensions/forgecli/add-task.js +1 -1
  11. package/dist/extensions/forgecli/add-task.js.map +1 -1
  12. package/dist/extensions/forgecli/approve.js +17 -2
  13. package/dist/extensions/forgecli/approve.js.map +1 -1
  14. package/dist/extensions/forgecli/audience-gate.js +1 -1
  15. package/dist/extensions/forgecli/audience-gate.js.map +1 -1
  16. package/dist/extensions/forgecli/calibrate.js +11 -8
  17. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  18. package/dist/extensions/forgecli/collate.js +1 -1
  19. package/dist/extensions/forgecli/collate.js.map +1 -1
  20. package/dist/extensions/forgecli/commit.js +17 -2
  21. package/dist/extensions/forgecli/commit.js.map +1 -1
  22. package/dist/extensions/forgecli/enhance.js +1 -1
  23. package/dist/extensions/forgecli/enhance.js.map +1 -1
  24. package/dist/extensions/forgecli/fix-bug.d.ts +1 -2
  25. package/dist/extensions/forgecli/fix-bug.js +678 -609
  26. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  27. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
  28. package/dist/extensions/forgecli/forge-artifact-tool.js +94 -197
  29. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  30. package/dist/extensions/forgecli/forge-commands.js +57 -18
  31. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  32. package/dist/extensions/forgecli/forge-init/phase4-register.js +6 -7
  33. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  34. package/dist/extensions/forgecli/forge-init/run-phases.d.ts +4 -0
  35. package/dist/extensions/forgecli/forge-init/run-phases.js +304 -0
  36. package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -0
  37. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +14 -5
  38. package/dist/extensions/forgecli/forge-init/verifiers.js +79 -62
  39. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -1
  40. package/dist/extensions/forgecli/forge-init.js +131 -76
  41. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  42. package/dist/extensions/forgecli/forge-subagent.d.ts +26 -0
  43. package/dist/extensions/forgecli/forge-subagent.js +42 -18
  44. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  45. package/dist/extensions/forgecli/forge-tools.d.ts +34 -4
  46. package/dist/extensions/forgecli/forge-tools.js +191 -79
  47. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  48. package/dist/extensions/forgecli/health-check.js +3 -3
  49. package/dist/extensions/forgecli/health-check.js.map +1 -1
  50. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -1
  51. package/dist/extensions/forgecli/hooks/check-update.d.ts +8 -0
  52. package/dist/extensions/forgecli/hooks/check-update.js +29 -1
  53. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
  54. package/dist/extensions/forgecli/hooks/post-init-hook.js +6 -6
  55. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  56. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +6 -6
  57. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  58. package/dist/extensions/forgecli/hooks/triage-error.js +1 -0
  59. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -1
  60. package/dist/extensions/forgecli/implement.js +20 -2
  61. package/dist/extensions/forgecli/implement.js.map +1 -1
  62. package/dist/extensions/forgecli/index.js +39 -32
  63. package/dist/extensions/forgecli/index.js.map +1 -1
  64. package/dist/extensions/forgecli/lib/pipeline-guard.d.ts +41 -0
  65. package/dist/extensions/forgecli/lib/pipeline-guard.js +100 -0
  66. package/dist/extensions/forgecli/lib/pipeline-guard.js.map +1 -0
  67. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  68. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  69. package/dist/extensions/forgecli/migrate.d.ts +3 -0
  70. package/dist/extensions/forgecli/migrate.js +4 -2
  71. package/dist/extensions/forgecli/migrate.js.map +1 -1
  72. package/dist/extensions/forgecli/plan.js +21 -2
  73. package/dist/extensions/forgecli/plan.js.map +1 -1
  74. package/dist/extensions/forgecli/quiz-agent.js +7 -7
  75. package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
  76. package/dist/extensions/forgecli/regenerate.js +49 -18
  77. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  78. package/dist/extensions/forgecli/remove-command.js +1 -1
  79. package/dist/extensions/forgecli/remove-command.js.map +1 -1
  80. package/dist/extensions/forgecli/report-bug.js +1 -1
  81. package/dist/extensions/forgecli/report-bug.js.map +1 -1
  82. package/dist/extensions/forgecli/retrospective.js +9 -9
  83. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  84. package/dist/extensions/forgecli/review-code.d.ts +13 -0
  85. package/dist/extensions/forgecli/review-code.js +62 -3
  86. package/dist/extensions/forgecli/review-code.js.map +1 -1
  87. package/dist/extensions/forgecli/review-plan.d.ts +13 -0
  88. package/dist/extensions/forgecli/review-plan.js +65 -3
  89. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  90. package/dist/extensions/forgecli/run-task.js +461 -391
  91. package/dist/extensions/forgecli/run-task.js.map +1 -1
  92. package/dist/extensions/forgecli/session-registry.d.ts +12 -0
  93. package/dist/extensions/forgecli/session-registry.js +23 -0
  94. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  95. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +2 -1
  96. package/dist/extensions/forgecli/skill-curator-subagent.js +2 -1
  97. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
  98. package/dist/extensions/forgecli/sprint-intake.js +6 -6
  99. package/dist/extensions/forgecli/sprint-intake.js.map +1 -1
  100. package/dist/extensions/forgecli/sprint-plan.js +9 -9
  101. package/dist/extensions/forgecli/sprint-plan.js.map +1 -1
  102. package/dist/extensions/forgecli/status-command.js +1 -1
  103. package/dist/extensions/forgecli/status-command.js.map +1 -1
  104. package/dist/extensions/forgecli/store-query.js +11 -11
  105. package/dist/extensions/forgecli/store-query.js.map +1 -1
  106. package/dist/extensions/forgecli/store-repair.js +7 -7
  107. package/dist/extensions/forgecli/store-repair.js.map +1 -1
  108. package/dist/extensions/forgecli/subagent/caller-context.d.ts +35 -11
  109. package/dist/extensions/forgecli/subagent/caller-context.js +49 -21
  110. package/dist/extensions/forgecli/subagent/caller-context.js.map +1 -1
  111. package/dist/extensions/forgecli/subagent/orchestrator-transcript.d.ts +66 -0
  112. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +66 -0
  113. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -0
  114. package/dist/extensions/forgecli/subagent/phase-guard.d.ts +34 -0
  115. package/dist/extensions/forgecli/subagent/phase-guard.js +139 -0
  116. package/dist/extensions/forgecli/subagent/phase-guard.js.map +1 -0
  117. package/dist/extensions/forgecli/subagent/phase-summary-map.d.ts +1 -0
  118. package/dist/extensions/forgecli/subagent/phase-summary-map.js +22 -0
  119. package/dist/extensions/forgecli/subagent/phase-summary-map.js.map +1 -0
  120. package/dist/extensions/forgecli/thread-switcher.js +2 -2
  121. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  122. package/dist/extensions/forgecli/validate.js +17 -2
  123. package/dist/extensions/forgecli/validate.js.map +1 -1
  124. package/dist/extensions/forgecli/viewport-events.d.ts +4 -0
  125. package/dist/extensions/forgecli/viewport-events.js +18 -1
  126. package/dist/extensions/forgecli/viewport-events.js.map +1 -1
  127. package/dist/extensions/forgecli/viewport-renderer.d.ts +12 -2
  128. package/dist/extensions/forgecli/viewport-renderer.js +8 -6
  129. package/dist/extensions/forgecli/viewport-renderer.js.map +1 -1
  130. package/dist/forge-payload/.base-pack/commands/check-agent.md +22 -0
  131. package/dist/forge-payload/.base-pack/commands/new-sprint.md +22 -0
  132. package/dist/forge-payload/.base-pack/commands/plan-sprint.md +22 -0
  133. package/dist/forge-payload/.base-pack/commands/quiz-agent.md +2 -18
  134. package/dist/forge-payload/.base-pack/commands/retro.md +22 -0
  135. package/dist/forge-payload/.base-pack/commands/retrospective.md +2 -18
  136. package/dist/forge-payload/.base-pack/commands/sprint-intake.md +2 -18
  137. package/dist/forge-payload/.base-pack/commands/sprint-plan.md +2 -18
  138. package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +2 -2
  139. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +4 -4
  140. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
  141. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +13 -1
  142. package/dist/forge-payload/.base-pack/workflows/commit_task.md +12 -1
  143. package/dist/forge-payload/.base-pack/workflows/enhance.md +6 -6
  144. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +11 -29
  145. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +14 -2
  146. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +2 -2
  147. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +20 -4
  148. package/dist/forge-payload/.base-pack/workflows/plan_task.md +14 -2
  149. package/dist/forge-payload/.base-pack/workflows/review_code.md +37 -7
  150. package/dist/forge-payload/.base-pack/workflows/review_plan.md +36 -6
  151. package/dist/forge-payload/.base-pack/workflows/run_sprint.md +2 -2
  152. package/dist/forge-payload/.base-pack/workflows/triage.md +190 -0
  153. package/dist/forge-payload/.base-pack/workflows/validate_task.md +37 -7
  154. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  155. package/dist/forge-payload/.schemas/config.schema.json +0 -5
  156. package/dist/forge-payload/.schemas/enum-catalog.json +9 -13
  157. package/dist/forge-payload/.schemas/migrations.json +63 -0
  158. package/dist/forge-payload/agents/tomoshibi.md +150 -6
  159. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  160. package/dist/forge-payload/commands/add-task.md +1 -1
  161. package/dist/forge-payload/commands/calibrate.md +4 -350
  162. package/dist/forge-payload/commands/check-agent.md +38 -0
  163. package/dist/forge-payload/commands/config.md +3 -113
  164. package/dist/forge-payload/commands/enhance.md +5 -32
  165. package/dist/forge-payload/commands/health.md +155 -13
  166. package/dist/forge-payload/commands/init.md +25 -31
  167. package/dist/forge-payload/commands/migrate.md +6 -154
  168. package/dist/forge-payload/commands/quiz-agent.md +2 -34
  169. package/dist/forge-payload/commands/rebuild.md +664 -0
  170. package/dist/forge-payload/commands/regenerate.md +2 -774
  171. package/dist/forge-payload/commands/remove.md +10 -13
  172. package/dist/forge-payload/commands/repair.md +187 -0
  173. package/dist/forge-payload/commands/search.md +73 -0
  174. package/dist/forge-payload/commands/status.md +105 -0
  175. package/dist/forge-payload/commands/store-query.md +2 -69
  176. package/dist/forge-payload/commands/store-repair.md +2 -183
  177. package/dist/forge-payload/commands/update-tools.md +4 -50
  178. package/dist/forge-payload/commands/update.md +64 -58
  179. package/dist/forge-payload/hooks/check-update.cjs +1 -1
  180. package/dist/forge-payload/hooks/post-init.cjs +2 -2
  181. package/dist/forge-payload/hooks/post-sprint.cjs +2 -2
  182. package/dist/forge-payload/hooks/triage-error.cjs +11 -10
  183. package/dist/forge-payload/init/phases/phase-1-collect.md +138 -0
  184. package/dist/forge-payload/init/phases/phase-2-discover.md +127 -0
  185. package/dist/forge-payload/init/phases/phase-3-materialize.md +113 -0
  186. package/dist/forge-payload/init/phases/phase-4-register.md +159 -0
  187. package/dist/forge-payload/integrity.json +21 -24
  188. package/dist/forge-payload/meta/fragments/tool-discipline.md +41 -0
  189. package/dist/forge-payload/meta/templates/meta-retro.md +28 -0
  190. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +2 -2
  191. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +4 -4
  192. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
  193. package/dist/forge-payload/meta/workflows/meta-approve.md +13 -1
  194. package/dist/forge-payload/meta/workflows/meta-bug-triage.md +210 -0
  195. package/dist/forge-payload/meta/workflows/meta-check-agent.md +138 -0
  196. package/dist/forge-payload/meta/workflows/meta-commit.md +12 -1
  197. package/dist/forge-payload/meta/workflows/meta-enhance.md +5 -5
  198. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +11 -29
  199. package/dist/forge-payload/meta/workflows/meta-implement.md +13 -1
  200. package/dist/forge-payload/meta/workflows/meta-migrate.md +3 -3
  201. package/dist/forge-payload/meta/workflows/meta-new-sprint.md +84 -0
  202. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +20 -4
  203. package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +152 -0
  204. package/dist/forge-payload/meta/workflows/meta-plan-task.md +13 -1
  205. package/dist/forge-payload/meta/workflows/meta-retro.md +73 -0
  206. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +37 -7
  207. package/dist/forge-payload/meta/workflows/meta-review-plan.md +36 -6
  208. package/dist/forge-payload/meta/workflows/meta-validate.md +37 -7
  209. package/dist/forge-payload/schemas/config.schema.json +0 -5
  210. package/dist/forge-payload/schemas/enum-catalog.json +9 -13
  211. package/dist/forge-payload/schemas/structure-manifest.json +25 -8
  212. package/dist/forge-payload/tools/artifact.cjs +324 -0
  213. package/dist/forge-payload/tools/banners.cjs +3 -4
  214. package/dist/forge-payload/tools/build-context-pack.cjs +1 -1
  215. package/dist/forge-payload/tools/check-structure.cjs +8 -3
  216. package/dist/forge-payload/tools/store-cli.cjs +67 -7
  217. package/dist/forge-payload/tools/substitute-placeholders.cjs +1 -1
  218. package/dist/forge-payload/tools/verify-apply.cjs +75 -0
  219. package/dist/forge-payload/tools/verify-phase.cjs +259 -0
  220. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  221. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +0 -17
  222. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  223. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +21 -38
  224. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  225. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  226. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +5 -4
  227. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  228. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
  229. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  230. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  231. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  232. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +24 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts +1 -0
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts.map +1 -1
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js.map +1 -1
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +16 -4
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +45 -50
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +43 -81
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  262. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts +2 -0
  263. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  264. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +37 -0
  265. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  266. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  267. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
  268. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  269. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  270. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
  271. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  272. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +3 -0
  273. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  274. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
  275. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  276. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  277. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
  278. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  279. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts +3 -1
  280. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  281. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
  282. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  283. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts +30 -0
  284. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts.map +1 -0
  285. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
  286. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js.map +1 -0
  287. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts +2 -0
  288. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts.map +1 -0
  289. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
  290. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js.map +1 -0
  291. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts +7 -27
  292. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  293. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
  294. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  295. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +6 -0
  296. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  297. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  298. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  299. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  300. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -14
  301. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -5
  302. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +3 -0
  303. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -0
  304. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
  305. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -0
  306. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  307. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  308. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  309. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +2 -0
  310. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  311. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +13 -1
  312. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  313. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  314. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  315. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  316. package/node_modules/@entelligentsia/forge-compress/dist/compressor.d.ts +6 -0
  317. package/node_modules/@entelligentsia/forge-compress/dist/compressor.js +137 -0
  318. package/node_modules/@entelligentsia/forge-compress/dist/entropy.d.ts +3 -0
  319. package/node_modules/@entelligentsia/forge-compress/dist/entropy.js +99 -0
  320. package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.d.ts +8 -0
  321. package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.js +149 -0
  322. package/node_modules/@entelligentsia/forge-compress/dist/forge/index.d.ts +7 -0
  323. package/node_modules/@entelligentsia/forge-compress/dist/forge/index.js +4 -0
  324. package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.d.ts +5 -0
  325. package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.js +92 -0
  326. package/node_modules/@entelligentsia/forge-compress/dist/forge/query.d.ts +7 -0
  327. package/node_modules/@entelligentsia/forge-compress/dist/forge/query.js +60 -0
  328. package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.d.ts +1 -0
  329. package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.js +82 -0
  330. package/node_modules/@entelligentsia/forge-compress/dist/index.d.ts +6 -0
  331. package/node_modules/@entelligentsia/forge-compress/dist/index.js +5 -0
  332. package/node_modules/@entelligentsia/forge-compress/dist/progressive.d.ts +1 -0
  333. package/node_modules/@entelligentsia/forge-compress/dist/progressive.js +108 -0
  334. package/node_modules/@entelligentsia/forge-compress/dist/strip.d.ts +4 -0
  335. package/node_modules/@entelligentsia/forge-compress/dist/strip.js +55 -0
  336. package/node_modules/@entelligentsia/forge-compress/dist/tokens.d.ts +2 -0
  337. package/node_modules/@entelligentsia/forge-compress/dist/tokens.js +17 -0
  338. package/node_modules/@entelligentsia/forge-compress/package.json +45 -0
  339. package/node_modules/@entelligentsia/forge-compress/src/__tests__/compress.test.ts +409 -0
  340. package/node_modules/@entelligentsia/forge-compress/src/compressor.ts +147 -0
  341. package/node_modules/@entelligentsia/forge-compress/src/entropy.ts +105 -0
  342. package/node_modules/@entelligentsia/forge-compress/src/forge/entity.ts +184 -0
  343. package/node_modules/@entelligentsia/forge-compress/src/forge/index.ts +10 -0
  344. package/node_modules/@entelligentsia/forge-compress/src/forge/markdown.ts +122 -0
  345. package/node_modules/@entelligentsia/forge-compress/src/forge/query.ts +105 -0
  346. package/node_modules/@entelligentsia/forge-compress/src/forge/validate.ts +86 -0
  347. package/node_modules/@entelligentsia/forge-compress/src/index.ts +22 -0
  348. package/node_modules/@entelligentsia/forge-compress/src/progressive.ts +123 -0
  349. package/node_modules/@entelligentsia/forge-compress/src/strip.ts +58 -0
  350. package/node_modules/@entelligentsia/forge-compress/src/tokens.ts +19 -0
  351. package/package.json +10 -15
  352. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +0 -72
  353. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +0 -359
  354. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +0 -1
  355. package/dist/extensions/forgecli/forge-init/prompts.d.ts +0 -10
  356. package/dist/extensions/forgecli/forge-init/prompts.js +0 -91
  357. package/dist/extensions/forgecli/forge-init/prompts.js.map +0 -1
  358. package/dist/extensions/forgecli/lib/store-error-remediation.d.ts +0 -65
  359. package/dist/extensions/forgecli/lib/store-error-remediation.js +0 -298
  360. package/dist/extensions/forgecli/lib/store-error-remediation.js.map +0 -1
  361. package/dist/forge-payload/hooks/check-update.js +0 -378
  362. package/dist/forge-payload/hooks/forge-permissions.js +0 -164
  363. package/dist/forge-payload/hooks/triage-error.js +0 -77
  364. package/dist/forge-payload/hooks/validate-write.js +0 -250
@@ -0,0 +1,190 @@
1
+ ---
2
+ requirements:
3
+ reasoning: High
4
+ context: Medium
5
+ speed: Medium
6
+ audience: subagent
7
+ phase: triage
8
+ context:
9
+ architecture: false
10
+ prior_summaries: delta
11
+ persona: summary
12
+ master_index: false
13
+ diff_mode: false
14
+ deps:
15
+ personas: [bug-fixer]
16
+ skills: [bug-fixer, generic]
17
+ templates: []
18
+ sub_workflows: []
19
+ kb_docs: [architecture/stack.md]
20
+ config_fields: [commands.test, paths.engineering]
21
+ ---
22
+
23
+
24
+ # Bug Triage
25
+ ## Iron Laws
26
+
27
+ - Reproduce the bug before deciding anything. A bug without a confirmed
28
+ reproduction has no business going to plan-fix or implement.
29
+ - Read `.forge/personas/bug-fixer.md` first; print the persona identity
30
+ line (emoji, name, tagline) to stdout before any other tool use.
31
+ - All store I/O via `forge_store` (or `node "$FORGE_ROOT/tools/store-cli.cjs"`).
32
+ Never edit `.forge/store/*.json` directly.
33
+ - **Triage NEVER writes `bug.status`.** The orchestrator (`meta-fix-bug.md`)
34
+ owns the `reported → triaged` and `triaged → in-progress` transitions.
35
+ Writing `bug.status` from this workflow violates `meta-fix-bug.md
36
+ § Iron Laws #2` (parallel to `meta-review-plan.md`'s "Supervisor NEVER
37
+ writes entity status" rule).
38
+ - Triage is a **single phase**. Do NOT call `forge_preflight` with any
39
+ other `--phase` value. Do NOT call `forge_store update-status`,
40
+ `set-bug-summary` for any non-triage phase, or `forge_store emit`.
41
+ These are orchestrator-owned or other-phase-owned actions. The
42
+ phase-ownership guard in forge-cli will reject violations at the tool
43
+ layer, but the Iron Law names the rule.
44
+
45
+ ## Store-Write Verification
46
+
47
+ <!-- See _fragments/store-write-verification.md for the canonical block content -->
48
+
49
+ ## Algorithm
50
+
51
+ ```
52
+
53
+ 0. Pre-flight Gate Check:
54
+ - Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
55
+ - Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase triage --bug {bugId}`
56
+ - Exit 1 (gate failed) → print stderr and HALT. Do not proceed.
57
+ - Exit 2 (misconfiguration) → print stderr and HALT.
58
+ - Exit 0 → continue.
59
+
60
+ 1. Load Context:
61
+ - Read `.forge/personas/bug-fixer.md` first; print the persona identity
62
+ line to stdout before any other tool use.
63
+ - Read the bug record:
64
+ `forge_store({ command:"read", entity:"bug", id:"{bugId}" })`
65
+ - Read business domain docs relevant to the reported symptom.
66
+ - store-cli verbs: `read` | `list` | `write` | `emit` |
67
+ `update-status` | `set-summary` | `set-bug-summary` | `describe` |
68
+ `nlp` | `query` | `delete` — there is no `get`/`set`/`find`. See
69
+ `_fragments/store-cli-verbs.md` for full notes.
70
+
71
+ 2. Reproduce:
72
+ - Construct a minimal reproduction: a failing test, a short script,
73
+ or a documented manual sequence that triggers the reported symptom.
74
+ - If reproduction cannot be achieved with the information in the bug
75
+ record, write what was tried in TRIAGE.md, set the route to "B"
76
+ (any uncertainty defaults to Path B), and continue to root-cause
77
+ research with the reporter's narrative as the working hypothesis.
78
+
79
+ 3. Root-Cause Research:
80
+ - Read the code paths implicated by the reproduction.
81
+ - Confirm (or revise) the reporter's stated root cause via direct
82
+ inspection of source files and tests.
83
+ - Note collateral damage: which other call sites, schemas, or
84
+ workflows share the defective shape.
85
+
86
+ 4. Path A / Path B Eligibility:
87
+ - Apply the criteria in § "Path A / Path B Eligibility" below.
88
+ - Record the route decision and the explicit enumeration of each
89
+ criterion in the findings section of the triage summary.
90
+
91
+ 5. Write Triage Artifacts:
92
+ - Write the triage artifact (markdown narrative):
93
+ `forge_artifact({ command:"write", entity:"bug", entityId:"{bugId}",
94
+ artifact:"triage", content:"<markdown>" })`
95
+ - Write the triage-summary sidecar (JSON shape below):
96
+ `forge_artifact({ command:"write", entity:"bug", entityId:"{bugId}",
97
+ artifact:"triage-summary", content:"<JSON>" })`
98
+
99
+ 6. Finalize:
100
+ - **No status write.** The orchestrator (`meta-fix-bug.md`) writes the
101
+ `reported → triaged` and `triaged → in-progress` transitions on
102
+ return. Writing `bug.status` from this workflow is forbidden by
103
+ Iron Laws above and is rejected by the phase-ownership guard.
104
+ - **Do NOT emit a phase event yourself.** The orchestrator owns event
105
+ emission — it composes the canonical event from runtime telemetry
106
+ (model, provider, tokens, wall times) plus the SUMMARY you write
107
+ in the next step.
108
+
109
+ 7. Emit Summary Sidecar:
110
+ - The JSON written in step 5 MUST have this shape (the `route` field
111
+ is required; allowed values: `"A"` or `"B"`):
112
+
113
+ ```json
114
+ {
115
+ "objective": "Triage FORGE-BUG-NNN — reproduce, locate, decide route.",
116
+ "key_changes": ["<up to 12 bullets, 200 chars each — findings or actions>"],
117
+ "findings": [
118
+ "Root cause: <one line>",
119
+ "Reproduction: <one line>",
120
+ "Route decision: A | B",
121
+ "Rationale: <one line>"
122
+ ],
123
+ "verdict": "n/a",
124
+ "written_at": "<current ISO 8601 timestamp>",
125
+ "artifact_ref":"TRIAGE.md",
126
+ "route": "A"
127
+ }
128
+ ```
129
+
130
+ - Call:
131
+ ```
132
+ forge_store({ command:"set-bug-summary", entity:"bug",
133
+ id:"{bugId}", phase:"triage",
134
+ file:"engineering/bugs/{bugDir}/TRIAGE-SUMMARY.json" })
135
+ ```
136
+ - If the set-bug-summary call exits non-zero, fix the sidecar JSON
137
+ and retry (up to 3 attempts per the Store-Write Verification rule).
138
+ Do not proceed without a valid summary.
139
+
140
+ > **Field-naming caution — runtime-tested.** The route field is named
141
+ > `route`, never `path`. The bug schema's top-level `path` field is the
142
+ > bug's **artifact directory** (e.g. `engineering/bugs/EMG-BUG-001-...`).
143
+ > Conflating the two caused EMBERGLOW-BUG-001 (v0.44.0 first run) to land
144
+ > its `TRIAGE.md` under `.forge/store/bugs/` instead of `engineering/bugs/`.
145
+ > Triage MUST NOT touch `bug.path` — that field is set at bug creation
146
+ > and never modified by triage.
147
+ ```
148
+
149
+ ## Path A / Path B Eligibility
150
+
151
+ Path A is **eligible only when ALL** of the following hold. The triage
152
+ summary `findings` array MUST enumerate each criterion explicitly with a
153
+ pass/fail mark, so reviewers can audit the decision:
154
+
155
+ - `bug.severity ∈ {minor}`
156
+ - Fix is contained in a single file
157
+ - Estimated diff ≤ ~20 lines (judgement call; one screen)
158
+ - No schema, API, migration, security, or build-system change
159
+ - A regression test is obvious from the reproduction script (single short
160
+ test case, no new fixtures, no test-harness change)
161
+
162
+ If any criterion fails, the triage subagent MUST select Path B.
163
+
164
+ **Path B is the default.** Any uncertainty resolves to Path B. It runs the
165
+ same plan/review/implement/review/approve/commit shape as
166
+ `meta-orchestrate.md`. Picking Path A under uncertainty is the documented
167
+ failure mode (over-eager short-circuit).
168
+
169
+ ## Triage Artifact Contents (TRIAGE.md)
170
+
171
+ The narrative artifact MUST contain:
172
+
173
+ 1. **Reported symptom** — one paragraph summarising the bug report.
174
+ 2. **Reproduction** — exact steps, commands, or test case that triggers
175
+ the symptom; copy of the failing output.
176
+ 3. **Root cause** — one or two paragraphs naming the defective code path,
177
+ schema, or workflow. Cite file paths and line numbers.
178
+ 4. **Path A / Path B enumeration** — for each criterion above, mark
179
+ pass/fail with one-line evidence.
180
+ 5. **Route decision and rationale** — the chosen route and the
181
+ single-sentence justification.
182
+ 6. **Collateral findings** — any related shapes, call sites, or
183
+ workflows that share the defective pattern (filed as follow-ups in
184
+ the commit phase, not fixed here).
185
+
186
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
187
+ ## Friction Emit
188
+
189
+ Emit `type:friction` `{workflow:triage, persona:bug-fixer, issue}` per
190
+ `_fragments/friction-emit.md`.
@@ -36,38 +36,68 @@ deps:
36
36
 
37
37
  ```
38
38
 
39
- 0. Pre-flight Gate Check:
39
+ 0a. Pre-flight Gate Check:
40
40
  - Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
41
- - Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase validate --task {taskId}`
41
+ - **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
42
+ - Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase validate --{entity_kind} {record_id}`
42
43
  - Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
43
44
  - Exit 2 (misconfiguration) → print stderr and HALT.
44
45
  - Exit 0 → continue.
45
46
 
46
- 1. Load Context:
47
+ 0b. Pipeline Step Guard (user-invoked state check):
48
+ - If `--force` is present in the invocation arguments, skip this step entirely.
49
+ - If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
50
+ - Read current task state:
51
+ `node "$FORGE_ROOT/tools/store-cli.cjs" read task {record_id} --json`
52
+ - Extract the `status` field from the JSON output.
53
+ - Allowed states for this phase: `implemented`, `review-approved`.
54
+ - If the current status is NOT in the allowed set:
55
+ Print the following and HALT (do not proceed):
56
+ `× Task {record_id} is in state '{status}' — /forge:implement must complete first. To run the full pipeline: /forge:run-task {record_id}`
57
+
58
+ 1. Read Review Loop Context:
59
+ - Check the spawning prompt for a `### Review Loop Context` block.
60
+ - If present, extract:
61
+ - `Iteration: N of M` — current attempt number and the configured limit
62
+ - `Is final iteration: true/false`
63
+ - If absent (user-invoked, not orchestrated): treat as iteration 1 of M, where M is
64
+ read from `.forge/config.json` → `maxReviewIterations` (default 3 if field absent).
65
+ - Include `(iteration N of M)` in the opening line of the `VALIDATION_REPORT.md` artifact.
66
+ - If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
67
+ append a `### Next Steps` section to the artifact showing:
68
+ ```
69
+ ### Next Steps
70
+ - Force-approve (bypass remaining reviews): `/forge:approve --force {task_id}`
71
+ - Increase iteration limit: edit `config.pipelines.{pipeline}.phases[validate].maxIterations`
72
+ - Restart from validation: `/forge:validate {task_id}`
73
+ ```
74
+
75
+ 2. Load Context:
47
76
  - Read task prompt
48
77
  - Read approved PLAN.md
49
78
  - Read the implementation
50
79
  - Read PROGRESS.md
51
80
 
52
- 2. Validation:
81
+ 3. Validation:
53
82
  - Execute the "Acceptance Criteria" checklist from the plan
54
83
  - Verify that all technical constraints (e.g., performance, security) are met
55
84
  - Check for any regressions in related functionality
56
85
  - When re-running the test suite, use the **resolved test command** from `commands.test` in `.forge/config.json` (i.e. `` `${commands.test}` ``, e.g. `.venv/bin/python -m pytest`). Template placeholder: {{TEST_COMMAND}}. Do NOT invoke bare `python` / `python3` — the project interpreter is rarely on `$PATH`.
57
86
 
58
- 3. Verdict:
87
+ 4. Verdict:
59
88
  - Write the validation report via:
60
89
  `forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"validation-report", content:"<markdown>" })`
61
90
  The markdown content must use the format:
62
91
  **Verdict:** [Approved | Revision Required]
63
92
  - If Revision Required: list the failed criteria and required fixes
64
93
  - If Approved: confirm the task is validated
94
+ - See step 1 for iteration header and final-iteration Next Steps requirements.
65
95
 
66
- 4. Finalize:
96
+ 5. Finalize:
67
97
  - Update task status via `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status review-approved` (if Approved) or `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status code-revision-required` (if Revision Required)
68
98
  - **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
69
99
 
70
- 5. Emit Summary Sidecar:
100
+ 6. Emit Summary Sidecar:
71
101
  - Write the validation summary via:
72
102
  `forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"validation-summary", content:"<JSON>" })`
73
103
  The JSON content must have the following shape:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge",
3
- "version": "0.51.4",
3
+ "version": "1.0.3",
4
4
  "description": "Self-enhancing AI software development lifecycle — generates project-specific SDLC instances from meta-definitions",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -204,11 +204,6 @@
204
204
  }
205
205
  }
206
206
  }
207
- },
208
- "mode": {
209
- "type": "string",
210
- "enum": ["full", "fast"],
211
- "description": "Init mode. 'fast' means scaffolding was generated by /forge:init --fast (stubs present, heavy artifacts deferred to first use). 'full' means all artifacts are generated. Absent on pre-0.12 projects — treated as 'full' by all readers. Flipped to 'full' by /forge:regenerate (default) or /forge:materialize --all."
212
207
  }
213
208
  },
214
209
  "additionalProperties": false
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.51.4",
3
- "generated": "2026-05-26",
2
+ "version": "1.0.2",
3
+ "generated": "2026-05-28",
4
4
  "note": "Authoritative enum catalog. Source: build-enum-catalog.cjs. Regenerate via node forge/tools/build-manifest.cjs.",
5
5
  "enums": {
6
6
  "task.status": [
@@ -35,34 +35,30 @@
35
35
  ]
36
36
  },
37
37
  "commandNames": [
38
- "forge:sprint-intake",
38
+ "forge:new-sprint",
39
39
  "forge:plan",
40
40
  "forge:review-plan",
41
41
  "forge:implement",
42
42
  "forge:review-code",
43
43
  "forge:fix-bug",
44
- "forge:sprint-plan",
44
+ "forge:plan-sprint",
45
45
  "forge:run-task",
46
46
  "forge:run-sprint",
47
- "forge:collate",
48
- "forge:retrospective",
47
+ "forge:retro",
49
48
  "forge:approve",
50
49
  "forge:commit",
51
- "forge:enhance",
52
- "forge:quiz-agent",
50
+ "forge:check-agent",
53
51
  "forge:validate",
54
52
  "forge:init",
55
53
  "forge:health",
56
- "forge:regenerate",
54
+ "forge:rebuild",
57
55
  "forge:update",
58
56
  "forge:add-task",
59
57
  "forge:add-pipeline",
60
- "forge:calibrate",
61
- "forge:materialize",
62
58
  "forge:remove",
63
59
  "forge:report-bug",
64
- "forge:store-query",
65
- "forge:store-repair",
60
+ "forge:search",
61
+ "forge:repair",
66
62
  "forge:config",
67
63
  "forge:ask",
68
64
  "forge:store-custodian",
@@ -1,4 +1,67 @@
1
1
  {
2
+ "1.0.2": {
3
+ "version": "1.0.3",
4
+ "date": "2026-05-28",
5
+ "notes": "v1.0.3 — FORGE-BUG-040 (GH-110) fix. /forge:fix-bug now runs each phase as a phase-scoped subagent: triage uses the new triage.md workflow, plan-fix uses plan_task.md (bug-mode), implement uses implement_plan.md (bug-mode). Previously all three pointed at fix_bug.md (orchestrator-only body), causing the triage subagent to execute the entire lifecycle in one phase. Bug schema, transitions, and store layout are unchanged.",
6
+ "target": "workflows:triage,workflows:fix_bug",
7
+ "regenerate": ["workflows:triage", "workflows:fix_bug"],
8
+ "breaking": false,
9
+ "manual": []
10
+ },
11
+ "1.0.1": {
12
+ "version": "1.0.2",
13
+ "date": "2026-05-27",
14
+ "notes": "v1.0.2 — deprecated command cleanup + init bug fixes. Redirect stubs removed (old command names are now unknown). paths.commands uses project prefix. artifact.cjs strips trailing filenames from store path. Deprecated command references replaced across all meta sources.",
15
+ "target": "commands,init:phases,init:sdlc-init,tools:artifact",
16
+ "regenerate": ["commands"],
17
+ "breaking": false,
18
+ "manual": [
19
+ "Deprecated command redirect stubs removed. Old names (sprint-intake, sprint-plan, retrospective, regenerate, store-query, store-repair, quiz-agent, calibrate, update-tools, migrate, materialize) are now unknown commands. See docs/migration/v0-to-v1.md for the mapping.",
20
+ "If your project has .claude/commands/<prefix>/sprint-intake.md, sprint-plan.md, retrospective.md, or quiz-agent.md — these are stale and can be deleted."
21
+ ]
22
+ },
23
+ "1.0.0": {
24
+ "version": "1.0.1",
25
+ "date": "2026-05-27",
26
+ "notes": "v1.0.1 — init phase decomposition (FORGE-S26-T17). New shared verify-phase.cjs tool; sdlc-init.md rewritten as thin orchestrator; per-phase prompt files extracted to init/phases/.",
27
+ "target": "tools:verify-phase,init:phases",
28
+ "regenerate": ["tools"],
29
+ "breaking": false,
30
+ "manual": []
31
+ },
32
+ "0.52.1": {
33
+ "version": "1.0.0",
34
+ "date": "2026-05-26",
35
+ "notes": "v1.0.0 — v1.0 DevX Overhaul (FORGE-S26). 7 command renames, 6 command removals, fast-mode dead code removal, health --fix, rebuild --enrich, init --migrate, pipeline step guards, revision loop visibility, post-init welcome, Tomoshibi enhancements, forge:status plugin command, v1.0 documentation restructure.",
36
+ "target": "commands:new-sprint,commands:plan-sprint,commands:retro,commands:rebuild,commands:search,commands:repair,commands:check-agent,commands:calibrate,commands:enhance,commands:migrate,commands:materialize,commands:update-tools,commands:collate,commands:status,workflows:orchestrate_task,workflows:plan_task,workflows:implement_plan,workflows:fix_bug,config:mode",
37
+ "regenerate": ["commands", "workflows", "tools"],
38
+ "breaking": true,
39
+ "manual": [
40
+ "Removed commands: /forge:update-tools, /forge:materialize, /forge:enhance, /forge:calibrate, /forge:migrate, /forge:collate (user surface). Use /forge:update for schema refresh, /forge:rebuild --enrich for enhancement, /forge:health --fix for calibration, /forge:init --migrate for migration.",
41
+ "Renamed commands: /forge:sprint-intake → /forge:new-sprint, /forge:sprint-plan → /forge:plan-sprint, /forge:retrospective → /forge:retro, /forge:regenerate → /forge:rebuild, /forge:store-query → /forge:search, /forge:store-repair → /forge:repair, /forge:quiz-agent → /forge:check-agent. Old names redirect with deprecation notice.",
42
+ "Config: 'mode' field removed from .forge/config.json schema. Remove it manually from existing projects or run /forge:update."
43
+ ]
44
+ },
45
+ "0.52.0": {
46
+ "version": "0.52.1",
47
+ "date": "2026-05-26",
48
+ "notes": "fix(tool-discipline): add forge_artifact and forge_verify_apply discipline lines to meta/fragments/tool-discipline.md — fragment was missing two bullet points present in the FORGE_TOOL_DISCIPLINE TypeScript constant, causing subagents to receive incomplete discipline text when the fragment was present.",
49
+ "target": "fragments:tool-discipline",
50
+ "regenerate": [],
51
+ "breaking": false,
52
+ "manual": []
53
+ },
54
+ "0.51.4": {
55
+ "version": "0.52.0",
56
+ "date": "2026-05-26",
57
+ "notes": "New tools: artifact.cjs, verify-apply.cjs; tool-discipline.md canonical fragment; store-cli list/read --no-summaries, --fields, --limit, --count flags.",
58
+ "target": "tools:artifact,tools:verify-apply,tools:store-cli",
59
+ "regenerate": [
60
+ "tools"
61
+ ],
62
+ "breaking": false,
63
+ "manual": []
64
+ },
2
65
  "0.51.3": {
3
66
  "version": "0.51.4",
4
67
  "date": "2026-05-26",
@@ -65,7 +65,7 @@ Permitted fields: `project.name`, `project.prefix` only.
65
65
 
66
66
  | Field | Impact |
67
67
  |---|---|
68
- | `project.prefix` | △ Requires regeneration — command folder renames from `.claude/commands/{old_lower}/` to `.claude/commands/{new_lower}/`, and generated workflow slash-command references become stale. Run `/forge:regenerate commands workflows` after confirming. |
68
+ | `project.prefix` | △ Requires regeneration — command folder renames from `.claude/commands/{old_lower}/` to `.claude/commands/{new_lower}/`, and generated workflow slash-command references become stale. Run `/forge:rebuild commands workflows` after confirming. |
69
69
 
70
70
  *The prefix is stored as provided but the command namespace is always lowercase.*
71
71
  | `project.name` | 〇 No regeneration needed. |
@@ -106,7 +106,7 @@ remote check — Tomoshibi only knows the locally installed version.
106
106
  ### Workflow or command explanation
107
107
 
108
108
  Triggered by: "how does sprint planning work?", "explain the implement workflow",
109
- "what does /forge:calibrate do?", etc.
109
+ "what does /forge:health --fix do?", etc.
110
110
 
111
111
  Read the relevant file:
112
112
  - Workflows: `.forge/workflows/<name>.md`
@@ -138,6 +138,147 @@ Use the Skill tool:
138
138
 
139
139
  ---
140
140
 
141
+ ### What now?
142
+
143
+ Triggered by (fuzzy, case-insensitive, substring match): "what now", "what should i do", "what's next", "where do i start", "next steps", "get started", "how do i begin"
144
+
145
+ State detection — run in order, stop at first match:
146
+
147
+ **1. No config:**
148
+
149
+ If `HAS_CONFIG` env is false or `manage-config.cjs get project` returns an error:
150
+
151
+ ```
152
+ 灯 No Forge project found here.
153
+ Run /forge:init to create one, then come back and ask again.
154
+ ```
155
+
156
+ **2. No sprints:**
157
+
158
+ ```sh
159
+ node "$FORGE_ROOT/tools/store-cli.cjs" list sprint status=active
160
+ node "$FORGE_ROOT/tools/store-cli.cjs" list sprint status=planning
161
+ ```
162
+
163
+ If both are empty:
164
+
165
+ ```
166
+ 灯 Project initialized, no sprints yet.
167
+ Next step: /forge:new-sprint — start your first sprint by describing what you want to build.
168
+ ```
169
+
170
+ **3. Active sprint — inspect tasks:**
171
+
172
+ ```sh
173
+ node "$FORGE_ROOT/tools/store-cli.cjs" list task status=planned
174
+ node "$FORGE_ROOT/tools/store-cli.cjs" list task status=implementing
175
+ node "$FORGE_ROOT/tools/store-cli.cjs" list task status=committed
176
+ ```
177
+
178
+ Determine sub-state from results:
179
+
180
+ - **All tasks committed** (no planned, no implementing):
181
+ ```
182
+ 灯 Sprint {id} complete — all tasks committed.
183
+ Next step: /forge:retro — capture lessons learned and close the sprint.
184
+ ```
185
+
186
+ - **Any tasks implementing** (n implementing, m planned, k committed):
187
+ ```
188
+ 灯 Sprint {id} in progress — {n} tasks implementing, {m} planned, {k} committed.
189
+ Next step: /forge:run-task {next-planned-task-id} — continue the pipeline.
190
+ ```
191
+
192
+ - **All tasks planned** (none started):
193
+ ```
194
+ 灯 Sprint {id} ready — {n} tasks planned, none started.
195
+ Next step: /forge:run-task {first-task-id} — kick off the first task.
196
+ ```
197
+
198
+ ---
199
+
200
+ ### Commands
201
+
202
+ Triggered by (fuzzy, case-insensitive, substring match): "commands", "help", "available commands", "what commands", "command list", "what can you do", "list commands", "show commands"
203
+
204
+ Respond with this static reference (no shell commands needed):
205
+
206
+ ```
207
+ 灯 Forge v1.0 command reference:
208
+
209
+ Tier 1 — Start here:
210
+ /forge:ask Ask anything — this command
211
+ /forge:init Create a new Forge project
212
+ /forge:new-sprint Start a new sprint (intake)
213
+ /forge:status Current sprint and task overview
214
+ /forge:health Project health check and diagnostics
215
+
216
+ Tier 2 — Sprint workflow:
217
+ /forge:plan-sprint Decompose sprint into tasks
218
+ /forge:run-sprint Run all sprint tasks (automated)
219
+ /forge:run-task Run a single task through the pipeline
220
+ /forge:retro Sprint retrospective
221
+ /forge:rebuild Regenerate workflows, personas, commands
222
+
223
+ Tier 3 — Advanced:
224
+ /forge:search Query the task/sprint/bug store
225
+ /forge:repair Repair store integrity issues
226
+ /forge:check-agent Quiz an agent on project knowledge
227
+ /forge:config View or change project configuration
228
+ /forge:update Check for and install Forge updates
229
+ /forge:remove Remove a task or sprint
230
+ /forge:add-task Add a task to an active sprint
231
+ /forge:add-pipeline Register a custom pipeline
232
+ /forge:report-bug File a Forge bug report
233
+ ```
234
+
235
+ ---
236
+
237
+ ### KB summary
238
+
239
+ Triggered by (fuzzy, case-insensitive, substring match): "what did you find", "show me", "kb summary", "knowledge base", "what's in the kb", "findings", "what do you know", "show kb", "summarize"
240
+
241
+ **1. No config:**
242
+
243
+ If `HAS_CONFIG` is false:
244
+
245
+ ```
246
+ 灯 No project config found — KB summary requires an initialized project.
247
+ Run /forge:init first.
248
+ ```
249
+
250
+ **2. Check calibration baseline:**
251
+
252
+ ```sh
253
+ node "$FORGE_ROOT/tools/manage-config.cjs" get calibrationBaseline 2>/dev/null
254
+ ```
255
+
256
+ - If absent or null → `calibration_status = "× No baseline — run /forge:health --fix to establish one."`
257
+ - If present → `calibration_status = "〇 Baseline established."`
258
+
259
+ **3. Read KB index:**
260
+
261
+ ```sh
262
+ cat "$PROJECT_ROOT/engineering/MASTER_INDEX.md" 2>/dev/null
263
+ ```
264
+
265
+ **4. Present compact summary:**
266
+
267
+ ```
268
+ 灯 Knowledge base summary:
269
+
270
+ KB freshness: {calibration_status}
271
+
272
+ Architecture: {n} sections — {list key architecture topics found}
273
+ Business domain: {n} entities — {list key entities found}
274
+ Features: {n} total — {n} active, {n} completed
275
+ Sprints: {n} total — {n} active, {n} completed, {n} abandoned
276
+
277
+ To explore further: /forge:search — query the store directly.
278
+ ```
279
+
280
+ ---
281
+
141
282
  ### Anything else
142
283
 
143
284
  Ask one clarifying question. Do not guess.
@@ -149,6 +290,9 @@ Ask one clarifying question. Do not guess.
149
290
  ```
150
291
  🏮 灯 Tomoshibi — I can help you with:
151
292
 
293
+ · What now? — context-aware next step based on your current project state
294
+ · Commands — full Forge v1.0 command reference, tiered by use case
295
+ · KB summary — what's in your knowledge base and how fresh it is
152
296
  · Project status — active sprint, open bugs, active features, in-progress tasks
153
297
  · Config queries — show or change project.name / project.prefix
154
298
  · Version — locally installed Forge version
@@ -168,14 +312,14 @@ What would you like to know?
168
312
  |---|---|---|
169
313
  | `.forge/config.json` | Yes | `project.name`, `project.prefix` only — with `[Y/n]` confirm |
170
314
  | `.forge/store/` | `list`/`read` via `store-cli.cjs` only | **Never** — redirect to workflow commands |
171
- | `.forge/workflows/`, `.forge/personas/`, `.forge/skills/` | Yes — to explain content | **Never** — redirect to `/forge:regenerate` |
172
- | `engineering/` KB | Yes — to answer questions | **Never** — redirect to `/forge:calibrate` or sprint commands |
173
- | `.claude/commands/` | Yes — to explain | **Never** — redirect to `/forge:regenerate commands` |
315
+ | `.forge/workflows/`, `.forge/personas/`, `.forge/skills/` | Yes — to explain content | **Never** — redirect to `/forge:rebuild` |
316
+ | `engineering/` KB | Yes — to answer questions | **Never** — redirect to `/forge:health --fix` or sprint commands |
317
+ | `.claude/commands/` | Yes — to explain | **Never** — redirect to `/forge:rebuild commands` |
174
318
  | `forge/` plugin source | No — internal impl detail | **Never** |
175
319
 
176
320
  Forbidden store operations: `write`, `update-status`, `delete`, `emit`, `purge-events`.
177
321
 
178
- Forbidden forge commands to invoke: `/forge:remove`, `/forge:init`, `/forge:migrate` —
322
+ Forbidden forge commands to invoke: `/forge:remove`, `/forge:init` —
179
323
  Tomoshibi can *explain* these but never invokes them.
180
324
 
181
325
  ## Output rules
@@ -329,7 +329,7 @@ On success, print next steps:
329
329
  and fill in any {PLACEHOLDER} sections before running a task.
330
330
  2. Assign this pipeline to a task: set "pipeline": "{NAME}" in the task's
331
331
  .forge/store/tasks/{TASK_ID}.json, or let the sprint planner auto-assign it.
332
- 3. Run /forge:regenerate to update the orchestrator's pipeline routing.
332
+ 3. Run /forge:rebuild to update the orchestrator's pipeline routing.
333
333
  ```
334
334
 
335
335
  ---
@@ -48,7 +48,7 @@ If no `--sprint` argument:
48
48
  - Filter to sprints with status `active` or `planning` (these are the only
49
49
  states where adding tasks makes sense).
50
50
  - If no active/planning sprints exist:
51
- > △ No active or planning sprints found. Create a sprint first using sprint-intake.
51
+ > △ No active or planning sprints found. Create a sprint first using new-sprint.
52
52
  > Exit without making changes.
53
53
  - If only one active/planning sprint: auto-select it and tell the user:
54
54
  > 〇 Auto-selected sprint: **{SPRINT_ID}** — {title}