@entelligentsia/forgecli 0.7.9 → 0.7.10

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 (506) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/CHANGELOG-forge-plugin.md +26 -0
  3. package/dist/bin/argv.d.ts +2 -2
  4. package/dist/bin/argv.js +12 -3
  5. package/dist/bin/argv.js.map +1 -1
  6. package/dist/bin/doctor.d.ts +59 -0
  7. package/dist/bin/doctor.js +149 -0
  8. package/dist/bin/doctor.js.map +1 -0
  9. package/dist/bin/forge.js +13 -0
  10. package/dist/bin/forge.js.map +1 -1
  11. package/dist/extensions/forgecli/fix-bug.js +35 -110
  12. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  13. package/dist/extensions/forgecli/index.js +28 -0
  14. package/dist/extensions/forgecli/index.js.map +1 -1
  15. package/dist/extensions/forgecli/review-command.d.ts +2 -0
  16. package/dist/extensions/forgecli/review-command.js +184 -0
  17. package/dist/extensions/forgecli/review-command.js.map +1 -0
  18. package/dist/extensions/forgecli/run-sprint.js +10 -0
  19. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  20. package/dist/extensions/forgecli/run-task.d.ts +1 -7
  21. package/dist/extensions/forgecli/run-task.js +30 -142
  22. package/dist/extensions/forgecli/run-task.js.map +1 -1
  23. package/dist/extensions/forgecli/session-registry.d.ts +68 -0
  24. package/dist/extensions/forgecli/session-registry.js +61 -0
  25. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  26. package/dist/extensions/forgecli/thread-switcher.js +128 -9
  27. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  28. package/dist/extensions/forgecli/viewport-events.d.ts +74 -0
  29. package/dist/extensions/forgecli/viewport-events.js +184 -0
  30. package/dist/extensions/forgecli/viewport-events.js.map +1 -0
  31. package/dist/extensions/forgecli/viewport-renderer.d.ts +55 -0
  32. package/dist/extensions/forgecli/viewport-renderer.js +204 -0
  33. package/dist/extensions/forgecli/viewport-renderer.js.map +1 -0
  34. package/dist/extensions/forgecli/viewport-theme.d.ts +11 -0
  35. package/dist/extensions/forgecli/viewport-theme.js +124 -0
  36. package/dist/extensions/forgecli/viewport-theme.js.map +1 -0
  37. package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +18 -2
  38. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +21 -14
  39. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  40. package/dist/forge-payload/.tools/banners.cjs +435 -0
  41. package/dist/forge-payload/.tools/build-context-pack.cjs +290 -0
  42. package/dist/forge-payload/.tools/build-init-context.cjs +322 -0
  43. package/dist/forge-payload/.tools/build-overlay.cjs +326 -0
  44. package/dist/forge-payload/.tools/build-persona-pack.cjs +226 -0
  45. package/dist/forge-payload/.tools/collate.cjs +1041 -0
  46. package/dist/forge-payload/.tools/generation-manifest.cjs +311 -0
  47. package/dist/forge-payload/.tools/lib/forge-root.cjs +59 -0
  48. package/dist/forge-payload/.tools/lib/paths.cjs +29 -0
  49. package/dist/forge-payload/.tools/lib/pricing.cjs +165 -0
  50. package/dist/forge-payload/.tools/lib/project-root.cjs +32 -0
  51. package/dist/forge-payload/.tools/lib/result.js +40 -0
  52. package/dist/forge-payload/.tools/lib/store-facade.cjs +162 -0
  53. package/dist/forge-payload/.tools/lib/store-nlp.cjs +250 -0
  54. package/dist/forge-payload/.tools/lib/store-query-exec.cjs +272 -0
  55. package/dist/forge-payload/.tools/lib/validate.js +141 -0
  56. package/dist/forge-payload/.tools/manage-config.cjs +340 -0
  57. package/dist/forge-payload/.tools/manage-versions.cjs +365 -0
  58. package/dist/forge-payload/.tools/package.json +3 -0
  59. package/dist/forge-payload/.tools/parse-gates.cjs +151 -0
  60. package/dist/forge-payload/.tools/parse-verdict.cjs +67 -0
  61. package/dist/forge-payload/.tools/preflight-gate.cjs +350 -0
  62. package/dist/forge-payload/.tools/prompts/sprint-plan-prompt.md +70 -0
  63. package/dist/forge-payload/.tools/schemas/task-list.schema.json +53 -0
  64. package/dist/forge-payload/.tools/seed-store.cjs +237 -0
  65. package/dist/forge-payload/.tools/store-cli.cjs +1226 -0
  66. package/dist/forge-payload/.tools/store-query.cjs +319 -0
  67. package/dist/forge-payload/.tools/store.cjs +315 -0
  68. package/dist/forge-payload/.tools/substitute-placeholders.cjs +625 -0
  69. package/dist/forge-payload/.tools/validate-store.cjs +593 -0
  70. package/dist/forge-payload/skills/refresh-kb-links/SKILL.md +217 -0
  71. package/dist/forge-payload/skills/store-custodian/SKILL.md +163 -0
  72. package/dist/forge-payload/skills/store-query-grammar/SKILL.md +145 -0
  73. package/dist/forge-payload/skills/store-query-nlp/SKILL.md +110 -0
  74. package/dist/forge-payload/tools/lib/suggest.cjs +211 -0
  75. package/dist/forge-payload/tools/lib/validate.js +12 -2
  76. package/dist/forge-payload/tools/store-cli.cjs +192 -18
  77. package/dist/forge-payload/tools/validate-store.cjs +22 -1
  78. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/endpoint/endpointResolver.js +2 -2
  79. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js +9 -13
  80. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/runtimeConfig.browser.js +5 -5
  81. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/runtimeConfig.js +2 -3
  82. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/BedrockRuntimeClient.js +1 -4
  83. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/endpoint/endpointResolver.js +1 -1
  84. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeConfig.browser.js +1 -1
  85. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeConfig.js +1 -2
  86. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeExtensions.js +1 -1
  87. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/BedrockRuntimeClient.d.ts +1 -2
  88. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.browser.d.ts +1 -1
  89. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.d.ts +1 -1
  90. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.native.d.ts +1 -1
  91. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/BedrockRuntimeClient.d.ts +5 -7
  92. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.browser.d.ts +1 -1
  93. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.d.ts +1 -1
  94. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.native.d.ts +1 -1
  95. package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +11 -19
  96. package/node_modules/@aws-sdk/core/dist-cjs/index.js +4 -6
  97. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +595 -0
  98. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +715 -0
  99. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +588 -0
  100. package/node_modules/@aws-sdk/core/dist-es/index.js +3 -3
  101. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.browser.js +36 -0
  102. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +26 -4
  103. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.native.js +37 -0
  104. package/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.js +3 -0
  105. package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/check-features.js +1 -1
  106. package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/user-agent-middleware.js +1 -1
  107. package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/partition.js +1 -1
  108. package/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js +1 -0
  109. package/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.browser.js +1 -0
  110. package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.js +1 -1
  111. package/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts +3 -2
  112. package/node_modules/@aws-sdk/core/dist-types/index.d.ts +12 -14
  113. package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.browser.d.ts +47 -0
  114. package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +38 -4
  115. package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.native.d.ts +48 -0
  116. package/node_modules/@aws-sdk/core/dist-types/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.d.ts +5 -0
  117. package/node_modules/@aws-sdk/core/dist-types/submodules/client/util-endpoints/lib/aws/partitions.d.ts +638 -0
  118. package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types → core/dist-types/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.d.ts +1 -1
  119. package/node_modules/@aws-sdk/core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.browser.d.ts +1 -0
  120. package/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +0 -2
  121. package/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts +65 -3
  122. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.browser.d.ts +116 -0
  123. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +123 -4
  124. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.native.d.ts +116 -0
  125. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.d.ts +4 -0
  126. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/partitions.d.ts +647 -0
  127. package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.d.ts +1 -1
  128. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.browser.d.ts +1 -0
  129. package/node_modules/@aws-sdk/core/package.json +27 -8
  130. package/node_modules/@aws-sdk/credential-provider-env/package.json +3 -3
  131. package/node_modules/@aws-sdk/credential-provider-http/package.json +5 -5
  132. package/node_modules/@aws-sdk/credential-provider-ini/package.json +11 -11
  133. package/node_modules/@aws-sdk/credential-provider-login/package.json +4 -4
  134. package/node_modules/@aws-sdk/credential-provider-node/package.json +9 -9
  135. package/node_modules/@aws-sdk/credential-provider-process/package.json +3 -3
  136. package/node_modules/@aws-sdk/credential-provider-sso/package.json +5 -5
  137. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +4 -4
  138. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +2 -2
  139. package/node_modules/@aws-sdk/middleware-eventstream/package.json +2 -2
  140. package/node_modules/@aws-sdk/middleware-websocket/package.json +5 -5
  141. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +13 -20
  142. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +13 -20
  143. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +13 -20
  144. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +13 -20
  145. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +14 -21
  146. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js +1 -4
  147. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js +1 -1
  148. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js +1 -1
  149. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js +1 -2
  150. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js +1 -1
  151. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js +1 -4
  152. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +1 -1
  153. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js +1 -1
  154. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js +1 -2
  155. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js +1 -1
  156. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js +1 -4
  157. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js +1 -1
  158. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js +1 -1
  159. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js +1 -2
  160. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js +1 -1
  161. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +1 -4
  162. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +1 -1
  163. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +1 -1
  164. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +1 -2
  165. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js +1 -1
  166. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +1 -4
  167. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +1 -2
  168. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +1 -1
  169. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js +1 -1
  170. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +1 -2
  171. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +1 -1
  172. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts +1 -2
  173. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts +1 -1
  174. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts +1 -1
  175. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts +1 -1
  176. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts +1 -2
  177. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts +1 -1
  178. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts +1 -1
  179. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts +1 -1
  180. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts +1 -2
  181. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts +1 -1
  182. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts +1 -1
  183. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts +1 -1
  184. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +1 -2
  185. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +1 -1
  186. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +1 -1
  187. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +1 -1
  188. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts +1 -2
  189. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +1 -1
  190. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +1 -1
  191. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +1 -1
  192. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts +1 -3
  193. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts +1 -1
  194. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts +1 -1
  195. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts +1 -1
  196. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts +1 -3
  197. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts +1 -1
  198. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts +1 -1
  199. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts +1 -1
  200. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts +1 -3
  201. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts +1 -1
  202. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts +1 -1
  203. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts +1 -1
  204. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts +1 -3
  205. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +1 -1
  206. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +1 -1
  207. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +1 -1
  208. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts +1 -3
  209. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +1 -1
  210. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +1 -1
  211. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +1 -1
  212. package/node_modules/@aws-sdk/nested-clients/package.json +6 -14
  213. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +3 -3
  214. package/node_modules/@aws-sdk/token-providers/package.json +4 -4
  215. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  216. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  217. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +3 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  220. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +5 -1
  221. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  222. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  223. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  224. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +2 -2
  226. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  227. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +2 -2
  228. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  229. package/node_modules/@earendil-works/pi-coding-agent/package.json +4 -4
  230. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  231. package/node_modules/@smithy/core/package.json +2 -2
  232. package/node_modules/@smithy/credential-provider-imds/package.json +3 -3
  233. package/node_modules/@smithy/fetch-http-handler/package.json +4 -4
  234. package/node_modules/@smithy/node-http-handler/package.json +4 -4
  235. package/node_modules/@smithy/signature-v4/package.json +3 -3
  236. package/node_modules/@smithy/types/README.md +3 -3
  237. package/node_modules/@smithy/types/dist-types/abort.d.ts +4 -6
  238. package/node_modules/@smithy/types/dist-types/auth/auth.d.ts +6 -4
  239. package/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +7 -10
  240. package/node_modules/@smithy/types/dist-types/checksum.d.ts +4 -6
  241. package/node_modules/@smithy/types/dist-types/client.d.ts +8 -8
  242. package/node_modules/@smithy/types/dist-types/command.d.ts +2 -2
  243. package/node_modules/@smithy/types/dist-types/crypto.d.ts +6 -8
  244. package/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +6 -7
  245. package/node_modules/@smithy/types/dist-types/eventStream.d.ts +10 -10
  246. package/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +9 -10
  247. package/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +2 -2
  248. package/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +10 -10
  249. package/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +2 -2
  250. package/node_modules/@smithy/types/dist-types/http.d.ts +18 -21
  251. package/node_modules/@smithy/types/dist-types/logger.d.ts +2 -2
  252. package/node_modules/@smithy/types/dist-types/middleware.d.ts +28 -27
  253. package/node_modules/@smithy/types/dist-types/pagination.d.ts +4 -4
  254. package/node_modules/@smithy/types/dist-types/serde.d.ts +10 -10
  255. package/node_modules/@smithy/types/dist-types/shapes.d.ts +9 -12
  256. package/node_modules/@smithy/types/dist-types/signature.d.ts +4 -4
  257. package/node_modules/@smithy/types/dist-types/stream.d.ts +2 -2
  258. package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +7 -11
  259. package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +23 -29
  260. package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +9 -19
  261. package/node_modules/@smithy/types/dist-types/transfer.d.ts +2 -1
  262. package/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +4 -4
  263. package/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +14 -18
  264. package/node_modules/@smithy/types/dist-types/transform/exact.d.ts +2 -2
  265. package/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +12 -12
  266. package/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +14 -9
  267. package/node_modules/@smithy/types/dist-types/uri.d.ts +2 -2
  268. package/node_modules/@smithy/types/dist-types/util.d.ts +28 -28
  269. package/node_modules/@smithy/types/package.json +1 -1
  270. package/node_modules/fast-xml-parser/CHANGELOG.md +7 -0
  271. package/node_modules/fast-xml-parser/README.md +0 -3
  272. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
  273. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
  274. package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
  275. package/node_modules/fast-xml-parser/lib/fxp.d.cts +1 -0
  276. package/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
  277. package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
  278. package/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
  279. package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
  280. package/node_modules/fast-xml-parser/package.json +2 -4
  281. package/node_modules/fast-xml-parser/src/fxp.d.ts +1 -0
  282. package/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +1 -1
  283. package/node_modules/fast-xml-parser/src/xmlparser/node2json.js +4 -0
  284. package/package.json +7 -7
  285. package/skills/refresh-kb-links/SKILL.md +217 -0
  286. package/skills/store-custodian/SKILL.md +163 -0
  287. package/skills/store-query-grammar/SKILL.md +145 -0
  288. package/skills/store-query-nlp/SKILL.md +110 -0
  289. package/node_modules/@aws-sdk/middleware-host-header/LICENSE +0 -201
  290. package/node_modules/@aws-sdk/middleware-host-header/README.md +0 -4
  291. package/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +0 -41
  292. package/node_modules/@aws-sdk/middleware-host-header/package.json +0 -59
  293. package/node_modules/@aws-sdk/middleware-logger/LICENSE +0 -201
  294. package/node_modules/@aws-sdk/middleware-logger/README.md +0 -4
  295. package/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +0 -48
  296. package/node_modules/@aws-sdk/middleware-logger/dist-es/index.js +0 -1
  297. package/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts +0 -1
  298. package/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts +0 -1
  299. package/node_modules/@aws-sdk/middleware-logger/package.json +0 -59
  300. package/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE +0 -201
  301. package/node_modules/@aws-sdk/middleware-recursion-detection/README.md +0 -17
  302. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +0 -29
  303. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.browser.js +0 -5
  304. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js +0 -33
  305. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js +0 -5
  306. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js +0 -2
  307. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts +0 -2
  308. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts +0 -2
  309. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +0 -66
  310. package/node_modules/@aws-sdk/middleware-user-agent/LICENSE +0 -201
  311. package/node_modules/@aws-sdk/middleware-user-agent/README.md +0 -4
  312. package/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +0 -194
  313. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js +0 -2
  314. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts +0 -2
  315. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts +0 -2
  316. package/node_modules/@aws-sdk/middleware-user-agent/package.json +0 -61
  317. package/node_modules/@aws-sdk/region-config-resolver/LICENSE +0 -201
  318. package/node_modules/@aws-sdk/region-config-resolver/README.md +0 -19
  319. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +0 -38
  320. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.browser.js +0 -6
  321. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js +0 -19
  322. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js +0 -6
  323. package/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +0 -3
  324. package/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +0 -3
  325. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +0 -3
  326. package/node_modules/@aws-sdk/region-config-resolver/package.json +0 -64
  327. package/node_modules/@aws-sdk/util-endpoints/LICENSE +0 -201
  328. package/node_modules/@aws-sdk/util-endpoints/README.md +0 -6
  329. package/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +0 -406
  330. package/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json +0 -267
  331. package/node_modules/@aws-sdk/util-endpoints/dist-es/index.js +0 -6
  332. package/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js +0 -3
  333. package/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json +0 -267
  334. package/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js +0 -6
  335. package/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts +0 -6
  336. package/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts +0 -3
  337. package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts +0 -6
  338. package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts +0 -3
  339. package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts +0 -6
  340. package/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts +0 -6
  341. package/node_modules/@aws-sdk/util-endpoints/package.json +0 -59
  342. package/node_modules/@aws-sdk/util-user-agent-browser/LICENSE +0 -201
  343. package/node_modules/@aws-sdk/util-user-agent-browser/README.md +0 -29
  344. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js +0 -24
  345. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.browser.js +0 -4
  346. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +0 -61
  347. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +0 -22
  348. package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.browser.js +0 -1
  349. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.browser.d.ts +0 -1
  350. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.browser.d.ts +0 -1
  351. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +0 -60
  352. package/node_modules/@aws-sdk/util-user-agent-node/LICENSE +0 -201
  353. package/node_modules/@aws-sdk/util-user-agent-node/README.md +0 -17
  354. package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +0 -185
  355. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +0 -2
  356. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +0 -2
  357. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +0 -2
  358. package/node_modules/@aws-sdk/util-user-agent-node/package.json +0 -68
  359. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +0 -4
  360. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +0 -1
  361. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +0 -3
  362. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +0 -1
  363. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +0 -20
  364. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +0 -1
  365. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +0 -92
  366. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +0 -1
  367. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +0 -18
  368. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +0 -1
  369. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +0 -42
  370. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +0 -1
  371. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +0 -10
  372. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +0 -1
  373. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +0 -31
  374. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +0 -1
  375. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +0 -30
  376. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +0 -1
  377. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +0 -170
  378. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +0 -1
  379. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +0 -26
  380. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +0 -1
  381. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +0 -90
  382. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +0 -1
  383. package/skills/.gitkeep +0 -0
  384. /package/node_modules/@aws-sdk/{middleware-host-header/dist-es/index.js → core/dist-es/submodules/client/middleware-host-header/hostHeaderMiddleware.js} +0 -0
  385. /package/node_modules/@aws-sdk/{middleware-logger/dist-es → core/dist-es/submodules/client/middleware-logger}/loggerMiddleware.js +0 -0
  386. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/configuration.js +0 -0
  387. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/getRecursionDetectionPlugin.js +0 -0
  388. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.js +0 -0
  389. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.js +0 -0
  390. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.js +0 -0
  391. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/configurations.js +0 -0
  392. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/constants.js +0 -0
  393. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/encode-features.js +0 -0
  394. /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/awsRegionConfig.js +0 -0
  395. /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/extensions/index.js → core/dist-es/submodules/client/region-config-resolver/extensions.js} +0 -0
  396. /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.js +0 -0
  397. /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.js +0 -0
  398. /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.js +0 -0
  399. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/aws.js +0 -0
  400. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.js +0 -0
  401. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/parseArn.js +0 -0
  402. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/isIpAddress.js +0 -0
  403. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.js +0 -0
  404. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/resolveEndpoint.js +0 -0
  405. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/EndpointError.js +0 -0
  406. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/EndpointRuleObject.js +0 -0
  407. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/ErrorRuleObject.js +0 -0
  408. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/RuleSetObject.js +0 -0
  409. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/TreeRuleObject.js +0 -0
  410. /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/shared.js +0 -0
  411. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es → core/dist-es/submodules/client/util-user-agent-browser}/configurations.js +0 -0
  412. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es → core/dist-es/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.js +0 -0
  413. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es/index.js → core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.js} +0 -0
  414. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es/index.native.js → core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.native.js} +0 -0
  415. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/crt-availability.js +0 -0
  416. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/defaultUserAgent.js +0 -0
  417. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.js +0 -0
  418. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.js +0 -0
  419. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.js +0 -0
  420. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.js +0 -0
  421. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.js +0 -0
  422. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/is-crt-available.js +0 -0
  423. /package/node_modules/@aws-sdk/{middleware-host-header/dist-types/index.d.ts → core/dist-types/submodules/client/middleware-host-header/hostHeaderMiddleware.d.ts} +0 -0
  424. /package/node_modules/@aws-sdk/{middleware-logger/dist-types → core/dist-types/submodules/client/middleware-logger}/loggerMiddleware.d.ts +0 -0
  425. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/configuration.d.ts +0 -0
  426. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts → core/dist-types/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.d.ts} +0 -0
  427. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.d.ts +0 -0
  428. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.d.ts +0 -0
  429. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.d.ts +0 -0
  430. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/check-features.d.ts +0 -0
  431. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/configurations.d.ts +0 -0
  432. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/constants.d.ts +0 -0
  433. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/encode-features.d.ts +0 -0
  434. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/user-agent-middleware.d.ts +0 -0
  435. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/awsRegionConfig.d.ts +0 -0
  436. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/extensions/index.d.ts → core/dist-types/submodules/client/region-config-resolver/extensions.d.ts} +0 -0
  437. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.d.ts +0 -0
  438. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.d.ts +0 -0
  439. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.d.ts +0 -0
  440. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/aws.d.ts +0 -0
  441. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
  442. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/parseArn.d.ts +0 -0
  443. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/partition.d.ts +0 -0
  444. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/isIpAddress.d.ts +0 -0
  445. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
  446. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/resolveEndpoint.d.ts +0 -0
  447. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/EndpointError.d.ts +0 -0
  448. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/EndpointRuleObject.d.ts +0 -0
  449. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/ErrorRuleObject.d.ts +0 -0
  450. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/RuleSetObject.d.ts +0 -0
  451. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/TreeRuleObject.d.ts +0 -0
  452. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/shared.d.ts +0 -0
  453. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types → core/dist-types/submodules/client/util-user-agent-browser}/configurations.d.ts +0 -0
  454. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/index.d.ts → core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.d.ts} +0 -0
  455. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/index.native.d.ts → core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.native.d.ts} +0 -0
  456. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/crt-availability.d.ts +0 -0
  457. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/defaultUserAgent.d.ts +0 -0
  458. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.d.ts +0 -0
  459. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.d.ts +0 -0
  460. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.d.ts +0 -0
  461. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.d.ts +0 -0
  462. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.d.ts +0 -0
  463. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/is-crt-available.d.ts +0 -0
  464. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.d.ts +0 -0
  465. /package/node_modules/@aws-sdk/{middleware-host-header/dist-types/ts3.4/index.d.ts → core/dist-types/ts3.4/submodules/client/middleware-host-header/hostHeaderMiddleware.d.ts} +0 -0
  466. /package/node_modules/@aws-sdk/{middleware-logger/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-logger}/loggerMiddleware.d.ts +0 -0
  467. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/configuration.d.ts +0 -0
  468. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.d.ts} +0 -0
  469. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.d.ts +0 -0
  470. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.d.ts +0 -0
  471. /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.d.ts +0 -0
  472. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/check-features.d.ts +0 -0
  473. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/configurations.d.ts +0 -0
  474. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/constants.d.ts +0 -0
  475. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/encode-features.d.ts +0 -0
  476. /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/user-agent-middleware.d.ts +0 -0
  477. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/awsRegionConfig.d.ts +0 -0
  478. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/extensions/index.d.ts → core/dist-types/ts3.4/submodules/client/region-config-resolver/extensions.d.ts} +0 -0
  479. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.d.ts +0 -0
  480. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.d.ts +0 -0
  481. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.d.ts +0 -0
  482. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/aws.d.ts +0 -0
  483. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
  484. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/parseArn.d.ts +0 -0
  485. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/partition.d.ts +0 -0
  486. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/isIpAddress.d.ts +0 -0
  487. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
  488. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/resolveEndpoint.d.ts +0 -0
  489. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/EndpointError.d.ts +0 -0
  490. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/EndpointRuleObject.d.ts +0 -0
  491. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/ErrorRuleObject.d.ts +0 -0
  492. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/RuleSetObject.d.ts +0 -0
  493. /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/TreeRuleObject.d.ts +0 -0
  494. /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/shared.d.ts +0 -0
  495. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-browser}/configurations.d.ts +0 -0
  496. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4/index.d.ts → core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.d.ts} +0 -0
  497. /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4/index.native.d.ts → core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.native.d.ts} +0 -0
  498. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/crt-availability.d.ts +0 -0
  499. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/defaultUserAgent.d.ts +0 -0
  500. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.d.ts +0 -0
  501. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.d.ts +0 -0
  502. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.d.ts +0 -0
  503. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.d.ts +0 -0
  504. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.d.ts +0 -0
  505. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/is-crt-available.d.ts +0 -0
  506. /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.7.10] — 2026-05-17
