@entelligentsia/forgecli 0.11.3 → 0.19.0

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 (1099) hide show
  1. package/CHANGELOG.md +380 -0
  2. package/README.md +2 -1
  3. package/dist/CHANGELOG-forge-plugin.md +183 -0
  4. package/dist/CHANGELOG-pi.md +55 -0
  5. package/dist/bin/argv.d.ts +2 -0
  6. package/dist/bin/argv.js +3 -1
  7. package/dist/bin/argv.js.map +1 -1
  8. package/dist/bin/config.d.ts +5 -0
  9. package/dist/bin/config.js +25 -4
  10. package/dist/bin/config.js.map +1 -1
  11. package/dist/bin/forge.js +12 -37
  12. package/dist/bin/forge.js.map +1 -1
  13. package/dist/bin/shared-parser.d.ts +23 -0
  14. package/dist/bin/shared-parser.js +12 -0
  15. package/dist/bin/shared-parser.js.map +1 -0
  16. package/dist/bin/update-cli.js +5 -0
  17. package/dist/bin/update-cli.js.map +1 -1
  18. package/dist/extensions/forgecli/approve.d.ts +4 -6
  19. package/dist/extensions/forgecli/approve.js +8 -73
  20. package/dist/extensions/forgecli/approve.js.map +1 -1
  21. package/dist/extensions/forgecli/audience-gate.d.ts +1 -1
  22. package/dist/extensions/forgecli/calibrate.d.ts +4 -1
  23. package/dist/extensions/forgecli/calibrate.js +4 -12
  24. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  25. package/dist/extensions/forgecli/collate.d.ts +4 -6
  26. package/dist/extensions/forgecli/collate.js +8 -73
  27. package/dist/extensions/forgecli/collate.js.map +1 -1
  28. package/dist/extensions/forgecli/commit.d.ts +4 -6
  29. package/dist/extensions/forgecli/commit.js +8 -73
  30. package/dist/extensions/forgecli/commit.js.map +1 -1
  31. package/dist/extensions/forgecli/config-layer.d.ts +15 -0
  32. package/dist/extensions/forgecli/config-layer.js.map +1 -1
  33. package/dist/extensions/forgecli/config-tui/handler.js +1 -0
  34. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
  35. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +8 -1
  36. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -1
  37. package/dist/extensions/forgecli/config-tui/state/init.js +1 -0
  38. package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -1
  39. package/dist/extensions/forgecli/config-tui/state/model.d.ts +4 -0
  40. package/dist/extensions/forgecli/enhance.d.ts +4 -6
  41. package/dist/extensions/forgecli/enhance.js +9 -74
  42. package/dist/extensions/forgecli/enhance.js.map +1 -1
  43. package/dist/extensions/forgecli/fix-bug.d.ts +3 -0
  44. package/dist/extensions/forgecli/fix-bug.js +58 -46
  45. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  46. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +2 -0
  47. package/dist/extensions/forgecli/forge-artifact-tool.js +185 -0
  48. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -0
  49. package/dist/extensions/forgecli/forge-cli-schema.json +19 -0
  50. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +72 -0
  51. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +350 -0
  52. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +1 -0
  53. package/dist/extensions/forgecli/forge-init/phase4-register.d.ts +20 -0
  54. package/dist/extensions/forgecli/forge-init/phase4-register.js +353 -0
  55. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -0
  56. package/dist/extensions/forgecli/forge-init/prompts.d.ts +10 -0
  57. package/dist/extensions/forgecli/forge-init/prompts.js +91 -0
  58. package/dist/extensions/forgecli/forge-init/prompts.js.map +1 -0
  59. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +20 -0
  60. package/dist/extensions/forgecli/forge-init/verifiers.js +81 -0
  61. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -0
  62. package/dist/extensions/forgecli/forge-init.js +106 -748
  63. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  64. package/dist/extensions/forgecli/forge-root.d.ts +0 -1
  65. package/dist/extensions/forgecli/forge-root.js +1 -11
  66. package/dist/extensions/forgecli/forge-root.js.map +1 -1
  67. package/dist/extensions/forgecli/forge-subagent.d.ts +11 -1
  68. package/dist/extensions/forgecli/forge-subagent.js +6 -1
  69. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  70. package/dist/extensions/forgecli/forge-tools.d.ts +27 -7
  71. package/dist/extensions/forgecli/forge-tools.js +183 -64
  72. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  73. package/dist/extensions/forgecli/forge-update-command.js +29 -18
  74. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  75. package/dist/extensions/forgecli/friction-emit.d.ts +99 -0
  76. package/dist/extensions/forgecli/friction-emit.js +247 -0
  77. package/dist/extensions/forgecli/friction-emit.js.map +1 -0
  78. package/dist/extensions/forgecli/health-check.js +1 -1
  79. package/dist/extensions/forgecli/health-check.js.map +1 -1
  80. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -0
  81. package/dist/extensions/forgecli/hook-dispatcher.js +25 -0
  82. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  83. package/dist/extensions/forgecli/hooks/post-init-hook.js +1 -1
  84. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +1 -1
  85. package/dist/extensions/forgecli/hooks/write-guard.js +1 -1
  86. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
  87. package/dist/extensions/forgecli/implement.d.ts +4 -6
  88. package/dist/extensions/forgecli/implement.js +8 -73
  89. package/dist/extensions/forgecli/implement.js.map +1 -1
  90. package/dist/extensions/forgecli/index.js +27 -26
  91. package/dist/extensions/forgecli/index.js.map +1 -1
  92. package/dist/extensions/forgecli/lib/catalog-helpers.d.ts +13 -0
  93. package/dist/extensions/forgecli/lib/catalog-helpers.js +51 -0
  94. package/dist/extensions/forgecli/lib/catalog-helpers.js.map +1 -0
  95. package/dist/extensions/forgecli/lib/catalog-loader.d.ts +46 -0
  96. package/dist/extensions/forgecli/lib/catalog-loader.js +176 -0
  97. package/dist/extensions/forgecli/lib/catalog-loader.js.map +1 -0
  98. package/dist/extensions/forgecli/lib/catalog-types.d.ts +16 -0
  99. package/dist/extensions/forgecli/lib/catalog-types.js +161 -0
  100. package/dist/extensions/forgecli/lib/catalog-types.js.map +1 -0
  101. package/dist/extensions/forgecli/lib/exec-helpers.d.ts +25 -0
  102. package/dist/extensions/forgecli/lib/exec-helpers.js +52 -0
  103. package/dist/extensions/forgecli/lib/exec-helpers.js.map +1 -0
  104. package/dist/extensions/forgecli/lib/forge-config.d.ts +20 -0
  105. package/dist/extensions/forgecli/lib/forge-config.js +43 -0
  106. package/dist/extensions/forgecli/lib/forge-config.js.map +1 -0
  107. package/dist/extensions/forgecli/lib/frontmatter-parser.d.ts +13 -0
  108. package/dist/extensions/forgecli/lib/frontmatter-parser.js +56 -0
  109. package/dist/extensions/forgecli/lib/frontmatter-parser.js.map +1 -0
  110. package/dist/extensions/forgecli/lib/manifest-checker.d.ts +22 -0
  111. package/dist/extensions/forgecli/lib/manifest-checker.js +64 -0
  112. package/dist/extensions/forgecli/lib/manifest-checker.js.map +1 -0
  113. package/dist/extensions/forgecli/lib/orchestrator-preflight.d.ts +46 -0
  114. package/dist/extensions/forgecli/lib/orchestrator-preflight.js +64 -0
  115. package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -0
  116. package/dist/extensions/forgecli/lib/orchestrator-types.d.ts +20 -0
  117. package/dist/extensions/forgecli/lib/orchestrator-types.js +14 -0
  118. package/dist/extensions/forgecli/lib/orchestrator-types.js.map +1 -0
  119. package/dist/extensions/forgecli/lib/parsers.d.ts +25 -0
  120. package/dist/extensions/forgecli/lib/parsers.js +164 -0
  121. package/dist/extensions/forgecli/lib/parsers.js.map +1 -0
  122. package/dist/extensions/forgecli/lib/shared-fs-utils.d.ts +12 -0
  123. package/dist/extensions/forgecli/lib/shared-fs-utils.js +37 -0
  124. package/dist/extensions/forgecli/lib/shared-fs-utils.js.map +1 -0
  125. package/dist/extensions/forgecli/lib/spawn-store-cli.d.ts +44 -0
  126. package/dist/extensions/forgecli/lib/spawn-store-cli.js +93 -0
  127. package/dist/extensions/forgecli/lib/spawn-store-cli.js.map +1 -0
  128. package/dist/extensions/forgecli/lib/state-helpers.d.ts +33 -0
  129. package/dist/extensions/forgecli/lib/state-helpers.js +69 -0
  130. package/dist/extensions/forgecli/lib/state-helpers.js.map +1 -0
  131. package/dist/extensions/forgecli/lib/store-cli-timeouts.d.ts +4 -0
  132. package/dist/extensions/forgecli/lib/store-cli-timeouts.js +10 -0
  133. package/dist/extensions/forgecli/lib/store-cli-timeouts.js.map +1 -0
  134. package/dist/extensions/forgecli/lib/versions.d.ts +56 -0
  135. package/dist/extensions/forgecli/lib/versions.js +116 -0
  136. package/dist/extensions/forgecli/lib/versions.js.map +1 -0
  137. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  138. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  139. package/dist/extensions/forgecli/migration-engine.d.ts +6 -0
  140. package/dist/extensions/forgecli/migration-engine.js +59 -39
  141. package/dist/extensions/forgecli/migration-engine.js.map +1 -1
  142. package/dist/extensions/forgecli/parsers/persona-skill-loader.d.ts +45 -0
  143. package/dist/extensions/forgecli/parsers/persona-skill-loader.js +201 -0
  144. package/dist/extensions/forgecli/parsers/persona-skill-loader.js.map +1 -0
  145. package/dist/extensions/forgecli/parsers/workflow-loader.d.ts +41 -0
  146. package/dist/extensions/forgecli/parsers/workflow-loader.js +87 -0
  147. package/dist/extensions/forgecli/parsers/workflow-loader.js.map +1 -0
  148. package/dist/extensions/forgecli/plan.d.ts +4 -6
  149. package/dist/extensions/forgecli/plan.js +9 -73
  150. package/dist/extensions/forgecli/plan.js.map +1 -1
  151. package/dist/extensions/forgecli/regenerate.d.ts +22 -0
  152. package/dist/extensions/forgecli/regenerate.js +133 -3
  153. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  154. package/dist/extensions/forgecli/retrospective.d.ts +2 -1
  155. package/dist/extensions/forgecli/retrospective.js +6 -36
  156. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  157. package/dist/extensions/forgecli/review-code.d.ts +4 -6
  158. package/dist/extensions/forgecli/review-code.js +8 -73
  159. package/dist/extensions/forgecli/review-code.js.map +1 -1
  160. package/dist/extensions/forgecli/review-plan.d.ts +4 -6
  161. package/dist/extensions/forgecli/review-plan.js +8 -73
  162. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  163. package/dist/extensions/forgecli/run-sprint.d.ts +2 -0
  164. package/dist/extensions/forgecli/run-sprint.js +53 -52
  165. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  166. package/dist/extensions/forgecli/run-task.d.ts +3 -0
  167. package/dist/extensions/forgecli/run-task.js +39 -68
  168. package/dist/extensions/forgecli/run-task.js.map +1 -1
  169. package/dist/extensions/forgecli/skill-curation-flag.d.ts +21 -0
  170. package/dist/extensions/forgecli/skill-curation-flag.js +71 -0
  171. package/dist/extensions/forgecli/skill-curation-flag.js.map +1 -0
  172. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +101 -0
  173. package/dist/extensions/forgecli/skill-curator-subagent.js +342 -0
  174. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -0
  175. package/dist/extensions/forgecli/skill-retriever.d.ts +84 -0
  176. package/dist/extensions/forgecli/skill-retriever.js +246 -0
  177. package/dist/extensions/forgecli/skill-retriever.js.map +1 -0
  178. package/dist/extensions/forgecli/skill-usage-tracker.d.ts +91 -0
  179. package/dist/extensions/forgecli/skill-usage-tracker.js +224 -0
  180. package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -0
  181. package/dist/extensions/forgecli/store-error-remediation.d.ts +65 -0
  182. package/dist/extensions/forgecli/store-error-remediation.js +299 -0
  183. package/dist/extensions/forgecli/store-error-remediation.js.map +1 -0
  184. package/dist/extensions/forgecli/store-resolver.js +3 -12
  185. package/dist/extensions/forgecli/store-resolver.js.map +1 -1
  186. package/dist/extensions/forgecli/store-validator.js +6 -11
  187. package/dist/extensions/forgecli/store-validator.js.map +1 -1
  188. package/dist/extensions/forgecli/subagent/agents.d.ts +4 -0
  189. package/dist/extensions/forgecli/subagent/agents.js +5 -8
  190. package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
  191. package/dist/extensions/forgecli/transition-guard.js +20 -61
  192. package/dist/extensions/forgecli/transition-guard.js.map +1 -1
  193. package/dist/extensions/forgecli/validate.d.ts +4 -6
  194. package/dist/extensions/forgecli/validate.js +8 -73
  195. package/dist/extensions/forgecli/validate.js.map +1 -1
  196. package/dist/extensions/forgecli/wf-engine/engine.js +2 -2
  197. package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
  198. package/dist/extensions/forgecli/wf-engine/loader.d.ts +1 -1
  199. package/dist/extensions/forgecli/wf-engine/loader.js +1 -1
  200. package/dist/extensions/forgecli/wf-engine/loader.js.map +1 -1
  201. package/dist/forge-payload/.base-pack/skills/architect-skills.md +1 -0
  202. package/dist/forge-payload/.base-pack/skills/bug-fixer-skills.md +1 -0
  203. package/dist/forge-payload/.base-pack/skills/collator-skills.md +1 -0
  204. package/dist/forge-payload/.base-pack/skills/engineer-skills.md +1 -0
  205. package/dist/forge-payload/.base-pack/skills/generic-skills.md +1 -0
  206. package/dist/forge-payload/.base-pack/skills/qa-engineer-skills.md +1 -0
  207. package/dist/forge-payload/.base-pack/skills/supervisor-skills.md +1 -0
  208. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +81 -0
  209. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +72 -0
  210. package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +11 -1
  211. package/dist/forge-payload/.base-pack/workflows/_fragments/store-write-verification.md +11 -0
  212. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +11 -12
  213. package/dist/forge-payload/.base-pack/workflows/architect_review_sprint_completion.md +4 -1
  214. package/dist/forge-payload/.base-pack/workflows/architect_sprint_intake.md +10 -1
  215. package/dist/forge-payload/.base-pack/workflows/architect_sprint_plan.md +8 -1
  216. package/dist/forge-payload/.base-pack/workflows/collator_agent.md +18 -1
  217. package/dist/forge-payload/.base-pack/workflows/commit_task.md +5 -10
  218. package/dist/forge-payload/.base-pack/workflows/enhance.md +338 -11
  219. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +9 -2
  220. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +22 -35
  221. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +9 -0
  222. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +4 -0
  223. package/dist/forge-payload/.base-pack/workflows/plan_task.md +17 -21
  224. package/dist/forge-payload/.base-pack/workflows/review_code.md +13 -20
  225. package/dist/forge-payload/.base-pack/workflows/review_plan.md +10 -21
  226. package/dist/forge-payload/.base-pack/workflows/sprint_retrospective.md +10 -1
  227. package/dist/forge-payload/.base-pack/workflows/update_implementation.md +5 -10
  228. package/dist/forge-payload/.base-pack/workflows/update_plan.md +5 -10
  229. package/dist/forge-payload/.base-pack/workflows/validate_task.md +11 -12
  230. package/dist/forge-payload/.claude-plugin/plugin.json +5 -5
  231. package/dist/forge-payload/.schemas/_defs/phaseSummary.schema.json +18 -0
  232. package/dist/forge-payload/.schemas/bug.schema.json +8 -24
  233. package/dist/forge-payload/.schemas/config.schema.json +165 -33
  234. package/dist/forge-payload/.schemas/enum-catalog.json +71 -0
  235. package/dist/forge-payload/.schemas/event.schema.json +20 -2
  236. package/dist/forge-payload/.schemas/migrations.json +452 -134
  237. package/dist/forge-payload/.schemas/proposal.schema.json +40 -0
  238. package/dist/forge-payload/.schemas/task.schema.json +6 -21
  239. package/dist/forge-payload/.schemas/transitions/bug.json +31 -0
  240. package/dist/forge-payload/.schemas/transitions/sprint.json +46 -0
  241. package/dist/forge-payload/.schemas/transitions/task.json +109 -0
  242. package/dist/forge-payload/agents/store-query-validator.md +103 -0
  243. package/dist/forge-payload/agents/tomoshibi.md +185 -0
  244. package/dist/forge-payload/commands/health.md +3 -3
  245. package/dist/forge-payload/commands/regenerate.md +109 -20
  246. package/dist/forge-payload/hooks/check-update.cjs +255 -0
  247. package/dist/forge-payload/hooks/check-update.js +378 -0
  248. package/dist/forge-payload/hooks/forge-permissions.cjs +171 -0
  249. package/dist/forge-payload/hooks/forge-permissions.js +164 -0
  250. package/dist/forge-payload/hooks/post-init.cjs +120 -0
  251. package/dist/forge-payload/hooks/post-sprint.cjs +108 -0
  252. package/dist/forge-payload/hooks/triage-error.cjs +104 -0
  253. package/dist/forge-payload/hooks/triage-error.js +77 -0
  254. package/dist/forge-payload/hooks/validate-write.cjs +250 -0
  255. package/dist/forge-payload/hooks/validate-write.js +250 -0
  256. package/dist/forge-payload/integrity.json +38 -0
  257. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +81 -0
  258. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +72 -0
  259. package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +11 -1
  260. package/dist/forge-payload/meta/workflows/_fragments/store-write-verification.md +11 -0
  261. package/dist/forge-payload/meta/workflows/meta-approve.md +9 -11
  262. package/dist/forge-payload/meta/workflows/meta-collate.md +16 -0
  263. package/dist/forge-payload/meta/workflows/meta-commit.md +3 -9
  264. package/dist/forge-payload/meta/workflows/meta-enhance.md +347 -12
  265. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +8 -2
  266. package/dist/forge-payload/meta/workflows/meta-implement.md +20 -35
  267. package/dist/forge-payload/meta/workflows/meta-migrate.md +18 -0
  268. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +2 -0
  269. package/dist/forge-payload/meta/workflows/meta-plan-task.md +15 -21
  270. package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +4 -1
  271. package/dist/forge-payload/meta/workflows/meta-retrospective.md +8 -0
  272. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +11 -19
  273. package/dist/forge-payload/meta/workflows/meta-review-plan.md +10 -16
  274. package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +3 -0
  275. package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +8 -0
  276. package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +5 -0
  277. package/dist/forge-payload/meta/workflows/meta-update-implementation.md +3 -9
  278. package/dist/forge-payload/meta/workflows/meta-update-plan.md +3 -9
  279. package/dist/forge-payload/meta/workflows/meta-validate.md +9 -11
  280. package/dist/forge-payload/schemas/structure-manifest.json +513 -0
  281. package/dist/forge-payload/tools/build-context-pack.cjs +3 -2
  282. package/dist/forge-payload/tools/compression-gate.cjs +192 -0
  283. package/dist/forge-payload/tools/delete-candidate-detector.cjs +114 -0
  284. package/dist/forge-payload/tools/friction-emit.cjs +2 -1
  285. package/dist/forge-payload/tools/judge-proposal.cjs +177 -0
  286. package/dist/forge-payload/tools/lib/frontmatter.cjs +62 -0
  287. package/dist/forge-payload/tools/lib/fsutil.cjs +61 -0
  288. package/dist/forge-payload/tools/lib/json-io.cjs +43 -0
  289. package/dist/forge-payload/tools/lib/schema-loader.cjs +139 -0
  290. package/dist/forge-payload/tools/lib/slug.cjs +39 -0
  291. package/dist/forge-payload/tools/lib/store-facade.cjs +6 -5
  292. package/dist/forge-payload/tools/manage-versions.cjs +132 -4
  293. package/dist/forge-payload/tools/preflight-gate.cjs +55 -7
  294. package/dist/forge-payload/tools/queue-drain.cjs +152 -0
  295. package/dist/forge-payload/tools/replay-scoring.cjs +117 -0
  296. package/dist/forge-payload/tools/seed-store.cjs +1 -13
  297. package/dist/forge-payload/tools/store-cli.cjs +55 -108
  298. package/dist/forge-payload/tools/store.cjs +26 -37
  299. package/dist/forge-payload/tools/substitute-placeholders.cjs +74 -35
  300. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts +1 -1
  301. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  302. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +23 -0
  303. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  304. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +2 -2
  305. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  306. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +1 -1
  307. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  308. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +2 -2
  309. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  310. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  311. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +5 -5
  312. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  313. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  314. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +4 -4
  315. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  316. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  317. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts +1 -1
  318. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts.map +1 -1
  319. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.js.map +1 -1
  320. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +1 -1
  321. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  322. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  323. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +4 -0
  324. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +1 -0
  325. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +3 -0
  326. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +1 -0
  327. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +2 -2
  328. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  329. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  330. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts +1 -1
  331. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  332. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  333. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts +1 -1
  334. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts.map +1 -1
  335. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js.map +1 -1
  336. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts +1 -1
  337. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -1
  338. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js.map +1 -1
  339. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts +1 -1
  340. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts.map +1 -1
  341. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js.map +1 -1
  342. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts +1 -1
  343. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -1
  344. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js.map +1 -1
  345. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +20 -0
  346. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +1 -0
  347. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +92 -0
  348. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +1 -0
  349. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +18 -0
  350. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +1 -0
  351. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +42 -0
  352. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +1 -0
  353. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +10 -0
  354. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +1 -0
  355. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +31 -0
  356. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +1 -0
  357. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts +2 -2
  358. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -1
  359. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js.map +1 -1
  360. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +2 -2
  361. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  362. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  363. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +30 -0
  364. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +1 -0
  365. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +170 -0
  366. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +1 -0
  367. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +26 -0
  368. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +1 -0
  369. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +90 -0
  370. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +1 -0
  371. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts +1 -1
  372. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  373. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  374. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.d.ts +1 -1
  375. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.d.ts.map +1 -1
  376. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.js.map +1 -1
  377. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +10 -22
  378. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  379. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +17 -23
  380. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  381. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +1 -1
  382. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  383. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  384. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +19 -19
  385. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  386. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  387. package/node_modules/@earendil-works/pi-agent-core/dist/node.d.ts +2 -2
  388. package/node_modules/@earendil-works/pi-agent-core/dist/node.d.ts.map +1 -1
  389. package/node_modules/@earendil-works/pi-agent-core/dist/node.js.map +1 -1
  390. package/node_modules/@earendil-works/pi-agent-core/package.json +9 -10
  391. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +1 -1
  392. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
  393. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
  394. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.d.ts +2 -2
  395. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.d.ts.map +1 -1
  396. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.js.map +1 -1
  397. package/node_modules/@earendil-works/pi-ai/dist/cli.d.ts.map +1 -1
  398. package/node_modules/@earendil-works/pi-ai/dist/cli.js +14 -0
  399. package/node_modules/@earendil-works/pi-ai/dist/cli.js.map +1 -1
  400. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts +1 -1
  401. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  402. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +10 -2
  403. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  404. package/node_modules/@earendil-works/pi-ai/dist/image-models.d.ts +2 -2
  405. package/node_modules/@earendil-works/pi-ai/dist/image-models.d.ts.map +1 -1
  406. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  407. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  408. package/node_modules/@earendil-works/pi-ai/dist/image-models.js.map +1 -1
  409. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts +1 -1
  410. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts.map +1 -1
  411. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.js.map +1 -1
  412. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts +2 -2
  413. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
  414. package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
  415. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +29 -29
  416. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  417. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  418. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +2 -2
  419. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  420. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +317 -509
  421. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  422. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +400 -620
  423. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  424. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  425. package/node_modules/@earendil-works/pi-ai/dist/oauth.d.ts +1 -1
  426. package/node_modules/@earendil-works/pi-ai/dist/oauth.d.ts.map +1 -1
  427. package/node_modules/@earendil-works/pi-ai/dist/oauth.js.map +1 -1
  428. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts +1 -1
  429. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  430. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +5 -2
  431. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  432. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +23 -6
  433. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  434. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +11 -23
  435. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  436. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts +1 -1
  437. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  438. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +2 -1
  439. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  440. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.d.ts +1 -1
  441. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.d.ts.map +1 -1
  442. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.js.map +1 -1
  443. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts +1 -1
  444. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts.map +1 -1
  445. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  446. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.d.ts +1 -1
  447. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  448. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  449. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +1 -1
  450. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  451. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
  452. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts +2 -2
  453. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
  454. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
  455. package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts +2 -2
  456. package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts.map +1 -1
  457. package/node_modules/@earendil-works/pi-ai/dist/providers/google.js.map +1 -1
  458. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts +1 -1
  459. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
  460. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
  461. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts +1 -1
  462. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts.map +1 -1
  463. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js.map +1 -1
  464. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts +1 -1
  465. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts.map +1 -1
  466. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js.map +1 -1
  467. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts +1 -1
  468. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  469. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +12 -3
  470. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  471. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts +1 -1
  472. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  473. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +2 -1
  474. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  475. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.d.ts +3 -0
  476. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  477. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.js +10 -0
  478. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.js.map +1 -0
  479. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts +2 -2
  480. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  481. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  482. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts +1 -1
  483. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  484. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +2 -1
  485. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  486. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.d.ts +10 -10
  487. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  488. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js +13 -2
  489. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js.map +1 -1
  490. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +3 -3
  491. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  492. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +6 -11
  493. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
  494. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.d.ts +1 -1
  495. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
  496. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.js.map +1 -1
  497. package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts +3 -3
  498. package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts.map +1 -1
  499. package/node_modules/@earendil-works/pi-ai/dist/stream.js.map +1 -1
  500. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +13 -3
  501. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  502. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  503. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts +3 -3
  504. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  505. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +2 -2
  506. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
  507. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.d.ts +1 -1
  508. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.d.ts.map +1 -1
  509. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.js.map +1 -1
  510. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts +19 -0
  511. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -0
  512. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +55 -0
  513. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -0
  514. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts +3 -3
  515. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  516. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +45 -69
  517. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  518. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts +6 -5
  519. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
  520. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -0
  521. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
  522. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts +1 -1
  523. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  524. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +1 -1
  525. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  526. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts +9 -2
  527. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts.map +1 -1
  528. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.js.map +1 -1
  529. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +1 -1
  530. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  531. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  532. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts +1 -1
  533. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts.map +1 -1
  534. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  535. package/node_modules/@earendil-works/pi-ai/package.json +15 -16
  536. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +55 -0
  537. package/node_modules/@earendil-works/pi-coding-agent/README.md +6 -4
  538. package/node_modules/@earendil-works/pi-coding-agent/dist/bun/cli.d.ts.map +1 -1
  539. package/node_modules/@earendil-works/pi-coding-agent/dist/bun/cli.js.map +1 -1
  540. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +1 -1
  541. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  542. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
  543. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts +2 -2
  544. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts.map +1 -1
  545. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js.map +1 -1
  546. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  547. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  548. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.d.ts +1 -1
  549. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.d.ts.map +1 -1
  550. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.js.map +1 -1
  551. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts +1 -1
  552. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts.map +1 -1
  553. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.js.map +1 -1
  554. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.d.ts +1 -1
  555. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.d.ts.map +1 -1
  556. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.js.map +1 -1
  557. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.d.ts.map +1 -1
  558. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js +4 -10
  559. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js.map +1 -1
  560. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
  561. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +13 -14
  562. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
  563. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts +9 -9
  564. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts.map +1 -1
  565. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js +6 -6
  566. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js.map +1 -1
  567. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +7 -7
  568. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
  569. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +3 -2
  570. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
  571. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +23 -21
  572. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  573. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +99 -137
  574. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  575. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-guidance.d.ts.map +1 -1
  576. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-guidance.js.map +1 -1
  577. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts +1 -1
  578. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  579. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +3 -2
  580. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  581. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.d.ts +1 -1
  582. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.d.ts.map +1 -1
  583. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.js.map +1 -1
  584. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts +3 -3
  585. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  586. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  587. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts +2 -2
  588. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  589. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  590. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.d.ts +3 -3
  591. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.d.ts.map +1 -1
  592. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.js.map +1 -1
  593. package/node_modules/@earendil-works/pi-coding-agent/dist/core/exec.d.ts.map +1 -1
  594. package/node_modules/@earendil-works/pi-coding-agent/dist/core/exec.js.map +1 -1
  595. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.d.ts +1 -1
  596. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.d.ts.map +1 -1
  597. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.js +8 -6
  598. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.js.map +1 -1
  599. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/template.js +6 -3
  600. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.d.ts +2 -2
  601. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  602. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.js.map +1 -1
  603. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +8 -8
  604. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  605. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  606. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts +2 -2
  607. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  608. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +12 -29
  609. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  610. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +6 -6
  611. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  612. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  613. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +19 -19
  614. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  615. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  616. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.d.ts +2 -2
  617. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.d.ts.map +1 -1
  618. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.js.map +1 -1
  619. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts.map +1 -1
  620. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js.map +1 -1
  621. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.d.ts +21 -0
  622. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.d.ts.map +1 -0
  623. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +48 -0
  624. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js.map +1 -0
  625. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts +8 -8
  626. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  627. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js.map +1 -1
  628. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  629. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  630. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts +4 -4
  631. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  632. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +7 -3
  633. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  634. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +1 -1
  635. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  636. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  637. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +2 -1
  638. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  639. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +48 -32
  640. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  641. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts +1 -1
  642. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  643. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js +6 -20
  644. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  645. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
  646. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
  647. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts +9 -9
  648. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  649. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +38 -31
  650. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  651. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts +13 -13
  652. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  653. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +9 -4
  654. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
  655. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts +1 -1
  656. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  657. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +32 -24
  658. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  659. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
  660. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  661. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +26 -13
  662. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  663. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.d.ts +2 -2
  664. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  665. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js +8 -22
  666. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js.map +1 -1
  667. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts +1 -1
  668. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  669. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  670. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.d.ts +1 -1
  671. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.d.ts.map +1 -1
  672. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.js.map +1 -1
  673. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts +1 -1
  674. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  675. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +1 -0
  676. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  677. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.d.ts +1 -1
  678. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.d.ts.map +1 -1
  679. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.js.map +1 -1
  680. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts +2 -2
  681. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  682. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +9 -3
  683. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  684. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts +3 -1
  685. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts.map +1 -1
  686. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js +8 -1
  687. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  688. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts +5 -3
  689. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  690. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +3 -2
  691. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  692. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts +2 -2
  693. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  694. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  695. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts +2 -2
  696. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  697. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  698. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts +17 -17
  699. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  700. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  701. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts +2 -2
  702. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  703. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  704. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.d.ts +3 -1
  705. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.d.ts.map +1 -1
  706. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.js +9 -3
  707. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.js.map +1 -1
  708. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  709. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +3 -22
  710. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  711. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts +2 -2
  712. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  713. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  714. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts.map +1 -1
  715. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js.map +1 -1
  716. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  717. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  718. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  719. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.d.ts.map +1 -1
  720. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.js +12 -2
  721. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.js.map +1 -1
  722. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts +1 -1
  723. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  724. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  725. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +30 -29
  726. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  727. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
  728. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  729. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts +1 -1
  730. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  731. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +7 -6
  732. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  733. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  734. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
  735. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts +5 -5
  736. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts.map +1 -1
  737. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.js.map +1 -1
  738. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/armin.d.ts.map +1 -1
  739. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/armin.js.map +1 -1
  740. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  741. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  742. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  743. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  744. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
  745. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  746. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  747. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  748. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  749. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  750. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  751. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  752. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  753. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  754. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts +2 -2
  755. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  756. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js +1 -1
  757. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js.map +1 -1
  758. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts +2 -2
  759. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  760. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js +2 -2
  761. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  762. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  763. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  764. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.js.map +1 -1
  765. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.d.ts +2 -2
  766. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  767. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.js.map +1 -1
  768. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  769. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/daxnuts.js.map +1 -1
  770. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/diff.d.ts.map +1 -1
  771. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
  772. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  773. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  774. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  775. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  776. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  777. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  778. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.js.map +1 -1
  779. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  780. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-input.js.map +1 -1
  781. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  782. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-selector.js.map +1 -1
  783. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts +4 -3
  784. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  785. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +16 -7
  786. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  787. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts +31 -31
  788. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
  789. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
  790. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  791. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  792. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +10 -2
  793. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  794. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +31 -6
  795. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  796. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +2 -2
  797. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  798. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  799. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  800. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  801. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  802. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  803. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  804. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +1 -1
  805. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  806. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  807. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts +3 -3
  808. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  809. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  810. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  811. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  812. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +15 -0
  813. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  814. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  815. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  816. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  817. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  818. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  819. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  820. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.js.map +1 -1
  821. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  822. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  823. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  824. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  825. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  826. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  827. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  828. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.js.map +1 -1
  829. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  830. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  831. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  832. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
  833. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +4 -3
  834. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  835. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +37 -14
  836. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  837. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  838. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  839. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +37 -28
  840. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  841. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts +1 -1
  842. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  843. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  844. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +5 -5
  845. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  846. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +1 -1
  847. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  848. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts +2 -2
  849. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  850. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  851. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +4 -4
  852. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  853. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  854. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  855. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +40 -1
  856. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  857. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts +1 -1
  858. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  859. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  860. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  861. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  862. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.d.ts.map +1 -1
  863. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js.map +1 -1
  864. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.d.ts +1 -1
  865. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.d.ts.map +1 -1
  866. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.js.map +1 -1
  867. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.d.ts.map +1 -1
  868. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.js.map +1 -1
  869. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  870. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  871. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts +16 -1
  872. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts.map +1 -1
  873. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js +49 -7
  874. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js.map +1 -1
  875. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
  876. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js.map +1 -1
  877. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.d.ts.map +1 -1
  878. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.js.map +1 -1
  879. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  880. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  881. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts +2 -1
  882. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts.map +1 -1
  883. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js +9 -4
  884. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js.map +1 -1
  885. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/windows-self-update.d.ts.map +1 -1
  886. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/windows-self-update.js.map +1 -1
  887. package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +44 -12
  888. package/node_modules/@earendil-works/pi-coding-agent/docs/index.md +6 -4
  889. package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +8 -2
  890. package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +5 -4
  891. package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +3 -1
  892. package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +2 -0
  893. package/node_modules/@earendil-works/pi-coding-agent/docs/termux.md +1 -1
  894. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +2 -2
  895. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +2 -2
  896. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  897. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  898. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/doom-component.ts +2 -2
  899. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/index.ts +3 -3
  900. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-qa-tests.ts +97 -66
  901. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-test.ts +7 -4
  902. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/plan-mode/index.ts +1 -1
  903. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +2 -2
  904. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/subagent/index.ts +1 -1
  905. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +3 -3
  906. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +1425 -0
  907. package/node_modules/@earendil-works/pi-coding-agent/package.json +32 -31
  908. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  909. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  910. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +1 -1
  911. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  912. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +1 -1
  913. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts +1 -1
  914. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
  915. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js.map +1 -1
  916. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +3 -3
  917. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  918. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  919. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts +2 -2
  920. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  921. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  922. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +1 -1
  923. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  924. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  925. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -5
  926. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  927. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +4 -4
  928. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  929. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +1 -1
  930. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  931. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  932. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +1 -1
  933. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  934. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  935. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +1 -1
  936. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  937. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  938. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts +1 -1
  939. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
  940. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
  941. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts +1 -1
  942. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  943. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  944. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts +1 -1
  945. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
  946. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
  947. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts +2 -2
  948. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts.map +1 -1
  949. package/node_modules/@earendil-works/pi-tui/dist/editor-component.js.map +1 -1
  950. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +22 -22
  951. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  952. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  953. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +1 -1
  954. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  955. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  956. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  957. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +25 -15
  958. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  959. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +2 -2
  960. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  961. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  962. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  963. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  964. package/node_modules/@earendil-works/pi-tui/package.json +8 -11
  965. package/node_modules/@mariozechner/clipboard/package.json +2 -1
  966. package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +3 -0
  967. package/node_modules/@mariozechner/clipboard-linux-x64-musl/clipboard.linux-x64-musl.node +0 -0
  968. package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +25 -0
  969. package/package.json +15 -8
  970. package/dist/bin/forgecli.d.ts +0 -2
  971. package/dist/bin/forgecli.js +0 -6
  972. package/dist/bin/forgecli.js.map +0 -1
  973. package/node_modules/koffi/CHANGELOG.md +0 -1093
  974. package/node_modules/koffi/LICENSE.txt +0 -22
  975. package/node_modules/koffi/README.md +0 -43
  976. package/node_modules/koffi/build/koffi/darwin_arm64/koffi.node +0 -0
  977. package/node_modules/koffi/build/koffi/darwin_x64/koffi.node +0 -0
  978. package/node_modules/koffi/build/koffi/freebsd_arm64/koffi.node +0 -0
  979. package/node_modules/koffi/build/koffi/freebsd_ia32/koffi.node +0 -0
  980. package/node_modules/koffi/build/koffi/freebsd_x64/koffi.node +0 -0
  981. package/node_modules/koffi/build/koffi/linux_arm64/koffi.node +0 -0
  982. package/node_modules/koffi/build/koffi/linux_armhf/koffi.node +0 -0
  983. package/node_modules/koffi/build/koffi/linux_ia32/koffi.node +0 -0
  984. package/node_modules/koffi/build/koffi/linux_loong64/koffi.node +0 -0
  985. package/node_modules/koffi/build/koffi/linux_riscv64d/koffi.node +0 -0
  986. package/node_modules/koffi/build/koffi/linux_x64/koffi.node +0 -0
  987. package/node_modules/koffi/build/koffi/musl_arm64/koffi.node +0 -0
  988. package/node_modules/koffi/build/koffi/musl_x64/koffi.node +0 -0
  989. package/node_modules/koffi/build/koffi/openbsd_ia32/koffi.node +0 -0
  990. package/node_modules/koffi/build/koffi/openbsd_x64/koffi.node +0 -0
  991. package/node_modules/koffi/build/koffi/win32_arm64/koffi.exp +0 -0
  992. package/node_modules/koffi/build/koffi/win32_arm64/koffi.lib +0 -0
  993. package/node_modules/koffi/build/koffi/win32_arm64/koffi.node +0 -0
  994. package/node_modules/koffi/build/koffi/win32_ia32/koffi.exp +0 -0
  995. package/node_modules/koffi/build/koffi/win32_ia32/koffi.lib +0 -0
  996. package/node_modules/koffi/build/koffi/win32_ia32/koffi.node +0 -0
  997. package/node_modules/koffi/build/koffi/win32_x64/koffi.exp +0 -0
  998. package/node_modules/koffi/build/koffi/win32_x64/koffi.lib +0 -0
  999. package/node_modules/koffi/build/koffi/win32_x64/koffi.node +0 -0
  1000. package/node_modules/koffi/doc/benchmarks.md +0 -126
  1001. package/node_modules/koffi/doc/callbacks.md +0 -210
  1002. package/node_modules/koffi/doc/contribute.md +0 -148
  1003. package/node_modules/koffi/doc/functions.md +0 -250
  1004. package/node_modules/koffi/doc/index.md +0 -61
  1005. package/node_modules/koffi/doc/input.md +0 -471
  1006. package/node_modules/koffi/doc/migration.md +0 -159
  1007. package/node_modules/koffi/doc/misc.md +0 -180
  1008. package/node_modules/koffi/doc/output.md +0 -305
  1009. package/node_modules/koffi/doc/packaging.md +0 -88
  1010. package/node_modules/koffi/doc/platforms.md +0 -36
  1011. package/node_modules/koffi/doc/pointers.md +0 -328
  1012. package/node_modules/koffi/doc/start.md +0 -118
  1013. package/node_modules/koffi/doc/unions.md +0 -186
  1014. package/node_modules/koffi/doc/variables.md +0 -102
  1015. package/node_modules/koffi/index.d.ts +0 -288
  1016. package/node_modules/koffi/index.js +0 -634
  1017. package/node_modules/koffi/indirect.js +0 -533
  1018. package/node_modules/koffi/lib/native/base/base.cc +0 -11015
  1019. package/node_modules/koffi/lib/native/base/base.hh +0 -6003
  1020. package/node_modules/koffi/lib/native/base/crc.inc +0 -2214
  1021. package/node_modules/koffi/lib/native/base/crc_gen.py +0 -72
  1022. package/node_modules/koffi/lib/native/base/mimetypes.inc +0 -1248
  1023. package/node_modules/koffi/lib/native/base/mimetypes_gen.py +0 -58
  1024. package/node_modules/koffi/lib/native/base/tower.cc +0 -821
  1025. package/node_modules/koffi/lib/native/base/tower.hh +0 -81
  1026. package/node_modules/koffi/lib/native/base/unicode.inc +0 -408
  1027. package/node_modules/koffi/lib/native/base/unicode_gen.py +0 -152
  1028. package/node_modules/koffi/package.json +0 -38
  1029. package/node_modules/koffi/src/cnoke/LICENSE.txt +0 -22
  1030. package/node_modules/koffi/src/cnoke/README.md +0 -99
  1031. package/node_modules/koffi/src/cnoke/assets/FindCNoke.cmake +0 -127
  1032. package/node_modules/koffi/src/cnoke/assets/toolchains.json +0 -126
  1033. package/node_modules/koffi/src/cnoke/assets/win_delay_hook.c +0 -36
  1034. package/node_modules/koffi/src/cnoke/cnoke.js +0 -170
  1035. package/node_modules/koffi/src/cnoke/package.json +0 -24
  1036. package/node_modules/koffi/src/cnoke/src/builder.js +0 -511
  1037. package/node_modules/koffi/src/cnoke/src/index.js +0 -10
  1038. package/node_modules/koffi/src/cnoke/src/tools.js +0 -407
  1039. package/node_modules/koffi/src/koffi/CMakeLists.txt +0 -182
  1040. package/node_modules/koffi/src/koffi/src/abi_arm32.cc +0 -1018
  1041. package/node_modules/koffi/src/koffi/src/abi_arm32_asm.S +0 -169
  1042. package/node_modules/koffi/src/koffi/src/abi_arm64.cc +0 -1295
  1043. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.S +0 -195
  1044. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.asm +0 -174
  1045. package/node_modules/koffi/src/koffi/src/abi_loong64.cc +0 -5
  1046. package/node_modules/koffi/src/koffi/src/abi_loong64_asm.S +0 -204
  1047. package/node_modules/koffi/src/koffi/src/abi_riscv64.cc +0 -915
  1048. package/node_modules/koffi/src/koffi/src/abi_riscv64_asm.S +0 -203
  1049. package/node_modules/koffi/src/koffi/src/abi_x64_sysv.cc +0 -939
  1050. package/node_modules/koffi/src/koffi/src/abi_x64_sysv_asm.S +0 -231
  1051. package/node_modules/koffi/src/koffi/src/abi_x64_win.cc +0 -715
  1052. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.S +0 -166
  1053. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.asm +0 -192
  1054. package/node_modules/koffi/src/koffi/src/abi_x86.cc +0 -860
  1055. package/node_modules/koffi/src/koffi/src/abi_x86_asm.S +0 -193
  1056. package/node_modules/koffi/src/koffi/src/abi_x86_asm.asm +0 -177
  1057. package/node_modules/koffi/src/koffi/src/call.cc +0 -1326
  1058. package/node_modules/koffi/src/koffi/src/call.hh +0 -179
  1059. package/node_modules/koffi/src/koffi/src/errno.inc +0 -462
  1060. package/node_modules/koffi/src/koffi/src/ffi.cc +0 -2702
  1061. package/node_modules/koffi/src/koffi/src/ffi.hh +0 -354
  1062. package/node_modules/koffi/src/koffi/src/init.js +0 -105
  1063. package/node_modules/koffi/src/koffi/src/parser.cc +0 -220
  1064. package/node_modules/koffi/src/koffi/src/parser.hh +0 -54
  1065. package/node_modules/koffi/src/koffi/src/util.cc +0 -1807
  1066. package/node_modules/koffi/src/koffi/src/util.hh +0 -221
  1067. package/node_modules/koffi/src/koffi/src/uv.cc +0 -193
  1068. package/node_modules/koffi/src/koffi/src/uv.def +0 -10
  1069. package/node_modules/koffi/src/koffi/src/uv.hh +0 -40
  1070. package/node_modules/koffi/src/koffi/src/win32.cc +0 -198
  1071. package/node_modules/koffi/src/koffi/src/win32.hh +0 -119
  1072. package/node_modules/koffi/src/koffi/tools/write_trampolines.js +0 -77
  1073. package/node_modules/koffi/vendor/node-addon-api/LICENSE.md +0 -9
  1074. package/node_modules/koffi/vendor/node-addon-api/README.md +0 -95
  1075. package/node_modules/koffi/vendor/node-addon-api/napi-inl.deprecated.h +0 -186
  1076. package/node_modules/koffi/vendor/node-addon-api/napi-inl.h +0 -7033
  1077. package/node_modules/koffi/vendor/node-addon-api/napi.h +0 -3309
  1078. package/node_modules/koffi/vendor/node-api-headers/LICENSE +0 -21
  1079. package/node_modules/koffi/vendor/node-api-headers/README.md +0 -95
  1080. package/node_modules/koffi/vendor/node-api-headers/def/js_native_api.def +0 -125
  1081. package/node_modules/koffi/vendor/node-api-headers/def/node_api.def +0 -157
  1082. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api.h +0 -591
  1083. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api_types.h +0 -210
  1084. package/node_modules/koffi/vendor/node-api-headers/include/node_api.h +0 -265
  1085. package/node_modules/koffi/vendor/node-api-headers/include/node_api_types.h +0 -58
  1086. package/node_modules/koffi/vendor/node-api-headers/include/uv/aix.h +0 -32
  1087. package/node_modules/koffi/vendor/node-api-headers/include/uv/bsd.h +0 -34
  1088. package/node_modules/koffi/vendor/node-api-headers/include/uv/darwin.h +0 -61
  1089. package/node_modules/koffi/vendor/node-api-headers/include/uv/errno.h +0 -483
  1090. package/node_modules/koffi/vendor/node-api-headers/include/uv/linux.h +0 -34
  1091. package/node_modules/koffi/vendor/node-api-headers/include/uv/os390.h +0 -33
  1092. package/node_modules/koffi/vendor/node-api-headers/include/uv/posix.h +0 -31
  1093. package/node_modules/koffi/vendor/node-api-headers/include/uv/sunos.h +0 -44
  1094. package/node_modules/koffi/vendor/node-api-headers/include/uv/threadpool.h +0 -37
  1095. package/node_modules/koffi/vendor/node-api-headers/include/uv/tree.h +0 -521
  1096. package/node_modules/koffi/vendor/node-api-headers/include/uv/unix.h +0 -512
  1097. package/node_modules/koffi/vendor/node-api-headers/include/uv/version.h +0 -43
  1098. package/node_modules/koffi/vendor/node-api-headers/include/uv/win.h +0 -698
  1099. package/node_modules/koffi/vendor/node-api-headers/include/uv.h +0 -1990
