gsd-pi 2.54.0 → 2.56.0-dev.603f970

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 (1486) hide show
  1. package/dist/cli.js +19 -19
  2. package/dist/headless-events.d.ts +2 -0
  3. package/dist/headless-events.js +3 -0
  4. package/dist/headless-ui.d.ts +27 -1
  5. package/dist/headless-ui.js +203 -13
  6. package/dist/headless.js +62 -7
  7. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +2 -2
  8. package/dist/resources/extensions/bg-shell/utilities.js +34 -5
  9. package/dist/resources/extensions/gsd/auto/phases.js +22 -3
  10. package/dist/resources/extensions/gsd/auto/run-unit.js +6 -0
  11. package/dist/resources/extensions/gsd/auto/session.js +2 -0
  12. package/dist/resources/extensions/gsd/auto-artifact-paths.js +6 -0
  13. package/dist/resources/extensions/gsd/auto-dashboard.js +5 -2
  14. package/dist/resources/extensions/gsd/auto-dispatch.js +1 -1
  15. package/dist/resources/extensions/gsd/auto-model-selection.js +28 -4
  16. package/dist/resources/extensions/gsd/auto-post-unit.js +1 -1
  17. package/dist/resources/extensions/gsd/auto-prompts.js +9 -0
  18. package/dist/resources/extensions/gsd/auto-start.js +31 -11
  19. package/dist/resources/extensions/gsd/auto-worktree.js +39 -14
  20. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +5 -1
  21. package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +18 -0
  22. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +18 -5
  23. package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +20 -0
  24. package/dist/resources/extensions/gsd/commands/catalog.js +2 -1
  25. package/dist/resources/extensions/gsd/commands/handlers/parallel.js +15 -1
  26. package/dist/resources/extensions/gsd/complexity-classifier.js +1 -0
  27. package/dist/resources/extensions/gsd/crash-recovery.js +2 -2
  28. package/dist/resources/extensions/gsd/dashboard-overlay.js +2 -0
  29. package/dist/resources/extensions/gsd/docs/preferences-reference.md +4 -2
  30. package/dist/resources/extensions/gsd/guided-flow.js +17 -16
  31. package/dist/resources/extensions/gsd/metrics.js +4 -1
  32. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +413 -0
  33. package/dist/resources/extensions/gsd/parallel-orchestrator.js +5 -1
  34. package/dist/resources/extensions/gsd/preferences-models.js +12 -0
  35. package/dist/resources/extensions/gsd/roadmap-slices.js +1 -0
  36. package/dist/resources/extensions/gsd/session-lock.js +46 -12
  37. package/dist/resources/extensions/gsd/skill-health.js +2 -2
  38. package/dist/resources/extensions/gsd/visualizer-overlay.js +3 -3
  39. package/dist/resources/extensions/shared/format-utils.js +1 -1
  40. package/dist/resources/extensions/subagent/agents.js +8 -3
  41. package/dist/resources/extensions/subagent/worker-registry.js +2 -1
  42. package/dist/web/standalone/.next/BUILD_ID +1 -1
  43. package/dist/web/standalone/.next/app-path-routes-manifest.json +20 -20
  44. package/dist/web/standalone/.next/build-manifest.json +4 -4
  45. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  46. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  47. package/dist/web/standalone/.next/required-server-files.json +3 -3
  48. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  49. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  50. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  51. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  52. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  56. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  57. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  58. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  59. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  60. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  61. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  62. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  63. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  64. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  65. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  66. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  67. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  68. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  70. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  71. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  72. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  73. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  74. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  75. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  76. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  77. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  79. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  80. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  82. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  85. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  87. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  88. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  90. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  91. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  94. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  97. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  109. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  115. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  121. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  127. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  135. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  137. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  139. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  141. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  150. package/dist/web/standalone/.next/server/app/index.html +1 -1
  151. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  152. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  153. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  154. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  155. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  156. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  157. package/dist/web/standalone/.next/server/app/page.js +2 -2
  158. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  159. package/dist/web/standalone/.next/server/app-paths-manifest.json +20 -20
  160. package/dist/web/standalone/.next/server/chunks/2229.js +3 -3
  161. package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
  162. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  163. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/middleware.js +2 -2
  165. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  166. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  167. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  168. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  169. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  170. package/dist/web/standalone/.next/static/chunks/6502.2305d0afd2385711.js +9 -0
  171. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  172. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  173. package/dist/web/standalone/.next/static/chunks/app/page-0c485498795110d6.js +1 -0
  174. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  175. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  176. package/dist/web/standalone/.next/static/chunks/{webpack-bca0e732db0dcec3.js → webpack-4332cbd5dd1be584.js} +1 -1
  177. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  178. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  179. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  180. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  181. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  182. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  183. package/dist/web/standalone/server.js +1 -1
  184. package/package.json +6 -4
  185. package/packages/daemon/node_modules/@anthropic-ai/sdk/CHANGELOG.md +1677 -0
  186. package/packages/daemon/node_modules/@anthropic-ai/sdk/LICENSE +8 -0
  187. package/packages/daemon/node_modules/@anthropic-ai/sdk/README.md +674 -0
  188. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts +3 -0
  189. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts.map +1 -0
  190. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts +3 -0
  191. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts.map +1 -0
  192. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js +226 -0
  193. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js.map +1 -0
  194. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs +223 -0
  195. package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs.map +1 -0
  196. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.mts +2 -0
  197. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.mts.map +1 -0
  198. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.ts +2 -0
  199. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.ts.map +1 -0
  200. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.js +6 -0
  201. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.js.map +1 -0
  202. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.mjs +2 -0
  203. package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.mjs.map +1 -0
  204. package/packages/daemon/node_modules/@anthropic-ai/sdk/bin/cli +53 -0
  205. package/packages/daemon/node_modules/@anthropic-ai/sdk/bin/migration-config.json +7 -0
  206. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.mts +225 -0
  207. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.mts.map +1 -0
  208. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.ts +225 -0
  209. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.ts.map +1 -0
  210. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.js +536 -0
  211. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.js.map +1 -0
  212. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.mjs +531 -0
  213. package/packages/daemon/node_modules/@anthropic-ai/sdk/client.mjs.map +1 -0
  214. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts +49 -0
  215. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts.map +1 -0
  216. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts +49 -0
  217. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts.map +1 -0
  218. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.js +76 -0
  219. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.js.map +1 -0
  220. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.mjs +72 -0
  221. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.mjs.map +1 -0
  222. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.mts +47 -0
  223. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.mts.map +1 -0
  224. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.ts +47 -0
  225. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.ts.map +1 -0
  226. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.js +114 -0
  227. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.js.map +1 -0
  228. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.mjs +98 -0
  229. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.mjs.map +1 -0
  230. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.mts +63 -0
  231. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.mts.map +1 -0
  232. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.ts +63 -0
  233. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.ts.map +1 -0
  234. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.js +123 -0
  235. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.js.map +1 -0
  236. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.mjs +117 -0
  237. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.mjs.map +1 -0
  238. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.mts +6 -0
  239. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.mts.map +1 -0
  240. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.ts +6 -0
  241. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.ts.map +1 -0
  242. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.js +11 -0
  243. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.js.map +1 -0
  244. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.mjs +7 -0
  245. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.mjs.map +1 -0
  246. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.mts +31 -0
  247. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.mts.map +1 -0
  248. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.ts +31 -0
  249. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.ts.map +1 -0
  250. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.js +282 -0
  251. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.js.map +1 -0
  252. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.mjs +277 -0
  253. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.mjs.map +1 -0
  254. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.mts +3 -0
  255. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.mts.map +1 -0
  256. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.ts +3 -0
  257. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.ts.map +1 -0
  258. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.js +6 -0
  259. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.js.map +1 -0
  260. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.mjs +2 -0
  261. package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.mjs.map +1 -0
  262. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.mts +2 -0
  263. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.mts.map +1 -0
  264. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.ts +2 -0
  265. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.ts.map +1 -0
  266. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.js +6 -0
  267. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.js.map +1 -0
  268. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.mjs +2 -0
  269. package/packages/daemon/node_modules/@anthropic-ai/sdk/error.mjs.map +1 -0
  270. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.mts +7 -0
  271. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.mts.map +1 -0
  272. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.ts +7 -0
  273. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.ts.map +1 -0
  274. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.js +35 -0
  275. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.js.map +1 -0
  276. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.mjs +8 -0
  277. package/packages/daemon/node_modules/@anthropic-ai/sdk/index.mjs.map +1 -0
  278. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts +73 -0
  279. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts.map +1 -0
  280. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts +73 -0
  281. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts.map +1 -0
  282. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.js +4 -0
  283. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.js.map +1 -0
  284. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs +3 -0
  285. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs.map +1 -0
  286. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.mts +5 -0
  287. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.mts.map +1 -0
  288. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.ts +5 -0
  289. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.ts.map +1 -0
  290. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.js +15 -0
  291. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.js.map +1 -0
  292. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.mjs +12 -0
  293. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.mjs.map +1 -0
  294. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts +10 -0
  295. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts.map +1 -0
  296. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts +10 -0
  297. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts.map +1 -0
  298. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js +39 -0
  299. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js.map +1 -0
  300. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs +35 -0
  301. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs.map +1 -0
  302. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts +17 -0
  303. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts.map +1 -0
  304. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts +17 -0
  305. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts.map +1 -0
  306. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.js +113 -0
  307. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.js.map +1 -0
  308. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs +108 -0
  309. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs.map +1 -0
  310. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts +15 -0
  311. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts.map +1 -0
  312. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts +15 -0
  313. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts.map +1 -0
  314. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +162 -0
  315. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -0
  316. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +157 -0
  317. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -0
  318. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.mts +3 -0
  319. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -0
  320. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.ts +3 -0
  321. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -0
  322. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.js +41 -0
  323. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -0
  324. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.mjs +36 -0
  325. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -0
  326. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.mts +22 -0
  327. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.mts.map +1 -0
  328. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.ts +22 -0
  329. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.ts.map +1 -0
  330. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.js +79 -0
  331. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.js.map +1 -0
  332. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.mjs +74 -0
  333. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.mjs.map +1 -0
  334. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.mts +17 -0
  335. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.mts.map +1 -0
  336. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.ts +17 -0
  337. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.ts.map +1 -0
  338. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.js +55 -0
  339. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -0
  340. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.mjs +51 -0
  341. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -0
  342. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts +34 -0
  343. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts.map +1 -0
  344. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts +34 -0
  345. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts.map +1 -0
  346. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.js +14 -0
  347. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.js.map +1 -0
  348. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.mjs +10 -0
  349. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.mjs.map +1 -0
  350. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts +28 -0
  351. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shim-types.d.ts +28 -0
  352. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.mts +20 -0
  353. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.mts.map +1 -0
  354. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.ts +20 -0
  355. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.ts.map +1 -0
  356. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.js +92 -0
  357. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.js.map +1 -0
  358. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.mjs +85 -0
  359. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.mjs.map +1 -0
  360. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts +8 -0
  361. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts.map +1 -0
  362. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts +8 -0
  363. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts.map +1 -0
  364. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.js +38 -0
  365. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.js.map +1 -0
  366. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs +35 -0
  367. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs.map +1 -0
  368. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts +45 -0
  369. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts.map +1 -0
  370. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts +45 -0
  371. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts.map +1 -0
  372. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.js +96 -0
  373. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.js.map +1 -0
  374. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.mjs +93 -0
  375. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.mjs.map +1 -0
  376. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/tslib.js +81 -0
  377. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/tslib.mjs +17 -0
  378. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.mts +67 -0
  379. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.mts.map +1 -0
  380. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.ts +67 -0
  381. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.ts.map +1 -0
  382. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.js +4 -0
  383. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.js.map +1 -0
  384. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.mjs +3 -0
  385. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.mjs.map +1 -0
  386. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts +42 -0
  387. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts.map +1 -0
  388. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts +42 -0
  389. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts.map +1 -0
  390. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.js +146 -0
  391. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -0
  392. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +136 -0
  393. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -0
  394. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts +3 -0
  395. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts.map +1 -0
  396. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts +3 -0
  397. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts.map +1 -0
  398. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.js +38 -0
  399. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.js.map +1 -0
  400. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs +33 -0
  401. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs.map +1 -0
  402. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts +4 -0
  403. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts.map +1 -0
  404. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts +4 -0
  405. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts.map +1 -0
  406. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js +31 -0
  407. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js.map +1 -0
  408. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs +26 -0
  409. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs.map +1 -0
  410. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts +9 -0
  411. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts.map +1 -0
  412. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts +9 -0
  413. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts.map +1 -0
  414. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.js +22 -0
  415. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.js.map +1 -0
  416. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs +18 -0
  417. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs.map +1 -0
  418. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts +37 -0
  419. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts.map +1 -0
  420. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts +37 -0
  421. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts.map +1 -0
  422. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.js +86 -0
  423. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.js.map +1 -0
  424. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs +80 -0
  425. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs.map +1 -0
  426. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts +15 -0
  427. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts.map +1 -0
  428. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts +15 -0
  429. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts.map +1 -0
  430. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.js +58 -0
  431. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.js.map +1 -0
  432. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs +53 -0
  433. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs.map +1 -0
  434. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts +2 -0
  435. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts.map +1 -0
  436. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts +2 -0
  437. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts.map +1 -0
  438. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js +7 -0
  439. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js.map +1 -0
  440. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs +3 -0
  441. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs.map +1 -0
  442. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts +5 -0
  443. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts.map +1 -0
  444. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts +5 -0
  445. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts.map +1 -0
  446. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js +19 -0
  447. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js.map +1 -0
  448. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs +15 -0
  449. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs.map +1 -0
  450. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +16 -0
  451. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -0
  452. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +16 -0
  453. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -0
  454. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.js +109 -0
  455. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -0
  456. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +92 -0
  457. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -0
  458. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.mts +7 -0
  459. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.mts.map +1 -0
  460. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.ts +7 -0
  461. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.ts.map +1 -0
  462. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.js +11 -0
  463. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.js.map +1 -0
  464. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.mjs +8 -0
  465. package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.mjs.map +1 -0
  466. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts +114 -0
  467. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -0
  468. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts +114 -0
  469. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -0
  470. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +553 -0
  471. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -0
  472. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +549 -0
  473. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -0
  474. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts +114 -0
  475. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -0
  476. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts +114 -0
  477. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -0
  478. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +553 -0
  479. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -0
  480. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +549 -0
  481. package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -0
  482. package/packages/daemon/node_modules/@anthropic-ai/sdk/package.json +185 -0
  483. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.mts +2 -0
  484. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.mts.map +1 -0
  485. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.ts +2 -0
  486. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.ts.map +1 -0
  487. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.js +6 -0
  488. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.js.map +1 -0
  489. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.mjs +2 -0
  490. package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.mjs.map +1 -0
  491. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.mts +2 -0
  492. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.mts.map +1 -0
  493. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.ts +2 -0
  494. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.ts.map +1 -0
  495. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.js +6 -0
  496. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.js.map +1 -0
  497. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.mjs +2 -0
  498. package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.mjs.map +1 -0
  499. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +61 -0
  500. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -0
  501. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +61 -0
  502. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -0
  503. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +25 -0
  504. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -0
  505. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +20 -0
  506. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -0
  507. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +151 -0
  508. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -0
  509. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +151 -0
  510. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -0
  511. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.js +122 -0
  512. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -0
  513. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +118 -0
  514. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -0
  515. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -0
  516. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -0
  517. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -0
  518. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -0
  519. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.js +13 -0
  520. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -0
  521. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +6 -0
  522. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -0
  523. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts +343 -0
  524. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts.map +1 -0
  525. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts +343 -0
  526. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts.map +1 -0
  527. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js +204 -0
  528. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js.map +1 -0
  529. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs +200 -0
  530. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs.map +1 -0
  531. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +3 -0
  532. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -0
  533. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +3 -0
  534. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -0
  535. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js +9 -0
  536. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -0
  537. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs +4 -0
  538. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -0
  539. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +1561 -0
  540. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -0
  541. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +1561 -0
  542. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -0
  543. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js +86 -0
  544. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -0
  545. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs +81 -0
  546. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -0
  547. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts +2 -0
  548. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts.map +1 -0
  549. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts +2 -0
  550. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts.map +1 -0
  551. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.js +6 -0
  552. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.js.map +1 -0
  553. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs +3 -0
  554. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs.map +1 -0
  555. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts +74 -0
  556. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts.map +1 -0
  557. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts +74 -0
  558. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts.map +1 -0
  559. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.js +60 -0
  560. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.js.map +1 -0
  561. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs +56 -0
  562. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs.map +1 -0
  563. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.mts +2 -0
  564. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.mts.map +1 -0
  565. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.ts +2 -0
  566. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.ts.map +1 -0
  567. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.js +6 -0
  568. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.js.map +1 -0
  569. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.mjs +3 -0
  570. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.mjs.map +1 -0
  571. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.mts +183 -0
  572. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.mts.map +1 -0
  573. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.ts +183 -0
  574. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.ts.map +1 -0
  575. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.js +23 -0
  576. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.js.map +1 -0
  577. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.mjs +19 -0
  578. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.mjs.map +1 -0
  579. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.mts +6 -0
  580. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.mts.map +1 -0
  581. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.ts +6 -0
  582. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.ts.map +1 -0
  583. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.js +15 -0
  584. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.js.map +1 -0
  585. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.mjs +7 -0
  586. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.mjs.map +1 -0
  587. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts +304 -0
  588. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts.map +1 -0
  589. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts +304 -0
  590. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts.map +1 -0
  591. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.js +153 -0
  592. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.js.map +1 -0
  593. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs +149 -0
  594. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs.map +1 -0
  595. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts +3 -0
  596. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts.map +1 -0
  597. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts +3 -0
  598. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts.map +1 -0
  599. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.js +9 -0
  600. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.js.map +1 -0
  601. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs +4 -0
  602. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs.map +1 -0
  603. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1264 -0
  604. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -0
  605. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1264 -0
  606. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -0
  607. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.js +72 -0
  608. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -0
  609. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs +67 -0
  610. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -0
  611. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.mts +2 -0
  612. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.mts.map +1 -0
  613. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.ts +2 -0
  614. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.ts.map +1 -0
  615. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.js +6 -0
  616. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.js.map +1 -0
  617. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.mjs +3 -0
  618. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.mjs.map +1 -0
  619. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.mts +59 -0
  620. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.mts.map +1 -0
  621. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.ts +59 -0
  622. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.ts.map +1 -0
  623. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.js +45 -0
  624. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.js.map +1 -0
  625. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.mjs +41 -0
  626. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.mjs.map +1 -0
  627. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.mts +42 -0
  628. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.mts.map +1 -0
  629. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.ts +42 -0
  630. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.ts.map +1 -0
  631. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.js +4 -0
  632. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.js.map +1 -0
  633. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.mjs +3 -0
  634. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.mjs.map +1 -0
  635. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts +2 -0
  636. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts.map +1 -0
  637. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts +2 -0
  638. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts.map +1 -0
  639. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.js +4 -0
  640. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.js.map +1 -0
  641. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.mjs +3 -0
  642. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.mjs.map +1 -0
  643. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.mts +2 -0
  644. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.mts.map +1 -0
  645. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.ts +2 -0
  646. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.ts.map +1 -0
  647. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.js +5 -0
  648. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.js.map +1 -0
  649. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.mjs +2 -0
  650. package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.mjs.map +1 -0
  651. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/README.md +3 -0
  652. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts +264 -0
  653. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/api-promise.ts +2 -0
  654. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/client.ts +1070 -0
  655. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/README.md +3 -0
  656. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/api-promise.ts +101 -0
  657. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/error.ts +133 -0
  658. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/pagination.ts +201 -0
  659. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/resource.ts +11 -0
  660. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/streaming.ts +331 -0
  661. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/uploads.ts +2 -0
  662. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/error.ts +2 -0
  663. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/index.ts +23 -0
  664. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/README.md +3 -0
  665. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/builtin-types.ts +93 -0
  666. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/constants.ts +12 -0
  667. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts +48 -0
  668. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts +135 -0
  669. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +196 -0
  670. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +33 -0
  671. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/headers.ts +99 -0
  672. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +84 -0
  673. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/request-options.ts +39 -0
  674. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/shim-types.d.ts +28 -0
  675. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/shims.ts +107 -0
  676. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/stream-utils.ts +32 -0
  677. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/to-file.ts +159 -0
  678. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/types.ts +92 -0
  679. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +193 -0
  680. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/base64.ts +40 -0
  681. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts +32 -0
  682. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts +18 -0
  683. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts +127 -0
  684. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts +65 -0
  685. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts +3 -0
  686. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts +17 -0
  687. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +102 -0
  688. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils.ts +8 -0
  689. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/.keep +4 -0
  690. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +683 -0
  691. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +684 -0
  692. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/pagination.ts +2 -0
  693. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resource.ts +2 -0
  694. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +380 -0
  695. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +258 -0
  696. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +148 -0
  697. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts +502 -0
  698. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +135 -0
  699. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +2249 -0
  700. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages.ts +3 -0
  701. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts +118 -0
  702. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta.ts +3 -0
  703. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/completions.ts +231 -0
  704. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/index.ts +121 -0
  705. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts +396 -0
  706. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/index.ts +110 -0
  707. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +1783 -0
  708. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages.ts +3 -0
  709. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/models.ts +103 -0
  710. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/shared.ts +72 -0
  711. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/top-level.ts +3 -0
  712. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources.ts +1 -0
  713. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/streaming.ts +2 -0
  714. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/tsconfig.json +11 -0
  715. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/uploads.ts +2 -0
  716. package/packages/daemon/node_modules/@anthropic-ai/sdk/src/version.ts +1 -0
  717. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.mts +2 -0
  718. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.mts.map +1 -0
  719. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.ts +2 -0
  720. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.ts.map +1 -0
  721. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.js +6 -0
  722. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.js.map +1 -0
  723. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.mjs +2 -0
  724. package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.mjs.map +1 -0
  725. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.mts +2 -0
  726. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.mts.map +1 -0
  727. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.ts +2 -0
  728. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.ts.map +1 -0
  729. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.js +6 -0
  730. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.js.map +1 -0
  731. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.mjs +2 -0
  732. package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.mjs.map +1 -0
  733. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.mts +2 -0
  734. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.mts.map +1 -0
  735. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.ts +2 -0
  736. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.ts.map +1 -0
  737. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.js +5 -0
  738. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.js.map +1 -0
  739. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.mjs +2 -0
  740. package/packages/daemon/node_modules/@anthropic-ai/sdk/version.mjs.map +1 -0
  741. package/packages/daemon/node_modules/zod/LICENSE +21 -0
  742. package/packages/daemon/node_modules/zod/README.md +208 -0
  743. package/packages/daemon/node_modules/zod/index.cjs +33 -0
  744. package/packages/daemon/node_modules/zod/index.d.cts +4 -0
  745. package/packages/daemon/node_modules/zod/index.d.ts +4 -0
  746. package/packages/daemon/node_modules/zod/index.js +4 -0
  747. package/packages/daemon/node_modules/zod/package.json +118 -0
  748. package/packages/daemon/node_modules/zod/src/index.ts +4 -0
  749. package/packages/daemon/node_modules/zod/src/v3/ZodError.ts +330 -0
  750. package/packages/daemon/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  751. package/packages/daemon/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  752. package/packages/daemon/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  753. package/packages/daemon/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  754. package/packages/daemon/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  755. package/packages/daemon/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  756. package/packages/daemon/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  757. package/packages/daemon/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  758. package/packages/daemon/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  759. package/packages/daemon/node_modules/zod/src/v3/errors.ts +13 -0
  760. package/packages/daemon/node_modules/zod/src/v3/external.ts +6 -0
  761. package/packages/daemon/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  762. package/packages/daemon/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  763. package/packages/daemon/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  764. package/packages/daemon/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  765. package/packages/daemon/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  766. package/packages/daemon/node_modules/zod/src/v3/helpers/util.ts +224 -0
  767. package/packages/daemon/node_modules/zod/src/v3/index.ts +4 -0
  768. package/packages/daemon/node_modules/zod/src/v3/locales/en.ts +124 -0
  769. package/packages/daemon/node_modules/zod/src/v3/standard-schema.ts +113 -0
  770. package/packages/daemon/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  771. package/packages/daemon/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  772. package/packages/daemon/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  773. package/packages/daemon/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  774. package/packages/daemon/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  775. package/packages/daemon/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  776. package/packages/daemon/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  777. package/packages/daemon/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  778. package/packages/daemon/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  779. package/packages/daemon/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  780. package/packages/daemon/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  781. package/packages/daemon/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
  782. package/packages/daemon/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  783. package/packages/daemon/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  784. package/packages/daemon/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  785. package/packages/daemon/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  786. package/packages/daemon/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  787. package/packages/daemon/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  788. package/packages/daemon/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  789. package/packages/daemon/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  790. package/packages/daemon/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  791. package/packages/daemon/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  792. package/packages/daemon/node_modules/zod/src/v3/tests/function.test.ts +257 -0
  793. package/packages/daemon/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  794. package/packages/daemon/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  795. package/packages/daemon/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  796. package/packages/daemon/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  797. package/packages/daemon/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  798. package/packages/daemon/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  799. package/packages/daemon/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  800. package/packages/daemon/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  801. package/packages/daemon/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  802. package/packages/daemon/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
  803. package/packages/daemon/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  804. package/packages/daemon/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  805. package/packages/daemon/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  806. package/packages/daemon/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  807. package/packages/daemon/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  808. package/packages/daemon/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  809. package/packages/daemon/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  810. package/packages/daemon/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  811. package/packages/daemon/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  812. package/packages/daemon/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  813. package/packages/daemon/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  814. package/packages/daemon/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  815. package/packages/daemon/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  816. package/packages/daemon/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  817. package/packages/daemon/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  818. package/packages/daemon/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  819. package/packages/daemon/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  820. package/packages/daemon/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  821. package/packages/daemon/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  822. package/packages/daemon/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  823. package/packages/daemon/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  824. package/packages/daemon/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  825. package/packages/daemon/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  826. package/packages/daemon/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  827. package/packages/daemon/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  828. package/packages/daemon/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  829. package/packages/daemon/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  830. package/packages/daemon/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  831. package/packages/daemon/node_modules/zod/src/v3/types.ts +5136 -0
  832. package/packages/daemon/node_modules/zod/src/v4/classic/checks.ts +30 -0
  833. package/packages/daemon/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  834. package/packages/daemon/node_modules/zod/src/v4/classic/compat.ts +66 -0
  835. package/packages/daemon/node_modules/zod/src/v4/classic/errors.ts +75 -0
  836. package/packages/daemon/node_modules/zod/src/v4/classic/external.ts +50 -0
  837. package/packages/daemon/node_modules/zod/src/v4/classic/index.ts +5 -0
  838. package/packages/daemon/node_modules/zod/src/v4/classic/iso.ts +90 -0
  839. package/packages/daemon/node_modules/zod/src/v4/classic/parse.ts +33 -0
  840. package/packages/daemon/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
  841. package/packages/daemon/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  842. package/packages/daemon/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  843. package/packages/daemon/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  844. package/packages/daemon/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  845. package/packages/daemon/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  846. package/packages/daemon/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  847. package/packages/daemon/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  848. package/packages/daemon/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
  849. package/packages/daemon/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
  850. package/packages/daemon/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  851. package/packages/daemon/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  852. package/packages/daemon/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
  853. package/packages/daemon/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  854. package/packages/daemon/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
  855. package/packages/daemon/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
  856. package/packages/daemon/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
  857. package/packages/daemon/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  858. package/packages/daemon/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
  859. package/packages/daemon/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  860. package/packages/daemon/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
  861. package/packages/daemon/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  862. package/packages/daemon/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
  863. package/packages/daemon/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
  864. package/packages/daemon/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
  865. package/packages/daemon/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  866. package/packages/daemon/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
  867. package/packages/daemon/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
  868. package/packages/daemon/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
  869. package/packages/daemon/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
  870. package/packages/daemon/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  871. package/packages/daemon/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
  872. package/packages/daemon/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
  873. package/packages/daemon/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  874. package/packages/daemon/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  875. package/packages/daemon/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
  876. package/packages/daemon/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  877. package/packages/daemon/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
  878. package/packages/daemon/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
  879. package/packages/daemon/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
  880. package/packages/daemon/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
  881. package/packages/daemon/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
  882. package/packages/daemon/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
  883. package/packages/daemon/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
  884. package/packages/daemon/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
  885. package/packages/daemon/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  886. package/packages/daemon/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  887. package/packages/daemon/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  888. package/packages/daemon/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  889. package/packages/daemon/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
  890. package/packages/daemon/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
  891. package/packages/daemon/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
  892. package/packages/daemon/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
  893. package/packages/daemon/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
  894. package/packages/daemon/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
  895. package/packages/daemon/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
  896. package/packages/daemon/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
  897. package/packages/daemon/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
  898. package/packages/daemon/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
  899. package/packages/daemon/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
  900. package/packages/daemon/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
  901. package/packages/daemon/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
  902. package/packages/daemon/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
  903. package/packages/daemon/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  904. package/packages/daemon/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  905. package/packages/daemon/node_modules/zod/src/v4/core/api.ts +1594 -0
  906. package/packages/daemon/node_modules/zod/src/v4/core/checks.ts +1283 -0
  907. package/packages/daemon/node_modules/zod/src/v4/core/config.ts +15 -0
  908. package/packages/daemon/node_modules/zod/src/v4/core/core.ts +134 -0
  909. package/packages/daemon/node_modules/zod/src/v4/core/doc.ts +44 -0
  910. package/packages/daemon/node_modules/zod/src/v4/core/errors.ts +424 -0
  911. package/packages/daemon/node_modules/zod/src/v4/core/function.ts +176 -0
  912. package/packages/daemon/node_modules/zod/src/v4/core/index.ts +15 -0
  913. package/packages/daemon/node_modules/zod/src/v4/core/json-schema.ts +143 -0
  914. package/packages/daemon/node_modules/zod/src/v4/core/parse.ts +94 -0
  915. package/packages/daemon/node_modules/zod/src/v4/core/regexes.ts +135 -0
  916. package/packages/daemon/node_modules/zod/src/v4/core/registries.ts +96 -0
  917. package/packages/daemon/node_modules/zod/src/v4/core/schemas.ts +3842 -0
  918. package/packages/daemon/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
  919. package/packages/daemon/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  920. package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  921. package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  922. package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  923. package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  924. package/packages/daemon/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
  925. package/packages/daemon/node_modules/zod/src/v4/core/util.ts +775 -0
  926. package/packages/daemon/node_modules/zod/src/v4/core/versions.ts +5 -0
  927. package/packages/daemon/node_modules/zod/src/v4/core/zsf.ts +323 -0
  928. package/packages/daemon/node_modules/zod/src/v4/index.ts +4 -0
  929. package/packages/daemon/node_modules/zod/src/v4/locales/ar.ts +125 -0
  930. package/packages/daemon/node_modules/zod/src/v4/locales/az.ts +121 -0
  931. package/packages/daemon/node_modules/zod/src/v4/locales/be.ts +184 -0
  932. package/packages/daemon/node_modules/zod/src/v4/locales/ca.ts +127 -0
  933. package/packages/daemon/node_modules/zod/src/v4/locales/cs.ts +142 -0
  934. package/packages/daemon/node_modules/zod/src/v4/locales/de.ts +124 -0
  935. package/packages/daemon/node_modules/zod/src/v4/locales/en.ts +127 -0
  936. package/packages/daemon/node_modules/zod/src/v4/locales/eo.ts +125 -0
  937. package/packages/daemon/node_modules/zod/src/v4/locales/es.ts +125 -0
  938. package/packages/daemon/node_modules/zod/src/v4/locales/fa.ts +134 -0
  939. package/packages/daemon/node_modules/zod/src/v4/locales/fi.ts +131 -0
  940. package/packages/daemon/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
  941. package/packages/daemon/node_modules/zod/src/v4/locales/fr.ts +124 -0
  942. package/packages/daemon/node_modules/zod/src/v4/locales/he.ts +125 -0
  943. package/packages/daemon/node_modules/zod/src/v4/locales/hu.ts +126 -0
  944. package/packages/daemon/node_modules/zod/src/v4/locales/id.ts +125 -0
  945. package/packages/daemon/node_modules/zod/src/v4/locales/index.ts +39 -0
  946. package/packages/daemon/node_modules/zod/src/v4/locales/it.ts +125 -0
  947. package/packages/daemon/node_modules/zod/src/v4/locales/ja.ts +122 -0
  948. package/packages/daemon/node_modules/zod/src/v4/locales/kh.ts +126 -0
  949. package/packages/daemon/node_modules/zod/src/v4/locales/ko.ts +131 -0
  950. package/packages/daemon/node_modules/zod/src/v4/locales/mk.ts +127 -0
  951. package/packages/daemon/node_modules/zod/src/v4/locales/ms.ts +124 -0
  952. package/packages/daemon/node_modules/zod/src/v4/locales/nl.ts +126 -0
  953. package/packages/daemon/node_modules/zod/src/v4/locales/no.ts +124 -0
  954. package/packages/daemon/node_modules/zod/src/v4/locales/ota.ts +125 -0
  955. package/packages/daemon/node_modules/zod/src/v4/locales/pl.ts +126 -0
  956. package/packages/daemon/node_modules/zod/src/v4/locales/ps.ts +133 -0
  957. package/packages/daemon/node_modules/zod/src/v4/locales/pt.ts +123 -0
  958. package/packages/daemon/node_modules/zod/src/v4/locales/ru.ts +184 -0
  959. package/packages/daemon/node_modules/zod/src/v4/locales/sl.ts +126 -0
  960. package/packages/daemon/node_modules/zod/src/v4/locales/sv.ts +127 -0
  961. package/packages/daemon/node_modules/zod/src/v4/locales/ta.ts +125 -0
  962. package/packages/daemon/node_modules/zod/src/v4/locales/th.ts +126 -0
  963. package/packages/daemon/node_modules/zod/src/v4/locales/tr.ts +121 -0
  964. package/packages/daemon/node_modules/zod/src/v4/locales/ua.ts +126 -0
  965. package/packages/daemon/node_modules/zod/src/v4/locales/ur.ts +126 -0
  966. package/packages/daemon/node_modules/zod/src/v4/locales/vi.ts +125 -0
  967. package/packages/daemon/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
  968. package/packages/daemon/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
  969. package/packages/daemon/node_modules/zod/src/v4/mini/checks.ts +32 -0
  970. package/packages/daemon/node_modules/zod/src/v4/mini/coerce.ts +22 -0
  971. package/packages/daemon/node_modules/zod/src/v4/mini/external.ts +40 -0
  972. package/packages/daemon/node_modules/zod/src/v4/mini/index.ts +3 -0
  973. package/packages/daemon/node_modules/zod/src/v4/mini/iso.ts +62 -0
  974. package/packages/daemon/node_modules/zod/src/v4/mini/parse.ts +1 -0
  975. package/packages/daemon/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
  976. package/packages/daemon/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  977. package/packages/daemon/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
  978. package/packages/daemon/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  979. package/packages/daemon/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  980. package/packages/daemon/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  981. package/packages/daemon/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
  982. package/packages/daemon/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
  983. package/packages/daemon/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  984. package/packages/daemon/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
  985. package/packages/daemon/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  986. package/packages/daemon/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  987. package/packages/daemon/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
  988. package/packages/daemon/node_modules/zod/src/v4-mini/index.ts +1 -0
  989. package/packages/daemon/node_modules/zod/v3/ZodError.cjs +138 -0
  990. package/packages/daemon/node_modules/zod/v3/ZodError.d.cts +164 -0
  991. package/packages/daemon/node_modules/zod/v3/ZodError.d.ts +164 -0
  992. package/packages/daemon/node_modules/zod/v3/ZodError.js +133 -0
  993. package/packages/daemon/node_modules/zod/v3/errors.cjs +17 -0
  994. package/packages/daemon/node_modules/zod/v3/errors.d.cts +5 -0
  995. package/packages/daemon/node_modules/zod/v3/errors.d.ts +5 -0
  996. package/packages/daemon/node_modules/zod/v3/errors.js +9 -0
  997. package/packages/daemon/node_modules/zod/v3/external.cjs +22 -0
  998. package/packages/daemon/node_modules/zod/v3/external.d.cts +6 -0
  999. package/packages/daemon/node_modules/zod/v3/external.d.ts +6 -0
  1000. package/packages/daemon/node_modules/zod/v3/external.js +6 -0
  1001. package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  1002. package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  1003. package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  1004. package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  1005. package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  1006. package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  1007. package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  1008. package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  1009. package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  1010. package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  1011. package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  1012. package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  1013. package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  1014. package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  1015. package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  1016. package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  1017. package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  1018. package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  1019. package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  1020. package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  1021. package/packages/daemon/node_modules/zod/v3/helpers/util.cjs +137 -0
  1022. package/packages/daemon/node_modules/zod/v3/helpers/util.d.cts +85 -0
  1023. package/packages/daemon/node_modules/zod/v3/helpers/util.d.ts +85 -0
  1024. package/packages/daemon/node_modules/zod/v3/helpers/util.js +133 -0
  1025. package/packages/daemon/node_modules/zod/v3/index.cjs +33 -0
  1026. package/packages/daemon/node_modules/zod/v3/index.d.cts +4 -0
  1027. package/packages/daemon/node_modules/zod/v3/index.d.ts +4 -0
  1028. package/packages/daemon/node_modules/zod/v3/index.js +4 -0
  1029. package/packages/daemon/node_modules/zod/v3/locales/en.cjs +111 -0
  1030. package/packages/daemon/node_modules/zod/v3/locales/en.d.cts +3 -0
  1031. package/packages/daemon/node_modules/zod/v3/locales/en.d.ts +3 -0
  1032. package/packages/daemon/node_modules/zod/v3/locales/en.js +109 -0
  1033. package/packages/daemon/node_modules/zod/v3/standard-schema.cjs +2 -0
  1034. package/packages/daemon/node_modules/zod/v3/standard-schema.d.cts +102 -0
  1035. package/packages/daemon/node_modules/zod/v3/standard-schema.d.ts +102 -0
  1036. package/packages/daemon/node_modules/zod/v3/standard-schema.js +1 -0
  1037. package/packages/daemon/node_modules/zod/v3/types.cjs +3775 -0
  1038. package/packages/daemon/node_modules/zod/v3/types.d.cts +1031 -0
  1039. package/packages/daemon/node_modules/zod/v3/types.d.ts +1031 -0
  1040. package/packages/daemon/node_modules/zod/v3/types.js +3693 -0
  1041. package/packages/daemon/node_modules/zod/v4/classic/checks.cjs +32 -0
  1042. package/packages/daemon/node_modules/zod/v4/classic/checks.d.cts +1 -0
  1043. package/packages/daemon/node_modules/zod/v4/classic/checks.d.ts +1 -0
  1044. package/packages/daemon/node_modules/zod/v4/classic/checks.js +1 -0
  1045. package/packages/daemon/node_modules/zod/v4/classic/coerce.cjs +47 -0
  1046. package/packages/daemon/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  1047. package/packages/daemon/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  1048. package/packages/daemon/node_modules/zod/v4/classic/coerce.js +17 -0
  1049. package/packages/daemon/node_modules/zod/v4/classic/compat.cjs +57 -0
  1050. package/packages/daemon/node_modules/zod/v4/classic/compat.d.cts +46 -0
  1051. package/packages/daemon/node_modules/zod/v4/classic/compat.d.ts +46 -0
  1052. package/packages/daemon/node_modules/zod/v4/classic/compat.js +27 -0
  1053. package/packages/daemon/node_modules/zod/v4/classic/errors.cjs +67 -0
  1054. package/packages/daemon/node_modules/zod/v4/classic/errors.d.cts +30 -0
  1055. package/packages/daemon/node_modules/zod/v4/classic/errors.d.ts +30 -0
  1056. package/packages/daemon/node_modules/zod/v4/classic/errors.js +41 -0
  1057. package/packages/daemon/node_modules/zod/v4/classic/external.cjs +70 -0
  1058. package/packages/daemon/node_modules/zod/v4/classic/external.d.cts +13 -0
  1059. package/packages/daemon/node_modules/zod/v4/classic/external.d.ts +13 -0
  1060. package/packages/daemon/node_modules/zod/v4/classic/external.js +18 -0
  1061. package/packages/daemon/node_modules/zod/v4/classic/index.cjs +33 -0
  1062. package/packages/daemon/node_modules/zod/v4/classic/index.d.cts +4 -0
  1063. package/packages/daemon/node_modules/zod/v4/classic/index.d.ts +4 -0
  1064. package/packages/daemon/node_modules/zod/v4/classic/index.js +4 -0
  1065. package/packages/daemon/node_modules/zod/v4/classic/iso.cjs +60 -0
  1066. package/packages/daemon/node_modules/zod/v4/classic/iso.d.cts +22 -0
  1067. package/packages/daemon/node_modules/zod/v4/classic/iso.d.ts +22 -0
  1068. package/packages/daemon/node_modules/zod/v4/classic/iso.js +30 -0
  1069. package/packages/daemon/node_modules/zod/v4/classic/parse.cjs +32 -0
  1070. package/packages/daemon/node_modules/zod/v4/classic/parse.d.cts +23 -0
  1071. package/packages/daemon/node_modules/zod/v4/classic/parse.d.ts +23 -0
  1072. package/packages/daemon/node_modules/zod/v4/classic/parse.js +6 -0
  1073. package/packages/daemon/node_modules/zod/v4/classic/schemas.cjs +1109 -0
  1074. package/packages/daemon/node_modules/zod/v4/classic/schemas.d.cts +630 -0
  1075. package/packages/daemon/node_modules/zod/v4/classic/schemas.d.ts +630 -0
  1076. package/packages/daemon/node_modules/zod/v4/classic/schemas.js +1006 -0
  1077. package/packages/daemon/node_modules/zod/v4/core/api.cjs +1039 -0
  1078. package/packages/daemon/node_modules/zod/v4/core/api.d.cts +284 -0
  1079. package/packages/daemon/node_modules/zod/v4/core/api.d.ts +284 -0
  1080. package/packages/daemon/node_modules/zod/v4/core/api.js +906 -0
  1081. package/packages/daemon/node_modules/zod/v4/core/checks.cjs +591 -0
  1082. package/packages/daemon/node_modules/zod/v4/core/checks.d.cts +278 -0
  1083. package/packages/daemon/node_modules/zod/v4/core/checks.d.ts +278 -0
  1084. package/packages/daemon/node_modules/zod/v4/core/checks.js +565 -0
  1085. package/packages/daemon/node_modules/zod/v4/core/core.cjs +67 -0
  1086. package/packages/daemon/node_modules/zod/v4/core/core.d.cts +49 -0
  1087. package/packages/daemon/node_modules/zod/v4/core/core.d.ts +49 -0
  1088. package/packages/daemon/node_modules/zod/v4/core/core.js +61 -0
  1089. package/packages/daemon/node_modules/zod/v4/core/doc.cjs +39 -0
  1090. package/packages/daemon/node_modules/zod/v4/core/doc.d.cts +14 -0
  1091. package/packages/daemon/node_modules/zod/v4/core/doc.d.ts +14 -0
  1092. package/packages/daemon/node_modules/zod/v4/core/doc.js +35 -0
  1093. package/packages/daemon/node_modules/zod/v4/core/errors.cjs +226 -0
  1094. package/packages/daemon/node_modules/zod/v4/core/errors.d.cts +208 -0
  1095. package/packages/daemon/node_modules/zod/v4/core/errors.d.ts +208 -0
  1096. package/packages/daemon/node_modules/zod/v4/core/errors.js +195 -0
  1097. package/packages/daemon/node_modules/zod/v4/core/function.cjs +102 -0
  1098. package/packages/daemon/node_modules/zod/v4/core/function.d.cts +52 -0
  1099. package/packages/daemon/node_modules/zod/v4/core/function.d.ts +52 -0
  1100. package/packages/daemon/node_modules/zod/v4/core/function.js +75 -0
  1101. package/packages/daemon/node_modules/zod/v4/core/index.cjs +44 -0
  1102. package/packages/daemon/node_modules/zod/v4/core/index.d.cts +15 -0
  1103. package/packages/daemon/node_modules/zod/v4/core/index.d.ts +15 -0
  1104. package/packages/daemon/node_modules/zod/v4/core/index.js +15 -0
  1105. package/packages/daemon/node_modules/zod/v4/core/json-schema.cjs +2 -0
  1106. package/packages/daemon/node_modules/zod/v4/core/json-schema.d.cts +87 -0
  1107. package/packages/daemon/node_modules/zod/v4/core/json-schema.d.ts +87 -0
  1108. package/packages/daemon/node_modules/zod/v4/core/json-schema.js +1 -0
  1109. package/packages/daemon/node_modules/zod/v4/core/parse.cjs +87 -0
  1110. package/packages/daemon/node_modules/zod/v4/core/parse.d.cts +25 -0
  1111. package/packages/daemon/node_modules/zod/v4/core/parse.d.ts +25 -0
  1112. package/packages/daemon/node_modules/zod/v4/core/parse.js +57 -0
  1113. package/packages/daemon/node_modules/zod/v4/core/regexes.cjs +103 -0
  1114. package/packages/daemon/node_modules/zod/v4/core/regexes.d.cts +62 -0
  1115. package/packages/daemon/node_modules/zod/v4/core/regexes.d.ts +62 -0
  1116. package/packages/daemon/node_modules/zod/v4/core/regexes.js +95 -0
  1117. package/packages/daemon/node_modules/zod/v4/core/registries.cjs +56 -0
  1118. package/packages/daemon/node_modules/zod/v4/core/registries.d.cts +35 -0
  1119. package/packages/daemon/node_modules/zod/v4/core/registries.d.ts +35 -0
  1120. package/packages/daemon/node_modules/zod/v4/core/registries.js +51 -0
  1121. package/packages/daemon/node_modules/zod/v4/core/schemas.cjs +1748 -0
  1122. package/packages/daemon/node_modules/zod/v4/core/schemas.d.cts +1041 -0
  1123. package/packages/daemon/node_modules/zod/v4/core/schemas.d.ts +1041 -0
  1124. package/packages/daemon/node_modules/zod/v4/core/schemas.js +1717 -0
  1125. package/packages/daemon/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  1126. package/packages/daemon/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
  1127. package/packages/daemon/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
  1128. package/packages/daemon/node_modules/zod/v4/core/standard-schema.js +1 -0
  1129. package/packages/daemon/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
  1130. package/packages/daemon/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
  1131. package/packages/daemon/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
  1132. package/packages/daemon/node_modules/zod/v4/core/to-json-schema.js +849 -0
  1133. package/packages/daemon/node_modules/zod/v4/core/util.cjs +539 -0
  1134. package/packages/daemon/node_modules/zod/v4/core/util.d.cts +183 -0
  1135. package/packages/daemon/node_modules/zod/v4/core/util.d.ts +183 -0
  1136. package/packages/daemon/node_modules/zod/v4/core/util.js +493 -0
  1137. package/packages/daemon/node_modules/zod/v4/core/versions.cjs +8 -0
  1138. package/packages/daemon/node_modules/zod/v4/core/versions.d.cts +5 -0
  1139. package/packages/daemon/node_modules/zod/v4/core/versions.d.ts +5 -0
  1140. package/packages/daemon/node_modules/zod/v4/core/versions.js +5 -0
  1141. package/packages/daemon/node_modules/zod/v4/index.cjs +22 -0
  1142. package/packages/daemon/node_modules/zod/v4/index.d.cts +3 -0
  1143. package/packages/daemon/node_modules/zod/v4/index.d.ts +3 -0
  1144. package/packages/daemon/node_modules/zod/v4/index.js +3 -0
  1145. package/packages/daemon/node_modules/zod/v4/locales/ar.cjs +142 -0
  1146. package/packages/daemon/node_modules/zod/v4/locales/ar.d.cts +4 -0
  1147. package/packages/daemon/node_modules/zod/v4/locales/ar.d.ts +4 -0
  1148. package/packages/daemon/node_modules/zod/v4/locales/ar.js +116 -0
  1149. package/packages/daemon/node_modules/zod/v4/locales/az.cjs +141 -0
  1150. package/packages/daemon/node_modules/zod/v4/locales/az.d.cts +4 -0
  1151. package/packages/daemon/node_modules/zod/v4/locales/az.d.ts +4 -0
  1152. package/packages/daemon/node_modules/zod/v4/locales/az.js +115 -0
  1153. package/packages/daemon/node_modules/zod/v4/locales/be.cjs +190 -0
  1154. package/packages/daemon/node_modules/zod/v4/locales/be.d.cts +4 -0
  1155. package/packages/daemon/node_modules/zod/v4/locales/be.d.ts +4 -0
  1156. package/packages/daemon/node_modules/zod/v4/locales/be.js +164 -0
  1157. package/packages/daemon/node_modules/zod/v4/locales/ca.cjs +144 -0
  1158. package/packages/daemon/node_modules/zod/v4/locales/ca.d.cts +4 -0
  1159. package/packages/daemon/node_modules/zod/v4/locales/ca.d.ts +4 -0
  1160. package/packages/daemon/node_modules/zod/v4/locales/ca.js +118 -0
  1161. package/packages/daemon/node_modules/zod/v4/locales/cs.cjs +161 -0
  1162. package/packages/daemon/node_modules/zod/v4/locales/cs.d.cts +4 -0
  1163. package/packages/daemon/node_modules/zod/v4/locales/cs.d.ts +4 -0
  1164. package/packages/daemon/node_modules/zod/v4/locales/cs.js +135 -0
  1165. package/packages/daemon/node_modules/zod/v4/locales/de.cjs +142 -0
  1166. package/packages/daemon/node_modules/zod/v4/locales/de.d.cts +4 -0
  1167. package/packages/daemon/node_modules/zod/v4/locales/de.d.ts +4 -0
  1168. package/packages/daemon/node_modules/zod/v4/locales/de.js +116 -0
  1169. package/packages/daemon/node_modules/zod/v4/locales/en.cjs +145 -0
  1170. package/packages/daemon/node_modules/zod/v4/locales/en.d.cts +5 -0
  1171. package/packages/daemon/node_modules/zod/v4/locales/en.d.ts +5 -0
  1172. package/packages/daemon/node_modules/zod/v4/locales/en.js +117 -0
  1173. package/packages/daemon/node_modules/zod/v4/locales/eo.cjs +144 -0
  1174. package/packages/daemon/node_modules/zod/v4/locales/eo.d.cts +5 -0
  1175. package/packages/daemon/node_modules/zod/v4/locales/eo.d.ts +5 -0
  1176. package/packages/daemon/node_modules/zod/v4/locales/eo.js +116 -0
  1177. package/packages/daemon/node_modules/zod/v4/locales/es.cjs +143 -0
  1178. package/packages/daemon/node_modules/zod/v4/locales/es.d.cts +4 -0
  1179. package/packages/daemon/node_modules/zod/v4/locales/es.d.ts +4 -0
  1180. package/packages/daemon/node_modules/zod/v4/locales/es.js +117 -0
  1181. package/packages/daemon/node_modules/zod/v4/locales/fa.cjs +148 -0
  1182. package/packages/daemon/node_modules/zod/v4/locales/fa.d.cts +4 -0
  1183. package/packages/daemon/node_modules/zod/v4/locales/fa.d.ts +4 -0
  1184. package/packages/daemon/node_modules/zod/v4/locales/fa.js +122 -0
  1185. package/packages/daemon/node_modules/zod/v4/locales/fi.cjs +148 -0
  1186. package/packages/daemon/node_modules/zod/v4/locales/fi.d.cts +4 -0
  1187. package/packages/daemon/node_modules/zod/v4/locales/fi.d.ts +4 -0
  1188. package/packages/daemon/node_modules/zod/v4/locales/fi.js +122 -0
  1189. package/packages/daemon/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
  1190. package/packages/daemon/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
  1191. package/packages/daemon/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  1192. package/packages/daemon/node_modules/zod/v4/locales/fr-CA.js +117 -0
  1193. package/packages/daemon/node_modules/zod/v4/locales/fr.cjs +142 -0
  1194. package/packages/daemon/node_modules/zod/v4/locales/fr.d.cts +4 -0
  1195. package/packages/daemon/node_modules/zod/v4/locales/fr.d.ts +4 -0
  1196. package/packages/daemon/node_modules/zod/v4/locales/fr.js +116 -0
  1197. package/packages/daemon/node_modules/zod/v4/locales/he.cjs +143 -0
  1198. package/packages/daemon/node_modules/zod/v4/locales/he.d.cts +4 -0
  1199. package/packages/daemon/node_modules/zod/v4/locales/he.d.ts +4 -0
  1200. package/packages/daemon/node_modules/zod/v4/locales/he.js +117 -0
  1201. package/packages/daemon/node_modules/zod/v4/locales/hu.cjs +143 -0
  1202. package/packages/daemon/node_modules/zod/v4/locales/hu.d.cts +4 -0
  1203. package/packages/daemon/node_modules/zod/v4/locales/hu.d.ts +4 -0
  1204. package/packages/daemon/node_modules/zod/v4/locales/hu.js +117 -0
  1205. package/packages/daemon/node_modules/zod/v4/locales/id.cjs +142 -0
  1206. package/packages/daemon/node_modules/zod/v4/locales/id.d.cts +4 -0
  1207. package/packages/daemon/node_modules/zod/v4/locales/id.d.ts +4 -0
  1208. package/packages/daemon/node_modules/zod/v4/locales/id.js +116 -0
  1209. package/packages/daemon/node_modules/zod/v4/locales/index.cjs +84 -0
  1210. package/packages/daemon/node_modules/zod/v4/locales/index.d.cts +39 -0
  1211. package/packages/daemon/node_modules/zod/v4/locales/index.d.ts +39 -0
  1212. package/packages/daemon/node_modules/zod/v4/locales/index.js +39 -0
  1213. package/packages/daemon/node_modules/zod/v4/locales/it.cjs +143 -0
  1214. package/packages/daemon/node_modules/zod/v4/locales/it.d.cts +4 -0
  1215. package/packages/daemon/node_modules/zod/v4/locales/it.d.ts +4 -0
  1216. package/packages/daemon/node_modules/zod/v4/locales/it.js +117 -0
  1217. package/packages/daemon/node_modules/zod/v4/locales/ja.cjs +141 -0
  1218. package/packages/daemon/node_modules/zod/v4/locales/ja.d.cts +4 -0
  1219. package/packages/daemon/node_modules/zod/v4/locales/ja.d.ts +4 -0
  1220. package/packages/daemon/node_modules/zod/v4/locales/ja.js +115 -0
  1221. package/packages/daemon/node_modules/zod/v4/locales/kh.cjs +143 -0
  1222. package/packages/daemon/node_modules/zod/v4/locales/kh.d.cts +4 -0
  1223. package/packages/daemon/node_modules/zod/v4/locales/kh.d.ts +4 -0
  1224. package/packages/daemon/node_modules/zod/v4/locales/kh.js +117 -0
  1225. package/packages/daemon/node_modules/zod/v4/locales/ko.cjs +147 -0
  1226. package/packages/daemon/node_modules/zod/v4/locales/ko.d.cts +4 -0
  1227. package/packages/daemon/node_modules/zod/v4/locales/ko.d.ts +4 -0
  1228. package/packages/daemon/node_modules/zod/v4/locales/ko.js +121 -0
  1229. package/packages/daemon/node_modules/zod/v4/locales/mk.cjs +144 -0
  1230. package/packages/daemon/node_modules/zod/v4/locales/mk.d.cts +4 -0
  1231. package/packages/daemon/node_modules/zod/v4/locales/mk.d.ts +4 -0
  1232. package/packages/daemon/node_modules/zod/v4/locales/mk.js +118 -0
  1233. package/packages/daemon/node_modules/zod/v4/locales/ms.cjs +142 -0
  1234. package/packages/daemon/node_modules/zod/v4/locales/ms.d.cts +4 -0
  1235. package/packages/daemon/node_modules/zod/v4/locales/ms.d.ts +4 -0
  1236. package/packages/daemon/node_modules/zod/v4/locales/ms.js +116 -0
  1237. package/packages/daemon/node_modules/zod/v4/locales/nl.cjs +143 -0
  1238. package/packages/daemon/node_modules/zod/v4/locales/nl.d.cts +4 -0
  1239. package/packages/daemon/node_modules/zod/v4/locales/nl.d.ts +4 -0
  1240. package/packages/daemon/node_modules/zod/v4/locales/nl.js +117 -0
  1241. package/packages/daemon/node_modules/zod/v4/locales/no.cjs +142 -0
  1242. package/packages/daemon/node_modules/zod/v4/locales/no.d.cts +4 -0
  1243. package/packages/daemon/node_modules/zod/v4/locales/no.d.ts +4 -0
  1244. package/packages/daemon/node_modules/zod/v4/locales/no.js +116 -0
  1245. package/packages/daemon/node_modules/zod/v4/locales/ota.cjs +143 -0
  1246. package/packages/daemon/node_modules/zod/v4/locales/ota.d.cts +4 -0
  1247. package/packages/daemon/node_modules/zod/v4/locales/ota.d.ts +4 -0
  1248. package/packages/daemon/node_modules/zod/v4/locales/ota.js +117 -0
  1249. package/packages/daemon/node_modules/zod/v4/locales/pl.cjs +143 -0
  1250. package/packages/daemon/node_modules/zod/v4/locales/pl.d.cts +4 -0
  1251. package/packages/daemon/node_modules/zod/v4/locales/pl.d.ts +4 -0
  1252. package/packages/daemon/node_modules/zod/v4/locales/pl.js +117 -0
  1253. package/packages/daemon/node_modules/zod/v4/locales/ps.cjs +148 -0
  1254. package/packages/daemon/node_modules/zod/v4/locales/ps.d.cts +4 -0
  1255. package/packages/daemon/node_modules/zod/v4/locales/ps.d.ts +4 -0
  1256. package/packages/daemon/node_modules/zod/v4/locales/ps.js +122 -0
  1257. package/packages/daemon/node_modules/zod/v4/locales/pt.cjs +142 -0
  1258. package/packages/daemon/node_modules/zod/v4/locales/pt.d.cts +4 -0
  1259. package/packages/daemon/node_modules/zod/v4/locales/pt.d.ts +4 -0
  1260. package/packages/daemon/node_modules/zod/v4/locales/pt.js +116 -0
  1261. package/packages/daemon/node_modules/zod/v4/locales/ru.cjs +190 -0
  1262. package/packages/daemon/node_modules/zod/v4/locales/ru.d.cts +4 -0
  1263. package/packages/daemon/node_modules/zod/v4/locales/ru.d.ts +4 -0
  1264. package/packages/daemon/node_modules/zod/v4/locales/ru.js +164 -0
  1265. package/packages/daemon/node_modules/zod/v4/locales/sl.cjs +143 -0
  1266. package/packages/daemon/node_modules/zod/v4/locales/sl.d.cts +4 -0
  1267. package/packages/daemon/node_modules/zod/v4/locales/sl.d.ts +4 -0
  1268. package/packages/daemon/node_modules/zod/v4/locales/sl.js +117 -0
  1269. package/packages/daemon/node_modules/zod/v4/locales/sv.cjs +144 -0
  1270. package/packages/daemon/node_modules/zod/v4/locales/sv.d.cts +4 -0
  1271. package/packages/daemon/node_modules/zod/v4/locales/sv.d.ts +4 -0
  1272. package/packages/daemon/node_modules/zod/v4/locales/sv.js +118 -0
  1273. package/packages/daemon/node_modules/zod/v4/locales/ta.cjs +143 -0
  1274. package/packages/daemon/node_modules/zod/v4/locales/ta.d.cts +4 -0
  1275. package/packages/daemon/node_modules/zod/v4/locales/ta.d.ts +4 -0
  1276. package/packages/daemon/node_modules/zod/v4/locales/ta.js +117 -0
  1277. package/packages/daemon/node_modules/zod/v4/locales/th.cjs +143 -0
  1278. package/packages/daemon/node_modules/zod/v4/locales/th.d.cts +4 -0
  1279. package/packages/daemon/node_modules/zod/v4/locales/th.d.ts +4 -0
  1280. package/packages/daemon/node_modules/zod/v4/locales/th.js +117 -0
  1281. package/packages/daemon/node_modules/zod/v4/locales/tr.cjs +143 -0
  1282. package/packages/daemon/node_modules/zod/v4/locales/tr.d.cts +5 -0
  1283. package/packages/daemon/node_modules/zod/v4/locales/tr.d.ts +5 -0
  1284. package/packages/daemon/node_modules/zod/v4/locales/tr.js +115 -0
  1285. package/packages/daemon/node_modules/zod/v4/locales/ua.cjs +143 -0
  1286. package/packages/daemon/node_modules/zod/v4/locales/ua.d.cts +4 -0
  1287. package/packages/daemon/node_modules/zod/v4/locales/ua.d.ts +4 -0
  1288. package/packages/daemon/node_modules/zod/v4/locales/ua.js +117 -0
  1289. package/packages/daemon/node_modules/zod/v4/locales/ur.cjs +143 -0
  1290. package/packages/daemon/node_modules/zod/v4/locales/ur.d.cts +4 -0
  1291. package/packages/daemon/node_modules/zod/v4/locales/ur.d.ts +4 -0
  1292. package/packages/daemon/node_modules/zod/v4/locales/ur.js +117 -0
  1293. package/packages/daemon/node_modules/zod/v4/locales/vi.cjs +142 -0
  1294. package/packages/daemon/node_modules/zod/v4/locales/vi.d.cts +4 -0
  1295. package/packages/daemon/node_modules/zod/v4/locales/vi.d.ts +4 -0
  1296. package/packages/daemon/node_modules/zod/v4/locales/vi.js +116 -0
  1297. package/packages/daemon/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
  1298. package/packages/daemon/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
  1299. package/packages/daemon/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  1300. package/packages/daemon/node_modules/zod/v4/locales/zh-CN.js +116 -0
  1301. package/packages/daemon/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
  1302. package/packages/daemon/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
  1303. package/packages/daemon/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  1304. package/packages/daemon/node_modules/zod/v4/locales/zh-TW.js +117 -0
  1305. package/packages/daemon/node_modules/zod/v4/mini/checks.cjs +34 -0
  1306. package/packages/daemon/node_modules/zod/v4/mini/checks.d.cts +1 -0
  1307. package/packages/daemon/node_modules/zod/v4/mini/checks.d.ts +1 -0
  1308. package/packages/daemon/node_modules/zod/v4/mini/checks.js +1 -0
  1309. package/packages/daemon/node_modules/zod/v4/mini/coerce.cjs +47 -0
  1310. package/packages/daemon/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  1311. package/packages/daemon/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  1312. package/packages/daemon/node_modules/zod/v4/mini/coerce.js +17 -0
  1313. package/packages/daemon/node_modules/zod/v4/mini/external.cjs +62 -0
  1314. package/packages/daemon/node_modules/zod/v4/mini/external.d.cts +11 -0
  1315. package/packages/daemon/node_modules/zod/v4/mini/external.d.ts +11 -0
  1316. package/packages/daemon/node_modules/zod/v4/mini/external.js +13 -0
  1317. package/packages/daemon/node_modules/zod/v4/mini/index.cjs +32 -0
  1318. package/packages/daemon/node_modules/zod/v4/mini/index.d.cts +3 -0
  1319. package/packages/daemon/node_modules/zod/v4/mini/index.d.ts +3 -0
  1320. package/packages/daemon/node_modules/zod/v4/mini/index.js +3 -0
  1321. package/packages/daemon/node_modules/zod/v4/mini/iso.cjs +60 -0
  1322. package/packages/daemon/node_modules/zod/v4/mini/iso.d.cts +22 -0
  1323. package/packages/daemon/node_modules/zod/v4/mini/iso.d.ts +22 -0
  1324. package/packages/daemon/node_modules/zod/v4/mini/iso.js +30 -0
  1325. package/packages/daemon/node_modules/zod/v4/mini/parse.cjs +8 -0
  1326. package/packages/daemon/node_modules/zod/v4/mini/parse.d.cts +1 -0
  1327. package/packages/daemon/node_modules/zod/v4/mini/parse.d.ts +1 -0
  1328. package/packages/daemon/node_modules/zod/v4/mini/parse.js +1 -0
  1329. package/packages/daemon/node_modules/zod/v4/mini/schemas.cjs +839 -0
  1330. package/packages/daemon/node_modules/zod/v4/mini/schemas.d.cts +356 -0
  1331. package/packages/daemon/node_modules/zod/v4/mini/schemas.d.ts +356 -0
  1332. package/packages/daemon/node_modules/zod/v4/mini/schemas.js +732 -0
  1333. package/packages/daemon/node_modules/zod/v4-mini/index.cjs +17 -0
  1334. package/packages/daemon/node_modules/zod/v4-mini/index.d.cts +1 -0
  1335. package/packages/daemon/node_modules/zod/v4-mini/index.d.ts +1 -0
  1336. package/packages/daemon/node_modules/zod/v4-mini/index.js +1 -0
  1337. package/packages/daemon/package.json +48 -0
  1338. package/packages/daemon/src/channel-manager.ts +223 -0
  1339. package/packages/daemon/src/cli.ts +47 -0
  1340. package/packages/daemon/src/commands.ts +110 -0
  1341. package/packages/daemon/src/config.ts +137 -0
  1342. package/packages/daemon/src/daemon.test.ts +660 -0
  1343. package/packages/daemon/src/daemon.ts +176 -0
  1344. package/packages/daemon/src/discord-bot.test.ts +792 -0
  1345. package/packages/daemon/src/discord-bot.ts +421 -0
  1346. package/packages/daemon/src/event-bridge.test.ts +619 -0
  1347. package/packages/daemon/src/event-bridge.ts +488 -0
  1348. package/packages/daemon/src/event-formatter.test.ts +402 -0
  1349. package/packages/daemon/src/event-formatter.ts +386 -0
  1350. package/packages/daemon/src/index.ts +46 -0
  1351. package/packages/daemon/src/logger.ts +88 -0
  1352. package/packages/daemon/src/message-batcher.test.ts +308 -0
  1353. package/packages/daemon/src/message-batcher.ts +210 -0
  1354. package/packages/daemon/src/orchestrator.test.ts +583 -0
  1355. package/packages/daemon/src/orchestrator.ts +440 -0
  1356. package/packages/daemon/src/project-scanner.test.ts +235 -0
  1357. package/packages/daemon/src/project-scanner.ts +99 -0
  1358. package/packages/daemon/src/session-manager.test.ts +822 -0
  1359. package/packages/daemon/src/session-manager.ts +394 -0
  1360. package/packages/daemon/src/types.ts +199 -0
  1361. package/packages/daemon/src/verbosity.test.ts +171 -0
  1362. package/packages/daemon/src/verbosity.ts +101 -0
  1363. package/packages/daemon/tsconfig.json +24 -0
  1364. package/packages/pi-ai/dist/models.custom.d.ts +23 -0
  1365. package/packages/pi-ai/dist/models.custom.d.ts.map +1 -1
  1366. package/packages/pi-ai/dist/models.custom.js +24 -0
  1367. package/packages/pi-ai/dist/models.custom.js.map +1 -1
  1368. package/packages/pi-ai/dist/models.test.js +29 -0
  1369. package/packages/pi-ai/dist/models.test.js.map +1 -1
  1370. package/packages/pi-ai/src/models.custom.ts +25 -0
  1371. package/packages/pi-ai/src/models.test.ts +33 -0
  1372. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +1 -1
  1373. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  1374. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  1375. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts +2 -0
  1376. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map +1 -1
  1377. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js +14 -2
  1378. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js.map +1 -1
  1379. package/packages/pi-coding-agent/package.json +1 -1
  1380. package/packages/pi-coding-agent/src/core/model-registry.ts +1 -1
  1381. package/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +16 -2
  1382. package/pkg/package.json +1 -1
  1383. package/scripts/ensure-workspace-builds.cjs +45 -41
  1384. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +2 -2
  1385. package/src/resources/extensions/bg-shell/utilities.ts +39 -4
  1386. package/src/resources/extensions/gsd/auto/loop-deps.ts +4 -1
  1387. package/src/resources/extensions/gsd/auto/phases.ts +28 -4
  1388. package/src/resources/extensions/gsd/auto/run-unit.ts +10 -0
  1389. package/src/resources/extensions/gsd/auto/session.ts +3 -0
  1390. package/src/resources/extensions/gsd/auto-artifact-paths.ts +6 -0
  1391. package/src/resources/extensions/gsd/auto-dashboard.ts +5 -2
  1392. package/src/resources/extensions/gsd/auto-dispatch.ts +1 -1
  1393. package/src/resources/extensions/gsd/auto-model-selection.ts +33 -3
  1394. package/src/resources/extensions/gsd/auto-post-unit.ts +1 -1
  1395. package/src/resources/extensions/gsd/auto-prompts.ts +15 -0
  1396. package/src/resources/extensions/gsd/auto-start.ts +36 -11
  1397. package/src/resources/extensions/gsd/auto-worktree.ts +46 -13
  1398. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +5 -4
  1399. package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +53 -0
  1400. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +19 -6
  1401. package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +24 -0
  1402. package/src/resources/extensions/gsd/commands/catalog.ts +2 -1
  1403. package/src/resources/extensions/gsd/commands/handlers/parallel.ts +19 -1
  1404. package/src/resources/extensions/gsd/complexity-classifier.ts +1 -0
  1405. package/src/resources/extensions/gsd/crash-recovery.ts +2 -3
  1406. package/src/resources/extensions/gsd/dashboard-overlay.ts +2 -0
  1407. package/src/resources/extensions/gsd/docs/preferences-reference.md +4 -2
  1408. package/src/resources/extensions/gsd/guided-flow.ts +17 -16
  1409. package/src/resources/extensions/gsd/metrics.ts +5 -2
  1410. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +497 -0
  1411. package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -1
  1412. package/src/resources/extensions/gsd/preferences-models.ts +12 -0
  1413. package/src/resources/extensions/gsd/preferences-types.ts +4 -0
  1414. package/src/resources/extensions/gsd/roadmap-slices.ts +1 -0
  1415. package/src/resources/extensions/gsd/session-lock.ts +46 -12
  1416. package/src/resources/extensions/gsd/skill-health.ts +2 -2
  1417. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +39 -1
  1418. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +139 -0
  1419. package/src/resources/extensions/gsd/tests/auto-start-cold-db-bootstrap.test.ts +37 -0
  1420. package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +28 -0
  1421. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +1 -1
  1422. package/src/resources/extensions/gsd/tests/{all-milestones-complete-merge.test.ts → integration/all-milestones-complete-merge.test.ts} +3 -3
  1423. package/src/resources/extensions/gsd/tests/{atomic-task-closeout.test.ts → integration/atomic-task-closeout.test.ts} +1 -1
  1424. package/src/resources/extensions/gsd/tests/{auto-preflight.test.ts → integration/auto-preflight.test.ts} +1 -1
  1425. package/src/resources/extensions/gsd/tests/{auto-recovery.test.ts → integration/auto-recovery.test.ts} +7 -7
  1426. package/src/resources/extensions/gsd/tests/{auto-secrets-gate.test.ts → integration/auto-secrets-gate.test.ts} +2 -2
  1427. package/src/resources/extensions/gsd/tests/{auto-stash-merge.test.ts → integration/auto-stash-merge.test.ts} +3 -3
  1428. package/src/resources/extensions/gsd/tests/{auto-worktree-milestone-merge.test.ts → integration/auto-worktree-milestone-merge.test.ts} +4 -4
  1429. package/src/resources/extensions/gsd/tests/{auto-worktree.test.ts → integration/auto-worktree.test.ts} +5 -5
  1430. package/src/resources/extensions/gsd/tests/{continue-here.test.ts → integration/continue-here.test.ts} +3 -3
  1431. package/src/resources/extensions/gsd/tests/{doctor-completion-deferral.test.ts → integration/doctor-completion-deferral.test.ts} +1 -1
  1432. package/src/resources/extensions/gsd/tests/{doctor-delimiter-fix.test.ts → integration/doctor-delimiter-fix.test.ts} +1 -1
  1433. package/src/resources/extensions/gsd/tests/{doctor-enhancements.test.ts → integration/doctor-enhancements.test.ts} +3 -3
  1434. package/src/resources/extensions/gsd/tests/{doctor-environment-worktree.test.ts → integration/doctor-environment-worktree.test.ts} +1 -1
  1435. package/src/resources/extensions/gsd/tests/{doctor-environment.test.ts → integration/doctor-environment.test.ts} +1 -1
  1436. package/src/resources/extensions/gsd/tests/{doctor-fixlevel.test.ts → integration/doctor-fixlevel.test.ts} +2 -2
  1437. package/src/resources/extensions/gsd/tests/{doctor-git.test.ts → integration/doctor-git.test.ts} +1 -1
  1438. package/src/resources/extensions/gsd/tests/{doctor-proactive.test.ts → integration/doctor-proactive.test.ts} +1 -1
  1439. package/src/resources/extensions/gsd/tests/{doctor-roadmap-summary-atomicity.test.ts → integration/doctor-roadmap-summary-atomicity.test.ts} +1 -1
  1440. package/src/resources/extensions/gsd/tests/{doctor-runtime.test.ts → integration/doctor-runtime.test.ts} +1 -1
  1441. package/src/resources/extensions/gsd/tests/{doctor.test.ts → integration/doctor.test.ts} +1 -1
  1442. package/src/resources/extensions/gsd/tests/{e2e-workflow-pipeline-integration.test.ts → integration/e2e-workflow-pipeline-integration.test.ts} +5 -5
  1443. package/src/resources/extensions/gsd/tests/{feature-branch-lifecycle-integration.test.ts → integration/feature-branch-lifecycle-integration.test.ts} +4 -4
  1444. package/src/resources/extensions/gsd/tests/{git-locale.test.ts → integration/git-locale.test.ts} +4 -4
  1445. package/src/resources/extensions/gsd/tests/{git-self-heal.test.ts → integration/git-self-heal.test.ts} +1 -1
  1446. package/src/resources/extensions/gsd/tests/{git-service.test.ts → integration/git-service.test.ts} +4 -4
  1447. package/src/resources/extensions/gsd/tests/{gitignore-tracked-gsd.test.ts → integration/gitignore-tracked-gsd.test.ts} +2 -2
  1448. package/src/resources/extensions/gsd/tests/{idle-recovery.test.ts → integration/idle-recovery.test.ts} +3 -3
  1449. package/src/resources/extensions/gsd/tests/{inherited-repo-home-dir.test.ts → integration/inherited-repo-home-dir.test.ts} +1 -1
  1450. package/src/resources/extensions/gsd/tests/{integration-lifecycle.test.ts → integration/integration-lifecycle.test.ts} +4 -4
  1451. package/src/resources/extensions/gsd/tests/{integration-mixed-milestones.test.ts → integration/integration-mixed-milestones.test.ts} +6 -6
  1452. package/src/resources/extensions/gsd/tests/{integration-proof.test.ts → integration/integration-proof.test.ts} +12 -12
  1453. package/src/resources/extensions/gsd/tests/{migrate-command.test.ts → integration/migrate-command.test.ts} +2 -2
  1454. package/src/resources/extensions/gsd/tests/{milestone-transition-worktree.test.ts → integration/milestone-transition-worktree.test.ts} +3 -3
  1455. package/src/resources/extensions/gsd/tests/{parallel-merge.test.ts → integration/parallel-merge.test.ts} +3 -3
  1456. package/src/resources/extensions/gsd/tests/{parallel-workers-multi-milestone-e2e.test.ts → integration/parallel-workers-multi-milestone-e2e.test.ts} +3 -3
  1457. package/src/resources/extensions/gsd/tests/{paths.test.ts → integration/paths.test.ts} +1 -1
  1458. package/src/resources/extensions/gsd/tests/{plugin-importer-live.test.ts → integration/plugin-importer-live.test.ts} +2 -2
  1459. package/src/resources/extensions/gsd/tests/{queue-completed-milestone-perf.test.ts → integration/queue-completed-milestone-perf.test.ts} +3 -3
  1460. package/src/resources/extensions/gsd/tests/{queue-reorder-e2e.test.ts → integration/queue-reorder-e2e.test.ts} +5 -5
  1461. package/src/resources/extensions/gsd/tests/{quick-branch-lifecycle.test.ts → integration/quick-branch-lifecycle.test.ts} +5 -5
  1462. package/src/resources/extensions/gsd/tests/{run-uat.test.ts → integration/run-uat.test.ts} +4 -4
  1463. package/src/resources/extensions/gsd/tests/{token-savings.test.ts → integration/token-savings.test.ts} +3 -3
  1464. package/src/resources/extensions/gsd/tests/{worktree-e2e.test.ts → integration/worktree-e2e.test.ts} +4 -4
  1465. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +56 -1
  1466. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +192 -0
  1467. package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +60 -0
  1468. package/src/resources/extensions/gsd/tests/parallel-worker-lock-contention.test.ts +226 -0
  1469. package/src/resources/extensions/gsd/tests/plan-milestone-queue-context.test.ts +48 -0
  1470. package/src/resources/extensions/gsd/tests/preferences-worktree-sync.test.ts +61 -19
  1471. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +98 -0
  1472. package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +59 -0
  1473. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +17 -0
  1474. package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +14 -12
  1475. package/src/resources/extensions/gsd/tests/subagent-agent-discovery.test.ts +44 -0
  1476. package/src/resources/extensions/gsd/tests/worktree-preferences-sync.test.ts +49 -24
  1477. package/src/resources/extensions/gsd/visualizer-overlay.ts +3 -3
  1478. package/src/resources/extensions/shared/format-utils.ts +1 -1
  1479. package/src/resources/extensions/subagent/agents.ts +8 -2
  1480. package/src/resources/extensions/subagent/worker-registry.ts +2 -1
  1481. package/dist/web/standalone/.next/static/chunks/4024.87fd909ae0110f50.js +0 -9
  1482. package/dist/web/standalone/.next/static/chunks/app/page-fbecd1237e2d6d1f.js +0 -1
  1483. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  1484. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  1485. /package/dist/web/standalone/.next/static/{KixbEdSRlU9zzYdZdrJ7A → 3XCsmJU9i9WebfYynW_BO}/_buildManifest.js +0 -0
  1486. /package/dist/web/standalone/.next/static/{KixbEdSRlU9zzYdZdrJ7A → 3XCsmJU9i9WebfYynW_BO}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\ttype Api,\n\tapplyCapabilityPatches,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tgetApiProvider,\n\tgetModels,\n\tgetProviders,\n\ttype KnownProvider,\n\ttype Model,\n\ttype OAuthProviderInterface,\n\ttype OpenAICompletionsCompat,\n\ttype OpenAIResponsesCompat,\n\tregisterApiProvider,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@gsd/pi-ai\";\nimport { registerOAuthProvider, resetOAuthProviders } from \"@gsd/pi-ai/oauth\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport AjvModule from \"ajv\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { getAgentDir } from \"../config.js\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { ModelDiscoveryCache } from \"./discovery-cache.js\";\nimport type { DiscoveredModel, DiscoveryResult } from \"./model-discovery.js\";\nimport { getDefaultTTL, getDiscoverableProviders, getDiscoveryAdapter } from \"./model-discovery.js\";\nimport { clearConfigValueCache, resolveConfigValue, resolveHeaders } from \"./resolve-config-value.js\";\nimport { isLocalModel } from \"./local-model-check.js\";\n\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv();\n\n// Schema for OpenRouter routing preferences\nconst OpenRouterRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for Vercel AI Gateway routing preferences\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for OpenAI compatibility settings\nconst OpenAICompletionsCompatSchema = Type.Object({\n\tsupportsStore: Type.Optional(Type.Boolean()),\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsupportsReasoningEffort: Type.Optional(Type.Boolean()),\n\tsupportsUsageInStreaming: Type.Optional(Type.Boolean()),\n\tmaxTokensField: Type.Optional(Type.Union([Type.Literal(\"max_completion_tokens\"), Type.Literal(\"max_tokens\")])),\n\trequiresToolResultName: Type.Optional(Type.Boolean()),\n\trequiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),\n\trequiresThinkingAsText: Type.Optional(Type.Boolean()),\n\trequiresMistralToolIds: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(Type.Union([Type.Literal(\"openai\"), Type.Literal(\"zai\"), Type.Literal(\"qwen\")])),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\t// Reserved for future use\n});\n\nconst OpenAICompatSchema = Type.Union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);\n\n// Schema for custom model definition\n// Most fields are optional with sensible defaults for local models (Ollama, LM Studio, etc.)\nconst ModelDefinitionSchema = Type.Object({\n\tid: Type.String({ minLength: 1 }),\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Number(),\n\t\t\toutput: Type.Number(),\n\t\t\tcacheRead: Type.Number(),\n\t\t\tcacheWrite: Type.Number(),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\n// Schema for per-model overrides (all fields optional, merged with built-in model)\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Optional(Type.Number()),\n\t\t\toutput: Type.Optional(Type.Number()),\n\t\t\tcacheRead: Type.Optional(Type.Number()),\n\t\t\tcacheWrite: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\ntype ModelOverride = Static<typeof ModelOverrideSchema>;\n\nconst ProviderConfigSchema = Type.Object({\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\tapiKey: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tauthHeader: Type.Optional(Type.Boolean()),\n\tmodels: Type.Optional(Type.Array(ModelDefinitionSchema)),\n\tmodelOverrides: Type.Optional(Type.Record(Type.String(), ModelOverrideSchema)),\n});\n\nconst ModelsConfigSchema = Type.Object({\n\tproviders: Type.Record(Type.String(), ProviderConfigSchema),\n});\n\najv.addSchema(ModelsConfigSchema, \"ModelsConfig\");\n\ntype ModelsConfig = Static<typeof ModelsConfigSchema>;\n\nexport type ProviderAuthMode = \"apiKey\" | \"oauth\" | \"externalCli\" | \"none\";\n\n/** Provider override config (baseUrl, headers, apiKey) without custom models */\ninterface ProviderOverride {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tapiKey?: string;\n}\n\n/** Result of loading custom models from models.json */\ninterface CustomModelsResult {\n\tmodels: Model<Api>[];\n\t/** Providers with baseUrl/headers/apiKey overrides for built-in models */\n\toverrides: Map<string, ProviderOverride>;\n\t/** Per-model overrides: provider -> modelId -> override */\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\terror: string | undefined;\n}\n\nfunction emptyCustomModelsResult(error?: string): CustomModelsResult {\n\treturn { models: [], overrides: new Map(), modelOverrides: new Map(), error };\n}\n\nfunction mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return baseCompat;\n\n\tconst base = baseCompat as OpenAICompletionsCompat | OpenAIResponsesCompat | undefined;\n\tconst override = overrideCompat as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\tconst merged = { ...base, ...override } as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\treturn merged as Model<Api>[\"compat\"];\n}\n\n/**\n * Deep merge a model override into a model.\n * Handles nested objects (cost, compat) by merging rather than replacing.\n */\nfunction applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\t// Simple field overrides\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\t// Merge cost (partial override)\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t};\n\t}\n\n\t// Merge headers\n\tif (override.headers) {\n\t\tconst resolvedHeaders = resolveHeaders(override.headers);\n\t\tresult.headers = resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers;\n\t}\n\n\t// Deep merge compat\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\n\treturn result;\n}\n\n\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate discoveredModels: Model<Api>[] = [];\n\tprivate discoveryCache: ModelDiscoveryCache;\n\tprivate customProviderApiKeys: Map<string, string> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate loadError: string | undefined = undefined;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\tprivate modelsJsonPath: string | undefined = join(getAgentDir(), \"models.json\"),\n\t) {\n\t\tthis.discoveryCache = new ModelDiscoveryCache();\n\n\t\t// Set up fallback resolver for custom provider API keys\n\t\tthis.authStorage.setFallbackResolver((provider) => {\n\t\t\tconst keyConfig = this.customProviderApiKeys.get(provider);\n\t\t\tif (keyConfig) {\n\t\t\t\treturn resolveConfigValue(keyConfig);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t});\n\n\t\t// Refresh models when credentials change (e.g., OAuth token refresh with new model limits)\n\t\tthis.authStorage.onCredentialChange(() => this.refresh());\n\n\t\t// Load models\n\t\tthis.loadModels();\n\t}\n\n\t/**\n\t * Reload models from disk (built-in + custom from models.json).\n\t */\n\trefresh(): void {\n\t\tthis.customProviderApiKeys.clear();\n\t\tthis.loadError = undefined;\n\n\t\t// Ensure dynamic API/OAuth registrations are rebuilt from current provider state.\n\t\tresetApiProviders();\n\t\tresetOAuthProviders();\n\n\t\tthis.loadModels();\n\n\t\tfor (const [providerName, config] of this.registeredProviders.entries()) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\t/**\n\t * Get any error from loading models.json (undefined if no error).\n\t */\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(): void {\n\t\t// Load custom models and overrides from models.json\n\t\tconst {\n\t\t\tmodels: customModels,\n\t\t\toverrides,\n\t\t\tmodelOverrides,\n\t\t\terror,\n\t\t} = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();\n\n\t\tif (error) {\n\t\t\tthis.loadError = error;\n\t\t\t// Keep built-in models even if custom models failed to load\n\t\t}\n\n\t\tconst builtInModels = this.loadBuiltInModels(overrides, modelOverrides);\n\t\tlet combined = this.mergeCustomModels(builtInModels, customModels);\n\n\t\t// Let OAuth providers modify their models (e.g., update baseUrl)\n\t\tfor (const oauthProvider of this.authStorage.getOAuthProviders()) {\n\t\t\tconst cred = this.authStorage.get(oauthProvider.id);\n\t\t\tif (cred?.type === \"oauth\" && oauthProvider.modifyModels) {\n\t\t\t\tcombined = oauthProvider.modifyModels(combined, cred);\n\t\t\t}\n\t\t}\n\n\t\t// Apply capability patches so custom/discovered/extension models get\n\t\t// capabilities (supportsXhigh, supportsServiceTier, etc.) that the\n\t\t// static pi-ai registry applies at module load for built-in models.\n\t\tthis.models = applyCapabilityPatches(combined);\n\t}\n\n\t/** Load built-in models and apply provider/model overrides */\n\tprivate loadBuiltInModels(\n\t\toverrides: Map<string, ProviderOverride>,\n\t\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\t): Model<Api>[] {\n\t\treturn getProviders().flatMap((provider) => {\n\t\t\tconst models = getModels(provider as KnownProvider) as Model<Api>[];\n\t\t\tconst providerOverride = overrides.get(provider);\n\t\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\t\treturn models.map((m) => {\n\t\t\t\tlet model = m;\n\n\t\t\t\t// Apply provider-level baseUrl/headers override\n\t\t\t\tif (providerOverride) {\n\t\t\t\t\tconst resolvedHeaders = resolveHeaders(providerOverride.headers);\n\t\t\t\t\tmodel = {\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\t\theaders: resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Apply per-model override\n\t\t\t\tconst modelOverride = perModelOverrides?.get(m.id);\n\t\t\t\tif (modelOverride) {\n\t\t\t\t\tmodel = applyModelOverride(model, modelOverride);\n\t\t\t\t}\n\n\t\t\t\treturn model;\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Merge custom models into built-in list by provider+id (custom wins on conflicts). */\n\tprivate mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\t\tconst merged = [...builtInModels];\n\t\tfor (const customModel of customModels) {\n\t\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tmerged[existingIndex] = customModel;\n\t\t\t} else {\n\t\t\t\tmerged.push(customModel);\n\t\t\t}\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate loadCustomModels(modelsJsonPath: string): CustomModelsResult {\n\t\tif (!existsSync(modelsJsonPath)) {\n\t\t\treturn emptyCustomModelsResult();\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(modelsJsonPath, \"utf-8\");\n\t\t\tconst config: ModelsConfig = JSON.parse(content);\n\n\t\t\t// Validate schema\n\t\t\tconst validate = ajv.getSchema(\"ModelsConfig\")!;\n\t\t\tif (!validate(config)) {\n\t\t\t\tconst errors =\n\t\t\t\t\tvalidate.errors?.map((e: any) => ` - ${e.instancePath || \"root\"}: ${e.message}`).join(\"\\n\") ||\n\t\t\t\t\t\"Unknown schema error\";\n\t\t\t\treturn emptyCustomModelsResult(`Invalid models.json schema:\\n${errors}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\n\t\t\t// Additional validation\n\t\t\tthis.validateConfig(config);\n\n\t\t\tconst overrides = new Map<string, ProviderOverride>();\n\t\t\tconst modelOverrides = new Map<string, Map<string, ModelOverride>>();\n\n\t\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\t\t// Apply provider-level baseUrl/headers/apiKey override to built-in models when configured.\n\t\t\t\tif (providerConfig.baseUrl || providerConfig.headers || providerConfig.apiKey) {\n\t\t\t\t\toverrides.set(providerName, {\n\t\t\t\t\t\tbaseUrl: providerConfig.baseUrl,\n\t\t\t\t\t\theaders: providerConfig.headers,\n\t\t\t\t\t\tapiKey: providerConfig.apiKey,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Store API key for fallback resolver.\n\t\t\t\tif (providerConfig.apiKey) {\n\t\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t\t}\n\n\t\t\t\tif (providerConfig.modelOverrides) {\n\t\t\t\t\tmodelOverrides.set(providerName, new Map(Object.entries(providerConfig.modelOverrides)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { models: this.parseModels(config), overrides, modelOverrides, error: undefined };\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\treturn emptyCustomModelsResult(`Failed to parse models.json: ${error.message}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\t\t\treturn emptyCustomModelsResult(\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${modelsJsonPath}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate validateConfig(config: ModelsConfig): void {\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst hasProviderApi = !!providerConfig.api;\n\t\t\tconst models = providerConfig.models ?? [];\n\t\t\tconst hasModelOverrides =\n\t\t\t\tproviderConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;\n\n\t\t\tif (models.length === 0) {\n\t\t\t\t// Override-only config: needs baseUrl OR modelOverrides (or both)\n\t\t\t\tif (!providerConfig.baseUrl && !hasModelOverrides) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: must specify \"baseUrl\", \"modelOverrides\", or \"models\".`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Custom models are merged into provider models and require endpoint + auth.\n\t\t\t\tif (!providerConfig.baseUrl) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t\tif (!providerConfig.apiKey) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"apiKey\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const modelDef of models) {\n\t\t\t\tconst hasModelApi = !!modelDef.api;\n\n\t\t\t\tif (!hasProviderApi && !hasModelApi) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified. Set at provider or model level.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!modelDef.id) throw new Error(`Provider ${providerName}: model missing \"id\"`);\n\t\t\t\t// Validate contextWindow/maxTokens only if provided (they have defaults)\n\t\t\t\tif (modelDef.contextWindow !== undefined && modelDef.contextWindow <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);\n\t\t\t\tif (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseModels(config: ModelsConfig): Model<Api>[] {\n\t\tconst models: Model<Api>[] = [];\n\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst modelDefs = providerConfig.models ?? [];\n\t\t\tif (modelDefs.length === 0) continue; // Override-only, no custom models\n\n\t\t\t// Store API key config for fallback resolver\n\t\t\tif (providerConfig.apiKey) {\n\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t}\n\n\t\t\tfor (const modelDef of modelDefs) {\n\t\t\t\tconst api = modelDef.api || providerConfig.api;\n\t\t\t\tif (!api) continue;\n\n\t\t\t\t// Merge headers: provider headers are base, model headers override\n\t\t\t\t// Resolve env vars and shell commands in header values\n\t\t\t\tconst providerHeaders = resolveHeaders(providerConfig.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header with resolved API key\n\t\t\t\tif (providerConfig.authHeader && providerConfig.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(providerConfig.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Provider baseUrl is required when custom models are defined.\n\t\t\t\t// Individual models can override it with modelDef.baseUrl.\n\t\t\t\tconst defaultCost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\n\t\t\t\tmodels.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name ?? modelDef.id,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: modelDef.baseUrl ?? providerConfig.baseUrl!,\n\t\t\t\t\treasoning: modelDef.reasoning ?? false,\n\t\t\t\t\tinput: (modelDef.input ?? [\"text\"]) as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost ?? defaultCost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens ?? 16384,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\n\t\treturn models;\n\t}\n\n\t/**\n\t * Get all models (built-in + custom).\n\t * If models.json had errors, returns only built-in models.\n\t */\n\tgetAll(): Model<Api>[] {\n\t\treturn this.models;\n\t}\n\n\t/**\n\t * Get only models that have auth configured.\n\t * This is a fast check that doesn't refresh OAuth tokens.\n\t */\n\tgetAvailable(): Model<Api>[] {\n\t\treturn this.models.filter((m) => this.isProviderRequestReady(m.provider));\n\t}\n\n\t/**\n\t * Get auth mode for a provider.\n\t * Defaults to \"apiKey\" for built-ins and providers without explicit mode.\n\t */\n\tgetProviderAuthMode(provider: string): ProviderAuthMode {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (!config) return \"apiKey\";\n\t\tif (config.authMode) return config.authMode;\n\t\tif (config.oauth) return \"oauth\";\n\t\tif (config.apiKey) return \"apiKey\";\n\t\treturn \"apiKey\";\n\t}\n\n\t/**\n\t * Whether a provider can be used for requests/fallback without hard auth gating.\n\t */\n\tisProviderRequestReady(provider: string): boolean {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (config?.isReady) return config.isReady();\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return true;\n\t\treturn this.authStorage.hasAuth(provider);\n\t}\n\n\t/**\n\t * Find a model by provider and ID.\n\t */\n\tfind(provider: string, modelId: string): Model<Api> | undefined {\n\t\treturn this.models.find((m) => m.provider === provider && m.id === modelId);\n\t}\n\n\t/**\n\t * Get API key for a model.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKey(model: Model<Api>, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(model.provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(model.provider, sessionId, { baseUrl: model.baseUrl });\n\t}\n\n\t/**\n\t * Get API key for a provider.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKeyForProvider(provider: string, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(provider, sessionId);\n\t}\n\n\t/**\n\t * Check if a model is using OAuth credentials (subscription).\n\t */\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\t/**\n\t * Register a provider dynamically (from extensions).\n\t *\n\t * If provider has models: replaces all existing models for this provider.\n\t * If provider has only baseUrl/headers: overrides existing models' URLs.\n\t * If provider has oauth: registers OAuth provider for /login support.\n\t */\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void {\n\t\tthis.registeredProviders.set(providerName, config);\n\t\tthis.applyProviderConfig(providerName, config);\n\t}\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes the provider from the registry and reloads models from disk so that\n\t * built-in models overridden by this provider are restored to their original state.\n\t * Also resets dynamic OAuth and API stream registrations before reapplying\n\t * remaining dynamic providers.\n\t * Has no effect if the provider was never registered.\n\t */\n\tunregisterProvider(providerName: string): void {\n\t\tif (!this.registeredProviders.has(providerName)) return;\n\t\tthis.registeredProviders.delete(providerName);\n\t\tthis.customProviderApiKeys.delete(providerName);\n\t\tthis.refresh();\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput): void {\n\t\t// Register OAuth provider if provided\n\t\tif (config.oauth) {\n\t\t\t// Ensure the OAuth provider ID matches the provider name\n\t\t\tconst oauthProvider: OAuthProviderInterface = {\n\t\t\t\t...config.oauth,\n\t\t\t\tid: providerName,\n\t\t\t};\n\t\t\tregisterOAuthProvider(oauthProvider);\n\t\t}\n\n\t\tif (config.streamSimple) {\n\t\t\tif (!config.api) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"api\" is required when registering streamSimple.`);\n\t\t\t}\n\t\t\tconst rawStreamSimple = config.streamSimple;\n\t\t\tconst authMode = config.authMode ?? \"apiKey\";\n\n\t\t\t// Keyless providers never see apiKey in options — enforced at registration,\n\t\t\t// not by convention. Prevents undefined from reaching any handler.\n\t\t\tconst streamSimple = (authMode === \"externalCli\" || authMode === \"none\")\n\t\t\t\t? ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\t\t\t\t\tconst { apiKey: _, ...opts } = options ?? {};\n\t\t\t\t\t\treturn rawStreamSimple(model, context, opts as SimpleStreamOptions);\n\t\t\t\t\t})\n\t\t\t\t: rawStreamSimple;\n\n\t\t\t// Guard: if there's already a handler registered for this API, wrap\n\t\t\t// the new one so it only fires for models from this provider and\n\t\t\t// delegates to the previous handler for all other providers. Without\n\t\t\t// this, a custom provider using api:\"anthropic-messages\" would clobber\n\t\t\t// the built-in Anthropic stream handler (#2536).\n\t\t\tconst existingProvider = getApiProvider(config.api as Api);\n\t\t\tconst scopedStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn streamSimple(model, context, options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.streamSimple(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: streamSimple;\n\n\t\t\tconst newFullStream = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) =>\n\t\t\t\tscopedStream(model, context, options as SimpleStreamOptions);\n\t\t\tconst scopedFullStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: Record<string, unknown>) => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn newFullStream(model, context, options as SimpleStreamOptions);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.stream(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: newFullStream;\n\n\t\t\tregisterApiProvider(\n\t\t\t\t{\n\t\t\t\t\tapi: config.api,\n\t\t\t\t\tstream: scopedFullStream as any,\n\t\t\t\t\tstreamSimple: scopedStream,\n\t\t\t\t},\n\t\t\t\t`provider:${providerName}`,\n\t\t\t);\n\t\t}\n\n\t\t// Store API key for auth resolution\n\t\tif (config.apiKey) {\n\t\t\tthis.customProviderApiKeys.set(providerName, config.apiKey);\n\t\t}\n\n\t\tif (config.models && config.models.length > 0) {\n\t\t\t// Full replacement: remove existing models for this provider\n\t\t\tthis.models = this.models.filter((m) => m.provider !== providerName);\n\n\t\t\t// Validate required fields\n\t\t\tif (!config.baseUrl) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining models.`);\n\t\t\t}\n\t\t\tconst authMode = config.authMode ?? (config.oauth ? \"oauth\" : config.apiKey ? \"apiKey\" : \"apiKey\");\n\t\t\tif (authMode === \"apiKey\" && !config.apiKey && !config.oauth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" or \"oauth\" is required when authMode is \"apiKey\" (the default). ` +\n\t\t\t\t\t`Set authMode to \"externalCli\" or \"none\" for keyless providers.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && !config.streamSimple) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"streamSimple\" is required when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers must supply their own stream handler.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && config.apiKey) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" cannot be set when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers should not provide API key credentials.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse and add new models\n\t\t\tfor (const modelDef of config.models) {\n\t\t\t\tconst api = modelDef.api || config.api;\n\t\t\t\tif (!api) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified.`);\n\t\t\t\t}\n\n\t\t\t\t// Merge headers\n\t\t\t\tconst providerHeaders = resolveHeaders(config.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header\n\t\t\t\tif (config.authHeader && config.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(config.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.models.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: config.baseUrl,\n\t\t\t\t\treasoning: modelDef.reasoning,\n\t\t\t\t\tinput: modelDef.input as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\n\t\t\t// Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)\n\t\t\tif (config.oauth?.modifyModels) {\n\t\t\t\tconst cred = this.authStorage.get(providerName);\n\t\t\t\tif (cred?.type === \"oauth\") {\n\t\t\t\t\tthis.models = config.oauth.modifyModels(this.models, cred);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure newly added extension models get capability patches\n\t\t\tthis.models = applyCapabilityPatches(this.models);\n\t\t} else if (config.baseUrl) {\n\t\t\t// Override-only: update baseUrl/headers for existing models\n\t\t\tconst resolvedHeaders = resolveHeaders(config.headers);\n\t\t\tthis.models = this.models.map((m) => {\n\t\t\t\tif (m.provider !== providerName) return m;\n\t\t\t\treturn {\n\t\t\t\t\t...m,\n\t\t\t\t\tbaseUrl: config.baseUrl ?? m.baseUrl,\n\t\t\t\t\theaders: resolvedHeaders ? { ...m.headers, ...resolvedHeaders } : m.headers,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Discover models from all providers that support discovery.\n\t * Results are cached and merged into the registry (never overrides existing models).\n\t */\n\tasync discoverModels(providers?: string[]): Promise<DiscoveryResult[]> {\n\t\tconst targetProviders = providers ?? getDiscoverableProviders();\n\t\tconst results: DiscoveryResult[] = [];\n\n\t\tfor (const providerName of targetProviders) {\n\t\t\tconst adapter = getDiscoveryAdapter(providerName);\n\t\t\tif (!adapter.supportsDiscovery) continue;\n\n\t\t\t// Skip if cache is still fresh\n\t\t\tif (!this.discoveryCache.isStale(providerName)) {\n\t\t\t\tconst cached = this.discoveryCache.get(providerName);\n\t\t\t\tif (cached) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tprovider: providerName,\n\t\t\t\t\t\tmodels: cached.models,\n\t\t\t\t\t\tfetchedAt: cached.fetchedAt,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst apiKey = await this.authStorage.getApiKey(providerName);\n\t\t\t\tif (!apiKey && !this.isProviderRequestReady(providerName)) continue;\n\n\t\t\t\tconst models = await adapter.fetchModels(apiKey ?? \"\", undefined);\n\t\t\t\tthis.discoveryCache.set(providerName, models);\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels,\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels: [],\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Convert and merge discovered models, then apply capability patches\n\t\tthis.discoveredModels = applyCapabilityPatches(this.convertDiscoveredModels(results));\n\t\treturn results;\n\t}\n\n\t/**\n\t * Get all models including discovered ones.\n\t * Discovered models are appended but never override existing models.\n\t */\n\tgetAllWithDiscovered(): Model<Api>[] {\n\t\tconst existingIds = new Set(this.models.map((m) => `${m.provider}/${m.id}`));\n\t\tconst unique = this.discoveredModels.filter((m) => !existingIds.has(`${m.provider}/${m.id}`));\n\t\treturn [...this.models, ...unique];\n\t}\n\n\t/**\n\t * Check if a model was added via discovery (not built-in or custom).\n\t */\n\tisDiscovered(model: Model<Api>): boolean {\n\t\treturn this.discoveredModels.some((m) => m.provider === model.provider && m.id === model.id);\n\t}\n\n\t/**\n\t * Get the discovery cache instance.\n\t */\n\tgetDiscoveryCache(): ModelDiscoveryCache {\n\t\treturn this.discoveryCache;\n\t}\n\n\t/**\n\t * Convert DiscoveryResult[] into Model<Api>[] with default values.\n\t */\n\tprivate convertDiscoveredModels(results: DiscoveryResult[]): Model<Api>[] {\n\t\tconst converted: Model<Api>[] = [];\n\t\tfor (const result of results) {\n\t\t\tif (result.error) continue;\n\t\t\tfor (const dm of result.models) {\n\t\t\t\tconverted.push({\n\t\t\t\t\tid: dm.id,\n\t\t\t\t\tname: dm.name ?? dm.id,\n\t\t\t\t\tapi: \"openai\" as Api,\n\t\t\t\t\tprovider: result.provider,\n\t\t\t\t\tbaseUrl: \"\",\n\t\t\t\t\treasoning: dm.reasoning ?? false,\n\t\t\t\t\tinput: dm.input ?? [\"text\"],\n\t\t\t\t\tcost: dm.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\t\t\tcontextWindow: dm.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: dm.maxTokens ?? 16384,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\t\treturn converted;\n\t}\n\n\t/**\n\t * Check if a model's baseUrl points to a local endpoint.\n\t * Delegates to standalone isLocalModel() function.\n\t */\n\tstatic isLocalModel(model: Model<Api>): boolean {\n\t\treturn isLocalModel(model);\n\t}\n\n\t/**\n\t * Check if all models in the registry are local.\n\t * Returns true only if every model passes isLocalModel().\n\t * Returns false if there are no models.\n\t */\n\tisAllLocalChain(): boolean {\n\t\tconst models = this.getAll();\n\t\tif (models.length === 0) return false;\n\t\treturn models.every((m) => isLocalModel(m));\n\t}\n}\n\n/**\n * Input type for registerProvider API.\n */\nexport interface ProviderConfigInput {\n\tauthMode?: ProviderAuthMode;\n\t/** Optional readiness check. Called by isProviderRequestReady() before default auth checks.\n\t * Trusted at the same level as extension code — extensions already have arbitrary code execution. */\n\tisReady?: () => boolean;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\t/** OAuth provider for /login support */\n\toauth?: Omit<OAuthProviderInterface, \"id\">;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number };\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: Model<Api>[\"compat\"];\n\t}>;\n}\n"]}
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\ttype Api,\n\tapplyCapabilityPatches,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tgetApiProvider,\n\tgetModels,\n\tgetProviders,\n\ttype KnownProvider,\n\ttype Model,\n\ttype OAuthProviderInterface,\n\ttype OpenAICompletionsCompat,\n\ttype OpenAIResponsesCompat,\n\tregisterApiProvider,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@gsd/pi-ai\";\nimport { registerOAuthProvider, resetOAuthProviders } from \"@gsd/pi-ai/oauth\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport AjvModule from \"ajv\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { getAgentDir } from \"../config.js\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { ModelDiscoveryCache } from \"./discovery-cache.js\";\nimport type { DiscoveredModel, DiscoveryResult } from \"./model-discovery.js\";\nimport { getDefaultTTL, getDiscoverableProviders, getDiscoveryAdapter } from \"./model-discovery.js\";\nimport { clearConfigValueCache, resolveConfigValue, resolveHeaders } from \"./resolve-config-value.js\";\nimport { isLocalModel } from \"./local-model-check.js\";\n\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv();\n\n// Schema for OpenRouter routing preferences\nconst OpenRouterRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for Vercel AI Gateway routing preferences\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for OpenAI compatibility settings\nconst OpenAICompletionsCompatSchema = Type.Object({\n\tsupportsStore: Type.Optional(Type.Boolean()),\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsupportsReasoningEffort: Type.Optional(Type.Boolean()),\n\tsupportsUsageInStreaming: Type.Optional(Type.Boolean()),\n\tmaxTokensField: Type.Optional(Type.Union([Type.Literal(\"max_completion_tokens\"), Type.Literal(\"max_tokens\")])),\n\trequiresToolResultName: Type.Optional(Type.Boolean()),\n\trequiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),\n\trequiresThinkingAsText: Type.Optional(Type.Boolean()),\n\trequiresMistralToolIds: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(Type.Union([Type.Literal(\"openai\"), Type.Literal(\"zai\"), Type.Literal(\"qwen\")])),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\t// Reserved for future use\n});\n\nconst OpenAICompatSchema = Type.Union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);\n\n// Schema for custom model definition\n// Most fields are optional with sensible defaults for local models (Ollama, LM Studio, etc.)\nconst ModelDefinitionSchema = Type.Object({\n\tid: Type.String({ minLength: 1 }),\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Number(),\n\t\t\toutput: Type.Number(),\n\t\t\tcacheRead: Type.Number(),\n\t\t\tcacheWrite: Type.Number(),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\n// Schema for per-model overrides (all fields optional, merged with built-in model)\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Optional(Type.Number()),\n\t\t\toutput: Type.Optional(Type.Number()),\n\t\t\tcacheRead: Type.Optional(Type.Number()),\n\t\t\tcacheWrite: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\ntype ModelOverride = Static<typeof ModelOverrideSchema>;\n\nconst ProviderConfigSchema = Type.Object({\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\tapiKey: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tauthHeader: Type.Optional(Type.Boolean()),\n\tmodels: Type.Optional(Type.Array(ModelDefinitionSchema)),\n\tmodelOverrides: Type.Optional(Type.Record(Type.String(), ModelOverrideSchema)),\n});\n\nconst ModelsConfigSchema = Type.Object({\n\tproviders: Type.Record(Type.String(), ProviderConfigSchema),\n});\n\najv.addSchema(ModelsConfigSchema, \"ModelsConfig\");\n\ntype ModelsConfig = Static<typeof ModelsConfigSchema>;\n\nexport type ProviderAuthMode = \"apiKey\" | \"oauth\" | \"externalCli\" | \"none\";\n\n/** Provider override config (baseUrl, headers, apiKey) without custom models */\ninterface ProviderOverride {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tapiKey?: string;\n}\n\n/** Result of loading custom models from models.json */\ninterface CustomModelsResult {\n\tmodels: Model<Api>[];\n\t/** Providers with baseUrl/headers/apiKey overrides for built-in models */\n\toverrides: Map<string, ProviderOverride>;\n\t/** Per-model overrides: provider -> modelId -> override */\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\terror: string | undefined;\n}\n\nfunction emptyCustomModelsResult(error?: string): CustomModelsResult {\n\treturn { models: [], overrides: new Map(), modelOverrides: new Map(), error };\n}\n\nfunction mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return baseCompat;\n\n\tconst base = baseCompat as OpenAICompletionsCompat | OpenAIResponsesCompat | undefined;\n\tconst override = overrideCompat as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\tconst merged = { ...base, ...override } as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\treturn merged as Model<Api>[\"compat\"];\n}\n\n/**\n * Deep merge a model override into a model.\n * Handles nested objects (cost, compat) by merging rather than replacing.\n */\nfunction applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\t// Simple field overrides\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\t// Merge cost (partial override)\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t};\n\t}\n\n\t// Merge headers\n\tif (override.headers) {\n\t\tconst resolvedHeaders = resolveHeaders(override.headers);\n\t\tresult.headers = resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers;\n\t}\n\n\t// Deep merge compat\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\n\treturn result;\n}\n\n\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate discoveredModels: Model<Api>[] = [];\n\tprivate discoveryCache: ModelDiscoveryCache;\n\tprivate customProviderApiKeys: Map<string, string> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate loadError: string | undefined = undefined;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\treadonly modelsJsonPath: string | undefined = join(getAgentDir(), \"models.json\"),\n\t) {\n\t\tthis.discoveryCache = new ModelDiscoveryCache();\n\n\t\t// Set up fallback resolver for custom provider API keys\n\t\tthis.authStorage.setFallbackResolver((provider) => {\n\t\t\tconst keyConfig = this.customProviderApiKeys.get(provider);\n\t\t\tif (keyConfig) {\n\t\t\t\treturn resolveConfigValue(keyConfig);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t});\n\n\t\t// Refresh models when credentials change (e.g., OAuth token refresh with new model limits)\n\t\tthis.authStorage.onCredentialChange(() => this.refresh());\n\n\t\t// Load models\n\t\tthis.loadModels();\n\t}\n\n\t/**\n\t * Reload models from disk (built-in + custom from models.json).\n\t */\n\trefresh(): void {\n\t\tthis.customProviderApiKeys.clear();\n\t\tthis.loadError = undefined;\n\n\t\t// Ensure dynamic API/OAuth registrations are rebuilt from current provider state.\n\t\tresetApiProviders();\n\t\tresetOAuthProviders();\n\n\t\tthis.loadModels();\n\n\t\tfor (const [providerName, config] of this.registeredProviders.entries()) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\t/**\n\t * Get any error from loading models.json (undefined if no error).\n\t */\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(): void {\n\t\t// Load custom models and overrides from models.json\n\t\tconst {\n\t\t\tmodels: customModels,\n\t\t\toverrides,\n\t\t\tmodelOverrides,\n\t\t\terror,\n\t\t} = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();\n\n\t\tif (error) {\n\t\t\tthis.loadError = error;\n\t\t\t// Keep built-in models even if custom models failed to load\n\t\t}\n\n\t\tconst builtInModels = this.loadBuiltInModels(overrides, modelOverrides);\n\t\tlet combined = this.mergeCustomModels(builtInModels, customModels);\n\n\t\t// Let OAuth providers modify their models (e.g., update baseUrl)\n\t\tfor (const oauthProvider of this.authStorage.getOAuthProviders()) {\n\t\t\tconst cred = this.authStorage.get(oauthProvider.id);\n\t\t\tif (cred?.type === \"oauth\" && oauthProvider.modifyModels) {\n\t\t\t\tcombined = oauthProvider.modifyModels(combined, cred);\n\t\t\t}\n\t\t}\n\n\t\t// Apply capability patches so custom/discovered/extension models get\n\t\t// capabilities (supportsXhigh, supportsServiceTier, etc.) that the\n\t\t// static pi-ai registry applies at module load for built-in models.\n\t\tthis.models = applyCapabilityPatches(combined);\n\t}\n\n\t/** Load built-in models and apply provider/model overrides */\n\tprivate loadBuiltInModels(\n\t\toverrides: Map<string, ProviderOverride>,\n\t\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\t): Model<Api>[] {\n\t\treturn getProviders().flatMap((provider) => {\n\t\t\tconst models = getModels(provider as KnownProvider) as Model<Api>[];\n\t\t\tconst providerOverride = overrides.get(provider);\n\t\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\t\treturn models.map((m) => {\n\t\t\t\tlet model = m;\n\n\t\t\t\t// Apply provider-level baseUrl/headers override\n\t\t\t\tif (providerOverride) {\n\t\t\t\t\tconst resolvedHeaders = resolveHeaders(providerOverride.headers);\n\t\t\t\t\tmodel = {\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\t\theaders: resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Apply per-model override\n\t\t\t\tconst modelOverride = perModelOverrides?.get(m.id);\n\t\t\t\tif (modelOverride) {\n\t\t\t\t\tmodel = applyModelOverride(model, modelOverride);\n\t\t\t\t}\n\n\t\t\t\treturn model;\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Merge custom models into built-in list by provider+id (custom wins on conflicts). */\n\tprivate mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\t\tconst merged = [...builtInModels];\n\t\tfor (const customModel of customModels) {\n\t\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tmerged[existingIndex] = customModel;\n\t\t\t} else {\n\t\t\t\tmerged.push(customModel);\n\t\t\t}\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate loadCustomModels(modelsJsonPath: string): CustomModelsResult {\n\t\tif (!existsSync(modelsJsonPath)) {\n\t\t\treturn emptyCustomModelsResult();\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(modelsJsonPath, \"utf-8\");\n\t\t\tconst config: ModelsConfig = JSON.parse(content);\n\n\t\t\t// Validate schema\n\t\t\tconst validate = ajv.getSchema(\"ModelsConfig\")!;\n\t\t\tif (!validate(config)) {\n\t\t\t\tconst errors =\n\t\t\t\t\tvalidate.errors?.map((e: any) => ` - ${e.instancePath || \"root\"}: ${e.message}`).join(\"\\n\") ||\n\t\t\t\t\t\"Unknown schema error\";\n\t\t\t\treturn emptyCustomModelsResult(`Invalid models.json schema:\\n${errors}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\n\t\t\t// Additional validation\n\t\t\tthis.validateConfig(config);\n\n\t\t\tconst overrides = new Map<string, ProviderOverride>();\n\t\t\tconst modelOverrides = new Map<string, Map<string, ModelOverride>>();\n\n\t\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\t\t// Apply provider-level baseUrl/headers/apiKey override to built-in models when configured.\n\t\t\t\tif (providerConfig.baseUrl || providerConfig.headers || providerConfig.apiKey) {\n\t\t\t\t\toverrides.set(providerName, {\n\t\t\t\t\t\tbaseUrl: providerConfig.baseUrl,\n\t\t\t\t\t\theaders: providerConfig.headers,\n\t\t\t\t\t\tapiKey: providerConfig.apiKey,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Store API key for fallback resolver.\n\t\t\t\tif (providerConfig.apiKey) {\n\t\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t\t}\n\n\t\t\t\tif (providerConfig.modelOverrides) {\n\t\t\t\t\tmodelOverrides.set(providerName, new Map(Object.entries(providerConfig.modelOverrides)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { models: this.parseModels(config), overrides, modelOverrides, error: undefined };\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\treturn emptyCustomModelsResult(`Failed to parse models.json: ${error.message}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\t\t\treturn emptyCustomModelsResult(\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${modelsJsonPath}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate validateConfig(config: ModelsConfig): void {\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst hasProviderApi = !!providerConfig.api;\n\t\t\tconst models = providerConfig.models ?? [];\n\t\t\tconst hasModelOverrides =\n\t\t\t\tproviderConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;\n\n\t\t\tif (models.length === 0) {\n\t\t\t\t// Override-only config: needs baseUrl OR modelOverrides (or both)\n\t\t\t\tif (!providerConfig.baseUrl && !hasModelOverrides) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: must specify \"baseUrl\", \"modelOverrides\", or \"models\".`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Custom models are merged into provider models and require endpoint + auth.\n\t\t\t\tif (!providerConfig.baseUrl) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t\tif (!providerConfig.apiKey) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"apiKey\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const modelDef of models) {\n\t\t\t\tconst hasModelApi = !!modelDef.api;\n\n\t\t\t\tif (!hasProviderApi && !hasModelApi) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified. Set at provider or model level.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!modelDef.id) throw new Error(`Provider ${providerName}: model missing \"id\"`);\n\t\t\t\t// Validate contextWindow/maxTokens only if provided (they have defaults)\n\t\t\t\tif (modelDef.contextWindow !== undefined && modelDef.contextWindow <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);\n\t\t\t\tif (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseModels(config: ModelsConfig): Model<Api>[] {\n\t\tconst models: Model<Api>[] = [];\n\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst modelDefs = providerConfig.models ?? [];\n\t\t\tif (modelDefs.length === 0) continue; // Override-only, no custom models\n\n\t\t\t// Store API key config for fallback resolver\n\t\t\tif (providerConfig.apiKey) {\n\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t}\n\n\t\t\tfor (const modelDef of modelDefs) {\n\t\t\t\tconst api = modelDef.api || providerConfig.api;\n\t\t\t\tif (!api) continue;\n\n\t\t\t\t// Merge headers: provider headers are base, model headers override\n\t\t\t\t// Resolve env vars and shell commands in header values\n\t\t\t\tconst providerHeaders = resolveHeaders(providerConfig.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header with resolved API key\n\t\t\t\tif (providerConfig.authHeader && providerConfig.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(providerConfig.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Provider baseUrl is required when custom models are defined.\n\t\t\t\t// Individual models can override it with modelDef.baseUrl.\n\t\t\t\tconst defaultCost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\n\t\t\t\tmodels.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name ?? modelDef.id,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: modelDef.baseUrl ?? providerConfig.baseUrl!,\n\t\t\t\t\treasoning: modelDef.reasoning ?? false,\n\t\t\t\t\tinput: (modelDef.input ?? [\"text\"]) as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost ?? defaultCost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens ?? 16384,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\n\t\treturn models;\n\t}\n\n\t/**\n\t * Get all models (built-in + custom).\n\t * If models.json had errors, returns only built-in models.\n\t */\n\tgetAll(): Model<Api>[] {\n\t\treturn this.models;\n\t}\n\n\t/**\n\t * Get only models that have auth configured.\n\t * This is a fast check that doesn't refresh OAuth tokens.\n\t */\n\tgetAvailable(): Model<Api>[] {\n\t\treturn this.models.filter((m) => this.isProviderRequestReady(m.provider));\n\t}\n\n\t/**\n\t * Get auth mode for a provider.\n\t * Defaults to \"apiKey\" for built-ins and providers without explicit mode.\n\t */\n\tgetProviderAuthMode(provider: string): ProviderAuthMode {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (!config) return \"apiKey\";\n\t\tif (config.authMode) return config.authMode;\n\t\tif (config.oauth) return \"oauth\";\n\t\tif (config.apiKey) return \"apiKey\";\n\t\treturn \"apiKey\";\n\t}\n\n\t/**\n\t * Whether a provider can be used for requests/fallback without hard auth gating.\n\t */\n\tisProviderRequestReady(provider: string): boolean {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (config?.isReady) return config.isReady();\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return true;\n\t\treturn this.authStorage.hasAuth(provider);\n\t}\n\n\t/**\n\t * Find a model by provider and ID.\n\t */\n\tfind(provider: string, modelId: string): Model<Api> | undefined {\n\t\treturn this.models.find((m) => m.provider === provider && m.id === modelId);\n\t}\n\n\t/**\n\t * Get API key for a model.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKey(model: Model<Api>, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(model.provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(model.provider, sessionId, { baseUrl: model.baseUrl });\n\t}\n\n\t/**\n\t * Get API key for a provider.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKeyForProvider(provider: string, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(provider, sessionId);\n\t}\n\n\t/**\n\t * Check if a model is using OAuth credentials (subscription).\n\t */\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\t/**\n\t * Register a provider dynamically (from extensions).\n\t *\n\t * If provider has models: replaces all existing models for this provider.\n\t * If provider has only baseUrl/headers: overrides existing models' URLs.\n\t * If provider has oauth: registers OAuth provider for /login support.\n\t */\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void {\n\t\tthis.registeredProviders.set(providerName, config);\n\t\tthis.applyProviderConfig(providerName, config);\n\t}\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes the provider from the registry and reloads models from disk so that\n\t * built-in models overridden by this provider are restored to their original state.\n\t * Also resets dynamic OAuth and API stream registrations before reapplying\n\t * remaining dynamic providers.\n\t * Has no effect if the provider was never registered.\n\t */\n\tunregisterProvider(providerName: string): void {\n\t\tif (!this.registeredProviders.has(providerName)) return;\n\t\tthis.registeredProviders.delete(providerName);\n\t\tthis.customProviderApiKeys.delete(providerName);\n\t\tthis.refresh();\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput): void {\n\t\t// Register OAuth provider if provided\n\t\tif (config.oauth) {\n\t\t\t// Ensure the OAuth provider ID matches the provider name\n\t\t\tconst oauthProvider: OAuthProviderInterface = {\n\t\t\t\t...config.oauth,\n\t\t\t\tid: providerName,\n\t\t\t};\n\t\t\tregisterOAuthProvider(oauthProvider);\n\t\t}\n\n\t\tif (config.streamSimple) {\n\t\t\tif (!config.api) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"api\" is required when registering streamSimple.`);\n\t\t\t}\n\t\t\tconst rawStreamSimple = config.streamSimple;\n\t\t\tconst authMode = config.authMode ?? \"apiKey\";\n\n\t\t\t// Keyless providers never see apiKey in options — enforced at registration,\n\t\t\t// not by convention. Prevents undefined from reaching any handler.\n\t\t\tconst streamSimple = (authMode === \"externalCli\" || authMode === \"none\")\n\t\t\t\t? ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\t\t\t\t\tconst { apiKey: _, ...opts } = options ?? {};\n\t\t\t\t\t\treturn rawStreamSimple(model, context, opts as SimpleStreamOptions);\n\t\t\t\t\t})\n\t\t\t\t: rawStreamSimple;\n\n\t\t\t// Guard: if there's already a handler registered for this API, wrap\n\t\t\t// the new one so it only fires for models from this provider and\n\t\t\t// delegates to the previous handler for all other providers. Without\n\t\t\t// this, a custom provider using api:\"anthropic-messages\" would clobber\n\t\t\t// the built-in Anthropic stream handler (#2536).\n\t\t\tconst existingProvider = getApiProvider(config.api as Api);\n\t\t\tconst scopedStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn streamSimple(model, context, options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.streamSimple(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: streamSimple;\n\n\t\t\tconst newFullStream = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) =>\n\t\t\t\tscopedStream(model, context, options as SimpleStreamOptions);\n\t\t\tconst scopedFullStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: Record<string, unknown>) => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn newFullStream(model, context, options as SimpleStreamOptions);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.stream(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: newFullStream;\n\n\t\t\tregisterApiProvider(\n\t\t\t\t{\n\t\t\t\t\tapi: config.api,\n\t\t\t\t\tstream: scopedFullStream as any,\n\t\t\t\t\tstreamSimple: scopedStream,\n\t\t\t\t},\n\t\t\t\t`provider:${providerName}`,\n\t\t\t);\n\t\t}\n\n\t\t// Store API key for auth resolution\n\t\tif (config.apiKey) {\n\t\t\tthis.customProviderApiKeys.set(providerName, config.apiKey);\n\t\t}\n\n\t\tif (config.models && config.models.length > 0) {\n\t\t\t// Full replacement: remove existing models for this provider\n\t\t\tthis.models = this.models.filter((m) => m.provider !== providerName);\n\n\t\t\t// Validate required fields\n\t\t\tif (!config.baseUrl) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining models.`);\n\t\t\t}\n\t\t\tconst authMode = config.authMode ?? (config.oauth ? \"oauth\" : config.apiKey ? \"apiKey\" : \"apiKey\");\n\t\t\tif (authMode === \"apiKey\" && !config.apiKey && !config.oauth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" or \"oauth\" is required when authMode is \"apiKey\" (the default). ` +\n\t\t\t\t\t`Set authMode to \"externalCli\" or \"none\" for keyless providers.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && !config.streamSimple) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"streamSimple\" is required when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers must supply their own stream handler.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && config.apiKey) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" cannot be set when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers should not provide API key credentials.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse and add new models\n\t\t\tfor (const modelDef of config.models) {\n\t\t\t\tconst api = modelDef.api || config.api;\n\t\t\t\tif (!api) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified.`);\n\t\t\t\t}\n\n\t\t\t\t// Merge headers\n\t\t\t\tconst providerHeaders = resolveHeaders(config.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header\n\t\t\t\tif (config.authHeader && config.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(config.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.models.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: config.baseUrl,\n\t\t\t\t\treasoning: modelDef.reasoning,\n\t\t\t\t\tinput: modelDef.input as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\n\t\t\t// Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)\n\t\t\tif (config.oauth?.modifyModels) {\n\t\t\t\tconst cred = this.authStorage.get(providerName);\n\t\t\t\tif (cred?.type === \"oauth\") {\n\t\t\t\t\tthis.models = config.oauth.modifyModels(this.models, cred);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure newly added extension models get capability patches\n\t\t\tthis.models = applyCapabilityPatches(this.models);\n\t\t} else if (config.baseUrl) {\n\t\t\t// Override-only: update baseUrl/headers for existing models\n\t\t\tconst resolvedHeaders = resolveHeaders(config.headers);\n\t\t\tthis.models = this.models.map((m) => {\n\t\t\t\tif (m.provider !== providerName) return m;\n\t\t\t\treturn {\n\t\t\t\t\t...m,\n\t\t\t\t\tbaseUrl: config.baseUrl ?? m.baseUrl,\n\t\t\t\t\theaders: resolvedHeaders ? { ...m.headers, ...resolvedHeaders } : m.headers,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Discover models from all providers that support discovery.\n\t * Results are cached and merged into the registry (never overrides existing models).\n\t */\n\tasync discoverModels(providers?: string[]): Promise<DiscoveryResult[]> {\n\t\tconst targetProviders = providers ?? getDiscoverableProviders();\n\t\tconst results: DiscoveryResult[] = [];\n\n\t\tfor (const providerName of targetProviders) {\n\t\t\tconst adapter = getDiscoveryAdapter(providerName);\n\t\t\tif (!adapter.supportsDiscovery) continue;\n\n\t\t\t// Skip if cache is still fresh\n\t\t\tif (!this.discoveryCache.isStale(providerName)) {\n\t\t\t\tconst cached = this.discoveryCache.get(providerName);\n\t\t\t\tif (cached) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tprovider: providerName,\n\t\t\t\t\t\tmodels: cached.models,\n\t\t\t\t\t\tfetchedAt: cached.fetchedAt,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst apiKey = await this.authStorage.getApiKey(providerName);\n\t\t\t\tif (!apiKey && !this.isProviderRequestReady(providerName)) continue;\n\n\t\t\t\tconst models = await adapter.fetchModels(apiKey ?? \"\", undefined);\n\t\t\t\tthis.discoveryCache.set(providerName, models);\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels,\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels: [],\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Convert and merge discovered models, then apply capability patches\n\t\tthis.discoveredModels = applyCapabilityPatches(this.convertDiscoveredModels(results));\n\t\treturn results;\n\t}\n\n\t/**\n\t * Get all models including discovered ones.\n\t * Discovered models are appended but never override existing models.\n\t */\n\tgetAllWithDiscovered(): Model<Api>[] {\n\t\tconst existingIds = new Set(this.models.map((m) => `${m.provider}/${m.id}`));\n\t\tconst unique = this.discoveredModels.filter((m) => !existingIds.has(`${m.provider}/${m.id}`));\n\t\treturn [...this.models, ...unique];\n\t}\n\n\t/**\n\t * Check if a model was added via discovery (not built-in or custom).\n\t */\n\tisDiscovered(model: Model<Api>): boolean {\n\t\treturn this.discoveredModels.some((m) => m.provider === model.provider && m.id === model.id);\n\t}\n\n\t/**\n\t * Get the discovery cache instance.\n\t */\n\tgetDiscoveryCache(): ModelDiscoveryCache {\n\t\treturn this.discoveryCache;\n\t}\n\n\t/**\n\t * Convert DiscoveryResult[] into Model<Api>[] with default values.\n\t */\n\tprivate convertDiscoveredModels(results: DiscoveryResult[]): Model<Api>[] {\n\t\tconst converted: Model<Api>[] = [];\n\t\tfor (const result of results) {\n\t\t\tif (result.error) continue;\n\t\t\tfor (const dm of result.models) {\n\t\t\t\tconverted.push({\n\t\t\t\t\tid: dm.id,\n\t\t\t\t\tname: dm.name ?? dm.id,\n\t\t\t\t\tapi: \"openai\" as Api,\n\t\t\t\t\tprovider: result.provider,\n\t\t\t\t\tbaseUrl: \"\",\n\t\t\t\t\treasoning: dm.reasoning ?? false,\n\t\t\t\t\tinput: dm.input ?? [\"text\"],\n\t\t\t\t\tcost: dm.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\t\t\tcontextWindow: dm.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: dm.maxTokens ?? 16384,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\t\treturn converted;\n\t}\n\n\t/**\n\t * Check if a model's baseUrl points to a local endpoint.\n\t * Delegates to standalone isLocalModel() function.\n\t */\n\tstatic isLocalModel(model: Model<Api>): boolean {\n\t\treturn isLocalModel(model);\n\t}\n\n\t/**\n\t * Check if all models in the registry are local.\n\t * Returns true only if every model passes isLocalModel().\n\t * Returns false if there are no models.\n\t */\n\tisAllLocalChain(): boolean {\n\t\tconst models = this.getAll();\n\t\tif (models.length === 0) return false;\n\t\treturn models.every((m) => isLocalModel(m));\n\t}\n}\n\n/**\n * Input type for registerProvider API.\n */\nexport interface ProviderConfigInput {\n\tauthMode?: ProviderAuthMode;\n\t/** Optional readiness check. Called by isProviderRequestReady() before default auth checks.\n\t * Trusted at the same level as extension code — extensions already have arbitrary code execution. */\n\tisReady?: () => boolean;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\t/** OAuth provider for /login support */\n\toauth?: Omit<OAuthProviderInterface, \"id\">;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number };\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: Model<Api>[\"compat\"];\n\t}>;\n}\n"]}
@@ -15,10 +15,12 @@ export declare class ProviderManagerComponent extends Container implements Focus
15
15
  private tui;