11
+
12
+ ### Fixed
13
+ - **FORGE-BUG-036 (critical):** Bundled `dist/forge-payload/tools/lib/`
14
+ now includes `suggest.cjs`. Without it, every invocation of the bundled
15
+ `store-cli.cjs` crashed with `Error: Cannot find module './suggest.cjs'`
16
+ because `validate.js` requires it. Root cause: `LIB_ALLOWLIST` in
17
+ `scripts/build-payload.cjs` was not updated when FORGE-S22-T03 added the
18
+ suggest module. All store operations (read/write/emit/update-status) from
19
+ forge-cli now work; agents no longer have to fall back to manual JSON
20
+ writes that bypass schema validation.
21
+ - **bundledVersion alignment.** `package.json` `forge.bundledVersion` now
22
+ reports `0.43.19` (matches actual bundled plugin source).
23
+
24
+ ### Added
25
+ - **Regression test** `test/extensions/forgecli/bug-036-payload-lib-completeness.test.ts`
26
+ walks every `require('./X')` in bundled `tools/lib/` and asserts each target
27
+ exists in the bundle. Catches future LIB_ALLOWLIST omissions on every build.
28
+
10
29
  ## [0.7.9] — 2026-05-17
11
30
 
12
31
  ### Added
@@ -5,6 +5,32 @@ Format: newest first. Breaking changes are marked **△ Breaking**.
5
5
 