@@ -1,9 +1,313 @@
1
1
  {
2
- "0.44.7": {
3
- "version": "0.44.8",
2
+ "0.51.2": {
3
+ "version": "0.51.3",
4
+ "date": "2026-05-23",
5
+ "notes": "Workflow prose updated to reference forge_artifact tool for all phase artifact reads/writes. Eliminates manual path construction — models use typed tool calls with entity ID resolution and JSON summary schema validation.",
6
+ "target": "workflows:all-phase-workflows,workflows:_fragments/store-cli-verbs",
7
+ "regenerate": [
8
+ "workflows:plan_task",
9
+ "workflows:review_plan",
10
+ "workflows:implement_plan",
11
+ "workflows:review_code",
12
+ "workflows:validate_task",
13
+ "workflows:architect_approve",
14
+ "workflows:fix_bug",
15
+ "workflows:collator_agent",
16
+ "workflows:_fragments/store-cli-verbs"
17
+ ],
18
+ "breaking": false,
19
+ "manual": []
20
+ },
21
+ "0.51.1": {
22
+ "version": "0.51.2",
23
+ "date": "2026-05-23",
24
+ "notes": "S25 post-refactor regression fixes: (A) store-cli-verbs.md — explicit 4-arg update-status syntax; (B) implement workflow — two-step plan-approved→implementing→implemented transition; (C/D) collator workflow — no-set-summary Iron Law + WRITEBACK-SUMMARY.json Finalize step.",
25
+ "target": "workflows:implement_plan,workflows:collator_agent,workflows:_fragments/store-cli-verbs",
26
+ "regenerate": [
27
+ "workflows:implement_plan",
28
+ "workflows:collator_agent",
29
+ "workflows:_fragments/store-cli-verbs"
30
+ ],
31
+ "breaking": false,
32
+ "manual": []
33
+ },
34
+ "0.51.0": {
35
+ "version": "0.51.1",
36
+ "date": "2026-05-23",
37
+ "notes": "FORGE-S25-T28 — Guardrails CI consolidation. Adds --check mode to build-manifest.cjs and build-enum-catalog.cjs (non-destructive drift detection; exits 1 when structure-manifest.json or enum-catalog.json/transitions/*.json are stale). Wires manifest-drift + enum-catalog-drift gates into plugin-ci.yml. Adds forge/forge/CLAUDE.md documenting the four CI gates.",
38
+ "target": "tools:build-manifest",
39
+ "regenerate": [
40
+ "tools:build-manifest",
41
+ "tools:build-enum-catalog"
42
+ ],
43
+ "breaking": false,
44
+ "manual": []
45
+ },
46
+ "0.50.0": {
47
+ "version": "0.50.1",
48
+ "date": "2026-05-23",
49
+ "notes": "FORGE-S25-T26 — Catalog generator + plugin consumers. Adds build-enum-catalog.cjs emitting forge/schemas/enum-catalog.json + forge/schemas/transitions/{task,sprint,bug}.json from T25 ADR canonical FSM tables. Canonicalizes store-cli.cjs TASK_TRANSITIONS/SPRINT_TRANSITIONS/BUG_TRANSITIONS to T25 ADR (D-T-1..D-T-9, D-S-1..D-S-4, D-B-1). Narrows FAILED_STATES: removes blocked, plan-revision-required, code-revision-required (all transitions are now explicit in the tables). Extends substitute-placeholders.cjs with {{ENUM:entity.field}} placeholder support (resolves to comma-separated schema enum values). Adds @catalogSync annotation to hooks/lib/common.cjs:FORGE_COMMAND_PATTERNS + fills 15 missing command patterns; syncs inline copy in hooks/triage-error.cjs. build-manifest.cjs gains post-step to regenerate enum-catalog on every manifest rebuild. gen-integrity.cjs tracks new catalog + transition files. New tests: build-enum-catalog.test.cjs (14 cases), store-cli-transitions.test.cjs (9 regression cases, D-T-* / D-S-* / D-B-*). integrity.json regenerated.",
50
+ "target": "schemas:enum-catalog",
51
+ "regenerate": [
52
+ "schemas:enum-catalog",
53
+ "schemas:transitions",
54
+ "tools:build-enum-catalog",
55
+ "tools:store-cli",
56
+ "tools:substitute-placeholders",
57
+ "tools:build-manifest",
58
+ "tools:gen-integrity",
59
+ "hooks:triage-error",
60
+ "hooks:lib/common"
61
+ ],
62
+ "breaking": false,
63
+ "manual": []
64
+ },
65
+ "0.49.0": {
66
+ "version": "0.50.0",
67
+ "date": "2026-05-23",
68
+ "notes": "FORGE-S25-T15 — hooks:h5-polish. Drop mtime sentinel in post-init.cjs (H-5c); add logSwallowedError helper to hooks/lib/common.cjs (H-5b); interpolate CLAUDE_PLUGIN_ROOT into forge-permissions.cjs node-tool rule (H-5d); reduce check-update.cjs HTTPS timeout 5s→2s (H-5a); complete hooks/README.md swallowed-error policy section. integrity.json regenerated.",
69
+ "target": "hooks:h5-polish",
70
+ "regenerate": [],
71
+ "breaking": false,
72
+ "manual": []
73
+ },
74
+ "0.48.2": {
75
+ "version": "0.49.0",
76
+ "date": "2026-05-23",
77
+ "notes": "FORGE-S25-T14 — hooks/*.js → *.cjs rename + extract hooks/lib/{plugin-detection,update-url,update-msg}.cjs + REGISTRY private. Closes H-2, H-3, H rename. gen-integrity.cjs updated to glob .cjs. integrity.json regenerated. forge-cli/scripts/build-payload.cjs hook filter updated from .js to .cjs (cross-repo).",
78
+ "regenerate": [],
79
+ "breaking": false,
80
+ "manual": []
81
+ },
82
+ "0.48.1": {
83
+ "version": "0.48.2",
84
+ "date": "2026-05-23",
85
+ "notes": "FORGE-S25-T13 — Release-time URL rewrite strategy for plugin.json (S-12), structure-manifest.json product-manager edge fix (S-7), additionalProperties CI gate (S-4/N-S-2), schema-evolution-policy ADR. Adds rewrite-plugin-urls.cjs tool (--target main|release) for release workflow automation. Fixes build-manifest.cjs parseMetaDeps to filter non-generated personas (product-manager, orchestrator) from workflow edges. Regenerates structure-manifest.json. Adds schema-additionalProperties.test.cjs CI gate asserting every *.schema.json has root additionalProperties:false. Sets plugin.json URLs to main-branch raw GitHub content.",
86
+ "regenerate": [
87
+ "schemas:structure-manifest"
88
+ ],
89
+ "breaking": false,
90
+ "manual": []
91
+ },
92
+ "0.48.0": {
93
+ "version": "0.48.1",
94
+ "date": "2026-05-23",
95
+ "notes": "Fix preflight-gate sprint directory slug resolution. When a sprint directory has a slug suffix (e.g. 'FORGE-S25-foundation-refactor' for sprintId 'FORGE-S25'), the gate was using the bare sprintId as the directory path, causing artifact-not-found failures even when the artifact existed under the slugged directory. Adds resolveSprintArtifactDir() (exported) that scans engineering/sprints/ for an exact match then a '<sprintId>-*' prefix match, analogous to resolveTaskArtifactDir(). resolveTaskArtifactDir() gains an optional resolvedSprintDir parameter. CLI shim resolves the sprint dir before resolving the task dir and uses it for the {sprint} substitution.",
96
+ "regenerate": [],
97
+ "breaking": false,
98
+ "manual": []
99
+ },
100
+ "0.47.2": {
101
+ "version": "0.48.0",
102
+ "date": "2026-05-22",
103
+ "notes": "FORGE-S25-T10 — extract _fragments/{store-write-verification,iron-laws,generation-instructions}.md + backfills. Closes CM-1, CM-2, CM-3, CM-4, CM-6, N-CM-4, N-CM-5. Three new canonical fragment files added to meta/workflows/_fragments/ and mirrored to init/base-pack/workflows/_fragments/. The 9-line Store-Write Verification block (byte-identical across 9 workflows) replaced with a single comment marker; 3 variant workflows (sprint-plan, collate, enhance) retain inline text with inline note. iron-laws.md and generation-instructions.md are template-guide fragments (CM-2/CM-3/CM-6 closed-as-documented, not closed-as-deduplicated — duplication stays inline, fragments document the canonical structure; see doc/decisions/meta-fragment-includes.md). Iron Laws backfilled into 3 previously missing workflows (meta-migrate, meta-retrospective, meta-sprint-intake). Generation Instructions backfilled into 2 missing workflows (meta-enhance, meta-migrate). meta-review-plan: ## Generation Notes renamed to ## Generation Instructions. Intentional-omission comments added for meta-quiz-agent and meta-review-sprint-completion. FRAGMENT_MAP in build-manifest.cjs updated with 3 new entries (now 9 total). Byte budgets in phase-frontmatter.test.cjs lowered for files where SWV block was removed: meta-validate (5888→5376), meta-update-plan (3584→3072), meta-update-implementation (4096→3584); other 6 files remain within existing budgets. All 1513 plugin tests pass. Regeneration required: workflows and _fragments.",
104
+ "regenerate": [
105
+ "workflows:_fragments",
106
+ "workflows:commit_task",
107
+ "workflows:implement_plan",
108
+ "workflows:review_plan",
109
+ "workflows:update_implementation",
110
+ "workflows:approve_task",
111
+ "workflows:update_plan",
112
+ "workflows:review_implementation",
113
+ "workflows:validate_task",
114
+ "workflows:plan_task",
115
+ "workflows:architect_sprint_plan",
116
+ "workflows:collator_agent",
117
+ "workflows:enhance",
118
+ "workflows:fix_bug",
119
+ "workflows:orchestrate_task",
120
+ "workflows:migrate_structural",
121
+ "workflows:sprint_retrospective",
122
+ "workflows:architect_sprint_intake",
123
+ "workflows:quiz_agent"
124
+ ],
125
+ "breaking": false,
126
+ "manual": [
127
+ "Run /forge:update to receive the 3 new _fragments/ files and updated workflow files that now carry fragment reference markers instead of verbatim Store-Write Verification blocks.",
128
+ "CM-2/CM-3/CM-6 (Iron Laws and Generation Instructions duplication) are closed-as-documented via the template-guide pattern — the prose remains inline in each workflow. No manual deduplication needed."
129
+ ]
130
+ },
131
+ "0.47.1": {
132
+ "version": "0.47.2",
133
+ "date": "2026-05-22",
134
+ "notes": "FORGE-S25-T07 — extract lib/frontmatter.cjs (CRLF normalization), lib/slug.cjs (maxLen=30), lib/fsutil.cjs. Closes findings N-T-3, N-T-4, T-5. lib/frontmatter.cjs: canonical YAML frontmatter extractor normalizing all line endings (CRLF/CR/mixed) to LF on read — resolves silent divergence between build-base-pack.cjs and substitute-placeholders.cjs. lib/slug.cjs: deriveSlug(title, {maxLen=30}) with trailing-hyphen trim — closes slug truncation divergence between seed-store.cjs (truncated at 30) and store-facade.cjs (no truncation). lib/fsutil.cjs: ensureDir/isFile/isDirectory — consolidates 4 inline mkdirSync sites. One-shot migration script: tools/migrate-slug-maxlen.cjs (dry-run by default; --apply renames KB directories for any bug whose title exceeds 30 chars). forge-cli build-payload.cjs LIB_ALLOWLIST updated with frontmatter.cjs, slug.cjs, fsutil.cjs. Decision doc: doc/decisions/lib-extraction-contract.md.",
135
+ "regenerate": [
136
+ "tools:seed-store",
137
+ "tools:store-facade",
138
+ "tools:build-base-pack",
139
+ "tools:substitute-placeholders"
140
+ ],
141
+ "breaking": false,
142
+ "manual": [
143
+ "Run `node forge/forge/tools/migrate-slug-maxlen.cjs` to check for long-title bug entities that may have slug changes under maxLen=30. If affected entities are reported, run with --apply to rename KB directories."
144
+ ]
145
+ },
146
+ "0.47.0": {
147
+ "version": "0.47.1",
148
+ "date": "2026-05-22",
149
+ "notes": "FORGE-S25-T06 — extract lib/json-io.cjs + lib/schema-loader.cjs (memoized). Closes findings T-1, T-10, H-4d, N-T-2. Creates forge/forge/tools/lib/json-io.cjs (readJson/writeJson shared primitives extracted from FSImpl in store.cjs) and forge/forge/tools/lib/schema-loader.cjs (memoized 4-path search chain: project → in-tree → plugin-installed → forge-cli bundled .schemas/; extracted from _getSchemas() in store-cli.cjs). Migrates four consumers: tools/store.cjs (FSImpl._readJson/_writeJson now delegate to lib/json-io.cjs), tools/lib/store-facade.cjs (_loadDir, getEntity, loadForgeConfig inline JSON.parse calls replaced with readJson), tools/store-cli.cjs (_getSchemas() body replaced with loadSchemas() wrapper — memoization and 4-path chain live in schema-loader.cjs; dead _schemas variable removed), hooks/validate-write.js (inline loadSchema() replaced with resolveSchemaLoader()+loadSchemas() — gains the bundled .schemas/ path that the previous inline implementation was missing). Adds unit tests: json-io.test.cjs (7 cases), schema-loader.test.cjs (7 cases), store-facade.test.cjs (9 cases). Full plugin test suite 1516/1516 passing. forge-cli build-payload.cjs LIB_ALLOWLIST updated with json-io.cjs + schema-loader.cjs; npm run build passes; both files confirmed in dist/forge-payload/tools/lib/. MINIMAL_REQUIRED is now canonical in schema-loader.cjs (exported); store-cli.cjs retains its own copy for the exported symbol surface (backward-compat). resetSchemaCache() exported for test isolation only. Additive, non-breaking — no schema changes, no workflow regeneration needed.",
150
+ "regenerate": [
151
+ "tools:store-facade",
152
+ "tools:store-cli",
153
+ "hooks:validate-write"
154
+ ],
155
+ "breaking": false,
156
+ "manual": [
157
+ "After /forge:update, the new lib/json-io.cjs and lib/schema-loader.cjs files will be installed alongside the updated tools. No manual steps needed for standard installs.",
158
+ "forge-cli users: rebuild the forge-cli bundle (npm run build in forge-cli/) to pick up the two new lib files in the forge-cli bundled payload."
159
+ ]
160
+ },
161
+ "0.46.2": {
162
+ "version": "0.47.0",
163
+ "date": "2026-05-22",
164
+ "notes": "FORGE-S25-T12 schema hygiene — extract schemas/_defs/phaseSummary.schema.json (single-source for task + bug phase-summary shape; superset includes the bug-only `route` field used by meta-fix-bug.md triage). Refactor task.schema.json + bug.schema.json `summaries.*` slots to external $ref into the shared _defs file; drop inline $defs.phaseSummary from both (proven equivalent — bug `route` field now lives in the shared definition). Upgrade config.schema.json $schema to draft 2020-12 + HTTPS $id (https://github.com/Entelligentsia/agentic-skills/forge/config.schema.json) — body already 2020-12-compatible. Add root additionalProperties:false to config.schema.json — live dogfooded config validates clean, so no manual strip step is needed for known-good consumers. Port rich content from sdlc-config.schema.json into config.schema.json (pipelines definition, calibrationHistory, sprint.execution, pipeline.skipPhases + includeTokenDataInBugReports, commands.syntaxCheck object form, mode description) so config.schema.json becomes the single canonical source. DELETE forge/sdlc-config.schema.json outright (FORGE-S25-T12 / S-6) — three plugin consumers rewritten to schemas/config.schema.json in the same task: commands/health.md:57, init/sdlc-init.md:83, init/smoke-test.md:26+114. forge-cli's write-guard already loaded config.schema.json. Pre-commit grep across forge/forge/ + forge-cli/src/ confirmed zero live consumers of sdlc-config.schema.json (vision/*.md historical design docs only). Fix migrations.json typos schemas:events -> schemas:event at entries 0.43.12 and 0.43.11 (third occurrence at 0.45.0 was already correct). Remove stale schemas:update-check-cache target from 0.40.2 (FORGE-S25-T12 N-S-1; never resolvable — update-check-cache is a runtime cache, not a schema; documented via notes_addendum on the 0.40.2 entry). PREREQUISITE shared-surface change in forge-cli (paired same-commit): migration-engine.ts `schemas` branch in resolveCategory now walks .schemas/ recursively and preserves relative subdir structure under .forge/schemas/, so the new _defs/ subtree actually ships to user installs via /forge:update. forge-cli build-payload.cjs schema copy loop likewise recursive so the bundle carries _defs/phaseSummary.schema.json. Test surface: forge-cli adds migration-engine-defs.test.ts (5 cases, test-first) + migration-engine-dryrun.test.ts (2 cases, F-5 behavioural). Plugin tests stay 1492 green; forge-cli tests stay green (3 pre-existing unrelated doctor.test.ts failures from local auth env). Additive: no record field changes (phaseSummary $ref resolves to the same shape); store validation unchanged (validate-store.cjs validates top-level fields only, does not traverse $ref).",
165
+ "regenerate": [
166
+ "schemas",
167
+ "commands:health",
168
+ "init:sdlc-init",
169
+ "init:smoke-test"
170
+ ],
171
+ "breaking": false,
172
+ "manual": [
173
+ "If any project carries non-canonical keys at the root of .forge/config.json, the tightened additionalProperties:false will fail validation under the new draft-2020-12 schema. Inspect the live config and remove unknown root keys before /forge:update completes. Live dogfooded configs validate clean — this step only applies to hand-edited installs.",
174
+ "After /forge:update, manually delete `.forge/sdlc-config.schema.json` if present — it is the now-removed sibling schema; the regenerate mechanism only writes, it does not prune. No tooling reads it post-migration."
175
+ ]
176
+ },
177
+ "0.46.1": {
178
+ "version": "0.46.2",
179
+ "date": "2026-05-22",
180
+ "notes": "chore: FORGE-S25-T01 — plugin test baseline + no-skip CI gate. Adds `forge/tools/check-no-skipped-tests.cjs` (fails on committed it.skip / describe.skip / test.skip / it.only / describe.only / test.only / xit / xdescribe under forge/tools/__tests__ and forge/hooks/__tests__; warn-only secondary scan for FIXME:skip / TODO:re-enable so reminder comments cannot self-trip the gate; self-excludes its own paired test which carries literal marker fixtures). Expands `npm test` glob to `forge/tools/__tests__/*.test.cjs forge/hooks/__tests__/*.test.cjs` so hook failures can no longer hide outside CI. Lands `forge/.github/workflows/plugin-ci.yml` (Node 20, single job: skip-gate -> npm test -> manifest regen -> verify-integrity; no `npm ci` until T28 adds devDependencies + lockfile, marked with TODO(FORGE-S25-T28)). Deletes stale duplicate hook tests `check-update.test.js` and `forge-permissions.test.js` (canonical `.cjs` counterparts live in tools/__tests__/; grep proved zero callers outside docs/security/). Renames surviving hook tests post-init.test.js / post-sprint.test.js / validate-write.test.js to .test.cjs for layout uniformity (hook source `.js -> .cjs` rename deferred to T14). Adds `enhancement` to the store-cli emit RESERVED_GLOB so post-init/post-sprint hooks' enhancement-trigger events stop being silently dropped by the FK check — root-cause fix for the two pre-existing hook test failures. Adds `npm run lint:no-skip` script. Documents the no-skipped-tests policy in `forge/CLAUDE.md` Script Test Suite section. Full plugin suite now 1492/1492 (was 1437; +55 — hook suite + skip-gate + enhancement FK regression). Additive, non-breaking — no schema change, no workflow regeneration needed.",
181
+ "regenerate": [
182
+ "tools:check-no-skipped-tests",
183
+ "tools:store-cli",
184
+ "workflows:plugin-ci-tmp-smoke-job"
185
+ ],
186
+ "breaking": false,
187
+ "manual": []
188
+ },
189
+ "0.46.0": {
190
+ "version": "0.46.1",
191
+ "date": "2026-05-22",
192
+ "notes": "build: regenerate base-pack/workflows/enhance.md from meta sources to ship the FORGE-S24 SKILL-CURATION Phase 2 pipeline. The 0.45.1–0.45.7 entries declared `workflows:enhance` in their `regenerate` lists, but the meta→base-pack derivation (node tools/build-base-pack.cjs) was not re-run during the sprint, so the installable workflow stayed at the pre-S24 algorithm and downstream projects migrating to 0.46.0 received a stale workflow that lacked queue-drain (step 1a), recurrence scoring, delete-candidate detection (step 5b), compression gate (step 5b.5), and the LLM-judge step (step 5c). This patch bump regenerates the base-pack copy (init/base-pack/workflows/enhance.md — 280→600 lines, 20 S24 markers landed) and forces a re-copy on any project sitting at 0.46.0 by declaring `workflows:enhance` here. No plugin source change beyond the regenerated workflow file. Additive, non-breaking.",
193
+ "regenerate": [
194
+ "workflows:enhance"
195
+ ],
196
+ "breaking": false,
197
+ "manual": []
198
+ },
199
+ "0.45.7": {
200
+ "version": "0.46.0",
201
+ "date": "2026-05-22",
202
+ "notes": "chore: FORGE-S24 SKILL-CURATION sprint completion — gated rollout marker (FORGE-S24-T12). No plugin source change in this bump; the seven preceding entries (0.45.1 → 0.45.7) carry the actual SKILL-CURATION machinery: `skill_usage` event variant (T01, 0.45.1), proposal op classification (T02, 0.45.2), recurrence scoring (T04, 0.45.3), delete-candidate detection (T05, 0.45.4), LLM-judge rubric (T03, 0.45.5), compression gate (T06, 0.45.6), and queue-drain (T07, 0.45.7). T12 lands the gated-rollout contract on the forge-cli side via `forgeCli.skillCuration.enabled` (default OFF) — the four forge-cli modules (T08 skill-retriever, T09 skill-usage-tracker, T10 skill-curator-subagent, T11 friction-emit) no-op at entry when the flag is off, so a flag-off run is byte-identical to pre-FORGE-S24 behaviour. This plugin-side minor bump (0.45.7 → 0.46.0) is the convergent terminal marker for the sprint: it signals to operators running `/forge:update` that the full SKILL-CURATION pipeline has shipped end-to-end, and pairs with the forge-cli 0.13.4 → 0.14.0 bump that lands the rollout flag. No regeneration is required (no manifest entry change, no workflow change, no schema change in this bump alone — those landed in 0.45.1–0.45.7). Operators who want to enable the pipeline must (1) upgrade forge-cli to 0.14.0+ AND (2) set `forgeCli.skillCuration.enabled: true` in their project config at `<cwd>/.pi/forge-cli/config.json` (or the env override `FORGE_CLI_SKILL_CURATION_ENABLED=1` for one-shot operator use). Until both conditions hold, the new event variants and friction subkinds remain emitter-silent — the plugin schema continues to accept them on receipt, so a delayed forge-cli upgrade is non-blocking. Additive, non-breaking.",
203
+ "regenerate": [],
204
+ "breaking": false,
205
+ "manual": []
206
+ },
207
+ "0.45.6": {
208
+ "version": "0.45.7",
209
+ "date": "2026-05-22",
210
+ "notes": "feat: queue drain at sprint close — per-task curator → batched review (FORGE-S24-T07). Adds `forge/tools/queue-drain.cjs` exporting `bodyHash(body)` (sha256 hex digest, UTF-8), `dedupeKey(proposal)` (`<op>|<target_path>|<sha256(diff_body)>` composite), `dedupeProposals(proposals)` (first-seen-wins, no-mutation), `queuePathFor({queueRoot, sprintId, taskId, ts})` (canonical `.forge/enhancement-proposals/queue/<sprintId>/<taskId>-<ts>.json` path), `appendToQueue({queueRoot, sprintId, taskId, ts, proposals})` (writes one file per curator run; throws if path exists — append-only invariant per AC1), and `drainQueue({queueRoot, sprintId})` (returns `{proposals, files, errors}` after deduping the sprint sub-dir; empty-safe when queue missing per AC5; skips malformed JSON and reports them via `errors`; deterministic lexicographic file ordering ⇒ chronological because of the ts suffix). Per-task curators (T10) append proposals to the queue throughout the sprint without collision (AC2 — distinct ts per call); Phase 2 reads the queue once at sprint close, dedupes by `{op, target_path, body-hash}` (AC3), and merges the queued proposals with the friction-synthesised ones, then feeds a SINGLE batched array through recurrence (T04) → delete-candidate detection (T05) → compression gate (T06) → judge (T03) — one prompt per sprint, not one per task (AC4, paper §3.2.1 grouped reward). `meta/workflows/meta-enhance.md` Phase 2 gains step 1a (drain queue) and step-5 merge sub-block; the zero-input guard now checks both friction events AND queued proposals before exiting cleanly with `frictionCount:0,queuedCount:0`. The drain is read-only — Phase 2 never deletes queue files; operators triage them during retrospective. Test-first per Iron Law 2: `queue-drain.test.cjs` (19 cases — exports surface, bodyHash sha256 contract + empty-body digest + collision contract, dedupeKey AC3 composite + field-sensitivity, dedupeProposals dedup + order-preservation + no-mutation + empty + non-array, queuePathFor AC1 canonical layout + input validation x3, appendToQueue AC1 fresh-file write + AC2 no-collision + append-only refusal, drainQueue AC5 empty/missing safety + AC3 multi-file dedup merge + AC4 single-batch output + sprint scoping + input validation x2 + malformed-JSON resilience) landed before the helper. Pure helpers; fs-touching helpers are `appendToQueue` and `drainQueue` only. Full suite 1437/1437 (was 1418; +19). Additive, non-breaking.",
211
+ "regenerate": [
212
+ "tools:queue-drain",
213
+ "workflows:enhance"
214
+ ],
215
+ "breaking": false,
216
+ "manual": []
217
+ },
218
+ "0.45.5": {
219
+ "version": "0.45.6",
220
+ "date": "2026-05-22",
221
+ "notes": "feat: compression gate — reject >20% growth without 3+ frictions (FORGE-S24-T06). Adds `forge/tools/compression-gate.cjs` exporting `GROWTH_THRESHOLD` (0.20), `MIN_SUPPORTING_FRICTIONS` (3), `evaluateGrowth({currentBody, newBody}) -> {currentBytes, newBytes, growthRatio}`, `evaluateProposal({proposal, currentBody, newBody, supportingFrictionCount}) -> {admit, reason, growthRatio, currentBytes, newBytes, supportingFrictionCount, threshold, minSupportingFrictions, op}`, and `filterProposals({proposals, currentBodyFor, newBodyFor, supportingFrictionCountFor}) -> {admitted, rejected}`. The gate runs in `meta/workflows/meta-enhance.md` Phase 2 as new step 5b.5 BEFORE the LLM judge (5c) — cheap deterministic filter first. Only `update_skill` proposals are gated; `insert_skill` and `delete_skill` pass through unconditionally (insert bloat is the judge's `body_under_2kb` axis; delete only shrinks). Growth is measured byte-wise via `Buffer.byteLength(body, 'utf8')` on the new body that would land after applying the proposal's diff. Threshold comparison is strict (>0.20) so ties at exactly 20% admit. Default supporting friction count = `proposal.sourceFrictionIds.length`; the caller may override via `supportingFrictionCountFor(proposal)` when the policy is to count frictions citing the same skill across the sprint. Updates on an empty current body yield `growthRatio: Infinity` and the friction-support rule still applies; shrinks (negative growth) admit unconditionally. Rejected proposals are persisted to the same `phase2-<timestamp>-rejections.json` sibling that the T03 judge writes, with reason `compression_gate_growth_unsupported` and the full evaluation record alongside the original proposal — every drop (gate or judge) stays traceable. Closes the unbounded-growth failure mode of SkillOS — pasting pages of trajectory copy-paste to 'patch' a friction now requires real recurrence evidence. Test-first per Iron Law 2: `compression-gate.test.cjs` (25 cases — GROWTH_THRESHOLD/MIN_SUPPORTING_FRICTIONS constants, evaluateGrowth shape, UTF-8 multibyte byte counting, empty-current-body Infinity ratio, AC1 0-friction rejection, AC2 3-friction admission, 2-friction insufficiency, AC5 exact-20% strict admission, under-threshold admission, sourceFrictionIds fallback, shrink admission, AC4 insert_skill/delete_skill pass-through, input validation x5, filterProposals AC6 ordering/partition, empty input, no-mutation invariant, callback contracts, supportingFrictionCountFor override) landed before the helper. Pure module; no fs access; no LLM call. Full suite 1418/1418 (was 1393; +25). Additive, non-breaking.",
222
+ "regenerate": [
223
+ "tools:compression-gate",
224
+ "workflows:enhance"
225
+ ],
226
+ "breaking": false,
227
+ "manual": []
228
+ },
229
+ "0.45.4": {
230
+ "version": "0.45.5",
231
+ "date": "2026-05-22",
232
+ "notes": "feat: LLM-judge step in Phase 2 — Sonnet rubric, drop <3/5 (FORGE-S24-T03). Adds `forge/tools/judge-proposal.cjs` exporting `RUBRIC_AXES` (frozen 5-axis tuple: specificity, when_not_to_use, no_trajectory_copy_paste, body_under_2kb, cites_friction), `scoreProposal(proposal) -> { axes, average }` (deterministic per-axis 0..5 scorer), and `decideJudgement({ axes }) -> { verdict, average, axes, reason }` (pure aggregator: verdict === 'drop' iff average < 3, strict; ties at 3.0 keep). The rubric is single-sourced in this helper — Sonnet's role is to apply the same axes and emit scores that the helper then validates and aggregates; in the absence of an LLM call the deterministic scorer is the fallback. `decideJudgement` fails loud on missing or out-of-range axes (RangeError) so a malformed score sheet never silently coerces into a verdict. `meta/workflows/meta-enhance.md` Phase 2 gains step 5c calling `scoreProposal` + `decideJudgement` for every proposal between delete-candidate detection (5b) and artifact write (6); kept proposals continue to step 6, dropped proposals are persisted to a sibling `phase2-<timestamp>-rejections.json` carrying the original proposal alongside `{ verdict, average, axes, reason }` so every rejection is traceable for retro review (AC3). Per-axis heuristics: specificity scores deep paths, named (non-generic) skill files, non-trivial rationales, and recurrence trails; when_not_to_use checks for the literal phrase; no_trajectory_copy_paste flags long verbatim runs or unbroken non-whitespace blocks >= 400 bytes; body_under_2kb gates on `Buffer.byteLength(diff_body,'utf8') <= 2048`; cites_friction rewards `sourceFrictionIds.length` >= 1, boosting for multi-citation and recurrence. Consumes recurrence data from T04 in the specificity and cites_friction axes — proposals that recurred across multiple tasks score higher. Test-first per Iron Law 2: `judge-proposal.test.cjs` (13 cases — rubric-axes shape, 5/5 keep fixture, 1/5 drop fixture, body byte boundary at exactly 2048, zero-citation suppression, phrase-presence binary, AC6 explicit 2.8/5 drop fixture, keep + drop end-to-end decisions, exact-3.0 boundary keeps, missing-axis RangeError, out-of-range RangeError) landed before the helper. Pure module; no fs access; no LLM call. Full suite 1393/1393 (was 1380; +13). Additive, non-breaking.",
233
+ "regenerate": [
234
+ "tools:judge-proposal",
235
+ "workflows:enhance"
236
+ ],
237
+ "breaking": false,
238
+ "manual": []
239
+ },
240
+ "0.45.3": {
241
+ "version": "0.45.4",
242
+ "date": "2026-05-22",
243
+ "notes": "feat: delete-candidate detection — 3-sprint zero-use (FORGE-S24-T05). Adds `forge/tools/delete-candidate-detector.cjs` exporting `scanZeroUse({events, sprintOrder, windowSize})` and `buildDeleteProposals({events, sprintOrder, windowSize, targetPathFor})`. The detector scans `skill_usage` events across the trailing `windowSize` (default 3) sprints; any skill with at least one in-window observation AND zero `retrieved` AND zero `used` qualifies as a delete candidate. Skills with zero in-window observations are explicitly NOT proposed — that case is indistinguishable from a newly-added skill that hasn't been loaded yet. `meta/workflows/meta-enhance.md` Phase 2 gains step 5b calling `buildDeleteProposals` between recurrence annotation (step 5a) and artifact write (step 6). Each delete proposal carries `op: 'delete_skill'`, `target_path` resolved via the supplied `targetPathFor(skillId)` callback, a diff body and rationale that name the cold skill and the observed sprints, `sourceFrictionIds: []` (usage-derived, not friction-derived), `window_size`, `window_sprint_ids`, plus neutral `recurrence_count: 1` and `recurrence_task_ids: []` so the proposal shape stays uniform with the rest of the Phase 2 array. Carry-over caveat documented in the workflow: the trailing-3-sprint window only becomes meaningful once 3 sprints have elapsed since `skill_usage` emission landed in T01 (0.45.1); short-history runs produce advisory rather than authoritative deletes. This is the only mechanism by which the skill repository shrinks, completing the three-op classification rollout from T02 (insert/update were already in play). Test-first per Iron Law 2: `delete-candidate-detector.test.cjs` (16 cases — three-sprint zero-use baseline, retrieved=true disqualification, used=true disqualification, trailing-window guard against pre-window usage, default windowSize 3, configurable windowSize, never-observed-in-window suppression, empty events, friction-event filtering, short-history carry-over case, no-mutation invariant, multi-skill output, deterministic ordering, callback contract, plus AC restatement cases) landed before the detector. Pure module; no fs access. Full suite 1380/1380 (was 1364; +16). Additive, non-breaking.",
244
+ "regenerate": [
245
+ "tools:delete-candidate-detector",
246
+ "workflows:enhance"
247
+ ],
248
+ "breaking": false,
249
+ "manual": []
250
+ },
251
+ "0.45.2": {
252
+ "version": "0.45.3",
253
+ "date": "2026-05-22",
254
+ "notes": "feat: cross-task replay scoring — recurrence boost (FORGE-S24-T04). Adds `forge/tools/replay-scoring.cjs` exporting `computeRecurrence({events, subkind, skillId, fromTaskId, taskOrder})` and `annotateProposals(proposals, frictionEvents, taskOrder)`. For each Phase 2 enrichment proposal synthesised from a friction event at task `t`, the annotator scans tasks `t+1..N` in the same sprint for friction events matching the same `(subkind, evidence.skillId)` pair and stamps `recurrence_count` (>= 1, includes the origin task) and `recurrence_task_ids` (taskOrder-sorted) onto the proposal. Forward-only scan: earlier tasks before `fromTaskId` are excluded. Proposals without resolvable `sourceFrictionIds` (eventId not in the friction set, or the resolved event lacks subkind/evidence.skillId) receive a neutral `recurrence_count: 1` and empty `recurrence_task_ids: []`. `meta/workflows/meta-enhance.md` Phase 2 gains step 5a calling `annotateProposals` between synthesis (step 5) and artifact write (step 6); the step 5 contract is tightened to require `sourceFrictionIds` to carry every contributing eventId so the recurrence scan can resolve provenance. `forge/schemas/proposal.schema.json` gains optional `recurrence_count` (integer minimum:1) and `recurrence_task_ids` (array of strings) properties — additive only, both fields are optional, `additionalProperties: false` continues to reject unknown keys. Feeds T03 (judge) so specificity scoring can boost frictions that recurred across multiple tasks. Test-first per Iron Law 2: `replay-scoring.test.cjs` (11 cases — AC3 three-task recurrence, single-task baseline, forward-only-direction guard, subkind mismatch rejection, skillId mismatch rejection, intra-task dedup, fromTaskId-outside-taskOrder fallback, missing-evidence guard, full annotateProposals happy path, unresolved-provenance neutral case, no-mutation invariant) landed before the helper. Full suite 1364/1364 (was 1353; +11). Additive, non-breaking.",
255
+ "regenerate": [
256
+ "tools:replay-scoring",
257
+ "schemas:proposal",
258
+ "workflows:enhance"
259
+ ],
260
+ "breaking": false,
261
+ "manual": []
262
+ },
263
+ "0.45.1": {
264
+ "version": "0.45.2",
265
+ "date": "2026-05-22",
266
+ "notes": "feat: Phase 2 proposal op classification (FORGE-S24-T02). Adds `forge/schemas/proposal.schema.json` and `forge/tools/proposal-normalize.cjs`. The new schema enumerates `op` ∈ {insert_skill, update_skill, delete_skill} with required `target_path` + `diff_body`; `additionalProperties: false` rejects unknown fields. `meta/workflows/meta-enhance.md` Phase 2 (steps 5–6) now requires every enrichment proposal to carry this triplet and writes a machine-readable `phase2-<timestamp>.json` alongside the existing markdown artifact. Back-compat: legacy proposals without `op` are normalised to `insert_skill` via `proposal-normalize.cjs:normaliseProposal()` — downstream consumers route through the helper explicitly so normalisation is auditable. Foundation for T03 (judge), T05 (delete-candidate detection), T06 (compression gate), T07 (queue drain). Test-first per Iron Law 2: `proposal-schema.test.cjs` (6 cases including missing-op rejection, unknown-op rejection, additionalProperties:false, and the legacy normalisation contract) landed before the schema. Full suite 1353/1353. Additive, non-breaking.",
267
+ "regenerate": [
268
+ "schemas:proposal"
269
+ ],
270
+ "breaking": false,
271
+ "manual": []
272
+ },
273
+ "0.45.0": {
274
+ "version": "0.45.1",
275
+ "date": "2026-05-22",
276
+ "notes": "feat: event.schema.json — new `skill_usage` event variant (FORGE-S24-T01, plan 08 Phase B). Adds `skill_usage` to the `type` enum and a conditional allOf branch requiring {skillId, retrieved, used, tool_call_success_rate, retrieval_score}. Top-level numeric properties (`tool_call_success_rate`, `retrieval_score`) carry [0,1] declarative bounds; `skillId` is `minLength: 1`. The root `additionalProperties: false` gate continues to reject unknown fields on every variant. Foundation for Sprint S24 SKILL-CURATION: T02 emits, T04 retrieval-score correlation, T05 delete-candidate detection, T08 replay scoring all consume records of this type. No code path change to validate-store.cjs — the existing validateRecord() handles the new allOf branch via the same machinery used for friction / sprint-complete / sprint-halted variants. Additive, non-breaking: existing event records remain valid. Note on target version: TASK_PROMPT requested v0.45.0 but that tag already shipped (snapshot-replay change); bumping to 0.45.1 is the minimum forward step.",
277
+ "regenerate": [
278
+ "schemas:event"
279
+ ],
280
+ "breaking": false,
281
+ "manual": []
282
+ },
283
+ "0.44.10": {
284
+ "version": "0.45.0",
285
+ "date": "2026-05-21",
286
+ "notes": "feat: Approach A — snapshot replay (forge#107). manage-versions gains a new replay subcommand that restores user-enhanced files captured by /forge:enhance Phase 2 snapshots after /forge:regenerate writes fresh base-pack content. Fulfills layer 3 of the composition contract (Working Artifact = base + snapshot + user_enhancements) declared at manage-versions.cjs:13. regenerate.md updated to invoke replay per category (personas, skills, workflows, templates) between subagent generation and manifest record. Overlay semantics: user-enhanced files retain captured content; later snapshots win on collision. Pairs with v0.44.10 (forge#108 archive-path fix) which made layer 2 functional in the first place.",
287
+ "regenerate": [
288
+ "commands:regenerate",
289
+ "tools:manage-versions"
290
+ ],
291
+ "breaking": false,
292
+ "manual": []
293
+ },
294
+ "0.44.9": {
295
+ "version": "0.44.10",
296
+ "date": "2026-05-21",
297
+ "notes": "fix: manage-versions add-snapshot now archives files correctly when --enhanced-elements paths include the .forge/ prefix (forge#108). Previously, every archive directory has been created empty since basePackVersion 0.43.3 — layer 2 of the composition contract was silently a no-op. Tool now strips a leading .forge/ from each element path before joining; both .forge/-relative (e.g. personas/X.md) and project-root-relative (.forge/personas/X.md) forms accepted. Unblocks forge#107 (Approach A — snapshot replay). Pure tool fix.",
298
+ "regenerate": [
299
+ "tools:manage-versions"
300
+ ],
301
+ "breaking": false,
302
+ "manual": []
303
+ },
304
+ "0.44.8": {
305
+ "version": "0.44.9",
4
306
  "date": "2026-05-21",
5
- "notes": "fix: meta-enhance.md add phase-routing guidance to command table; add zero-friction guard (skip steps 3-10; emit event with frictionCount=0); renumber Phase 2 steps 2-9 to 3-10 to align with zero-friction guard.",
6
- "regenerate": ["workflows:enhance"],
307
+ "notes": "fix: /forge:regenerate personas + skills silently overwrote manual modifications (forge#106 / FORGE-BUG-037). Pre-write generation-manifest check added to both single-file and full-rebuild paths in commands/regenerate.md, mirroring the workflows + templates pattern. Closes asymmetric modification-detection across the four structural-element categories. Markdown-only fix.",
308
+ "regenerate": [
309
+ "commands:regenerate"
310
+ ],
7
311
  "breaking": false,
8
312
  "manual": []
9
313
  },
@@ -11,7 +315,9 @@
11
315
  "version": "0.44.7",
12
316
  "date": "2026-05-21",
13
317
  "notes": "fix: build-persona-pack.cjs schema mismatch — tool now accepts both base-pack (no frontmatter) and meta (YAML frontmatter) persona files; derives id/role/summary/responsibilities/outputs/file_ref from content for base-pack; derives file_ref from path for base-pack skills; throws (no empty-pack write) when both dirs are empty.",
14
- "regenerate": ["tools:build-persona-pack"],
318
+ "regenerate": [
319
+ "tools:build-persona-pack"
320
+ ],
15
321
  "breaking": false,
16
322
  "manual": []
17
323
  },
@@ -31,7 +337,10 @@
31
337
  "version": "0.44.5",
32
338
  "date": "2026-05-21",
33
339
  "notes": "Migration apply path — runMigrations() deterministic engine + /forge:update integration (FORGE-S23-T01). Adds forge-cli migration-engine.ts: semver-range traversal [from, to) on keys, per-category resolver (84 unique category strings), idempotency ledger at .forge/applied-migrations.json, always-on schema refresh post-pass, fileOps forward-compat, path-traversal defense. The /forge:update command now prompts to apply migrations after npm upgrade; FORGE_NON_INTERACTIVE=1 auto-applies. update_plan and plan_task workflows reference migration application steps.",
34
- "regenerate": ["workflows:update_plan", "workflows:plan_task"],
340
+ "regenerate": [
341
+ "workflows:update_plan",
342
+ "workflows:plan_task"
343
+ ],
35
344
  "breaking": false,
36
345
  "manual": []
37
346
  },
