gsd-pi 2.68.0 → 2.68.1-dev.58193fa

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 (261) hide show
  1. package/README.md +66 -70
  2. package/dist/resources/extensions/gsd/auto-model-selection.js +27 -1
  3. package/dist/resources/extensions/gsd/auto.js +8 -2
  4. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +7 -0
  5. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -5
  6. package/dist/resources/extensions/gsd/codebase-generator.js +12 -0
  7. package/dist/resources/extensions/gsd/guided-flow.js +25 -70
  8. package/dist/resources/extensions/gsd/model-router.js +85 -2
  9. package/dist/resources/extensions/gsd/prompts/discuss.md +2 -0
  10. package/dist/resources/extensions/gsd/templates/context.md +34 -2
  11. package/dist/web/standalone/.next/BUILD_ID +1 -1
  12. package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -16
  13. package/dist/web/standalone/.next/build-manifest.json +3 -3
  14. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  15. package/dist/web/standalone/.next/required-server-files.json +3 -3
  16. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  17. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  18. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  19. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  20. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  21. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  22. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  23. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  24. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  26. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  27. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  28. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  29. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  30. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  31. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  33. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  35. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  36. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  37. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  38. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  39. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  40. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  41. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  42. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  43. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  44. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  45. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  46. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  47. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  48. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  49. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  50. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  51. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  52. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  53. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  54. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  55. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  56. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  57. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  58. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  59. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  60. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  61. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  62. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  63. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  64. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  65. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  67. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  68. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  70. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  71. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  72. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  73. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  74. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  75. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  76. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  77. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  79. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  80. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  82. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  85. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  88. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  90. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  91. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  94. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  97. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  107. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  109. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  111. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  115. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/index.html +1 -1
  121. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  122. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  123. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  124. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  126. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  127. package/dist/web/standalone/.next/server/app/page.js +2 -2
  128. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/dist/web/standalone/.next/server/app-paths-manifest.json +16 -16
  130. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  131. package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
  132. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  133. package/dist/web/standalone/.next/server/middleware.js +2 -2
  134. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  135. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  136. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  137. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  138. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  139. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  140. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  141. package/dist/web/standalone/.next/static/chunks/app/page-f1e30ab6bb269149.js +1 -0
  142. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  143. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  144. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  145. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  146. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  147. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  148. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  149. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  150. package/dist/web/standalone/server.js +1 -1
  151. package/package.json +1 -1
  152. package/packages/pi-ai/dist/index.d.ts +3 -0
  153. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  154. package/packages/pi-ai/dist/index.js +2 -0
  155. package/packages/pi-ai/dist/index.js.map +1 -1
  156. package/packages/pi-ai/dist/providers/amazon-bedrock.js +2 -2
  157. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  158. package/packages/pi-ai/dist/providers/anthropic-shared.js +2 -2
  159. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  160. package/packages/pi-ai/dist/providers/google-shared.js +2 -2
  161. package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
  162. package/packages/pi-ai/dist/providers/mistral.js +2 -2
  163. package/packages/pi-ai/dist/providers/mistral.js.map +1 -1
  164. package/packages/pi-ai/dist/providers/openai-completions.js +2 -2
  165. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  166. package/packages/pi-ai/dist/providers/openai-responses-shared.js +2 -2
  167. package/packages/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  168. package/packages/pi-ai/dist/providers/provider-capabilities.d.ts +59 -0
  169. package/packages/pi-ai/dist/providers/provider-capabilities.d.ts.map +1 -0
  170. package/packages/pi-ai/dist/providers/provider-capabilities.js +173 -0
  171. package/packages/pi-ai/dist/providers/provider-capabilities.js.map +1 -0
  172. package/packages/pi-ai/dist/providers/provider-capabilities.test.d.ts +2 -0
  173. package/packages/pi-ai/dist/providers/provider-capabilities.test.d.ts.map +1 -0
  174. package/packages/pi-ai/dist/providers/provider-capabilities.test.js +132 -0
  175. package/packages/pi-ai/dist/providers/provider-capabilities.test.js.map +1 -0
  176. package/packages/pi-ai/dist/providers/transform-messages-report.test.d.ts +2 -0
  177. package/packages/pi-ai/dist/providers/transform-messages-report.test.d.ts.map +1 -0
  178. package/packages/pi-ai/dist/providers/transform-messages-report.test.js +172 -0
  179. package/packages/pi-ai/dist/providers/transform-messages-report.test.js.map +1 -0
  180. package/packages/pi-ai/dist/providers/transform-messages.d.ts +34 -1
  181. package/packages/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
  182. package/packages/pi-ai/dist/providers/transform-messages.js +73 -2
  183. package/packages/pi-ai/dist/providers/transform-messages.js.map +1 -1
  184. package/packages/pi-ai/src/index.ts +3 -0
  185. package/packages/pi-ai/src/providers/amazon-bedrock.ts +2 -2
  186. package/packages/pi-ai/src/providers/anthropic-shared.ts +2 -2
  187. package/packages/pi-ai/src/providers/google-shared.ts +2 -2
  188. package/packages/pi-ai/src/providers/mistral.ts +2 -2
  189. package/packages/pi-ai/src/providers/openai-completions.ts +2 -2
  190. package/packages/pi-ai/src/providers/openai-responses-shared.ts +2 -2
  191. package/packages/pi-ai/src/providers/provider-capabilities.test.ts +174 -0
  192. package/packages/pi-ai/src/providers/provider-capabilities.ts +215 -0
  193. package/packages/pi-ai/src/providers/transform-messages-report.test.ts +189 -0
  194. package/packages/pi-ai/src/providers/transform-messages.ts +94 -1
  195. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  196. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  197. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  198. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  199. package/packages/pi-coding-agent/dist/core/extensions/loader.js +10 -1
  200. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  201. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -1
  202. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  203. package/packages/pi-coding-agent/dist/core/extensions/runner.js +15 -0
  204. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  205. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +41 -0
  206. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  207. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  208. package/packages/pi-coding-agent/dist/core/tools/index.d.ts +1 -0
  209. package/packages/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  210. package/packages/pi-coding-agent/dist/core/tools/index.js +1 -0
  211. package/packages/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  212. package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.d.ts +27 -0
  213. package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.d.ts.map +1 -0
  214. package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.js +69 -0
  215. package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.js.map +1 -0
  216. package/packages/pi-coding-agent/dist/index.d.ts +2 -2
  217. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  218. package/packages/pi-coding-agent/dist/index.js +3 -1
  219. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  220. package/packages/pi-coding-agent/package.json +1 -1
  221. package/packages/pi-coding-agent/src/core/extensions/index.ts +4 -0
  222. package/packages/pi-coding-agent/src/core/extensions/loader.ts +11 -1
  223. package/packages/pi-coding-agent/src/core/extensions/runner.ts +18 -0
  224. package/packages/pi-coding-agent/src/core/extensions/types.ts +45 -0
  225. package/packages/pi-coding-agent/src/core/tools/index.ts +7 -0
  226. package/packages/pi-coding-agent/src/core/tools/tool-compatibility-registry.ts +83 -0
  227. package/packages/pi-coding-agent/src/index.ts +9 -0
  228. package/pkg/package.json +1 -1
  229. package/src/resources/extensions/gsd/auto-model-selection.ts +36 -4
  230. package/src/resources/extensions/gsd/auto.ts +8 -2
  231. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +8 -0
  232. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -5
  233. package/src/resources/extensions/gsd/codebase-generator.ts +16 -0
  234. package/src/resources/extensions/gsd/guided-flow.ts +22 -84
  235. package/src/resources/extensions/gsd/model-router.ts +117 -10
  236. package/src/resources/extensions/gsd/preferences-types.ts +3 -1
  237. package/src/resources/extensions/gsd/prompts/discuss.md +2 -0
  238. package/src/resources/extensions/gsd/templates/context.md +34 -2
  239. package/src/resources/extensions/gsd/tests/capability-router.test.ts +31 -7
  240. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +28 -0
  241. package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +1 -1
  242. package/src/resources/extensions/gsd/tests/model-router.test.ts +2 -2
  243. package/src/resources/extensions/gsd/tests/resource-loader-import-path.test.ts +37 -0
  244. package/src/resources/extensions/gsd/tests/tool-compatibility.test.ts +199 -0
  245. package/src/resources/extensions/gsd/tests/write-gate.test.ts +13 -16
  246. package/dist/resources/extensions/gsd/prompt-validation.js +0 -67
  247. package/dist/resources/extensions/gsd/prompts/discuss-prepared.md +0 -424
  248. package/dist/resources/extensions/gsd/templates/context-enhanced.md +0 -138
  249. package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +0 -1
  250. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  251. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  252. package/src/resources/extensions/gsd/prompt-validation.ts +0 -88
  253. package/src/resources/extensions/gsd/prompts/discuss-prepared.md +0 -424
  254. package/src/resources/extensions/gsd/templates/context-enhanced.md +0 -138
  255. package/src/resources/extensions/gsd/tests/adversarial-review-fixes.test.ts +0 -223
  256. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +0 -53
  257. package/src/resources/extensions/gsd/tests/integration-prepared-discussion.test.ts +0 -525
  258. package/src/resources/extensions/gsd/tests/preparation.test.ts +0 -1211
  259. package/src/resources/extensions/gsd/tests/prompt-builder.test.ts +0 -669
  260. /package/dist/web/standalone/.next/static/{ka3ShQTakcliYL-EXRRb6 → YFZaRxYFkrifCiWU3AcrJ}/_buildManifest.js +0 -0
  261. /package/dist/web/standalone/.next/static/{ka3ShQTakcliYL-EXRRb6 → YFZaRxYFkrifCiWU3AcrJ}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.js\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.js\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppAction,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionManifest,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tLifecycleHookContext,\n\tLifecycleHookHandler,\n\tLifecycleHookMap,\n\tLifecycleHookPhase,\n\tLifecycleHookScope,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionForkEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionSwitchEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolDefinition,\n\tToolInfo,\n\tSortResult,\n\tSortWarning,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tBashTransformEvent,\n\tBashTransformEventResult,\n\tWidgetPlacement,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.js\";\nexport {\n\tcreateExtensionRuntime,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\timportExtensionModule,\n\tisToolCallEventType,\n\tisToolResultEventType,\n\treadManifest,\n\treadManifestFromEntryPath,\n\tsortExtensionPaths,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n\twrapToolsWithExtensions,\n\twrapToolWithExtensions,\n} from \"./core/extensions/index.js\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.js\";\nexport { convertToLlm } from \"./core/messages.js\";\nexport { ModelDiscoveryCache } from \"./core/discovery-cache.js\";\nexport type { DiscoveredModel, DiscoveryResult, ProviderDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { getDiscoverableProviders, getDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { ModelRegistry } from \"./core/model-registry.js\";\nexport { ModelsJsonWriter } from \"./core/models-json-writer.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.js\";\nexport { DefaultPackageManager } from \"./core/package-manager.js\";\nexport type { PackageCommand, PackageCommandOptions, PackageCommandRunnerOptions, PackageCommandRunnerResult } from \"./core/package-commands.js\";\nexport { getPackageCommandUsage, parsePackageCommand, runPackageCommand } from \"./core/package-commands.js\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.js\";\nexport { DefaultResourceLoader } from \"./core/resource-loader.js\";\n// SDK for programmatic usage\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\t// Factory\n\tcreateAgentSession,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n\t// Pre-built tools (use process.cwd())\n\treadOnlyTools,\n} from \"./core/sdk.js\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.js\";\n// Blob and artifact storage\nexport { BlobStore, isBlobRef, parseBlobRef, externalizeImageData, resolveImageData } from \"./core/blob-store.js\";\nexport { ArtifactManager } from \"./core/artifact-manager.js\";\nexport {\n\ttype AsyncSettings,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype MemorySettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype TaskIsolationSettings,\n} from \"./core/settings-manager.js\";\nexport {\n\tSAFE_COMMAND_PREFIXES,\n\tsetAllowedCommandPrefixes,\n\tgetAllowedCommandPrefixes,\n} from \"./core/resolve-config-value.js\";\n// Skills\nexport {\n\tECOSYSTEM_SKILLS_DIR,\n\tECOSYSTEM_PROJECT_SKILLS_DIR,\n\tformatSkillsForPrompt,\n\tgetLoadedSkills,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.js\";\n// Tools\nexport {\n\ttype BashInterceptorRule,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\trewriteBackgroundCommand,\n\tcheckBashInterception,\n\ttype CompiledInterceptor,\n\tcompileInterceptor,\n\tDEFAULT_BASH_INTERCEPTOR_RULES,\n\tcodingTools,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n\t// Hashline edit mode tools\n\thashlineEditTool,\n\thashlineReadTool,\n\thashlineCodingTools,\n\tcreateHashlineEditTool,\n\tcreateHashlineReadTool,\n\tcreateHashlineCodingTools,\n\ttype HashlineEditInput,\n\ttype HashlineEditToolDetails,\n\ttype HashlineEditToolOptions,\n\ttype HashlineReadToolDetails,\n\ttype HashlineReadToolInput,\n\ttype HashlineReadToolOptions,\n} from \"./core/tools/index.js\";\n// Main entry point\nexport { main } from \"./main.js\";\n// Run modes for programmatic SDK usage\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype PrintModeOptions,\n\trunPrintMode,\n\trunRpcMode,\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcEventListener,\n\ttype RpcCommand,\n\ttype RpcInitResult,\n\ttype RpcProtocolVersion,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\ttype RpcV2Event,\n} from \"./modes/index.js\";\n// RPC JSONL utilities\nexport { attachJsonlLineReader, serializeJsonLine } from \"./modes/rpc/jsonl.js\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tappKey,\n\tappKeyHint,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\teditorKey,\n\tFooterComponent,\n\tkeyHint,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\tProviderManagerComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.js\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.js\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.js\";\n// Shell utilities\nexport { getShellConfig, sanitizeCommand } from \"./utils/shell.js\";\n// Cross-platform path display\nexport { toPosixPath } from \"./utils/path-display.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.js\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.js\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\n// Extension system\nexport type {\n\tAdjustToolSetEvent,\n\tAdjustToolSetResult,\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppAction,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionManifest,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tLifecycleHookContext,\n\tLifecycleHookHandler,\n\tLifecycleHookMap,\n\tLifecycleHookPhase,\n\tLifecycleHookScope,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionForkEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionSwitchEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCompatibility,\n\tToolDefinition,\n\tToolInfo,\n\tSortResult,\n\tSortWarning,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tBashTransformEvent,\n\tBashTransformEventResult,\n\tWidgetPlacement,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.js\";\nexport {\n\tcreateExtensionRuntime,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\timportExtensionModule,\n\tisToolCallEventType,\n\tisToolResultEventType,\n\treadManifest,\n\treadManifestFromEntryPath,\n\tsortExtensionPaths,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n\twrapToolsWithExtensions,\n\twrapToolWithExtensions,\n} from \"./core/extensions/index.js\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.js\";\nexport { convertToLlm } from \"./core/messages.js\";\nexport { ModelDiscoveryCache } from \"./core/discovery-cache.js\";\nexport type { DiscoveredModel, DiscoveryResult, ProviderDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { getDiscoverableProviders, getDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { ModelRegistry } from \"./core/model-registry.js\";\nexport { ModelsJsonWriter } from \"./core/models-json-writer.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.js\";\nexport { DefaultPackageManager } from \"./core/package-manager.js\";\nexport type { PackageCommand, PackageCommandOptions, PackageCommandRunnerOptions, PackageCommandRunnerResult } from \"./core/package-commands.js\";\nexport { getPackageCommandUsage, parsePackageCommand, runPackageCommand } from \"./core/package-commands.js\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.js\";\nexport { DefaultResourceLoader } from \"./core/resource-loader.js\";\n// SDK for programmatic usage\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\t// Factory\n\tcreateAgentSession,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n\t// Pre-built tools (use process.cwd())\n\treadOnlyTools,\n} from \"./core/sdk.js\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.js\";\n// Blob and artifact storage\nexport { BlobStore, isBlobRef, parseBlobRef, externalizeImageData, resolveImageData } from \"./core/blob-store.js\";\nexport { ArtifactManager } from \"./core/artifact-manager.js\";\nexport {\n\ttype AsyncSettings,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype MemorySettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype TaskIsolationSettings,\n} from \"./core/settings-manager.js\";\nexport {\n\tSAFE_COMMAND_PREFIXES,\n\tsetAllowedCommandPrefixes,\n\tgetAllowedCommandPrefixes,\n} from \"./core/resolve-config-value.js\";\n// Skills\nexport {\n\tECOSYSTEM_SKILLS_DIR,\n\tECOSYSTEM_PROJECT_SKILLS_DIR,\n\tformatSkillsForPrompt,\n\tgetLoadedSkills,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.js\";\n// Tools\nexport {\n\ttype BashInterceptorRule,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\trewriteBackgroundCommand,\n\tcheckBashInterception,\n\ttype CompiledInterceptor,\n\tcompileInterceptor,\n\tDEFAULT_BASH_INTERCEPTOR_RULES,\n\tcodingTools,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n\t// Hashline edit mode tools\n\thashlineEditTool,\n\thashlineReadTool,\n\thashlineCodingTools,\n\tcreateHashlineEditTool,\n\tcreateHashlineReadTool,\n\tcreateHashlineCodingTools,\n\ttype HashlineEditInput,\n\ttype HashlineEditToolDetails,\n\ttype HashlineEditToolOptions,\n\ttype HashlineReadToolDetails,\n\ttype HashlineReadToolInput,\n\ttype HashlineReadToolOptions,\n\t// Tool compatibility registry (ADR-005)\n\tregisterToolCompatibility,\n\tgetToolCompatibility,\n\tgetAllToolCompatibility,\n\tregisterMcpToolCompatibility,\n\tresetToolCompatibilityRegistry,\n} from \"./core/tools/index.js\";\n// Main entry point\nexport { main } from \"./main.js\";\n// Run modes for programmatic SDK usage\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype PrintModeOptions,\n\trunPrintMode,\n\trunRpcMode,\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcEventListener,\n\ttype RpcCommand,\n\ttype RpcInitResult,\n\ttype RpcProtocolVersion,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\ttype RpcV2Event,\n} from \"./modes/index.js\";\n// RPC JSONL utilities\nexport { attachJsonlLineReader, serializeJsonLine } from \"./modes/rpc/jsonl.js\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tappKey,\n\tappKeyHint,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\teditorKey,\n\tFooterComponent,\n\tkeyHint,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\tProviderManagerComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.js\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.js\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.js\";\n// Shell utilities\nexport { getShellConfig, sanitizeCommand } from \"./utils/shell.js\";\n// Cross-platform path display\nexport { toPosixPath } from \"./utils/path-display.js\";\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gsd/pi-coding-agent",
