@entelligentsia/forgecli 0.20.3 → 1.0.2

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 (303) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +31 -33
  3. package/dist/CHANGELOG-forge-plugin.md +118 -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/calibrate.js +11 -8
  15. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  16. package/dist/extensions/forgecli/collate.js +1 -1
  17. package/dist/extensions/forgecli/collate.js.map +1 -1
  18. package/dist/extensions/forgecli/commit.js +17 -2
  19. package/dist/extensions/forgecli/commit.js.map +1 -1
  20. package/dist/extensions/forgecli/enhance.js +1 -1
  21. package/dist/extensions/forgecli/enhance.js.map +1 -1
  22. package/dist/extensions/forgecli/fix-bug.d.ts +1 -1
  23. package/dist/extensions/forgecli/fix-bug.js +14 -6
  24. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  25. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
  26. package/dist/extensions/forgecli/forge-artifact-tool.js +80 -195
  27. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  28. package/dist/extensions/forgecli/forge-commands.js +57 -18
  29. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  30. package/dist/extensions/forgecli/forge-init/phase4-register.js +6 -7
  31. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  32. package/dist/extensions/forgecli/forge-init/run-phases.d.ts +4 -0
  33. package/dist/extensions/forgecli/forge-init/run-phases.js +304 -0
  34. package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -0
  35. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +14 -5
  36. package/dist/extensions/forgecli/forge-init/verifiers.js +79 -62
  37. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -1
  38. package/dist/extensions/forgecli/forge-init.js +131 -76
  39. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  40. package/dist/extensions/forgecli/forge-subagent.d.ts +9 -0
  41. package/dist/extensions/forgecli/forge-subagent.js +11 -6
  42. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  43. package/dist/extensions/forgecli/forge-tools.d.ts +28 -4
  44. package/dist/extensions/forgecli/forge-tools.js +122 -73
  45. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  46. package/dist/extensions/forgecli/health-check.js +3 -3
  47. package/dist/extensions/forgecli/health-check.js.map +1 -1
  48. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -1
  49. package/dist/extensions/forgecli/hooks/check-update.d.ts +8 -0
  50. package/dist/extensions/forgecli/hooks/check-update.js +29 -1
  51. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
  52. package/dist/extensions/forgecli/hooks/post-init-hook.js +6 -6
  53. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  54. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +6 -6
  55. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  56. package/dist/extensions/forgecli/hooks/triage-error.js +1 -0
  57. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -1
  58. package/dist/extensions/forgecli/implement.js +20 -2
  59. package/dist/extensions/forgecli/implement.js.map +1 -1
  60. package/dist/extensions/forgecli/index.js +39 -32
  61. package/dist/extensions/forgecli/index.js.map +1 -1
  62. package/dist/extensions/forgecli/lib/pipeline-guard.d.ts +41 -0
  63. package/dist/extensions/forgecli/lib/pipeline-guard.js +100 -0
  64. package/dist/extensions/forgecli/lib/pipeline-guard.js.map +1 -0
  65. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  66. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  67. package/dist/extensions/forgecli/migrate.d.ts +3 -0
  68. package/dist/extensions/forgecli/migrate.js +4 -2
  69. package/dist/extensions/forgecli/migrate.js.map +1 -1
  70. package/dist/extensions/forgecli/plan.js +21 -2
  71. package/dist/extensions/forgecli/plan.js.map +1 -1
  72. package/dist/extensions/forgecli/quiz-agent.js +7 -7
  73. package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
  74. package/dist/extensions/forgecli/regenerate.js +49 -18
  75. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  76. package/dist/extensions/forgecli/remove-command.js +1 -1
  77. package/dist/extensions/forgecli/remove-command.js.map +1 -1
  78. package/dist/extensions/forgecli/report-bug.js +1 -1
  79. package/dist/extensions/forgecli/report-bug.js.map +1 -1
  80. package/dist/extensions/forgecli/retrospective.js +9 -9
  81. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  82. package/dist/extensions/forgecli/review-code.d.ts +13 -0
  83. package/dist/extensions/forgecli/review-code.js +62 -3
  84. package/dist/extensions/forgecli/review-code.js.map +1 -1
  85. package/dist/extensions/forgecli/review-plan.d.ts +13 -0
  86. package/dist/extensions/forgecli/review-plan.js +65 -3
  87. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  88. package/dist/extensions/forgecli/run-task.d.ts +2 -1
  89. package/dist/extensions/forgecli/run-task.js +48 -4
  90. package/dist/extensions/forgecli/run-task.js.map +1 -1
  91. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +2 -1
  92. package/dist/extensions/forgecli/skill-curator-subagent.js +2 -1
  93. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
  94. package/dist/extensions/forgecli/sprint-intake.js +6 -6
  95. package/dist/extensions/forgecli/sprint-intake.js.map +1 -1
  96. package/dist/extensions/forgecli/sprint-plan.js +9 -9
  97. package/dist/extensions/forgecli/sprint-plan.js.map +1 -1
  98. package/dist/extensions/forgecli/status-command.js +1 -1
  99. package/dist/extensions/forgecli/status-command.js.map +1 -1
  100. package/dist/extensions/forgecli/store-query.js +11 -11
  101. package/dist/extensions/forgecli/store-query.js.map +1 -1
  102. package/dist/extensions/forgecli/store-repair.js +7 -7
  103. package/dist/extensions/forgecli/store-repair.js.map +1 -1
  104. package/dist/extensions/forgecli/validate.js +17 -2
  105. package/dist/extensions/forgecli/validate.js.map +1 -1
  106. package/dist/forge-payload/.base-pack/commands/check-agent.md +22 -0
  107. package/dist/forge-payload/.base-pack/commands/new-sprint.md +22 -0
  108. package/dist/forge-payload/.base-pack/commands/plan-sprint.md +22 -0
  109. package/dist/forge-payload/.base-pack/commands/quiz-agent.md +2 -18
  110. package/dist/forge-payload/.base-pack/commands/retro.md +22 -0
  111. package/dist/forge-payload/.base-pack/commands/retrospective.md +2 -18
  112. package/dist/forge-payload/.base-pack/commands/sprint-intake.md +2 -18
  113. package/dist/forge-payload/.base-pack/commands/sprint-plan.md +2 -18
  114. package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +2 -2
  115. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +4 -4
  116. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
  117. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +13 -1
  118. package/dist/forge-payload/.base-pack/workflows/commit_task.md +12 -1
  119. package/dist/forge-payload/.base-pack/workflows/enhance.md +40 -10
  120. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +1 -1
  121. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +14 -2
  122. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +2 -2
  123. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +20 -4
  124. package/dist/forge-payload/.base-pack/workflows/plan_task.md +14 -2
  125. package/dist/forge-payload/.base-pack/workflows/review_code.md +37 -7
  126. package/dist/forge-payload/.base-pack/workflows/review_plan.md +36 -6
  127. package/dist/forge-payload/.base-pack/workflows/run_sprint.md +2 -2
  128. package/dist/forge-payload/.base-pack/workflows/validate_task.md +37 -7
  129. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  130. package/dist/forge-payload/.schemas/config.schema.json +0 -5
  131. package/dist/forge-payload/.schemas/enum-catalog.json +9 -13
  132. package/dist/forge-payload/.schemas/migrations.json +65 -0
  133. package/dist/forge-payload/agents/tomoshibi.md +150 -6
  134. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  135. package/dist/forge-payload/commands/add-task.md +1 -1
  136. package/dist/forge-payload/commands/calibrate.md +4 -350
  137. package/dist/forge-payload/commands/check-agent.md +38 -0
  138. package/dist/forge-payload/commands/config.md +3 -113
  139. package/dist/forge-payload/commands/enhance.md +5 -32
  140. package/dist/forge-payload/commands/health.md +155 -13
  141. package/dist/forge-payload/commands/init.md +25 -31
  142. package/dist/forge-payload/commands/migrate.md +6 -154
  143. package/dist/forge-payload/commands/quiz-agent.md +2 -34
  144. package/dist/forge-payload/commands/rebuild.md +664 -0
  145. package/dist/forge-payload/commands/regenerate.md +2 -774
  146. package/dist/forge-payload/commands/remove.md +10 -13
  147. package/dist/forge-payload/commands/repair.md +187 -0
  148. package/dist/forge-payload/commands/search.md +73 -0
  149. package/dist/forge-payload/commands/status.md +105 -0
  150. package/dist/forge-payload/commands/store-query.md +2 -69
  151. package/dist/forge-payload/commands/store-repair.md +2 -183
  152. package/dist/forge-payload/commands/update-tools.md +4 -50
  153. package/dist/forge-payload/commands/update.md +64 -58
  154. package/dist/forge-payload/hooks/check-update.cjs +1 -1
  155. package/dist/forge-payload/hooks/post-init.cjs +2 -2
  156. package/dist/forge-payload/hooks/post-sprint.cjs +2 -2
  157. package/dist/forge-payload/hooks/triage-error.cjs +11 -10
  158. package/dist/forge-payload/init/phases/phase-1-collect.md +138 -0
  159. package/dist/forge-payload/init/phases/phase-2-discover.md +127 -0
  160. package/dist/forge-payload/init/phases/phase-3-materialize.md +113 -0
  161. package/dist/forge-payload/init/phases/phase-4-register.md +159 -0
  162. package/dist/forge-payload/integrity.json +21 -24
  163. package/dist/forge-payload/meta/fragments/tool-discipline.md +22 -0
  164. package/dist/forge-payload/meta/templates/meta-retro.md +28 -0
  165. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +2 -2
  166. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +4 -4
  167. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
  168. package/dist/forge-payload/meta/workflows/meta-approve.md +13 -1
  169. package/dist/forge-payload/meta/workflows/meta-check-agent.md +138 -0
  170. package/dist/forge-payload/meta/workflows/meta-commit.md +12 -1
  171. package/dist/forge-payload/meta/workflows/meta-enhance.md +39 -9
  172. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +1 -1
  173. package/dist/forge-payload/meta/workflows/meta-implement.md +13 -1
  174. package/dist/forge-payload/meta/workflows/meta-migrate.md +3 -3
  175. package/dist/forge-payload/meta/workflows/meta-new-sprint.md +84 -0
  176. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +20 -4
  177. package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +152 -0
  178. package/dist/forge-payload/meta/workflows/meta-plan-task.md +13 -1
  179. package/dist/forge-payload/meta/workflows/meta-retro.md +73 -0
  180. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +37 -7
  181. package/dist/forge-payload/meta/workflows/meta-review-plan.md +36 -6
  182. package/dist/forge-payload/meta/workflows/meta-validate.md +37 -7
  183. package/dist/forge-payload/schemas/config.schema.json +0 -5
  184. package/dist/forge-payload/schemas/enum-catalog.json +9 -13
  185. package/dist/forge-payload/schemas/structure-manifest.json +6 -8
  186. package/dist/forge-payload/tools/artifact.cjs +295 -0
  187. package/dist/forge-payload/tools/banners.cjs +3 -4
  188. package/dist/forge-payload/tools/build-context-pack.cjs +1 -1
  189. package/dist/forge-payload/tools/check-structure.cjs +8 -3
  190. package/dist/forge-payload/tools/store-cli.cjs +67 -7
  191. package/dist/forge-payload/tools/substitute-placeholders.cjs +1 -1
  192. package/dist/forge-payload/tools/verify-apply.cjs +75 -0
  193. package/dist/forge-payload/tools/verify-phase.cjs +259 -0
  194. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  195. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +0 -17
  196. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +21 -38
  198. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +5 -4
  201. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
  203. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  204. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  205. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  207. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +24 -1
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts +1 -0
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts.map +1 -1
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js.map +1 -1
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +16 -4
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +45 -50
  220. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  221. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  222. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +43 -81
  223. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  224. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
  226. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js.map +1 -1
  227. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  228. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
  229. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  230. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  231. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
  232. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts +2 -0
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +37 -0
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +3 -0
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts +3 -1
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts +30 -0
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts.map +1 -0
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js.map +1 -0
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts +2 -0
  262. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts.map +1 -0
  263. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
  264. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js.map +1 -0
  265. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts +7 -27
  266. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  267. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
  268. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  269. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +6 -0
  270. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  271. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  272. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  273. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  274. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -14
  275. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -5
  276. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +3 -0
  277. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -0
  278. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
  279. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -0
  280. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  281. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  282. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  283. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +2 -0
  284. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  285. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +13 -1
  286. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  287. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  288. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  289. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  290. package/package.json +6 -6
  291. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +0 -72
  292. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +0 -359
  293. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +0 -1
  294. package/dist/extensions/forgecli/forge-init/prompts.d.ts +0 -10
  295. package/dist/extensions/forgecli/forge-init/prompts.js +0 -91
  296. package/dist/extensions/forgecli/forge-init/prompts.js.map +0 -1
  297. package/dist/extensions/forgecli/lib/store-error-remediation.d.ts +0 -65
  298. package/dist/extensions/forgecli/lib/store-error-remediation.js +0 -298
  299. package/dist/extensions/forgecli/lib/store-error-remediation.js.map +0 -1
  300. package/dist/forge-payload/hooks/check-update.js +0 -378
  301. package/dist/forge-payload/hooks/forge-permissions.js +0 -164
  302. package/dist/forge-payload/hooks/triage-error.js +0 -77
  303. package/dist/forge-payload/hooks/validate-write.js +0 -250