16
16
  private authStorage;
17
17
  private modelRegistry;
18
+ private modelsJsonWriter;
18
19
  private onDone;
19
20
  private onDiscover;
20
21
  constructor(tui: TUI, authStorage: AuthStorage, modelRegistry: ModelRegistry, onDone: () => void, onDiscover: (provider: string) => void);
21
22
  private loadProviders;
23
+ private clampSelectedIndex;
22
24
  private updateList;
23
25
  handleInput(keyData: string): void;
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAId,KAAK,GAAG,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAWrE,qBAAa,wBAAyB,SAAQ,SAAU,YAAW,SAAS;IAC3E,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAA6B;gBAG9C,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,IAAI,EAClB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;IA+BvC,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,UAAU;IA0BlB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CA8BlC"}
1
+ {"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAId,KAAK,GAAG,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAYrE,qBAAa,wBAAyB,SAAQ,SAAU,YAAW,SAAS;IAC3E,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAA6B;gBAG9C,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,IAAI,EAClB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;IAgCvC,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,UAAU;IA0BlB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAgClC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { Container, getEditorKeybindings, Spacer, Text, } from "@gsd/pi-tui";
6
6
  import { getDiscoverableProviders } from "../../../core/model-discovery.js";
7
+ import { ModelsJsonWriter } from "../../../core/models-json-writer.js";
7
8
  import { theme } from "../theme/theme.js";
8
9
  import { rawKeyHint } from "./keybinding-hints.js";
9
10
  export class ProviderManagerComponent extends Container {
@@ -21,6 +22,7 @@ export class ProviderManagerComponent extends Container {
21
22
  this.tui = tui;
22
23
  this.authStorage = authStorage;
23
24
  this.modelRegistry = modelRegistry;
25
+ this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);
24
26
  this.onDone = onDone;
25
27
  this.onDiscover = onDiscover;
26
28
  // Header
@@ -29,7 +31,7 @@ export class ProviderManagerComponent extends Container {
29
31
  // Hints
30
32
  const hints = [
31
33
  rawKeyHint("d", "discover"),
32
- rawKeyHint("r", "remove auth"),
34
+ rawKeyHint("r", "remove"),
33
35
  rawKeyHint("esc", "close"),
34
36
  ].join(" ");
35
37
  this.addChild(new Text(hints, 0, 0));
@@ -61,6 +63,14 @@ export class ProviderManagerComponent extends Container {
61
63
  supportsDiscovery: discoverableSet.has(name),
62
64
  modelCount: providerModelCounts.get(name) ?? 0,
63
65
  }));
66
+ this.clampSelectedIndex();
67
+ }
68
+ clampSelectedIndex() {
69
+ if (this.providers.length === 0) {
70
+ this.selectedIndex = 0;
71
+ return;
72
+ }
73
+ this.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);
64
74
  }
65
75
  updateList() {
66
76
  this.listContainer.clear();
@@ -109,8 +119,10 @@ export class ProviderManagerComponent extends Container {
109
119
  }
110
120
  else if (keyData === "r" || keyData === "R") {
111
121
  const provider = this.providers[this.selectedIndex];
112
- if (provider?.hasAuth) {
122
+ if (provider) {
113
123
  this.authStorage.remove(provider.name);
124
+ this.modelsJsonWriter.removeProvider(provider.name);
125
+ this.modelRegistry.refresh();
114
126
  this.loadProviders();
115
127
  this.updateList();
116
128
  this.tui.requestRender();
@@ -1 +1 @@
1
- {"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TUI component for managing provider configurations.\n * Shows providers with auth status, discovery support, and model counts.\n */\n\nimport {\n\tContainer,\n\ttype Focusable,\n\tgetEditorKeybindings,\n\tSpacer,\n\tText,\n\ttype TUI,\n} from \"@gsd/pi-tui\";\nimport type { AuthStorage } from \"../../../core/auth-storage.js\";\nimport { getDiscoverableProviders } from \"../../../core/model-discovery.js\";\nimport type { ModelRegistry } from \"../../../core/model-registry.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { rawKeyHint } from \"./keybinding-hints.js\";\n\ninterface ProviderInfo {\n\tname: string;\n\thasAuth: boolean;\n\tsupportsDiscovery: boolean;\n\tmodelCount: number;\n}\n\nexport class ProviderManagerComponent extends Container implements Focusable {\n\tprivate _focused = false;\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t}\n\n\tprivate providers: ProviderInfo[] = [];\n\tprivate selectedIndex = 0;\n\tprivate listContainer: Container;\n\tprivate tui: TUI;\n\tprivate authStorage: AuthStorage;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate onDone: () => void;\n\tprivate onDiscover: (provider: string) => void;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\tauthStorage: AuthStorage,\n\t\tmodelRegistry: ModelRegistry,\n\t\tonDone: () => void,\n\t\tonDiscover: (provider: string) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.tui = tui;\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.onDone = onDone;\n\t\tthis.onDiscover = onDiscover;\n\n\t\t// Header\n\t\tthis.addChild(new Text(theme.fg(\"accent\", \"Provider Manager\"), 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Hints\n\t\tconst hints = [\n\t\t\trawKeyHint(\"d\", \"discover\"),\n\t\t\trawKeyHint(\"r\", \"remove auth\"),\n\t\t\trawKeyHint(\"esc\", \"close\"),\n\t\t].join(\" \");\n\t\tthis.addChild(new Text(hints, 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// List\n\t\tthis.listContainer = new Container();\n\t\tthis.addChild(this.listContainer);\n\n\t\tthis.loadProviders();\n\t\tthis.updateList();\n\t}\n\n\tprivate loadProviders(): void {\n\t\tconst discoverableSet = new Set(getDiscoverableProviders());\n\t\tconst allModels = this.modelRegistry.getAll();\n\n\t\t// Group models by provider\n\t\tconst providerModelCounts = new Map<string, number>();\n\t\tfor (const model of allModels) {\n\t\t\tproviderModelCounts.set(model.provider, (providerModelCounts.get(model.provider) ?? 0) + 1);\n\t\t}\n\n\t\t// Build provider list from all known providers\n\t\tconst providerNames = new Set([\n\t\t\t...providerModelCounts.keys(),\n\t\t\t...discoverableSet,\n\t\t]);\n\n\t\tthis.providers = Array.from(providerNames)\n\t\t\t.sort()\n\t\t\t.map((name) => ({\n\t\t\t\tname,\n\t\t\t\thasAuth: this.authStorage.hasAuth(name),\n\t\t\t\tsupportsDiscovery: discoverableSet.has(name),\n\t\t\t\tmodelCount: providerModelCounts.get(name) ?? 0,\n\t\t\t}));\n\t}\n\n\tprivate updateList(): void {\n\t\tthis.listContainer.clear();\n\n\t\tfor (let i = 0; i < this.providers.length; i++) {\n\t\t\tconst p = this.providers[i];\n\t\t\tconst isSelected = i === this.selectedIndex;\n\n\t\t\tconst authBadge = p.hasAuth ? theme.fg(\"success\", \"[auth]\") : theme.fg(\"muted\", \"[no auth]\");\n\t\t\tconst discoveryBadge = p.supportsDiscovery ? theme.fg(\"accent\", \"[discovery]\") : \"\";\n\t\t\tconst countBadge = theme.fg(\"muted\", `(${p.modelCount} models)`);\n\n\t\t\tconst prefix = isSelected ? theme.fg(\"accent\", \"> \") : \" \";\n\t\t\tconst nameText = isSelected ? theme.fg(\"accent\", p.name) : p.name;\n\n\t\t\tconst parts = [prefix, nameText, \" \", authBadge];\n\t\t\tif (discoveryBadge) parts.push(\" \", discoveryBadge);\n\t\t\tparts.push(\" \", countBadge);\n\n\t\t\tthis.listContainer.addChild(new Text(parts.join(\"\"), 0, 0));\n\t\t}\n\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.listContainer.addChild(new Text(theme.fg(\"muted\", \" No providers configured\"), 0, 0));\n\t\t}\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst kb = getEditorKeybindings();\n\n\t\tif (kb.matches(keyData, \"selectUp\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.providers.length - 1 : this.selectedIndex - 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectDown\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === this.providers.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectCancel\")) {\n\t\t\tthis.onDone();\n\t\t} else if (keyData === \"d\" || keyData === \"D\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.supportsDiscovery) {\n\t\t\t\tthis.onDiscover(provider.name);\n\t\t\t}\n\t\t} else if (keyData === \"r\" || keyData === \"R\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.hasAuth) {\n\t\t\t\tthis.authStorage.remove(provider.name);\n\t\t\t\tthis.loadProviders();\n\t\t\t\tthis.updateList();\n\t\t\t\tthis.tui.requestRender();\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TUI component for managing provider configurations.\n * Shows providers with auth status, discovery support, and model counts.\n */\n\nimport {\n\tContainer,\n\ttype Focusable,\n\tgetEditorKeybindings,\n\tSpacer,\n\tText,\n\ttype TUI,\n} from \"@gsd/pi-tui\";\nimport type { AuthStorage } from \"../../../core/auth-storage.js\";\nimport { getDiscoverableProviders } from \"../../../core/model-discovery.js\";\nimport type { ModelRegistry } from \"../../../core/model-registry.js\";\nimport { ModelsJsonWriter } from \"../../../core/models-json-writer.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { rawKeyHint } from \"./keybinding-hints.js\";\n\ninterface ProviderInfo {\n\tname: string;\n\thasAuth: boolean;\n\tsupportsDiscovery: boolean;\n\tmodelCount: number;\n}\n\nexport class ProviderManagerComponent extends Container implements Focusable {\n\tprivate _focused = false;\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t}\n\n\tprivate providers: ProviderInfo[] = [];\n\tprivate selectedIndex = 0;\n\tprivate listContainer: Container;\n\tprivate tui: TUI;\n\tprivate authStorage: AuthStorage;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate modelsJsonWriter: ModelsJsonWriter;\n\tprivate onDone: () => void;\n\tprivate onDiscover: (provider: string) => void;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\tauthStorage: AuthStorage,\n\t\tmodelRegistry: ModelRegistry,\n\t\tonDone: () => void,\n\t\tonDiscover: (provider: string) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.tui = tui;\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);\n\t\tthis.onDone = onDone;\n\t\tthis.onDiscover = onDiscover;\n\n\t\t// Header\n\t\tthis.addChild(new Text(theme.fg(\"accent\", \"Provider Manager\"), 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Hints\n\t\tconst hints = [\n\t\t\trawKeyHint(\"d\", \"discover\"),\n\t\t\trawKeyHint(\"r\", \"remove\"),\n\t\t\trawKeyHint(\"esc\", \"close\"),\n\t\t].join(\" \");\n\t\tthis.addChild(new Text(hints, 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// List\n\t\tthis.listContainer = new Container();\n\t\tthis.addChild(this.listContainer);\n\n\t\tthis.loadProviders();\n\t\tthis.updateList();\n\t}\n\n\tprivate loadProviders(): void {\n\t\tconst discoverableSet = new Set(getDiscoverableProviders());\n\t\tconst allModels = this.modelRegistry.getAll();\n\n\t\t// Group models by provider\n\t\tconst providerModelCounts = new Map<string, number>();\n\t\tfor (const model of allModels) {\n\t\t\tproviderModelCounts.set(model.provider, (providerModelCounts.get(model.provider) ?? 0) + 1);\n\t\t}\n\n\t\t// Build provider list from all known providers\n\t\tconst providerNames = new Set([\n\t\t\t...providerModelCounts.keys(),\n\t\t\t...discoverableSet,\n\t\t]);\n\n\t\tthis.providers = Array.from(providerNames)\n\t\t\t.sort()\n\t\t\t.map((name) => ({\n\t\t\t\tname,\n\t\t\t\thasAuth: this.authStorage.hasAuth(name),\n\t\t\t\tsupportsDiscovery: discoverableSet.has(name),\n\t\t\t\tmodelCount: providerModelCounts.get(name) ?? 0,\n\t\t\t}));\n\t\tthis.clampSelectedIndex();\n\t}\n\n\tprivate clampSelectedIndex(): void {\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.selectedIndex = 0;\n\t\t\treturn;\n\t\t}\n\t\tthis.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);\n\t}\n\n\tprivate updateList(): void {\n\t\tthis.listContainer.clear();\n\n\t\tfor (let i = 0; i < this.providers.length; i++) {\n\t\t\tconst p = this.providers[i];\n\t\t\tconst isSelected = i === this.selectedIndex;\n\n\t\t\tconst authBadge = p.hasAuth ? theme.fg(\"success\", \"[auth]\") : theme.fg(\"muted\", \"[no auth]\");\n\t\t\tconst discoveryBadge = p.supportsDiscovery ? theme.fg(\"accent\", \"[discovery]\") : \"\";\n\t\t\tconst countBadge = theme.fg(\"muted\", `(${p.modelCount} models)`);\n\n\t\t\tconst prefix = isSelected ? theme.fg(\"accent\", \"> \") : \" \";\n\t\t\tconst nameText = isSelected ? theme.fg(\"accent\", p.name) : p.name;\n\n\t\t\tconst parts = [prefix, nameText, \" \", authBadge];\n\t\t\tif (discoveryBadge) parts.push(\" \", discoveryBadge);\n\t\t\tparts.push(\" \", countBadge);\n\n\t\t\tthis.listContainer.addChild(new Text(parts.join(\"\"), 0, 0));\n\t\t}\n\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.listContainer.addChild(new Text(theme.fg(\"muted\", \" No providers configured\"), 0, 0));\n\t\t}\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst kb = getEditorKeybindings();\n\n\t\tif (kb.matches(keyData, \"selectUp\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.providers.length - 1 : this.selectedIndex - 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectDown\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === this.providers.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectCancel\")) {\n\t\t\tthis.onDone();\n\t\t} else if (keyData === \"d\" || keyData === \"D\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.supportsDiscovery) {\n\t\t\t\tthis.onDiscover(provider.name);\n\t\t\t}\n\t\t} else if (keyData === \"r\" || keyData === \"R\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider) {\n\t\t\t\tthis.authStorage.remove(provider.name);\n\t\t\t\tthis.modelsJsonWriter.removeProvider(provider.name);\n\t\t\t\tthis.modelRegistry.refresh();\n\t\t\t\tthis.loadProviders();\n\t\t\t\tthis.updateList();\n\t\t\t\tthis.tui.requestRender();\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gsd/pi-coding-agent",
3
- "version": "2.54.0",
3
+ "version": "2.56.0",
4
4
  "description": "Coding agent CLI (vendored from pi-mono)",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -235,7 +235,7 @@ export class ModelRegistry {
235
235
 
236
236
  constructor(
237
237
  readonly authStorage: AuthStorage,
238
- private modelsJsonPath: string | undefined = join(getAgentDir(), "models.json"),
238
+ readonly modelsJsonPath: string | undefined = join(getAgentDir(), "models.json"),
239
239
  ) {
240
240
  this.discoveryCache = new ModelDiscoveryCache();
241
241
 
@@ -14,6 +14,7 @@ import {
14
14
  import type { AuthStorage } from "../../../core/auth-storage.js";
15
15
  import { getDiscoverableProviders } from "../../../core/model-discovery.js";
16
16
  import type { ModelRegistry } from "../../../core/model-registry.js";
17
+ import { ModelsJsonWriter } from "../../../core/models-json-writer.js";
17
18
  import { theme } from "../theme/theme.js";
18
19
  import { rawKeyHint } from "./keybinding-hints.js";
19
20
 
@@ -39,6 +40,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
39
40
  private tui: TUI;
40
41
  private authStorage: AuthStorage;
41
42
  private modelRegistry: ModelRegistry;
43
+ private modelsJsonWriter: ModelsJsonWriter;
42
44
  private onDone: () => void;
43
45
  private onDiscover: (provider: string) => void;
44
46
 
@@ -54,6 +56,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
54
56
  this.tui = tui;
55
57
  this.authStorage = authStorage;
56
58
  this.modelRegistry = modelRegistry;
59
+ this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);
57
60
  this.onDone = onDone;
58
61
  this.onDiscover = onDiscover;
59
62
 
@@ -64,7 +67,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
64
67
  // Hints
65
68
  const hints = [
66
69
  rawKeyHint("d", "discover"),
67
- rawKeyHint("r", "remove auth"),
70
+ rawKeyHint("r", "remove"),
68
71
  rawKeyHint("esc", "close"),
69
72
  ].join(" ");
70
73
  this.addChild(new Text(hints, 0, 0));
@@ -102,6 +105,15 @@ export class ProviderManagerComponent extends Container implements Focusable {
102
105
  supportsDiscovery: discoverableSet.has(name),
103
106
  modelCount: providerModelCounts.get(name) ?? 0,
104
107
  }));
108
+ this.clampSelectedIndex();
109
+ }
110
+
111
+ private clampSelectedIndex(): void {
112
+ if (this.providers.length === 0) {
113
+ this.selectedIndex = 0;
114
+ return;
115
+ }
116
+ this.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);
105
117
  }
106
118
 
107
119
  private updateList(): void {
@@ -152,8 +164,10 @@ export class ProviderManagerComponent extends Container implements Focusable {
152
164
  }
153
165
  } else if (keyData === "r" || keyData === "R") {
154
166
  const provider = this.providers[this.selectedIndex];
155
- if (provider?.hasAuth) {
167
+ if (provider) {
156
168
  this.authStorage.remove(provider.name);
169
+ this.modelsJsonWriter.removeProvider(provider.name);
170
+ this.modelRegistry.refresh();
157
171
  this.loadProviders();
158
172
  this.updateList();
159
173
  this.tui.requestRender();
package/pkg/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glittercowboy/gsd",
3
- "version": "2.54.0",
3
+ "version": "2.56.0",
4
4
  "piConfig": {
5
5
  "name": "gsd",
6
6
  "configDir": ".gsd"
@@ -18,25 +18,6 @@ const { existsSync, statSync, readdirSync } = require('fs')
18
18
  const { resolve, join } = require('path')
19
19
  const { execSync } = require('child_process')
20
20
 
21
- const root = resolve(__dirname, '..')
22
- const packagesDir = join(root, 'packages')
23
-
24
- // Skip if packages/ doesn't exist (published tarball / end-user install)
25
- if (!existsSync(packagesDir)) process.exit(0)
26
-
27
- // Skip in CI — the pipeline runs `npm run build` explicitly
28
- if (process.env.CI === 'true' || process.env.CI === '1') process.exit(0)
29
-
30
- // Workspace packages that need dist/index.js at runtime.
31
- // Order matters: dependencies must build before dependents.
32
- const WORKSPACE_PACKAGES = [
33
- 'native',
34
- 'pi-tui',
35
- 'pi-ai',
36
- 'pi-agent-core',
37
- 'pi-coding-agent',
38
- ]
39
-
40
21
  /**
41
22
  * Returns the most recent mtime (ms) of any .ts file under dir, recursively.
42
23
  * Returns 0 if no .ts files found.
@@ -56,31 +37,54 @@ function newestSrcMtime(dir) {
56
37
  return newest
57
38
  }
58
39
 
59
- const stale = []
60
- for (const pkg of WORKSPACE_PACKAGES) {
61
- const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
62
- if (!existsSync(distIndex)) {
63
- stale.push(pkg)
64
- continue
65
- }
66
- const distMtime = statSync(distIndex).mtimeMs
67
- const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
68
- if (srcMtime > distMtime) {
69
- stale.push(pkg)
40
+ if (require.main === module) {
41
+ const root = resolve(__dirname, '..')
42
+ const packagesDir = join(root, 'packages')
43
+
44
+ // Skip if packages/ doesn't exist (published tarball / end-user install)
45
+ if (!existsSync(packagesDir)) process.exit(0)
46
+
47
+ // Skip in CI — the pipeline runs `npm run build` explicitly
48
+ if (process.env.CI === 'true' || process.env.CI === '1') process.exit(0)
49
+
50
+ // Workspace packages that need dist/index.js at runtime.
51
+ // Order matters: dependencies must build before dependents.
52
+ const WORKSPACE_PACKAGES = [
53
+ 'native',
54
+ 'pi-tui',
55
+ 'pi-ai',
56
+ 'pi-agent-core',
57
+ 'pi-coding-agent',
58
+ ]
59
+
60
+ const stale = []
61
+ for (const pkg of WORKSPACE_PACKAGES) {
62
+ const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
63
+ if (!existsSync(distIndex)) {
64
+ stale.push(pkg)
65
+ continue
66
+ }
67
+ const distMtime = statSync(distIndex).mtimeMs
68
+ const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
69
+ if (srcMtime > distMtime) {
70
+ stale.push(pkg)
71
+ }
70
72
  }
71
- }
72
73
 
73
- if (stale.length === 0) process.exit(0)
74
+ if (stale.length === 0) process.exit(0)
74
75
 
75
- process.stderr.write(` Building ${stale.length} workspace package(s) with stale or missing dist/: ${stale.join(', ')}\n`)
76
+ process.stderr.write(` Building ${stale.length} workspace package(s) with stale or missing dist/: ${stale.join(', ')}\n`)
76
77
 
77
- for (const pkg of stale) {
78
- const pkgDir = join(packagesDir, pkg)
79
- try {
80
- execSync('npm run build', { cwd: pkgDir, stdio: 'pipe' })
81
- process.stderr.write(` ✓ ${pkg}\n`)
82
- } catch (err) {
83
- process.stderr.write(` ✗ ${pkg} build failed: ${err.message}\n`)
84
- // Non-fatal — the user can run `npm run build` manually
78
+ for (const pkg of stale) {
79
+ const pkgDir = join(packagesDir, pkg)
80
+ try {
81
+ execSync('npm run build', { cwd: pkgDir, stdio: 'pipe' })
82
+ process.stderr.write(` ✓ ${pkg}\n`)
83
+ } catch (err) {
84
+ process.stderr.write(` ✗ ${pkg} build failed: ${err.message}\n`)
85
+ // Non-fatal — the user can run `npm run build` manually
86
+ }
85
87
  }
86
88
  }
89
+
90
+ module.exports = { newestSrcMtime }