@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
@@ -12,7 +12,14 @@ deps:
12
12
  config_fields: [project.prefix, paths.engineering]
13
13
  ---
14
14
 
15
+
15
16
  # Sprint Intake
17
+ ## Iron Laws
18
+
19
+ - Capture requirements accurately; do not editorialize or pre-select options on the user's behalf. The product manager documents what the user says, not what the agent thinks is best.
20
+ - Read `.forge/personas/product-manager.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
21
+ - All store I/O via `forge_store` (or `node "$FORGE_ROOT/tools/store-cli.cjs"`). Never edit `.forge/store/*.json` directly.
22
+
16
23
  ## Algorithm
17
24
 
18
25
  ```
@@ -46,4 +53,6 @@ deps:
46
53
  5. Finalize:
47
54
  - Update sprint status via `node "$FORGE_ROOT/tools/store-cli.cjs" update-status sprint {sprintId} status planning`
48
55
  - **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
49
- ```
56
+ ```
57
+
58
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
@@ -12,6 +12,7 @@ deps:
12
12
  config_fields: [project.prefix, paths.engineering]
13
13
  ---
14
14
 
15
+
15
16
  # Sprint Plan
16
17
  ## Algorithm
17
18
 
@@ -67,6 +68,7 @@ deps:
67
68
  - **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
68
69
  ```
69
70
 
71
+ <!-- See _fragments/iron-laws.md for Iron Laws section structure guidance (sprint-plan uses verbatim Anti-Pattern Guard pattern — orchestrator-special case) -->
70
72
  ## Anti-Pattern Guard
71
73
 
72
74
  The generated workflow MUST include the following section verbatim, placed immediately
@@ -82,6 +84,9 @@ after the Purpose heading and before the Algorithm block:
82
84
  stop. Return to step 1 of the Algorithm and proceed from there.
83
85
  ```
84
86
 
87
+ <!-- See _fragments/store-write-verification.md — NOTE: this file uses an intentionally expanded
88
+ Store-Write Verification variant that explains what counts as a store write in the sprint-plan
89
+ context (includes direct Write/Edit tool calls). Canonical fragment is reference only. -->
85
90
  ## Store-Write Verification
86
91
 
87
92
  Every write to the Forge store MUST succeed before the agent proceeds to the next
@@ -110,4 +115,6 @@ halt and escalate to the human. Include the original payload, the corrected
110
115
  payload, and all error messages in the escalation.
111
116
 
112
117
  **Do NOT** set `FORGE_SKIP_WRITE_VALIDATION=1` to bypass a schema error. That
113
- environment variable is reserved for emergency operator repair only.
118
+ environment variable is reserved for emergency operator repair only.
119
+
120
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
@@ -12,13 +12,18 @@ deps:
12
12
  config_fields: [paths.engineering]
13
13
  ---
14
14
 
15
+
15
16
  # Collate
16
17
  ## Iron Laws
17
18
 
18
19
  - Collation is a read-and-rewrite of generated markdown. Do not mutate any JSON record under `.forge/store/`; the store is the source of truth and collation flows downstream from it.
19
20
  - Read `.forge/personas/collator.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
20
21
  - All store reads via `forge_store` (or `node "$FORGE_ROOT/tools/store-cli.cjs"`). Never edit `.forge/store/*.json` directly.
22
+ - Do NOT call `set-summary` or `set-bug-summary` from within collation. The collator writes markdown views and a `WRITEBACK-SUMMARY.json` disk file only. Calling `set-summary` mutates the JSON store and violates Iron Law 1 (the store is the source of truth; collation flows downstream from it, not into it). The orchestrator reads `WRITEBACK-SUMMARY.json` directly — no store write is needed.
21
23
 
24
+ <!-- See _fragments/store-write-verification.md — NOTE: this file uses an intentionally modified
25
+ Store-Write Verification variant: collation typically writes markdown views (not JSON records),
26
+ so the preamble explains when `forge_store` calls apply. Canonical fragment is reference only. -->
22
27
  ## Store-Write Verification
23
28
 
24
29
  Collation typically writes markdown views, not JSON records. If a remediation
@@ -62,10 +67,22 @@ Never set `FORGE_SKIP_WRITE_VALIDATION=1` — operator-only emergency switch.
62
67
 
63
68
  4. Finalize:
64
69
  - **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
70
+ - Write `WRITEBACK-SUMMARY.json` to the sprint directory (`engineering/sprints/{sprintId}/`) with the following shape:
71
+ ```json
72
+ {
73
+ "objective": "<one sentence — what views were regenerated>",
74
+ "key_changes": ["<up to 6 bullets — which files were written>"],
75
+ "verdict": "n/a",
76
+ "written_at": "<current ISO 8601 timestamp>"
77
+ }
78
+ ```
79
+ The orchestrator reads this file directly to compose the collation event narrative. Do NOT call `set-summary` to register it — that would mutate the store in violation of Iron Law 1.
65
80
  - Invoke Tomoshibi via Skill tool to refresh KB and workflow links in agent
66
81
  instruction files:
67
82
  ```
68
83
  Use the Skill tool:
69
84
  skill: "forge:refresh-kb-links"
70
85
  ```
71
- ```
86
+ ```
87
+
88
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
@@ -20,6 +20,7 @@ deps:
20
20
  config_fields: [commands.test, paths.engineering]
21
21
  ---
22
22
 
23
+
23
24
  # Commit Task
24
25
  ## Iron Laws
25
26
 
@@ -29,15 +30,7 @@ deps:
29
30
 
30
31
  ## Store-Write Verification
31
32
 
32
- Every `forge_store` write MUST succeed before advancing. If `store-cli` exits
33
- non-zero or the `PreToolUse` write-boundary hook blocks the call (exit 2):
34
-
35
- 1. Parse the structured error (names the offending field + schema file).
36
- 2. Correct the JSON to satisfy the schema.
37
- 3. Retry. Repeat up to 3 times.
38
- 4. After 3 failures, halt and escalate with original payload, corrected payload, and all error messages.
39
-
40
- Never set `FORGE_SKIP_WRITE_VALIDATION=1` — operator-only emergency switch.
33
+ <!-- See _fragments/store-write-verification.md for the canonical block content -->
41
34
 
42
35
  ## Algorithm
43
36
 
@@ -76,4 +69,6 @@ Never set `FORGE_SKIP_WRITE_VALIDATION=1` — operator-only emergency switch.
76
69
 
77
70
  5. Finalize:
78
71
  - **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
79
- ```
72
+ ```
73
+
74
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
@@ -13,8 +13,10 @@ deps:
13
13
  config_fields: [paths.engineering, paths.forgeRoot]
14
14
  ---
15
15
 
16
+
16
17
  # Enhancement Agent
17
18
 
19
+ <!-- See _fragments/iron-laws.md for Iron Laws section structure guidance -->
18
20
  ## Iron Laws
19
21
 
20
22
  - Orchestrator-only: this workflow runs with full tool access in the orchestrator session. NEVER delegate it to a subagent.
@@ -22,6 +24,9 @@ deps:
22
24
  - All store I/O via `forge_store` (or `node "$FORGE_ROOT/tools/store-cli.cjs"`). Never edit `.forge/store/*.json` directly.
23
25
  - Phase 1 only touches `{{KEY}}` token text; never rewrite persona prose, algorithm steps, or role definitions.
24
26
 
27
+ <!-- See _fragments/store-write-verification.md — NOTE: this file uses an intentionally abbreviated
28
+ Store-Write Verification variant (4-line condensed form for orchestrator-only workflow).
29
+ Canonical fragment is reference only. -->
25
30
  ## Store-Write Verification
26
31
 
27
32
  Every `forge_store` write MUST succeed before advancing. If `store-cli` exits
@@ -38,6 +43,40 @@ Phases 2 and 3 write proposal artifacts to `.forge/enhancement-proposals/`. This
38
43
  distinct from `.forge/enhancements/` (FR-007, S14 scope). This workflow uses `mkdir -p` before
39
44
  writing the first proposal artifact to avoid assuming the directory exists. No conflict with S14.
40
45
 
46
+ ### Sub-directory: `.forge/enhancement-proposals/queue/`
47
+
48
+ FORGE-S24-T07 introduces a project-local **enhancement queue** at
49
+ `.forge/enhancement-proposals/queue/<sprintId>/<taskId>-<ts>.json` — one file per
50
+ per-task curator run (T10). The queue is **append-only**: each curator run writes
51
+ a fresh file (the ISO compact `<ts>` suffix differentiates writes; nothing is
52
+ overwritten). Phase 2 drains the queue at sprint close, dedupes by
53
+ `{op, target_path, sha256(diff_body)}`, and feeds the merged batch into the
54
+ existing recurrence → delete-candidate → compression-gate → judge pipeline.
55
+ The result: **one batched review prompt per sprint, not one per task** (paper
56
+ §3.2.1 grouped reward). The drain is read-only — Phase 2 never deletes queue
57
+ files; operators triage them during retrospective if needed.
58
+
59
+ **Per-task curator (T10) write contract.** A curator MUST write via
60
+ `forge/tools/queue-drain.cjs` to preserve the append-only invariant:
61
+
62
+ ```sh
63
+ node -e "
64
+ const { appendToQueue } = require('./forge/tools/queue-drain.cjs');
65
+ appendToQueue({
66
+ queueRoot: '.forge/enhancement-proposals/queue',
67
+ sprintId: process.env.FORGE_SPRINT_ID,
68
+ taskId: process.env.FORGE_TASK_ID,
69
+ ts: new Date().toISOString().replace(/[-:]|\\.\\d{3}/g, ''),
70
+ proposals: PROPOSALS_ARRAY,
71
+ });
72
+ "
73
+ ```
74
+
75
+ `appendToQueue` throws if the exact file path already exists; curators MUST
76
+ choose a fresh `ts` per run rather than overwriting. The drain is empty-safe:
77
+ if no curator ever wrote (queue dir missing) or no files exist in the sprint
78
+ sub-dir, Phase 2 reports "no proposals" and exits cleanly (AC5).
79
+
41
80
  ## Confidence gating (Phase 1)
42
81
 
43
82
  A key substitution is **high-confidence** when there is exactly one unambiguous signal source
@@ -179,11 +218,40 @@ Invoked by T09 post-sprint hook or manually via `/forge:enhance --phase 2`.
179
218
  "
180
219
  ```
181
220
 
182
- 2. **Zero-friction guard**: If the friction event list is empty, print:
221
+ 1a. **Drain enhancement queue** (FORGE-S24-T07) read per-task curator
222
+ proposals from `.forge/enhancement-proposals/queue/<sprintId>/`, dedupe by
223
+ `{op, target_path, sha256(diff_body)}`, and produce a `queuedProposals`
224
+ array that joins the synthesised proposals from step 5. This is what makes
225
+ the review **batched** rather than per-task (paper §3.2.1):
226
+
227
+ ```sh
228
+ node -e "
229
+ const { drainQueue } = require('./forge/tools/queue-drain.cjs');
230
+ const drained = drainQueue({
231
+ queueRoot: '.forge/enhancement-proposals/queue',
232
+ sprintId: process.env.FORGE_SPRINT_ID,
233
+ });
234
+ process.stdout.write(JSON.stringify(drained));
235
+ "
183
236
  ```
184
- No friction events queued for the active sprint — nothing to enhance.
237
+
238
+ Contract (per `forge/tools/queue-drain.cjs`):
239
+ - Returns `{ proposals: [...], files: [...], errors: [...] }`. `proposals`
240
+ is the deduped union of every per-task curator file in the sprint
241
+ sub-dir. `files` is the lexicographic-sorted list of source paths (used
242
+ by step 6 to log provenance). `errors` carries any malformed JSON files
243
+ skipped during read — log them, do not abort.
244
+ - Empty / missing queue → empty result. The drain never throws on absent
245
+ queue dir (first-run or no curators registered yet, AC5).
246
+ - The drain is read-only. Operators are responsible for queue triage
247
+ after sprint close.
248
+
249
+ 2. **Zero-input guard**: If both the friction event list AND `queuedProposals`
250
+ are empty, print:
185
251
  ```
186
- and exit Phase 2 immediately (skip steps 3–9; emit the enhancement event with `"notes": "{\"phase\":2,\"frictionCount\":0}"`). Do not create `.forge/enhancement-proposals/` when there are no proposals.
252
+ No friction events or queued proposals for the active sprint nothing to enhance.
253
+ ```
254
+ and exit Phase 2 immediately (skip steps 3–9; emit the enhancement event with `"notes": "{\"phase\":2,\"frictionCount\":0,\"queuedCount\":0}"`). Do not create `.forge/enhancement-proposals/` when there are no proposals.
187
255
 
188
256
  3. **Deduplicate** friction events by composite key `workflow + persona + issue`. Keep the most
189
257
  recent occurrence of each composite key.
@@ -192,19 +260,276 @@ Invoked by T09 post-sprint hook or manually via `/forge:enhance --phase 2`.
192
260
  `retrospective-done`), sorted by completion date. Read its task records from
193
261
  `.forge/store/tasks/` filtered by the sprint ID.
194
262
 
195
- 5. **Synthesize enrichment proposals** — for each friction event:
196
- - Identify which persona or skill file it references.
197
- - Propose a targeted addition: e.g., "architect persona lacks routing pattern knowledge —
198
- suggest adding `{{KB_PATH}}/routing.md` reference to deps.kb_docs."
199
- - For large committed file sets (> 5 files in the sprint), also check whether
200
- `engineer-skills.md` or `architect-skills.md` should reference new patterns.
263
+ 5. **Synthesize enrichment proposals** — for each friction event, classify the proposed
264
+ change into exactly one of three ops (see `forge/schemas/proposal.schema.json`):
265
+
266
+ | `op` | When to use |
267
+ |-----------------|-----------------------------------------------------------------------------|
268
+ | `insert_skill` | A new skill / persona / kb_docs reference is needed; target file does not yet carry the guidance. |
269
+ | `update_skill` | An existing skill or persona file needs revised guidance — e.g., add a routing pattern reference to `deps.kb_docs`, replace a stale instruction. |
270
+ | `delete_skill` | A skill is unused, redundant, or stale (`skill_unused` / `skill_redundant` / `skill_stale` friction subkinds); target file or section should be removed. |
271
+
272
+ For each proposal capture **at minimum** the schema-required triplet
273
+ `{op, target_path, diff_body}` plus optional `rationale` and `sourceFrictionIds`.
274
+ `sourceFrictionIds` MUST carry the `eventId` of every friction event that
275
+ contributed to the proposal — the next step depends on it to resolve the
276
+ originating task for the recurrence scan.
277
+ For large committed file sets (> 5 files in the sprint), also check whether
278
+ `engineer-skills.md` or `architect-skills.md` should be updated (`update_skill`).
279
+ The op classification is the foundation for the downstream judge (T03),
280
+ delete-candidate detection (T05), compression gate (T06), and queue drain (T07).
281
+
282
+ **Merge with queued proposals (T07).** Concatenate the synthesised
283
+ proposals built in this step with the `queuedProposals` array from
284
+ step 1a, then dedupe the combined array with the same key the drain
285
+ uses (`{op, target_path, sha256(diff_body)}`) so a friction-synthesised
286
+ proposal that happens to be byte-identical to a curator-queued one
287
+ collapses. Use:
288
+
289
+ ```sh
290
+ node -e "
291
+ const { dedupeProposals } = require('./forge/tools/queue-drain.cjs');
292
+ // synthesised = proposals built above from friction events.
293
+ // queued = drained.proposals from step 1a.
294
+ const merged = dedupeProposals(synthesised.concat(queued));
295
+ process.stdout.write(JSON.stringify(merged));
296
+ "
297
+ ```
298
+
299
+ The merged array is what feeds steps 5a (recurrence) → 5b (delete
300
+ candidates) → 5b.5 (compression gate) → 5c (judge) — a single batched
301
+ pipeline, never one per task (AC4).
302
+
303
+ 5a. **Cross-task replay scoring (recurrence boost)** — before writing the
304
+ artifact, stamp each proposal with `recurrence_count` and
305
+ `recurrence_task_ids` so the T03 judge can score "this friction recurred
306
+ across N tasks" rather than treating every signal as a singleton:
307
+
308
+ ```sh
309
+ node -e "
310
+ const { annotateProposals } = require('./forge/tools/replay-scoring.cjs');
311
+ // friction = deduped friction events from step 3, each carrying eventId,
312
+ // taskId, subkind, evidence.skillId (orchestrator-stamped).
313
+ // proposals = array built in step 5.
314
+ // taskOrder = task IDs of the most-recent sprint sorted by completion
315
+ // order — same source as step 4.
316
+ const annotated = annotateProposals(proposals, friction, taskOrder);
317
+ process.stdout.write(JSON.stringify(annotated));
318
+ "
319
+ ```
320
+
321
+ Contract (per `forge/tools/replay-scoring.cjs`):
322
+ - `recurrence_count` is the number of distinct tasks (origin task + later
323
+ tasks in `taskOrder`) whose friction events match the proposal's
324
+ originating `(subkind, evidence.skillId)` pair. Always `>= 1`.
325
+ - `recurrence_task_ids` is the `taskOrder`-sorted list of those task IDs.
326
+ - Proposals whose `sourceFrictionIds` cannot be resolved (no matching
327
+ `eventId` in the friction set, or the resolved event lacks
328
+ `subkind`/`evidence.skillId`) receive `recurrence_count: 1` and an empty
329
+ `recurrence_task_ids: []` — neutral signal, not silent failure.
330
+ - The annotator returns new proposal objects; the input array is not
331
+ mutated.
332
+
333
+ 5b. **Delete-candidate detection (3-sprint zero-use)** — scan `skill_usage`
334
+ events across the trailing 3 sprints and emit a `delete_skill` proposal
335
+ for every skill with zero retrieval AND zero invocation across the
336
+ window. This is the only mechanism by which the skill repository shrinks:
337
+
338
+ ```sh
339
+ node -e "
340
+ const { buildDeleteProposals } = require('./forge/tools/delete-candidate-detector.cjs');
341
+ // skillUsageEvents = all events with type === 'skill_usage' across the
342
+ // sprints in scope (collected via the same Step 1
343
+ // walker, filtered by type instead of friction).
344
+ // sprintOrder = sprint IDs sorted by completion order (oldest →
345
+ // newest). The detector takes the trailing windowSize
346
+ // entries.
347
+ // windowSize = 3 by default; configurable. Defined as the trailing
348
+ // N sprints of sprintOrder.
349
+ // targetPathFor = (skillId) => the on-disk path of the skill file to
350
+ // delete. Workflow chooses the mapping convention.
351
+ const deletes = buildDeleteProposals({
352
+ events: skillUsageEvents,
353
+ sprintOrder,
354
+ windowSize: 3,
355
+ targetPathFor: (skillId) => 'forge/skills/' + skillId + '.md',
356
+ });
357
+ process.stdout.write(JSON.stringify(deletes));
358
+ "
359
+ ```
360
+
361
+ Append the resulting `delete_skill` proposals to the proposal array from
362
+ step 5/5a before step 6. Each delete proposal already carries
363
+ `recurrence_count: 1` and `recurrence_task_ids: []` (the annotator from
364
+ step 5a is for friction-derived proposals; delete candidates come from
365
+ usage telemetry, not friction, so recurrence is neutral by construction).
366
+
367
+ 5b.5. **Compression gate (reject >20% growth without 3+ frictions)** — a cheap
368
+ deterministic filter that runs BEFORE the LLM judge (step 5c). Any
369
+ `update_skill` proposal that would grow the target file by more than 20%
370
+ (byte-wise, UTF-8) must be backed by at least 3 supporting friction events;
371
+ otherwise it is rejected here and never reaches the judge. `insert_skill`
372
+ and `delete_skill` proposals pass through unconditionally — insert growth
373
+ is handled by the judge's `body_under_2kb` axis and delete only shrinks.
374
+
375
+ Why a pre-judge gate? Judging is expensive. Unbounded skill-body growth is
376
+ the classic SkillOS failure mode — pasting pages of trajectory copy-paste to
377
+ "patch" a friction. It is cheap to detect deterministically and wasteful to
378
+ ask the judge to rule on.
379
+
380
+ ```sh
381
+ node -e "
382
+ const fs = require('node:fs');
383
+ const path = require('node:path');
384
+ const { filterProposals } = require('./forge/tools/compression-gate.cjs');
385
+ // proposals = post-5b array (synthesis + recurrence + delete-candidates).
386
+ // PROJECT_ROOT resolves the target_path; forge plugin source is the source
387
+ // of truth for current bodies. The workflow renders the diff via its own
388
+ // applyProposalDiff helper (left abstract here — the gate is body-agnostic).
389
+ const projectRoot = process.env.PROJECT_ROOT;
390
+ const result = filterProposals({
391
+ proposals,
392
+ currentBodyFor: (p) => {
393
+ const abs = path.join(projectRoot, p.target_path);
394
+ try { return fs.readFileSync(abs, 'utf8'); }
395
+ catch (e) { return ''; } // insert_skill or missing file → empty
396
+ },
397
+ newBodyFor: (p) => applyProposalDiff(currentBodyFor(p), p),
398
+ // Default supporting count = proposal.sourceFrictionIds.length. Override
399
+ // if the policy is 'count frictions citing the same skill across the
400
+ // sprint' rather than 'count citations on the proposal itself'.
401
+ });
402
+ const proposalsAfterGate = result.admitted;
403
+ const compressionRejections = result.rejected; // [{ proposal, ...evaluation }]
404
+ process.stdout.write(JSON.stringify({ kept: proposalsAfterGate, rejected: compressionRejections }));
405
+ "
406
+ ```
407
+
408
+ **Logging gate rejections.** Append every rejection from this step to the
409
+ same `phase2-<timestamp>-rejections.json` sibling that step 5c uses, with
410
+ the rejection record carrying `{ proposal, admit: false,
411
+ reason: 'compression_gate_growth_unsupported', growthRatio, currentBytes,
412
+ newBytes, supportingFrictionCount, threshold, minSupportingFrictions }`.
413
+ This keeps every drop — gate or judge — traceable in one place.
414
+
415
+ Contract (per `forge/tools/compression-gate.cjs`):
416
+ - `GROWTH_THRESHOLD === 0.20`; comparison is **strict** (`> 0.20`). A
417
+ proposal at exactly 20% growth admits without friction support.
418
+ - `MIN_SUPPORTING_FRICTIONS === 3`. Two or fewer citations is not enough.
419
+ - An update on an empty current body yields `growthRatio: Infinity`; the
420
+ friction-support rule still applies.
421
+ - Negative growth (shrink) admits unconditionally.
422
+ - `filterProposals` partitions the input array preserving order; the
423
+ output `rejected` array carries the structured evaluation alongside the
424
+ original proposal.
425
+
426
+ 5c. **LLM-judge gate (Sonnet rubric, drop <3/5)** — score every proposal
427
+ against the 5-axis rubric and drop low-signal proposals before
428
+ presentation. The rubric is single-sourced in
429
+ `forge/tools/judge-proposal.cjs`:
430
+
431
+ | Axis (0..5) | What it measures |
432
+ |---|---|
433
+ | `specificity` | Names a concrete target_path beyond `forge/skills/*` floor; carries a non-trivial rationale; recurrence trail boosts. |
434
+ | `when_not_to_use` | Body contains a literal "When NOT to use" section. |
435
+ | `no_trajectory_copy_paste` | No long verbatim runs or unbroken non-whitespace blocks (>= 400 bytes) that suggest pasted trajectory log. |
436
+ | `body_under_2kb` | `Buffer.byteLength(diff_body, 'utf8') <= 2048`. |
437
+ | `cites_friction` | Proposal carries at least one `sourceFrictionIds` entry; multiple citations or recurrence boost the score. |
438
+
439
+ For each proposal in the post-5b array, the workflow asks Sonnet to
440
+ apply the rubric and emit per-axis 0..5 scores; in the absence of an
441
+ LLM call, the deterministic `scoreProposal(proposal)` helper in
442
+ `judge-proposal.cjs` is used as both the fallback scorer and the
443
+ validation contract for Sonnet-produced scores (single source of truth
444
+ for the rubric definition).
445
+
446
+ ```sh
447
+ node -e "
448
+ const {
449
+ scoreProposal,
450
+ decideJudgement,
451
+ } = require('./forge/tools/judge-proposal.cjs');
452
+ // proposals = post-5b array of proposal records.
453
+ const judged = proposals.map((p) => {
454
+ const scored = scoreProposal(p);
455
+ const decision = decideJudgement(scored);
456
+ return { proposal: p, ...decision };
457
+ });
458
+ const kept = judged.filter((j) => j.verdict === 'keep').map((j) => j.proposal);
459
+ const dropped = judged.filter((j) => j.verdict === 'drop');
460
+ process.stdout.write(JSON.stringify({ kept, dropped }));
461
+ "
462
+ ```
463
+
464
+ Contract (per `forge/tools/judge-proposal.cjs`):
465
+ - `scoreProposal(proposal)` returns `{ axes, average }` with `axes`
466
+ keyed by every entry in `RUBRIC_AXES` and `average` rounded to one
467
+ decimal place.
468
+ - `decideJudgement({ axes })` returns
469
+ `{ verdict, average, axes, reason }`. `verdict === 'drop'` iff
470
+ `average < 3` (strictly less than); ties at exactly 3.0 keep.
471
+ - `decideJudgement` fails loud on missing or out-of-range axes — the
472
+ judge will NOT silently coerce a malformed score sheet into a verdict.
473
+
474
+ **Logging dropped proposals (AC3).** Every rejection MUST be persisted
475
+ for retro review. Replace the proposal array passed to step 6 with the
476
+ `kept` list, and append the `dropped` list to
477
+ `$PROJECT_ROOT/.forge/enhancement-proposals/phase2-<timestamp>-rejections.json`
478
+ as a sibling artifact. Each rejection record carries the original
479
+ proposal alongside `{ verdict: 'drop', average, axes, reason }`. The
480
+ markdown summary written in step 6 SHOULD include a "Dropped (N)" line
481
+ pointing at the rejections file when N > 0.
482
+
483
+ **Carry-over caveat** — the rubric is deterministic; Sonnet's role is
484
+ to add semantic judgement to axes that the heuristic scorer
485
+ approximates (specificity in particular). When Sonnet is invoked, its
486
+ per-axis scores MUST be validated against the 0..5 range via the same
487
+ `validateAxes` invariant `decideJudgement` enforces. Operators
488
+ investigating an unexpected drop should consult the per-axis trace in
489
+ `reason`.
490
+
491
+ Contract (per `forge/tools/delete-candidate-detector.cjs`):
492
+ - A skill qualifies for deletion iff it has at least one `skill_usage`
493
+ event inside the trailing window AND every in-window observation has
494
+ `retrieved === false` AND `used === false`. Any single `retrieved: true`
495
+ or `used: true` event disqualifies the skill.
496
+ - Skills with zero observations in the window are NOT proposed — this
497
+ case is indistinguishable from a newly-added skill that hasn't been
498
+ loaded yet, so silence is the safe default.
499
+ - Each proposal carries `window_size`, `window_sprint_ids`, and a
500
+ `sourceFrictionIds: []` (delete candidates derive from usage telemetry,
501
+ not friction).
502
+
503
+ **Carry-over caveat** — the trailing-3-sprint window is only meaningful
504
+ once 3 sprints have actually elapsed since `skill_usage` event emission
505
+ landed in FORGE-S24-T01 (forge 0.45.1). During the carry-over period the
506
+ detector still runs over whatever sprintOrder it receives, but the
507
+ signal is noisier: a skill flagged after only one or two sprints of
508
+ history may simply be new or temporarily idle. Operators should treat
509
+ delete proposals from short-history runs as advisory until the full
510
+ window is populated.
201
511
 
202
512
  6. **Write proposal artifact**:
203
513
  ```sh
204
514
  mkdir -p "$PROJECT_ROOT/.forge/enhancement-proposals"
205
515
  ```
206
- Write to `$PROJECT_ROOT/.forge/enhancement-proposals/phase2-<timestamp>.md`. Format:
207
- one section per proposed change, with a fenced diff block showing before/after text.
516
+ Write **two** outputs for each Phase 2 run (using the `kept` list from
517
+ step 5c dropped proposals are persisted separately to the
518
+ `phase2-<timestamp>-rejections.json` sibling described in step 5c):
519
+
520
+ - `phase2-<timestamp>.md` — human-readable markdown, one section per proposal,
521
+ showing op + target_path + a fenced diff block.
522
+ - `phase2-<timestamp>.json` — machine-readable array of proposal records, each
523
+ conforming to `forge/schemas/proposal.schema.json` (required keys: `op`,
524
+ `target_path`, `diff_body`; `op` ∈ {insert_skill, update_skill, delete_skill};
525
+ optional `recurrence_count` ≥ 1 and `recurrence_task_ids` populated by step 5a).
526
+
527
+ **Back-compat on read** — pre-0.45.2 proposal records lack `op`. Downstream
528
+ consumers MUST route legacy records through
529
+ `forge/tools/proposal-normalize.cjs:normaliseProposal()` which defaults the
530
+ missing `op` to `insert_skill` (the only op the prior insert-biased flow
531
+ could produce). Do NOT silently coerce — call the helper explicitly so the
532
+ normalisation is auditable.
208
533
 
209
534
  7. **Present to user**:
210
535
  ```
@@ -278,3 +603,5 @@ Invoked by `/forge:enhance --phase 3` (default when no phase given), or delegate
278
603
  If any step fails unexpectedly, describe what went wrong and offer:
279
604
 
280
605
  > "This looks like a Forge bug. Would you like to file a report? Run `/forge:report-bug`."
606
+
607
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->
@@ -14,6 +14,7 @@ deps:
14
14
  config_fields: [commands.test, paths.engineering]
15
15
  ---
16
16
 
17
+
17
18
  # Fix Bug
18
19
  ## Pipeline Phases
19
20
 
@@ -159,8 +160,12 @@ Differences are confined to the **triage** step and the **path branch**.
159
160
  • Reproduce the bug (failing test or reproduction script).
160
161
  • Confirm the root cause via codebase research.
161
162
  • Decide Path A vs Path B by the criteria above.
162
- • Write TRIAGE.md and TRIAGE-SUMMARY.json (with `path` field).
163
- Call set-bug-summary {bugId} triage TRIAGE-SUMMARY.json
163
+ • Write triage artifact:
164
+ forge_artifact({ command:"write", entity:"bug", entityId:"{bugId}", artifact:"triage", content:"<markdown>" })
165
+ • Write triage-summary artifact (JSON shape documented in § Triage Judgement):
166
+ forge_artifact({ command:"write", entity:"bug", entityId:"{bugId}", artifact:"triage-summary", content:"<JSON>" })
167
+ • Call set-bug-summary {bugId} triage via forge_store:
168
+ forge_store({ command:"set-bug-summary", bugId:"{bugId}", phase:"triage", file:"TRIAGE-SUMMARY.json" })
164
169
  - On return, orchestrator transitions status:
165
170
  store-cli update-status bug {bugId} status triaged
166
171
  store-cli update-status bug {bugId} status in-progress
@@ -386,6 +391,8 @@ Note: the `forbid bug.status == approved | verified` rows are defensive — no
386
391
  phase in this workflow writes those values, and a follow-up cleanup should
387
392
  drop them from `bug.schema.json` entirely. Until then, these gates halt any
388
393
  LLM-improvised attempt to land in the run-task trap (see today's regression).
394
+
395
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template (fix-bug uses orchestrator-special long-form prose — cannot be reduced to standard subsections) -->
389
396
  ## Iron Laws
390
397
 
391
398
  <!-- Shared orchestrator laws live in generic-skills.md § Orchestrator Iron Laws. -->
@@ -20,6 +20,7 @@ deps:
20
20
  config_fields: [commands.test, paths.engineering]
21
21
  ---
22
22
 
23
+
23
24
  # Implement Plan
24
25
  ## Algorithm
25
26
 
@@ -50,10 +51,9 @@ deps:
50
51
  - Run build if frontend assets modified: {BUILD_COMMAND}
51
52
 
52
53
  4. Documentation:
53
- - Write PROGRESS.md containing:
54
- - Summary of changes
55
- - Test evidence (copy of output)
56
- - Files changed manifest
54
+ - Write PROGRESS.md via `forge_artifact`:
55
+ `forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"progress", content:"<markdown>" })`
56
+ Content must include: summary of changes, test evidence (copy of output), files changed manifest.
57
57
 
58
58
  5. Knowledge Writeback:
59
59
  - Update architecture/domain/stack-checklist if discoveries were made
@@ -65,34 +65,27 @@ deps:
65
65
  - `planned` → `implemented` (workflow-prose path — direct)
66
66
  - `plan-approved` → `implementing` → `implemented` (supervisor-review path)
67
67
  - Out-of-band escapes (any state): `plan-revision-required`, `code-revision-required`, `blocked`, `escalated`, `abandoned`
68
- Update status: `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status implemented`
68
+ Update status check current state first:
69
+ - If predecessor is `planned` or `implementing`:
70
+ `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status implemented`
71
+ - If predecessor is `plan-approved` (two-step mandatory — FSM forbids skipping `implementing`):
72
+ `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status implementing`
73
+ `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status implemented`
69
74
  - **Bug mode** — NO status write. The bug remains `in-progress` until the commit phase transitions it to `fixed`. Writing `bug.status` here violates `meta-fix-bug.md § Iron Laws #2`.
70
75
  - **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
71
76
 
72
77
  7. Emit Summary Sidecar:
73
- - Write `IMPLEMENTATION-SUMMARY.json` to the record's directory with the following shape:
74
- ```json
75
- {
76
- "objective": "<one sentencewhat this implementation delivered>",
77
- "key_changes": ["<up to 12 bullets, 200 chars each — files changed, key decisions>"],
78
- "verdict": "n/a",
79
- "written_at": "<current ISO 8601 timestamp>",
80
- "artifact_ref":"PROGRESS.md"
81
- }
82
- ```
83
- - Call (task mode):
84
- ```
85
- node "$FORGE_ROOT/tools/store-cli.cjs" set-summary {taskId} implementation \
86
- engineering/sprints/{sprint}/{task}/IMPLEMENTATION-SUMMARY.json
87
- ```
78
+ - Write `IMPLEMENTATION-SUMMARY.json` via `forge_artifact`:
79
+ `forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"implementation-summary", content:"<JSON>" })`
80
+ JSON shape: `{"objective":"<one sentence>", "key_changes":["<up to 12 bullets>"], "verdict":"n/a", "written_at":"<ISO 8601>", "artifact_ref":"PROGRESS.md"}`
81
+ The tool validates required fields automatically fix and retry if it rejects.
82
+ - Then link sidecar to store (task mode):
83
+ `forge_store({ command:"set-summary", args:["{taskId}", "implementation", "engineering/sprints/{sprint}/{task}/IMPLEMENTATION-SUMMARY.json"] })`
88
84
  Or (bug mode):
89
- ```
90
- node "$FORGE_ROOT/tools/store-cli.cjs" set-bug-summary {bugId} implementation \
91
- engineering/bugs/{bugDir}/IMPLEMENTATION-SUMMARY.json
92
- ```
93
- - If the set-summary call exits non-zero, fix the sidecar JSON and retry. Do not proceed without a valid summary.
85
+ `forge_store({ command:"set-bug-summary", args:["{bugId}", "implementation", "engineering/bugs/{bugDir}/IMPLEMENTATION-SUMMARY.json"] })`
94
86
  ```
95
87
 
88
+ <!-- See _fragments/iron-laws.md for Iron Laws section structure guidance -->
96
89
  ## Iron Laws
97
90
 
98
91
  - Follow the Algorithm step by step. Execute the approved PLAN.md exactly; do not invent scope or skip steps without updating the plan first.
@@ -102,15 +95,9 @@ deps:
102
95
 
103
96
  ## Store-Write Verification
104
97
 
105
- Every `forge_store` write MUST succeed before advancing. If `store-cli` exits
106
- non-zero or the `PreToolUse` write-boundary hook blocks the call (exit 2):
107
-
108
- 1. Parse the structured error (names the offending field + schema file).
109
- 2. Correct the JSON to satisfy the schema.
110
- 3. Retry. Repeat up to 3 times.
111
- 4. After 3 failures, halt and escalate with original payload, corrected payload, and all error messages.
112
-
113
- Never set `FORGE_SKIP_WRITE_VALIDATION=1` — operator-only emergency switch.
98
+ <!-- See _fragments/store-write-verification.md for the canonical block content -->
114
99
 
115
100
  ## Friction Emit
116
- Emit `type:friction` `{workflow:implement, persona:engineer, issue}` per `_fragments/friction-emit.md`.
101
+ Emit `type:friction` `{workflow:implement, persona:engineer, issue}` per `_fragments/friction-emit.md`.
102
+
103
+ <!-- See _fragments/generation-instructions.md for Generation Instructions template -->