6
6
  ---
7
7
 
8
+ ## [0.43.19] — 2026-05-17
9
+
10
+ **G7 — Emit FK-check + reserved-prefix carve-out + orphan event-dir flagger.**
11
+
12
+ ### Added
13
+
14
+ - `store-cli emit` — foreign-key check on `sprintId` arg. Rejects bare/unknown IDs
15
+ (e.g. `S01` instead of `FORGE-S01`) with structured error message including
16
+ `Unknown sprintId: <X>` + "Did you mean?" suggestion using Levenshtein + suffix
17
+ matching from `lib/suggest.cjs`.
18
+ Valid IDs = directory listing of `.forge/store/sprints/` + reserved `SYS-*` prefix.
19
+ - `store-cli emit --allow-synthetic` — new flag bypasses the FK check for synthetic
20
+ or test-harness events. Documented in `--help`.
21
+ - Reserved-prefix carve-out: any `SYS-*` pattern is accepted unconditionally
22
+ (system-generated events that predate sprint records).
23
+ - `validate-store` Pass 2b — scans `.forge/store/events/` for subdirectories whose
24
+ name is not a known sprintId and does not match `SYS-*`. Flags each as
25
+ `ORPHAN_EVENT_DIR` warning (category preserved in `--json` mode). No auto-delete.
26
+
27
+ ### Tests
28
+
29
+ All `node --test forge/tools/__tests__/*.test.cjs` pass (1302 tests). New FK-check
30
+ cases in `store-cli.test.cjs`; new orphan-dir cases in `validate-store.test.cjs`.
31
+
32
+ ---
33
+
8
34
  ## [0.43.16] — 2026-05-15