@@ -39,7 +348,9 @@
39
348
  "version": "0.44.4",
40
349
  "date": "2026-05-19",
41
350
  "notes": "Supervisor persona gains a top-level Iron Law forbidding `store-cli update-status` writes from any review phase. The workflow-level guard at meta-review-plan.md:76 and meta-review-implementation.md:82 (\"Bug mode — NO status write\") already existed; this is the persona-level reinforcement. Surfaced during FORGE-BUG-003 re-run testing of the forge-cli stale-ctx fix, where a supervisor subagent attempted `update-status bug FORGE-BUG-003 status plan-approved` against a bug already in terminal `fixed` state. store-cli correctly rejected the illegal transition; the persona update is defense-in-depth so the model stops attempting the write at all.",
42
- "regenerate": ["personas:supervisor"],
351
+ "regenerate": [
352
+ "personas:supervisor"
353
+ ],
43
354
  "breaking": false,
44
355
  "manual": []
45
356
  },
@@ -47,7 +358,10 @@
47
358
  "version": "0.44.3",
48
359
  "date": "2026-05-19",
49
360
  "notes": "Add `route` (enum [A, B]) to phaseSummary in bug.schema.json and the mirrored PHASE_SUMMARY_SCHEMA constant in store-cli.cjs. Required so triage subagents can record the fix-bug pipeline route decision via set-bug-summary. EMG-BUG-001 v0.44.2 first run failed with `route: undeclared field` because the schema's additionalProperties:false rejected the new field. Optional, triage-only by convention; non-triage phases ignore it.",
