@code-yeongyu/senpi 2026.9.3 → 2026.9.4-2

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 (1058) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/README.md +5 -4
  3. package/dist/cli/startup-ui.d.ts.map +1 -1
  4. package/dist/cli/startup-ui.js +2 -1
  5. package/dist/cli/startup-ui.js.map +1 -1
  6. package/dist/core/agent-session-runtime.js +2 -2
  7. package/dist/core/agent-session-runtime.js.map +1 -1
  8. package/dist/core/agent-session.d.ts +2 -5
  9. package/dist/core/agent-session.d.ts.map +1 -1
  10. package/dist/core/agent-session.js +56 -30
  11. package/dist/core/agent-session.js.map +1 -1
  12. package/dist/core/compaction/compaction.d.ts.map +1 -1
  13. package/dist/core/compaction/compaction.js +16 -7
  14. package/dist/core/compaction/compaction.js.map +1 -1
  15. package/dist/core/dynamic-prompt/style.js +1 -1
  16. package/dist/core/dynamic-prompt/style.js.map +1 -1
  17. package/dist/core/dynamic-prompt/working-task.js +1 -1
  18. package/dist/core/dynamic-prompt/working-task.js.map +1 -1
  19. package/dist/core/extensions/builtin/bash-timeout/index.d.ts +1 -1
  20. package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -1
  21. package/dist/core/extensions/builtin/bash-timeout/index.js +3 -1
  22. package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -1
  23. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +9 -7
  24. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -1
  25. package/dist/core/extensions/builtin/bash-timeout/timeout.js +4 -9
  26. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  27. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -1
  28. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js +15 -18
  29. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -1
  30. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts +3 -0
  31. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts.map +1 -0
  32. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js +80 -0
  33. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js.map +1 -0
  34. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts +18 -1
  35. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
  36. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js +57 -1
  37. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +1 -1
  38. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +1 -0
  39. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -1
  40. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js +13 -0
  41. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -1
  42. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts.map +1 -1
  43. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js +6 -1
  44. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -1
  45. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.d.ts.map +1 -1
  46. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js +2 -23
  47. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -1
  48. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts +2 -2
  49. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
  50. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +30 -24
  51. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
  52. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts +2 -0
  53. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts.map +1 -1
  54. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js +15 -1
  55. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js.map +1 -1
  56. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts +1 -1
  57. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts.map +1 -1
  58. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js +1 -0
  59. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js.map +1 -1
  60. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts +6 -1
  61. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +1 -1
  62. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js +1 -0
  63. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +1 -1
  64. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -1
  65. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +19 -3
  66. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -1
  67. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -1
  68. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +31 -13
  69. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -1
  70. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +1 -0
  71. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
  72. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +1 -0
  73. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -1
  74. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -1
  75. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +8 -14
  76. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
  77. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +1 -1
  78. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js +23 -6
  79. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js.map +1 -1
  80. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -1
  81. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +4 -2
  82. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -1
  83. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
  84. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +1 -1
  85. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -1
  86. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js +13 -6
  87. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -1
  88. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts +11 -3
  89. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
  90. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js +12 -3
  91. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +1 -1
  92. package/dist/core/extensions/builtin/eval-only-routing.d.ts +10 -0
  93. package/dist/core/extensions/builtin/eval-only-routing.d.ts.map +1 -0
  94. package/dist/core/extensions/builtin/eval-only-routing.js +16 -0
  95. package/dist/core/extensions/builtin/eval-only-routing.js.map +1 -0
  96. package/dist/core/extensions/builtin/goal/prompt.d.ts.map +1 -1
  97. package/dist/core/extensions/builtin/goal/prompt.js +1 -3
  98. package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
  99. package/dist/core/extensions/builtin/goal/tool-registration.js +1 -1
  100. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  101. package/dist/core/extensions/builtin/gpt-account.d.ts +3 -0
  102. package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -0
  103. package/dist/core/extensions/builtin/gpt-account.js +115 -0
  104. package/dist/core/extensions/builtin/gpt-account.js.map +1 -0
  105. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  106. package/dist/core/extensions/builtin/index.js +2 -0
  107. package/dist/core/extensions/builtin/index.js.map +1 -1
  108. package/dist/core/extensions/builtin/loop/index.d.ts.map +1 -1
  109. package/dist/core/extensions/builtin/loop/index.js +20 -1
  110. package/dist/core/extensions/builtin/loop/index.js.map +1 -1
  111. package/dist/core/extensions/builtin/loop/tools.d.ts +6 -1
  112. package/dist/core/extensions/builtin/loop/tools.d.ts.map +1 -1
  113. package/dist/core/extensions/builtin/loop/tools.js +8 -1
  114. package/dist/core/extensions/builtin/loop/tools.js.map +1 -1
  115. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -1
  116. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js +1 -3
  117. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -1
  118. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -1
  119. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js +1 -11
  120. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -1
  121. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js +2 -2
  122. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -1
  123. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-8.js +3 -3
  124. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-8.js.map +1 -1
  125. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.d.ts.map +1 -1
  126. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +56 -43
  127. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
  128. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts +4 -15
  129. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts.map +1 -1
  130. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.js +12 -21
  131. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.js.map +1 -1
  132. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.d.ts +1 -1
  133. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.d.ts.map +1 -1
  134. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.js +2 -11
  135. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.js.map +1 -1
  136. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.d.ts +1 -1
  137. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.d.ts.map +1 -1
  138. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.js +2 -11
  139. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.js.map +1 -1
  140. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +4 -0
  141. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts.map +1 -0
  142. package/dist/core/extensions/builtin/prompt-preset/glm-5.js +16 -0
  143. package/dist/core/extensions/builtin/prompt-preset/glm-5.js.map +1 -0
  144. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts +1 -5
  145. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  146. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -6
  147. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  148. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts +123 -0
  149. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts.map +1 -0
  150. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +202 -0
  151. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -0
  152. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.d.ts.map +1 -1
  153. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.js +1 -2
  154. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.js.map +1 -1
  155. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.d.ts.map +1 -1
  156. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +60 -76
  157. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
  158. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  159. package/dist/core/extensions/builtin/prompt-preset/presets.js +17 -0
  160. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  161. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
  162. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
  163. package/dist/core/extensions/builtin/prompt-preset/settings.js +1 -0
  164. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
  165. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  166. package/dist/core/extensions/builtin/terminal/extension.js +5 -2
  167. package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
  168. package/dist/core/extensions/builtin/terminal/prompt.d.ts +13 -2
  169. package/dist/core/extensions/builtin/terminal/prompt.d.ts.map +1 -1
  170. package/dist/core/extensions/builtin/terminal/prompt.js +18 -7
  171. package/dist/core/extensions/builtin/terminal/prompt.js.map +1 -1
  172. package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -2
  173. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
  174. package/dist/core/extensions/builtin/todotools/prompt.js +3 -6
  175. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
  176. package/dist/core/extensions/builtin/tool-search/native-search.d.ts +1 -1
  177. package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -1
  178. package/dist/core/extensions/builtin/tool-search/native-search.js +1 -1
  179. package/dist/core/extensions/builtin/tool-search/native-search.js.map +1 -1
  180. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.d.ts +34 -0
  181. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.d.ts.map +1 -0
  182. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.js +121 -0
  183. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.js.map +1 -0
  184. package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts +2 -0
  185. package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts.map +1 -1
  186. package/dist/core/extensions/builtin/ttsr/detectors/collapse.js +6 -2
  187. package/dist/core/extensions/builtin/ttsr/detectors/collapse.js.map +1 -1
  188. package/dist/core/extensions/index.d.ts +1 -1
  189. package/dist/core/extensions/index.d.ts.map +1 -1
  190. package/dist/core/extensions/index.js.map +1 -1
  191. package/dist/core/extensions/runner.d.ts +5 -0
  192. package/dist/core/extensions/runner.d.ts.map +1 -1
  193. package/dist/core/extensions/runner.js +44 -1
  194. package/dist/core/extensions/runner.js.map +1 -1
  195. package/dist/core/extensions/types.d.ts +26 -3
  196. package/dist/core/extensions/types.d.ts.map +1 -1
  197. package/dist/core/extensions/types.js.map +1 -1
  198. package/dist/core/http-dispatcher.d.ts.map +1 -1
  199. package/dist/core/http-dispatcher.js +2 -0
  200. package/dist/core/http-dispatcher.js.map +1 -1
  201. package/dist/core/manual-continue.d.ts +13 -0
  202. package/dist/core/manual-continue.d.ts.map +1 -0
  203. package/dist/core/manual-continue.js +19 -0
  204. package/dist/core/manual-continue.js.map +1 -0
  205. package/dist/core/messages.d.ts.map +1 -1
  206. package/dist/core/messages.js +8 -2
  207. package/dist/core/messages.js.map +1 -1
  208. package/dist/core/model-config.d.ts.map +1 -1
  209. package/dist/core/model-config.js +3 -0
  210. package/dist/core/model-config.js.map +1 -1
  211. package/dist/core/provider-composer.d.ts.map +1 -1
  212. package/dist/core/provider-composer.js +13 -2
  213. package/dist/core/provider-composer.js.map +1 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +28 -4
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/settings-manager.d.ts +5 -5
  218. package/dist/core/settings-manager.d.ts.map +1 -1
  219. package/dist/core/settings-manager.js +34 -6
  220. package/dist/core/settings-manager.js.map +1 -1
  221. package/dist/core/skills.d.ts.map +1 -1
  222. package/dist/core/skills.js +19 -2
  223. package/dist/core/skills.js.map +1 -1
  224. package/dist/core/terminal-settings.d.ts +3 -0
  225. package/dist/core/terminal-settings.d.ts.map +1 -1
  226. package/dist/core/terminal-settings.js.map +1 -1
  227. package/dist/core/tools/bash.d.ts.map +1 -1
  228. package/dist/core/tools/bash.js +1 -1
  229. package/dist/core/tools/bash.js.map +1 -1
  230. package/dist/core/tools/edit.d.ts.map +1 -1
  231. package/dist/core/tools/edit.js +2 -2
  232. package/dist/core/tools/edit.js.map +1 -1
  233. package/dist/core/tools/find.d.ts.map +1 -1
  234. package/dist/core/tools/find.js +2 -2
  235. package/dist/core/tools/find.js.map +1 -1
  236. package/dist/core/tools/grep.d.ts.map +1 -1
  237. package/dist/core/tools/grep.js +2 -2
  238. package/dist/core/tools/grep.js.map +1 -1
  239. package/dist/core/tools/ls.d.ts.map +1 -1
  240. package/dist/core/tools/ls.js +2 -2
  241. package/dist/core/tools/ls.js.map +1 -1
  242. package/dist/core/tools/read.d.ts.map +1 -1
  243. package/dist/core/tools/read.js +1 -1
  244. package/dist/core/tools/read.js.map +1 -1
  245. package/dist/core/tools/write.d.ts.map +1 -1
  246. package/dist/core/tools/write.js +3 -3
  247. package/dist/core/tools/write.js.map +1 -1
  248. package/dist/index.d.ts +1 -1
  249. package/dist/index.d.ts.map +1 -1
  250. package/dist/index.js.map +1 -1
  251. package/dist/main.d.ts.map +1 -1
  252. package/dist/main.js +2 -0
  253. package/dist/main.js.map +1 -1
  254. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/scoped-models-selector.js +5 -11
  256. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  257. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  258. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  259. package/dist/modes/interactive/components/settings-selector.js +21 -8
  260. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  261. package/dist/modes/interactive/components/thinking-selector.js +2 -2
  262. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  263. package/dist/modes/interactive/components/trust-selector.js +2 -2
  264. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  265. package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -1
  266. package/dist/modes/interactive/grok/welcome-card.js +5 -2
  267. package/dist/modes/interactive/grok/welcome-card.js.map +1 -1
  268. package/dist/modes/interactive/interactive-mode.d.ts +3 -0
  269. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  270. package/dist/modes/interactive/interactive-mode.js +74 -14
  271. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  272. package/dist/modes/interactive/version-label.d.ts +7 -0
  273. package/dist/modes/interactive/version-label.d.ts.map +1 -0
  274. package/dist/modes/interactive/version-label.js +9 -0
  275. package/dist/modes/interactive/version-label.js.map +1 -0
  276. package/dist/modes/print-mode.d.ts.map +1 -1
  277. package/dist/modes/print-mode.js +9 -0
  278. package/dist/modes/print-mode.js.map +1 -1
  279. package/dist/modes/rpc/connection-handler.d.ts +2 -0
  280. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  281. package/dist/modes/rpc/connection-handler.js +71 -12
  282. package/dist/modes/rpc/connection-handler.js.map +1 -1
  283. package/dist/modes/rpc/custom-capability.d.ts +5 -0
  284. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  285. package/dist/modes/rpc/custom-capability.js +5 -0
  286. package/dist/modes/rpc/custom-capability.js.map +1 -1
  287. package/dist/modes/rpc/login-prompts.d.ts +24 -0
  288. package/dist/modes/rpc/login-prompts.d.ts.map +1 -0
  289. package/dist/modes/rpc/login-prompts.js +44 -0
  290. package/dist/modes/rpc/login-prompts.js.map +1 -0
  291. package/dist/modes/rpc/media-placeholders.d.ts +49 -0
  292. package/dist/modes/rpc/media-placeholders.d.ts.map +1 -0
  293. package/dist/modes/rpc/media-placeholders.js +151 -0
  294. package/dist/modes/rpc/media-placeholders.js.map +1 -0
  295. package/dist/modes/rpc/multi-session-host.js +3 -0
  296. package/dist/modes/rpc/multi-session-host.js.map +1 -1
  297. package/dist/modes/rpc/rpc-client.d.ts +8 -0
  298. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  299. package/dist/modes/rpc/rpc-client.js +11 -0
  300. package/dist/modes/rpc/rpc-client.js.map +1 -1
  301. package/dist/modes/rpc/rpc-types.d.ts +23 -1
  302. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  303. package/dist/modes/rpc/rpc-types.js +1 -0
  304. package/dist/modes/rpc/rpc-types.js.map +1 -1
  305. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  306. package/dist/modes/rpc/session-command-router.js +2 -1
  307. package/dist/modes/rpc/session-command-router.js.map +1 -1
  308. package/dist/modes/rpc/session-event-fanout.d.ts +13 -2
  309. package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
  310. package/dist/modes/rpc/session-event-fanout.js +36 -12
  311. package/dist/modes/rpc/session-event-fanout.js.map +1 -1
  312. package/dist/modes/rpc/session-event-writer.d.ts +3 -1
  313. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  314. package/dist/modes/rpc/session-event-writer.js +23 -13
  315. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  316. package/dist/modes/rpc/socket-event-fanout.d.ts +8 -1
  317. package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
  318. package/dist/modes/rpc/socket-event-fanout.js +32 -9
  319. package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
  320. package/dist/utils/version-check.d.ts.map +1 -1
  321. package/dist/utils/version-check.js +3 -4
  322. package/dist/utils/version-check.js.map +1 -1
  323. package/docs/compaction.md +2 -0
  324. package/docs/environment-variables.md +5 -0
  325. package/docs/extensions.md +22 -2
  326. package/docs/keybindings.md +1 -1
  327. package/docs/models.md +3 -0
  328. package/docs/quickstart.md +1 -1
  329. package/docs/rpc.md +105 -1
  330. package/docs/settings.md +17 -32
  331. package/docs/terminal-setup.md +27 -0
  332. package/docs/usage.md +5 -3
  333. package/docs/windows.md +1 -1
  334. package/node_modules/@anthropic-ai/claude-agent-sdk/bridge.d.ts +18 -1
  335. package/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +155 -106
  336. package/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +144 -83
  337. package/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +21 -32
  338. package/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +25 -36
  339. package/node_modules/@anthropic-ai/claude-agent-sdk/package.json +2 -2
  340. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk-tools.d.ts +93 -31
  341. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk.d.ts +473 -31
  342. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +140 -93
  343. package/node_modules/@anthropic-ai/sdk/CHANGELOG.md +96 -0
  344. package/node_modules/@anthropic-ai/sdk/README.md +1 -1
  345. package/node_modules/@anthropic-ai/sdk/core/credentials.d.mts.map +1 -1
  346. package/node_modules/@anthropic-ai/sdk/core/credentials.d.ts.map +1 -1
  347. package/node_modules/@anthropic-ai/sdk/core/credentials.js +5 -7
  348. package/node_modules/@anthropic-ai/sdk/core/credentials.js.map +1 -1
  349. package/node_modules/@anthropic-ai/sdk/core/credentials.mjs +5 -7
  350. package/node_modules/@anthropic-ai/sdk/core/credentials.mjs.map +1 -1
  351. package/node_modules/@anthropic-ai/sdk/core/middleware.d.mts.map +1 -1
  352. package/node_modules/@anthropic-ai/sdk/core/middleware.d.ts.map +1 -1
  353. package/node_modules/@anthropic-ai/sdk/core/middleware.js +4 -4
  354. package/node_modules/@anthropic-ai/sdk/core/middleware.js.map +1 -1
  355. package/node_modules/@anthropic-ai/sdk/core/middleware.mjs +4 -4
  356. package/node_modules/@anthropic-ai/sdk/core/middleware.mjs.map +1 -1
  357. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.mts +45 -0
  358. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.mts.map +1 -0
  359. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.ts +45 -0
  360. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.ts.map +1 -0
  361. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.js +58 -0
  362. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.js.map +1 -0
  363. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.mjs +54 -0
  364. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.mjs.map +1 -0
  365. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +1 -1
  366. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -1
  367. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +1 -1
  368. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -1
  369. package/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -1
  370. package/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -1
  371. package/node_modules/@anthropic-ai/sdk/internal/errors.js +3 -1
  372. package/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -1
  373. package/node_modules/@anthropic-ai/sdk/internal/errors.mjs +3 -1
  374. package/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -1
  375. package/node_modules/@anthropic-ai/sdk/internal/file-store.d.mts.map +1 -1
  376. package/node_modules/@anthropic-ai/sdk/internal/file-store.d.ts.map +1 -1
  377. package/node_modules/@anthropic-ai/sdk/internal/file-store.js +23 -25
  378. package/node_modules/@anthropic-ai/sdk/internal/file-store.js.map +1 -1
  379. package/node_modules/@anthropic-ai/sdk/internal/file-store.mjs +5 -6
  380. package/node_modules/@anthropic-ai/sdk/internal/file-store.mjs.map +1 -1
  381. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.mts +9 -0
  382. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.mts.map +1 -0
  383. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.ts +9 -0
  384. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.ts.map +1 -0
  385. package/node_modules/@anthropic-ai/sdk/internal/node.browser.js +22 -0
  386. package/node_modules/@anthropic-ai/sdk/internal/node.browser.js.map +1 -0
  387. package/node_modules/@anthropic-ai/sdk/internal/node.browser.mjs +19 -0
  388. package/node_modules/@anthropic-ai/sdk/internal/node.browser.mjs.map +1 -0
  389. package/node_modules/@anthropic-ai/sdk/internal/node.d.mts +14 -0
  390. package/node_modules/@anthropic-ai/sdk/internal/node.d.mts.map +1 -0
  391. package/node_modules/@anthropic-ai/sdk/internal/node.d.ts +14 -0
  392. package/node_modules/@anthropic-ai/sdk/internal/node.d.ts.map +1 -0
  393. package/node_modules/@anthropic-ai/sdk/internal/node.js +24 -0
  394. package/node_modules/@anthropic-ai/sdk/internal/node.js.map +1 -0
  395. package/node_modules/@anthropic-ai/sdk/internal/node.mjs +14 -0
  396. package/node_modules/@anthropic-ai/sdk/internal/node.mjs.map +1 -0
  397. package/node_modules/@anthropic-ai/sdk/internal/parse.js +1 -1
  398. package/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -1
  399. package/node_modules/@anthropic-ai/sdk/internal/parse.mjs +1 -1
  400. package/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -1
  401. package/node_modules/@anthropic-ai/sdk/internal/uploads.js +10 -6
  402. package/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -1
  403. package/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +10 -6
  404. package/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -1
  405. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +6 -0
  406. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -1
  407. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +6 -0
  408. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -1
  409. package/node_modules/@anthropic-ai/sdk/internal/utils/values.js +7 -0
  410. package/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -1
  411. package/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +6 -0
  412. package/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -1
  413. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -1
  414. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -1
  415. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +6 -4
  416. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -1
  417. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +4 -2
  418. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -1
  419. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -1
  420. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -1
  421. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +3 -4
  422. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -1
  423. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +1 -2
  424. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -1
  425. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.js +1 -1
  426. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.js.map +1 -1
  427. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.mjs +1 -1
  428. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.mjs.map +1 -1
  429. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.js +1 -1
  430. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.js.map +1 -1
  431. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.mjs +1 -1
  432. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.mjs.map +1 -1
  433. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.d.mts.map +1 -1
  434. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.d.ts.map +1 -1
  435. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.js +2 -3
  436. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.js.map +1 -1
  437. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.mjs +2 -3
  438. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.mjs.map +1 -1
  439. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.js +1 -1
  440. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.js.map +1 -1
  441. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.mjs +1 -1
  442. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.mjs.map +1 -1
  443. package/node_modules/@anthropic-ai/sdk/lib/middleware.d.mts.map +1 -1
  444. package/node_modules/@anthropic-ai/sdk/lib/middleware.d.ts.map +1 -1
  445. package/node_modules/@anthropic-ai/sdk/lib/middleware.js +30 -7
  446. package/node_modules/@anthropic-ai/sdk/lib/middleware.js.map +1 -1
  447. package/node_modules/@anthropic-ai/sdk/lib/middleware.mjs +30 -7
  448. package/node_modules/@anthropic-ai/sdk/lib/middleware.mjs.map +1 -1
  449. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.mts +3 -2
  450. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.mts.map +1 -1
  451. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.ts +3 -2
  452. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.ts.map +1 -1
  453. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.js +3 -46
  454. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.js.map +1 -1
  455. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.mjs +3 -46
  456. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.mjs.map +1 -1
  457. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.mts +131 -0
  458. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.mts.map +1 -0
  459. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.ts +131 -0
  460. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.ts.map +1 -0
  461. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.js +45 -0
  462. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.js.map +1 -0
  463. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.mjs +41 -0
  464. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.mjs.map +1 -0
  465. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.d.mts.map +1 -1
  466. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.d.ts.map +1 -1
  467. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.js +35 -6
  468. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.js.map +1 -1
  469. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs +35 -6
  470. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs.map +1 -1
  471. package/node_modules/@anthropic-ai/sdk/package.json +4 -11
  472. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.mts +1 -1
  473. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.mts.map +1 -1
  474. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.ts +1 -1
  475. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.ts.map +1 -1
  476. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.js.map +1 -1
  477. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.mjs.map +1 -1
  478. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +13 -9
  479. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -1
  480. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +13 -9
  481. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -1
  482. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +4 -0
  483. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -1
  484. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +4 -0
  485. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -1
  486. package/node_modules/@anthropic-ai/sdk/resources/beta/deployment-runs.d.mts +6 -6
  487. package/node_modules/@anthropic-ai/sdk/resources/beta/deployment-runs.d.ts +6 -6
  488. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.mts +3 -2
  489. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.mts.map +1 -1
  490. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.ts +3 -2
  491. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.ts.map +1 -1
  492. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.mts +28 -1
  493. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.mts.map +1 -1
  494. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.ts +28 -1
  495. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.ts.map +1 -1
  496. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.mts +8 -1
  497. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.mts.map +1 -1
  498. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.ts +8 -1
  499. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.ts.map +1 -1
  500. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.js.map +1 -1
  501. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.mjs.map +1 -1
  502. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +25 -5
  503. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -1
  504. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +25 -5
  505. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -1
  506. package/node_modules/@anthropic-ai/sdk/resources/beta/files.js +6 -6
  507. package/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -1
  508. package/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +7 -7
  509. package/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -1
  510. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -4
  511. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -1
  512. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -4
  513. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -1
  514. package/node_modules/@anthropic-ai/sdk/resources/beta/index.js +11 -9
  515. package/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -1
  516. package/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +1 -0
  517. package/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -1
  518. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.mts +12 -9
  519. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.mts.map +1 -1
  520. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.ts +12 -9
  521. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.ts.map +1 -1
  522. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.mts +8 -5
  523. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.mts.map +1 -1
  524. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.ts +8 -5
  525. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.ts.map +1 -1
  526. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +1 -1
  527. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -1
  528. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +1 -1
  529. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -1
  530. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -1
  531. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -1
  532. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +198 -29
  533. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -1
  534. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +198 -29
  535. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -1
  536. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -1
  537. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -1
  538. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.mts +177 -0
  539. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.mts.map +1 -0
  540. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.ts +177 -0
  541. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.ts.map +1 -0
  542. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.js +56 -0
  543. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.js.map +1 -0
  544. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.mjs +52 -0
  545. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.mjs.map +1 -0
  546. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.mts +74 -0
  547. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.mts.map +1 -0
  548. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.ts +74 -0
  549. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.ts.map +1 -0
  550. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.js +52 -0
  551. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.js.map +1 -0
  552. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.mjs +48 -0
  553. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.mjs.map +1 -0
  554. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.mts +272 -0
  555. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.mts.map +1 -0
  556. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.ts +272 -0
  557. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.ts.map +1 -0
  558. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.js +119 -0
  559. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.js.map +1 -0
  560. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.mjs +115 -0
  561. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.mjs.map +1 -0
  562. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.mts +14 -0
  563. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.mts.map +1 -0
  564. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.ts +14 -0
  565. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.ts.map +1 -0
  566. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.js +21 -0
  567. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.js.map +1 -0
  568. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.mjs +16 -0
  569. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.mjs.map +1 -0
  570. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.mts +4 -0
  571. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.mts.map +1 -0
  572. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.ts +4 -0
  573. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.ts.map +1 -0
  574. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.js +11 -0
  575. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.js.map +1 -0
  576. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.mjs +5 -0
  577. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.mjs.map +1 -0
  578. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.mts +353 -0
  579. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.mts.map +1 -0
  580. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.ts +353 -0
  581. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.ts.map +1 -0
  582. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.js +169 -0
  583. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.js.map +1 -0
  584. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.mjs +165 -0
  585. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.mjs.map +1 -0
  586. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.mts +3 -0
  587. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.mts.map +1 -0
  588. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.ts +3 -0
  589. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.ts.map +1 -0
  590. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.js +9 -0
  591. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.js.map +1 -0
  592. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.mjs +4 -0
  593. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.mjs.map +1 -0
  594. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.mts +468 -0
  595. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.mts.map +1 -0
  596. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.ts +468 -0
  597. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.ts.map +1 -0
  598. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.js +198 -0
  599. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.js.map +1 -0
  600. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.mjs +193 -0
  601. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.mjs.map +1 -0
  602. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.mts +124 -0
  603. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.mts.map +1 -0
  604. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.ts +124 -0
  605. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.ts.map +1 -0
  606. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.js +114 -0
  607. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.js.map +1 -0
  608. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.mjs +110 -0
  609. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.mjs.map +1 -0
  610. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.mts +2 -0
  611. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.mts.map +1 -0
  612. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.ts +2 -0
  613. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.ts.map +1 -0
  614. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.js +6 -0
  615. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.js.map +1 -0
  616. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.mjs +3 -0
  617. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.mjs.map +1 -0
  618. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.mts +2 -0
  619. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.mts.map +1 -0
  620. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.ts +2 -0
  621. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.ts.map +1 -0
  622. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.js +6 -0
  623. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.js.map +1 -0
  624. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.mjs +3 -0
  625. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.mjs.map +1 -0
  626. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.mts +11 -0
  627. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.mts.map +1 -0
  628. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.ts +11 -0
  629. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.ts.map +1 -0
  630. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.js +25 -0
  631. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.js.map +1 -0
  632. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.mjs +12 -0
  633. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.mjs.map +1 -0
  634. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.mts +162 -0
  635. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.mts.map +1 -0
  636. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.ts +162 -0
  637. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.ts.map +1 -0
  638. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.js +76 -0
  639. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.js.map +1 -0
  640. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.mjs +72 -0
  641. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.mjs.map +1 -0
  642. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.mts +73 -0
  643. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.mts.map +1 -0
  644. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.ts +73 -0
  645. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.ts.map +1 -0
  646. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.js +62 -0
  647. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.js.map +1 -0
  648. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.mjs +57 -0
  649. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.mjs.map +1 -0
  650. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.mts +77 -0
  651. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.mts.map +1 -0
  652. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.ts +77 -0
  653. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.ts.map +1 -0
  654. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.js +31 -0
  655. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.js.map +1 -0
  656. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.mjs +27 -0
  657. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.mjs.map +1 -0
  658. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.mts +3 -0
  659. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.mts.map +1 -0
  660. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.ts +3 -0
  661. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.ts.map +1 -0
  662. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.js +9 -0
  663. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.js.map +1 -0
  664. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.mjs +4 -0
  665. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.mjs.map +1 -0
  666. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.mts +258 -0
  667. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.mts.map +1 -0
  668. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.ts +258 -0
  669. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.ts.map +1 -0
  670. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.js +174 -0
  671. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.js.map +1 -0
  672. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.mjs +169 -0
  673. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.mjs.map +1 -0
  674. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.mts +141 -0
  675. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.mts.map +1 -0
  676. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.ts +141 -0
  677. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.ts.map +1 -0
  678. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.js +125 -0
  679. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.js.map +1 -0
  680. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.mjs +121 -0
  681. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.mjs.map +1 -0
  682. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.mts +2 -0
  683. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.mts.map +1 -0
  684. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.ts +2 -0
  685. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.ts.map +1 -0
  686. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.js +6 -0
  687. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.js.map +1 -0
  688. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.mjs +3 -0
  689. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.mjs.map +1 -0
  690. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.mts +124 -0
  691. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.mts.map +1 -0
  692. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.ts +124 -0
  693. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.ts.map +1 -0
  694. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.js +67 -0
  695. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.js.map +1 -0
  696. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.mjs +63 -0
  697. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.mjs.map +1 -0
  698. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.mts +5 -0
  699. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.mts.map +1 -0
  700. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.ts +5 -0
  701. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.ts.map +1 -0
  702. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.js +13 -0
  703. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.js.map +1 -0
  704. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.mjs +6 -0
  705. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.mjs.map +1 -0
  706. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.mts +135 -0
  707. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.mts.map +1 -0
  708. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.ts +135 -0
  709. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.ts.map +1 -0
  710. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.js +102 -0
  711. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.js.map +1 -0
  712. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.mjs +98 -0
  713. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.mjs.map +1 -0
  714. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.mts +83 -0
  715. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.mts.map +1 -0
  716. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.ts +83 -0
  717. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.ts.map +1 -0
  718. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.js +34 -0
  719. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.js.map +1 -0
  720. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.mjs +30 -0
  721. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.mjs.map +1 -0
  722. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.mts +210 -0
  723. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.mts.map +1 -0
  724. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.ts +210 -0
  725. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.ts.map +1 -0
  726. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.js +189 -0
  727. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.js.map +1 -0
  728. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.mjs +185 -0
  729. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.mjs.map +1 -0
  730. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.mts +303 -0
  731. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.mts.map +1 -0
  732. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.ts +303 -0
  733. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.ts.map +1 -0
  734. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.js +112 -0
  735. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.js.map +1 -0
  736. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.mjs +107 -0
  737. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.mjs.map +1 -0
  738. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.mts +2 -0
  739. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.mts.map +1 -0
  740. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.ts +2 -0
  741. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.ts.map +1 -0
  742. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.js +6 -0
  743. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.js.map +1 -0
  744. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.mjs +3 -0
  745. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.mjs.map +1 -0
  746. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.mts +2 -0
  747. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.mts.map +1 -0
  748. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.ts +2 -0
  749. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.ts.map +1 -0
  750. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.js +6 -0
  751. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.js.map +1 -0
  752. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.mjs +3 -0
  753. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.mjs.map +1 -0
  754. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/events.d.mts +1 -1
  755. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/events.d.ts +1 -1
  756. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/sessions.d.mts +10 -10
  757. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/sessions.d.ts +10 -10
  758. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.mts +2 -1
  759. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.mts.map +1 -1
  760. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.ts +2 -1
  761. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.ts.map +1 -1
  762. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.js.map +1 -1
  763. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.mjs.map +1 -1
  764. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.mts +2 -2
  765. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.mts.map +1 -1
  766. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.ts +2 -2
  767. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.ts.map +1 -1
  768. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.js.map +1 -1
  769. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.mjs.map +1 -1
  770. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.mts +48 -120
  771. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.mts.map +1 -1
  772. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.ts +48 -120
  773. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.ts.map +1 -1
  774. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.js +12 -8
  775. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.js.map +1 -1
  776. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.mjs +12 -8
  777. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.mjs.map +1 -1
  778. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.mts +35 -138
  779. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.mts.map +1 -1
  780. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.ts +35 -138
  781. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.ts.map +1 -1
  782. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.js +18 -18
  783. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.js.map +1 -1
  784. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.mjs +18 -18
  785. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.mjs.map +1 -1
  786. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.mts +21 -25
  787. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.mts.map +1 -1
  788. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.ts +21 -25
  789. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.ts.map +1 -1
  790. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.mts +16 -17
  791. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.mts.map +1 -1
  792. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.ts +16 -17
  793. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.ts.map +1 -1
  794. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.js +21 -8
  795. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.js.map +1 -1
  796. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.mjs +21 -8
  797. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.mjs.map +1 -1
  798. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1 -3
  799. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -1
  800. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1 -3
  801. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -1
  802. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -1
  803. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -1
  804. package/node_modules/@anthropic-ai/sdk/src/core/credentials.ts +5 -7
  805. package/node_modules/@anthropic-ai/sdk/src/core/middleware.ts +4 -3
  806. package/node_modules/@anthropic-ai/sdk/src/helpers/beta/standard-schema.ts +99 -0
  807. package/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +1 -1
  808. package/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +3 -1
  809. package/node_modules/@anthropic-ai/sdk/src/internal/file-store.ts +11 -10
  810. package/node_modules/@anthropic-ai/sdk/src/internal/node.browser.ts +22 -0
  811. package/node_modules/@anthropic-ai/sdk/src/internal/node.ts +14 -0
  812. package/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +1 -1
  813. package/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +10 -7
  814. package/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +7 -0
  815. package/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +5 -3
  816. package/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +1 -3
  817. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/credential-chain.ts +1 -1
  818. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/identity-token.ts +1 -1
  819. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/types.ts +2 -3
  820. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/user-oauth.ts +1 -1
  821. package/node_modules/@anthropic-ai/sdk/src/lib/middleware.ts +33 -9
  822. package/node_modules/@anthropic-ai/sdk/src/lib/sessions/accumulate.ts +7 -49
  823. package/node_modules/@anthropic-ai/sdk/src/lib/standard-schema.ts +209 -0
  824. package/node_modules/@anthropic-ai/sdk/src/lib/tools/BetaToolRunner.ts +38 -6
  825. package/node_modules/@anthropic-ai/sdk/src/resources/beta/agents/agents.ts +1 -0
  826. package/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +45 -15
  827. package/node_modules/@anthropic-ai/sdk/src/resources/beta/deployment-runs.ts +6 -6
  828. package/node_modules/@anthropic-ai/sdk/src/resources/beta/deployments.ts +3 -2
  829. package/node_modules/@anthropic-ai/sdk/src/resources/beta/dreams.ts +42 -0
  830. package/node_modules/@anthropic-ai/sdk/src/resources/beta/environments/environments.ts +8 -1
  831. package/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +34 -11
  832. package/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +13 -7
  833. package/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memories.ts +12 -9
  834. package/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memory-versions.ts +8 -5
  835. package/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +5 -1
  836. package/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +221 -38
  837. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/api-keys.ts +231 -0
  838. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/compliance-settings.ts +96 -0
  839. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/external-keys.ts +365 -0
  840. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/federation.ts +71 -0
  841. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/index.ts +31 -0
  842. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/issuers.ts +486 -0
  843. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/index.ts +23 -0
  844. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/rules.ts +624 -0
  845. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/workspaces.ts +196 -0
  846. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules.ts +3 -0
  847. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation.ts +3 -0
  848. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/index.ts +92 -0
  849. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/invites.ts +207 -0
  850. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/organization.ts +269 -0
  851. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/rate-limits.ts +104 -0
  852. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/index.ts +21 -0
  853. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/service-accounts.ts +389 -0
  854. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/workspaces.ts +217 -0
  855. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts.ts +3 -0
  856. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/users.ts +163 -0
  857. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/index.ts +43 -0
  858. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/members.ts +209 -0
  859. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/rate-limits.ts +113 -0
  860. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/service-accounts.ts +325 -0
  861. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/workspaces.ts +450 -0
  862. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces.ts +3 -0
  863. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization.ts +3 -0
  864. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/events.ts +1 -1
  865. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/sessions.ts +10 -10
  866. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/threads/threads.ts +2 -1
  867. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/index.ts +7 -10
  868. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/skills.ts +60 -150
  869. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/versions.ts +43 -166
  870. package/node_modules/@anthropic-ai/sdk/src/resources/beta/user-profiles.ts +24 -27
  871. package/node_modules/@anthropic-ai/sdk/src/resources/beta/webhooks.ts +25 -29
  872. package/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +2 -8
  873. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/fs-util.ts +6 -5
  874. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/memories.ts +5 -3
  875. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/node.browser.ts +1 -5
  876. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/node.ts +122 -17
  877. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/skills.ts +10 -43
  878. package/node_modules/@anthropic-ai/sdk/src/version.ts +1 -1
  879. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.d.mts.map +1 -1
  880. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.d.ts.map +1 -1
  881. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.js +13 -15
  882. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.js.map +1 -1
  883. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.mjs +3 -4
  884. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.mjs.map +1 -1
  885. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.d.mts.map +1 -1
  886. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.d.ts.map +1 -1
  887. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.js +6 -4
  888. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.js.map +1 -1
  889. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.mjs +5 -3
  890. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.mjs.map +1 -1
  891. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.mts +1 -2
  892. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.mts.map +1 -1
  893. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.ts +1 -2
  894. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.ts.map +1 -1
  895. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.js +0 -4
  896. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.js.map +1 -1
  897. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.mjs +0 -3
  898. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.mjs.map +1 -1
  899. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.mts +11 -9
  900. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.mts.map +1 -1
  901. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.ts +11 -9
  902. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.ts.map +1 -1
  903. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.js +96 -8
  904. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.js.map +1 -1
  905. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.mjs +96 -7
  906. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.mjs.map +1 -1
  907. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.mts +0 -8
  908. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.mts.map +1 -1
  909. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.ts +0 -8
  910. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.ts.map +1 -1
  911. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.js +20 -46
  912. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.js.map +1 -1
  913. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.mjs +9 -33
  914. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.mjs.map +1 -1
  915. package/node_modules/@anthropic-ai/sdk/version.d.mts +1 -1
  916. package/node_modules/@anthropic-ai/sdk/version.d.ts +1 -1
  917. package/node_modules/@anthropic-ai/sdk/version.js +1 -1
  918. package/node_modules/@anthropic-ai/sdk/version.mjs +1 -1
  919. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +57 -0
  920. package/node_modules/@code-yeongyu/senpi-codemode/README.md +2 -0
  921. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  922. package/node_modules/@code-yeongyu/senpi-codemode/src/config/settings.ts +29 -0
  923. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +20 -1
  924. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-runtime.js +6 -0
  925. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-shell-capture.d.ts +10 -0
  926. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-shell-capture.js +126 -0
  927. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +33 -91
  928. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +7 -0
  929. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +8 -0
  930. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +15 -2
  931. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +10 -5
  932. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  933. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +58 -64
  934. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  935. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  936. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +16 -6
  937. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  938. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +1 -1
  939. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  940. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js +6 -1
  941. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  942. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +1 -1
  943. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js.map +1 -1
  944. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts +2 -0
  945. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  946. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js +40 -10
  947. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  948. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +6 -2
  949. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  950. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  951. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  952. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts +1 -1
  953. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  954. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +130 -15
  955. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  956. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts +20 -0
  957. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts.map +1 -0
  958. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.js +40 -0
  959. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.js.map +1 -0
  960. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -1
  961. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  962. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  963. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +16 -1
  964. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  965. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  966. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -1
  967. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  968. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts +2 -0
  969. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  970. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js +6 -0
  971. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  972. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts +1 -3
  973. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  974. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +2 -16
  975. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  976. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js +1 -1
  977. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js.map +1 -1
  978. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +16 -3
  979. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
  980. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +40 -6
  981. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
  982. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.d.ts +8 -0
  983. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.d.ts.map +1 -1
  984. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.js.map +1 -1
  985. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -0
  986. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  987. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
  988. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  989. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  990. package/node_modules/@earendil-works/pi-ai/dist/models.js +3 -2
  991. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  992. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts +2 -0
  993. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts.map +1 -1
  994. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js.map +1 -1
  995. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  996. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  997. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  998. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  999. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  1000. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  1001. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  1002. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  1003. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  1004. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  1005. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  1006. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  1007. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  1008. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  1009. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.d.ts +1 -1
  1010. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.d.ts.map +1 -1
  1011. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js +8 -1
  1012. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js.map +1 -1
  1013. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +14 -1
  1014. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  1015. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  1016. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.d.ts +23 -0
  1017. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.d.ts.map +1 -0
  1018. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.js +58 -0
  1019. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.js.map +1 -0
  1020. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.d.ts.map +1 -1
  1021. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js +53 -12
  1022. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js.map +1 -1
  1023. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  1024. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +2 -0
  1025. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  1026. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +4 -2
  1027. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  1028. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js +3 -0
  1029. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  1030. package/node_modules/@earendil-works/pi-ai/package.json +3 -3
  1031. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  1032. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  1033. package/node_modules/@earendil-works/pi-tui/README.md +1 -1
  1034. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +1 -0
  1035. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  1036. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +36 -3
  1037. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  1038. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  1039. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  1040. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  1041. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  1042. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +2 -0
  1043. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  1044. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +106 -6
  1045. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  1046. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +6 -0
  1047. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1048. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +17 -4
  1049. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1050. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +11 -0
  1051. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  1052. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +57 -15
  1053. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  1054. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1055. package/node_modules/@earendil-works/pi-tui/dist/tui.js +22 -7
  1056. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1057. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  1058. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,yBAAyB,wGAGrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AAEZ,eAAO,MAAM,qBAAqB,iGAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAEtF;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAGD,OAAO,QAAQ,+BAA+B,CAAC;IAC9C,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;KACpC;CACD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAOnH;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,GACf,wBAAwB,CAQ1B;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GACf,aAAa,CASf;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CA6DhE;AAMD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAE7D,eAAO,MAAM,yBAAyB,2JACmH,CAAC;AAE1J,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACrC,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACrE,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,4FAA4F;AAC5F,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EACvC,WAAW,EAAE,MAAM,GACjB,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAWhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,EAAE,CAiE9F;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,EAAE,CAkB9G"}
@@ -4,7 +4,7 @@
4
4
  * Extends the base AgentMessage type with coding-agent specific message types,
5
5
  * and provides a transformer to convert them to LLM-compatible messages.
6
6
  */
7
- import { copyContextProvenance } from "@earendil-works/pi-ai";
7
+ import { copyContextProvenance, dropFailedAssistantTurns, } from "@earendil-works/pi-ai";
8
8
  export const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
9
9
 
10
10
  <summary>
@@ -98,7 +98,7 @@ export function convertToLlm(messages) {
98
98
  const withContextProvenance = (source, target) => copyContextProvenance(source, target);
99
99
  // Continuations are append-only here too: the transport array must extend the
100
100
  // previous request verbatim to keep the provider's cache prefix valid.
101
- return messages
101
+ const converted = messages
102
102
  .map((m) => {
103
103
  switch (m.role) {
104
104
  case "bashExecution":
@@ -147,6 +147,12 @@ export function convertToLlm(messages) {
147
147
  }
148
148
  })
149
149
  .filter((m) => m !== undefined);
150
+ // Failed provider turns (stopReason error/aborted) must never reach an LLM
151
+ // request: lanes that build requests straight from this output (claude-sdk
152
+ // prompt bridge, cursor turns) would otherwise replay their partial text and
153
+ // unexecuted tool calls, and token estimation would count them. Dropping is
154
+ // deterministic per session state, so the cache-prefix guarantee above holds.
155
+ return dropFailedAssistantTurns(converted);
150
156
  }
151
157
  // ============================================================================
152
158
  // Transport image budget
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAqD,MAAM,uBAAuB,CAAC;AAEjH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;CAGxC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;WAC9B,CAAC;AAEZ,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;CAGpC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,8BAA8B,GAAG,mBAAmB,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,WAAmB;IACjE,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAwB;IACrE,OAAO,QAAQ,CAAC;AACjB,CAAC;AAuDD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAyB;IAC5D,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,OAAO,MAAM,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,WAAW,GAAG,CAAC,MAAM,UAAU,CAAC;IACzC,CAAC;SAAM,CAAC;QACP,IAAI,IAAI,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,IAAI,yBAAyB,CAAC;IACnC,CAAC;SAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACtF,IAAI,IAAI,gCAAgC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,IAAI,uCAAuC,GAAG,CAAC,cAAc,GAAG,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,MAAc,EAAE,SAAiB;IAC5F,OAAO;QACN,IAAI,EAAE,eAAe;QACrB,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,OAAe,EACf,YAAoB,EACpB,SAAiB,EACjB,OAAiB;IAEjB,OAAO;QACN,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;QAChB,YAAY;QACZ,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAClC,UAAkB,EAClB,OAAgD,EAChD,OAAgB,EAChB,OAA4B,EAC5B,SAAiB;IAEjB,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,QAAwB;IACpD,MAAM,qBAAqB,GAAG,CAAoB,MAAoB,EAAE,MAAS,EAAK,EAAE,CACvF,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,8EAA8E;IAC9E,uEAAuE;IACvE,OAAO,QAAQ;SACb,GAAG,CAAC,CAAC,CAAC,EAAuB,EAAE;QAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,eAAe;gBACnB,kDAAkD;gBAClD,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,OAAO,SAAS,CAAC;gBAClB,CAAC;gBACD,OAAO,qBAAqB,CAAC,CAAC,EAAE;oBAC/B,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC,CAAC;YACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACf,IAAI,8BAA8B,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClD,OAAO,SAAS,CAAC;gBAClB,CAAC;gBAED,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACzG,OAAO,qBAAqB,CAAC,CAAC,EAAE;oBAC/B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC,CAAC;YACJ,CAAC;YACD,KAAK,eAAe;gBACnB,OAAO,qBAAqB,CAAC,CAAC,EAAE;oBAC/B,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,CAAC,OAAO,GAAG,qBAAqB,EAAE,CAAC;oBACrG,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC,CAAC;YACJ,KAAK,mBAAmB;gBACvB,OAAO,qBAAqB,CAAC,CAAC,EAAE;oBAC/B,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,GAAG,CAAC,CAAC,OAAO,GAAG,yBAAyB,EAAE;qBAClG;oBACD,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC,CAAC;YACJ,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBAChB,OAAO,CAAC,CAAC;YACV;gBACC,2DAA2D;gBAC3D,MAAM,gBAAgB,GAAU,CAAC,CAAC;gBAClC,OAAO,SAAS,CAAC;QACnB,CAAC;IACF,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,MAAM,CAAC,MAAM,yBAAyB,GACrC,wJAAwJ,CAAC;AAE1J,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAgBtE,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAC3C,OAAuC,EACvC,WAAmB;IAEnB,OAAO,OAAO,CAAC,MAAM,CACpB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CACxB,CAAC,CACA,KAAK,CAAC,IAAI,KAAK,MAAM;QACrB,KAAK,CAAC,IAAI,KAAK,WAAW;QAC1B,KAAK,GAAG,CAAC;QACT,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;QAChC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAiB,CAAC,IAAI,KAAK,WAAW,CACvD,CACF,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,QAAmB,EAAE,OAA+B;IAClF,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,4BAA4B,CAAC;IACzE,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,CAAC;IACzD,MAAM,YAAY,GAAG,mBAAmB,KAAK,SAAS,CAAC;IACvD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAC7F,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,IAAI,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnG,SAAS;QACV,CAAC;QAED,KAAK,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACrC,MAAM,aAAa,GAAG,YAAY,IAAI,YAAY,GAAG,kBAAkB,CAAC;YACxE,MAAM,kBAAkB,GAAG,YAAY,IAAI,CAAC,aAAa,IAAI,oBAAoB,GAAG,mBAAmB,CAAC;YACxG,MAAM,mBAAmB,GAAG,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC;YAElF,IAAI,mBAAmB,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACrF,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,CAAC;gBACnD,SAAS;YACV,CAAC;YAED,IACC,aAAa;gBACb,kBAAkB;gBAClB,UAAU,GAAG,gBAAgB;gBAC7B,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,EAC5C,CAAC;gBACF,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa;oBAAE,oBAAoB,EAAE,CAAC;gBAC3C,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAChC,SAAS;YACV,CAAC;YAED,aAAa,GAAG,IAAI,CAAC;YACrB,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;IAED,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE9C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnG,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;YACvG,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAA8B,EAAE,CACtF,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,KAAK,CAC9G,CAAC;QACF,OAAO;YACN,GAAG,OAAO;YACV,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,yBAAyB,CAA2B;SACpG,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,wBAAwB,CAAC,QAAwB,EAAE,OAAgC;IAClG,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnG,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAE7E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAA8B,EAAE,CAC1E,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,KAAK,CAClF,CAAC;QACF,OAAO;YACN,GAAG,OAAO;YACV,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,yBAAyB,CAA2B;SACpG,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { copyContextProvenance, type ImageContent, type Message, type TextContent } from \"@earendil-works/pi-ai\";\n\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n\n<summary>\n`;\n\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\nexport const GOAL_CONTINUATION_MESSAGE_TYPE = \"goal-continuation\";\n\n/**\n * Per-type exclusion must remain false: compaction and branch summarization\n * inspect entries independently, where excluding this type would hide the live\n * goal-continuation message.\n */\nexport function isContextExcludedCustomMessage(_customType: string): boolean {\n\treturn false;\n}\n\n/**\n * Whole-context filtering is deliberately a no-op. Goal continuations are\n * append-only: dropping an already-sent continuation would rewrite a\n * provider-visible turn, so request N would stop being a prefix of request N+1\n * and every cached token ahead of the edit would be invalidated (full re-read,\n * cost spike, 429 storms in team mode). Continuation history is bounded by\n * normal compaction instead of by per-request deletion.\n */\nexport function filterContextExcludedMessages(messages: AgentMessage[]): AgentMessage[] {\n\treturn messages;\n}\n\n/**\n * Message type for bash executions via the ! command.\n */\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\t/** If true, this message is excluded from LLM context (!! prefix) */\n\texcludeFromContext?: boolean;\n}\n\n/**\n * Message type for extension-injected messages via sendMessage().\n * These are custom messages that extensions can inject into the conversation.\n */\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\n\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\n\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\tdetails?: unknown;\n\ttimestamp: number;\n}\n\n// Extend CustomAgentMessages via declaration merging\ndeclare module \"@earendil-works/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t}\n}\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n\tdetails?: unknown,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Compaction's generateSummary (for summarization)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\tconst withContextProvenance = <T extends Message>(source: AgentMessage, target: T): T =>\n\t\tcopyContextProvenance(source, target);\n\t// Continuations are append-only here too: the transport array must extend the\n\t// previous request verbatim to keep the provider's cache prefix valid.\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\t// Skip messages excluded from context (!! prefix)\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (isContextExcludedCustomMessage(m.customType)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault:\n\t\t\t\t\t// biome-ignore lint/correctness/noSwitchDeclarations: fine\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n\n// ============================================================================\n// Transport image budget\n// ============================================================================\n\n/**\n * Cap on inline image base64 (characters approximately equal wire bytes) per\n * provider request. Anthropic documents a 32 MB request limit; reserving the\n * remainder for text and request overhead keeps the transport below that wall.\n */\nexport const TRANSPORT_IMAGE_BUDGET_BYTES = 24 * 1024 * 1024;\n\nexport const IMAGE_ELISION_PLACEHOLDER =\n\t\"[Image elided: an older image was removed to keep the request within the provider's size limit. Re-read the source file if you need to view it again.]\";\n\nexport const BLOCKED_IMAGE_PLACEHOLDER = \"Image reading is disabled.\";\n\nexport interface ElideOldImagesOptions {\n\t/** Cumulative inline image base64 budget. Defaults to TRANSPORT_IMAGE_BUDGET_BYTES. */\n\tbudgetBytes?: number;\n\t/** Newest image blocks always kept regardless of budget. They still consume it. Defaults to 1. */\n\talwaysKeepNewest?: number;\n\t/** Keep at most this many images from turns completed by a later assistant response. */\n\tmaxHistoricalImages?: number;\n}\n\nexport interface TransportConvertOptions extends ElideOldImagesOptions {\n\t/** Replace every image when the images.blockImages setting is enabled. */\n\tblockImages: boolean;\n}\n\n/** Drop consecutive duplicates of a placeholder produced by adjacent image replacements. */\nexport function dedupeConsecutivePlaceholder(\n\tcontent: (TextContent | ImageContent)[],\n\tplaceholder: string,\n): (TextContent | ImageContent)[] {\n\treturn content.filter(\n\t\t(block, index, blocks) =>\n\t\t\t!(\n\t\t\t\tblock.type === \"text\" &&\n\t\t\t\tblock.text === placeholder &&\n\t\t\t\tindex > 0 &&\n\t\t\t\tblocks[index - 1].type === \"text\" &&\n\t\t\t\t(blocks[index - 1] as TextContent).text === placeholder\n\t\t\t),\n\t);\n}\n\n/**\n * Bound inline image payload at request-build time. Images are considered from\n * newest to oldest. Once an image would exceed the budget, it and every older\n * image are replaced by a text placeholder. The newest protected blocks are\n * kept regardless of size, but still consume the budget.\n *\n * The input and persisted session remain untouched. If every image fits, the\n * original array reference is returned.\n */\nexport function elideOldImages(messages: Message[], options?: ElideOldImagesOptions): Message[] {\n\tconst budgetBytes = options?.budgetBytes ?? TRANSPORT_IMAGE_BUDGET_BYTES;\n\tconst alwaysKeepNewest = options?.alwaysKeepNewest ?? 1;\n\tconst maxHistoricalImages = options?.maxHistoricalImages;\n\tconst limitHistory = maxHistoricalImages !== undefined;\n\tconst lastAssistantIndex = messages.findLastIndex((message) => message.role === \"assistant\");\n\tconst imagesToElide = new Set<string>();\n\tlet keptImages = 0;\n\tlet keptHistoricalImages = 0;\n\tlet imageBytes = 0;\n\tlet cutoffReached = false;\n\n\tfor (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex--) {\n\t\tconst message = messages[messageIndex];\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (let blockIndex = message.content.length - 1; blockIndex >= 0; blockIndex--) {\n\t\t\tconst block = message.content[blockIndex];\n\t\t\tif (block.type !== \"image\") continue;\n\t\t\tconst isCurrentTurn = limitHistory && messageIndex > lastAssistantIndex;\n\t\t\tconst isProtectedHistory = limitHistory && !isCurrentTurn && keptHistoricalImages < maxHistoricalImages;\n\t\t\tconst exceedsHistoryLimit = limitHistory && !isCurrentTurn && !isProtectedHistory;\n\n\t\t\tif (exceedsHistoryLimit || (cutoffReached && !isCurrentTurn && !isProtectedHistory)) {\n\t\t\t\timagesToElide.add(`${messageIndex}:${blockIndex}`);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisCurrentTurn ||\n\t\t\t\tisProtectedHistory ||\n\t\t\t\tkeptImages < alwaysKeepNewest ||\n\t\t\t\timageBytes + block.data.length <= budgetBytes\n\t\t\t) {\n\t\t\t\tkeptImages++;\n\t\t\t\tif (!isCurrentTurn) keptHistoricalImages++;\n\t\t\t\timageBytes += block.data.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcutoffReached = true;\n\t\t\timagesToElide.add(`${messageIndex}:${blockIndex}`);\n\t\t}\n\t}\n\n\tif (imagesToElide.size === 0) return messages;\n\n\treturn messages.map((message, messageIndex) => {\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\treturn message;\n\t\t}\n\t\tif (!message.content.some((_block, blockIndex) => imagesToElide.has(`${messageIndex}:${blockIndex}`))) {\n\t\t\treturn message;\n\t\t}\n\n\t\tconst replaced = message.content.map((block, blockIndex): TextContent | ImageContent =>\n\t\t\timagesToElide.has(`${messageIndex}:${blockIndex}`) ? { type: \"text\", text: IMAGE_ELISION_PLACEHOLDER } : block,\n\t\t);\n\t\treturn {\n\t\t\t...message,\n\t\t\tcontent: dedupeConsecutivePlaceholder(replaced, IMAGE_ELISION_PLACEHOLDER) as typeof message.content,\n\t\t};\n\t});\n}\n\n/** Convert messages for the main provider transport and apply its image policy. */\nexport function convertToLlmForTransport(messages: AgentMessage[], options: TransportConvertOptions): Message[] {\n\tconst converted = convertToLlm(messages);\n\tif (!options.blockImages) return elideOldImages(converted, options);\n\n\treturn converted.map((message) => {\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\treturn message;\n\t\t}\n\t\tif (!message.content.some((block) => block.type === \"image\")) return message;\n\n\t\tconst replaced = message.content.map((block): TextContent | ImageContent =>\n\t\t\tblock.type === \"image\" ? { type: \"text\", text: BLOCKED_IMAGE_PLACEHOLDER } : block,\n\t\t);\n\t\treturn {\n\t\t\t...message,\n\t\t\tcontent: dedupeConsecutivePlaceholder(replaced, BLOCKED_IMAGE_PLACEHOLDER) as typeof message.content,\n\t\t};\n\t});\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport {\n\tcopyContextProvenance,\n\tdropFailedAssistantTurns,\n\ttype ImageContent,\n\ttype Message,\n\ttype TextContent,\n} from \"@earendil-works/pi-ai\";\n\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n\n<summary>\n`;\n\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\nexport const GOAL_CONTINUATION_MESSAGE_TYPE = \"goal-continuation\";\n\n/**\n * Per-type exclusion must remain false: compaction and branch summarization\n * inspect entries independently, where excluding this type would hide the live\n * goal-continuation message.\n */\nexport function isContextExcludedCustomMessage(_customType: string): boolean {\n\treturn false;\n}\n\n/**\n * Whole-context filtering is deliberately a no-op. Goal continuations are\n * append-only: dropping an already-sent continuation would rewrite a\n * provider-visible turn, so request N would stop being a prefix of request N+1\n * and every cached token ahead of the edit would be invalidated (full re-read,\n * cost spike, 429 storms in team mode). Continuation history is bounded by\n * normal compaction instead of by per-request deletion.\n */\nexport function filterContextExcludedMessages(messages: AgentMessage[]): AgentMessage[] {\n\treturn messages;\n}\n\n/**\n * Message type for bash executions via the ! command.\n */\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\t/** If true, this message is excluded from LLM context (!! prefix) */\n\texcludeFromContext?: boolean;\n}\n\n/**\n * Message type for extension-injected messages via sendMessage().\n * These are custom messages that extensions can inject into the conversation.\n */\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\n\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\n\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\tdetails?: unknown;\n\ttimestamp: number;\n}\n\n// Extend CustomAgentMessages via declaration merging\ndeclare module \"@earendil-works/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t}\n}\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n\tdetails?: unknown,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Compaction's generateSummary (for summarization)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\tconst withContextProvenance = <T extends Message>(source: AgentMessage, target: T): T =>\n\t\tcopyContextProvenance(source, target);\n\t// Continuations are append-only here too: the transport array must extend the\n\t// previous request verbatim to keep the provider's cache prefix valid.\n\tconst converted = messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\t// Skip messages excluded from context (!! prefix)\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (isContextExcludedCustomMessage(m.customType)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn withContextProvenance(m, {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t});\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault:\n\t\t\t\t\t// biome-ignore lint/correctness/noSwitchDeclarations: fine\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n\t// Failed provider turns (stopReason error/aborted) must never reach an LLM\n\t// request: lanes that build requests straight from this output (claude-sdk\n\t// prompt bridge, cursor turns) would otherwise replay their partial text and\n\t// unexecuted tool calls, and token estimation would count them. Dropping is\n\t// deterministic per session state, so the cache-prefix guarantee above holds.\n\treturn dropFailedAssistantTurns(converted);\n}\n\n// ============================================================================\n// Transport image budget\n// ============================================================================\n\n/**\n * Cap on inline image base64 (characters approximately equal wire bytes) per\n * provider request. Anthropic documents a 32 MB request limit; reserving the\n * remainder for text and request overhead keeps the transport below that wall.\n */\nexport const TRANSPORT_IMAGE_BUDGET_BYTES = 24 * 1024 * 1024;\n\nexport const IMAGE_ELISION_PLACEHOLDER =\n\t\"[Image elided: an older image was removed to keep the request within the provider's size limit. Re-read the source file if you need to view it again.]\";\n\nexport const BLOCKED_IMAGE_PLACEHOLDER = \"Image reading is disabled.\";\n\nexport interface ElideOldImagesOptions {\n\t/** Cumulative inline image base64 budget. Defaults to TRANSPORT_IMAGE_BUDGET_BYTES. */\n\tbudgetBytes?: number;\n\t/** Newest image blocks always kept regardless of budget. They still consume it. Defaults to 1. */\n\talwaysKeepNewest?: number;\n\t/** Keep at most this many images from turns completed by a later assistant response. */\n\tmaxHistoricalImages?: number;\n}\n\nexport interface TransportConvertOptions extends ElideOldImagesOptions {\n\t/** Replace every image when the images.blockImages setting is enabled. */\n\tblockImages: boolean;\n}\n\n/** Drop consecutive duplicates of a placeholder produced by adjacent image replacements. */\nexport function dedupeConsecutivePlaceholder(\n\tcontent: (TextContent | ImageContent)[],\n\tplaceholder: string,\n): (TextContent | ImageContent)[] {\n\treturn content.filter(\n\t\t(block, index, blocks) =>\n\t\t\t!(\n\t\t\t\tblock.type === \"text\" &&\n\t\t\t\tblock.text === placeholder &&\n\t\t\t\tindex > 0 &&\n\t\t\t\tblocks[index - 1].type === \"text\" &&\n\t\t\t\t(blocks[index - 1] as TextContent).text === placeholder\n\t\t\t),\n\t);\n}\n\n/**\n * Bound inline image payload at request-build time. Images are considered from\n * newest to oldest. Once an image would exceed the budget, it and every older\n * image are replaced by a text placeholder. The newest protected blocks are\n * kept regardless of size, but still consume the budget.\n *\n * The input and persisted session remain untouched. If every image fits, the\n * original array reference is returned.\n */\nexport function elideOldImages(messages: Message[], options?: ElideOldImagesOptions): Message[] {\n\tconst budgetBytes = options?.budgetBytes ?? TRANSPORT_IMAGE_BUDGET_BYTES;\n\tconst alwaysKeepNewest = options?.alwaysKeepNewest ?? 1;\n\tconst maxHistoricalImages = options?.maxHistoricalImages;\n\tconst limitHistory = maxHistoricalImages !== undefined;\n\tconst lastAssistantIndex = messages.findLastIndex((message) => message.role === \"assistant\");\n\tconst imagesToElide = new Set<string>();\n\tlet keptImages = 0;\n\tlet keptHistoricalImages = 0;\n\tlet imageBytes = 0;\n\tlet cutoffReached = false;\n\n\tfor (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex--) {\n\t\tconst message = messages[messageIndex];\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (let blockIndex = message.content.length - 1; blockIndex >= 0; blockIndex--) {\n\t\t\tconst block = message.content[blockIndex];\n\t\t\tif (block.type !== \"image\") continue;\n\t\t\tconst isCurrentTurn = limitHistory && messageIndex > lastAssistantIndex;\n\t\t\tconst isProtectedHistory = limitHistory && !isCurrentTurn && keptHistoricalImages < maxHistoricalImages;\n\t\t\tconst exceedsHistoryLimit = limitHistory && !isCurrentTurn && !isProtectedHistory;\n\n\t\t\tif (exceedsHistoryLimit || (cutoffReached && !isCurrentTurn && !isProtectedHistory)) {\n\t\t\t\timagesToElide.add(`${messageIndex}:${blockIndex}`);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisCurrentTurn ||\n\t\t\t\tisProtectedHistory ||\n\t\t\t\tkeptImages < alwaysKeepNewest ||\n\t\t\t\timageBytes + block.data.length <= budgetBytes\n\t\t\t) {\n\t\t\t\tkeptImages++;\n\t\t\t\tif (!isCurrentTurn) keptHistoricalImages++;\n\t\t\t\timageBytes += block.data.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcutoffReached = true;\n\t\t\timagesToElide.add(`${messageIndex}:${blockIndex}`);\n\t\t}\n\t}\n\n\tif (imagesToElide.size === 0) return messages;\n\n\treturn messages.map((message, messageIndex) => {\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\treturn message;\n\t\t}\n\t\tif (!message.content.some((_block, blockIndex) => imagesToElide.has(`${messageIndex}:${blockIndex}`))) {\n\t\t\treturn message;\n\t\t}\n\n\t\tconst replaced = message.content.map((block, blockIndex): TextContent | ImageContent =>\n\t\t\timagesToElide.has(`${messageIndex}:${blockIndex}`) ? { type: \"text\", text: IMAGE_ELISION_PLACEHOLDER } : block,\n\t\t);\n\t\treturn {\n\t\t\t...message,\n\t\t\tcontent: dedupeConsecutivePlaceholder(replaced, IMAGE_ELISION_PLACEHOLDER) as typeof message.content,\n\t\t};\n\t});\n}\n\n/** Convert messages for the main provider transport and apply its image policy. */\nexport function convertToLlmForTransport(messages: AgentMessage[], options: TransportConvertOptions): Message[] {\n\tconst converted = convertToLlm(messages);\n\tif (!options.blockImages) return elideOldImages(converted, options);\n\n\treturn converted.map((message) => {\n\t\tif ((message.role !== \"user\" && message.role !== \"toolResult\") || !Array.isArray(message.content)) {\n\t\t\treturn message;\n\t\t}\n\t\tif (!message.content.some((block) => block.type === \"image\")) return message;\n\n\t\tconst replaced = message.content.map((block): TextContent | ImageContent =>\n\t\t\tblock.type === \"image\" ? { type: \"text\", text: BLOCKED_IMAGE_PLACEHOLDER } : block,\n\t\t);\n\t\treturn {\n\t\t\t...message,\n\t\t\tcontent: dedupeConsecutivePlaceholder(replaced, BLOCKED_IMAGE_PLACEHOLDER) as typeof message.content,\n\t\t};\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAQxD,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,eAAe,IAAI,qBAAqB,EAC7C,KAAK,uBAAuB,IAAI,6BAA6B,EAE7D,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG,qBAAqB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACnG,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACnH,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAgbnC,yCAAyC;AACzC,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,OAAO;IAUP,OAAO,CAAC,MAAM,CAAC,KAAK;WA6DP,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB3E,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW;IAehE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI/D,cAAc,IAAI,SAAS,MAAM,EAAE;IAInC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI/C,QAAQ,IAAI,MAAM,GAAG,SAAS;CAG9B"}
1
+ {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAQxD,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,eAAe,IAAI,qBAAqB,EAC7C,KAAK,uBAAuB,IAAI,6BAA6B,EAE7D,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG,qBAAqB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACnG,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACnH,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAmbnC,yCAAyC;AACzC,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,OAAO;IAUP,OAAO,CAAC,MAAM,CAAC,KAAK;WA6DP,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB3E,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW;IAehE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI/D,cAAc,IAAI,SAAS,MAAM,EAAE;IAInC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI/C,QAAQ,IAAI,MAAM,GAAG,SAAS;CAG9B"}
@@ -309,6 +309,7 @@ const OpenAICompletionsCompatSchema = Type.Object({
309
309
  Type.Union([Type.Literal("openai"), Type.Literal("openai-nosession"), Type.Literal("openrouter")]),
310
310
  ),
311
311
  supportsLongCacheRetention: Type.Optional(Type.Boolean()),
312
+ vllmPriority: Type.Optional(Type.Number()),
312
313
  });