9
35
 
10
36
  **Sprint finalization ceremony (Plan 12).** Pairs with forge-cli `v0.6.6`.
@@ -1,5 +1,5 @@
1
- /** Parsed result when `--version`, `--help`, or a fast-path subcommand is requested. */
2
- export type ForgeAction = "version" | "help" | "subcommand" | null;
1
+ /** Parsed result when `--version`, `--help`, `doctor`, or a fast-path subcommand is requested. */
2
+ export type ForgeAction = "version" | "help" | "doctor" | "subcommand" | null;
3
3
  /**
4
4
  * Whitelist of bare subcommands that bypass pi and exec a bundled cjs tool
5
5
  * directly. Each entry maps the user-typed subcommand to the cjs filename
package/dist/bin/argv.js CHANGED
@@ -115,13 +115,22 @@ export function parseForgeArgv(argv) {
115
115
  }
116
116
  continue;
117
117
  }
118
+ // ── `forge doctor` — preflight onboarding check ─────────────────────
119
+ // Probes pi auth/model state via the exported APIs. Only matches the
120
+ // first bare token, no flags collected yet.
121
+ if (token === "doctor" && piArgv.length === 0) {
122
+ return {
123
+ forgeAction: "doctor",
124
+ piArgv: [],
125
+ env,
126
+ subcommandArgs: argv.slice(i + 1),
127
+ };
128
+ }
118
129
  // ── Fast-path subcommand (forge store, forge collate, etc.) ──────────
119
130
  // Only matches the FIRST bare token, and only when no flags have
120
131
  // been collected yet (so `forge --cwd /tmp store ...` still treats
121
132
  // `store` as a fast-path; forgeAction overrides piArgv in that case).
122
- if (!token.startsWith("-") &&
123
- Object.hasOwn(FAST_PATH_SUBCOMMANDS, token) &&
124
- piArgv.length === 0) {
133
+ if (!token.startsWith("-") && Object.hasOwn(FAST_PATH_SUBCOMMANDS, token) && piArgv.length === 0) {
125
134
  return {
126
135
  forgeAction: "subcommand",
127
136
  piArgv: [],
@@ -1 +1 @@
1
- {"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/bin/argv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/bin/argv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export interface DoctorReport {
2
+ forgeCli: string;
3
+ forgePlugin: string;
4
+ pi: string;
5
+ cwd: string;
6
+ agentDir: string;
7
+ auth: {
8
+ stored: string[];
9
+ configured: string[];
10
+ };
11
+ models: {
12
+ total: number;
13
+ available: number;
14
+ samples: {
15
+ provider: string;
16
+ id: string;
17
+ }[];
18
+ };
19
+ settings: {
20
+ defaultProvider: string | undefined;
21
+ defaultModel: string | undefined;
22
+ };
23
+ migrations: {
24
+ performed: string[];
25
+ deprecationWarnings: string[];
26
+ };
27
+ status: "ready" | "no-credentials" | "no-models";
28
+ guidance?: string;
29
+ }
30
+ export interface DoctorVersions {
31
+ forgeCli: string;
32
+ forgePlugin: string;
33
+ pi: string;
34
+ }
35
+ /**
36
+ * Run the doctor probe. Returns a structured report.
37
+ *
38
+ * Side effects: runs pi's `runMigrations(cwd)` — this is the same call pi
39
+ * makes at startup, so doctor produces the same view pi would see. Without
40
+ * it, users who only ever set `ANTHROPIC_API_KEY` would appear as having
41
+ * no stored credentials, even though pi itself would migrate them on first
42
+ * launch.
43
+ */
44
+ export declare function runDoctorProbe(versions: DoctorVersions, cwd?: string): Promise<DoctorReport>;
45
+ /** Format a doctor report for human reading. */
46
+ export declare function formatDoctorReport(r: DoctorReport): string;
47
+ export interface DoctorOptions {
48
+ json: boolean;
49
+ }
50
+ export declare function parseDoctorArgs(args: readonly string[]): DoctorOptions | {
51
+ error: string;
52
+ };
53
+ /**
54
+ * Entry point invoked from `bin/forge.ts`. Returns the process exit code.
55
+ *
56
+ * Exit code: 0 when status === "ready", else 1 — matches pi's own
57
+ * non-interactive `formatNoModelsAvailableMessage` exit semantics.
58
+ */
59
+ export declare function runDoctor(args: readonly string[], versions: DoctorVersions): Promise<number>;
@@ -0,0 +1,149 @@
1
+ // forge doctor — preflight onboarding check.
2
+ //
3
+ // Reproduces pi's own startup auth/model probe using the exported APIs
4
+ // (runMigrations, AuthStorage, ModelRegistry, SettingsManager) so the
5
+ // user sees the same view forge will see when it later spawns pi
6
+ // non-interactively. Quotes pi's canonical guidance strings verbatim so
7
+ // the message matches what `pi -p` would print on a no-model exit.
8
+ //
9
+ // Iron-Law boundary: doctor PROBES via pi exports and FORWARDS to pi's
10
+ // `/login` / docs. It must not reimplement login, model resolution, or
11
+ // auth migration.
12
+ import { AuthStorage, formatNoModelsAvailableMessage, getAgentDir, getProviderLoginHelp, ModelRegistry, runMigrations, SettingsManager, } from "@earendil-works/pi-coding-agent";
13
+ /**
14
+ * Run the doctor probe. Returns a structured report.
15
+ *
16
+ * Side effects: runs pi's `runMigrations(cwd)` — this is the same call pi
17
+ * makes at startup, so doctor produces the same view pi would see. Without
18
+ * it, users who only ever set `ANTHROPIC_API_KEY` would appear as having
19
+ * no stored credentials, even though pi itself would migrate them on first
20
+ * launch.
21
+ */
22
+ export async function runDoctorProbe(versions, cwd = process.cwd()) {
23
+ const { migratedAuthProviders, deprecationWarnings } = runMigrations(cwd);
24
+ const authStorage = AuthStorage.create();
25
+ const agentDir = getAgentDir();
26
+ const settingsManager = SettingsManager.create(cwd, agentDir);
27
+ const modelRegistry = ModelRegistry.create(authStorage);
28
+ const stored = authStorage.list();
29
+ const all = modelRegistry.getAll();
30
+ const available = modelRegistry.getAvailable();
31
+ const configuredProviders = Array.from(new Set(available.map((m) => m.provider))).sort();
32
+ const status = available.length > 0 ? "ready" : stored.length > 0 ? "no-models" : "no-credentials";
33
+ const report = {
34
+ forgeCli: versions.forgeCli,
35
+ forgePlugin: versions.forgePlugin,
36
+ pi: versions.pi,
37
+ cwd,
38
+ agentDir,
39
+ auth: {
40
+ stored,
41
+ configured: configuredProviders,
42
+ },
43
+ models: {
44
+ total: all.length,
45
+ available: available.length,
46
+ samples: available.slice(0, 5).map((m) => ({ provider: m.provider, id: m.id })),
47
+ },
48
+ settings: {
49
+ defaultProvider: settingsManager.getDefaultProvider(),
50
+ defaultModel: settingsManager.getDefaultModel(),
51
+ },
52
+ migrations: {
53
+ performed: migratedAuthProviders,
54
+ deprecationWarnings,
55
+ },
56
+ status,
57
+ };
58
+ if (status !== "ready") {
59
+ report.guidance =
60
+ status === "no-credentials"
61
+ ? `${formatNoModelsAvailableMessage()}\n\nRun \`pi\` once, log in with \`/login\`, then re-run forge.`
62
+ : `${getProviderLoginHelp()}\n\nStored providers found (${stored.join(", ")}), but no usable model. Open \`pi\` and pick a model with \`/model\`.`;
63
+ }
64
+ return report;
65
+ }
66
+ /** Format a doctor report for human reading. */
67
+ export function formatDoctorReport(r) {
68
+ const lines = [];
69
+ lines.push("forge doctor");
70
+ lines.push("============");
71
+ lines.push(`forge-cli@${r.forgeCli} forge-plugin@${r.forgePlugin} pi@${r.pi}`);
72
+ lines.push("");
73
+ lines.push(`cwd: ${r.cwd}`);
74
+ lines.push(`pi agent dir: ${r.agentDir}`);
75
+ lines.push("");
76
+ lines.push("Auth:");
77
+ if (r.auth.stored.length === 0) {
78
+ lines.push(" (no providers in auth.json)");
79
+ }
80
+ else {
81
+ for (const p of r.auth.stored)
82
+ lines.push(` ✓ ${p} (stored)`);
83
+ }
84
+ const envOnly = r.auth.configured.filter((p) => !r.auth.stored.includes(p));
85
+ for (const p of envOnly)
86
+ lines.push(` ✓ ${p} (environment / runtime)`);
87
+ lines.push("");
88
+ lines.push(`Models: ${r.models.available}/${r.models.total} have auth configured`);
89
+ for (const m of r.models.samples)
90
+ lines.push(` • ${m.provider}/${m.id}`);
91
+ if (r.models.available > r.models.samples.length) {
92
+ lines.push(` … ${r.models.available - r.models.samples.length} more`);
93
+ }
94
+ lines.push("");
95
+ lines.push("Settings:");
96
+ lines.push(` default provider: ${r.settings.defaultProvider ?? "(unset)"}`);
97
+ lines.push(` default model: ${r.settings.defaultModel ?? "(unset)"}`);
98
+ lines.push("");
99
+ if (r.migrations.performed.length > 0) {
100
+ lines.push(`Migrations performed: ${r.migrations.performed.join(", ")}`);
101
+ }
102
+ if (r.migrations.deprecationWarnings.length > 0) {
103
+ lines.push("Deprecation warnings:");
104
+ for (const w of r.migrations.deprecationWarnings)
105
+ lines.push(` ⚠ ${w}`);
106
+ }
107
+ if (r.migrations.performed.length > 0 || r.migrations.deprecationWarnings.length > 0) {
108
+ lines.push("");
109
+ }
110
+ lines.push(`Status: ${r.status.toUpperCase()}`);
111
+ if (r.guidance) {
112
+ lines.push("");
113
+ lines.push(r.guidance);
114
+ }
115
+ return lines.join("\n");
116
+ }
117
+ export function parseDoctorArgs(args) {
118
+ let json = false;
119
+ for (const arg of args) {
120
+ if (arg === "--json") {
121
+ json = true;
122
+ continue;
123
+ }
124
+ return { error: `forge doctor: unknown argument ${arg}. Supported: --json` };
125
+ }
126
+ return { json };
127
+ }
128
+ /**
129
+ * Entry point invoked from `bin/forge.ts`. Returns the process exit code.
130
+ *
131
+ * Exit code: 0 when status === "ready", else 1 — matches pi's own
132
+ * non-interactive `formatNoModelsAvailableMessage` exit semantics.
133
+ */
134
+ export async function runDoctor(args, versions) {
135
+ const parsed = parseDoctorArgs(args);
136
+ if ("error" in parsed) {
137
+ process.stderr.write(`${parsed.error}\n`);
138
+ return 1;
139
+ }
140
+ const report = await runDoctorProbe(versions);
141
+ if (parsed.json) {
142
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
143
+ }
144
+ else {
145
+ process.stdout.write(`${formatDoctorReport(report)}\n`);
146
+ }
147
+ return report.status === "ready" ? 0 : 1;
148
+ }
149
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/bin/doctor.ts"],"names":[],"mappings":"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"}
package/dist/bin/forge.js CHANGED
@@ -10,6 +10,7 @@ import { fileURLToPath } from "node:url";
10
10
  import { main } from "@earendil-works/pi-coding-agent";