50
- "regenerate": ["tools:store-cli", "schemas:bug"],
361
+ "regenerate": [
362
+ "tools:store-cli",
363
+ "schemas:bug"
364
+ ],
51
365
  "breaking": false,
52
366
  "manual": []
53
367
  },
@@ -55,7 +369,9 @@
55
369
  "version": "0.44.2",
56
370
  "date": "2026-05-19",
57
371
  "notes": "parse-gates.cjs now accepts `n/a` as a valid `after <phase> = <verdict>` directive value, matching read-verdict.cjs § ALLOWED_VERDICTS. EMBERGLOW-BUG-001 (v0.44.1 second run) halted at preflight exit 2 (gate misconfigured) because the new fix-bug meta uses `after triage = n/a` (legitimate for setup phases that produce verdict: \"n/a\") and the parser hardcoded the verdict set to {approved, revision}. Test added covering n/a parsing.",
58
- "regenerate": ["tools:parse-gates"],
372
+ "regenerate": [
373
+ "tools:parse-gates"
374
+ ],
59
375
  "breaking": false,
60
376
  "manual": []
61
377
  },
@@ -63,7 +379,9 @@
63
379
  "version": "0.44.1",
64
380
  "date": "2026-05-19",
65
381
  "notes": "Rename the triage route field from summaries.triage.path to summaries.triage.route to avoid collision with bug.path (artifact directory). Symptom from v0.44.0 first run on emberglow (EMBERGLOW-BUG-001): triage subagent wrote `\"path\": \"A\"` to the bug record, overwriting the artifact directory, causing TRIAGE.md to land under .forge/store/bugs/ instead of engineering/bugs/. Field is now `route`. The fix-bug meta carries a 'Field-naming caution' callout citing the regression so future readers understand why route is named route, not path.",
66
- "regenerate": ["workflows:fix_bug"],
382
+ "regenerate": [
383
+ "workflows:fix_bug"
384
+ ],
67
385
  "breaking": false,