@@ -1,359 +0,0 @@
1
- // forge-init/phase-descriptors.ts — LlmPhaseDescriptor interface + runLlmPhase() runner
2
- // + per-phase descriptor objects (FORGE-S25-T24, B-5)
3
- //
4
- // Centralises the repeated "banner → [LLM dispatch → waitForIdle →] verify → [retry →]
5
- // [user confirm →] writeInitProgress → completeNotify" skeleton that was duplicated
6
- // across the Phase 1, 2, and 3 blocks in forge-init.ts.
7
- //
8
- // Design rules:
9
- // - If `buildPrompt` returns a non-null string, the runner performs LLM dispatch via
10
- // `sendToAgent` + `waitForIdle`. Phase 1 and 2 use this path.
11
- // - If `buildPrompt` returns null, the runner skips LLM dispatch and invokes
12
- // `runDeterministic` instead (Phase 3 path — pure tool calls, no agent).
13
- // - `postVerify` is an optional async hook invoked after the failure-handling decision
14
- // completes (i.e. after verify succeeds OR after user chooses partial-continue).
15
- // Used by Phase 1 for KB folder prompt + marketplace advisory, by Phase 2 for
16
- // project-context.json write and calibration baseline.
17
- // - `hardFailOnVerifyError` (default false): when true, a failed verify causes an
18
- // immediate `"abort"` return with no retry and no user confirm. Phase 3 uses this.
19
- // - `preDispatchNotify` (optional): fired before LLM dispatch — used by Phase 1 to
20
- // emit the "Running 5 discovery scans in parallel..." info notice.
21
- import * as fs from "node:fs";
22
- import * as path from "node:path";
23
- import { buildProjectContext, computeCalibrationBaseline, validateProjectContext, writeProjectContext, } from "../init-context.js";
24
- import { writeInitProgress } from "../init-progress.js";
25
- import { execFileAsync, runToolAdvisory } from "../lib/exec-helpers.js";
26
- import { buildPhase1PromptText, buildPhase2PromptText } from "./prompts.js";
27
- import { verifyPhase1, verifyPhase2, verifyPhase3 } from "./verifiers.js";
28
- // ── Generic runner ─────────────────────────────────────────────────────────
29
- /**
30
- * Run a single init phase using its descriptor.
31
- *
32
- * Returns `"ok"` when the phase completes successfully (verify passed, or the
33
- * user chose to continue with partial results).
34
- *
35
- * Returns `"abort"` when the phase should halt the entire init (verify failed
36
- * in hard-fail mode, verify failed twice in non-interactive mode, or the user
37
- * declined to continue).
38
- */
39
- export async function runLlmPhase(desc, ctx, cwd, bundleRoot, toolsRoot, projectName, configCache, sendToAgent, waitForIdle, isNonInteractive) {
40
- // 1. setStatus
41
- ctx.ui.setStatus?.("forge:init", `Phase ${desc.label}`);
42
- // 2. Banner
43
- const bannersTool = path.join(toolsRoot, "banners.cjs");
44
- if (fs.existsSync(bannersTool)) {
45
- await execFileAsync("node", [bannersTool, "--phase", String(desc.phaseNum), "4", desc.bannerName, desc.bannerKey], { cwd, timeout: 5000 }).catch(() => {
46
- /* non-fatal */
47
- });
48
- }
49
- // 3. Optional pre-dispatch notification
50
- if (desc.preDispatchNotify) {
51
- ctx.ui.notify(desc.preDispatchNotify, "info");
52
- }
53
- // 4. LLM dispatch OR deterministic execution
54
- const prompt = desc.buildPrompt(bundleRoot, cwd, projectName, configCache);
55
- if (prompt !== null) {
56
- // LLM path: send prompt + wait for agent
57
- sendToAgent(prompt);
58
- await waitForIdle();
59
- }
60
- else if (desc.runDeterministic) {
61
- // Deterministic path: run tool calls directly
62
- await desc.runDeterministic(cwd, bundleRoot, toolsRoot, configCache, ctx);
63
- }
64
- // 5. Verify
65
- let result = desc.verify(cwd, configCache);
66
- if (!result.ok && desc.hardFailOnVerifyError) {
67
- // Hard-fail: no retry, no user confirm (Phase 3)
68
- ctx.ui.notify(desc.nonInteractiveAbortMsg(result), "error");
69
- return "abort";
70
- }
71
- // 6. Retry steer (LLM phases only)
72
- if (!result.ok && prompt !== null) {
73
- const retrySteer = desc.buildRetrySteer(result, bundleRoot, cwd);
74
- if (retrySteer) {
75
- ctx.ui.notify(`△ Phase ${desc.phaseNum} deliverable missing: ${result.missing.join(", ")} — retrying with corrective steer.`, "warning");
76
- sendToAgent(retrySteer);
77
- await waitForIdle();
78
- result = desc.verify(cwd, configCache);
79
- }
80
- }
81
- // 7. Handle persistent failure
82
- if (!result.ok) {
83
- if (isNonInteractive()) {
84
- ctx.ui.notify(desc.nonInteractiveAbortMsg(result), "error");
85
- return "abort";
86
- }
87
- const { title, body } = desc.interactiveAbortPrompt(result);
88
- const proceed = await ctx.ui.confirm(title, body);
89
- if (!proceed) {
90
- ctx.ui.notify(desc.abortNotify, "error");
91
- return "abort";
92
- }
93
- ctx.ui.notify(desc.partialContinueNotify, "warning");
94
- }
95
- // 8. Post-verify hook (called on success AND on partial-continue)
96
- if (desc.postVerify) {
97
- await desc.postVerify({
98
- cwd,
99
- bundleRoot,
100
- toolsRoot,
101
- projectName,
102
- configCache,
103
- ctx,
104
- sendToAgent,
105
- isNonInteractive,
106
- });
107
- }
108
- // 9. Write progress marker + completion notify
109
- writeInitProgress(cwd, desc.phaseNum);
110
- ctx.ui.notify(desc.completeNotify, "info");
111
- return "ok";
112
- }
113
- // ── Phase descriptors ──────────────────────────────────────────────────────
114
- export const PHASE_1 = {
115
- phaseNum: 1,
116
- label: "1/4: Collect",
117
- bannerName: "Collect",
118
- bannerKey: "north",
119
- preDispatchNotify: "Running 5 discovery scans in parallel...",
120
- buildPrompt(bundleRoot, _cwd, projectName, _configCache) {
121
- return buildPhase1PromptText(bundleRoot, projectName);
122
- },
123
- verify(cwd, _configCache) {
124
- return verifyPhase1(cwd);
125
- },
126
- buildRetrySteer(result, _bundleRoot, _cwd) {
127
- return (`Phase 1 verification failed. .forge/config.json is missing the following required fields: ${result.missing.join(", ")}.\n\n` +
128
- `Write a complete .forge/config.json now using the \`write\` tool. Do NOT call subagents — analyze the project codebase yourself if needed. ` +
129
- `Use the schema from the original Phase 1 prompt: version, project.{name,prefix}, stack, commands, and paths.{engineering,store,workflows,commands,templates} are all required.`);
130
- },
131
- nonInteractiveAbortMsg(result) {
132
- return `× Phase 1 failed: ${result.missing.join(", ")}. Aborting init in non-interactive mode.`;
133
- },
134
- interactiveAbortPrompt(result) {
135
- return {
136
- title: "Phase 1 failed twice — continue with partial init?",
137
- body: `.forge/config.json is still missing: ${result.missing.join(", ")}.\n\n` +
138
- `Yes = continue (you'll need to /forge:regenerate later).\n` +
139
- `No = abort. Inspect the file manually and re-run /forge:init.`,
140
- };
141
- },
142
- abortNotify: "× /forge:init aborted at Phase 1 verify.",
143
- partialContinueNotify: "△ Continuing with partial Phase 1 — downstream phases may fail.",
144
- completeNotify: "〇 Phase 1 complete.",
145
- async postVerify({ cwd, toolsRoot, configCache, ctx, isNonInteractive }) {
146
- // KB folder prompt (spec §7, F2) — G3: skipped in non-interactive mode (default: "engineering")
147
- // Phrasing chosen so the default-Yes affirmative ("use engineering/") is the
148
- // safe path. Pi's ctx.ui.confirm has no defaultValue option, so the question
149
- // has to align with the highlighted default — earlier "does this conflict?"
150
- // phrasing made the unsafe answer the default.
151
- if (!isNonInteractive()) {
152
- const kbDescription = `Forge will create a folder for architecture docs, sprints, bugs, and features.\n\n` +
153
- `Use "engineering" as the folder name? (Pick No only if your project already has an "engineering/" folder you don't want Forge to touch.)`;
154
- const useDefault = await ctx.ui.confirm("Engineering folder name?", kbDescription);
155
- if (!useDefault) {
156
- const customName = await ctx.ui.input("Engineering folder name? Enter preferred folder name", "e.g. ai-docs, .forge-kb, docs/ai");
157
- if (customName && customName.trim()) {
158
- const manageConfigToolEarly = path.join(toolsRoot, "manage-config.cjs");
159
- if (fs.existsSync(manageConfigToolEarly)) {
160
- await runToolAdvisory(manageConfigToolEarly, ["set", "paths.engineering", customName.trim()], cwd, ctx, "manage-config paths.engineering");
161
- }
162
- }
163
- }
164
- }
165
- // Marketplace skills advisory (sub-decision #1)
166
- ctx.ui.notify("〇 Marketplace skills auto-recommendation is Claude-Code-only. " +
167
- "Pi users install extensions manually. Writing installedSkills: []", "info");
168
- // Write installedSkills: []
169
- const manageConfigTool = path.join(toolsRoot, "manage-config.cjs");
170
- if (fs.existsSync(manageConfigTool)) {
171
- await runToolAdvisory(manageConfigTool, ["set", "installedSkills", "[]"], cwd, ctx, "manage-config installedSkills");
172
- // Write mode = "full"
173
- await runToolAdvisory(manageConfigTool, ["set", "mode", "full"], cwd, ctx, "manage-config mode");
174
- }
175
- void configCache; // used by descriptor runner; accessed here only to satisfy type
176
- },
177
- };
178
- export const PHASE_2 = {
179
- phaseNum: 2,
180
- label: "2/4: Discover",
181
- bannerName: "Discover",
182
- bannerKey: "oracle",
183
- buildPrompt(bundleRoot, cwd, projectName, configCache) {
184
- let kbPath = "engineering";
185
- const cachePaths = configCache.paths;
186
- if (cachePaths && typeof cachePaths.engineering === "string" && cachePaths.engineering) {
187
- kbPath = cachePaths.engineering;
188
- }
189
- // Scaffold dirs before dispatching to ensure they exist
190
- const dirs = [
191
- path.join(cwd, kbPath),
192
- path.join(cwd, kbPath, "architecture"),
193
- path.join(cwd, kbPath, "business-domain"),
194
- path.join(cwd, kbPath, "sprints"),
195
- path.join(cwd, ".forge", "store"),
196
- path.join(cwd, ".forge", "cache"),
197
- ];
198
- for (const dir of dirs) {
199
- try {
200
- fs.mkdirSync(dir, { recursive: true });
201
- const keepPath = path.join(dir, ".gitkeep");
202
- if (!fs.existsSync(keepPath)) {
203
- fs.writeFileSync(keepPath, "", "utf8");
204
- }
205
- }
206
- catch {
207
- // non-fatal
208
- }
209
- }
210
- return buildPhase2PromptText(bundleRoot, kbPath, projectName);
211
- },
212
- verify(cwd, configCache) {
213
- let kbPath = "engineering";
214
- const cachePaths = configCache.paths;
215
- if (cachePaths && typeof cachePaths.engineering === "string" && cachePaths.engineering) {
216
- kbPath = cachePaths.engineering;
217
- }
218
- return verifyPhase2(cwd, kbPath);
219
- },
220
- buildRetrySteer(result, bundleRoot, _cwd) {
221
- return (`Phase 2 verification failed. The following architecture docs are missing:\n${result.missing.map((m) => ` - ${m}`).join("\n")}\n\n` +
222
- `Write the missing files now using the \`write\` tool. Do NOT call subagents — analyze the project codebase yourself. ` +
223
- `Use the rulebook at ${path.join(bundleRoot, ".init", "generation", "generate-kb-doc.md")} for the per-doc shape and confidence-header format.`);
224
- },
225
- nonInteractiveAbortMsg(result) {
226
- return `× Phase 2 failed: ${result.missing.length} doc(s) still missing. Aborting init in non-interactive mode.`;
227
- },
228
- interactiveAbortPrompt(result) {
229
- return {
230
- title: "Phase 2 failed twice — continue with partial init?",
231
- body: `Missing docs:\n${result.missing.map((m) => ` - ${m}`).join("\n")}\n\n` +
232
- `Yes = continue (you'll need to fill these manually).\n` +
233
- `No = abort. Inspect the project and re-run /forge:init.`,
234
- };
235
- },
236
- abortNotify: "× /forge:init aborted at Phase 2 verify.",
237
- partialContinueNotify: "△ Continuing with partial Phase 2.",
238
- completeNotify: "〇 Phase 2 complete.",
239
- async postVerify({ cwd, bundleRoot, toolsRoot, projectName, configCache, ctx }) {
240
- // Construct project-context.json — use configCache (written by Phase 1)
241
- let kbPathResolved = "engineering";
242
- let prefix = "";
243
- {
244
- const cacheProj = configCache.project;
245
- if (cacheProj && typeof cacheProj.prefix === "string")
246
- prefix = cacheProj.prefix;
247
- const cachePaths2 = configCache.paths;
248
- if (cachePaths2 && typeof cachePaths2.engineering === "string")
249
- kbPathResolved = cachePaths2.engineering;
250
- }
251
- const projectCtx = buildProjectContext({
252
- projectName: configCache.project?.name ?? projectName,
253
- prefix,
254
- kbPath: kbPathResolved,
255
- }, configCache);
256
- try {
257
- validateProjectContext(projectCtx);
258
- writeProjectContext(cwd, projectCtx);
259
- ctx.ui.notify("〇 project-context.json written.", "info");
260
- }
261
- catch (err) {
262
- const e = err;
263
- ctx.ui.notify(`△ project-context.json validation failed: ${e.message ?? "unknown"} — proceeding.`, "warning");
264
- }
265
- // Calibration baseline — read bundled version from plugin.json (same pattern as phase4-register.ts step 4-8)
266
- let bundledPluginVersion = "";
267
- try {
268
- const pluginPath = path.join(bundleRoot, ".claude-plugin", "plugin.json");
269
- const plugin = JSON.parse(fs.readFileSync(pluginPath, "utf8"));
270
- bundledPluginVersion = plugin.version ?? "";
271
- }
272
- catch {
273
- // non-fatal — version field stays ""
274
- }
275
- const baseline = computeCalibrationBaseline(cwd, kbPathResolved, bundledPluginVersion);
276
- const manageConfigTool = path.join(toolsRoot, "manage-config.cjs");
277
- if (fs.existsSync(manageConfigTool)) {
278
- await runToolAdvisory(manageConfigTool, ["set", "calibrationBaseline", JSON.stringify(baseline)], cwd, ctx, "manage-config calibrationBaseline");
279
- }
280
- },
281
- };
282
- export const PHASE_3 = {
283
- phaseNum: 3,
284
- label: "3/4: Materialize",
285
- bannerName: "Materialize",
286
- bannerKey: "supervisor",
287
- // Phase 3 is deterministic — no LLM dispatch.
288
- buildPrompt(_bundleRoot, _cwd, _projectName, _configCache) {
289
- return null;
290
- },
291
- async runDeterministic(cwd, bundleRoot, toolsRoot, _configCache, ctx) {
292
- const buildInitContextTool = path.join(toolsRoot, "build-init-context.cjs");
293
- const substituteTool = path.join(toolsRoot, "substitute-placeholders.cjs");
294
- const buildOverlayTool = path.join(toolsRoot, "build-overlay.cjs");
295
- const basePackDir = path.join(bundleRoot, ".base-pack");
296
- // 3a: build-init-context.cjs first build
297
- if (fs.existsSync(buildInitContextTool)) {
298
- await runToolAdvisory(buildInitContextTool, [
299
- "--config",
300
- path.join(cwd, ".forge", "config.json"),
301
- "--personas",
302
- path.join(cwd, ".forge", "personas"),
303
- "--templates",
304
- path.join(cwd, ".forge", "templates"),
305
- "--kb",
306
- cwd,
307
- "--out",
308
- path.join(cwd, ".forge", "init-context.md"),
309
- "--json-out",
310
- path.join(cwd, ".forge", "init-context.json"),
311
- ], cwd, ctx, "build-init-context", 30000);
312
- }
313
- // 3b: substitute-placeholders.cjs — base-pack materialisation
314
- if (fs.existsSync(substituteTool) && fs.existsSync(basePackDir)) {
315
- await runToolAdvisory(substituteTool, [
316
- "--forge-root",
317
- bundleRoot,
318
- "--base-pack",
319
- basePackDir,
320
- "--config",
321
- path.join(cwd, ".forge", "config.json"),
322
- "--context",
323
- path.join(cwd, ".forge", "init-context.json"),
324
- "--out",
325
- cwd,
326
- ], cwd, ctx, "substitute-placeholders", 60000);
327
- }
328
- // 3c: build-overlay.cjs smoke test (exit 1 is advisory)
329
- if (fs.existsSync(buildOverlayTool)) {
330
- await runToolAdvisory(buildOverlayTool, ["--task", "INIT-SMOKE-TEST", "--format", "json"], cwd, ctx, "build-overlay smoke (advisory)", 15000);
331
- }
332
- },
333
- verify(cwd, _configCache) {
334
- return verifyPhase3(cwd);
335
- },
336
- buildRetrySteer(_result, _bundleRoot, _cwd) {
337
- // Phase 3 hard-fails — retry steer is not used.
338
- return null;
339
- },
340
- nonInteractiveAbortMsg(result) {
341
- return (`× Phase 3 failed: ${result.missing.join(", ")}. ` +
342
- `This usually means substitute-placeholders.cjs ran against an incomplete config. ` +
343
- `Fix .forge/config.json and run /forge:regenerate, or restart /forge:init from scratch (delete .forge/init-progress.json).`);
344
- },
345
- interactiveAbortPrompt(result) {
346
- return {
347
- title: "Phase 3 failed — abort init?",
348
- body: `Phase 3 materialization failed: ${result.missing.join(", ")}.\n\n` +
349
- `This usually means substitute-placeholders.cjs ran against an incomplete config.\n` +
350
- `Fix .forge/config.json and run /forge:regenerate.`,
351
- };
352
- },
353
- abortNotify: "× /forge:init aborted at Phase 3 verify.",
354
- partialContinueNotify: "△ Continuing with partial Phase 3.",
355
- completeNotify: "〇 Phase 3 complete.",
356
- // Phase 3 hard-fails on verify error — no retry, no user confirm.
357
- hardFailOnVerifyError: true,
358
- };
359
- //# sourceMappingURL=phase-descriptors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"phase-descriptors.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/phase-descriptors.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Build the Phase 1 prompt: instructs the agent to run 5 parallel discovery scans
3
- * and synthesize results into `.forge/config.json`.
4
- */
5
- export declare function buildPhase1PromptText(bundleRoot: string, projectName: string): string;
6
- /**
7
- * Build the Phase 2 prompt: instructs the agent to generate 7 parallel KB docs
8
- * under `kbPath/architecture/`.
9
- */
10
- export declare function buildPhase2PromptText(bundleRoot: string, kbPath: string, projectName: string): string;
@@ -1,91 +0,0 @@
1
- // forge-init/prompts.ts — phase prompt text builders (FORGE-S25-T23, B-4)
2
- //
3
- // Centralises the LLM prompt strings sent to the agent via `sendToAgent` during init phases.
4
- // Keeping these out of forge-init.ts makes the orchestration logic easier to read and the
5
- // prompt text easier to iterate on independently.
6
- import * as path from "node:path";
7
- /**
8
- * Build the Phase 1 prompt: instructs the agent to run 5 parallel discovery scans
9
- * and synthesize results into `.forge/config.json`.
10
- */
11
- export function buildPhase1PromptText(bundleRoot, projectName) {
12
- const discoveryDir = path.join(bundleRoot, ".init", "discovery");
13
- const topics = ["stack", "processes", "database", "routing", "testing"];
14
- const topicLines = topics.map((t) => ` • ${path.join(discoveryDir, `discover-${t}.md`)}`).join("\n");
15
- return `## /forge:init Phase 1 — Collect: 5 parallel discovery scans
16
-
17
- Project: ${projectName}
18
-
19
- Run 5 discovery scans concurrently. In a single response, issue 5 parallel tool
20
- calls — one per discovery topic — using whatever read/search tools you have
21
- available (Read, Glob, Grep, Bash). If a \`subagent\` tool is exposed in your
22
- toolset, you MAY dispatch via it (mode: "parallel"); otherwise execute the
23
- scans inline. Do NOT preface with "I don't have a subagent tool" — either path
24
- is acceptable, what matters is concurrency and the resulting deliverable.
25
-
26
- For each topic:
27
- 1. Read the discovery prompt file at its assigned path (shown below)
28
- 2. Analyze the current project codebase
29
- 3. Capture structured findings
30
-
31
- Discovery prompt files:
32
- ${topicLines}
33
-
34
- After all 5 complete, synthesize the findings into a unified config and write .forge/config.json.
35
-
36
- Required .forge/config.json structure:
37
- {
38
- "version": "1",
39
- "project": { "name": "${projectName}", "prefix": "<UPPERCASE_ABBREV>" },
40
- "stack": { "primary": [...], "test": <framework>, "build": <tool>, "lint": <tool> },
41
- "commands": { "test": "<test cmd>", "build": "<build cmd>", "lint": "<lint cmd>" },
42
- "paths": {
43
- "engineering": "engineering",
44
- "store": ".forge/store",
45
- "workflows": ".forge/workflows",
46
- "commands": ".claude/commands/forge",
47
- "templates": ".forge/templates"
48
- }
49
- }
50
-
51
- Write the config with: node "${path.join(bundleRoot, "tools/manage-config.cjs")}" set <key> <value>
52
- Or write .forge/config.json directly as valid JSON.`;
53
- }
54
- /**
55
- * Build the Phase 2 prompt: instructs the agent to generate 7 parallel KB docs
56
- * under `kbPath/architecture/`.
57
- */
58
- export function buildPhase2PromptText(bundleRoot, kbPath, projectName) {
59
- const generateKbDocPath = path.join(bundleRoot, ".init", "generation", "generate-kb-doc.md");
60
- const docs = ["stack", "processes", "database", "routing", "deployment", "entity-model", "stack-checklist"];
61
- const docLines = docs.map((d) => ` • ${kbPath}/architecture/${d}.md`).join("\n");
62
- return `## /forge:init Phase 2 — Discover: 7 parallel KB doc generation
63
-
64
- Project: ${projectName}
65
- KB path: ${kbPath}/
66
- Rulebook: ${generateKbDocPath}
67
-
68
- Generate 7 knowledge-base documents concurrently. In a single response, issue
69
- 7 parallel tool calls — one per document — using whatever read/search/write
70
- tools you have available (Read, Glob, Grep, Bash, Write). If a \`subagent\`
71
- tool is exposed in your toolset, you MAY dispatch via it (mode: "parallel");
72
- otherwise execute the generation inline. Do NOT preface with "I don't have a
73
- subagent tool" — either path is acceptable, what matters is concurrency and
74
- the 7 output files.
75
-
76
- For each document:
77
- 1. Read the rulebook at: ${generateKbDocPath}
78
- 2. Analyze the project codebase for its assigned topic
79
- 3. Write the resulting document to its assigned output file
80
-
81
- Documents to generate:
82
- ${docLines}
83
-
84
- After all complete, check for any that returned "FAILED:" in their output — retry those once.
85
-
86
- Also create these index files after generation:
87
- - ${kbPath}/architecture/INDEX.md
88
- - ${kbPath}/business-domain/INDEX.md
89
- - ${kbPath}/MASTER_INDEX.md (scaffold)`;
90
- }
91
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/prompts.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6FAA6F;AAC7F,0FAA0F;AAC1F,kDAAkD;AAElD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,WAAmB;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtG,OAAO;;WAEG,WAAW;;;;;;;;;;;;;;;EAepB,UAAU;;;;;;;0BAOc,WAAW;;;;;;;;;;;;+BAYN,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC;oDAC3B,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,MAAc,EAAE,WAAmB;IAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElF,OAAO;;WAEG,WAAW;WACX,MAAM;YACL,iBAAiB;;;;;;;;;;;2BAWF,iBAAiB;;;;;EAK1C,QAAQ;;;;;IAKN,MAAM;IACN,MAAM;IACN,MAAM,6BAA6B,CAAC;AACxC,CAAC"}
@@ -1,65 +0,0 @@
1
- export interface RemediationResult {
2
- /** One-line user-facing hint explaining the error and the fix. */
3
- hint: string;
4
- /** Optional copy-pasteable store-cli command. Empty string if N/A. */
5
- command: string;
6
- }
7
- /**
8
- * Infer the entity type from an entity name/ID string.
9
- * Returns "task" as default if no match.
10
- */
11
- export declare function inferEntityType(entity: string): string;
12
- /** Parsed breakdown of a validation error string. */
13
- interface ParsedError {
14
- field: string;
15
- errorKind: "enum" | "required" | "undeclared" | "type" | "pattern" | "datetime" | "length" | "other";
16
- observed?: string;
17
- enumValues?: string[];
18
- }
19
- /**
20
- * Parse a single validation error line from validate.js / store-cli.
21
- *
22
- * Examples:
23
- * 'status: value "verified" not in [reported, triaged, in-progress, fixed]'
24
- * 'taskId: missing required field'
25
- * 'xyz: undeclared field'
26
- * 'sprintId: expected string, got number'
27
- * 'title: value length 0 is below minLength 1'
28
- * 'createdAt: value "today" is not a valid date-time'
29
- * 'prefix: value "AB" does not match pattern ^[A-Z]+-[A-Z]$'
30
- */
31
- export declare function parseValidationError(line: string): ParsedError;
32
- /**
33
- * Given a single validation error line (from validate.js or store-cli),
34
- * return a user-facing remediation hint and optional copy-pasteable command.
35
- *
36
- * @param errorLine A single error line from validate.js / store-cli output.
37
- * @param entityType The entity type (task, sprint, bug, feature, event).
38
- * @param entityId The entity ID (e.g. "FORGE-S18-T02") — used for commands.
39
- * @returns RemediationResult with hint and command.
40
- */
41
- export declare function remediateError(errorLine: string, entityType: string, entityId: string): RemediationResult;
42
- /**
43
- * Parse a multi-line validation output (e.g. from store-cli validate or
44
- * validate-store --dry-run) into individual error lines and return
45
- * remediation for each.
46
- *
47
- * @param output Raw multi-line output from validation tool.
48
- * @param entityType Override entity type (inferred from output if not provided).
49
- * @returns Array of { errorLine, remediation } objects.
50
- */
51
- export declare function remediateValidationOutput(output: string, entityType?: string): Array<{
52
- errorLine: string;
53
- remediation: RemediationResult;
54
- }>;
55
- /**
56
- * Format a block message for a write-guard violation, appending remediation hints.
57
- * Used by hook-dispatcher.ts for store-cli intercept blocks.
58
- *
59
- * @param rawReason The raw reason string from validateStoreCLIPayload or checkWriteGuard.
60
- * @param entityType The entity type if known.
61
- * @param entityId The entity ID if known.
62
- * @returns Enhanced reason string with remediation hints appended.
63
- */
64
- export declare function enhanceBlockMessage(rawReason: string, entityType?: string, entityId?: string): string;
65
- export {};