11
11
  import forgecli from "../extensions/forgecli/index.js";
12
12
  import { isParseError, parseForgeArgv } from "./argv.js";
13
+ import { runDoctor } from "./doctor.js";
13
14
  // ---------------------------------------------------------------------------
14
15
  // Version information (resolved at startup from package.json files)
15
16
  // ---------------------------------------------------------------------------
@@ -78,6 +79,9 @@ Pi options (forwarded verbatim):
78
79
 
79
80
  Unknown flags are rejected — forge performs strict argv ownership.
80
81
 
82
+ Subcommands:
83
+ doctor [--json] Preflight check — pi auth, model availability, settings
84
+
81
85
  Slash commands (inside a Forge project):
82
86
  /forge:init Bootstrap a new Forge SDLC project
83
87
  /forge:* Full Forge command set (when inside a Forge project)
@@ -102,6 +106,15 @@ if (parsed.forgeAction === "help") {
102
106
  await main(["--help"], { extensionFactories: [forgecli] });
103
107
  process.exit(0);
104
108
  }
109
+ if (parsed.forgeAction === "doctor") {
110
+ const pkg = readForgeCliPkg();
111
+ const exitCode = await runDoctor(parsed.subcommandArgs ?? [], {
112
+ forgeCli: pkg.version ?? "unknown",
113
+ forgePlugin: pkg.forge?.bundledVersion ?? "unknown",
114
+ pi: await readPiVersion(),
115
+ });
116
+ process.exit(exitCode);
117
+ }
105
118
  // Apply forge env overrides
