@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
package/CHANGELOG.md CHANGED
@@ -7,6 +7,386 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.18.0] — 2026-05-23
11
+
12
+ ### Changed
13
+
14
+ - **pi runtime: 0.75.3-forge.1 → 0.75.4-forge.1** — 70 upstream commits:
15
+ adaptive thinking for Anthropic-compatible aliases, Bedrock support (Smithy
16
+ HTTP handler, default max tokens), OpenCode session headers, OAuth
17
+ device-code refactor, git/path-handling fixes, export-HTML attribute escaping.
18
+ Upstream migrated to `allowImportingTsExtensions` + `rewriteRelativeImportExtensions`;
19
+ fork preserves `auth-guidance` and `migrations` exports.
20
+ - **Forge plugin: 0.45.0 → 0.51.1** — sprints S25-T15 through T28:
21
+ hook polish (mtime sentinel, swallowed-error log, `CLAUDE_PLUGIN_ROOT`, timeout),
22
+ catalog generator + FSM canonicalization, catalog-loader/catalog-types +
23
+ catalog-driven TRANSITIONS, guardrails CI (manifest-drift + enum-catalog-drift
24
+ `--check` gates, knip dead-code gate, two-layer guard test).
25
+
26
+ ## [0.17.1] — 2026-05-23
27
+
28
+ ### Added
29
+
30
+ Guardrails CI consolidation (FORGE-S25-T28):
31
+
32
+ - **knip dead-code gate** — `knip.config.ts` added; `npm run dead-code` script
33
+ and `Dead-code gate (knip)` step in `.github/workflows/tests.yml`. Catches
34
+ unused exports and dead files in `src/` on every PR. Known false-positives
35
+ (pi-framework dynamic dispatch, public API types) suppressed in
36
+ `knip.config.ts` with inline justification comments.
37
+ - **Two-layer guard test** — `test/extensions/forgecli/two-layer-guard.test.ts`
38
+ statically scans `scripts/build-payload.cjs` source text to verify no
39
+ copy expression references hardcoded `engineering/` or `.forge/` paths that
40
+ would accidentally bundle private sprint data into the npm package payload.
41
+ - **CI Gates documentation** — `CLAUDE.md` extended with `## CI Gates` section
42
+ summarising the four gates in `tests.yml` and knip fix instructions.
43
+
44
+ ## [0.15.1] — 2026-05-22
45
+
46
+ ### Removed
47
+
48
+ Eight dead-code modules retired after the round-2 organization scan
49
+ (FORGE-S25-T05). Each removal carries paste-ready grep evidence in its
50
+ commit; no production caller existed for any of them. The two
51
+ `build-payload.cjs` directory copies for `prompts/` and `schemas/` now
52
+ exercise their fail-soft `existsSync` branches and emit a
53
+ `"… not found — skipping"` line at build time — expected, not a defect.
54
+
55
+ - **B-3** — `src/bin/forgecli.ts` stub (no `bin` map entry pointed at it;
56
+ all three aliases resolve to `dist/bin/forge.js`).
57
+ - **S-5** — `src/extensions/forgecli/schemas/task-list.schema.json` plus
58
+ the now-empty `schemas/` directory.
59
+ - **S-6** — `src/extensions/forgecli/prompts/sprint-plan-prompt.md` plus
60
+ the now-empty extension-internal `prompts/` directory. The clone-root
61
+ `forge-cli/prompts/tomoshibi.md` is unaffected.
62
+ - **S-8 / Pass-3** — `src/extensions/forgecli/loaders/template-render.ts`
63
+ and its sole test `test/extensions/forgecli/loaders/template-render.test.ts`.
64
+ - **C-10** — `discoverForgeRoot` wrapper export from
65
+ `src/extensions/forgecli/forge-root.ts`. The live `discoverForgeConfig`
66
+ function stays; `test/forge-root.test.ts` was rewritten case-for-case to
67
+ exercise `discoverForgeConfig` and assert against its `.forgeRoot` field.
68
+ - **ST-8** — `test/poc/subagent-imports.ts` (vestigial spike type-check
69
+ probe; `test/poc/**` is already excluded by vitest).
70
+ - **ST-5** — `tsconfig.spike.json` (no script, workflow, or tool invokes
71
+ it; spike-r3..r6 directories remain in place, flagged for a future
72
+ archive sweep).
73
+ - **N-S-A** — `src/extensions/forgecli/config-tui/index.ts` barrel
74
+ (all consumers import directly from internal modules).
75
+
76
+ ## [0.15.0] — 2026-05-22
77
+
78
+ > **The SkillOS release.** Forge now treats its own skill library as a
79
+ > living, signal-driven asset. The model's actual frictions — what it
80
+ > reached for, what worked, what didn't — feed back into the project
81
+ > through a five-subkind taxonomy, an LLM-judge rubric, a compression
82
+ > gate, and a per-task curator queue drained as one batched review at
83
+ > sprint close. The result: your `.forge/skills/` tracks the codebase as
84
+ > it evolves, instead of calcifying into a directory of well-intentioned
85
+ > instructions nobody opens.
86
+ >
87
+ > This release also closes the packaging gaps that were silently
88
+ > shipping every Forge install: missing structural checks, missing
89
+ > SkillOS tools in the payload, a `/forge:update` that upgraded the
90
+ > CLI but skipped project migrations, a version banner that lied about
91
+ > the bundled plugin. The deterministic-check infrastructure
92
+ > (`check-structure.cjs`, `verify-integrity.cjs`) is finally live
93
+ > end-to-end and would now flag a missing skill file the moment it
94
+ > happens. The plugin payload is now coherent enough to drive its own
95
+ > auditing.
96
+
97
+ ### Added — SkillOS curation pipeline (FORGE-S24)
98
+
99
+ - **`skill-retriever.ts`** (T08, ac90659). New BM25 retriever using
100
+ `lunr.js` (pinned exact) over skill frontmatter + description fields.
101
+ Returns deterministic top-k for a known corpus and emits a
102
+ `skill_usage` event with `retrieved: true` and a populated
103
+ `retrieval_score` for every hit. The signal that tells Phase 2 which
104
+ skills the model actually saw.
105
+ - **`skill-usage-tracker.ts`** (T09, 394125c). Diffs tool-call trajectories
106
+ against retrieved skills; emits `skill_usage` events with `used: true`
107
+ and `tool_call_success_rate` populated. Three discriminator cases
108
+ (overlap → used, no-overlap → unused, reasoning-only → used) covered
109
+ by failing-first tests. Telemetry-actor split: the orchestrator owns
110
+ emission; subagents never call this module directly.
111
+ - **`skill-curator-subagent.ts`** (T10, ea29079). Per-task curator —
112
+ takes retrieval + usage signals, dispatches a `runForgeSubagent` with
113
+ the composed task body, parses proposals out, and writes them to the
114
+ append-only queue at
115
+ `.forge/enhancement-proposals/queue/<sprint>/<task>-<ts>.json`. One
116
+ curator run per task; Phase 2 collects them at sprint close.
117
+ - **`friction-emit.ts`** (T11, b4d3526). Auto-emits friction events with
118
+ five skill subkinds — `skill_unused` (retrieved but not used on success),
119
+ `skill_failed` (used on failure), `skill_missing` (not retrieved on
120
+ success with ≥2 tool errors), `skill_stale` (unused 3 consecutive
121
+ sprints), `skill_redundant` (>0.8 overlap pair). The diagnostic
122
+ vocabulary that lets a project tell you which of its skills are
123
+ carrying weight and which aren't.
124
+ - **`forgeCli.skillCuration.enabled` flag** (T12, 7904c4b). Gated rollout
125
+ — default OFF. Layered resolution: env override
126
+ `FORGE_CLI_SKILL_CURATION_ENABLED` → project
127
+ `<cwd>/.pi/forge-cli/config.json` → global
128
+ `~/.pi/forge-cli/config.json` → `false`. All four emission modules
129
+ no-op silently when the flag is off, so a flag-off install is
130
+ byte-identical to pre-FORGE-S24 behaviour. The pure classifier helpers
131
+ (`computeFrictionSignals`, `classifySkillUsage`, `buildSkillIndex`,
132
+ `retrieveTopK`, `composeCuratorTask`, `parseProposalsFromOutput`) are
133
+ **not** gated — they have no side effects and remain callable for
134
+ downstream consumers.
135
+
136
+ ### Added — bundled forge-plugin pipeline (paired with v0.46.1)
137
+
138
+ Forge-cli now bundles `forge-plugin@0.46.1` with the full FORGE-S24
139
+ machinery, regenerated into the installable base-pack:
140
+
141
+ - **`queue-drain.cjs`** (T07). Append-only queue under
142
+ `.forge/enhancement-proposals/queue/<sprint>/`; dedupe key is
143
+ `{op, target_path, sha256(diff_body)}`; drain at sprint close produces
144
+ a single batched review prompt instead of one prompt per task — the
145
+ SkillOS §3.2.1 grouped-reward pattern.
146
+ - **`compression-gate.cjs`** (T06). Rejects `update_skill` proposals that
147
+ grow a target skill by >20% unless backed by ≥3 supporting friction
148
+ events. Closes the unbounded-growth failure mode where every friction
149
+ pastes another paragraph of trajectory copy into a skill file. Strict
150
+ byte-wise (UTF-8) growth check; insert/delete pass through;
151
+ recurrence-supported growth is allowed.
152
+ - **`judge-proposal.cjs`** (T03). Sonnet-class LLM-judge rubric applied
153
+ to every surviving proposal; drops `<3/5`. Rejections persist to
154
+ `.forge/enhancement-proposals/queue/<sprint>/phase2-<ts>-rejections.json`
155
+ so every drop stays traceable.
156
+ - **`delete-candidate-detector.cjs`** (T05). Scans trailing 3 sprints
157
+ of `skill_usage` events. Any skill with zero retrieval AND zero
158
+ invocation across the window emits a `delete_skill` proposal at
159
+ Phase 2 entry. The only mechanism by which the skill repo shrinks.
160
+ - **`replay-scoring.cjs`** (T04). Cross-task recurrence — same
161
+ `{subkind, skillId}` across tasks t..N gets a `recurrence_count` boost
162
+ that the judge consumes as a specificity score. "This friction
163
+ happened three times" beats "this friction happened once."
164
+ - **Proposal schema with op classification** (T02). `proposal.schema.json`
165
+ enforces `op ∈ {insert_skill, update_skill, delete_skill}` with
166
+ required `target_path` and `diff_body`. Legacy inserts back-compat
167
+ via `proposal-normalize.cjs`. Strict `additionalProperties: false`.
168
+ - **`skill_usage` event variant** (T01). `event.schema.json` gained a
169
+ conditional `allOf` branch for `type: "skill_usage"` requiring
170
+ `{eventId, sprintId, taskId, skillId, retrieved, used,
171
+ tool_call_success_rate, retrieval_score}`. Strict.
172
+
173
+ ### Fixed — packaging gaps that broke deterministic checks
174
+
175
+ - **`/forge:update` skipped the migration step entirely** (fc40f4a,
176
+ closes forge-cli#32). The handler implemented the full 5-step guided
177
+ upgrade — detect install → fetch changelog → confirm → npm install →
178
+ apply migrations — but the registration in `index.ts` omitted the
179
+ migration-side options, so the handler returned early before reaching
180
+ the migration block. Projects upgrading the CLI never received
181
+ schema/workflow/template migrations. Fixed by wiring
182
+ `currentBundledForgeVersion` + `migrationProjectRoot` at registration.
183
+ - **`/forge:update` migration block unreachable when CLI was already at
184
+ latest** (31796d5, follow-up on #32). The "already at latest" branch
185
+ early-returned BEFORE the migration check at line 373. Decoupled the
186
+ two orthogonal gates — npm-upgrade and project-migration — so a
187
+ locally-built CLI ahead of npm's published version (or a fresh clone
188
+ with a stale drift cache) still fires the migration prompt when
189
+ `fromVersion !== toVersion`.
190
+ - **`structure-manifest.json` + `integrity.json` not bundled** (cd732d2).
191
+ Both files exist in plugin source (`forge/forge/schemas/`,
192
+ `forge/forge/integrity.json`) and the consuming tools
193
+ (`check-structure.cjs`, `verify-integrity.cjs`) shipped in
194
+ `TOOLS_TO_COPY`, but `build-payload.cjs` never copied the artifacts.
195
+ Result: `/forge:health`'s structural-check and integrity-verify
196
+ gates silently passed on every install ("× not found" → exit 0).
197
+ Bundle now ships `dist/forge-payload/schemas/structure-manifest.json`
198
+ (non-dot path matching what `check-structure.cjs` resolves) and
199
+ `dist/forge-payload/integrity.json` at bundle root. After install,
200
+ `verify-integrity.cjs` correctly reports `〇 Plugin integrity — all
201
+ 25 files unmodified`, and `check-structure.cjs` flags any missing
202
+ expected file in the user's `.forge/` tree.
203
+ - **`hooks/` and `agents/` not bundled** (625fbb1, continuation of
204
+ cd732d2). `integrity.json` tracks 25 files including 4 hooks
205
+ (`check-update.js`, `forge-permissions.js`, `triage-error.js`,
206
+ `validate-write.js`) and 2 agents (`tomoshibi.md`,
207
+ `store-query-validator.md`). None were copied. The TS ports
208
+ (`hook-dispatcher.ts`, `hooks/*.ts`) are the actual runtime path —
209
+ the `.js`/`.cjs` files are integrity ballast that satisfy plugin
210
+ tampering detection. Bundled to satisfy
211
+ `verify-integrity.cjs`. Hooks intentionally bundle only top-level
212
+ `*.js` (4 files); `lib/`, `__tests__/`, and `*.cjs` (post-init,
213
+ post-sprint) are excluded — none are integrity-tracked and the TS
214
+ ports own the runtime channel.
215
+ - **5 FORGE-S24 plugin tools missing from `TOOLS_TO_COPY`** (commit
216
+ in the build-payload cluster). `queue-drain.cjs`,
217
+ `compression-gate.cjs`, `judge-proposal.cjs`,
218
+ `delete-candidate-detector.cjs`, `replay-scoring.cjs` — the new Phase 2
219
+ workflow `require()`s them from `$FORGE_ROOT/tools/`. Without them
220
+ bundled, `/forge:enhance` would fail with
221
+ `Cannot find module './forge/tools/queue-drain.cjs'` (and four more).
222
+ Added to the allowlist with a comment block flagging the dependency.
223
+ - **Version banner reported stale `bundledVersion`** (ae520f8). Both
224
+ readers (`src/bin/forge.ts printVersion`, `src/extensions/forgecli/
225
+ index.ts readPkgVersions`) sourced the value from `package.json`
226
+ `forge.bundledVersion` — a hand-maintained mirror that nobody
227
+ updated when the plugin moved 0.45.0 → 0.46.0 → 0.46.1. Both readers
228
+ now prefer `dist/forge-payload/.claude-plugin/plugin.json` as the
229
+ single source of truth. After fix:
230
+ `@entelligentsia/forgecli@0.15.0 (forge-plugin@0.46.1, pi@…)` reads
231
+ the truth. The mirror in package.json is now informational only.
232
+
233
+ ### Changed
234
+
235
+ - **Bundled forge-plugin: v0.44.5 → v0.46.1.** Two minor bumps. v0.45.x
236
+ shipped the FORGE-S24 SKILL-CURATION machinery (event variant,
237
+ proposal schema, queue drain, compression gate, judge, recurrence,
238
+ delete-candidate); v0.46.0 was the sprint-completion marker; v0.46.1
239
+ is the build fix that regenerated `init/base-pack/workflows/
240
+ enhance.md` from the meta source so projects migrating to 0.46.x
241
+ actually receive the new Phase 2 algorithm.
242
+ - **`forge_verify_apply` MCP tool ships in the bundle** (b971596,
243
+ closes forge-cli#31). Detects hallucinated `Edit` calls — when an
244
+ assistant proposes an edit that doesn't match any file on disk, the
245
+ tool flags it at apply time instead of silently no-op'ing.
246
+
247
+ ### Documented
248
+
249
+ - **`hook-dispatcher.ts` scope clarification** (7d513ca). New header
250
+ comment block stating the write-guard is a soft fence for honest
251
+ mistakes, not a security boundary against adversarial bash escape.
252
+ See `doc/analysis/write-guard-scope-and-model-behavior.md` in the
253
+ forge-engineering repo for the testbench evidence (two pi-session
254
+ recordings of the same rogue-write prompt — one model surrendered on
255
+ the first block, another escalated three times until succeeding via
256
+ `echo > file`).
257
+
258
+ ### Migration notes
259
+
260
+ After upgrading via `npm i -g @entelligentsia/forgecli@0.15.0`:
261
+
262
+ 1. `4ge` from your project root.
263
+ 2. `/forge:update` will now actually apply project migrations (the
264
+ wire-up + decoupling fixes above). Accept the migration prompt.
265
+ 3. To enable SkillOS curation, set
266
+ `forgeCli.skillCuration.enabled: true` in
267
+ `<cwd>/.pi/forge-cli/config.json` (or
268
+ `FORGE_CLI_SKILL_CURATION_ENABLED=1` for one-shot use). Until you
269
+ enable it, the four emission modules no-op — the install is
270
+ byte-identical to pre-FORGE-S24 behaviour.
271
+ 4. `/forge:health` now reports through the bundled
272
+ `verify-integrity.cjs` and `check-structure.cjs` — expect cleaner
273
+ output than prior releases, and real signal if your `.forge/` tree
274
+ diverges from the manifest's expectations.
275
+
276
+ ## [0.14.0] — 2026-05-22
277
+
278
+ ### Added
279
+
280
+ - **`forgeCli.skillCuration.enabled` config flag — gated rollout for SKILL-CURATION pipeline (FORGE-S24-T12).** Adds `forgeCli.skillCuration.enabled` (boolean, **default `false`**) to `forge-cli-schema.json` under a new top-level `forgeCli` object (`additionalProperties: false` preserved). New module `src/extensions/forgecli/skill-curation-flag.ts` exporting `isSkillCurationEnabled(cwd?)` resolves the flag in priority order: env override `FORGE_CLI_SKILL_CURATION_ENABLED` (accepts `1`/`true`/`0`/`false` case-insensitive; unrecognised values fall through) → project config (`<cwd>/.pi/forge-cli/config.json`) → global config (`~/.pi/forge-cli/config.json`) → `false`. The four SKILL-CURATION modules from T08–T11 now check the flag at the top of their public emission/dispatch entry points and no-op when off — `emitSkillUsageEvents` (T08), `emitSkillUsageTrackingEvents` (T09), `emitFrictionEvents` (T11) return `{emitted: 0, failed: 0, stderrs: []}` and make **zero** `spawnSync` calls; `runSkillCurator` (T10) returns `{exitCode: 0, written: 0}` and dispatches **no** subagent, writes **no** queue file. The gate runs BEFORE TypeBox `Value.Parse`, so a flag-off run with malformed runtime input is also a silent no-op (matches the "default OFF ⇒ byte-identical to pre-FORGE-S24 behaviour" acceptance criterion). The orchestrator-side friction channel (non-skill subkinds emitted via `forge/tools/friction-emit.cjs`) is **not** gated by this flag — only the auto-emit module landed in T11 (the five skill subkinds: `skill_unused`, `skill_failed`, `skill_missing`, `skill_stale`, `skill_redundant`). Pure classifier helpers (`computeFrictionSignals`, `classifySkillUsage`, `buildSkillIndex`, `retrieveTopK`, `clampRetrievalScore`, `composeCuratorTask`, `parseProposalsFromOutput`) are **not** gated — they have no side effects and remain callable for downstream consumers that want to compute signals without emitting. Test-first per Iron Law 2: `skill-curation-flag.test.ts` (14 cases — `parseEnvFlag` accepts on/off variants and rejects unrecognised, `isSkillCurationEnabled` defaults to false with all layers empty (AC2), env override wins over both disk layers in both directions, project config wins over global, global used when project absent, malformed env falls through to disk; flag-off no-op guarantee for all four modules — zero `spawnSync` for emit modules, no `runForgeSubagent` dispatch for curator, no queue directory created (AC3); flag-on smoke for `emitSkillUsageEvents` — exactly one argv-array spawn per hit with `["emit", sprintId, json]` shape (IL6)). Pre-existing skill-pipeline tests (`skill-retriever.test.ts`, `skill-usage-tracker.test.ts`, `friction-emit.test.ts`, `skill-curator-subagent.test.ts`) now set `FORGE_CLI_SKILL_CURATION_ENABLED=1` in their `beforeEach` to exercise the flag-on path; the default-off contract is covered by the dedicated gate suite. Full forge-cli test surface unchanged in count: 1733 passed / 7 skipped (3 pre-existing failures in `test/bin/doctor.test.ts` are environmental and unrelated to T12). `npm run typecheck` green. **Operator action required** to enable: upgrade to ≥ 0.14.0 AND set `forgeCli.skillCuration.enabled: true` in `<cwd>/.pi/forge-cli/config.json` (or `FORGE_CLI_SKILL_CURATION_ENABLED=1` for one-shot use). Until both conditions hold, the pipeline is silent — `skill_usage` events are not emitted, friction events for the five skill subkinds are not emitted, and the per-task curator subagent is not dispatched. Pairs with plugin v0.46.0 (convergent sprint marker; no plugin source change in that bump). Closes FORGE-S24-T12 and the SKILL-CURATION sprint.
281
+
282
+ ### Changed
283
+
284
+ - **`config-layer.ts`** — `GlobalConfig` and `ProjectConfig` interfaces gain an optional `forgeCli?: ForgeCliFeatureFlags` field carrying the `skillCuration` sub-object. Schema-level addition (`additionalProperties: false` was already in force on the root); existing configs continue to validate unchanged.
285
+
286
+ ---
287
+
288
+ ## [0.13.4] — 2026-05-22
289
+
290
+ ### Added
291
+
292
+ - **`friction-emit.ts` — auto-emit friction events with 5 skill subkinds (FORGE-S24-T11).** New module under `src/extensions/forgecli/` that, at task close, classifies the orchestrator's per-task signals (retrieved skills with T08 retrieval verdicts + T09 usage verdicts, task success outcome, observed tool-error count, per-skill historical "consecutive unused sprints" counter, optional pairwise retrieval-overlap measurements) and emits one `friction` event per matching gate via `node <storeCli> emit <sprintId> <json>` (argv-array, Iron Law 6). Public surface: `computeFrictionSignals(inputs)` → pure `FrictionSignal[]` (no IO, no subprocess); `emitFrictionEvents(signals, runtime)` → `FrictionEmitResult` (`emitted`, `failed`, `stderrs`). Five gating rules per FORGE-S24-T11 acceptance criteria: `skill_unused` (retrieved && !used && task.success), `skill_failed` (retrieved && used && !task.success), `skill_missing` (!retrieved && task.success && tool_errors ≥ 2 — one signal per task, no skillId attribution), `skill_stale` (retrieved && !used across ≥ 3 consecutive sprints, per-skill history supplied by caller), `skill_redundant` (pairwise retrieval overlap strictly > 0.8, attributed to skillA, paired-with skillB recorded in evidence). Each emitted event carries the schema's required `{type: "friction", workflow, persona, issue}` trio plus `subkind`, `skillId` (when applicable), and an `evidence` blob (retrievalScore, toolErrorCount, consecutiveUnusedSprints, or `{pairedWith, overlap}` as appropriate per subkind). Telemetry-actor split (IL10) honoured — runtime attribution (`model`, `provider`, `startTimestamp`, `endTimestamp`, `durationMinutes`) is caller-supplied, never fabricated inside the module; subagents never invoke this emitter directly. Non-zero `store-cli emit` exits increment `failed` and capture stderr without throwing (IL7). Subkind enum matches the plugin event schema (forge v0.45.0+) — no plugin schema change required for this task. Wiring into `run-task.ts` / `fix-bug.ts` is gated on FORGE-S24-T12 feature flag.
293
+
294
+ ---
295
+
296
+ ## [0.13.3] — 2026-05-22
297
+
298
+ ### Added
299
+
300
+ - **`skill-curator-subagent.ts` — per-task curator dispatch (FORGE-S24-T10).** New module under `src/extensions/forgecli/` that, at task close, hands the task trajectory summary, the retrieved-skill bodies (from T08), and the task outcome verdict to a curator subagent, then writes the curator's enhancement proposals to the project-local enhancement-proposals queue at `.forge/enhancement-proposals/queue/<sprintId>/<taskId>-<ts>.json` (T07 layout — the sprint-close queue-drain consumes this path). Public surface: `runSkillCurator(input)` → typed `CuratorResult` (`exitCode`, `written`, `queueFile?`, `errorMessage?`); `parseProposalsFromOutput(text)` → `Proposal[]` (preferred: fenced ```json``` block, fallback: bare JSON array, items that fail TypeBox validation are dropped); `composeCuratorTask(input)` → first-user-message string carrying sprint/task header, trajectory summary, retrieved-skill bodies, task outcome, and the proposal schema. Dispatch goes through `runForgeSubagent({persona: defaultCuratorPersona(), task, cwd, exportTag})` — fresh in-process pi session, isolated context (Iron Law 10). The curator persona is **inline** (no new file under `forge/forge/meta/personas/` — Iron Law 1 forge-cli boundary respected, no plugin version bump, no security-scan trigger). Proposals are deduped by `{op, target_path, sha256(diff_body)}` (mirrors T07's `dedupeKey`) before write; the empty-array case writes NO file (zero-noise invariant); if the canonical path already exists, the curator retries with a `-N` suffix on the ts (append-only invariant — T07's queue-drain is read-only and never deletes). The subagent NEVER calls `store-cli emit`, writes to `forge/forge/meta/skills/`, or invokes write-mutating tools — these are forbidden in the persona system prompt and enforced by Slice 2 contract (orchestrator emits the canonical phase event AFTER `runSkillCurator` returns, using its own runtime telemetry). Failures (subagent `exitCode !== 0`, parse errors) surface as a typed result with `written: 0` and a non-empty `errorMessage` — no throw, no silent continuation (IL7). Wiring into `run-task.ts` / `fix-bug.ts` is gated on FORGE-S24-T12 feature flag.
301
+
302
+ ---
303
+
304
+ ## [0.13.2] — 2026-05-22
305
+
306
+ ### Added
307
+
308
+ - **`skill-usage-tracker.ts` — post-task usage classification + emission (FORGE-S24-T09).** New module under `src/extensions/forgecli/` that, after a task closes, diffs the observed tool-call trajectory against each retrieved skill's declared workflow steps and emits a follow-up `skill_usage` event per skill with `used: true | false` and a populated `tool_call_success_rate`. Public surface: `classifySkillUsage(skill, trajectory)` → pure `UsageVerdict` (`used`, `signal: "overlap" | "reasoning" | "none"`, `tool_call_success_rate ∈ [0,1]`); `emitSkillUsageTrackingEvents(retrieved, trajectory, runtime)` writes one event per retrieved skill via `node <storeCli> emit <sprintId> <json>` (argv-array, Iron Law 6). Heuristic per FORGE-S24-T09 acceptance criteria: skill name appears in agent reasoning → `used: true` (signal `reasoning`); ≥2 distinct workflow steps overlap with executed tool calls → `used: true` (signal `overlap`); otherwise → `used: false`. `tool_call_success_rate` is the fraction of declared steps observed in the trajectory (distinct overlaps / total steps), clamped to `[0,1]`. Step matching is case-insensitive substring against tool call names to tolerate qualified MCP-style names (e.g. `mcp__store__store-cli-query` matches workflow step `"store-cli query"`). Emitted events conform to the `skill_usage` schema variant landed in forge plugin v0.45.0 (FORGE-S24-T01) with `retrieval_score: 0` — the populated retrieval score was already emitted at retrieval time by T08; this is a tracking-time follow-up. Runs in **orchestrator context** (telemetry-actor split honoured — subagent never invokes the tracker; runtime attribution `model/provider/timestamps/durationMinutes` is caller-supplied, never fabricated). Module owns classification + emission only — assembling the retrieved-skill list, trajectory, and runtime attribution is the orchestrator handler's responsibility (wiring into `run-task.ts`/`fix-bug.ts` is gated on FORGE-S24-T12 feature flag).
309
+
310
+ ---
311
+
312
+ ## [0.13.1] — 2026-05-22
313
+
314
+ ### Added
315
+
316
+ - **`skill-retriever.ts` — BM25 skill retrieval (FORGE-S24-T08).** New module under `src/extensions/forgecli/` that ranks the project skill corpus by relevance to a task description using `lunr.js` Okapi-BM25 scoring. Public surface: `buildSkillIndex(corpus)` → opaque `SkillIndex` handle; `retrieveTopK(index, query, k)` → deterministic `RetrievalHit[]`; `emitSkillUsageEvents(hits, runtime)` writes one `skill_usage` event per hit via `node <storeCli> emit <sprintId> <json>` (argv-array, Iron Law 6). Indexed fields: skill `name` (boost 4), `description` (boost 2), and selected frontmatter (`name`, `tags`, `aliases`, boost 1). Raw BM25 scores are squashed via `s / (1 + s)` before being written to `retrieval_score` (schema constraint `[0,1]`). Emitted events conform to the `skill_usage` variant landed in forge plugin v0.45.0 (FORGE-S24-T01): required `eventId, sprintId, taskId, skillId, retrieved=true, used=false, tool_call_success_rate=0, retrieval_score`, plus the canonical attribution fields supplied by the orchestrator (`role, action, startTimestamp, endTimestamp, durationMinutes, model, provider`). Module owns ranking + emission only — corpus construction (parsing `SKILL.md` frontmatter) remains the caller's responsibility and is delegated to `loaders/persona-skill-loader.ts`. Behaviour is gated downstream by `forgeCli.skillCuration.enabled` (FORGE-S24-T12).
317
+
318
+ ### Dependencies
319
+
320
+ - **`lunr@2.3.9`** added as a runtime dependency, pinned exact (no `^`/`~`) per Iron Law 3 dependency discipline. Pure-JS, MIT-licensed, zero runtime dependencies — SBOM impact is a single direct entry. `@types/lunr@2.3.7` added as dev dependency.
321
+
322
+ ---
323
+
324
+ ## [0.13.0] — 2026-05-21
325
+
326
+ ### Added
327
+
328
+ - **`forge_verify_apply` MCP tool** detects hallucinated Edit calls. The agent is instructed to call it AFTER applying Phase 2 enhancement edits and BEFORE invoking `manage-versions add-snapshot`. The tool runs `generation-manifest.cjs check` on each claimed file path and returns structured buckets: `modified` (verified ✓), `unchanged` (Edit silently no-op'd — usually `old_string` mismatch), `untracked` (no manifest entry), `missing` (file gone). If `unchanged.length > 0`, the agent MUST re-apply via Edit/Write and re-verify before snapshotting. Closes [forge-cli#31](https://github.com/Entelligentsia/forge-cli/issues/31).
329
+
330
+ Background: hello testbench session 17:48 UTC showed the agent's UI claimed 5 file modifications; the snap-4 archive captured by add-snapshot afterwards contained pristine content for 4 of 5 files. The Edit tool had failed silently and the agent reported success regardless. The verification logic is now in forge-cli code (deterministic, testable) rather than relying on agent self-inspection.
331
+
332
+ ### Changed
333
+
334
+ - **`enhance.ts` Phase 2 kickoff** restructured: previous Step 5 (snapshot) split into Step 5 (VERIFY via `forge_verify_apply`) and Step 6 (snapshot after verify). Snapshot is now explicitly gated on verification completing with no `unchanged` files.
335
+
336
+ ---
337
+
338
+ ## [0.12.1] — 2026-05-21
339
+
340
+ ### Fixed
341
+
342
+ - **`enhance.ts` — explicit `add-snapshot` instruction in Phase 2 kickoff.** Previously the kickoff said nothing about snapshots; agents had to discover the requirement buried in `meta-enhance.md` step 8. In practice many agents applied edits but skipped the snapshot call, breaking the entire durability story — replay (v0.12.0) had nothing to restore from. Kickoff now explicitly instructs: after applying any approved edits, MUST call `node "$FORGE_ROOT/tools/manage-versions.cjs" add-snapshot --source post-sprint:<SPRINT_ID> --enhanced-elements <paths>`. Discovered via hello testbench transcript: `currentSnapshot` stayed at 3 after a Phase 2 apply session, leading to silent data loss on the next regenerate. Closes part 1 of [forge-cli#30](https://github.com/Entelligentsia/forge-cli/issues/30).
343
+ - **`regenerate.ts` — modification guard now fires on untracked files.** Previously only fired on `generation-manifest check` exit 1 (modified hash mismatch); exit 2 (untracked — no manifest entry) was ignored. After a prior regenerate ran `clear-namespace` without re-recording, files end up in untracked state — and the next regenerate silently overwrote them. Guard now surfaces both "modified" and "untracked" states with state-aware prompt text. `ModifiedFile` interface extended with a `state: "modified" | "untracked"` field. Closes part 2 of [forge-cli#30](https://github.com/Entelligentsia/forge-cli/issues/30).
344
+
345
+ ---
346
+
347
+ ## [0.12.0] — 2026-05-21
348
+
349
+ ### Added
350
+
351
+ - **`regenerate.ts` — snapshot replay (Approach A layer 3).** Mirrors the new plugin behaviour in forge v0.45.0. After `substitute-placeholders.cjs` writes fresh base-pack content over `.forge/{personas,skills,workflows,templates}/`, the handler now invokes `manage-versions replay --target <category>` for each of the four structural-element categories. Restores user-enhanced files captured by `/forge:enhance` Phase 2 snapshots from `.forge/archive/snap-N/`. Pure additive — no-op when no snapshots match. Skipped when `--force` is used (force == "I want pristine base-pack content, no overlay"). Closes [forge-cli#27](https://github.com/Entelligentsia/forge-cli/issues/27).
352
+
353
+ ### Changed
354
+
355
+ - **Modification guard text softened** to reflect the new replay behaviour. The pre-write prompt now states that snapshot-captured edits will be restored automatically post-regenerate, and only manual edits NOT captured in any snapshot are at risk. Guard remains as defence-in-depth.
356
+
357
+ - Bundled forge-plugin advanced to **0.45.0** (replay subcommand + regenerate replay step).
358
+
359
+ ---
360
+
361
+ ## [0.11.6] — 2026-05-21
362
+
363
+ ### Fixed
364
+
365
+ - **`enhance.ts` — Phase 2 kickoff no longer over-restricts friction discovery to `forge_store_query`.** The kickoff previously instructed agents to discover friction events "ONLY via the `forge_store_query` tool — do NOT raw-read `.forge/store/events/`". But the underlying NLP engine matches by keyword-on-title heuristics, not by `type === 'friction'` exactly — a testbench with 10 friction events on disk returned only 6 via NLP and zero in one agent's path, producing `frictionCount: 0` Phase 2 outputs despite events being present. Kickoff now: (a) keeps `forge_store_query` as **preferred** path, (b) explicitly instructs the agent to **fall back to the workflow body's filesystem walk** (`meta-enhance.md` Step 1's `e.type === 'friction'` filter) when MCP returns suspiciously low / zero, (c) zero-friction guard fires only when **both paths** are empty. Closes [forge-cli#29](https://github.com/Entelligentsia/forge-cli/issues/29).
366
+ - Bundled forge-plugin advanced to **0.44.10**, which includes the fix for `manage-versions add-snapshot` silently failing to archive files ([forge#108](https://github.com/Entelligentsia/forge/issues/108)) — layer 2 of the composition contract is now functional. Unblocks future Approach A work (forge#107 / forge-cli#27).
367
+
368
+ ---
369
+
370
+ ## [0.11.5] — 2026-05-21
371
+
372
+ ### Fixed
373
+
374
+ - **`index.ts` — `process.env.FORGE_ROOT` now exported on main-thread activation.** When forge-cli activates inside a Forge project, `process.env.FORGE_ROOT` is set to the absolute path resolved from `.forge/config.json`'s `paths.forgeRoot`, alongside the existing `before_agent_start` orientation injection. Subagent dispatch via `runForgeSubagent` already set this (forge-subagent.ts:200), but kickoff handlers (`/forge:enhance`, `/forge:health`, `/forge:calibrate`, etc.) bypass the subagent path — so `$FORGE_ROOT/...` in their workflow bodies' bash command literals previously substituted to an empty string, producing the symptom "Snapshot: not written (Forge manage-versions not available in this context)" during `/forge:enhance` Phase 2. Closes [forge-cli#28](https://github.com/Entelligentsia/forge-cli/issues/28). Phase 1 of the snapshot-replay durability story tracked in forge#107 / forge-cli#27.
375
+
376
+ ---
377
+
378
+ ## [0.11.4] — 2026-05-21
379
+
380
+ ### Fixed
381
+
382
+ - **`regenerate.ts` — pre-write modification guard for `/forge:regenerate`.** Companion to [forge#106](https://github.com/Entelligentsia/forge/issues/106) (FORGE-BUG-037) and the forge plugin v0.44.9 markdown fix. Before invoking `substitute-placeholders.cjs`, the handler now enumerates files in `.forge/{personas,skills,workflows,templates}/` and runs `generation-manifest.cjs check` on each. Any file whose hash no longer matches the recorded manifest — typically applied by `/forge:enhance` Phase 2 — triggers a `ctx.ui.confirm` prompt listing the modifications. On decline, regenerate is cancelled and the edits are preserved. New `--force` flag bypasses the prompt for CI / dogfood reset.
383
+
384
+ The plugin-level markdown fix (forge v0.44.9) covered the Claude Code plugin flow which executes the command markdown body. forge-cli has a self-contained TypeScript handler that bypasses the markdown body entirely; this commit closes that vector. See [forge-cli#26](https://github.com/Entelligentsia/forge-cli/issues/26).
385
+
386
+ - Bundled forge-plugin advanced to **0.44.9** (was 0.44.6 / 0.44.8 in 0.11.3 builds depending on rebuild timing).
387
+
388
+ ---
389
+
10
390
  ## [0.11.3] — 2026-05-21
11
391
 
12
392
  ### Fixed
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  [![npm](https://img.shields.io/npm/v/@entelligentsia/forgecli?style=flat-square&color=000&label=npm)](https://www.npmjs.com/package/@entelligentsia/forgecli)
9
9
  [![node](https://img.shields.io/badge/node-%E2%89%A520-000?style=flat-square)](#)
10
10
  [![license](https://img.shields.io/badge/license-MIT-000?style=flat-square)](#)
11
- [![forge plugin](https://img.shields.io/badge/forge--plugin-v0.44.5-000?style=flat-square&labelColor=fafafa)](https://github.com/Entelligentsia/forge)
11
+ [![forge plugin](https://img.shields.io/badge/forge--plugin-v0.46.1-000?style=flat-square&labelColor=fafafa)](https://github.com/Entelligentsia/forge)
12
12
  [![pi runtime](https://img.shields.io/badge/runtime-pi--coding--agent-000?style=flat-square)](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)
13
13
 
14
14
  </div>
@@ -22,6 +22,7 @@ forge-cli generates a project-specific engineering knowledge base, sprint workfl
22
22
 
23
23
  - **Structured SDLC, in any terminal.** Plan → implement → review → validate → commit chains, gated by your own personas and audience rules.
24
24
  - **Project memory that compounds.** Every sprint sharpens the knowledge base; the next one starts smarter.
25
+ - **Skills that stay relevant.** Forge ships a SkillOS-style curation loop (FORGE-S24). Five friction subkinds — `skill_unused`, `skill_failed`, `skill_missing`, `skill_stale`, `skill_redundant` — surface what the model actually reached for, what worked, and what didn't. Phase 2 enhancement classifies proposals as `insert_skill` / `update_skill` / `delete_skill`, scores them through an LLM-judge rubric, gates oversize edits behind a compression check, and drains a per-task curator queue into one batched review at sprint close. The result: your skill library tracks your codebase as it evolves, instead of calcifying.
25
26
  - **Bring your own model.** Anthropic, OpenAI, ollama, openrouter — anything pi resolves.
26
27
 
27
28
  ## Install
@@ -5,6 +5,189 @@ Format: newest first. Breaking changes are marked **△ Breaking**.
5
5
 
6
6
  ---
7
7
 
8
+ ## [0.46.1] — 2026-05-22
9
+
10
+ **Build fix: ship the FORGE-S24 SKILL-CURATION Phase 2 pipeline that 0.46.0 was supposed to.**
11
+
12
+ The 0.45.1–0.45.7 migration entries declared `workflows:enhance` in their `regenerate` lists, but `node tools/build-base-pack.cjs` was not re-run during the sprint. As a result the installable `init/base-pack/workflows/enhance.md` stayed at the pre-S24 algorithm, and projects migrating to 0.46.0 received a stale workflow that lacked queue-drain (step 1a), recurrence scoring, delete-candidate detection (step 5b), compression gate (step 5b.5), and the LLM-judge step (step 5c).
13
+
14
+ This patch regenerates the base-pack copy from `meta/workflows/meta-enhance.md` (280 → 600 lines, 20 S24 markers landed) and forces a re-copy on any project sitting at 0.46.0 by declaring `workflows:enhance` in this entry's regenerate list. No plugin source change beyond the regenerated workflow file. Additive, non-breaking.
15
+
16
+ Discovered during cartographer testbench smoke-test of `/forge:enhance` — Phase 2 ran the legacy algorithm (no op classification, no queue path, no judge rejections sidecar) because the workflow the migration copied into the project lacked the new steps.
17
+
18
+ **Regenerate:** `workflows:enhance`
19
+
20
+ > Manual: Run `/forge:update` to refresh `.forge/workflows/enhance.md` with the SKILL-CURATION Phase 2 pipeline.
21
+
22
+ ---
23
+
24
+ ## [0.46.0] — 2026-05-22
25
+
26
+ **FORGE-S24 SKILL-CURATION sprint completion — gated rollout marker (FORGE-S24-T12).**
27
+
28
+ No plugin source change in this bump. The seven preceding migration entries (0.45.1 → 0.45.7) carry the actual SKILL-CURATION machinery:
29
+
30
+ | Bump | Task | Adds |
31
+ |------|------|------|
32
+ | 0.45.0 → 0.45.1 | T01 | `skill_usage` event variant in `forge/schemas/event.schema.json` |
33
+ | 0.45.1 → 0.45.2 | T02 | Proposal op classification (`insert_skill`/`update_skill`/`delete_skill`) — `forge/schemas/proposal.schema.json` + `forge/tools/proposal-normalize.cjs` |
34
+ | 0.45.2 → 0.45.3 | T04 | Cross-task recurrence scoring — `forge/tools/replay-scoring.cjs` |
35
+ | 0.45.3 → 0.45.4 | T05 | Delete-candidate detection (3-sprint zero-use) — `forge/tools/delete-candidate-detector.cjs` |
36
+ | 0.45.4 → 0.45.5 | T03 | LLM-judge rubric (Sonnet, drop <3/5) — `forge/tools/judge-proposal.cjs` |
37
+ | 0.45.5 → 0.45.6 | T06 | Compression gate (reject >20% growth without 3+ frictions) — `forge/tools/compression-gate.cjs` |
38
+ | 0.45.6 → 0.45.7 | T07 | Queue drain at sprint close — `forge/tools/queue-drain.cjs` |
39
+
40
+ T12 lands the **gated-rollout contract on the forge-cli side** via the new `forgeCli.skillCuration.enabled` config flag (default OFF). The four forge-cli modules (T08 skill-retriever, T09 skill-usage-tracker, T10 skill-curator-subagent, T11 friction-emit) no-op at entry when the flag is off, so a flag-off run is byte-identical to pre-FORGE-S24 behaviour. This plugin-side minor bump (0.45.7 → 0.46.0) is the convergent terminal marker for the sprint: it signals to operators running `/forge:update` that the full SKILL-CURATION pipeline has shipped end-to-end, and pairs with the forge-cli 0.13.4 → 0.14.0 bump that lands the rollout flag.
41
+
42
+ **No regeneration required** (no manifest entry change, no workflow change, no schema change in this bump alone — those landed in 0.45.1–0.45.7).
43
+
44
+ **Operator action required to enable:** upgrade forge-cli to ≥ 0.14.0 **and** set `forgeCli.skillCuration.enabled: true` in `<cwd>/.pi/forge-cli/config.json` (or the env override `FORGE_CLI_SKILL_CURATION_ENABLED=1` for one-shot use). Until both conditions hold, the new event variants and friction subkinds remain emitter-silent — the plugin schema continues to accept them on receipt, so a delayed forge-cli upgrade is non-blocking.
45
+
46
+ Additive, non-breaking.
47
+
48
+ ---
49
+
50
+ ## [0.45.3] — 2026-05-22
51
+
52
+ Feature: **Cross-task replay scoring — recurrence boost** (FORGE-S24-T04 — SKILL-CURATION).
53
+
54
+ For each Phase 2 enrichment proposal synthesised from a friction event at
55
+ task `t`, the new `forge/tools/replay-scoring.cjs` helper scans friction
56
+ events in tasks `t+1..N` of the same sprint for matching
57
+ `(subkind, evidence.skillId)` pairs and stamps `recurrence_count` (>= 1,
58
+ includes the origin task) plus `recurrence_task_ids` (taskOrder-sorted)
59
+ onto the proposal. The downstream T03 judge can now boost specificity
60
+ when a friction signal recurred across multiple tasks instead of treating
61
+ every observation as a singleton.
62
+
63
+ `forge/meta/workflows/meta-enhance.md` Phase 2 gains step 5a invoking
64
+ `annotateProposals(proposals, frictionEvents, taskOrder)` between the
65
+ synthesis step (5) and the artifact write (6); step 5 now requires
66
+ `sourceFrictionIds` to carry every contributing `eventId` so the
67
+ recurrence scan can resolve provenance. `forge/schemas/proposal.schema.json`
68
+ gains two optional fields — `recurrence_count` (integer, minimum 1) and
69
+ `recurrence_task_ids` (array of strings) — both additive;
70
+ `additionalProperties: false` continues to reject unknown keys.
71
+
72
+ Forward-only scan: earlier tasks (before `fromTaskId` in `taskOrder`) are
73
+ excluded. Proposals without resolvable provenance receive a neutral
74
+ `recurrence_count: 1` and empty `recurrence_task_ids: []` — neutral
75
+ signal, not silent failure.
76
+
77
+ Test-first per Iron Law 2: `replay-scoring.test.cjs` (11 cases including
78
+ the AC3 three-task fixture, forward-only-direction guard,
79
+ subkind/skillId mismatch rejection, and the no-mutation invariant)
80
+ landed before the helper. Full suite 1364/1364 (was 1353; +11).
81
+
82
+ Additive, non-breaking. Users running an older version receive the
83
+ recurrence-augmented proposal schema on `/forge:update` and re-run
84
+ `/forge:enhance --phase 2` to take advantage of the new fields.
85
+
86
+ ---
87
+
88
+ ## [0.45.2] — 2026-05-22
89
+
90
+ Feature: **Phase 2 proposal op classification** (FORGE-S24-T02 — SKILL-CURATION).
91
+
92
+ Replaces the insert-biased Phase 2 enrichment-proposal vocabulary with an
93
+ explicit three-op classification. New `forge/schemas/proposal.schema.json`
94
+ enumerates `op` ∈ `{insert_skill, update_skill, delete_skill}` and requires
95
+ `target_path` + `diff_body` per record; `additionalProperties: false` rejects
96
+ unknown fields.
97
+
98
+ `meta/workflows/meta-enhance.md` Phase 2 (steps 5–6) now:
99
+
100
+ - Routes every friction event through the three-op classifier when synthesising proposals.
101
+ - Emits a machine-readable `phase2-<timestamp>.json` artifact alongside the existing markdown — each entry conforms to `proposal.schema.json`.
102
+ - References `proposal-normalize.cjs:normaliseProposal()` as the **explicit** read-side back-compat path for legacy (pre-0.45.2) proposals lacking `op`; missing `op` defaults to `insert_skill` — never silently coerced.
103
+
104
+ This is the foundation for the remaining S24 work: T03 (judge), T05
105
+ (delete-candidate detection), T06 (compression gate), T07 (queue drain).
106
+
107
+ Test-first per Iron Law 2: `proposal-schema.test.cjs` (6 cases — missing op,
108
+ unknown op, missing `target_path`, `additionalProperties:false`, and the legacy
109
+ normalisation contract) landed before the schema. Full suite 1353/1353.
110
+
111
+ Additive, non-breaking: existing proposals continue to validate via the
112
+ normaliser, and no existing schema or tool changes.
113
+
114
+ ---
115
+
116
+ ## [0.45.1] — 2026-05-22
117
+
118
+ Feature: **`skill_usage` event variant** (FORGE-S24-T01, plan 08 Phase B — SKILL-CURATION).
119
+
120
+ `event.schema.json` gains a new event type `skill_usage` with an `allOf`
121
+ branch requiring `{eventId, sprintId, taskId, skillId, retrieved, used,
122
+ tool_call_success_rate, retrieval_score}`. The numeric properties
123
+ `tool_call_success_rate` and `retrieval_score` carry declarative `[0, 1]`
124
+ bounds; `skillId` is `minLength: 1`. The root `additionalProperties: false`
125
+ gate continues to reject unknown fields on every variant.
126
+
127
+ This is the data foundation for Sprint S24 SKILL-CURATION:
128
+
129
+ - **T02** emits `skill_usage` records when a skill is retrieved into context or invoked.
130
+ - **T04** correlates the `retrieval_score` against tool-call outcomes.
131
+ - **T05** detects delete-candidate skills using rolling-window aggregates of `used` × `tool_call_success_rate`.
132
+ - **T08** replays historic events for retrospective scoring.
133
+
134
+ No `validate-store.cjs` code-path change — the existing `validateRecord()`
135
+ machinery handles the new `allOf` branch identically to the `friction`,
136
+ `sprint-complete`, and `sprint-halted` variants. Additive and non-breaking:
137
+ existing event records remain valid.
138
+
139
+ **Note on target version.** TASK_PROMPT requested `v0.45.0`, but that tag
140
+ already shipped (snapshot-replay, forge#107). Bumping to `0.45.1` is the
141
+ minimum forward step.
142
+
143
+ ---
144
+
145
+ ## [0.45.0] — 2026-05-21
146
+
147
+ Feature: **Approach A — snapshot replay** ([forge#107](https://github.com/Entelligentsia/forge/issues/107)). `manage-versions` gains a new `replay` subcommand that fulfills **layer 3** of the composition contract declared at `manage-versions.cjs:13` (`Working Artifact = base@pluginVersion + snapshot@currentSnapshot + user_enhancements`).
148
+
149
+ After `/forge:regenerate` writes fresh base-pack content over `.forge/{personas,skills,workflows,templates}/`, the replay step walks all snapshots in `.forge/structure-versions.json`, finds enhanced elements matching the target prefix, and restores them from the archive over the freshly-generated content. Later snapshots win on file collision; files not captured by any snapshot remain at the fresh base-pack version.
150
+
151
+ This closes the loop opened by the v0.44.9 modification guard (forge#106) and the v0.44.10 archive-path fix (forge#108): user enhancements applied by `/forge:enhance` Phase 2 now survive `/forge:regenerate` automatically. The pre-write modification guard remains as defence-in-depth for manual edits not captured in any snapshot.
152
+
153
+ **v1 semantics (overlay).** A user-enhanced file retains its captured content even when the base-pack version of that file has changed in a plugin update. Trade-off accepted for v1; future v2 may layer 3-way merge for richer plugin-update propagation.
154
+
155
+ New CLI:
156
+
157
+ ```sh
158
+ node "$FORGE_ROOT/tools/manage-versions.cjs" replay --target personas # restore all personas/* enhancements
159
+ node "$FORGE_ROOT/tools/manage-versions.cjs" replay --target personas/engineer.md # restore one file
160
+ node "$FORGE_ROOT/tools/manage-versions.cjs" replay --target skills [--dry-run]
161
+ ```
162
+
163
+ `regenerate.md` updated: each of personas, skills, workflows, templates fans out generation → calls `replay` → re-records manifest hashes so subsequent `check` operations reflect the restored content.
164
+
165
+ **Regenerate:** commands:regenerate, tools:manage-versions
166
+
167
+ > Closes [forge#107](https://github.com/Entelligentsia/forge/issues/107). Companion forge-cli mirror tracked in [forge-cli#27](https://github.com/Entelligentsia/forge-cli/issues/27).
168
+
169
+ ---
170
+
171
+ ## [0.44.10] — 2026-05-21
172
+
173
+ Fix `manage-versions add-snapshot` silently failing to archive files. The tool previously did `path.join(projectRoot, ".forge", relPath)` to locate source files. Workflow callers (`meta-enhance.md`, `base-pack/workflows/enhance.md`) have always passed `--enhanced-elements` with the full `.forge/` prefix (e.g. `.forge/personas/architect.md`), producing a double-prefixed source path `projectRoot/.forge/.forge/...` that never exists — `fs.existsSync` then silently skipped every file. Every archive directory created since basePackVersion 0.43.3 has been empty. Layer 2 of the composition contract declared at `manage-versions.cjs:13` (`Working Artifact = base + snapshot + user_enhancements`) was a no-op. Tool now strips a leading `.forge/` from each element path; both `.forge/-relative` and project-root-relative forms accepted. New test `forge#108 — tolerates leading ".forge/" prefix in --enhanced-elements`. Unblocks [forge#107](https://github.com/Entelligentsia/forge/issues/107) (Approach A — snapshot replay).
174
+
175
+ **Regenerate:** tools:manage-versions
176
+
177
+ > Closes [forge#108](https://github.com/Entelligentsia/forge/issues/108).
178
+
179
+ ---
180
+
181
+ ## [0.44.9] — 2026-05-21
182
+
183
+ Fix `/forge:regenerate personas` and `/forge:regenerate skills` silently overwriting manual modifications (typically applied by `/forge:enhance` Phase 2). Pre-write `generation-manifest check` + `△ ...has been manually modified. Overwriting will discard your changes. Proceed? (yes / no / show diff)` prompt added to both single-file and full-rebuild paths in `commands/regenerate.md`, mirroring the workflows and templates pattern. Closes the asymmetric modification-detection across the four structural-element categories. Markdown-only fix — no `.cjs` changes.
184
+
185
+ **Regenerate:** commands:regenerate
186
+
187
+ > Closes [forge#106](https://github.com/Entelligentsia/forge/issues/106) (FORGE-BUG-037).
188
+
189
+ ---
190
+
8
191
  ## [0.44.8] — 2026-05-21
9
192
 
10
193
  **#104 fix — /forge:enhance UX gaps.** Two workflow enhancements: