@entelligentsia/forgecli 1.0.25 → 1.0.40

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 (590) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/README.md +2 -0
  3. package/dist/CHANGELOG-forge-plugin.md +264 -0
  4. package/dist/CHANGELOG-pi.md +143 -0
  5. package/dist/bin/argv.d.ts +2 -2
  6. package/dist/bin/argv.js +37 -0
  7. package/dist/bin/argv.js.map +1 -1
  8. package/dist/bin/forge.js +30 -16
  9. package/dist/bin/forge.js.map +1 -1
  10. package/dist/bin/init.d.ts +23 -0
  11. package/dist/bin/init.js +123 -0
  12. package/dist/bin/init.js.map +1 -0
  13. package/dist/bin/reset.d.ts +39 -0
  14. package/dist/bin/reset.js +101 -0
  15. package/dist/bin/reset.js.map +1 -0
  16. package/dist/bin/uninstall.d.ts +20 -0
  17. package/dist/bin/uninstall.js +141 -0
  18. package/dist/bin/uninstall.js.map +1 -0
  19. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.d.ts +40 -0
  20. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js +384 -0
  21. package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js.map +1 -0
  22. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.d.ts +46 -0
  23. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js +245 -0
  24. package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js.map +1 -0
  25. package/dist/extensions/forgecli/claude-bootstrap/uninstall.d.ts +23 -0
  26. package/dist/extensions/forgecli/claude-bootstrap/uninstall.js +235 -0
  27. package/dist/extensions/forgecli/claude-bootstrap/uninstall.js.map +1 -0
  28. package/dist/extensions/forgecli/commands/reset.d.ts +16 -0
  29. package/dist/extensions/forgecli/commands/reset.js +83 -0
  30. package/dist/extensions/forgecli/commands/reset.js.map +1 -0
  31. package/dist/extensions/forgecli/dashboard/component.js +10 -7
  32. package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
  33. package/dist/extensions/forgecli/forge-commands.d.ts +7 -2
  34. package/dist/extensions/forgecli/forge-commands.js +19 -5
  35. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  36. package/dist/extensions/forgecli/forge-subagent.d.ts +4 -4
  37. package/dist/extensions/forgecli/hooks/forge-permissions.js +20 -6
  38. package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -1
  39. package/dist/extensions/forgecli/index.js +6 -3
  40. package/dist/extensions/forgecli/index.js.map +1 -1
  41. package/dist/extensions/forgecli/lib/forge-root.d.ts +6 -0
  42. package/dist/extensions/forgecli/lib/forge-root.js +52 -0
  43. package/dist/extensions/forgecli/lib/forge-root.js.map +1 -1
  44. package/dist/extensions/forgecli/lib/payload-manifest.d.ts +62 -0
  45. package/dist/extensions/forgecli/lib/payload-manifest.js +151 -0
  46. package/dist/extensions/forgecli/lib/payload-manifest.js.map +1 -0
  47. package/dist/extensions/forgecli/orchestrators/advisory-render.d.ts +9 -0
  48. package/dist/extensions/forgecli/orchestrators/advisory-render.js +107 -0
  49. package/dist/extensions/forgecli/orchestrators/advisory-render.js.map +1 -0
  50. package/dist/extensions/forgecli/orchestrators/bug/bug-body.d.ts +1 -0
  51. package/dist/extensions/forgecli/orchestrators/bug/bug-body.js +65 -0
  52. package/dist/extensions/forgecli/orchestrators/bug/bug-body.js.map +1 -0
  53. package/dist/extensions/forgecli/orchestrators/bug/bug-id.d.ts +23 -0
  54. package/dist/extensions/forgecli/orchestrators/bug/bug-id.js +140 -0
  55. package/dist/extensions/forgecli/orchestrators/bug/bug-id.js.map +1 -0
  56. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.d.ts +54 -0
  57. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js +349 -0
  58. package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js.map +1 -0
  59. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.d.ts +11 -0
  60. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js +82 -0
  61. package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js.map +1 -0
  62. package/dist/extensions/forgecli/orchestrators/bug/bug-state.d.ts +14 -0
  63. package/dist/extensions/forgecli/orchestrators/bug/bug-state.js +100 -0
  64. package/dist/extensions/forgecli/orchestrators/bug/bug-state.js.map +1 -0
  65. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.d.ts +72 -0
  66. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js +204 -0
  67. package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js.map +1 -0
  68. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.d.ts +38 -0
  69. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js +198 -0
  70. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js.map +1 -0
  71. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.d.ts +3 -0
  72. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js +55 -0
  73. package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js.map +1 -0
  74. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.d.ts +7 -0
  75. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js +293 -0
  76. package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js.map +1 -0
  77. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.d.ts +2 -0
  78. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js +501 -0
  79. package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js.map +1 -0
  80. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.d.ts +41 -0
  81. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js +5 -0
  82. package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js.map +1 -0
  83. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.d.ts +43 -0
  84. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js +85 -0
  85. package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js.map +1 -0
  86. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.d.ts +8 -0
  87. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js +37 -0
  88. package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js.map +1 -0
  89. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.d.ts +28 -0
  90. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js +45 -0
  91. package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js.map +1 -0
  92. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.d.ts +26 -0
  93. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js +75 -0
  94. package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js.map +1 -0
  95. package/dist/extensions/forgecli/orchestrators/common/recovery-menu.d.ts +24 -0
  96. package/dist/extensions/forgecli/orchestrators/common/recovery-menu.js +58 -0
  97. package/dist/extensions/forgecli/orchestrators/common/recovery-menu.js.map +1 -0
  98. package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.d.ts +53 -0
  99. package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.js +131 -0
  100. package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.js.map +1 -0
  101. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.d.ts +24 -0
  102. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js +37 -0
  103. package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js.map +1 -0
  104. package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +9 -93
  105. package/dist/extensions/forgecli/orchestrators/fix-bug.js +23 -1721
  106. package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -1
  107. package/dist/extensions/forgecli/orchestrators/halt-advisor.js +25 -3
  108. package/dist/extensions/forgecli/orchestrators/halt-advisor.js.map +1 -1
  109. package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +3 -12
  110. package/dist/extensions/forgecli/orchestrators/run-sprint.js +48 -270
  111. package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -1
  112. package/dist/extensions/forgecli/orchestrators/run-task.d.ts +10 -214
  113. package/dist/extensions/forgecli/orchestrators/run-task.js +31 -1481
  114. package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -1
  115. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.d.ts +33 -0
  116. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js +135 -0
  117. package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js.map +1 -0
  118. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.d.ts +18 -0
  119. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js +55 -0
  120. package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js.map +1 -0
  121. package/dist/extensions/forgecli/orchestrators/task/run-task-command.d.ts +9 -0
  122. package/dist/extensions/forgecli/orchestrators/task/run-task-command.js +174 -0
  123. package/dist/extensions/forgecli/orchestrators/task/run-task-command.js.map +1 -0
  124. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.d.ts +2 -0
  125. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js +494 -0
  126. package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js.map +1 -0
  127. package/dist/extensions/forgecli/orchestrators/task/run-task-types.d.ts +62 -0
  128. package/dist/extensions/forgecli/orchestrators/task/run-task-types.js +5 -0
  129. package/dist/extensions/forgecli/orchestrators/task/run-task-types.js.map +1 -0
  130. package/dist/extensions/forgecli/orchestrators/task/task-body.d.ts +4 -0
  131. package/dist/extensions/forgecli/orchestrators/task/task-body.js +48 -0
  132. package/dist/extensions/forgecli/orchestrators/task/task-body.js.map +1 -0
  133. package/dist/extensions/forgecli/orchestrators/task/task-events.d.ts +63 -0
  134. package/dist/extensions/forgecli/orchestrators/task/task-events.js +185 -0
  135. package/dist/extensions/forgecli/orchestrators/task/task-events.js.map +1 -0
  136. package/dist/extensions/forgecli/orchestrators/task/task-gates.d.ts +34 -0
  137. package/dist/extensions/forgecli/orchestrators/task/task-gates.js +78 -0
  138. package/dist/extensions/forgecli/orchestrators/task/task-gates.js.map +1 -0
  139. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.d.ts +42 -0
  140. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js +370 -0
  141. package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js.map +1 -0
  142. package/dist/extensions/forgecli/orchestrators/task/task-phases.d.ts +17 -0
  143. package/dist/extensions/forgecli/orchestrators/task/task-phases.js +48 -0
  144. package/dist/extensions/forgecli/orchestrators/task/task-phases.js.map +1 -0
  145. package/dist/extensions/forgecli/orchestrators/task/task-record.d.ts +9 -0
  146. package/dist/extensions/forgecli/orchestrators/task/task-record.js +58 -0
  147. package/dist/extensions/forgecli/orchestrators/task/task-record.js.map +1 -0
  148. package/dist/extensions/forgecli/orchestrators/task/task-state.d.ts +14 -0
  149. package/dist/extensions/forgecli/orchestrators/task/task-state.js +35 -0
  150. package/dist/extensions/forgecli/orchestrators/task/task-state.js.map +1 -0
  151. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.d.ts +36 -0
  152. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js +187 -0
  153. package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js.map +1 -0
  154. package/dist/extensions/forgecli/store/store-resolver.d.ts +15 -0
  155. package/dist/extensions/forgecli/store/store-resolver.js +118 -18
  156. package/dist/extensions/forgecli/store/store-resolver.js.map +1 -1
  157. package/dist/extensions/forgecli/update/forge-update-command.js +10 -7
  158. package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -1
  159. package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -6
  160. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +1 -1
  161. package/dist/forge-payload/.base-pack/workflows-js/wfl-init.js +449 -0
  162. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  163. package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
  164. package/dist/forge-payload/.schemas/migrations.json +170 -0
  165. package/dist/forge-payload/.schemas/payload-manifest.schema.json +100 -0
  166. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  167. package/dist/forge-payload/commands/add-task.md +3 -3
  168. package/dist/forge-payload/{.base-pack/commands → commands}/approve.md +2 -2
  169. package/dist/forge-payload/commands/ask.md +1 -1
  170. package/dist/forge-payload/commands/check-agent.md +8 -24
  171. package/dist/forge-payload/{.base-pack/commands → commands}/collate.md +2 -2
  172. package/dist/forge-payload/{.base-pack/commands → commands}/commit.md +2 -2
  173. package/dist/forge-payload/commands/config.md +1 -1
  174. package/dist/forge-payload/commands/enhance.md +31 -5
  175. package/dist/forge-payload/{.base-pack/commands → commands}/fix-bug.md +2 -2
  176. package/dist/forge-payload/commands/health.md +1 -1
  177. package/dist/forge-payload/{.base-pack/commands → commands}/implement.md +2 -2
  178. package/dist/forge-payload/commands/init.md +186 -67
  179. package/dist/forge-payload/{.base-pack/commands → commands}/new-sprint.md +2 -2
  180. package/dist/forge-payload/{.base-pack/commands → commands}/plan-sprint.md +2 -2
  181. package/dist/forge-payload/{.base-pack/commands → commands}/plan.md +2 -2
  182. package/dist/forge-payload/commands/rebuild.md +3 -3
  183. package/dist/forge-payload/commands/remove.md +1 -1
  184. package/dist/forge-payload/commands/repair.md +1 -1
  185. package/dist/forge-payload/commands/report-bug.md +1 -1
  186. package/dist/forge-payload/commands/reset.md +117 -0
  187. package/dist/forge-payload/{.base-pack/commands → commands}/retro.md +2 -2
  188. package/dist/forge-payload/{.base-pack/commands → commands}/review-code.md +2 -2
  189. package/dist/forge-payload/{.base-pack/commands → commands}/review-plan.md +2 -2
  190. package/dist/forge-payload/{.base-pack/commands → commands}/run-sprint.md +2 -2
  191. package/dist/forge-payload/{.base-pack/commands → commands}/run-task.md +2 -2
  192. package/dist/forge-payload/commands/status.md +1 -1
  193. package/dist/forge-payload/commands/update.md +3 -3
  194. package/dist/forge-payload/{.base-pack/commands → commands}/validate.md +2 -2
  195. package/dist/forge-payload/hooks/forge-permissions.cjs +29 -6
  196. package/dist/forge-payload/hooks/lib/common.cjs +228 -0
  197. package/dist/forge-payload/hooks/lib/plugin-detection.cjs +106 -0
  198. package/dist/forge-payload/hooks/lib/update-msg.cjs +23 -0
  199. package/dist/forge-payload/hooks/lib/update-url.cjs +46 -0
  200. package/dist/forge-payload/hooks/lib/write-registry.js +53 -0
  201. package/dist/forge-payload/init/discovery/discover-database.md +32 -0
  202. package/dist/forge-payload/init/discovery/discover-processes.md +31 -0
  203. package/dist/forge-payload/init/discovery/discover-routing.md +31 -0
  204. package/dist/forge-payload/init/discovery/discover-stack.md +33 -0
  205. package/dist/forge-payload/init/discovery/discover-testing.md +34 -0
  206. package/dist/forge-payload/init/generation/generate-commands.md +171 -0
  207. package/dist/forge-payload/init/generation/generate-kb-doc.md +60 -0
  208. package/dist/forge-payload/init/generation/generate-persona.md +73 -0
  209. package/dist/forge-payload/init/generation/generate-skill.md +66 -0
  210. package/dist/forge-payload/init/generation/generate-template.md +60 -0
  211. package/dist/forge-payload/init/generation/generate-tools.md +133 -0
  212. package/dist/forge-payload/init/generation/generate-workflows.md +78 -0
  213. package/dist/forge-payload/init/phases/phase-1-collect.md +10 -2
  214. package/dist/forge-payload/init/phases/phase-3-materialize.md +5 -1
  215. package/dist/forge-payload/init/phases/phase-4-register.md +8 -0
  216. package/dist/forge-payload/init/workflow-gen-plan.json +17 -0
  217. package/dist/forge-payload/integrity.json +33 -18
  218. package/dist/forge-payload/meta/workflows/meta-collate.md +5 -6
  219. package/dist/forge-payload/meta/workflows/meta-migrate.md +1 -1
  220. package/dist/forge-payload/payload-manifest.json +314 -0
  221. package/dist/forge-payload/schemas/enum-catalog.json +2 -2
  222. package/dist/forge-payload/schemas/payload-manifest.schema.json +100 -0
  223. package/dist/forge-payload/schemas/structure-manifest.json +5 -12
  224. package/dist/forge-payload/tools/forge-preflight.cjs +268 -0
  225. package/dist/forge-payload/tools/lib/paths.cjs +12 -11
  226. package/dist/forge-payload/tools/lib/pricing.cjs +31 -11
  227. package/dist/forge-payload/tools/query-logger.cjs +34 -0
  228. package/dist/forge-payload/tools/reset-plan.cjs +210 -0
  229. package/dist/forge-payload/tools/store.cjs +4 -1
  230. package/dist/forge-payload/tools/substitute-placeholders.cjs +14 -7
  231. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  232. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +8 -0
  233. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  234. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
  235. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  236. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
  237. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  238. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +4 -0
  239. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +1 -0
  240. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +3 -0
  241. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +1 -0
  242. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +20 -0
  243. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +1 -0
  244. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +92 -0
  245. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +1 -0
  246. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +18 -0
  247. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +1 -0
  248. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +42 -0
  249. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +1 -0
  250. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +10 -0
  251. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +1 -0
  252. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +31 -0
  253. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +1 -0
  254. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +30 -0
  255. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +1 -0
  256. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +170 -0
  257. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +1 -0
  258. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +26 -0
  259. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +1 -0
  260. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +90 -0
  261. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +1 -0
  262. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +6 -1
  263. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  264. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  265. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  266. package/node_modules/@earendil-works/pi-ai/README.md +12 -4
  267. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  268. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +3 -0
  269. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  270. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +45 -0
  271. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  272. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +45 -0
  273. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  274. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +1804 -815
  275. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  276. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2031 -1384
  277. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  278. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  279. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +71 -27
  280. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  281. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
  282. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  283. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +24 -16
  284. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  285. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  286. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
  287. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  288. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  289. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +3 -1
  290. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  291. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  292. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +35 -13
  293. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  294. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  295. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
  296. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  297. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  298. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +1 -0
  299. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  300. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +12 -4
  301. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  302. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  303. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  304. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +13 -1
  305. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  306. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  307. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +4 -2
  308. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  309. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +1 -1
  310. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  311. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +3 -2
  312. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  313. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  314. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +143 -0
  315. package/node_modules/@earendil-works/pi-coding-agent/README.md +26 -4
  316. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +1 -0
  317. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  318. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +11 -0
  319. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
  320. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.d.ts +10 -0
  321. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.d.ts.map +1 -0
  322. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.js +48 -0
  323. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.js.map +1 -0
  324. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts +17 -0
  325. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts.map +1 -0
  326. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +128 -0
  327. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js.map +1 -0
  328. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
  329. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +9 -1
  330. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
  331. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts +3 -1
  332. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts.map +1 -1
  333. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js +4 -1
  334. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js.map +1 -1
  335. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +2 -1
  336. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
  337. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +2 -2
  338. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
  339. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +4 -1
  340. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  341. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +16 -3
  342. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  343. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  344. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +4 -3
  345. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  346. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts +3 -1
  347. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  348. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js +9 -3
  349. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  350. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.d.ts +1 -1
  351. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  352. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.js +1 -1
  353. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  354. package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.d.ts +2 -0
  355. package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.d.ts.map +1 -0
  356. package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.js +4 -0
  357. package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.js.map +1 -0
  358. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/template.js +19 -6
  359. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  360. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  361. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  362. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -1
  363. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  364. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +4 -4
  365. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  366. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +10 -3
  367. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  368. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +47 -1
  369. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  370. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +28 -2
  371. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  372. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  373. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts +2 -0
  374. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts.map +1 -1
  375. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js +29 -1
  376. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js.map +1 -1
  377. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts +1 -0
  378. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  379. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js +1 -0
  380. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js.map +1 -1
  381. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  382. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +1 -0
  383. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  384. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +1 -0
  385. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  386. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +44 -5
  387. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  388. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +3 -0
  389. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  390. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +47 -13
  391. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  392. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.d.ts +15 -0
  393. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.d.ts.map +1 -0
  394. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +58 -0
  395. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js.map +1 -0
  396. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts +2 -1
  397. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  398. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js +24 -26
  399. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  400. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.d.ts +4 -0
  401. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.d.ts.map +1 -0
  402. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +72 -0
  403. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js.map +1 -0
  404. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.d.ts.map +1 -1
  405. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.js +3 -0
  406. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.js.map +1 -1
  407. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts +13 -2
  408. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  409. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +112 -37
  410. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  411. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  412. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +7 -33
  413. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
  414. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  415. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +103 -70
  416. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  417. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +20 -2
  418. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  419. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +97 -30
  420. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  421. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  422. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js +1 -0
  423. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  424. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  425. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +1 -1
  426. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  427. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  428. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +1 -1
  429. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  430. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  431. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +1 -1
  432. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  433. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  434. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +1 -1
  435. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  436. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  437. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +1 -1
  438. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  439. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  440. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +1 -1
  441. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  442. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.d.ts +36 -0
  443. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.d.ts.map +1 -0
  444. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js +202 -0
  445. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js.map +1 -0
  446. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +5 -4
  447. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  448. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
  449. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  450. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  451. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +72 -32
  452. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  453. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  454. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js +39 -34
  455. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
  456. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts +1 -1
  457. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts.map +1 -1
  458. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.js.map +1 -1
  459. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  460. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js +2 -2
  461. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
  462. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  463. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  464. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.js +103 -0
  465. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  466. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  467. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +7 -0
  468. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  469. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts +2 -0
  470. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
  471. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js +2 -0
  472. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
  473. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  474. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  475. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +10 -13
  476. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  477. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  478. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  479. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +20 -0
  480. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  481. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  482. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +22 -0
  483. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  484. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  485. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  486. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.js +91 -0
  487. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.js.map +1 -0
  488. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +7 -0
  489. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  490. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +101 -5
  491. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  492. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  493. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js +1 -0
  494. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  495. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  496. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +1 -0
  497. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  498. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts +6 -2
  499. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  500. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +111 -10
  501. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  502. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts +1 -0
  503. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  504. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js +78 -0
  505. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  506. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.d.ts.map +1 -1
  507. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.js +54 -22
  508. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.js.map +1 -1
  509. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.d.ts +9 -0
  510. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.d.ts.map +1 -0
  511. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.js +22 -0
  512. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.js.map +1 -0
  513. package/node_modules/@earendil-works/pi-coding-agent/docs/containerization.md +111 -0
  514. package/node_modules/@earendil-works/pi-coding-agent/docs/docs.json +8 -0
  515. package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +67 -13
  516. package/node_modules/@earendil-works/pi-coding-agent/docs/index.md +2 -0
  517. package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +4 -3
  518. package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +1 -1
  519. package/node_modules/@earendil-works/pi-coding-agent/docs/prompt-templates.md +9 -2
  520. package/node_modules/@earendil-works/pi-coding-agent/docs/providers.md +5 -0
  521. package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +1 -1
  522. package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +5 -0
  523. package/node_modules/@earendil-works/pi-coding-agent/docs/security.md +59 -0
  524. package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +15 -0
  525. package/node_modules/@earendil-works/pi-coding-agent/docs/skills.md +1 -1
  526. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +36 -2
  527. package/node_modules/@earendil-works/pi-coding-agent/docs/themes.md +1 -1
  528. package/node_modules/@earendil-works/pi-coding-agent/docs/tmux.md +4 -2
  529. package/node_modules/@earendil-works/pi-coding-agent/docs/tui.md +10 -1
  530. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +19 -2
  531. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/README.md +2 -0
  532. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-header.ts +1 -1
  533. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  534. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  535. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/index.ts +1 -1
  536. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/index.ts +531 -0
  537. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package-lock.json +185 -0
  538. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package.json +19 -0
  539. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/handoff.ts +1 -1
  540. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/interactive-shell.ts +1 -1
  541. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-qa-tests.ts +152 -81
  542. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/project-trust.ts +64 -0
  543. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/qna.ts +1 -1
  544. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/question.ts +1 -1
  545. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/questionnaire.ts +1 -1
  546. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  547. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/snake.ts +1 -1
  548. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/space-invaders.ts +1 -1
  549. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/summarize.ts +1 -1
  550. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/tic-tac-toe.ts +1 -1
  551. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/todo.ts +1 -1
  552. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/tools.ts +5 -0
  553. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  554. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -419
  555. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -8
  556. package/node_modules/@earendil-works/pi-tui/README.md +13 -1
  557. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +2 -0
  558. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  559. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  560. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
  561. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  562. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +102 -43
  563. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  564. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +2 -1
  565. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  566. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +11 -1
  567. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  568. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts +1 -1
  569. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
  570. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +2 -2
  571. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
  572. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  573. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  574. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  575. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
  576. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  577. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -77
  578. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  579. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +20 -4
  580. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  581. package/node_modules/@earendil-works/pi-tui/dist/tui.js +244 -42
  582. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  583. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +1 -0
  584. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  585. package/node_modules/@earendil-works/pi-tui/dist/utils.js +46 -15
  586. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  587. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  588. package/package.json +8 -7
  589. package/dist/forge-payload/.base-pack/commands/check-agent.md +0 -22
  590. package/dist/forge-payload/.base-pack/commands/enhance.md +0 -37