106
119
  Object.assign(process.env, parsed.env);
107
120
  // Default prompt-cache retention to "long" for all Forge sessions.
@@ -1 +1 @@
1
- {"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/bin/forge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/bin/forge.ts"],"names":[],"mappings":";AAEA,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAS3C,SAAS,eAAe;IACvB,IAAI,CAAC;QACJ,0DAA0D;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;AACF,CAAC;AAED,KAAK,UAAU,aAAa;IAC3B,IAAI,CAAC;QACJ,iFAAiF;QACjF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACpD,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,KAAK,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IACjD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,EAAE,cAAc,IAAI,SAAS,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,4BAA4B,eAAe,kBAAkB,cAAc,QAAQ,SAAS,KAAK,CACjG,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCD,CACC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAErD,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;IACtC,MAAM,YAAY,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE,CAAC;IACZ,4DAA4D;IAC5D,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE;QAC7D,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QAClC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,IAAI,SAAS;QACnD,EAAE,EAAE,MAAM,aAAa,EAAE;KACzB,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAEvC,mEAAmE;AACnE,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,oEAAoE;AACpE,uCAAuC;AACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACzC,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAChG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,sCAAsC,QAAQ,oEAAoE,CAClH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,EAAE;QACxF,KAAK,EAAE,SAAS;KAChB,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,iBAAiB;AACjB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC"}
@@ -22,6 +22,8 @@ import { loadForgePersona, runForgeSubagent } from "./forge-subagent.js";
22
22
  import { discoverForgeConfig } from "./forge-root.js";