3
- "version": "2.68.0",
3
+ "version": "2.68.1",
4
4
  "description": "Coding agent CLI (vendored from pi-mono)",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -43,6 +43,9 @@ export type {
43
43
  BeforeProviderRequestEventResult,
44
44
  // Context
45
45
  CompactOptions,
46
+ // Events - Adjust Tool Set (ADR-005)
47
+ AdjustToolSetEvent,
48
+ AdjustToolSetResult,
46
49
  // Events - Agent
47
50
  ContextEvent,
48
51
  // Event Results
@@ -135,6 +138,7 @@ export type {
135
138
  ToolCallEvent,
136
139
  ToolCallEventResult,
137
140
  // Tools
141
+ ToolCompatibility,
138
142
  ToolDefinition,
139
143
  // Events - Tool Execution
140
144
  ToolExecutionEndEvent,
@@ -38,6 +38,7 @@ import type { ExecOptions } from "../exec.js";
38
38
  import { execCommand } from "../exec.js";
39
39
  import { getUntrustedExtensionPaths } from "./project-trust.js";
40
40
  export { isProjectTrusted, trustProject, getUntrustedExtensionPaths } from "./project-trust.js";
41
+ import { registerToolCompatibility } from "../tools/tool-compatibility-registry.js";
41
42
  import type {
42
43
  Extension,
43
44
  ExtensionAPI,
@@ -428,8 +429,9 @@ export function createExtensionRuntime(): ExtensionRuntime {
428
429
  unregisterProvider: (name) => {
429
430
  runtime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter((r) => r.name !== name);
430
431
  },
431
- // Stub replaced by ExtensionRunner at construction time via bindEmitMethods().
432
+ // Stubs replaced by ExtensionRunner at construction time via bindEmitMethods().
432
433
  emitBeforeModelSelect: async () => undefined,
434
+ emitAdjustToolSet: async () => undefined,
433
435
  };
434
436
 
435
437
  return runtime;
@@ -459,6 +461,10 @@ function createExtensionAPI(
459
461
  definition: tool,
460
462
  extensionPath: extension.path,
461
463
  });
464
+ // ADR-005: auto-register tool compatibility metadata
465
+ if (tool.compatibility) {
466
+ registerToolCompatibility(tool.name, tool.compatibility);
467
+ }
462
468
  runtime.refreshTools();
463
469
  },
464
470
 
@@ -585,6 +591,10 @@ function createExtensionAPI(
585
591
  return runtime.emitBeforeModelSelect(event);
586
592
  },
587
593
 
594
+ async emitAdjustToolSet(event: Omit<import("./types.js").AdjustToolSetEvent, "type">): Promise<import("./types.js").AdjustToolSetResult | undefined> {
595
+ return runtime.emitAdjustToolSet(event);
596
+ },
597
+
588
598
  events: eventBus,
589
599
  } as ExtensionAPI;