313
314
 
314
315
  const OpenAIResponsesCompatSchema = Type.Object({
@@ -321,6 +322,7 @@ const OpenAIResponsesCompatSchema = Type.Object({
321
322
  supportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),
322
323
  supportsAdditionalTools: Type.Optional(Type.Boolean()),
323
324
  supportsToolSearch: Type.Optional(Type.Boolean()),
325
+ supportsMaxOutputTokens: Type.Optional(Type.Boolean()),
324
326
  });
325
327
 
326
328
  const AnthropicMessagesCompatSchema = Type.Object({
@@ -332,6 +334,7 @@ const AnthropicMessagesCompatSchema = Type.Object({
332
334
  forceAdaptiveThinking: Type.Optional(Type.Boolean()),
333
335
  allowEmptySignature: Type.Optional(Type.Boolean()),
334
336
  supportsStrictTools: Type.Optional(Type.Boolean()),
337
+ supportsMidConvoEffort: Type.Optional(Type.Boolean()),
335
338
  supportsToolReferences: Type.Optional(Type.Boolean()),
336
339
  });
337
340
 
@@ -1 +1 @@
1
- {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"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","sourcesContent":["/** Immutable, credential-blind models.json snapshot. */\n\nimport { readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport type { TLocalizedValidationError } from \"typebox/error\";\nimport { stripJsonComments } from \"../utils/json.ts\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport { stripBom } from \"../utils/text.ts\";\nimport {\n\ttype ModelsJson,\n\ttype ModelsJsonProvider,\n\ttype ModelsJsonModel as SchemaModelsJsonModel,\n\ttype ModelsJsonModelOverride as SchemaModelsJsonModelOverride,\n\tvalidateModelsConfig,\n} from \"./model-config-schema.ts\";\n\nexport type ModelsJsonModel = SchemaModelsJsonModel & { samplingParams?: Record<string, unknown> };\nexport type ModelsJsonModelOverride = SchemaModelsJsonModelOverride & { samplingParams?: Record<string, unknown> };\nexport type { ModelsJsonProvider };\n\n/*\n\tp50: Type.Optional(Type.Number()),\n\tp75: Type.Optional(Type.Number()),\n\tp90: Type.Optional(Type.Number()),\n\tp99: Type.Optional(Type.Number()),\n});\n\nconst OpenRouterRoutingSchema = Type.Object({\n\tallow_fallbacks: Type.Optional(Type.Boolean()),\n\trequire_parameters: Type.Optional(Type.Boolean()),\n\tdata_collection: Type.Optional(Type.Union([Type.Literal(\"deny\"), Type.Literal(\"allow\")])),\n\tzdr: Type.Optional(Type.Boolean()),\n\tenforce_distillable_text: Type.Optional(Type.Boolean()),\n\torder: Type.Optional(Type.Array(Type.String())),\n\tonly: Type.Optional(Type.Array(Type.String())),\n\tignore: Type.Optional(Type.Array(Type.String())),\n\tquantizations: Type.Optional(Type.Array(Type.String())),\n\tsort: Type.Optional(\n\t\tType.Union([\n\t\t\tType.String(),\n\t\t\tType.Object({\n\t\t\t\tby: Type.Optional(Type.String()),\n\t\t\t\tpartition: Type.Optional(Type.Union([Type.String(), Type.Null()])),\n\t\t\t}),\n\t\t]),\n\t),\n\tmax_price: Type.Optional(\n\t\tType.Object({\n\t\t\tprompt: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\tcompletion: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\timage: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\taudio: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\trequest: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t}),\n\t),\n\tpreferred_min_throughput: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n\tpreferred_max_latency: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n});\n\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\nconst ThinkingLevelMapValueSchema = Type.Union([Type.String(), Type.Null()]);\nconst ThinkingLevelMapSchema = Type.Object({\n\toff: Type.Optional(ThinkingLevelMapValueSchema),\n\tminimal: Type.Optional(ThinkingLevelMapValueSchema),\n\tlow: Type.Optional(ThinkingLevelMapValueSchema),\n\tmedium: Type.Optional(ThinkingLevelMapValueSchema),\n\thigh: Type.Optional(ThinkingLevelMapValueSchema),\n\txhigh: Type.Optional(ThinkingLevelMapValueSchema),\n\tmax: Type.Optional(ThinkingLevelMapValueSchema),\n});\n\nconst ChatTemplateKwargScalarSchema = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()]);\nconst ChatTemplateKwargVariableSchema = Type.Object({\n\t$var: Type.Union([Type.Literal(\"thinking.enabled\"), Type.Literal(\"thinking.effort\")]),\n\tomitWhenOff: Type.Optional(Type.Boolean()),\n});\nconst ChatTemplateKwargSchema = Type.Union([ChatTemplateKwargScalarSchema, ChatTemplateKwargVariableSchema]);\n\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\tsupportsFinishReason: 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\trequiresReasoningContentOnAssistantMessages: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(\n\t\tType.Union([\n\t\t\tType.Literal(\"openai\"),\n\t\t\tType.Literal(\"openrouter\"),\n\t\t\tType.Literal(\"together\"),\n\t\t\tType.Literal(\"deepseek\"),\n\t\t\tType.Literal(\"zai\"),\n\t\t\tType.Literal(\"qwen\"),\n\t\t\tType.Literal(\"chat-template\"),\n\t\t\tType.Literal(\"qwen-chat-template\"),\n\t\t\tType.Literal(\"string-thinking\"),\n\t\t\tType.Literal(\"ant-ling\"),\n\t\t]),\n\t),\n\tchatTemplateKwargs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tcacheControlFormat: Type.Optional(Type.Literal(\"anthropic\")),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tdeferredToolsMode: Type.Optional(Type.Literal(\"kimi\")),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsToolSearch: Type.Optional(Type.Boolean()),\n});\n\nconst AnthropicMessagesCompatSchema = Type.Object({\n\tsupportsEagerToolInputStreaming: Type.Optional(Type.Boolean()),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tsupportsCacheControlOnTools: Type.Optional(Type.Boolean()),\n\tsupportsTemperature: Type.Optional(Type.Boolean()),\n\tforceAdaptiveThinking: Type.Optional(Type.Boolean()),\n\tallowEmptySignature: Type.Optional(Type.Boolean()),\n\tsupportsStrictTools: Type.Optional(Type.Boolean()),\n\tsupportsToolReferences: Type.Optional(Type.Boolean()),\n});\n\nconst ProviderCompatSchema = Type.Union([\n\tOpenAICompletionsCompatSchema,\n\tOpenAIResponsesCompatSchema,\n\tAnthropicMessagesCompatSchema,\n]);\n\nconst ModelCostRatesSchema = {\n\tinput: Type.Number(),\n\toutput: Type.Number(),\n\tcacheRead: Type.Number(),\n\tcacheWrite: Type.Number(),\n};\nconst ModelCostTierSchema = Type.Object({\n\tinputTokensAbove: Type.Number(),\n\t...ModelCostRatesSchema,\n});\nconst ModelCostSchema = Type.Object({\n\t...ModelCostRatesSchema,\n\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n});\n\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\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(ModelCostSchema),\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(ProviderCompatSchema),\n});\n\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\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\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\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(ProviderCompatSchema),\n});\n\nconst ProviderConfigSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\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\t\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\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});\nconst validateModelsConfig = Compile(ModelsConfigSchema);\n\nexport type ModelsJsonModel = Static<typeof ModelDefinitionSchema>;\nexport type ModelsJsonModelOverride = Static<typeof ModelOverrideSchema>;\nexport type ModelsJsonProvider = Static<typeof ProviderConfigSchema>;\ntype LegacyModelsJson = Static<typeof ModelsConfigSchema>;\n*/\n/*\n\tp50: Type.Optional(Type.Number()),\n\tp75: Type.Optional(Type.Number()),\n\tp90: Type.Optional(Type.Number()),\n\tp99: Type.Optional(Type.Number()),\n});\n\nconst OpenRouterRoutingSchema = Type.Object({\n\tallow_fallbacks: Type.Optional(Type.Boolean()),\n\trequire_parameters: Type.Optional(Type.Boolean()),\n\tdata_collection: Type.Optional(Type.Union([Type.Literal(\"deny\"), Type.Literal(\"allow\")])),\n\tzdr: Type.Optional(Type.Boolean()),\n\tenforce_distillable_text: Type.Optional(Type.Boolean()),\n\torder: Type.Optional(Type.Array(Type.String())),\n\tonly: Type.Optional(Type.Array(Type.String())),\n\tignore: Type.Optional(Type.Array(Type.String())),\n\tquantizations: Type.Optional(Type.Array(Type.String())),\n\tsort: Type.Optional(\n\t\tType.Union([\n\t\t\tType.String(),\n\t\t\tType.Object({\n\t\t\t\tby: Type.Optional(Type.String()),\n\t\t\t\tpartition: Type.Optional(Type.Union([Type.String(), Type.Null()])),\n\t\t\t}),\n\t\t]),\n\t),\n\tmax_price: Type.Optional(\n\t\tType.Object({\n\t\t\tprompt: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\tcompletion: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\timage: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\taudio: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\trequest: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t}),\n\t),\n\tpreferred_min_throughput: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n\tpreferred_max_latency: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n});\n\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\nconst ThinkingLevelMapValueSchema = Type.Union([Type.String(), Type.Null()]);\nconst ThinkingLevelMapSchema = Type.Object({\n\toff: Type.Optional(ThinkingLevelMapValueSchema),\n\tminimal: Type.Optional(ThinkingLevelMapValueSchema),\n\tlow: Type.Optional(ThinkingLevelMapValueSchema),\n\tmedium: Type.Optional(ThinkingLevelMapValueSchema),\n\thigh: Type.Optional(ThinkingLevelMapValueSchema),\n\txhigh: Type.Optional(ThinkingLevelMapValueSchema),\n\tmax: Type.Optional(ThinkingLevelMapValueSchema),\n});\n\nconst ChatTemplateKwargScalarSchema = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()]);\nconst ChatTemplateKwargVariableSchema = Type.Object({\n\t$var: Type.Union([Type.Literal(\"thinking.enabled\"), Type.Literal(\"thinking.effort\")]),\n\tomitWhenOff: Type.Optional(Type.Boolean()),\n});\nconst ChatTemplateKwargSchema = Type.Union([ChatTemplateKwargScalarSchema, ChatTemplateKwargVariableSchema]);\n\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\tsupportsFinishReason: Type.Optional(Type.Boolean()),\n\tsupportsFinishReason: 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\trequiresReasoningContentOnAssistantMessages: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(\n\t\tType.Union([\n\t\t\tType.Literal(\"openai\"),\n\t\t\tType.Literal(\"openrouter\"),\n\t\t\tType.Literal(\"together\"),\n\t\t\tType.Literal(\"baseten\"),\n\t\t\tType.Literal(\"deepseek\"),\n\t\t\tType.Literal(\"zai\"),\n\t\t\tType.Literal(\"qwen\"),\n\t\t\tType.Literal(\"chat-template\"),\n\t\t\tType.Literal(\"qwen-chat-template\"),\n\t\t\tType.Literal(\"string-thinking\"),\n\t\t\tType.Literal(\"ant-ling\"),\n\t\t]),\n\t),\n\tchatTemplateKwargs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tchatTemplateArgs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tcacheControlFormat: Type.Optional(Type.Literal(\"anthropic\")),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tdeferredToolsMode: Type.Optional(Type.Literal(\"kimi\")),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsAdditionalTools: Type.Optional(Type.Boolean()),\n\tsupportsToolSearch: Type.Optional(Type.Boolean()),\n});\n\nconst AnthropicMessagesCompatSchema = Type.Object({\n\tsupportsEagerToolInputStreaming: Type.Optional(Type.Boolean()),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tsupportsCacheControlOnTools: Type.Optional(Type.Boolean()),\n\tsupportsTemperature: Type.Optional(Type.Boolean()),\n\tforceAdaptiveThinking: Type.Optional(Type.Boolean()),\n\tallowEmptySignature: Type.Optional(Type.Boolean()),\n\tsupportsStrictTools: Type.Optional(Type.Boolean()),\n\tsupportsToolReferences: Type.Optional(Type.Boolean()),\n});\n\nconst ProviderCompatSchema = Type.Union([\n\tOpenAICompletionsCompatSchema,\n\tOpenAIResponsesCompatSchema,\n\tAnthropicMessagesCompatSchema,\n]);\n\nconst ModelCostRatesSchema = {\n\tinput: Type.Number(),\n\toutput: Type.Number(),\n\tcacheRead: Type.Number(),\n\tcacheWrite: Type.Number(),\n};\nconst ModelCostTierSchema = Type.Object({\n\tinputTokensAbove: Type.Number(),\n\t...ModelCostRatesSchema,\n});\nconst ModelCostSchema = Type.Object({\n\t...ModelCostRatesSchema,\n\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n});\n\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\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(ModelCostSchema),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\tsamplingParams: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\n});\n\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\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\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\tsamplingParams: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\n});\n\nconst ProviderConfigSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\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\t\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\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});\nconst validateModelsConfig = Compile(ModelsConfigSchema);\n\nexport type ModelsJsonModel = Static<typeof ModelDefinitionSchema>;\nexport type ModelsJsonModelOverride = Static<typeof ModelOverrideSchema>;\nexport type ModelsJsonProvider = Static<typeof ProviderConfigSchema>;\ntype UpstreamModelsJson = Static<typeof ModelsConfigSchema>;\n*/\n\nfunction formatValidationPath(error: TLocalizedValidationError): string {\n\tif (error.keyword === \"required\") {\n\t\tconst requiredProperties = (error.params as { requiredProperties?: string[] }).requiredProperties;\n\t\tconst requiredProperty = requiredProperties?.[0];\n\t\tif (requiredProperty) {\n\t\t\tconst basePath = error.instancePath.replace(/^\\//, \"\").replace(/\\//g, \".\");\n\t\t\treturn basePath ? `${basePath}.${requiredProperty}` : requiredProperty;\n\t\t}\n\t}\n\tconst path = error.instancePath.replace(/^\\//, \"\").replace(/\\//g, \".\");\n\treturn path || \"root\";\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (typeof value !== \"object\" || value === null || Object.isFrozen(value)) return value;\n\tfor (const child of Object.values(value)) deepFreeze(child);\n\treturn Object.freeze(value);\n}\n\n/** One immutable load of models.json. */\nexport class ModelConfig {\n\tprivate readonly providers: ReadonlyMap<string, ModelsJsonProvider>;\n\tprivate readonly disabledProviders: ReadonlySet<string>;\n\tprivate readonly error: string | undefined;\n\n\tprivate constructor(\n\t\tproviders: ReadonlyMap<string, ModelsJsonProvider>,\n\t\tdisabledProviders: ReadonlySet<string> = new Set(),\n\t\terror?: string,\n\t) {\n\t\tthis.providers = providers;\n\t\tthis.disabledProviders = disabledProviders;\n\t\tthis.error = error;\n\t}\n\n\tprivate static parse(content: string, path: string): ModelConfig {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(stripJsonComments(stripBom(content)));\n\t\t} catch (error) {\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to parse models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\n\t\t// The shared fork schema intentionally carries compatibility fields that the\n\t\t// upstream validator has not learned yet. Validate a schema-compatible clone,\n\t\t// then retain the original values in the immutable runtime snapshot.\n\t\tconst validationInput = structuredClone(parsed);\n\t\tif (typeof validationInput === \"object\" && validationInput !== null && \"providers\" in validationInput) {\n\t\t\tconst providers = (validationInput as { providers?: Record<string, unknown> }).providers;\n\t\t\tfor (const provider of Object.values(providers ?? {})) {\n\t\t\t\tif (typeof provider !== \"object\" || provider === null) continue;\n\t\t\t\tconst record = provider as {\n\t\t\t\t\tcompat?: Record<string, unknown>;\n\t\t\t\t\tmodels?: Array<{ compat?: Record<string, unknown>; samplingParams?: Record<string, unknown> }>;\n\t\t\t\t\tmodelOverrides?: Record<\n\t\t\t\t\t\tstring,\n\t\t\t\t\t\t{ compat?: Record<string, unknown>; samplingParams?: Record<string, unknown> }\n\t\t\t\t\t>;\n\t\t\t\t};\n\t\t\t\tfor (const model of [...(record.models ?? []), ...Object.values(record.modelOverrides ?? {})]) {\n\t\t\t\t\tdelete model.samplingParams;\n\t\t\t\t}\n\t\t\t\tconst compatEntries = [\n\t\t\t\t\trecord.compat,\n\t\t\t\t\t...(record.models ?? []).map((model) => model.compat),\n\t\t\t\t\t...Object.values(record.modelOverrides ?? {}).map((model) => model.compat),\n\t\t\t\t];\n\t\t\t\tfor (const compat of compatEntries) {\n\t\t\t\t\tif (!compat) continue;\n\t\t\t\t\tif (compat.thinkingFormat === \"baseten\") compat.thinkingFormat = \"together\";\n\t\t\t\t\tdelete compat.chatTemplateArgs;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!validateModelsConfig.Check(validationInput)) {\n\t\t\tconst errors =\n\t\t\t\tvalidateModelsConfig\n\t\t\t\t\t.Errors(validationInput)\n\t\t\t\t\t.map((error) => ` - ${formatValidationPath(error)}: ${error.message}`)\n\t\t\t\t\t.join(\"\\n\") || \"Unknown schema error\";\n\t\t\treturn new ModelConfig(new Map(), new Set(), `Invalid models.json schema:\\n${errors}\\n\\nFile: ${path}`);\n\t\t}\n\n\t\tconst config = parsed as ModelsJson;\n\t\tconst providers = new Map<string, ModelsJsonProvider>();\n\t\tfor (const [providerId, provider] of Object.entries(config.providers)) {\n\t\t\tproviders.set(providerId, deepFreeze(structuredClone(provider)));\n\t\t}\n\t\treturn new ModelConfig(providers, new Set(config.disabledProviders ?? []));\n\t}\n\n\tstatic async load(modelsJsonPath: string | undefined): Promise<ModelConfig> {\n\t\tif (!modelsJsonPath) return new ModelConfig(new Map());\n\t\tconst path = normalizePath(modelsJsonPath);\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = await readFile(path, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return new ModelConfig(new Map());\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\t\treturn ModelConfig.parse(content, path);\n\t}\n\n\tstatic loadSync(modelsJsonPath: string | undefined): ModelConfig {\n\t\tif (!modelsJsonPath) return new ModelConfig(new Map());\n\t\tconst path = normalizePath(modelsJsonPath);\n\t\ttry {\n\t\t\treturn ModelConfig.parse(readFileSync(path, \"utf-8\"), path);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return new ModelConfig(new Map());\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tgetProvider(providerId: string): ModelsJsonProvider | undefined {\n\t\treturn this.providers.get(providerId);\n\t}\n\n\tgetProviderIds(): readonly string[] {\n\t\treturn [...this.providers.keys()];\n\t}\n\n\tisProviderDisabled(providerId: string): boolean {\n\t\treturn this.disabledProviders.has(providerId) || this.providers.get(providerId)?.disabled === true;\n\t}\n\n\tgetError(): string | undefined {\n\t\treturn this.error;\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"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","sourcesContent":["/** Immutable, credential-blind models.json snapshot. */\n\nimport { readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport type { TLocalizedValidationError } from \"typebox/error\";\nimport { stripJsonComments } from \"../utils/json.ts\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport { stripBom } from \"../utils/text.ts\";\nimport {\n\ttype ModelsJson,\n\ttype ModelsJsonProvider,\n\ttype ModelsJsonModel as SchemaModelsJsonModel,\n\ttype ModelsJsonModelOverride as SchemaModelsJsonModelOverride,\n\tvalidateModelsConfig,\n} from \"./model-config-schema.ts\";\n\nexport type ModelsJsonModel = SchemaModelsJsonModel & { samplingParams?: Record<string, unknown> };\nexport type ModelsJsonModelOverride = SchemaModelsJsonModelOverride & { samplingParams?: Record<string, unknown> };\nexport type { ModelsJsonProvider };\n\n/*\n\tp50: Type.Optional(Type.Number()),\n\tp75: Type.Optional(Type.Number()),\n\tp90: Type.Optional(Type.Number()),\n\tp99: Type.Optional(Type.Number()),\n});\n\nconst OpenRouterRoutingSchema = Type.Object({\n\tallow_fallbacks: Type.Optional(Type.Boolean()),\n\trequire_parameters: Type.Optional(Type.Boolean()),\n\tdata_collection: Type.Optional(Type.Union([Type.Literal(\"deny\"), Type.Literal(\"allow\")])),\n\tzdr: Type.Optional(Type.Boolean()),\n\tenforce_distillable_text: Type.Optional(Type.Boolean()),\n\torder: Type.Optional(Type.Array(Type.String())),\n\tonly: Type.Optional(Type.Array(Type.String())),\n\tignore: Type.Optional(Type.Array(Type.String())),\n\tquantizations: Type.Optional(Type.Array(Type.String())),\n\tsort: Type.Optional(\n\t\tType.Union([\n\t\t\tType.String(),\n\t\t\tType.Object({\n\t\t\t\tby: Type.Optional(Type.String()),\n\t\t\t\tpartition: Type.Optional(Type.Union([Type.String(), Type.Null()])),\n\t\t\t}),\n\t\t]),\n\t),\n\tmax_price: Type.Optional(\n\t\tType.Object({\n\t\t\tprompt: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\tcompletion: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\timage: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\taudio: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\trequest: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t}),\n\t),\n\tpreferred_min_throughput: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n\tpreferred_max_latency: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n});\n\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\nconst ThinkingLevelMapValueSchema = Type.Union([Type.String(), Type.Null()]);\nconst ThinkingLevelMapSchema = Type.Object({\n\toff: Type.Optional(ThinkingLevelMapValueSchema),\n\tminimal: Type.Optional(ThinkingLevelMapValueSchema),\n\tlow: Type.Optional(ThinkingLevelMapValueSchema),\n\tmedium: Type.Optional(ThinkingLevelMapValueSchema),\n\thigh: Type.Optional(ThinkingLevelMapValueSchema),\n\txhigh: Type.Optional(ThinkingLevelMapValueSchema),\n\tmax: Type.Optional(ThinkingLevelMapValueSchema),\n});\n\nconst ChatTemplateKwargScalarSchema = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()]);\nconst ChatTemplateKwargVariableSchema = Type.Object({\n\t$var: Type.Union([Type.Literal(\"thinking.enabled\"), Type.Literal(\"thinking.effort\")]),\n\tomitWhenOff: Type.Optional(Type.Boolean()),\n});\nconst ChatTemplateKwargSchema = Type.Union([ChatTemplateKwargScalarSchema, ChatTemplateKwargVariableSchema]);\n\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\tsupportsFinishReason: 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\trequiresReasoningContentOnAssistantMessages: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(\n\t\tType.Union([\n\t\t\tType.Literal(\"openai\"),\n\t\t\tType.Literal(\"openrouter\"),\n\t\t\tType.Literal(\"together\"),\n\t\t\tType.Literal(\"deepseek\"),\n\t\t\tType.Literal(\"zai\"),\n\t\t\tType.Literal(\"qwen\"),\n\t\t\tType.Literal(\"chat-template\"),\n\t\t\tType.Literal(\"qwen-chat-template\"),\n\t\t\tType.Literal(\"string-thinking\"),\n\t\t\tType.Literal(\"ant-ling\"),\n\t\t]),\n\t),\n\tchatTemplateKwargs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tcacheControlFormat: Type.Optional(Type.Literal(\"anthropic\")),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tdeferredToolsMode: Type.Optional(Type.Literal(\"kimi\")),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsToolSearch: Type.Optional(Type.Boolean()),\n});\n\nconst AnthropicMessagesCompatSchema = Type.Object({\n\tsupportsEagerToolInputStreaming: Type.Optional(Type.Boolean()),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tsupportsCacheControlOnTools: Type.Optional(Type.Boolean()),\n\tsupportsTemperature: Type.Optional(Type.Boolean()),\n\tforceAdaptiveThinking: Type.Optional(Type.Boolean()),\n\tallowEmptySignature: Type.Optional(Type.Boolean()),\n\tsupportsStrictTools: Type.Optional(Type.Boolean()),\n\tsupportsToolReferences: Type.Optional(Type.Boolean()),\n});\n\nconst ProviderCompatSchema = Type.Union([\n\tOpenAICompletionsCompatSchema,\n\tOpenAIResponsesCompatSchema,\n\tAnthropicMessagesCompatSchema,\n]);\n\nconst ModelCostRatesSchema = {\n\tinput: Type.Number(),\n\toutput: Type.Number(),\n\tcacheRead: Type.Number(),\n\tcacheWrite: Type.Number(),\n};\nconst ModelCostTierSchema = Type.Object({\n\tinputTokensAbove: Type.Number(),\n\t...ModelCostRatesSchema,\n});\nconst ModelCostSchema = Type.Object({\n\t...ModelCostRatesSchema,\n\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n});\n\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\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(ModelCostSchema),\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(ProviderCompatSchema),\n});\n\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\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\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\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(ProviderCompatSchema),\n});\n\nconst ProviderConfigSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\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\t\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\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});\nconst validateModelsConfig = Compile(ModelsConfigSchema);\n\nexport type ModelsJsonModel = Static<typeof ModelDefinitionSchema>;\nexport type ModelsJsonModelOverride = Static<typeof ModelOverrideSchema>;\nexport type ModelsJsonProvider = Static<typeof ProviderConfigSchema>;\ntype LegacyModelsJson = Static<typeof ModelsConfigSchema>;\n*/\n/*\n\tp50: Type.Optional(Type.Number()),\n\tp75: Type.Optional(Type.Number()),\n\tp90: Type.Optional(Type.Number()),\n\tp99: Type.Optional(Type.Number()),\n});\n\nconst OpenRouterRoutingSchema = Type.Object({\n\tallow_fallbacks: Type.Optional(Type.Boolean()),\n\trequire_parameters: Type.Optional(Type.Boolean()),\n\tdata_collection: Type.Optional(Type.Union([Type.Literal(\"deny\"), Type.Literal(\"allow\")])),\n\tzdr: Type.Optional(Type.Boolean()),\n\tenforce_distillable_text: Type.Optional(Type.Boolean()),\n\torder: Type.Optional(Type.Array(Type.String())),\n\tonly: Type.Optional(Type.Array(Type.String())),\n\tignore: Type.Optional(Type.Array(Type.String())),\n\tquantizations: Type.Optional(Type.Array(Type.String())),\n\tsort: Type.Optional(\n\t\tType.Union([\n\t\t\tType.String(),\n\t\t\tType.Object({\n\t\t\t\tby: Type.Optional(Type.String()),\n\t\t\t\tpartition: Type.Optional(Type.Union([Type.String(), Type.Null()])),\n\t\t\t}),\n\t\t]),\n\t),\n\tmax_price: Type.Optional(\n\t\tType.Object({\n\t\t\tprompt: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\tcompletion: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\timage: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\taudio: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t\trequest: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n\t\t}),\n\t),\n\tpreferred_min_throughput: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n\tpreferred_max_latency: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),\n});\n\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\nconst ThinkingLevelMapValueSchema = Type.Union([Type.String(), Type.Null()]);\nconst ThinkingLevelMapSchema = Type.Object({\n\toff: Type.Optional(ThinkingLevelMapValueSchema),\n\tminimal: Type.Optional(ThinkingLevelMapValueSchema),\n\tlow: Type.Optional(ThinkingLevelMapValueSchema),\n\tmedium: Type.Optional(ThinkingLevelMapValueSchema),\n\thigh: Type.Optional(ThinkingLevelMapValueSchema),\n\txhigh: Type.Optional(ThinkingLevelMapValueSchema),\n\tmax: Type.Optional(ThinkingLevelMapValueSchema),\n});\n\nconst ChatTemplateKwargScalarSchema = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()]);\nconst ChatTemplateKwargVariableSchema = Type.Object({\n\t$var: Type.Union([Type.Literal(\"thinking.enabled\"), Type.Literal(\"thinking.effort\")]),\n\tomitWhenOff: Type.Optional(Type.Boolean()),\n});\nconst ChatTemplateKwargSchema = Type.Union([ChatTemplateKwargScalarSchema, ChatTemplateKwargVariableSchema]);\n\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\tsupportsFinishReason: Type.Optional(Type.Boolean()),\n\tsupportsFinishReason: 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\trequiresReasoningContentOnAssistantMessages: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(\n\t\tType.Union([\n\t\t\tType.Literal(\"openai\"),\n\t\t\tType.Literal(\"openrouter\"),\n\t\t\tType.Literal(\"together\"),\n\t\t\tType.Literal(\"baseten\"),\n\t\t\tType.Literal(\"deepseek\"),\n\t\t\tType.Literal(\"zai\"),\n\t\t\tType.Literal(\"qwen\"),\n\t\t\tType.Literal(\"chat-template\"),\n\t\t\tType.Literal(\"qwen-chat-template\"),\n\t\t\tType.Literal(\"string-thinking\"),\n\t\t\tType.Literal(\"ant-ling\"),\n\t\t]),\n\t),\n\tchatTemplateKwargs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tchatTemplateArgs: Type.Optional(Type.Record(Type.String(), ChatTemplateKwargSchema)),\n\tcacheControlFormat: Type.Optional(Type.Literal(\"anthropic\")),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tdeferredToolsMode: Type.Optional(Type.Literal(\"kimi\")),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tvllmPriority: Type.Optional(Type.Number()),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsessionAffinityFormat: Type.Optional(\n\t\tType.Union([Type.Literal(\"openai\"), Type.Literal(\"openai-nosession\"), Type.Literal(\"openrouter\")]),\n\t),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\tsupportsOpenAIGrammarTools: Type.Optional(Type.Boolean()),\n\tsupportsAdditionalTools: Type.Optional(Type.Boolean()),\n\tsupportsToolSearch: Type.Optional(Type.Boolean()),\n\tsupportsMaxOutputTokens: Type.Optional(Type.Boolean()),\n});\n\nconst AnthropicMessagesCompatSchema = Type.Object({\n\tsupportsEagerToolInputStreaming: Type.Optional(Type.Boolean()),\n\tsupportsLongCacheRetention: Type.Optional(Type.Boolean()),\n\tsendSessionAffinityHeaders: Type.Optional(Type.Boolean()),\n\tsupportsCacheControlOnTools: Type.Optional(Type.Boolean()),\n\tsupportsTemperature: Type.Optional(Type.Boolean()),\n\tforceAdaptiveThinking: Type.Optional(Type.Boolean()),\n\tallowEmptySignature: Type.Optional(Type.Boolean()),\n\tsupportsStrictTools: Type.Optional(Type.Boolean()),\n\tsupportsMidConvoEffort: Type.Optional(Type.Boolean()),\n\tsupportsToolReferences: Type.Optional(Type.Boolean()),\n});\n\nconst ProviderCompatSchema = Type.Union([\n\tOpenAICompletionsCompatSchema,\n\tOpenAIResponsesCompatSchema,\n\tAnthropicMessagesCompatSchema,\n]);\n\nconst ModelCostRatesSchema = {\n\tinput: Type.Number(),\n\toutput: Type.Number(),\n\tcacheRead: Type.Number(),\n\tcacheWrite: Type.Number(),\n};\nconst ModelCostTierSchema = Type.Object({\n\tinputTokensAbove: Type.Number(),\n\t...ModelCostRatesSchema,\n});\nconst ModelCostSchema = Type.Object({\n\t...ModelCostRatesSchema,\n\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n});\n\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\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(ModelCostSchema),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\tsamplingParams: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\n});\n\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tthinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),\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\ttiers: Type.Optional(Type.Array(ModelCostTierSchema)),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\tsamplingParams: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\n});\n\nconst ProviderConfigSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\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\t\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(ProviderCompatSchema),\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});\nconst validateModelsConfig = Compile(ModelsConfigSchema);\n\nexport type ModelsJsonModel = Static<typeof ModelDefinitionSchema>;\nexport type ModelsJsonModelOverride = Static<typeof ModelOverrideSchema>;\nexport type ModelsJsonProvider = Static<typeof ProviderConfigSchema>;\ntype UpstreamModelsJson = Static<typeof ModelsConfigSchema>;\n*/\n\nfunction formatValidationPath(error: TLocalizedValidationError): string {\n\tif (error.keyword === \"required\") {\n\t\tconst requiredProperties = (error.params as { requiredProperties?: string[] }).requiredProperties;\n\t\tconst requiredProperty = requiredProperties?.[0];\n\t\tif (requiredProperty) {\n\t\t\tconst basePath = error.instancePath.replace(/^\\//, \"\").replace(/\\//g, \".\");\n\t\t\treturn basePath ? `${basePath}.${requiredProperty}` : requiredProperty;\n\t\t}\n\t}\n\tconst path = error.instancePath.replace(/^\\//, \"\").replace(/\\//g, \".\");\n\treturn path || \"root\";\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (typeof value !== \"object\" || value === null || Object.isFrozen(value)) return value;\n\tfor (const child of Object.values(value)) deepFreeze(child);\n\treturn Object.freeze(value);\n}\n\n/** One immutable load of models.json. */\nexport class ModelConfig {\n\tprivate readonly providers: ReadonlyMap<string, ModelsJsonProvider>;\n\tprivate readonly disabledProviders: ReadonlySet<string>;\n\tprivate readonly error: string | undefined;\n\n\tprivate constructor(\n\t\tproviders: ReadonlyMap<string, ModelsJsonProvider>,\n\t\tdisabledProviders: ReadonlySet<string> = new Set(),\n\t\terror?: string,\n\t) {\n\t\tthis.providers = providers;\n\t\tthis.disabledProviders = disabledProviders;\n\t\tthis.error = error;\n\t}\n\n\tprivate static parse(content: string, path: string): ModelConfig {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(stripJsonComments(stripBom(content)));\n\t\t} catch (error) {\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to parse models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\n\t\t// The shared fork schema intentionally carries compatibility fields that the\n\t\t// upstream validator has not learned yet. Validate a schema-compatible clone,\n\t\t// then retain the original values in the immutable runtime snapshot.\n\t\tconst validationInput = structuredClone(parsed);\n\t\tif (typeof validationInput === \"object\" && validationInput !== null && \"providers\" in validationInput) {\n\t\t\tconst providers = (validationInput as { providers?: Record<string, unknown> }).providers;\n\t\t\tfor (const provider of Object.values(providers ?? {})) {\n\t\t\t\tif (typeof provider !== \"object\" || provider === null) continue;\n\t\t\t\tconst record = provider as {\n\t\t\t\t\tcompat?: Record<string, unknown>;\n\t\t\t\t\tmodels?: Array<{ compat?: Record<string, unknown>; samplingParams?: Record<string, unknown> }>;\n\t\t\t\t\tmodelOverrides?: Record<\n\t\t\t\t\t\tstring,\n\t\t\t\t\t\t{ compat?: Record<string, unknown>; samplingParams?: Record<string, unknown> }\n\t\t\t\t\t>;\n\t\t\t\t};\n\t\t\t\tfor (const model of [...(record.models ?? []), ...Object.values(record.modelOverrides ?? {})]) {\n\t\t\t\t\tdelete model.samplingParams;\n\t\t\t\t}\n\t\t\t\tconst compatEntries = [\n\t\t\t\t\trecord.compat,\n\t\t\t\t\t...(record.models ?? []).map((model) => model.compat),\n\t\t\t\t\t...Object.values(record.modelOverrides ?? {}).map((model) => model.compat),\n\t\t\t\t];\n\t\t\t\tfor (const compat of compatEntries) {\n\t\t\t\t\tif (!compat) continue;\n\t\t\t\t\tif (compat.thinkingFormat === \"baseten\") compat.thinkingFormat = \"together\";\n\t\t\t\t\tdelete compat.chatTemplateArgs;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!validateModelsConfig.Check(validationInput)) {\n\t\t\tconst errors =\n\t\t\t\tvalidateModelsConfig\n\t\t\t\t\t.Errors(validationInput)\n\t\t\t\t\t.map((error) => ` - ${formatValidationPath(error)}: ${error.message}`)\n\t\t\t\t\t.join(\"\\n\") || \"Unknown schema error\";\n\t\t\treturn new ModelConfig(new Map(), new Set(), `Invalid models.json schema:\\n${errors}\\n\\nFile: ${path}`);\n\t\t}\n\n\t\tconst config = parsed as ModelsJson;\n\t\tconst providers = new Map<string, ModelsJsonProvider>();\n\t\tfor (const [providerId, provider] of Object.entries(config.providers)) {\n\t\t\tproviders.set(providerId, deepFreeze(structuredClone(provider)));\n\t\t}\n\t\treturn new ModelConfig(providers, new Set(config.disabledProviders ?? []));\n\t}\n\n\tstatic async load(modelsJsonPath: string | undefined): Promise<ModelConfig> {\n\t\tif (!modelsJsonPath) return new ModelConfig(new Map());\n\t\tconst path = normalizePath(modelsJsonPath);\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = await readFile(path, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return new ModelConfig(new Map());\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\t\treturn ModelConfig.parse(content, path);\n\t}\n\n\tstatic loadSync(modelsJsonPath: string | undefined): ModelConfig {\n\t\tif (!modelsJsonPath) return new ModelConfig(new Map());\n\t\tconst path = normalizePath(modelsJsonPath);\n\t\ttry {\n\t\t\treturn ModelConfig.parse(readFileSync(path, \"utf-8\"), path);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return new ModelConfig(new Map());\n\t\t\treturn new ModelConfig(\n\t\t\t\tnew Map(),\n\t\t\t\tnew Set(),\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${path}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tgetProvider(providerId: string): ModelsJsonProvider | undefined {\n\t\treturn this.providers.get(providerId);\n\t}\n\n\tgetProviderIds(): readonly string[] {\n\t\treturn [...this.providers.keys()];\n\t}\n\n\tisProviderDisabled(providerId: string): boolean {\n\t\treturn this.disabledProviders.has(providerId) || this.providers.get(providerId)?.disabled === true;\n\t}\n\n\tgetError(): string | undefined {\n\t\treturn this.error;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-composer.d.ts","sourceRoot":"","sources":["../../src/core/provider-composer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-composer.d.ts","sourceRoot":"","sources":["../../src/core/provider-composer.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,12 @@ function modelFromJson(providerId, definition, providerConfig, defaults) {
85
85
  compat: mergeCompat(providerConfig.compat, definition.compat),
86
86
  };
87
87
  }
88
+ function findModelDefaults(models, modelId, api) {
89
+ return (models.find((model) => model.id === modelId) ??
90
+ (api ? models.find((model) => model.api === api) : undefined) ??
91
+ models.find((model) => model.api === "openai-completions") ??
92
+ models[0]);
93
+ }
88
94
  function applyModelsJson(providerId, baseModels, config, extension) {
89
95
  if (!config)
90
96
  return [...baseModels];
@@ -110,7 +116,12 @@ function applyModelsJson(providerId, baseModels, config, extension) {
110
116
  }));
111
117
  for (const definition of config.models ?? []) {
112
118
  const existingIndex = models.findIndex((model) => model.id === definition.id);
113
- const defaults = existingIndex >= 0 ? models[existingIndex] : models[0];
119
+ const defaults = existingIndex >= 0
120
+ ? models[existingIndex]
121
+ : findModelDefaults(models, definition.id, definition.api ?? extension?.api ?? config.api);
122
+ // Extension-provided api/baseUrl still win over the resolved defaults so a
123
+ // models.json extension can retarget an inherited built-in entry, and remain
124
+ // the fallback when no built-in default exists (empty catalog).
114
125
  const model = modelFromJson(providerId, definition, config, {
115
126
  ...defaults,
116
127
  api: extension?.api ?? defaults?.api,
@@ -133,7 +144,7 @@ function applyExtension(providerId, models, config, customModelIds) {
133
144
  }
134
145
  const declaredModels = config.models;
135
146
  const extensionModels = declaredModels.map((definition) => {
136
- const defaults = models.find((model) => model.id === definition.id) ?? models[0];
147
+ const defaults = findModelDefaults(models, definition.id, definition.api ?? config.api);
137
148
  const api = definition.api ?? config.api ?? defaults?.api;
138
149
  if (!api) {
139
150
  throw new Error(`Provider ${providerId}, model ${definition.id}: no "api" specified. Set at provider or model level.`);