23
23
  import { loadWorkflow } from "./loaders/workflow-loader.js";
24
24
  import { getSessionRegistry } from "./session-registry.js";
25
+ import { attachViewportObserver } from "./viewport-events.js";
26
+ import { fmtPhaseSummary } from "./viewport-renderer.js";
25
27
  import { validateId, isNonInteractive, formatLocalTime, emitEvent, findPredecessorIndex, runPreflightGate, buildPhaseEvent, drainFrictionFile, judgementFromSummary, } from "./run-task.js";
26
28
  // ── Bug phase descriptor table ──────────────────────────────────────────────
27
29
  //
@@ -543,11 +545,6 @@ export async function runBugPipeline(opts) {
543
545
  }
544
546
  // Phase-scoped progress counters
545
547
  const phaseStart = Date.now();
546
- let turn = 0;
547
- let toolCount = 0;
548
- let errCount = 0;
549
- let lastTool = "";
550
- const argsByCallId = new Map();
551
548
  // Track tool_execution_end events for bugId capture (Findings #1, #2).
552
549
  const toolExecutionEvents = [];
553
550
  // Stabilization debug log
@@ -582,49 +579,31 @@ export async function runBugPipeline(opts) {
582
579
  }
583
580
  writeDebug({ kind: "phase_start", phaseIndex: currentPhaseIndex });
584
581
  registry.startPhase(bugId, phase.role, currentPhaseIndex);