590
600
 
@@ -11,6 +11,8 @@ import type { KeyAction, KeybindingsConfig } from "../keybindings.js";
11
11
  import type { ModelRegistry } from "../model-registry.js";
12
12
  import type { SessionManager } from "../session-manager.js";
13
13
  import type {
14
+ AdjustToolSetEvent,
15
+ AdjustToolSetResult,
14
16
  BeforeAgentStartEvent,
15
17
  BeforeAgentStartEventResult,
16
18
  BeforeModelSelectEvent,
@@ -234,6 +236,7 @@ export class ExtensionRunner {
234
236
  this.modelRegistry = modelRegistry;
235
237
  // Bind emit methods into the shared runtime so createExtensionAPI can delegate to them.
236
238
  this.runtime.emitBeforeModelSelect = (event) => this.emitBeforeModelSelect(event);
239
+ this.runtime.emitAdjustToolSet = (event) => this.emitAdjustToolSet(event);
237
240
  }
238
241
 
239
242
  bindCore(actions: ExtensionActions, contextActions: ExtensionContextActions): void {
@@ -713,6 +716,21 @@ export class ExtensionRunner {
713
716
  return result;
714
717
  }
715
718
 
719
+ async emitAdjustToolSet(event: Omit<AdjustToolSetEvent, "type">): Promise<AdjustToolSetResult | undefined> {
720
+ let result: AdjustToolSetResult | undefined;
721
+ await this.invokeHandlers("adjust_tool_set", () => ({
722
+ type: "adjust_tool_set" as const,
723
+ ...event,
724
+ } satisfies AdjustToolSetEvent), (handlerResult) => {
725
+ if (handlerResult) {
726
+ result = handlerResult as AdjustToolSetResult;
727
+ return { done: true }; // first override wins
728
+ }
729
+ return { done: false };
730
+ });
731
+ return result;
732
+ }
733
+
716
734
  async emitBeforeAgentStart(
717
735
  prompt: string,
718
736
  images: ImageContent[] | undefined,
@@ -331,6 +331,19 @@ export interface ToolRenderResultOptions {
331
331
  isPartial: boolean;
332
332
  }
333
333
 
334
+ /**
335
+ * Tool compatibility metadata for provider-aware tool filtering (ADR-005 Phase 2).
336
+ * Tools without compatibility metadata are assumed universally compatible.
337
+ */
338
+ export interface ToolCompatibility {
339
+ /** Tool produces image content in results (filtered for providers without imageToolResults) */
340
+ producesImages?: boolean;
341
+ /** Tool requires schema features that some providers don't support (e.g., ["patternProperties"]) */
342
+ schemaFeatures?: string[];
343
+ /** Tool is effective only with models above a minimum capability threshold */
344
+ minCapabilityTier?: "light" | "standard" | "heavy";
345
+ }
346
+
334
347
  /**
335
348
  * Tool definition for registerTool().
336
349
  */
@@ -347,6 +360,8 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
347
360
  promptGuidelines?: string[];
348
361
  /** Parameter schema (TypeBox) */
349
362
  parameters: TParams;
363
+ /** Provider compatibility metadata (ADR-005). Omit for universally compatible tools. */
364
+ compatibility?: ToolCompatibility;
350
365
 
351
366
  /** Execute the tool. */
352
367
  execute(
@@ -619,6 +634,30 @@ export interface BeforeModelSelectResult {
619
634
  modelId: string;
620
635
  }
621
636
 
637
+ /**
638
+ * Fired after model selection to allow extensions to adjust the active tool set (ADR-005 Phase 4).
639
+ * Extensions can add, remove, or reorder tools based on the selected model's provider capabilities.
640
+ */
641
+ export interface AdjustToolSetEvent {
642
+ type: "adjust_tool_set";
643
+ /** The selected model's API type */
644
+ selectedModelApi: string;
645
+ /** The selected model's provider */
646
+ selectedModelProvider: string;
647
+ /** The selected model ID */
648
+ selectedModelId: string;
649
+ /** Current active tool names */
650
+ activeToolNames: string[];
651
+ /** Tools already filtered by provider compatibility */
652
+ filteredTools: string[];
653
+ }
654
+
655
+ /** Result from adjust_tool_set event handler. Return { toolNames } to override tool set. */
656
+ export interface AdjustToolSetResult {
657
+ /** Replacement tool names. If omitted, the default filtering is used. */
658
+ toolNames?: string[];
659
+ }
660
+
622
661
  // ============================================================================
623
662
  // User Bash Events
624
663
  // ============================================================================
@@ -1069,6 +1108,7 @@ export interface ExtensionAPI {
1069
1108
  on(event: "user_bash", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): void;
1070
1109
  on(event: "input", handler: ExtensionHandler<InputEvent, InputEventResult>): void;
1071
1110
  on(event: "before_model_select", handler: ExtensionHandler<BeforeModelSelectEvent, BeforeModelSelectResult>): void;
1111
+ on(event: "adjust_tool_set", handler: ExtensionHandler<AdjustToolSetEvent, AdjustToolSetResult>): void;
1072
1112
 
1073
1113
  // =========================================================================
1074
1114
  // Event Emission (for host extensions that orchestrate model selection)
@@ -1077,6 +1117,9 @@ export interface ExtensionAPI {
1077
1117
  /** Emit before_model_select event. Returns override model ID or undefined. */
1078
1118
  emitBeforeModelSelect(event: Omit<BeforeModelSelectEvent, "type">): Promise<BeforeModelSelectResult | undefined>;
1079
1119
 
1120
+ /** Emit adjust_tool_set event (ADR-005). Returns override tool names or undefined. */
1121
+ emitAdjustToolSet(event: Omit<AdjustToolSetEvent, "type">): Promise<AdjustToolSetResult | undefined>;
1122
+
1080
1123
  // =========================================================================
1081
1124
  // Tool Registration
1082
1125
  // =========================================================================
@@ -1395,6 +1438,8 @@ export interface ExtensionRuntimeState {
1395
1438
  unregisterProvider: (name: string) => void;
1396
1439
  /** Emit before_model_select event to all registered handlers. Bound by ExtensionRunner. */
1397
1440
  emitBeforeModelSelect: (event: Omit<BeforeModelSelectEvent, "type">) => Promise<BeforeModelSelectResult | undefined>;
1441
+ /** Emit adjust_tool_set event to all registered handlers. Bound by ExtensionRunner (ADR-005). */
1442
+ emitAdjustToolSet: (event: Omit<AdjustToolSetEvent, "type">) => Promise<AdjustToolSetResult | undefined>;
1398
1443
  }
1399
1444
 
1400
1445
  /**
@@ -112,6 +112,13 @@ export {
112
112
  lspTool,
113
113
  } from "../lsp/index.js";
114
114
  export type { LspServerStatus } from "../lsp/client.js";
115
+ export {
116
+ registerToolCompatibility,
117
+ getToolCompatibility,
118
+ getAllToolCompatibility,
119
+ registerMcpToolCompatibility,
120
+ resetToolCompatibilityRegistry,
121
+ } from "./tool-compatibility-registry.js";
115
122
 
116
123
  import type { AgentTool } from "@gsd/pi-agent-core";
117
124
  import { type BashToolOptions, bashTool, createBashTool } from "./bash.js";
@@ -0,0 +1,83 @@
1
+ // GSD-2 — Tool Compatibility Registry (ADR-005 Phase 2)
2
+ // Maps tool names to their provider compatibility metadata.
3
+ // Used by the model router to filter tools incompatible with the selected provider.
4
+
5
+ import type { ToolCompatibility } from "../extensions/types.js";
6
+
7
+ // ─── Registry State ─────────────────────────────────────────────────────────
8
+
9
+ const registry = new Map<string, ToolCompatibility>();
10
+
11
+ // ─── Built-in Tool Compatibility (universally compatible) ───────────────────
12
+ // Built-in tools (bash, read, write, edit, grep, find, ls) produce text-only
13
+ // results and use standard JSON Schema — compatible with all providers.
14
+
15
+ const BUILTIN_TOOLS: Record<string, ToolCompatibility> = {
16
+ bash: {},
17
+ read: {},
18
+ write: {},
19
+ edit: {},
20
+ grep: {},
21
+ find: {},
22
+ ls: {},
23
+ lsp: {},
24
+ hashline_edit: {},
25
+ hashline_read: {},
26
+ };
27
+
28
+ // Pre-populate registry with built-in tools
29
+ for (const [name, compat] of Object.entries(BUILTIN_TOOLS)) {
30
+ registry.set(name, compat);
31
+ }
32
+
33
+ // ─── MCP Tool Defaults ─────────────────────────────────────────────────────
34
+ // MCP tools may use complex schemas. Default to cautious compatibility.
35
+
36
+ const MCP_TOOL_DEFAULTS: ToolCompatibility = {
37
+ schemaFeatures: ["patternProperties"],
38
+ };
39
+
40
+ // ─── Public API ─────────────────────────────────────────────────────────────
41
+
42
+ /**
43
+ * Register compatibility metadata for a tool.
44
+ * Called automatically by registerTool() for extension tools that include
45
+ * compatibility metadata in their ToolDefinition.
46
+ */
47
+ export function registerToolCompatibility(toolName: string, compatibility: ToolCompatibility): void {
48
+ registry.set(toolName, compatibility);
49
+ }
50
+
51
+ /**
52
+ * Get compatibility metadata for a tool.
53
+ * Returns undefined for unknown tools (treated as universally compatible
54
+ * per ADR-005 principle: "fail open, don't restrict without data").
55
+ */
56
+ export function getToolCompatibility(toolName: string): ToolCompatibility | undefined {
57
+ return registry.get(toolName);
58
+ }
59
+
60
+ /**
61
+ * Get all registered tool compatibility entries.
62
+ */
63
+ export function getAllToolCompatibility(): ReadonlyMap<string, ToolCompatibility> {
64
+ return registry;
65
+ }
66
+
67
+ /**
68
+ * Register an MCP tool with default cautious compatibility.
69
+ * MCP tools may use complex schemas that some providers don't support.
70
+ */
71
+ export function registerMcpToolCompatibility(toolName: string, overrides?: Partial<ToolCompatibility>): void {
72
+ registry.set(toolName, { ...MCP_TOOL_DEFAULTS, ...overrides });
73
+ }
74
+
75
+ /**
76
+ * Clear all non-builtin entries (for testing).
77
+ */
78
+ export function resetToolCompatibilityRegistry(): void {
79
+ registry.clear();
80
+ for (const [name, compat] of Object.entries(BUILTIN_TOOLS)) {
81
+ registry.set(name, compat);
82
+ }
83
+ }
@@ -49,6 +49,8 @@ export {
49
49
  export { createEventBus, type EventBus, type EventBusController } from "./core/event-bus.js";
50
50
  // Extension system
51
51
  export type {
52
+ AdjustToolSetEvent,
53
+ AdjustToolSetResult,
52
54
  AgentEndEvent,
53
55
  AgentStartEvent,
54
56
  AgentToolResult,
@@ -118,6 +120,7 @@ export type {
118
120
  SlashCommandSource,
119
121
  TerminalInputHandler,
120
122
  ToolCallEvent,
123
+ ToolCompatibility,
121
124
  ToolDefinition,
122
125
  ToolInfo,
123
126
  SortResult,
@@ -310,6 +313,12 @@ export {
310
313
  type HashlineReadToolDetails,
311
314
  type HashlineReadToolInput,
312
315
  type HashlineReadToolOptions,
316
+ // Tool compatibility registry (ADR-005)
317
+ registerToolCompatibility,
318
+ getToolCompatibility,
319
+ getAllToolCompatibility,
320
+ registerMcpToolCompatibility,
321
+ resetToolCompatibilityRegistry,
313
322
  } from "./core/tools/index.js";
314
323
  // Main entry point
315
324
  export { main } from "./main.js";
package/pkg/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glittercowboy/gsd",
3
- "version": "2.68.0",
3
+ "version": "2.68.1",
4
4
  "piConfig": {
5
5
  "name": "gsd",
6
6
  "configDir": ".gsd"
@@ -5,12 +5,13 @@
5
5
  */
6
6
 
7
7
  import type { Api, Model } from "@gsd/pi-ai";
8
+ import { getProviderCapabilities } from "@gsd/pi-ai";
8
9
  import type { ExtensionAPI, ExtensionContext } from "@gsd/pi-coding-agent";
9
10
  import type { GSDPreferences } from "./preferences.js";
10
11
  import { resolveModelWithFallbacksForUnit, resolveDynamicRoutingConfig } from "./preferences.js";
11
12
  import type { ComplexityTier } from "./complexity-classifier.js";
12
13
  import { classifyUnitComplexity, tierLabel } from "./complexity-classifier.js";
13
- import { resolveModelForComplexity, escalateTier, getEligibleModels, loadCapabilityOverrides } from "./model-router.js";
14
+ import { resolveModelForComplexity, escalateTier, getEligibleModels, loadCapabilityOverrides, adjustToolSet, filterToolsForProvider } from "./model-router.js";
14
15
  import { getLedger, getProjectTotals } from "./metrics.js";
15
16
  import { unitPhaseLabel } from "./auto-dashboard.js";
16
17
 
@@ -132,9 +133,7 @@ export async function selectAndApplyModel(
132
133
  }
133
134
 
134
135
  // Load user capability overrides from preferences (D-17: deep-merged with built-in profiles)
135
- const capabilityOverrides = loadCapabilityOverrides(
136
- (prefs as { modelOverrides?: Record<string, { capabilities?: Record<string, number> }> } | undefined) ?? {},
137
- );
136
+ const capabilityOverrides = loadCapabilityOverrides(prefs ?? {});
138
137
 
139
138
  // Fire before_model_select hook (ADR-004, D-03)
140
139
  // Hook can override model selection entirely by returning { modelId }
@@ -246,12 +245,45 @@ export async function selectAndApplyModel(
246
245
  const ok = await pi.setModel(model, { persist: false });
247
246
  if (ok) {
248
247
  appliedModel = model;
248
+
249
+ // ADR-005: Adjust active tool set for the selected model's provider capabilities.
250
+ // Hard-filter incompatible tools, then let extensions override via adjust_tool_set hook.
251
+ const activeToolNames = pi.getActiveTools();
252
+ const { toolNames: compatibleTools, removedTools } = adjustToolSet(activeToolNames, model.api);
253
+ let finalToolNames = compatibleTools;
254
+
255
+ // Fire adjust_tool_set hook — extensions can override the filtered tool set
256
+ if (routingConfig.hooks !== false) {
257
+ const hookResult = await pi.emitAdjustToolSet({
258
+ selectedModelApi: model.api,
259
+ selectedModelProvider: model.provider,
260
+ selectedModelId: model.id,
261
+ activeToolNames,
262
+ filteredTools: removedTools,
263
+ });
264
+ if (hookResult?.toolNames) {
265
+ finalToolNames = hookResult.toolNames;
266
+ }
267
+ }
268
+
269
+ // Apply the filtered tool set if any tools were removed
270
+ if (removedTools.length > 0 || finalToolNames.length !== activeToolNames.length) {
271
+ pi.setActiveTools(finalToolNames);
272
+ }
273
+
249
274
  if (verbose) {
250
275
  const fallbackNote = modelId === effectiveModelConfig.primary
251
276
  ? ""
252
277
  : ` (fallback from ${effectiveModelConfig.primary})`;
253
278
  const phase = unitPhaseLabel(unitType);
254
279
  ctx.ui.notify(`Model [${phase}]${routingTierLabel}: ${model.provider}/${model.id}${fallbackNote}`, "info");
280
+ // ADR-005: Report tools filtered due to provider incompatibility
281
+ if (removedTools.length > 0) {
282
+ ctx.ui.notify(
283
+ `Tool compatibility: ${removedTools.length} tools filtered for ${model.api} — ${removedTools.join(", ")}`,
284
+ "info",
285
+ );
286
+ }
255
287
  }
256
288
  break;
257
289
  } else {
@@ -125,8 +125,9 @@ import {
125
125
  } from "./metrics.js";
126
126
  import { setLogBasePath, logWarning, logError } from "./workflow-logger.js";
127
127
  import { homedir } from "node:os";
128
- import { join } from "node:path";
128
+ import { join, dirname } from "node:path";
129
129
  import { readFileSync, existsSync, mkdirSync, writeFileSync, unlinkSync } from "node:fs";
130
+ import { createRequire } from "node:module";
130
131
  import { atomicWriteSync } from "./atomic-write.js";
131
132
  import {
132
133
  autoCommitCurrentBranch,
@@ -1334,7 +1335,12 @@ export async function startAuto(
1334
1335
  // Re-sync managed resources on resume so long-lived auto sessions pick up
1335
1336
  // bundled extension updates before resume-time verification/state logic runs.
1336
1337
  const agentDir = process.env.GSD_CODING_AGENT_DIR || join(process.env.GSD_HOME || homedir(), ".gsd", "agent");
1337
- const { initResources } = await import("../../../" + "resource-loader.js");
1338
+ // Resolve resource-loader from the gsd-pi package root — the relative
1339
+ // "../../../resource-loader.js" path only works from the source tree but
1340
+ // breaks when extensions are deployed to ~/.gsd/agent/extensions/gsd/.
1341
+ const _req = createRequire(import.meta.url);
1342
+ const pkgRoot = dirname(_req.resolve("gsd-pi/package.json"));
1343
+ const { initResources } = await import(join(pkgRoot, "dist", "resource-loader.js"));
1338
1344
  initResources(agentDir);
1339
1345
  // Open the project DB before rebuild/derive so resume uses DB-backed
1340
1346
  // state instead of falling back to stale markdown parsing (#2940).
@@ -446,4 +446,12 @@ export function registerHooks(pi: ExtensionAPI): void {
446
446
  // Default: no override — let capability scoring handle selection
447
447
  return undefined;
448
448
  });
449
+
450
+ // Tool set adaptation hook (ADR-005 Phase 4)
451
+ // Extensions can override tool set after model selection by returning { toolNames: [...] }
452
+ // Return undefined to let the built-in provider compatibility filtering proceed.
453
+ pi.on("adjust_tool_set", async (_event) => {
454
+ // Default: no override — let provider capability filtering handle tool set
455
+ return undefined;
456
+ });
449
457
  }
@@ -47,13 +47,9 @@ let pendingGateId: string | null = null;
47
47
 
48
48
  /**
49
49
  * Recognized gate question ID patterns.
50
- * These appear in both discuss-prepared.md (4-layer) and discuss.md (depth/requirements/roadmap).
50
+ * These appear in discuss.md (depth/requirements/roadmap).
51
51
  */
52
52
  const GATE_QUESTION_PATTERNS = [
53
- "layer1_scope_gate",
54
- "layer2_architecture_gate",
55
- "layer3_error_gate",
56
- "layer4_quality_gate",
57
53
  "depth_verification",
58
54
  ] as const;
59
55
 
@@ -71,13 +71,23 @@ interface EnumeratedFiles {
71
71
  // ─── Defaults ────────────────────────────────────────────────────────────────
72
72
 
73
73
  const DEFAULT_EXCLUDES = [
74
+ // ── AI / tooling meta ──
75
+ ".agents/",
74
76
  ".gsd/",
75
77
  ".planning/",
76
78
  ".plans/",
77
79
  ".claude/",
78
80
  ".cursor/",
81
+ ".bg-shell/",
82
+
83
+ // ── Editor / IDE ──
79
84
  ".vscode/",
85
+ ".idea/",
86
+
87
+ // ── VCS ──
80
88
  ".git/",
89
+
90
+ // ── Dependencies & build artifacts ──
81
91
  "node_modules/",
82
92
  "dist/",
83
93
  "build/",
@@ -85,7 +95,13 @@ const DEFAULT_EXCLUDES = [
85
95
  "coverage/",
86
96
  "__pycache__/",
87
97
  ".venv/",
98
+ "venv/",
88
99
  "vendor/",
100
+ "target/",
101
+
102
+ // ── Misc ──
103
+ ".cache/",
104
+ "tmp/",
89
105
  ];
90
106
 
91
107
  const DEFAULT_MAX_FILES = 500;