@@ -0,0 +1,33 @@
1
+ # Discovery: Stack
2
+
3
+ ## Purpose
4
+
5
+ Detect the project's programming languages, frameworks, versions, and runtime.
6
+
7
+ ## Scan Targets
8
+
9
+ | File | What It Reveals |
10
+ |------|----------------|
11
+ | `package.json` | Node.js, npm dependencies, scripts |
12
+ | `requirements.txt` / `Pipfile` / `pyproject.toml` | Python, pip dependencies |
13
+ | `go.mod` | Go, module dependencies |
14
+ | `Cargo.toml` | Rust, crate dependencies |
15
+ | `Gemfile` | Ruby, gem dependencies |
16
+ | `Dockerfile` | Runtime, base image, build steps |
17
+ | `Makefile` | Build commands, task aliases |
18
+ | `*.sln` / `*.csproj` | .NET, C# |
19
+
20
+ ## Tools
21
+
22
+ Use Glob to find these files, Read to parse them.
23
+
24
+ ## Output
25
+
26
+ Structured report:
27
+ - Primary language(s)
28
+ - Framework(s) with versions
29
+ - Frontend framework (if any)
30
+ - Database (if detectable from dependencies)
31
+ - Task queue (if any)
32
+ - Containerisation (if any)
33
+ - Runtime version constraints
@@ -0,0 +1,34 @@
1
+ # Discovery: Testing
2
+
3
+ ## Purpose
4
+
5
+ Detect the project's test framework, test commands, build commands,
6
+ and lint configuration.
7
+
8
+ ## Scan Targets
9
+
10
+ | Pattern | What It Reveals |
11
+ |---------|----------------|
12
+ | `test/` / `tests/` / `__tests__/` / `*_test.go` | Test directory structure |
13
+ | `jest.config.*` / `vitest.config.*` | JS test framework config |
14
+ | `pytest.ini` / `setup.cfg` / `pyproject.toml [tool.pytest]` | Python test config |
15
+ | `package.json scripts.test` | Test command |
16
+ | `.eslintrc*` / `ruff.toml` / `.golangci.yml` | Lint configuration |
17
+ | `.github/workflows/*.yml` | CI test/build/lint commands |
18
+ | `coverage/` / `.coveragerc` / `lcov.info` | Coverage configuration |
19
+
20
+ ## Tools
21
+
22
+ Use Glob to find config files, Read to parse them. Use Bash to verify
23
+ commands work (e.g., `npm test --help` or `pytest --co -q | head`).
24
+
25
+ ## Output
26
+
27
+ Structured report:
28
+ - Test framework(s) and version
29
+ - Test command (exact command to run tests)
30
+ - Build command (exact command to build)
31
+ - Lint command (exact command to lint)
32
+ - Syntax check command per language
33
+ - Coverage tooling (if any)
34
+ - Approximate test count
@@ -0,0 +1,171 @@
1
+ # Generation: Commands
2
+
3
+ ## Purpose
4
+
5
+ Generate standalone slash commands in `.claude/commands/forge/` that serve as
6
+ entry points to the generated workflows. The namespace is FIXED to `forge`
7
+ (CLI-first redesign): every project gets the same `/forge:*` surface, matching
8
+ what the `4ge` bootstrap vendors. Project-prefix namespaces (`/acme:*`,
9
+ `/ember:*`) are retired — they existed to avoid collisions with the Forge
10
+ *plugin's* own commands, moot now that the plugin mechanism is retired.
11
+
12
+ ## Inputs
13
+
14
+ - Generated workflows (from Phase 5) — their exact filenames and paths
15
+ - `.forge/config.json` — paths (project prefix no longer affects the command namespace)
16
+
17
+ ## Outputs
18
+
19
+ `.claude/commands/forge/` with the fixed-namespace commands:
20
+ - `new-sprint.md` → `/forge:new-sprint`
21
+ - `plan.md` → `/forge:plan {TASK_ID}`
22
+ - `review-plan.md` → `/forge:review-plan {TASK_ID}`
23
+ - `implement.md` → `/forge:implement {TASK_ID}`
24
+ - `review-code.md` → `/forge:review-code {TASK_ID}`
25
+ - `fix-bug.md` → `/forge:fix-bug {BUG_ID}`
26
+ - `plan-sprint.md` → `/forge:plan-sprint`
27
+ - `run-task.md` → `/forge:run-task {TASK_ID}`
28
+ - `run-sprint.md` → `/forge:run-sprint {SPRINT_ID} [--parallel]`
29
+ - `collate.md` → `/forge:collate [SPRINT_ID]`
30
+ - `retro.md` → `/forge:retro {SPRINT_ID}`
31
+ - `approve.md` → `/forge:approve {TASK_ID}`
32
+ - `commit.md` → `/forge:commit {TASK_ID}`
33
+ - `check-agent.md` → `/forge:check-agent $ARGUMENTS`
34
+ - `enhance.md` → `/forge:enhance $ARGUMENTS`
35
+ - `validate.md` → `/forge:validate {TASK_ID}`
36
+
37
+ ## Instructions
38
+
39
+ **Scope boundary:** Only ever read, write, or delete files in the explicit output list above (16 files).
40
+ Never touch any other file in `.claude/commands/` — custom commands, project-specific
41
+ wrappers, and unrecognised files must be left completely untouched.
42
+
43
+ **Pre-generation check (idempotency):** For each command file listed above, before writing:
44
+ 1. Check first whether the file exists at the **flat path** `.claude/commands/{filename}.md`
45
+ (old non-namespaced location). If it does, treat it as non-conformant — overwrite into
46
+ the namespaced path and log: `Replaced flat command (now namespaced): <filename>`.
47
+ 2. If the file does not exist at either path — write it fresh to the namespaced path.
48
+ 3. If the file exists at the namespaced path `.claude/commands/forge/{filename}.md` — read it
49
+ and extract the workflow path it references (the `.forge/workflows/` path).
50
+ - If it does NOT reference `.forge/workflows/` — overwrite and log: `Replaced stale command: <filename>`.
51
+ - If it references `.forge/workflows/` but that workflow file **does not exist on disk** — overwrite and log: `Replaced command pointing to missing workflow: <filename>`.
52
+ - If it references `.forge/workflows/` and the workflow file exists — check whether the file matches the template format. If it is missing `effort:` frontmatter, contains `model:` frontmatter, contains a MASTER_INDEX read line, or uses old workflow naming (`engineer_*`, `supervisor_*`) — overwrite and log: `Replaced non-conformant command: <filename>`.
53
+ - **wfl: dispatch rung (scoped to three filenames only):** If the filename is one of `run-task.md`, `run-sprint.md`, or `fix-bug.md` — and the file body contains `Read .forge/workflows/` — it is non-conformant (it should use `wfl:` dispatch instead). Overwrite it with the `workflow('wfl:run-task'|'wfl:run-sprint'|'wfl:fix-bug', $ARGUMENTS)` body and log: `Replaced non-conformant command: <filename>`. Do NOT apply this rung to any other command — the other 13 commands legitimately use `Read .forge/workflows/` and must not be flagged.
54
+ - If it matches the template format and the workflow exists — skip it (already up to date).
55
+
56
+ This ensures any workflow that has been renamed or replaced causes its command wrapper to be regenerated rather than silently left pointing at a missing file.
57
+
58
+ Each command file MUST follow this exact template — no variations, no additions:
59
+
60
+ ```markdown
61
+ ---
62
+ description: {{description}}
63
+ effort: {{effort}}
64
+ ---
65
+ Read `.forge/workflows/{{workflow}}.md` and follow it exactly.
66
+ {{argument_line}}
67
+ <!-- AUTO-GENERATED by /forge:init -->
68
+ ```
69
+
70
+ Where:
71
+ - `{{description}}` — from the descriptions table below (fixed, not model-generated)
72
+ - `{{effort}}` — from the effort table below (fixed mapping, not model choice)
73
+ - `{{workflow}}` — the exact filename of the generated workflow (no path prefix, no `engineer_`/`supervisor_` role prefix)
74
+ - `{{argument_line}}` — one of: `Task ID: $ARGUMENTS`, `Sprint ID: $ARGUMENTS`, `Bug ID: $ARGUMENTS`, or `Arguments: $ARGUMENTS`
75
+
76
+ **Do NOT deviate from this template.** Specifically:
77
+ - Do NOT include a `Read {KB_PATH}/MASTER_INDEX.md` line. The workflow loads MASTER_INDEX as its first step — pre-loading it gives the model enough context to rationalise skipping the workflow entirely and doing the work inline. Workflow first, always.
78
+ - Do NOT include `model:` frontmatter (use `effort:` instead — model-agnostic).
79
+ - Do NOT add numbered step lists, explanations, or any content beyond the template.
80
+ - Do NOT add a `Also read` line for any file — the workflow controls all context loading.
81
+
82
+ **Per-command descriptions** (fixed, not model-generated):
83
+
84
+ | Command | description |
85
+ |---|---|
86
+ | `plan.md` | Design and document the implementation plan for a task |
87
+ | `review-plan.md` | Architectural review of a task implementation plan |
88
+ | `implement.md` | Execute the approved implementation plan for a task |
89
+ | `review-code.md` | Code quality review of a completed task implementation |
90
+ | `fix-bug.md` | Triage, diagnose, and fix a bug |
91
+ | `approve.md` | Final architect approval gate for a completed task |
92
+ | `commit.md` | Stage and commit completed task artifacts |
93
+ | `run-task.md` | Orchestrate the full plan→implement→review→approve pipeline for a task |
94
+ | `run-sprint.md` | Execute all tasks in a sprint (sequential or parallel) |
95
+ | `new-sprint.md` | Elicit and structure requirements for a new sprint |
96
+ | `plan-sprint.md` | Decompose sprint requirements into tasks with dependencies |
97
+ | `collate.md` | Regenerate KB documents from the JSON store |
98
+ | `retro.md` | Produce sprint retrospective and lessons-learned document |
99
+ | `check-agent.md` | Verify an agent has read and understood the project KB before high-stakes tasks |
100
+ | `enhance.md` | Progressive project-specific enrichment of structural elements |
101
+ | `validate.md` | Validate that a task implementation satisfies acceptance criteria |
102
+
103
+ **Effort levels** — use `effort:` frontmatter (capability request, model-agnostic):
104
+
105
+ | Command | effort | Rationale |
106
+ |---|---|---|
107
+ | `review-plan.md` | `max` | Architectural gate — needs deepest reasoning |
108
+ | `review-code.md` | `max` | Quality gate — needs deepest reasoning |
109
+ | `approve.md` | `max` | Final approval gate |
110
+ | `plan.md` | `high` | Design work with broad codebase context |
111
+ | `implement.md` | `high` | Non-trivial code generation |
112
+ | `fix-bug.md` | `high` | Diagnosis + fix |
113
+ | `plan-sprint.md` | `high` | Decomposition and dependency analysis |
114
+ | `run-task.md` | `high` | Full task orchestration |
115
+ | `run-sprint.md` | `high` | Multi-task orchestration |
116
+ | `new-sprint.md` | `high` | Structured requirements elicitation |
117
+ | `retro.md` | `medium` | Reflection and summary |
118
+ | `collate.md` | `low` | Mechanical markdown regeneration |
119
+ | `commit.md` | `low` | Staging and committing completed work |
120
+ | `check-agent.md` | `medium` | Short factual quiz — moderate reasoning, no deep codebase traversal |
121
+ | `enhance.md` | `high` | Enhancement agent — broad structural enrichment |
122
+ | `validate.md` | `max` | Validation gate — needs deepest reasoning |
123
+
124
+ Do **not** include `model:` frontmatter — that directive pins a specific model and is
125
+ not appropriate for user command files.
126
+
127
+ After writing each command file, record it in the generation manifest:
128
+ ```sh
129
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record {paths.commands}/forge/{filename}.md
130
+ ```
131
+
132
+ (`FORGE_ROOT` is available from the parent init flow; tool invocations use `$FORGE_ROOT/tools/` throughout.)
133
+
134
+ ## Post-generation: flat-file cleanup
135
+
136
+ After all 16 command files have been written and recorded, scan for pre-v0.13.0
137
+ flat command files that were never namespaced. These are the **13 known flat filenames**:
138
+
139
+ ```
140
+ new-sprint.md plan-sprint.md run-task.md run-sprint.md plan.md
141
+ review-plan.md implement.md review-code.md fix-bug.md approve.md
142
+ commit.md collate.md retro.md
143
+ ```
144
+
145
+ Check for each at `.claude/commands/{filename}.md` (the flat path, NOT the namespaced
146
+ subdirectory).
147
+
148
+ **Logic:**
149
+
150
+ - If **none** of the 13 files exist at the flat path — skip silently. No prompt.
151
+
152
+ - If **one or more** exist, display the list:
153
+ ```
154
+ Found pre-v0.13.0 flat command files that are no longer used:
155
+ .claude/commands/plan.md
156
+ .claude/commands/implement.md
157
+ ... (list each found file)
158
+
159
+ These have been replaced by namespaced commands under .claude/commands/forge/.
160
+ Remove them now? (yes / skip)
161
+ ```
162
+
163
+ - **On `yes`:** Delete each found file. For each deletion, print:
164
+ `Removed: .claude/commands/{filename}.md`
165
+ When done: `Flat command cleanup complete.`
166
+
167
+ - **On `skip`:** Print:
168
+ `Skipped. Remember to delete these files manually to avoid command name collisions.`
169
+
170
+ **Do NOT delete any file that is not in the 13-filename list above.** Custom commands,
171
+ project-specific wrappers, and unrecognised files are strictly off-limits.
@@ -0,0 +1,60 @@
1
+ # Knowledge Base Doc Generation — Per-Subagent Instructions
2
+
3
+ You are generating **ONE** knowledge base document. You have been given:
4
+
5
+ 1. A **discovery context** — the raw findings from Phase 1 discovery scans,
6
+ passed inline in your prompt
7
+ 2. A **doc spec** — which file to write and what it should contain
8
+ 3. A **project brief** (`.forge/init-context.md`) — for names and paths
9
+
10
+ Your job is to produce exactly one file and return a one-line status.
11
+
12
+ ---
13
+
14
+ ## Rules
15
+
16
+ 1. **Write EXACTLY ONE file** at the path specified in your doc spec.
17
+
18
+ 2. **Confidence header** — every generated doc must open with:
19
+ ```
20
+ <!-- AUTO-GENERATED by /forge:init — confidence: N% -->
21
+ ```
22
+ Set N% based on how much evidence the discovery context provided:
23
+ - 90–100%: directly observed in code/config
24
+ - 70–89%: inferred from conventions or partial evidence
25
+ - below 70%: limited evidence, many `[?]` markers expected
26
+
27
+ 3. **Uncertainty markers** — any fact not directly observed in the discovery
28
+ context must be marked with `[?]`. Do not invent values.
29
+
30
+ 4. **Entity names** — use entity names exactly as they appear in the brief's
31
+ `## Domain Entities` section. Do not rename or abbreviate.
32
+
33
+ 5. **Scope discipline** — generate only what the doc spec prescribes.
34
+ Do not add sections not listed in the spec. Do not cross-reference
35
+ other KB docs that do not yet exist.
36
+
37
+ 6. **`architecture/INDEX.md` and `business-domain/INDEX.md`** — if your
38
+ assigned doc is an INDEX file, link only to docs that exist on disk at
39
+ the time you write. Do not anticipate files that may not have been written.
40
+
41
+ ---
42
+
43
+ ## Self-check (mandatory last step)
44
+
45
+ After writing the file, verify before returning:
46
+
47
+ 1. Read back the written file
48
+ 2. Confirm the confidence header is present on the first line
49
+ 3. Confirm no `{placeholder}` tokens remain
50
+ 4. Record in the manifest:
51
+ ```sh
52
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record "{output_path}"
53
+ ```
54
+ (If generation-manifest.cjs is not yet installed, skip silently.)
55
+
56
+ 5. Return **exactly one line**:
57
+ - `done: <first 80 chars of the written file>` — on success
58
+ - `FAILED: <reason>` — if any step above failed or the file could not be written
59
+
60
+ Do not output anything else after the status line.
@@ -0,0 +1,73 @@
1
+ # Persona Generation — Per-Subagent Instructions
2
+
3
+ You are generating **ONE** persona file. You have been given two inputs:
4
+
5
+ 1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
6
+ paths, command values, and installed-skill wiring
7
+ 2. A **meta-persona source** — the role definition and Generation Instructions
8
+
9
+ Your job is to produce exactly one file and return a one-line status.
10
+
11
+ ---
12
+
13
+ ## Inputs
14
+
15
+ Read these two sources before writing anything:
16
+
17
+ - `$FORGE_ROOT/meta/personas/{meta}` — the meta-persona for your assigned role
18
+ - `.forge/init-context.md` — the project brief (passed inline in your prompt)
19
+
20
+ ---
21
+
22
+ ## Rules
23
+
24
+ 1. **Write EXACTLY ONE file:** `.forge/personas/{role}.md`
25
+
26
+ 2. **Opening line** — the first non-blank line must be the persona's symbol
27
+ (emoji from the meta-persona's `## Symbol` section) followed by a brief
28
+ first-person announcement in this exact format:
29
+ ```
30
+ {symbol} **{Project} {Role Name}** — {quiet first-person voice, present-tense}
31
+ ```
32
+ Do not use `symbol:` YAML frontmatter. The symbol must appear as the first
33
+ non-blank line of the file.
34
+
35
+ 3. **Project substitution** — replace every `{Project}` placeholder with the
36
+ project name from the brief's `## Commands` / `## Paths` header line.
37
+ All entity names, architecture doc names, persona names, and command values
38
+ MUST come from the brief. Do not invent values.
39
+
40
+ 4. **Stack wiring** — substitute actual commands from the brief's `## Commands`
41
+ section wherever the meta-persona references test/build/lint/syntax-check.
42
+
43
+ 5. **Skill invocation wiring** — read `## Installed Skill Wiring` from the
44
+ brief. For each skill that maps to this persona's role, add an explicit
45
+ YOU MUST directive. Follow the wiring pattern in the meta-persona's
46
+ Generation Instructions exactly.
47
+
48
+ 6. **Follow Generation Instructions** — each meta-persona has a
49
+ `## Generation Instructions` section (or equivalent). Follow it fully.
50
+ Do not add sections, steps, or notes beyond what it prescribes.
51
+
52
+ ---
53
+
54
+ ## Self-check (mandatory last step)
55
+
56
+ After writing the file, verify before returning:
57
+
58
+ 1. Read back `.forge/personas/{role}.md`
59
+ 2. Confirm the **first non-blank line** starts with the persona's symbol emoji
60
+ 3. Confirm **no unsubstituted `{Project}` placeholders** remain
61
+ 4. Confirm **no literal `{TEST_COMMAND}`, `{BUILD_COMMAND}`, `{SYNTAX_CHECK}`,
62
+ or `{LINT_COMMAND}`** remain
63
+ 5. Record in the manifest:
64
+ ```sh
65
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/personas/{role}.md"
66
+ ```
67
+ (If generation-manifest.cjs is not yet installed, skip silently.)
68
+
69
+ 6. Return **exactly one line**:
70
+ - `done: <first 80 chars of the written file>` — on success
71
+ - `FAILED: <reason>` — if any step above failed or the file could not be written
72
+
73
+ Do not output anything else after the status line.
@@ -0,0 +1,66 @@
1
+ # Skill Generation — Per-Subagent Instructions
2
+
3
+ You are generating **ONE** skill file. You have been given two inputs:
4
+
5
+ 1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
6
+ paths, command values, and installed-skill wiring
7
+ 2. A **meta-skill source** — the role's universal capability set and Generation Instructions
8
+
9
+ Your job is to produce exactly one file and return a one-line status.
10
+
11
+ ---
12
+
13
+ ## Inputs
14
+
15
+ Read these two sources before writing anything:
16
+
17
+ - `$FORGE_ROOT/meta/skills/{meta}` — the meta-skill for your assigned role
18
+ - `.forge/init-context.md` — the project brief (passed inline in your prompt)
19
+
20
+ ---
21
+
22
+ ## Rules
23
+
24
+ 1. **Write EXACTLY ONE file:** `.forge/skills/{role}-skills.md`
25
+
26
+ 2. **Project interpolation** — replace every generic placeholder with the
27
+ project's actual tools, libraries, paths, and conventions from the brief.
28
+ All entity names, stack names, and command values MUST come from the brief.
29
+ Do not invent values.
30
+
31
+ 3. **Stack specificity** — replace abstract references (e.g. "your test runner",
32
+ "your ORM") with the actual tools discovered for this project. Substitute
33
+ actual command values from the brief's `## Commands` section.
34
+
35
+ 4. **Installed skill integration** — read `## Installed Skill Wiring` from the
36
+ brief. For each skill that maps to this role, add an explicit reference
37
+ explaining how the persona should combine the marketplace skill with this
38
+ project-specific skill set.
39
+
40
+ 5. **Follow Generation Instructions** — each meta-skill has a
41
+ `## Generation Instructions` section. Follow it fully. Do not add sections,
42
+ steps, or notes beyond what it prescribes.
43
+
44
+ 6. **No free-form additions** — produce only the sections the meta-skill defines.
45
+
46
+ ---
47
+
48
+ ## Self-check (mandatory last step)
49
+
50
+ After writing the file, verify before returning:
51
+
52
+ 1. Read back `.forge/skills/{role}-skills.md`
53
+ 2. Confirm **no unsubstituted placeholders** remain
54
+ 3. Confirm **no abstract project references** remain (e.g. "your framework",
55
+ "your ORM" — these must be replaced with the actual project values)
56
+ 4. Record in the manifest:
57
+ ```sh
58
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/skills/{role}-skills.md"
59
+ ```
60
+ (If generation-manifest.cjs is not yet installed, skip silently.)
61
+
62
+ 5. Return **exactly one line**:
63
+ - `done: <first 80 chars of the written file>` — on success
64
+ - `FAILED: <reason>` — if any step above failed or the file could not be written
65
+
66
+ Do not output anything else after the status line.
@@ -0,0 +1,60 @@
1
+ # Template Generation — Per-Subagent Instructions
2
+
3
+ You are generating **ONE** template file. You have been given two inputs:
4
+
5
+ 1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
6
+ paths, command values, and entity names
7
+ 2. A **meta-template source** — the document structure and Generation Instructions
8
+
9
+ Your job is to produce exactly one file and return a one-line status.
10
+
11
+ ---
12
+
13
+ ## Inputs
14
+
15
+ Read these two sources before writing anything:
16
+
17
+ - `$FORGE_ROOT/meta/templates/{meta}` — the meta-template for your assigned document
18
+ - `.forge/init-context.md` — the project brief (passed inline in your prompt)
19
+
20
+ ---
21
+
22
+ ## Rules
23
+
24
+ 1. **Write EXACTLY ONE file:** `.forge/templates/{filename}.md`
25
+
26
+ 2. **Stack-specific sections** — add framework-specific subsections based on the
27
+ stack information in the brief. Use the detected languages and frameworks to
28
+ decide which optional sections to include.
29
+
30
+ 3. **Project substitution** — replace all `{Project}`, `{PREFIX}`, entity name
31
+ placeholders, and ID format examples with actual values from the brief.
32
+ All entity names and command values MUST come from the brief. Do not invent.
33
+
34
+ 4. **Test output formats** — reference the project's actual test runner output
35
+ format in any template sections that involve test results.
36
+
37
+ 5. **Follow Generation Instructions** — each meta-template has a
38
+ `## Generation Instructions` section. Follow it fully. Do not add sections
39
+ or notes beyond what it prescribes.
40
+
41
+ ---
42
+
43
+ ## Self-check (mandatory last step)
44
+
45
+ After writing the file, verify before returning:
46
+
47
+ 1. Read back `.forge/templates/{filename}.md`
48
+ 2. Confirm **no unsubstituted placeholders** remain (no literal `{Project}`,
49
+ `{PREFIX}`, `{TEST_COMMAND}`, etc.)
50
+ 3. Record in the manifest:
51
+ ```sh
52
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/templates/{filename}.md"
53
+ ```
54
+ (If generation-manifest.cjs is not yet installed, skip silently.)
55
+
56
+ 4. Return **exactly one line**:
57
+ - `done: <first 80 chars of the written file>` — on success
58
+ - `FAILED: <reason>` — if any step above failed or the file could not be written
59
+
60
+ Do not output anything else after the status line.
@@ -0,0 +1,133 @@
1
+ # Generation: Tools
2
+
3
+ ## Purpose
4
+
5
+ Vendor the plugin tools closure and validation schemas into the project so
6
+ generated workflows can invoke tools via `node .forge/tools/<tool>.cjs` from
7
+ the project root without resolving `$FORGE_ROOT` at runtime.
8
+
9
+ Store validation schemas are loaded at runtime from `.forge/schemas/`
10
+ (project-installed), `forge/schemas/` (in-tree fallback), or
11
+ `$FORGE_ROOT/schemas/` (plugin-installed fallback). During init, schemas
12
+ are copied to `.forge/schemas/` so that validation works without relying
13
+ on fallback paths.
14
+
15
+ ## Inputs
16
+
17
+ - `.forge/config.json` — target paths
18
+
19
+ ## Outputs
20
+
21
+ - `.forge/tools/` — vendored plugin tools closure
22
+ - `.forge/tools/.forge-tools-version` — version marker for `/forge:health` staleness check
23
+ - `.forge/schemas/` — JSON Schema copies from the installed plugin
24
+
25
+ ## Instructions
26
+
27
+ Read `.forge/config.json` for:
28
+ - `paths.store` (default: `.forge/store`)
29
+
30
+ ### Step 1 — Copy validation schemas
31
+
32
+ Copy all JSON Schema files from the installed plugin to the project:
33
+
34
+ ```sh
35
+ mkdir -p .forge/schemas
36
+ cp "$FORGE_ROOT/schemas/"*.schema.json .forge/schemas/
37
+ ```
38
+
39
+ This ensures `store-cli.cjs` and `validate-store.cjs` can validate records
40
+ using the full schema (not the minimal fallback) even when the project is
41
+ not inside the Forge source tree.
42
+
43
+ ### Step 2 — Vendor plugin tools
44
+
45
+ Copy the plugin tools closure into the project's `.forge/tools/` so that
46
+ generated artifacts can invoke `node .forge/tools/<tool>.cjs` from the
47
+ project root without resolving `$FORGE_ROOT`:
48
+
49
+ Copy BOTH `.cjs` and `.js` files. Some tools require `.js` helpers at load
50
+ time — e.g. `store-cli.cjs` does a top-level `require('./lib/validate.js')`
51
+ and `collate.cjs` requires `./lib/result.js` — so a `.cjs`-only copy leaves
52
+ `store-cli.cjs` dead-on-arrival and breaks KB collation. `-maxdepth 1`
53
+ excludes the `__tests__/` subtree without copying any `*.test.*` files.
54
+
55
+ ```sh
56
+ mkdir -p .forge/tools/lib
57
+
58
+ # Copy top-level tool files (.cjs and .js — e.g. list-skills.js)
59
+ find "$FORGE_ROOT/tools" -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \) \
60
+ -exec cp {} .forge/tools/ \;
61
+
62
+ # Copy lib/ helper files (.cjs and .js — e.g. result.js, validate.js)
63
+ find "$FORGE_ROOT/tools/lib" -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \) \
64
+ -exec cp {} .forge/tools/lib/ \;
65
+ ```
66
+
67
+ After copying, record each vendored file in the generation manifest so that
68
+ `/forge:health` can detect modifications or stale copies:
69
+
70
+ ```sh
71
+ for f in $(find .forge/tools .forge/tools/lib -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \)); do
72
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record "$f"
73
+ done
74
+ ```
75
+
76
+ ### Step 2b — Write version marker
77
+
78
+ After the tool copy loop, write the version marker so `/forge:health` can
79
+ detect whether the vendored tools are stale relative to the active plugin:
80
+
81
+ ```sh
82
+ ACTIVE_VERSION=$(node -e "console.log(require('$FORGE_ROOT/.claude-plugin/plugin.json').version)")
83
+ node -e "
84
+ const fs = require('fs');
85
+ fs.writeFileSync('.forge/tools/.forge-tools-version', JSON.stringify({ version: '${ACTIVE_VERSION}' }) + '\n');
86
+ "
87
+ ```
88
+
89
+ ### Step 3 — Verify
90
+
91
+ ```sh
92
+ node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run
93
+ ```
94
+
95
+ If it exits non-zero, report the error. Do not proceed to Phase 9 until this passes.
96
+
97
+ ### Step 4 — Register the Forge root
98
+
99
+ Write the project-relative Forge root into config. In the CLI-first vendored
100
+ world the `.forge/` directory IS the Forge root (tools, schemas, hooks, init,
101
+ meta are all vendored there) — NEVER write an absolute path (plugin cache,
102
+ npm global payload, …): absolute paths break on version upgrades, nvm/node
103
+ switches, and machine moves.
104
+
105
+ ```sh
106
+ node .forge/tools/manage-config.cjs set paths.forgeRoot '".forge"'
107
+ ```
108
+
109
+ ### Step 5 — Record hashes
110
+
111
+ Record all generated artifacts in the generation manifest so health checks
112
+ can detect later modifications:
113
+
114
+ ```sh
115
+ for f in .forge/schemas/*.schema.json; do
116
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record "$f"
117
+ done
118
+ node "$FORGE_ROOT/tools/generation-manifest.cjs" record .forge/config.json
119
+ ```
120
+
121
+ ## Notes
122
+
123
+ - `/forge:update` automatically refreshes schemas and re-vendors tools as part
124
+ of its normal flow — run it after upgrades to pick up any changed tools or
125
+ schema updates from the new version.
126
+ - Generated workflow files invoke tools using the vendored project-relative path:
127
+ ```
128
+ node .forge/tools/<tool>.cjs
129
+ ```
130
+ This works from the project root without resolving `$FORGE_ROOT` at runtime.
131
+ - `paths.forgeRef` in config records the plugin version the project was generated
132
+ against. `forge-preflight.cjs` uses it to resolve the plugin root via cache
133
+ lookup when runtime telemetry requires the original plugin path.