585
- const argHint = (toolName, args) => {
586
- if (!args || typeof args !== "object")
587
- return "";
588
- const a = args;
589
- const fp = (a.file_path ?? a.path);
590
- if (typeof fp === "string")
591
- return path.basename(fp);
592
- if (typeof a.command === "string") {
593
- const head = a.command.split(/\s+/).slice(0, 2).join(" ");
594
- return head.length > 40 ? `${head.slice(0, 40)}…` : head;
595
- }
596
- if (typeof a.pattern === "string")
597
- return a.pattern.slice(0, 40);
598
- if (typeof a.query === "string")
599
- return a.query.slice(0, 40);
600
- return "";
601
- };
602
- // Tail-line formatters
603
- const formatTime = (ms) => {
604
- const d = new Date(ms);
605
- const pad = (n) => String(n).padStart(2, "0");
606
- return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
607
- };
608
- const tailPrefix = () => `[${phase.role} ${formatTime(Date.now())}]`;
609
- const extractErrorSummary = (result) => {
610
- const raw = typeof result === "string"
611
- ? result
612
- : typeof result === "object" && result !== null
613
- ? JSON.stringify(result)
614
- : String(result);
615
- const firstLine = raw.split(/\r?\n/).find((l) => l.trim().length > 0) ?? raw;
616
- return firstLine.length > 160 ? `${firstLine.slice(0, 160)}…` : firstLine;
617
- };
618
- const appendTail = (line, opts) => {
619
- registry.appendTail(bugId, phase.role, line, opts);
620
- };
621
- appendTail(`${tailPrefix()} ─── phase ${phase.role} begin ───`);
622
582
  const refreshStatus = () => {
623
583
  if (process.env.FORGE_VERBOSE !== "1")
624
584
  return;
625
585
  const elapsed = Math.floor((Date.now() - phaseStart) / 1000);
626
- const tail = lastTool ? ` · ${lastTool}` : "";
627
- ctx.ui.setStatus?.(STATUS_KEY, `fix-bug ${bugId}: ${phase.role} · t${turn} · tools ${toolCount}${errCount ? ` · err ${errCount}` : ""} · ${elapsed}s${tail}`);
586
+ const tail = observer.state.lastTool ? ` · ${observer.state.lastTool}` : "";
587
+ ctx.ui.setStatus?.(STATUS_KEY, `fix-bug ${bugId}: ${phase.role} · t${observer.state.turn} · tools ${observer.state.toolCount}${observer.state.errCount ? ` · err ${observer.state.errCount}` : ""} · ${elapsed}s${tail}`);
588
+ };
589
+ const observer = attachViewportObserver({
590
+ registry,
591
+ sessionId: bugId,
592
+ phaseRole: phase.role,
593
+ beginHeader: `─── phase ${phase.role} begin ───`,
594
+ writeDebug,
595
+ notify: (msg, level) => ctx.ui.notify(msg, level),
596
+ setStatusVerbose: process.env.FORGE_VERBOSE === "1" ? (k, v) => ctx.ui.setStatus?.(k, v) : undefined,
597
+ verboseKeys: { messageKey: `${STATUS_KEY}:message` },
598
+ afterEach: refreshStatus,
599
+ });
600
+ // Wrap the observer's onEvent to also capture tool_execution_end events
601
+ // for bugId capture downstream (findings #1, #2).
602
+ const onSubagentEvent = (event) => {
603
+ if (event?.type === "tool_execution_end") {
604
+ toolExecutionEvents.push({ toolName: event.toolName, result: event.result });
605
+ }
606
+ observer.onEvent(event);
628
607
  };
629
608
  let result;
630
609
  try {
@@ -638,72 +617,7 @@ export async function runBugPipeline(opts) {
638
617
  // namespace so the system-prompt + persona prefix stays warm
639
618
  // across the ~10-minute phases.
640
619
  cacheSessionId: typeof bugRecordBefore?.sprintId === "string" ? `forge:${bugRecordBefore.sprintId}` : `forge:bug:${bugId}`,
641
- onEvent: (event) => {
642
- switch (event.type) {
643
- case "turn_start": {
644
- turn++;
645
- lastTool = "";
646
- registry.bumpTurn(bugId);
647
- refreshStatus();
648
- break;
649
- }
650
- case "turn_end": {
651
- // Extract turn preview from assistant message
652
- break;
653
- }
654
- case "tool_execution_start": {
655
- toolCount++;
656
- argsByCallId.set(event.toolCallId, event.args);
657
- const hint = argHint(event.toolName, event.args);
658
- lastTool = `${event.toolName}${hint ? ` ${hint}` : ""}`;
659
- writeDebug({
660
- kind: "tool_start",
661
- toolName: event.toolName,
662
- toolCallId: event.toolCallId,
663
- args: event.args,
664
- });
665
- registry.recordToolStart(bugId, event.toolCallId, event.toolName, event.args);
666
- appendTail(`${tailPrefix()} → ${event.toolName}${hint ? ` ${hint}` : ""}`);
667
- refreshStatus();
668
- break;
669
- }
670
- case "tool_execution_end": {
671
- const startArgs = argsByCallId.get(event.toolCallId);
672
- argsByCallId.delete(event.toolCallId);
673
- // Collect tool_execution_end events for bugId capture (Findings #1, #2).
674
- toolExecutionEvents.push({ toolName: event.toolName, result: event.result });
675
- writeDebug({
676
- kind: "tool_end",
677
- toolName: event.toolName,
678
- toolCallId: event.toolCallId,
679
- isError: event.isError,
680
- args: startArgs,
681
- result: event.result,
682
- });
683
- registry.recordToolEnd(bugId, event.toolCallId, event.toolName, event.isError, event.result);
684
- if (event.isError) {
685
- errCount++;
686
- appendTail(`${tailPrefix()} ⚠ ${event.toolName} failed: ${extractErrorSummary(event.result)}`, { warning: true });
687
- }
688
- else {
689
- appendTail(`${tailPrefix()} ← ${event.toolName} ok`);
690
- }
691
- refreshStatus();
692
- break;
693
- }
694
- case "compaction_start": {
695
- ctx.ui.notify(`◌ ${phase.role}: context compacting (${event.reason})…`, "info");
696
- appendTail(`${tailPrefix()} ◌ compacting (${event.reason})`);
697
- break;
698
- }
699
- case "auto_retry_start": {
700
- const err = event.errorMessage ?? "";
701
- ctx.ui.notify(`↻ ${phase.role}: model retry ${event.attempt}/${event.maxAttempts}${err ? `\n${err}` : ""}`, "warning");
702
- appendTail(`${tailPrefix()} ↻ retry ${event.attempt}/${event.maxAttempts}${err ? `: ${extractErrorSummary(err)}` : ""}`, { warning: true });
703
- break;
704
- }
705
- }
706
- },
620
+ onEvent: onSubagentEvent,
707
621
  });
708
622
  }
709
623
  catch (err) {
@@ -802,7 +716,18 @@ export async function runBugPipeline(opts) {
802
716
  }
803
717
  {
804
718
  const elapsed = Math.floor((Date.now() - phaseStart) / 1000);
719
+ const { turn, toolCount, errCount, cumUsage } = observer.state;
805
720
  ctx.ui.notify(`✓ ${phase.role}: ${turn} turn${turn === 1 ? "" : "s"} · ${toolCount} tool call${toolCount === 1 ? "" : "s"}${errCount ? ` · ${errCount} err` : ""} · ${elapsed}s`, "info");
721
+ registry.appendTail(bugId, phase.role, fmtPhaseSummary({
722
+ role: phase.role,
723
+ turns: turn,
724
+ tools: toolCount,
725
+ errors: errCount,
726
+ wallSeconds: elapsed,
727
+ usage: cumUsage,
728
+ model: result.model,
729
+ provider: result.provider,
730
+ }));
806
731
  }
807
732
  // ── Slice-2: orchestrator emits phase event ──────────────────
808
733
  // sprintId for bug event emission is the literal "bugs" (routing key),