68
386
  "manual": [
69
387
  "If any bug at EMBERGLOW-BUG-001 vintage carries `path: \"A\"` or `path: \"B\"`, restore its real artifact directory before regeneration: FORGE_ALLOW_FORCE=1 node .forge/tools/store-cli.cjs write bug '{...corrected JSON with path: \"engineering/bugs/{slug}\"...}'"
@@ -129,7 +447,7 @@
129
447
  "0.43.15": {
130
448
  "version": "0.43.16",
131
449
  "date": "2026-05-15",
132
- "notes": "Sprint finalization ceremony (Plan 12). Add sprint-complete and sprint-halted event variants to event.schema.json with conditional requireds via allOf/if/then. Loosen top-level required (move taskId/phase/iteration into task-scoped allOf branch). Gate workflow finalize step-4 on verdict (Approved \u2192 completed; Revision Required + partial \u2192 partially-completed; Revision Required + complete \u2192 no transition). Update validate-store.cjs allOf if/then interpreter to support enum predicates alongside const. Pairs with forge-cli v0.6.6.",
450
+ "notes": "Sprint finalization ceremony (Plan 12). Add sprint-complete and sprint-halted event variants to event.schema.json with conditional requireds via allOf/if/then. Loosen top-level required (move taskId/phase/iteration into task-scoped allOf branch). Gate workflow finalize step-4 on verdict (Approved completed; Revision Required + partial partially-completed; Revision Required + complete no transition). Update validate-store.cjs allOf if/then interpreter to support enum predicates alongside const. Pairs with forge-cli v0.6.6.",
133
451
  "regenerate": [
134
452
  "schemas:event",
135
453
  "workflows:architect_review_sprint_completion"
@@ -140,7 +458,7 @@
140
458
  "0.43.14": {
141
459
  "version": "0.43.15",
142
460
  "date": "2026-05-14",
143
- "notes": "Slice-2 fragment-sweep completion. v0.43.14 introduced the orchestrator-emits-everything contract and surgically rewrote the five phase workflows (plan/review-plan/implement/validate/commit) plus their meta sources, but 16 other workflows \u2014 every other base-pack workflow body \u2014 still carried the pre-Slice-2 'Emit the complete event ... via store-cli emit' instruction and 'Execute Token Reporting' step in their Finalize blocks. Any subagent reading those workflows would faithfully reproduce the exact hallucination class Slice 2 was built to kill (LLM-fabricated model/provider strings). This patch removes those two lines from every remaining workflow \u2014 meta sources (meta-approve, meta-update-implementation, meta-review-implementation, meta-review-sprint-completion, meta-sprint-intake, meta-sprint-plan, meta-collate, meta-update-plan, meta-fix-bug, meta-retrospective) and base-pack mirrors (architect_sprint_plan, sprint_retrospective, architect_approve, collator_agent, architect_review_sprint_completion, fix_bug, update_implementation, architect_sprint_intake, update_plan, review_code). Replaced with the canonical 'Do NOT emit a phase event yourself; the orchestrator (or kickoff handler) owns event emission' directive. Also swept the friction-emit code block in meta-fix-bug.md and base-pack/fix_bug.md to point at friction-emit.cjs (matches the pattern shipped for meta-orchestrate in v0.43.14). For workflows that are kickoff-only standalones today (sprint-intake, sprint-plan, collate, retrospective, review-sprint-completion), removing the hardcoded emit means honest-absence of event coverage until the corresponding forge-cli kickoff handlers learn to emit on the LLM's behalf \u2014 a follow-up item. Tests: 1202 pass.",
461
+ "notes": "Slice-2 fragment-sweep completion. v0.43.14 introduced the orchestrator-emits-everything contract and surgically rewrote the five phase workflows (plan/review-plan/implement/validate/commit) plus their meta sources, but 16 other workflows every other base-pack workflow body still carried the pre-Slice-2 'Emit the complete event ... via store-cli emit' instruction and 'Execute Token Reporting' step in their Finalize blocks. Any subagent reading those workflows would faithfully reproduce the exact hallucination class Slice 2 was built to kill (LLM-fabricated model/provider strings). This patch removes those two lines from every remaining workflow meta sources (meta-approve, meta-update-implementation, meta-review-implementation, meta-review-sprint-completion, meta-sprint-intake, meta-sprint-plan, meta-collate, meta-update-plan, meta-fix-bug, meta-retrospective) and base-pack mirrors (architect_sprint_plan, sprint_retrospective, architect_approve, collator_agent, architect_review_sprint_completion, fix_bug, update_implementation, architect_sprint_intake, update_plan, review_code). Replaced with the canonical 'Do NOT emit a phase event yourself; the orchestrator (or kickoff handler) owns event emission' directive. Also swept the friction-emit code block in meta-fix-bug.md and base-pack/fix_bug.md to point at friction-emit.cjs (matches the pattern shipped for meta-orchestrate in v0.43.14). For workflows that are kickoff-only standalones today (sprint-intake, sprint-plan, collate, retrospective, review-sprint-completion), removing the hardcoded emit means honest-absence of event coverage until the corresponding forge-cli kickoff handlers learn to emit on the LLM's behalf a follow-up item. Tests: 1202 pass.",
144
462
  "regenerate": [
145
463
  "workflows:fix_bug",
146
464
  "workflows:update_plan",
@@ -160,7 +478,7 @@
160
478
  "0.43.13": {
161
479
  "version": "0.43.14",
162
480
  "date": "2026-05-14",
163
- "notes": "Telemetry contract Slice 2 \u2014 orchestrator-emits-everything. Slice 1 (v0.43.13) added `provider` as required and moved cost out of the schema, but subagents were still hand-building 14-field event JSON containing runtime facts (model, provider, eventId, timestamps, iteration) and hallucinating them (HLO-S01-T05 evidence: events carried `provider:\"anthropic\"`/`model:\"claude-sonnet-4-20250514\"` while the subagent actually ran on `glm-5.1:cloud`). Slice 2 makes runtime attribution the orchestrator's responsibility end-to-end. Plugin-side changes: (1) workflow fragments `_fragments/event-emission-schema.md` and `_fragments/friction-emit.md` rewritten in both meta/ and init/base-pack/ \u2014 replace 'build a 14-field event JSON' instructions with 'write {PHASE}-SUMMARY.json; the orchestrator emits the event'. ALL hardcoded example model strings removed (the source of pattern-copy hallucination). (2) Phase meta workflows (meta-plan-task, meta-review-plan, meta-implement, meta-validate, meta-commit) and their base-pack mirrors (plan_task, review_plan, implement_plan, validate_task, commit_task) drop the `Emit the complete event ... via store-cli emit` line and the `Execute Token Reporting` step \u2014 subagents now only write SUMMARY and return. (3) meta-orchestrate.md + base-pack/orchestrate_task.md Event Emission and Friction Emit sections rewritten: orchestrator owns emission; friction is recorded by subagents via the new `friction-emit.cjs` tool which appends judgement-only records to `.forge/cache/FRICTION-{workflow}.jsonl`, drained and stamped with runtime attribution by the orchestrator. (4) New tool `forge/forge/tools/friction-emit.cjs` \u2014 judgement-only CLI that refuses any runtime-attribution flag (--model, --provider, --eventId, timestamps, tokens). (5) New tool `forge/forge/tools/backfill-provider.cjs` \u2014 one-shot helper for the 0.43.13 manual[] item (stamps provider:\"unknown\" on legacy events missing the field; sidecars skipped). Both tools shipped test-first per Iron Law 2. Slice 2 runtime emit site lives in forge-cli (run-task.ts) \u2014 see forge-cli v0.6.5 changelog. Tests: 1202 pass.",
481
+ "notes": "Telemetry contract Slice 2 orchestrator-emits-everything. Slice 1 (v0.43.13) added `provider` as required and moved cost out of the schema, but subagents were still hand-building 14-field event JSON containing runtime facts (model, provider, eventId, timestamps, iteration) and hallucinating them (HLO-S01-T05 evidence: events carried `provider:\"anthropic\"`/`model:\"claude-sonnet-4-20250514\"` while the subagent actually ran on `glm-5.1:cloud`). Slice 2 makes runtime attribution the orchestrator's responsibility end-to-end. Plugin-side changes: (1) workflow fragments `_fragments/event-emission-schema.md` and `_fragments/friction-emit.md` rewritten in both meta/ and init/base-pack/ replace 'build a 14-field event JSON' instructions with 'write {PHASE}-SUMMARY.json; the orchestrator emits the event'. ALL hardcoded example model strings removed (the source of pattern-copy hallucination). (2) Phase meta workflows (meta-plan-task, meta-review-plan, meta-implement, meta-validate, meta-commit) and their base-pack mirrors (plan_task, review_plan, implement_plan, validate_task, commit_task) drop the `Emit the complete event ... via store-cli emit` line and the `Execute Token Reporting` step subagents now only write SUMMARY and return. (3) meta-orchestrate.md + base-pack/orchestrate_task.md Event Emission and Friction Emit sections rewritten: orchestrator owns emission; friction is recorded by subagents via the new `friction-emit.cjs` tool which appends judgement-only records to `.forge/cache/FRICTION-{workflow}.jsonl`, drained and stamped with runtime attribution by the orchestrator. (4) New tool `forge/forge/tools/friction-emit.cjs` judgement-only CLI that refuses any runtime-attribution flag (--model, --provider, --eventId, timestamps, tokens). (5) New tool `forge/forge/tools/backfill-provider.cjs` one-shot helper for the 0.43.13 manual[] item (stamps provider:\"unknown\" on legacy events missing the field; sidecars skipped). Both tools shipped test-first per Iron Law 2. Slice 2 runtime emit site lives in forge-cli (run-task.ts) see forge-cli v0.6.5 changelog. Tests: 1202 pass.",
164
482
  "regenerate": [
165
483
  "fragments:event-emission-schema",
166
484
  "fragments:friction-emit",
@@ -176,15 +494,15 @@
176
494
  ],
177
495
  "breaking": false,
178
496
  "manual": [
179
- "Run `node $FORGE_ROOT/tools/backfill-provider.cjs` once on existing installs to stamp `provider:\"unknown\"` on legacy events missing the field \u2014 this is the helper promised in 0.43.13 manual[]. After backfill, all event reads should validate cleanly."
497
+ "Run `node $FORGE_ROOT/tools/backfill-provider.cjs` once on existing installs to stamp `provider:\"unknown\"` on legacy events missing the field this is the helper promised in 0.43.13 manual[]. After backfill, all event reads should validate cleanly."
180
498
  ]
181
499
  },
182
500
  "0.43.12": {
183
501
  "version": "0.43.13",
184
502
  "date": "2026-05-14",
185
- "notes": "Telemetry contract fix (Slice 1) \u2014 refactors the token-usage capture pipeline from a subagent self-probe (which never worked: pi runtime has no `/cost` probe, and the workflow's `tokenSource: \"missing\"` writes were rejected by the schema enum [reported, estimated] causing 8 schema_drift errors per HLO-S01-T04 run) to an orchestrator-owned model. Three changes: (1) event.schema.json adds `provider` as a required field \u2014 same model is priced differently across providers (Anthropic direct vs Bedrock vs Vertex; ZAI cloud vs self-host) and cost is unattributable without it; auto-populated via new discoverProvider() helper from FORGE_PROVIDER / CLAUDE_CODE_PROVIDER env vars, falling back to \"unknown\" rather than guessing. (2) Dropped `estimatedCostUSD` from event + event-sidecar schemas entirely \u2014 cost is derived at collate time from (provider, model, tokens) via tools/lib/pricing.cjs, keeping the dataset truthful when pricing changes. (3) Rewrote meta/workflows/_fragments/finalize.md AND init/base-pack/workflows/_fragments/finalize.md to delete the broken `/cost` probe + `\"missing\"` write instructions; new rule: subagents MUST NOT write token sidecars; orchestrator owns telemetry and emits the canonical event with provider-reported usage. If runtime doesn't surface usage, fields are omitted (honest absence beats placeholder zeros). collate.cjs drops the `missing` bucket from tokenSourceCounts \u2014 token-less events surface as husks instead. Tool changes: store-cli.cjs (CANONICAL_TOKEN_FIELDS + SIDECAR_ACCEPTED_FIELDS adjusted, --provider flag added on record-usage, --estimated-cost-usd flag explicitly rejected with helpful error, discoverProvider() exported); estimate-usage.cjs (removed PRICE_PER_1M heuristic table + DEFAULT_PRICE_PER_1M \u2014 returns only inputTokens/outputTokens/tokenSource); collate.cjs (cost recomputed via pricing.cjs is now the only source). Slice 2 (forge-cli runtime emit site) will wire the orchestrator emit path that consumes this contract \u2014 out of scope here. Tests: 1173 pass, 1 pre-existing FRAGMENT_MAP failure unrelated to this slice. No `.forge/` or `engineering/` edits.",
503
+ "notes": "Telemetry contract fix (Slice 1) refactors the token-usage capture pipeline from a subagent self-probe (which never worked: pi runtime has no `/cost` probe, and the workflow's `tokenSource: \"missing\"` writes were rejected by the schema enum [reported, estimated] causing 8 schema_drift errors per HLO-S01-T04 run) to an orchestrator-owned model. Three changes: (1) event.schema.json adds `provider` as a required field same model is priced differently across providers (Anthropic direct vs Bedrock vs Vertex; ZAI cloud vs self-host) and cost is unattributable without it; auto-populated via new discoverProvider() helper from FORGE_PROVIDER / CLAUDE_CODE_PROVIDER env vars, falling back to \"unknown\" rather than guessing. (2) Dropped `estimatedCostUSD` from event + event-sidecar schemas entirely cost is derived at collate time from (provider, model, tokens) via tools/lib/pricing.cjs, keeping the dataset truthful when pricing changes. (3) Rewrote meta/workflows/_fragments/finalize.md AND init/base-pack/workflows/_fragments/finalize.md to delete the broken `/cost` probe + `\"missing\"` write instructions; new rule: subagents MUST NOT write token sidecars; orchestrator owns telemetry and emits the canonical event with provider-reported usage. If runtime doesn't surface usage, fields are omitted (honest absence beats placeholder zeros). collate.cjs drops the `missing` bucket from tokenSourceCounts token-less events surface as husks instead. Tool changes: store-cli.cjs (CANONICAL_TOKEN_FIELDS + SIDECAR_ACCEPTED_FIELDS adjusted, --provider flag added on record-usage, --estimated-cost-usd flag explicitly rejected with helpful error, discoverProvider() exported); estimate-usage.cjs (removed PRICE_PER_1M heuristic table + DEFAULT_PRICE_PER_1M returns only inputTokens/outputTokens/tokenSource); collate.cjs (cost recomputed via pricing.cjs is now the only source). Slice 2 (forge-cli runtime emit site) will wire the orchestrator emit path that consumes this contract out of scope here. Tests: 1173 pass, 1 pre-existing FRAGMENT_MAP failure unrelated to this slice. No `.forge/` or `engineering/` edits.",
186
504
  "regenerate": [
187
- "schemas:events",
505
+ "schemas:event",
188
506
  "schemas:event-sidecar",
189
507
  "fragments:finalize",
190
508
  "tools:store-cli",
@@ -194,14 +512,14 @@
194
512
  ],
195
513
  "breaking": false,
196
514
  "manual": [
197
- "Existing event records on disk that lack `provider` will fail strict validation. On re-running collate or any read path that validates events, stamp legacy records with `provider: \"unknown\"` \u2014 a one-shot backfill helper will ship in a follow-up patch. New events emitted by `store-cli emit` auto-populate `provider` via FORGE_PROVIDER env var or fall back to \"unknown\".",
515
+ "Existing event records on disk that lack `provider` will fail strict validation. On re-running collate or any read path that validates events, stamp legacy records with `provider: \"unknown\"` a one-shot backfill helper will ship in a follow-up patch. New events emitted by `store-cli emit` auto-populate `provider` via FORGE_PROVIDER env var or fall back to \"unknown\".",
198
516
  "`estimatedCostUSD` is no longer accepted on event or event-sidecar records. Existing records on disk that carry the field will fail strict validation; collate's recomputation path (lib/pricing.cjs) is now authoritative."
199
517
  ]
200
518
  },
201
519
  "0.43.11": {
202
520
  "version": "0.43.12",
203
521
  "date": "2026-05-14",
204
- "notes": "build-base-pack.cjs + build-manifest.cjs allowlist bug \u2014 fragments added to meta/workflows/_fragments/ after the allowlists were last edited never reached init/base-pack/workflows/_fragments/, so the user-facing bundle silently dropped them. Discovered while debugging HLO-S01-T03 plan-phase friction in the testbench: store-cli verb fumble (#95) and event-shape iteration (#87) persisted after /forge:regenerate because store-cli-verbs.md and friction-emit.md were missing from the regenerated `.forge/workflows/_fragments/` even though the workflow body referenced them. Fix: both build-base-pack.cjs (fragment copy loop + expected-files validator) and build-manifest.cjs (FRAGMENT_MAP) now enumerate fragments dynamically from `meta/workflows/_fragments/*.md` instead of from hardcoded lists. Added parity assertion in build-base-pack.test.cjs that base-pack `_fragments/` must equal meta `_fragments/` exactly. Also bumped base-pack-byte-budget overrides for plan_task.md (5120\u21925632), implement_plan.md (5120\u21925888), validate_task.md (4096\u21924608) to absorb the now-included fragment references. Discovered blind spot: the replay-friction harness validates meta-source, not base-pack output \u2014 #95 PASSed in HLO-S01 without ever generating the user-facing fragment. Manifest fragment count 4 \u2192 6 (store-cli-verbs.md + friction-emit.md now shipped).",
522
+ "notes": "build-base-pack.cjs + build-manifest.cjs allowlist bug fragments added to meta/workflows/_fragments/ after the allowlists were last edited never reached init/base-pack/workflows/_fragments/, so the user-facing bundle silently dropped them. Discovered while debugging HLO-S01-T03 plan-phase friction in the testbench: store-cli verb fumble (#95) and event-shape iteration (#87) persisted after /forge:regenerate because store-cli-verbs.md and friction-emit.md were missing from the regenerated `.forge/workflows/_fragments/` even though the workflow body referenced them. Fix: both build-base-pack.cjs (fragment copy loop + expected-files validator) and build-manifest.cjs (FRAGMENT_MAP) now enumerate fragments dynamically from `meta/workflows/_fragments/*.md` instead of from hardcoded lists. Added parity assertion in build-base-pack.test.cjs that base-pack `_fragments/` must equal meta `_fragments/` exactly. Also bumped base-pack-byte-budget overrides for plan_task.md (5120→5632), implement_plan.md (5120→5888), validate_task.md (4096→4608) to absorb the now-included fragment references. Discovered blind spot: the replay-friction harness validates meta-source, not base-pack output #95 PASSed in HLO-S01 without ever generating the user-facing fragment. Manifest fragment count 4 6 (store-cli-verbs.md + friction-emit.md now shipped).",
205
523
  "regenerate": [
206
524
  "tools:build-base-pack",
207
525
  "tools:build-manifest",
@@ -215,7 +533,7 @@
215
533
  "0.43.10": {
216
534
  "version": "0.43.11",
217
535
  "date": "2026-05-13",
218
- "notes": "HLO-S01 friction-fix sweep \u2014 batched migration covering 10 fixes surfaced by the 2026-05-13 dogfood run on /home/boni/src/forge-testbench/hello/ (umbrella forge#93). All non-breaking; each verified by the replay-friction harness (engineering/runbooks/hlo-s01/ in forge-engineering). Fixes: (a) #78/#76 meta-review-plan: `review-approved` \u2192 `plan-approved` so the review\u2192plan-approved status flip matches the FSM; (b) #80 widen `event.type` enum to cover task-implemented, plan-complete, review-passed and the rest of the emitted set; (c) #79 task FSM permits `planned \u2192 implemented` (was illegal, breaking run-task phase 4 writeback); (d) #96 inline FSM transition table into plan_task / review_plan / implement_plan workflow prose so subagents read state machine inline, not from a sibling fragment; (e) #95 embed store-cli verb cheat-sheet into all run-task / fix-bug phase workflows via new shared `_fragments/store-cli-verbs.md` \u2014 eliminates `forge_store` invocation hallucinations; (f) #84 replace `/cost` slash-command pre-flight in implement/validate/update-implementation with a runtime-conditional probe ({{RUNTIME_COST_CMD}}) \u2014 fixes hard-fail when /cost is unavailable in the runtime; (g) #94 surface resolved `commands.test` (placeholder substitution) in workflow bodies, not just frontmatter \u2014 subagents now see the actual test command; (h) #87 gate `--force` behind `FORGE_ALLOW_FORCE` env in store-cli AND inline canonical event-shape into every workflow emit line (was two-bug pair: LLM-bypass + event mismatch); (i) #82 commit_task no longer hardcodes 'Claude' as Co-author \u2014 uses runtime principal; (j) forge-cli#5 forge-tools piece \u2014 native `--task-suffix` / `--sprint-suffix` flags on store-cli short-form resolution. Row 8 (forge#86 kickoff-shim markers in review_plan/review_code) was already covered by the 0.43.5 wave-2 migration \u2014 no new sub-target needed. forge#7 deferred (SKIPPED: needs live FORGE_DEBUG capture). Also bumped per-file byte budgets in phase-frontmatter.test.cjs across all nine subagent-targeted meta-workflow files (e.g. meta-plan-task 5500\u21926912, meta-implement 5500\u21927168, meta-update-plan 3072\u21923584) \u2014 same precedent as the 0.43.6 wave: legitimate friction-fix growth from #95 cheat-sheet + #96 FSM table + #87 event-shape + #84 cost probe + #94 commands.test inlined across phases. Budgets sized to current bytes + ~10% headroom, 512B-aligned.",
536
+ "notes": "HLO-S01 friction-fix sweep batched migration covering 10 fixes surfaced by the 2026-05-13 dogfood run on /home/boni/src/forge-testbench/hello/ (umbrella forge#93). All non-breaking; each verified by the replay-friction harness (engineering/runbooks/hlo-s01/ in forge-engineering). Fixes: (a) #78/#76 meta-review-plan: `review-approved` `plan-approved` so the review→plan-approved status flip matches the FSM; (b) #80 widen `event.type` enum to cover task-implemented, plan-complete, review-passed and the rest of the emitted set; (c) #79 task FSM permits `planned implemented` (was illegal, breaking run-task phase 4 writeback); (d) #96 inline FSM transition table into plan_task / review_plan / implement_plan workflow prose so subagents read state machine inline, not from a sibling fragment; (e) #95 embed store-cli verb cheat-sheet into all run-task / fix-bug phase workflows via new shared `_fragments/store-cli-verbs.md` eliminates `forge_store` invocation hallucinations; (f) #84 replace `/cost` slash-command pre-flight in implement/validate/update-implementation with a runtime-conditional probe ({{RUNTIME_COST_CMD}}) fixes hard-fail when /cost is unavailable in the runtime; (g) #94 surface resolved `commands.test` (placeholder substitution) in workflow bodies, not just frontmatter subagents now see the actual test command; (h) #87 gate `--force` behind `FORGE_ALLOW_FORCE` env in store-cli AND inline canonical event-shape into every workflow emit line (was two-bug pair: LLM-bypass + event mismatch); (i) #82 commit_task no longer hardcodes 'Claude' as Co-author uses runtime principal; (j) forge-cli#5 forge-tools piece native `--task-suffix` / `--sprint-suffix` flags on store-cli short-form resolution. Row 8 (forge#86 kickoff-shim markers in review_plan/review_code) was already covered by the 0.43.5 wave-2 migration no new sub-target needed. forge#7 deferred (SKIPPED: needs live FORGE_DEBUG capture). Also bumped per-file byte budgets in phase-frontmatter.test.cjs across all nine subagent-targeted meta-workflow files (e.g. meta-plan-task 5500→6912, meta-implement 5500→7168, meta-update-plan 3072→3584) same precedent as the 0.43.6 wave: legitimate friction-fix growth from #95 cheat-sheet + #96 FSM table + #87 event-shape + #84 cost probe + #94 commands.test inlined across phases. Budgets sized to current bytes + ~10% headroom, 512B-aligned.",
219
537
  "regenerate": [
220
538
  "workflows:plan_task",
221
539
  "workflows:review_plan",
@@ -223,7 +541,7 @@
223
541
  "workflows:validate_task",
224
542
  "workflows:update_implementation",
225
543
  "workflows:commit_task",
226
- "schemas:events",
544
+ "schemas:event",
227
545
  "tools:store-cli",
228
546
  "fragments:store-cli-verbs",
229
547
  "tools:integrity"
@@ -234,7 +552,7 @@
234
552
  "0.43.9": {
235
553
  "version": "0.43.10",
236
554
  "date": "2026-05-13",
237
- "notes": "Verdict-source refactor: preflight-gate `after <phase>` predicates now read structured verdicts from store.task.summaries.<canonical>.verdict (and task.status for approve), not regex-parse markdown. New module forge/tools/read-verdict.cjs centralises the phase.role \u2192 canonical-summary-key mapping (mirrors VALID_SUMMARY_PHASES) and the approve-via-status sentinel. Eliminates three classes of recurring bugs: (a) forge#91 (approve phase markdown-vs-store mismatch), (b) forge-cli#11 (review-code \u2192 code_review key reversal), (c) the underscore-swap defensive fallback dance in run-task.ts (still present, now redundant). Removed: forge/tools/parse-verdict.cjs and its test (no consumers remaining). preflight()'s `verdictSources` parameter and the `resolveVerdictSources` helper are gone \u2014 `after` reads live from state.task / state.bug directly. The `**Verdict:**` line in review markdown is now a human breadcrumb only; the byte-budget lint asserting its presence is retained but documented as advisory. meta-approve.md updated to clarify the markdown line is not load-bearing. Live testbench HLO-S01-T01 commit preflight: EXIT=0 via the new store path. +11 read-verdict unit tests, +2 preflight tests (approve via status; revision in store).",
555
+ "notes": "Verdict-source refactor: preflight-gate `after <phase>` predicates now read structured verdicts from store.task.summaries.<canonical>.verdict (and task.status for approve), not regex-parse markdown. New module forge/tools/read-verdict.cjs centralises the phase.role canonical-summary-key mapping (mirrors VALID_SUMMARY_PHASES) and the approve-via-status sentinel. Eliminates three classes of recurring bugs: (a) forge#91 (approve phase markdown-vs-store mismatch), (b) forge-cli#11 (review-code code_review key reversal), (c) the underscore-swap defensive fallback dance in run-task.ts (still present, now redundant). Removed: forge/tools/parse-verdict.cjs and its test (no consumers remaining). preflight()'s `verdictSources` parameter and the `resolveVerdictSources` helper are gone `after` reads live from state.task / state.bug directly. The `**Verdict:**` line in review markdown is now a human breadcrumb only; the byte-budget lint asserting its presence is retained but documented as advisory. meta-approve.md updated to clarify the markdown line is not load-bearing. Live testbench HLO-S01-T01 commit preflight: EXIT=0 via the new store path. +11 read-verdict unit tests, +2 preflight tests (approve via status; revision in store).",
238
556
  "regenerate": [
239
557
  "tools:preflight-gate",
240
558
  "tools:read-verdict",
@@ -256,7 +574,7 @@
256
574
  "0.43.7": {
257
575
  "version": "0.43.8",
258
576
  "date": "2026-05-13",
259
- "notes": "preflight-gate.cjs: gate-less phases now pass through (exit 0) instead of escalating (exit 2). Some run-task phases are intentionally gate-less by design \u2014 writeback (collator regen) has no predecessor verdict to check. The previous semantic conflated `phase not declared in any workflow` and `workflow declares no gate block for phase` with `misconfiguration` (exit 2), causing live regression at phase 7 (writeback) of /forge:run-task HLO-S01-T01: `\u00d7 preflight gate escalated for phase writeback (exit 2); manual intervention required`. Both `no workflow declares phase` and `no gate block for declared phase` now exit 0 with an informational stderr note. Exit 2 stays reserved for real argument / parse errors (unchanged). +1 regression test (sibling case: workflow exists, no gate block).",
577
+ "notes": "preflight-gate.cjs: gate-less phases now pass through (exit 0) instead of escalating (exit 2). Some run-task phases are intentionally gate-less by design writeback (collator regen) has no predecessor verdict to check. The previous semantic conflated `phase not declared in any workflow` and `workflow declares no gate block for phase` with `misconfiguration` (exit 2), causing live regression at phase 7 (writeback) of /forge:run-task HLO-S01-T01: preflight gate escalated for phase writeback (exit 2); manual intervention required`. Both `no workflow declares phase` and `no gate block for declared phase` now exit 0 with an informational stderr note. Exit 2 stays reserved for real argument / parse errors (unchanged). +1 regression test (sibling case: workflow exists, no gate block).",
260
578
  "regenerate": [
261
579
  "tools:preflight-gate"
262
580
  ],
@@ -266,7 +584,7 @@
266
584
  "0.43.6": {
267
585
  "version": "0.43.7",
268
586
  "date": "2026-05-13",
269
- "notes": "Pack-06 materialization-marker regression fix, third (final) wave + structural lint. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and `forge_store` token) to the remaining six meta workflows that subagent-target the run-task / fix-bug pipeline: meta-validate.md, meta-approve.md, meta-collate.md, meta-commit.md, meta-update-plan.md, meta-update-implementation.md. Live testbench surfaced the gap at phase 5 (validate) of /forge:run-task: kickoff shim hard-failed with `\u00d7 workflow regression: Store-Write Verification not found in validate_task.md`. Three waves (0.43.2 plan/implement, 0.43.5 review-plan/review-code, 0.43.6 validate/approve/collate/commit/update-plan/update-impl) is the cost of discovering one phase at a time. Encoded a regression lint in base-pack-byte-budget.test.cjs (`phase files carry kickoff-shim markers`) that asserts all four markers across every PHASE_FILE \u2014 future drop-throughs fail the build, not the smoke test. Also bumped per-file byte budgets for meta-validate.md (4096\u21925120), meta-approve.md / meta-commit.md (3072\u21924096). See forge#? (this entry's GH issue).",
587
+ "notes": "Pack-06 materialization-marker regression fix, third (final) wave + structural lint. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and `forge_store` token) to the remaining six meta workflows that subagent-target the run-task / fix-bug pipeline: meta-validate.md, meta-approve.md, meta-collate.md, meta-commit.md, meta-update-plan.md, meta-update-implementation.md. Live testbench surfaced the gap at phase 5 (validate) of /forge:run-task: kickoff shim hard-failed with workflow regression: Store-Write Verification not found in validate_task.md`. Three waves (0.43.2 plan/implement, 0.43.5 review-plan/review-code, 0.43.6 validate/approve/collate/commit/update-plan/update-impl) is the cost of discovering one phase at a time. Encoded a regression lint in base-pack-byte-budget.test.cjs (`phase files carry kickoff-shim markers`) that asserts all four markers across every PHASE_FILE future drop-throughs fail the build, not the smoke test. Also bumped per-file byte budgets for meta-validate.md (4096→5120), meta-approve.md / meta-commit.md (3072→4096). See forge#? (this entry's GH issue).",
270
588
  "regenerate": [
271
589
  "workflows:validate_task",
272
590
  "workflows:architect_approve",
@@ -281,7 +599,7 @@
281
599
  "0.43.5": {
282
600
  "version": "0.43.6",
283
601
  "date": "2026-05-13",
284
- "notes": "preflight-gate.cjs artifact-dir resolution fix. Two compounding bugs surfaced when a sprint dir contained an artifact directory named exactly `<taskId>` (no `-<slug>` suffix \u2014 modern convention). (1) resolveTaskArtifactDir Pass 1 required `entry.startsWith(taskId + '-')`, rejecting exact-match entries. Pass 2's `<sprintId>-` prefix matcher also didn't apply when taskId already embeds sprintId (e.g. taskId=`HLO-S01-T01`, sprintId=`S01`). resolveTaskArtifactDir returned null. (2) The fallback then set `taskArtifactPath = taskRecord.path` directly \u2014 but `taskRecord.path` is the primary source FILE (e.g. `TASK_PROMPT.md`), not a directory. Predecessor-review resolution then appended `PLAN_REVIEW.md` to the file path, producing bogus paths like `.../TASK_PROMPT.md/PLAN_REVIEW.md` (ENOTDIR), failing every `after <phase>` gate. Fix: Pass 1 now also accepts `entry === taskId`; fallback dirname()s task.path when it has a file extension. Live testbench regression: phase 3 (implement) of `/forge:run-task HLO-S01-T01` was hard-failing preflight. After patch, EXIT=0. See forge#?.",
602
+ "notes": "preflight-gate.cjs artifact-dir resolution fix. Two compounding bugs surfaced when a sprint dir contained an artifact directory named exactly `<taskId>` (no `-<slug>` suffix modern convention). (1) resolveTaskArtifactDir Pass 1 required `entry.startsWith(taskId + '-')`, rejecting exact-match entries. Pass 2's `<sprintId>-` prefix matcher also didn't apply when taskId already embeds sprintId (e.g. taskId=`HLO-S01-T01`, sprintId=`S01`). resolveTaskArtifactDir returned null. (2) The fallback then set `taskArtifactPath = taskRecord.path` directly but `taskRecord.path` is the primary source FILE (e.g. `TASK_PROMPT.md`), not a directory. Predecessor-review resolution then appended `PLAN_REVIEW.md` to the file path, producing bogus paths like `.../TASK_PROMPT.md/PLAN_REVIEW.md` (ENOTDIR), failing every `after <phase>` gate. Fix: Pass 1 now also accepts `entry === taskId`; fallback dirname()s task.path when it has a file extension. Live testbench regression: phase 3 (implement) of `/forge:run-task HLO-S01-T01` was hard-failing preflight. After patch, EXIT=0. See forge#?.",
285
603
  "regenerate": [
286
604
  "tools:preflight-gate"
287
605
  ],
@@ -291,7 +609,7 @@
291
609
  "0.43.4": {
292
610
  "version": "0.43.5",
293
611
  "date": "2026-05-13",
294
- "notes": "Pack-06 materialization-marker regression fix, second wave. Adds Iron Laws + Store-Write Verification sections (plus `.forge/personas/supervisor.md` persona-load step and `forge_store` tokens) to meta-review-plan.md and meta-review-implementation.md so generated review_plan.md and review_code.md carry the four markers required by forge-cli /forge:run-task's per-phase kickoff shim. Without these markers, every fresh init since 0.43.2 has shipped review-plan / review-code workflows that hard-fail phase 2 (and phase 4) of /forge:run-task with `\u00d7 workflow regression: Store-Write Verification not found ...`. Root cause: 0.43.2 patched meta-plan-task.md and meta-implement.md, but the symmetric review metas were missed. Side-effect: per-file byte budgets bumped for review_plan.md / review_code.md (4096\u21925120) and meta-review-plan.md / meta-review-implementation.md (3200/4200\u21924500/5500) to fit the marker blocks. See forge#85.",
612
+ "notes": "Pack-06 materialization-marker regression fix, second wave. Adds Iron Laws + Store-Write Verification sections (plus `.forge/personas/supervisor.md` persona-load step and `forge_store` tokens) to meta-review-plan.md and meta-review-implementation.md so generated review_plan.md and review_code.md carry the four markers required by forge-cli /forge:run-task's per-phase kickoff shim. Without these markers, every fresh init since 0.43.2 has shipped review-plan / review-code workflows that hard-fail phase 2 (and phase 4) of /forge:run-task with workflow regression: Store-Write Verification not found ...`. Root cause: 0.43.2 patched meta-plan-task.md and meta-implement.md, but the symmetric review metas were missed. Side-effect: per-file byte budgets bumped for review_plan.md / review_code.md (4096→5120) and meta-review-plan.md / meta-review-implementation.md (3200/4200→4500/5500) to fit the marker blocks. See forge#85.",
295
613
  "regenerate": [
296
614
  "workflows:review_plan",
297
615
  "workflows:review_code"
@@ -312,7 +630,7 @@
312
630
  "0.43.2": {
313
631
  "version": "0.43.3",
314
632
  "date": "2026-05-10",
315
- "notes": "Adds workflows/enhance.md to base-pack (FORGE-S20-T04 sprint-completion gap fix). meta-enhance.md now generates init/base-pack/workflows/enhance.md via the standard transformWorkflow path; build-base-pack expects 20 workflow files (was 19); enhance.md ships with Iron Laws + Store-Write Verification + forge_store + engineer.md markers required by the forge-cli /forge:enhance kickoff shim. Without this file, /forge:enhance hard-failed every fresh init with `\u00d7 forge:enhance \u2014 workflow not found at .forge/workflows/enhance.md`. enhance.md is orchestrator-only audience and exempt from the 4KB phase-file byte budget. Pairs with forge-cli v0.5.7.",
633
+ "notes": "Adds workflows/enhance.md to base-pack (FORGE-S20-T04 sprint-completion gap fix). meta-enhance.md now generates init/base-pack/workflows/enhance.md via the standard transformWorkflow path; build-base-pack expects 20 workflow files (was 19); enhance.md ships with Iron Laws + Store-Write Verification + forge_store + engineer.md markers required by the forge-cli /forge:enhance kickoff shim. Without this file, /forge:enhance hard-failed every fresh init with forge:enhance workflow not found at .forge/workflows/enhance.md`. enhance.md is orchestrator-only audience and exempt from the 4KB phase-file byte budget. Pairs with forge-cli v0.5.7.",
316
634
  "regenerate": [
317
635
  "workflows:enhance"
318
636
  ],
@@ -322,7 +640,7 @@
322
640
  "0.43.1": {
323
641
  "version": "0.43.2",
324
642
  "date": "2026-05-10",
325
- "notes": "Pack-06 materialization-marker regression fix. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and forge_store token) to meta-plan-task.md and meta-implement.md so generated plan_task.md and implement_plan.md carry the four markers required by forge-cli /forge:plan and /forge:implement kickoff shims. Without these markers, every fresh init produced workflows that hard-failed on dispatch with `\u00d7 workflow regression: Store-Write Verification not found` (and three siblings: Iron Laws, forge_store, persona file path). Root cause: forge-cli FORGE-S20-T04/T05/T06 added kickoff-shim materialization preconditions but never updated the corresponding meta sources or base-pack regen. Side-effect: bumps base-pack byte budget for plan_task.md/implement_plan.md from 4096\u21925120 (per-file overrides) and meta-plan-task/meta-implement from 4096\u21925500 to fit the marker blocks. Pairs with forge-cli v0.5.6.",
643
+ "notes": "Pack-06 materialization-marker regression fix. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and forge_store token) to meta-plan-task.md and meta-implement.md so generated plan_task.md and implement_plan.md carry the four markers required by forge-cli /forge:plan and /forge:implement kickoff shims. Without these markers, every fresh init produced workflows that hard-failed on dispatch with workflow regression: Store-Write Verification not found` (and three siblings: Iron Laws, forge_store, persona file path). Root cause: forge-cli FORGE-S20-T04/T05/T06 added kickoff-shim materialization preconditions but never updated the corresponding meta sources or base-pack regen. Side-effect: bumps base-pack byte budget for plan_task.md/implement_plan.md from 4096→5120 (per-file overrides) and meta-plan-task/meta-implement from 4096→5500 to fit the marker blocks. Pairs with forge-cli v0.5.6.",
326
644
  "regenerate": [
327
645
  "workflows:plan_task",
328
646
  "workflows:implement_plan"
@@ -333,7 +651,7 @@
333
651
  "0.43.0": {
334
652
  "version": "0.43.1",
335
653
  "date": "2026-05-10",
336
- "notes": "Direct-exec contract patch. Replaces all `/forge:store ...` slash-command references in init/base-pack/workflows/*.md (and _fragments/) with the canonical `node \"$FORGE_ROOT/tools/store-cli.cjs\" ...` direct-cjs form already used by meta/workflows/*.md. Pairs with forge-cli v0.5.1 (system-prompt tool-discipline block, kickoff-prompt rewrites, and bin fast-path for `forge {store|collate|validate-store|store-query} ...`). Root cause: cartographer testbench observed haiku-4-5 burning 26-220s per `bash forge store ...` shell-out \u2014 each invocation spawned a fresh pi/agent loop. Fix: prescriptive system prompt + canonical workflow text + bin fast-path. Existing `/forge:store` materialized workflows remain functional under the bin fast-path; no manual migration required for projects on v0.43.0.",
654
+ "notes": "Direct-exec contract patch. Replaces all `/forge:store ...` slash-command references in init/base-pack/workflows/*.md (and _fragments/) with the canonical `node \"$FORGE_ROOT/tools/store-cli.cjs\" ...` direct-cjs form already used by meta/workflows/*.md. Pairs with forge-cli v0.5.1 (system-prompt tool-discipline block, kickoff-prompt rewrites, and bin fast-path for `forge {store|collate|validate-store|store-query} ...`). Root cause: cartographer testbench observed haiku-4-5 burning 26-220s per `bash forge store ...` shell-out each invocation spawned a fresh pi/agent loop. Fix: prescriptive system prompt + canonical workflow text + bin fast-path. Existing `/forge:store` materialized workflows remain functional under the bin fast-path; no manual migration required for projects on v0.43.0.",
337
655
  "regenerate": [
338
656
  "workflows:base-pack-store-cli-form"
339
657
  ],
@@ -343,7 +661,7 @@
343
661
  "0.42.0": {
344
662
  "version": "0.43.0",
345
663
  "date": "2026-05-10",
346
- "notes": "FORGE-S20 Sprint A \u2014 Friction emit channel + foundation. T00 lands the writer side of the friction channel: event.schema.json gains `type:\"friction\"` enum with conditional required {workflow, persona, issue} via a JSON-Schema `allOf if/then` block; validate-store.cjs gains a minimal `allOf if/then required` interpreter; five meta-workflows (implement, fix-bug, validate, plan-task, orchestrate) now carry an explicit Friction Emit section describing trigger conditions and the canonical flat-payload `node \"$FORGE_ROOT/tools/store-cli.cjs\" emit` shape. T01 narrows the optional slots reserved by T00: `subkind` is constrained to a frozen enum (skill_unused|skill_failed|skill_missing|skill_stale|skill_redundant) plus a reserved `^x_[a-z_]+$` experimental namespace (no migration required for x_*), encoded as a single combined regex pattern; `evidence` is shaped into a closed object (trajectory_excerpt:string, tool_errors:string[], retrieval_score:number 0..1, skillId:string ref); validate-store.cjs gains a minimal `pattern` interpreter on string fields. Unblocks Plan 08 Phase B (dynamic skill curation): /forge:enhance --phase 2 reader has been waiting for typed writers since S13-T08. Non-breaking: events without `type` continue to validate exactly as before, and T00-shaped friction events without subkind/evidence remain valid because those slots are not in the friction allOf then-required block.",
664
+ "notes": "FORGE-S20 Sprint A Friction emit channel + foundation. T00 lands the writer side of the friction channel: event.schema.json gains `type:\"friction\"` enum with conditional required {workflow, persona, issue} via a JSON-Schema `allOf if/then` block; validate-store.cjs gains a minimal `allOf if/then required` interpreter; five meta-workflows (implement, fix-bug, validate, plan-task, orchestrate) now carry an explicit Friction Emit section describing trigger conditions and the canonical flat-payload `node \"$FORGE_ROOT/tools/store-cli.cjs\" emit` shape. T01 narrows the optional slots reserved by T00: `subkind` is constrained to a frozen enum (skill_unused|skill_failed|skill_missing|skill_stale|skill_redundant) plus a reserved `^x_[a-z_]+$` experimental namespace (no migration required for x_*), encoded as a single combined regex pattern; `evidence` is shaped into a closed object (trajectory_excerpt:string, tool_errors:string[], retrieval_score:number 0..1, skillId:string ref); validate-store.cjs gains a minimal `pattern` interpreter on string fields. Unblocks Plan 08 Phase B (dynamic skill curation): /forge:enhance --phase 2 reader has been waiting for typed writers since S13-T08. Non-breaking: events without `type` continue to validate exactly as before, and T00-shaped friction events without subkind/evidence remain valid because those slots are not in the friction allOf then-required block.",
347
665
  "regenerate": [
348
666
  "events:friction-emit",
349
667
  "events:friction-subkind",
@@ -362,7 +680,7 @@
362
680
  "0.41.0": {
363
681
  "version": "0.42.0",
364
682
  "date": "2026-05-10",
365
- "notes": "Release-routine catch-up bump. No code changes. Promotes v0.40.3 (substitute-placeholders --target pi) and v0.41.0 (store-cli describe/template + validate hint) cumulatively to skillforge marketplace under a single tag. Users on v0.40+ \u2192 /forge:update is non-breaking. Users on <v0.40 still need the v0.40.0 manual migration path (run /forge:update then /forge:migrate per v0.40.0 entry).",
683
+ "notes": "Release-routine catch-up bump. No code changes. Promotes v0.40.3 (substitute-placeholders --target pi) and v0.41.0 (store-cli describe/template + validate hint) cumulatively to skillforge marketplace under a single tag. Users on v0.40+ /forge:update is non-breaking. Users on <v0.40 still need the v0.40.0 manual migration path (run /forge:update then /forge:migrate per v0.40.0 entry).",
366
684
  "regenerate": [],
367
685
  "breaking": false,
368
686
  "manual": []
@@ -370,7 +688,7 @@
370
688
  "0.40.3": {
371
689
  "version": "0.41.0",
372
690
  "date": "2026-05-09",
373
- "notes": "Add store-cli describe/template subcommands and validate.js error hint (FORGE-BUG-029-friction). describe <entity> prints raw JSON Schema; template <entity> prints canonical sample with required fields populated. validateRecord errors now include a hint pointing to template/describe when entity is known. Reduces write\u2192reject\u2192retry friction on weak/non-Anthropic models. No breaking changes.",
691
+ "notes": "Add store-cli describe/template subcommands and validate.js error hint (FORGE-BUG-029-friction). describe <entity> prints raw JSON Schema; template <entity> prints canonical sample with required fields populated. validateRecord errors now include a hint pointing to template/describe when entity is known. Reduces write→reject→retry friction on weak/non-Anthropic models. No breaking changes.",
374
692
  "regenerate": [
375
693
  "tools:store-cli",
376
694
  "tools:lib:validate"
@@ -409,11 +727,11 @@
409
727
  "workflows:migrate_structural",
410
728
  "workflows:_fragments",
411
729
  "schemas:config",
412
- "schemas:update-check-cache",
413
730
  "schemas:structure-manifest"
414
731
  ],
415
732
  "breaking": false,
416
- "manual": []
733
+ "manual": [],
734
+ "notes_addendum": "removed schemas:update-check-cache target — not a schema (runtime cache only); the target was never resolvable. Removed by FORGE-S25-T12 (N-S-1)."
417
735
  },
418
736
  "0.40.0": {
419
737
  "version": "0.40.1",
@@ -429,7 +747,7 @@
429
747
  "0.32.0": {
430
748
  "version": "0.40.0",
431
749
  "date": "2026-05-02",
432
- "notes": "Base-pack init with progressive enhancement (S13 \u2014 T02\u2013T06 + T08\u2013T10 + T11 friction reconciliation). Replaces multi-minute LLM cold-start init with a deterministic 4-phase pipeline (Collect \u2192 Discover \u2192 Materialize \u2192 Register, ~30\u201345s). Working artefacts ship as a base-pack with {{KEY}} placeholders; init substitutes from config.json + project-context.json (no LLM in materialization). New project-context.json schema (T02), substitute-placeholders.cjs tool (T03), 4-phase sdlc-init.md (T04), versioned structural snapshots in structure-versions.json (T05), npm run build-base-pack regeneration script (T06), enhancement agent skill at meta/workflows/meta-enhance.md and commands/enhance.md (T08), post-init + post-sprint hooks (T09), migration agent at meta/workflows/meta-migrate.md (T10), and bucket-A friction fixes (T11) covering forge#71 (7 sub-bugs in /forge:update) and forge#72 (preflight-gate workflow shadowing). Breaking: --fast aliases to default; init-progress.json is now 4-phase; structure-versions.json + project-context.json are net-new files; manage-versions.cjs is now the gateway for snapshot writes.",
750
+ "notes": "Base-pack init with progressive enhancement (S13 T02–T06 + T08–T10 + T11 friction reconciliation). Replaces multi-minute LLM cold-start init with a deterministic 4-phase pipeline (Collect Discover Materialize Register, ~30–45s). Working artefacts ship as a base-pack with {{KEY}} placeholders; init substitutes from config.json + project-context.json (no LLM in materialization). New project-context.json schema (T02), substitute-placeholders.cjs tool (T03), 4-phase sdlc-init.md (T04), versioned structural snapshots in structure-versions.json (T05), npm run build-base-pack regeneration script (T06), enhancement agent skill at meta/workflows/meta-enhance.md and commands/enhance.md (T08), post-init + post-sprint hooks (T09), migration agent at meta/workflows/meta-migrate.md (T10), and bucket-A friction fixes (T11) covering forge#71 (7 sub-bugs in /forge:update) and forge#72 (preflight-gate workflow shadowing). Breaking: --fast aliases to default; init-progress.json is now 4-phase; structure-versions.json + project-context.json are net-new files; manage-versions.cjs is now the gateway for snapshot writes.",
433
751
  "regenerate": [
434
752
  "workflows:orchestrate_task",
435
753
  "workflows:fix_bug",
@@ -465,10 +783,10 @@
465
783
  ],
466
784
  "breaking": true,
467
785
  "manual": [
468
- "Init flow is now 4 phases (Collect \u2192 Discover \u2192 Materialize \u2192 Register). --fast and --full both run the same deterministic pipeline; existing init-progress.json checkpoints from 12-phase runs are deleted automatically on resume.",
786
+ "Init flow is now 4 phases (Collect Discover Materialize Register). --fast and --full both run the same deterministic pipeline; existing init-progress.json checkpoints from 12-phase runs are deleted automatically on resume.",
469
787
  "structure-versions.json and project-context.json are net-new files at .forge/. Existing installations without them are migrated by /forge:migrate (T10).",
470
- "Existing users on v0.28\u2013v0.30.x: run /forge:update to install the new tools and workflows, then /forge:migrate to synthesise project-context.json from existing .forge/ artefacts. /forge:migrate archives the pre-migration .forge/ contents to .forge/archive/pre-migration/.",
471
- "After /forge:update, run /forge:update-tools to install the three new schemas (project-context.schema.json, structure-versions.schema.json, project-overlay.schema.json) into .forge/schemas/. /forge:update does not regenerate schemas \u2014 this is by design (T11 forge#71-bug3); /forge:update-tools is the dedicated path for schema installation.",
788
+ "Existing users on v0.28–v0.30.x: run /forge:update to install the new tools and workflows, then /forge:migrate to synthesise project-context.json from existing .forge/ artefacts. /forge:migrate archives the pre-migration .forge/ contents to .forge/archive/pre-migration/.",
789
+ "After /forge:update, run /forge:update-tools to install the three new schemas (project-context.schema.json, structure-versions.schema.json, project-overlay.schema.json) into .forge/schemas/. /forge:update does not regenerate schemas this is by design (T11 forge#71-bug3); /forge:update-tools is the dedicated path for schema installation.",
472
790
  "After /forge:update-tools, run /forge:health to verify integrity.json and snapshot v0 register cleanly.",
473
791
  "T11 fixes: /forge:update Step 1 baseline derivation now uses localVersion ?? migratedFrom ?? LOCAL_VERSION; preflight-gate.cjs no longer requires --workflow workaround for orchestrate_task; integrity.json regenerated from current hashes (no false-positive on /forge:health post-update)."
474
792
  ]
@@ -476,7 +794,7 @@
476
794
  "0.31.0": {
477
795
  "version": "0.32.0",
478
796
  "date": "2026-05-01",
479
- "notes": "Init flow rewrite (T04): replace 12-phase init with 4-phase model (Collect \u2192 Discover \u2192 Materialize \u2192 Register). forge/commands/init.md and forge/init/sdlc-init.md fully rewritten. Phase 3 calls substitute-placeholders.cjs to produce fully functional workflows (no stubs). Phase 4 writes structure-versions.json at .forge/structure-versions.json (T05 stub), generation-manifest.json, persona-pack.json, context-pack.md/json, init-context.json/md, store seed, update-check cache, and invokes refresh-kb-links. --fast and --full flags accepted as no-ops (both run identical 4-phase flow). Old 12-phase checkpoint files deleted automatically on resume.",
797
+ "notes": "Init flow rewrite (T04): replace 12-phase init with 4-phase model (Collect Discover Materialize Register). forge/commands/init.md and forge/init/sdlc-init.md fully rewritten. Phase 3 calls substitute-placeholders.cjs to produce fully functional workflows (no stubs). Phase 4 writes structure-versions.json at .forge/structure-versions.json (T05 stub), generation-manifest.json, persona-pack.json, context-pack.md/json, init-context.json/md, store seed, update-check cache, and invokes refresh-kb-links. --fast and --full flags accepted as no-ops (both run identical 4-phase flow). Old 12-phase checkpoint files deleted automatically on resume.",
480
798
  "regenerate": [],
481
799
  "breaking": false,
482
800
  "manual": []
@@ -492,7 +810,7 @@
492
810
  "0.29.0": {
493
811
  "version": "0.30.0",
494
812
  "date": "2026-05-01",
495
- "notes": "Prompt-efficiency structural cut (T01_6): (1) phase meta sources split by audience \u2014 orchestrate_task/fix_bug carry audience:orchestrator-only, all phase files carry audience:subagent with context: block; (2) PROJECT_OVERLAY replaces mandatory MASTER_INDEX.md reads \u2014 build-overlay.cjs materialises a \u22641kB task-scoped index slice injected by the orchestrator; architecture_block is now conditional on phase.context.architecture; (3) store-cli success-path stdout is now silent \u2014 pass --verbose for legacy JSON echo; (4) new _fragments/finalize.md carries the /cost sidecar contract; (5) review-code and validate phases default to diff-first read mode. Breaking: store-cli JSON stdout no longer emitted on success.",
813
+ "notes": "Prompt-efficiency structural cut (T01_6): (1) phase meta sources split by audience orchestrate_task/fix_bug carry audience:orchestrator-only, all phase files carry audience:subagent with context: block; (2) PROJECT_OVERLAY replaces mandatory MASTER_INDEX.md reads build-overlay.cjs materialises a ≤1kB task-scoped index slice injected by the orchestrator; architecture_block is now conditional on phase.context.architecture; (3) store-cli success-path stdout is now silent pass --verbose for legacy JSON echo; (4) new _fragments/finalize.md carries the /cost sidecar contract; (5) review-code and validate phases default to diff-first read mode. Breaking: store-cli JSON stdout no longer emitted on success.",
496
814
  "regenerate": [
497
815
  "workflows:orchestrate_task",
498
816
  "workflows:fix_bug",
@@ -518,7 +836,7 @@
518
836
  "0.28.1": {
519
837
  "version": "0.29.0",
520
838
  "date": "2026-04-29",
521
- "notes": "Security hardening (FORGE-BUG-016): fix 5 critical findings from security scan v0.28.0. (1) Bulk permission escalation: persist only matched rule instead of all 31 rules. (2) Remove node -e/p auto-approve \u2014 arbitrary code execution requires explicit approval. (3) Add domain allowlist for update URLs. (4) Block prototype pollution (__proto__/constructor/prototype) in getByPath/setByPath. (5) Add path traversal guard to cmdProgress/cmdProgressClear. Also scopes broad wildcards (touch, rmdir, rm -f) and adds require.main guard to forge-permissions.js.",
839
+ "notes": "Security hardening (FORGE-BUG-016): fix 5 critical findings from security scan v0.28.0. (1) Bulk permission escalation: persist only matched rule instead of all 31 rules. (2) Remove node -e/p auto-approve arbitrary code execution requires explicit approval. (3) Add domain allowlist for update URLs. (4) Block prototype pollution (__proto__/constructor/prototype) in getByPath/setByPath. (5) Add path traversal guard to cmdProgress/cmdProgressClear. Also scopes broad wildcards (touch, rmdir, rm -f) and adds require.main guard to forge-permissions.js.",
522
840
  "regenerate": [
523
841
  "hooks:forge-permissions",
524
842
  "hooks:check-update",
@@ -527,7 +845,7 @@
527
845
  ],
528
846
  "breaking": true,
529
847
  "manual": [
530
- "node -e one-liners will now prompt for approval \u2014 this is intentional. Run /forge:update to refresh hooks and tools."
848
+ "node -e one-liners will now prompt for approval this is intentional. Run /forge:update to refresh hooks and tools."
531
849
  ]
532
850
  },
533
851
  "0.27.1": {
@@ -571,7 +889,7 @@
571
889
  ],
572
890
  "breaking": false,
573
891
  "manual": [
574
- "Restart Claude Code after updating for the new hook to take effect. On first Forge command, approve each permission prompt once \u2014 they will persist for future sessions."
892
+ "Restart Claude Code after updating for the new hook to take effect. On first Forge command, approve each permission prompt once they will persist for future sessions."
575
893
  ]
576
894
  },
577
895
  "0.24.2": {
@@ -690,14 +1008,14 @@
690
1008
  "0.17.1": {
691
1009
  "version": "0.18.0",
692
1010
  "date": "2026-04-19",
693
- "notes": "Write-boundary schema enforcement. New PreToolUse hook (hooks/validate-write.js) intercepts Write/Edit/MultiEdit against Forge-owned paths under .forge/store/ and validates the proposed contents against the matching schema \u2014 task, sprint, bug, feature, event, event-sidecar, collation-state, and progress-log entries. Three new schemas added (event-sidecar, progress-entry, collation-state). store-cli gains schema enforcement on the four previously unvalidated write paths (sidecar emit, sidecar merge, progress append, collation-state write). Shared validator extracted to tools/lib/validate.js and reused by both the hook and store-cli. Emergency bypass via FORGE_SKIP_WRITE_VALIDATION=1, which also appends an audit line to the affected sprint's progress.log.",
1011
+ "notes": "Write-boundary schema enforcement. New PreToolUse hook (hooks/validate-write.js) intercepts Write/Edit/MultiEdit against Forge-owned paths under .forge/store/ and validates the proposed contents against the matching schema task, sprint, bug, feature, event, event-sidecar, collation-state, and progress-log entries. Three new schemas added (event-sidecar, progress-entry, collation-state). store-cli gains schema enforcement on the four previously unvalidated write paths (sidecar emit, sidecar merge, progress append, collation-state write). Shared validator extracted to tools/lib/validate.js and reused by both the hook and store-cli. Emergency bypass via FORGE_SKIP_WRITE_VALIDATION=1, which also appends an audit line to the affected sprint's progress.log.",
694
1012
  "regenerate": [
695
1013
  "hooks",
696
1014
  "schemas"
697
1015
  ],
698
1016
  "breaking": false,
699
1017
  "manual": [
700
- "Run /forge:update to install the new write-boundary hook. Any existing tooling that writes malformed JSON to .forge/store/ will now be rejected at write time \u2014 fix the data, don't bypass the hook."
1018
+ "Run /forge:update to install the new write-boundary hook. Any existing tooling that writes malformed JSON to .forge/store/ will now be rejected at write time fix the data, don't bypass the hook."
701
1019
  ]
702
1020
  },
703
1021
  "0.17.0": {
@@ -750,7 +1068,7 @@
750
1068
  "0.14.0": {
751
1069
  "version": "0.14.1",
752
1070
  "date": "2026-04-18",
753
- "notes": "collate now generates Sprint, Task, and Bug INDEX.md files \u2014 closes broken knowledge graph links from MASTER_INDEX.md. refresh-kb-links skill gains KB integrity check that warns when INDEX files are missing.",
1071
+ "notes": "collate now generates Sprint, Task, and Bug INDEX.md files closes broken knowledge graph links from MASTER_INDEX.md. refresh-kb-links skill gains KB integrity check that warns when INDEX files are missing.",
754
1072
  "regenerate": [],
755
1073
  "breaking": false,
756
1074
  "manual": []
@@ -766,7 +1084,7 @@
766
1084
  "0.13.0": {
767
1085
  "version": "0.13.1",
768
1086
  "date": "2026-04-18",
769
- "notes": "Tomoshibi Oracle warns before config changes that require regeneration \u2014 project.prefix change now shows impact and exact follow-up command before [Y/n] prompt.",
1087
+ "notes": "Tomoshibi Oracle warns before config changes that require regeneration project.prefix change now shows impact and exact follow-up command before [Y/n] prompt.",
770
1088
  "regenerate": [],
771
1089
  "breaking": false,
772
1090
  "manual": []
@@ -803,7 +1121,7 @@
803
1121
  "0.12.3": {
804
1122
  "version": "0.12.4",
805
1123
  "date": "2026-04-17",
806
- "notes": "Fast-mode capability announcement: every materialise round (per-workflow stub trigger or /forge:materialize --all) now emits a 2-line summary like '\u3007 Forge is currently in fast mode \u00b7 5% capabilities generated (2 of 41) \u2014 this round will lift capabilities to 29% (12 of 41, +10 artifact(s))'. Silent on full installs. New ensure-ready.cjs subcommands: --capabilities, --capabilities-after, --announce.",
1124
+ "notes": "Fast-mode capability announcement: every materialise round (per-workflow stub trigger or /forge:materialize --all) now emits a 2-line summary like ' Forge is currently in fast mode · 5% capabilities generated (2 of 41) this round will lift capabilities to 29% (12 of 41, +10 artifact(s))'. Silent on full installs. New ensure-ready.cjs subcommands: --capabilities, --capabilities-after, --announce.",
807
1125
  "regenerate": [],
808
1126
  "breaking": false,
809
1127
  "manual": []
@@ -811,7 +1129,7 @@
811
1129
  "0.12.2": {
812
1130
  "version": "0.12.3",
813
1131
  "date": "2026-04-17",
814
- "notes": "Visual onboarding character: hero banners and per-phase/step badges across /forge:init, /forge:update, /forge:regenerate, /forge:health (and light touch on /forge:config and /forge:materialize). banners.cjs gains progressBar, subtitle, phaseHeader, plain-mode (NO_COLOR / non-tty / --plain). Backwards-compatible \u2014 all existing API + emits still work; new visuals are additive.",
1132
+ "notes": "Visual onboarding character: hero banners and per-phase/step badges across /forge:init, /forge:update, /forge:regenerate, /forge:health (and light touch on /forge:config and /forge:materialize). banners.cjs gains progressBar, subtitle, phaseHeader, plain-mode (NO_COLOR / non-tty / --plain). Backwards-compatible all existing API + emits still work; new visuals are additive.",
815
1133
  "regenerate": [],
816
1134
  "breaking": false,
817
1135
  "manual": []
@@ -879,7 +1197,7 @@
879
1197
  "0.10.0": {
880
1198
  "version": "0.10.1",
881
1199
  "date": "2026-04-16",
882
- "notes": "Fix: quiz_agent.md was missing from new inits \u2014 add meta-quiz-agent.md so Phase 7 generates the KB knowledge-check workflow.",
1200
+ "notes": "Fix: quiz_agent.md was missing from new inits add meta-quiz-agent.md so Phase 7 generates the KB knowledge-check workflow.",
883
1201
  "regenerate": [
884
1202
  "workflows"
885
1203
  ],
@@ -889,7 +1207,7 @@
889
1207
  "0.9.18": {
890
1208
  "version": "0.10.0",
891
1209
  "date": "2026-04-16",
892
- "notes": "0.9.x \u2192 0.10.0 \u2014 Tomoshibi agent (\u706f): coding-agent instruction files linked to Forge KB and workflows; KB folder name configurable at init pre-flight (paths.engineering); forge:init Phase 12, forge:update Step 7, meta-collate Finalize. Full 0.9.x cycle: store custodian gateway, named-agent IPC with phase banners and Monitor streaming, orchestrator context compaction, banner library, calibrate command, add-task, health improvements, structure manifest, BUG-008/009 fixes.",
1210
+ "notes": "0.9.x 0.10.0 Tomoshibi agent (): coding-agent instruction files linked to Forge KB and workflows; KB folder name configurable at init pre-flight (paths.engineering); forge:init Phase 12, forge:update Step 7, meta-collate Finalize. Full 0.9.x cycle: store custodian gateway, named-agent IPC with phase banners and Monitor streaming, orchestrator context compaction, banner library, calibrate command, add-task, health improvements, structure manifest, BUG-008/009 fixes.",
893
1211
  "regenerate": [
894
1212
  "workflows",
895
1213
  "commands",
@@ -903,7 +1221,7 @@
903
1221
  "0.9.17": {
904
1222
  "version": "0.10.0",
905
1223
  "date": "2026-04-16",
906
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1224
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
907
1225
  "regenerate": [
908
1226
  "workflows",
909
1227
  "commands",
@@ -917,7 +1235,7 @@
917
1235
  "0.9.16": {
918
1236
  "version": "0.10.0",
919
1237
  "date": "2026-04-16",
920
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1238
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
921
1239
  "regenerate": [
922
1240
  "workflows",
923
1241
  "commands",
@@ -931,7 +1249,7 @@
931
1249
  "0.9.15": {
932
1250
  "version": "0.10.0",
933
1251
  "date": "2026-04-16",
934
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1252
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
935
1253
  "regenerate": [
936
1254
  "workflows",
937
1255
  "commands",
@@ -945,7 +1263,7 @@
945
1263
  "0.9.14": {
946
1264
  "version": "0.10.0",
947
1265
  "date": "2026-04-16",
948
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1266
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
949
1267
  "regenerate": [
950
1268
  "workflows",
951
1269
  "commands",
@@ -959,7 +1277,7 @@
959
1277
  "0.9.13": {
960
1278
  "version": "0.10.0",
961
1279
  "date": "2026-04-16",
962
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1280
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
963
1281
  "regenerate": [
964
1282
  "workflows",
965
1283
  "commands",
@@ -973,7 +1291,7 @@
973
1291
  "0.9.12": {
974
1292
  "version": "0.10.0",
975
1293
  "date": "2026-04-16",
976
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1294
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
977
1295
  "regenerate": [
978
1296
  "workflows",
979
1297
  "commands",
@@ -987,7 +1305,7 @@
987
1305
  "0.9.11": {
988
1306
  "version": "0.10.0",
989
1307
  "date": "2026-04-16",
990
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1308
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
991
1309
  "regenerate": [
992
1310
  "workflows",
993
1311
  "commands",
@@ -1001,7 +1319,7 @@
1001
1319
  "0.9.10": {
1002
1320
  "version": "0.10.0",
1003
1321
  "date": "2026-04-16",
1004
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1322
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1005
1323
  "regenerate": [
1006
1324
  "workflows",
1007
1325
  "commands",
@@ -1015,7 +1333,7 @@
1015
1333
  "0.9.9": {
1016
1334
  "version": "0.10.0",
1017
1335
  "date": "2026-04-16",
1018
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1336
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1019
1337
  "regenerate": [
1020
1338
  "workflows",
1021
1339
  "commands",
@@ -1029,7 +1347,7 @@
1029
1347
  "0.9.8": {
1030
1348
  "version": "0.10.0",
1031
1349
  "date": "2026-04-16",
1032
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1350
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1033
1351
  "regenerate": [
1034
1352
  "workflows",
1035
1353
  "commands",
@@ -1043,7 +1361,7 @@
1043
1361
  "0.9.7": {
1044
1362
  "version": "0.10.0",
1045
1363
  "date": "2026-04-16",
1046
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1364
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1047
1365
  "regenerate": [
1048
1366
  "workflows",
1049
1367
  "commands",
@@ -1057,7 +1375,7 @@
1057
1375
  "0.9.6": {
1058
1376
  "version": "0.10.0",
1059
1377
  "date": "2026-04-16",
1060
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1378
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1061
1379
  "regenerate": [
1062
1380
  "workflows",
1063
1381
  "commands",
@@ -1071,7 +1389,7 @@
1071
1389
  "0.9.5": {
1072
1390
  "version": "0.10.0",
1073
1391
  "date": "2026-04-16",
1074
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1392
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1075
1393
  "regenerate": [
1076
1394
  "workflows",
1077
1395
  "commands",
@@ -1085,7 +1403,7 @@
1085
1403
  "0.9.4": {
1086
1404
  "version": "0.10.0",
1087
1405
  "date": "2026-04-16",
1088
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1406
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1089
1407
  "regenerate": [
1090
1408
  "workflows",
1091
1409
  "commands",
@@ -1099,7 +1417,7 @@
1099
1417
  "0.9.3": {
1100
1418
  "version": "0.10.0",
1101
1419
  "date": "2026-04-16",
1102
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1420
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1103
1421
  "regenerate": [
1104
1422
  "workflows",
1105
1423
  "commands",
@@ -1113,7 +1431,7 @@
1113
1431
  "0.9.2": {
1114
1432
  "version": "0.10.0",
1115
1433
  "date": "2026-04-16",
1116
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1434
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1117
1435
  "regenerate": [
1118
1436
  "workflows",
1119
1437
  "commands",
@@ -1127,7 +1445,7 @@
1127
1445
  "0.9.1": {
1128
1446
  "version": "0.10.0",
1129
1447
  "date": "2026-04-16",
1130
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1448
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1131
1449
  "regenerate": [
1132
1450
  "workflows",
1133
1451
  "commands",
@@ -1141,7 +1459,7 @@
1141
1459
  "0.9.0": {
1142
1460
  "version": "0.10.0",
1143
1461
  "date": "2026-04-16",
1144
- "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1462
+ "notes": "0.9.x 0.10.0 see 0.9.18 entry.",
1145
1463
  "regenerate": [
1146
1464
  "workflows",
1147
1465
  "commands",
@@ -1155,7 +1473,7 @@
1155
1473
  "0.8.10": {
1156
1474
  "version": "0.9.0",
1157
1475
  "date": "2026-04-15",
1158
- "notes": "0.8.x \u2192 0.9.0 \u2014 Store Custodian: deterministic store gateway (store-cli.cjs), 16 meta-workflows migrated from direct writes to custodian, sprint schema gains goal and features fields. Full 0.8.x cycle: Sprint S06 cap, slug-aware directory discovery, ghost event fix, collate purge-events, init migration baseline stamp, workflow canonical naming, effort: frontmatter, fix sprint-plan and forge:update Step 4.",
1476
+ "notes": "0.8.x 0.9.0 Store Custodian: deterministic store gateway (store-cli.cjs), 16 meta-workflows migrated from direct writes to custodian, sprint schema gains goal and features fields. Full 0.8.x cycle: Sprint S06 cap, slug-aware directory discovery, ghost event fix, collate purge-events, init migration baseline stamp, workflow canonical naming, effort: frontmatter, fix sprint-plan and forge:update Step 4.",
1159
1477
  "regenerate": [
1160
1478
  "workflows",
1161
1479
  "commands",
@@ -1169,7 +1487,7 @@
1169
1487
  "0.8.9": {
1170
1488
  "version": "0.9.0",
1171
1489
  "date": "2026-04-15",
1172
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1490
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1173
1491
  "regenerate": [
1174
1492
  "workflows",
1175
1493
  "commands",
@@ -1183,7 +1501,7 @@
1183
1501
  "0.8.8": {
1184
1502
  "version": "0.9.0",
1185
1503
  "date": "2026-04-15",
1186
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1504
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1187
1505
  "regenerate": [
1188
1506
  "workflows",
1189
1507
  "commands",
@@ -1197,7 +1515,7 @@
1197
1515
  "0.8.7": {
1198
1516
  "version": "0.9.0",
1199
1517
  "date": "2026-04-15",
1200
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1518
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1201
1519
  "regenerate": [
1202
1520
  "workflows",
1203
1521
  "commands",
@@ -1211,7 +1529,7 @@
1211
1529
  "0.8.6": {
1212
1530
  "version": "0.9.0",
1213
1531
  "date": "2026-04-15",
1214
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1532
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1215
1533
  "regenerate": [
1216
1534
  "workflows",
1217
1535
  "commands",
@@ -1225,7 +1543,7 @@
1225
1543
  "0.8.5": {
1226
1544
  "version": "0.9.0",
1227
1545
  "date": "2026-04-15",
1228
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1546
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1229
1547
  "regenerate": [
1230
1548
  "workflows",
1231
1549
  "commands",
@@ -1239,7 +1557,7 @@
1239
1557
  "0.8.4": {
1240
1558
  "version": "0.9.0",
1241
1559
  "date": "2026-04-15",
1242
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1560
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1243
1561
  "regenerate": [
1244
1562
  "workflows",
1245
1563
  "commands",
@@ -1253,7 +1571,7 @@
1253
1571
  "0.8.3": {
1254
1572
  "version": "0.9.0",
1255
1573
  "date": "2026-04-15",
1256
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1574
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1257
1575
  "regenerate": [
1258
1576
  "workflows",
1259
1577
  "commands",
@@ -1267,7 +1585,7 @@
1267
1585
  "0.8.2": {
1268
1586
  "version": "0.9.0",
1269
1587
  "date": "2026-04-15",
1270
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1588
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1271
1589
  "regenerate": [
1272
1590
  "workflows",
1273
1591
  "commands",
@@ -1281,7 +1599,7 @@
1281
1599
  "0.8.1": {
1282
1600
  "version": "0.9.0",
1283
1601
  "date": "2026-04-15",
1284
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1602
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1285
1603
  "regenerate": [
1286
1604
  "workflows",
1287
1605
  "commands",
@@ -1295,7 +1613,7 @@
1295
1613
  "0.8.0": {
1296
1614
  "version": "0.9.0",
1297
1615
  "date": "2026-04-15",
1298
- "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1616
+ "notes": "0.8.x 0.9.0 see 0.8.10 entry.",
1299
1617
  "regenerate": [
1300
1618
  "workflows",
1301
1619
  "commands",
@@ -1309,7 +1627,7 @@
1309
1627
  "0.7.11": {
1310
1628
  "version": "0.8.0",
1311
1629
  "date": "2026-04-14",
1312
- "notes": "0.7.x \u2192 0.8.0 \u2014 Sprint S06: orchestrator persona noun-based lookup, meta-workflows purged of inline Persona sections, forge:regenerate includes personas, sprint schema path field, slug-aware seed-store/collate/validate-store. Full 0.7.x cycle: Japanese nature persona palette, orchestrator announcements, ghost event fix, false breaking-change suppression, validate-store slug and filesystem checks.",
1630
+ "notes": "0.7.x 0.8.0 Sprint S06: orchestrator persona noun-based lookup, meta-workflows purged of inline Persona sections, forge:regenerate includes personas, sprint schema path field, slug-aware seed-store/collate/validate-store. Full 0.7.x cycle: Japanese nature persona palette, orchestrator announcements, ghost event fix, false breaking-change suppression, validate-store slug and filesystem checks.",
1313
1631
  "regenerate": [
1314
1632
  "workflows",
1315
1633
  "commands",
@@ -1322,7 +1640,7 @@
1322
1640
  "0.7.10": {
1323
1641
  "version": "0.8.0",
1324
1642
  "date": "2026-04-14",
1325
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1643
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1326
1644
  "regenerate": [
1327
1645
  "workflows",
1328
1646
  "commands",
@@ -1335,7 +1653,7 @@
1335
1653
  "0.7.9": {
1336
1654
  "version": "0.8.0",
1337
1655
  "date": "2026-04-14",
1338
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1656
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1339
1657
  "regenerate": [
1340
1658
  "workflows",
1341
1659
  "commands",
@@ -1348,7 +1666,7 @@
1348
1666
  "0.7.8": {
1349
1667
  "version": "0.8.0",
1350
1668
  "date": "2026-04-14",
1351
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1669
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1352
1670
  "regenerate": [
1353
1671
  "workflows",
1354
1672
  "commands",
@@ -1361,7 +1679,7 @@
1361
1679
  "0.7.7": {
1362
1680
  "version": "0.8.0",
1363
1681
  "date": "2026-04-14",
1364
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1682
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1365
1683
  "regenerate": [
1366
1684
  "workflows",
1367
1685
  "commands",
@@ -1374,7 +1692,7 @@
1374
1692
  "0.7.6": {
1375
1693
  "version": "0.8.0",
1376
1694
  "date": "2026-04-14",
1377
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1695
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1378
1696
  "regenerate": [
1379
1697
  "workflows",
1380
1698
  "commands",
@@ -1387,7 +1705,7 @@
1387
1705
  "0.7.5": {
1388
1706
  "version": "0.8.0",
1389
1707
  "date": "2026-04-14",
1390
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1708
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1391
1709
  "regenerate": [
1392
1710
  "workflows",
1393
1711
  "commands",
@@ -1400,7 +1718,7 @@
1400
1718
  "0.7.4": {
1401
1719
  "version": "0.8.0",
1402
1720
  "date": "2026-04-14",
1403
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1721
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1404
1722
  "regenerate": [
1405
1723
  "workflows",
1406
1724
  "commands",
@@ -1413,7 +1731,7 @@
1413
1731
  "0.7.3": {
1414
1732
  "version": "0.8.0",
1415
1733
  "date": "2026-04-14",
1416
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1734
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1417
1735
  "regenerate": [
1418
1736
  "workflows",
1419
1737
  "commands",
@@ -1426,7 +1744,7 @@
1426
1744
  "0.7.2": {
1427
1745
  "version": "0.8.0",
1428
1746
  "date": "2026-04-14",
1429
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1747
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1430
1748
  "regenerate": [
1431
1749
  "workflows",
1432
1750
  "commands",
@@ -1439,7 +1757,7 @@
1439
1757
  "0.7.1": {
1440
1758
  "version": "0.8.0",
1441
1759
  "date": "2026-04-14",
1442
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1760
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1443
1761
  "regenerate": [
1444
1762
  "workflows",
1445
1763
  "commands",
@@ -1452,7 +1770,7 @@
1452
1770
  "0.7.0": {
1453
1771
  "version": "0.8.0",
1454
1772
  "date": "2026-04-14",
1455
- "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1773
+ "notes": "0.7.x 0.8.0 see 0.7.11 entry.",
1456
1774
  "regenerate": [
1457
1775
  "workflows",
1458
1776
  "commands",
@@ -1465,7 +1783,7 @@
1465
1783
  "0.6.13": {
1466
1784
  "version": "0.7.0",
1467
1785
  "date": "2026-04-13",
1468
- "notes": "0.6.x \u2192 0.7.0 \u25b3 Breaking \u2014 Portability migration: legacy model: fields \u2192 structured requirements blocks (3D Agent Model); grounding and descriptive pathing (ID-description folder naming, absolute path injection). Full 0.6.x cycle: distribution-aware update URLs, QA validate phase, store.cjs facade, collate fixes, skillforge git-subdir.",
1786
+ "notes": "0.6.x 0.7.0 Breaking Portability migration: legacy model: fields structured requirements blocks (3D Agent Model); grounding and descriptive pathing (ID-description folder naming, absolute path injection). Full 0.6.x cycle: distribution-aware update URLs, QA validate phase, store.cjs facade, collate fixes, skillforge git-subdir.",
1469
1787
  "regenerate": [
1470
1788
  "workflows",
1471
1789
  "commands",
@@ -1481,7 +1799,7 @@
1481
1799
  "0.6.12": {
1482
1800
  "version": "0.7.0",
1483
1801
  "date": "2026-04-13",
1484
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1802
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1485
1803
  "regenerate": [
1486
1804
  "workflows",
1487
1805
  "commands",
@@ -1497,7 +1815,7 @@
1497
1815
  "0.6.11": {
1498
1816
  "version": "0.7.0",
1499
1817
  "date": "2026-04-13",
1500
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1818
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1501
1819
  "regenerate": [
1502
1820
  "workflows",
1503
1821
  "commands",
@@ -1513,7 +1831,7 @@
1513
1831
  "0.6.10": {
1514
1832
  "version": "0.7.0",
1515
1833
  "date": "2026-04-13",
1516
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1834
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1517
1835
  "regenerate": [
1518
1836
  "workflows",
1519
1837
  "commands",
@@ -1529,7 +1847,7 @@
1529
1847
  "0.6.9": {
1530
1848
  "version": "0.7.0",
1531
1849
  "date": "2026-04-13",
1532
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1850
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1533
1851
  "regenerate": [
1534
1852
  "workflows",
1535
1853
  "commands",
@@ -1545,7 +1863,7 @@
1545
1863
  "0.6.8": {
1546
1864
  "version": "0.7.0",
1547
1865
  "date": "2026-04-13",
1548
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1866
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1549
1867
  "regenerate": [
1550
1868
  "workflows",
1551
1869
  "commands",
@@ -1561,7 +1879,7 @@
1561
1879
  "0.6.7": {
1562
1880
  "version": "0.7.0",
1563
1881
  "date": "2026-04-13",
1564
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1882
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1565
1883
  "regenerate": [
1566
1884
  "workflows",
1567
1885
  "commands",
@@ -1577,7 +1895,7 @@
1577
1895
  "0.6.6": {
1578
1896
  "version": "0.7.0",
1579
1897
  "date": "2026-04-13",
1580
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1898
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1581
1899
  "regenerate": [
1582
1900
  "workflows",
1583
1901
  "commands",
@@ -1593,7 +1911,7 @@
1593
1911
  "0.6.5": {
1594
1912
  "version": "0.7.0",
1595
1913
  "date": "2026-04-13",
1596
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1914
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1597
1915
  "regenerate": [
1598
1916
  "workflows",
1599
1917
  "commands",
@@ -1609,7 +1927,7 @@
1609
1927
  "0.6.4": {
1610
1928
  "version": "0.7.0",
1611
1929
  "date": "2026-04-13",
1612
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1930
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1613
1931
  "regenerate": [
1614
1932
  "workflows",
1615
1933
  "commands",
@@ -1625,7 +1943,7 @@
1625
1943
  "0.6.3": {
1626
1944
  "version": "0.7.0",
1627
1945
  "date": "2026-04-13",
1628
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1946
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1629
1947
  "regenerate": [
1630
1948
  "workflows",
1631
1949
  "commands",
@@ -1641,7 +1959,7 @@
1641
1959
  "0.6.2": {
1642
1960
  "version": "0.7.0",
1643
1961
  "date": "2026-04-13",
1644
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1962
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1645
1963
  "regenerate": [
1646
1964
  "workflows",
1647
1965
  "commands",
@@ -1657,7 +1975,7 @@
1657
1975
  "0.6.1": {
1658
1976
  "version": "0.7.0",
1659
1977
  "date": "2026-04-13",
1660
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1978
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1661
1979
  "regenerate": [
1662
1980
  "workflows",
1663
1981
  "commands",
@@ -1673,7 +1991,7 @@
1673
1991
  "0.6.0": {
1674
1992
  "version": "0.7.0",
1675
1993
  "date": "2026-04-13",
1676
- "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1994
+ "notes": "0.6.x 0.7.0 see 0.6.13 entry.",
1677
1995
  "regenerate": [
1678
1996
  "workflows",
1679
1997
  "commands",
@@ -1689,7 +2007,7 @@
1689
2007
  "0.5.9": {
1690
2008
  "version": "0.6.0",
1691
2009
  "date": "2026-04-09",
1692
- "notes": "0.5.x \u2192 0.6.0 \u2014 Feature tier: Feature entity (feature.schema.json, .forge/store/features/), feature_id in sprint/task schemas, collate generates features/ registry, health reports per-feature coverage, docs/concepts/ added. Full 0.5.x cycle: fix-bug as true orchestrator, validate-store null handling, collate FORGE_ROOT fix, update UX improvements, canary source detection.",
2010
+ "notes": "0.5.x 0.6.0 Feature tier: Feature entity (feature.schema.json, .forge/store/features/), feature_id in sprint/task schemas, collate generates features/ registry, health reports per-feature coverage, docs/concepts/ added. Full 0.5.x cycle: fix-bug as true orchestrator, validate-store null handling, collate FORGE_ROOT fix, update UX improvements, canary source detection.",
1693
2011
  "regenerate": [
1694
2012
  "workflows",
1695
2013
  "commands",
@@ -1701,7 +2019,7 @@
1701
2019
  "0.5.8": {
1702
2020
  "version": "0.6.0",
1703
2021
  "date": "2026-04-09",
1704
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2022
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1705
2023
  "regenerate": [
1706
2024
  "workflows",
1707
2025
  "commands",
@@ -1713,7 +2031,7 @@
1713
2031
  "0.5.7": {
1714
2032
  "version": "0.6.0",
1715
2033
  "date": "2026-04-09",
1716
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2034
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1717
2035
  "regenerate": [
1718
2036
  "workflows",
1719
2037
  "commands",
@@ -1725,7 +2043,7 @@
1725
2043
  "0.5.6": {
1726
2044
  "version": "0.6.0",
1727
2045
  "date": "2026-04-09",
1728
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2046
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1729
2047
  "regenerate": [
1730
2048
  "workflows",
1731
2049
  "commands",
@@ -1737,7 +2055,7 @@
1737
2055
  "0.5.5": {
1738
2056
  "version": "0.6.0",
1739
2057
  "date": "2026-04-09",
1740
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2058
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1741
2059
  "regenerate": [
1742
2060
  "workflows",
1743
2061
  "commands",
@@ -1749,7 +2067,7 @@
1749
2067
  "0.5.4": {
1750
2068
  "version": "0.6.0",
1751
2069
  "date": "2026-04-09",
1752
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2070
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1753
2071
  "regenerate": [
1754
2072
  "workflows",
1755
2073
  "commands",
@@ -1761,7 +2079,7 @@
1761
2079
  "0.5.3": {
1762
2080
  "version": "0.6.0",
1763
2081
  "date": "2026-04-09",
1764
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2082
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1765
2083
  "regenerate": [
1766
2084
  "workflows",
1767
2085
  "commands",
@@ -1773,7 +2091,7 @@
1773
2091
  "0.5.2": {
1774
2092
  "version": "0.6.0",
1775
2093
  "date": "2026-04-09",
1776
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2094
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1777
2095
  "regenerate": [
1778
2096
  "workflows",
1779
2097
  "commands",
@@ -1785,7 +2103,7 @@
1785
2103
  "0.5.1": {
1786
2104
  "version": "0.6.0",
1787
2105
  "date": "2026-04-09",
1788
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2106
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1789
2107
  "regenerate": [
1790
2108
  "workflows",
1791
2109
  "commands",
@@ -1797,7 +2115,7 @@
1797
2115
  "0.5.0": {
1798
2116
  "version": "0.6.0",
1799
2117
  "date": "2026-04-09",
1800
- "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
2118
+ "notes": "0.5.x 0.6.0 see 0.5.9 entry.",
1801
2119
  "regenerate": [
1802
2120
  "workflows",
1803
2121
  "commands",
@@ -1809,7 +2127,7 @@
1809
2127
  "0.4.1": {
1810
2128
  "version": "0.5.0",
1811
2129
  "date": "2026-04-06",
1812
- "notes": "0.4.x \u2192 0.5.0 \u2014 Japanese-style marks (\u3007\u25b3\u00d7\ud83c\udf31\ud83c\udf3f\u26f0\ufe0f) across all output, agent personas with symbols, command renames (plan/review-plan/review-code), generation-manifest tool, engineering/tools/ eliminated (all tools from $FORGE_ROOT/tools/), paths.forgeRoot and paths.customCommands added to config schema.",
2130
+ "notes": "0.4.x 0.5.0 Japanese-style marks (〇△×🌱🌿⛰️) across all output, agent personas with symbols, command renames (plan/review-plan/review-code), generation-manifest tool, engineering/tools/ eliminated (all tools from $FORGE_ROOT/tools/), paths.forgeRoot and paths.customCommands added to config schema.",
1813
2131
  "regenerate": [
1814
2132
  "workflows",
1815
2133
  "commands"
@@ -1820,7 +2138,7 @@
1820
2138
  "0.4.0": {
1821
2139
  "version": "0.5.0",
1822
2140
  "date": "2026-04-06",
1823
- "notes": "0.4.x \u2192 0.5.0 \u2014 see 0.4.1 entry. If upgrading from 0.4.0 directly, first run: node engineering/tools/manage-config.cjs pipeline backfill-models",
2141
+ "notes": "0.4.x 0.5.0 see 0.4.1 entry. If upgrading from 0.4.0 directly, first run: node engineering/tools/manage-config.cjs pipeline backfill-models",
1824
2142
  "regenerate": [
1825
2143
  "workflows",
1826
2144
  "commands"
@@ -1831,7 +2149,7 @@
1831
2149
  "0.3.15": {
1832
2150
  "version": "0.4.0",
1833
2151
  "date": "2026-04-05",
1834
- "notes": "0.3.x \u2192 0.4.0 \u25b3 Breaking \u2014 Pre-built CJS tools shipped (collate, seed-store, validate-store, manage-config); revision loop fix; context accumulation fix (BUG-001); error triage hook; graceful error handling. Full 0.3.x cycle included.",
2152
+ "notes": "0.3.x 0.4.0 Breaking Pre-built CJS tools shipped (collate, seed-store, validate-store, manage-config); revision loop fix; context accumulation fix (BUG-001); error triage hook; graceful error handling. Full 0.3.x cycle included.",
1835
2153
  "regenerate": [
1836
2154
  "workflows",
1837
2155
  "commands",
@@ -1845,7 +2163,7 @@
1845
2163
  "0.3.14": {
1846
2164
  "version": "0.4.0",
1847
2165
  "date": "2026-04-05",
1848
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2166
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1849
2167
  "regenerate": [
1850
2168
  "workflows",
1851
2169
  "commands",
@@ -1859,7 +2177,7 @@
1859
2177
  "0.3.13": {
1860
2178
  "version": "0.4.0",
1861
2179
  "date": "2026-04-05",
1862
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2180
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1863
2181
  "regenerate": [
1864
2182
  "workflows",
1865
2183
  "commands",
@@ -1873,7 +2191,7 @@
1873
2191
  "0.3.12": {
1874
2192
  "version": "0.4.0",
1875
2193
  "date": "2026-04-05",
1876
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2194
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1877
2195
  "regenerate": [
1878
2196
  "workflows",
1879
2197
  "commands",
@@ -1887,7 +2205,7 @@
1887
2205
  "0.3.11": {
1888
2206
  "version": "0.4.0",
1889
2207
  "date": "2026-04-05",
1890
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2208
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1891
2209
  "regenerate": [
1892
2210
  "workflows",
1893
2211
  "commands",
@@ -1901,7 +2219,7 @@
1901
2219
  "0.3.10": {
1902
2220
  "version": "0.4.0",
1903
2221
  "date": "2026-04-05",
1904
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2222
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1905
2223
  "regenerate": [
1906
2224
  "workflows",
1907
2225
  "commands",
@@ -1915,7 +2233,7 @@
1915
2233
  "0.3.9": {
1916
2234
  "version": "0.4.0",
1917
2235
  "date": "2026-04-05",
1918
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2236
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1919
2237
  "regenerate": [
1920
2238
  "workflows",
1921
2239
  "commands",
@@ -1929,7 +2247,7 @@
1929
2247
  "0.3.8": {
1930
2248
  "version": "0.4.0",
1931
2249
  "date": "2026-04-05",
1932
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2250
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1933
2251
  "regenerate": [
1934
2252
  "workflows",
1935
2253
  "commands",
@@ -1943,7 +2261,7 @@
1943
2261
  "0.3.7": {
1944
2262
  "version": "0.4.0",
1945
2263
  "date": "2026-04-05",
1946
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2264
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1947
2265
  "regenerate": [
1948
2266
  "workflows",
1949
2267
  "commands",
@@ -1957,7 +2275,7 @@
1957
2275
  "0.3.6": {
1958
2276
  "version": "0.4.0",
1959
2277
  "date": "2026-04-05",
1960
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2278
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1961
2279
  "regenerate": [
1962
2280
  "workflows",
1963
2281
  "commands",
@@ -1971,7 +2289,7 @@
1971
2289
  "0.3.5": {
1972
2290
  "version": "0.4.0",
1973
2291
  "date": "2026-04-05",
1974
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2292
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1975
2293
  "regenerate": [
1976
2294
  "workflows",
1977
2295
  "commands",
@@ -1985,7 +2303,7 @@
1985
2303
  "0.3.4": {
1986
2304
  "version": "0.4.0",
1987
2305
  "date": "2026-04-05",
1988
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2306
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
1989
2307
  "regenerate": [
1990
2308
  "workflows",
1991
2309
  "commands",
@@ -1999,7 +2317,7 @@
1999
2317
  "0.3.3": {
2000
2318
  "version": "0.4.0",
2001
2319
  "date": "2026-04-05",
2002
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2320
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
2003
2321
  "regenerate": [
2004
2322
  "workflows",
2005
2323
  "commands",
@@ -2013,7 +2331,7 @@
2013
2331
  "0.3.2": {
2014
2332
  "version": "0.4.0",
2015
2333
  "date": "2026-04-05",
2016
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2334
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
2017
2335
  "regenerate": [
2018
2336
  "workflows",
2019
2337
  "commands",
@@ -2027,7 +2345,7 @@
2027
2345
  "0.3.1": {
2028
2346
  "version": "0.4.0",
2029
2347
  "date": "2026-04-05",
2030
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2348
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
2031
2349
  "regenerate": [
2032
2350
  "workflows",
2033
2351
  "commands",
@@ -2041,7 +2359,7 @@
2041
2359
  "0.3.0": {
2042
2360
  "version": "0.4.0",
2043
2361
  "date": "2026-04-05",
2044
- "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2362
+ "notes": "0.3.x 0.4.0 see 0.3.15 entry.",
2045
2363
  "regenerate": [
2046
2364
  "workflows",
2047
2365
  "commands",
@@ -2062,4 +2380,4 @@
2062
2380
  "breaking": false,
2063
2381
  "manual": []
2064
2382
  }
2065
- }
2383
+ }