@nodetool-ai/runtime 0.7.0-rc.23 → 0.8.1

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 (665) hide show
  1. package/README.md +29 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/agent-memory.d.ts +118 -0
  4. package/dist/agent-memory.d.ts.map +1 -0
  5. package/dist/agent-memory.js +186 -0
  6. package/dist/agent-memory.js.map +1 -0
  7. package/dist/async-local-storage.d.ts +20 -0
  8. package/dist/async-local-storage.d.ts.map +1 -0
  9. package/dist/async-local-storage.js +28 -0
  10. package/dist/async-local-storage.js.map +1 -0
  11. package/dist/blender-executor.d.ts +93 -0
  12. package/dist/blender-executor.d.ts.map +1 -0
  13. package/dist/blender-executor.js +294 -0
  14. package/dist/blender-executor.js.map +1 -0
  15. package/dist/comfy-executor.d.ts +23 -1
  16. package/dist/comfy-executor.d.ts.map +1 -1
  17. package/dist/comfy-executor.js +234 -55
  18. package/dist/comfy-executor.js.map +1 -1
  19. package/dist/context-packer.d.ts +1 -1
  20. package/dist/context-packer.d.ts.map +1 -1
  21. package/dist/context-packer.js +23 -25
  22. package/dist/context-packer.js.map +1 -1
  23. package/dist/context.d.ts +954 -127
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +2424 -513
  26. package/dist/context.js.map +1 -1
  27. package/dist/cost-reconciler.d.ts +32 -0
  28. package/dist/cost-reconciler.d.ts.map +1 -0
  29. package/dist/cost-reconciler.js +21 -0
  30. package/dist/cost-reconciler.js.map +1 -0
  31. package/dist/entities.d.ts +33 -0
  32. package/dist/entities.d.ts.map +1 -0
  33. package/dist/entities.js +43 -0
  34. package/dist/entities.js.map +1 -0
  35. package/dist/external-media-fetch.d.ts +29 -0
  36. package/dist/external-media-fetch.d.ts.map +1 -0
  37. package/dist/external-media-fetch.js +38 -0
  38. package/dist/external-media-fetch.js.map +1 -0
  39. package/dist/generation-receipt.d.ts +86 -0
  40. package/dist/generation-receipt.d.ts.map +1 -0
  41. package/dist/generation-receipt.js +137 -0
  42. package/dist/generation-receipt.js.map +1 -0
  43. package/dist/generation-registry.d.ts +67 -0
  44. package/dist/generation-registry.d.ts.map +1 -0
  45. package/dist/generation-registry.js +126 -0
  46. package/dist/generation-registry.js.map +1 -0
  47. package/dist/google/client.d.ts +196 -0
  48. package/dist/google/client.d.ts.map +1 -0
  49. package/dist/google/client.js +396 -0
  50. package/dist/google/client.js.map +1 -0
  51. package/dist/google/index.d.ts +3 -0
  52. package/dist/google/index.d.ts.map +1 -0
  53. package/dist/google/index.js +3 -0
  54. package/dist/google/index.js.map +1 -0
  55. package/dist/google/token.d.ts +15 -0
  56. package/dist/google/token.d.ts.map +1 -0
  57. package/dist/google/token.js +24 -0
  58. package/dist/google/token.js.map +1 -0
  59. package/dist/host-binaries.d.ts +106 -0
  60. package/dist/host-binaries.d.ts.map +1 -0
  61. package/dist/host-binaries.js +344 -0
  62. package/dist/host-binaries.js.map +1 -0
  63. package/dist/image-codec.d.ts +74 -0
  64. package/dist/image-codec.d.ts.map +1 -0
  65. package/dist/image-codec.js +273 -0
  66. package/dist/image-codec.js.map +1 -0
  67. package/dist/index.d.ts +56 -6
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +43 -4
  70. package/dist/index.js.map +1 -1
  71. package/dist/invocation-account.d.ts +43 -0
  72. package/dist/invocation-account.d.ts.map +1 -0
  73. package/dist/invocation-account.js +60 -0
  74. package/dist/invocation-account.js.map +1 -0
  75. package/dist/media-ref-bytes.d.ts +19 -0
  76. package/dist/media-ref-bytes.d.ts.map +1 -0
  77. package/dist/media-ref-bytes.js +181 -0
  78. package/dist/media-ref-bytes.js.map +1 -0
  79. package/dist/node-executor.d.ts +113 -2
  80. package/dist/node-executor.d.ts.map +1 -1
  81. package/dist/permission-gate.d.ts +152 -0
  82. package/dist/permission-gate.d.ts.map +1 -0
  83. package/dist/permission-gate.js +87 -0
  84. package/dist/permission-gate.js.map +1 -0
  85. package/dist/prefixed-storage-adapter.d.ts +33 -0
  86. package/dist/prefixed-storage-adapter.d.ts.map +1 -0
  87. package/dist/prefixed-storage-adapter.js +70 -0
  88. package/dist/prefixed-storage-adapter.js.map +1 -0
  89. package/dist/prompt-asset-refs.d.ts +222 -0
  90. package/dist/prompt-asset-refs.d.ts.map +1 -0
  91. package/dist/prompt-asset-refs.js +751 -0
  92. package/dist/prompt-asset-refs.js.map +1 -0
  93. package/dist/provider-cache.d.ts +3 -0
  94. package/dist/provider-cache.d.ts.map +1 -0
  95. package/dist/provider-cache.js +8 -0
  96. package/dist/provider-cache.js.map +1 -0
  97. package/dist/providers/aki-provider.d.ts +33 -10
  98. package/dist/providers/aki-provider.d.ts.map +1 -1
  99. package/dist/providers/aki-provider.js +84 -77
  100. package/dist/providers/aki-provider.js.map +1 -1
  101. package/dist/providers/alibaba-provider.d.ts +39 -0
  102. package/dist/providers/alibaba-provider.d.ts.map +1 -0
  103. package/dist/providers/alibaba-provider.js +86 -0
  104. package/dist/providers/alibaba-provider.js.map +1 -0
  105. package/dist/providers/anthropic-provider.d.ts +52 -3
  106. package/dist/providers/anthropic-provider.d.ts.map +1 -1
  107. package/dist/providers/anthropic-provider.js +1020 -338
  108. package/dist/providers/anthropic-provider.js.map +1 -1
  109. package/dist/providers/atlascloud-provider.d.ts +101 -0
  110. package/dist/providers/atlascloud-provider.d.ts.map +1 -0
  111. package/dist/providers/atlascloud-provider.js +1009 -0
  112. package/dist/providers/atlascloud-provider.js.map +1 -0
  113. package/dist/providers/atlascloud-transport.d.ts +100 -0
  114. package/dist/providers/atlascloud-transport.d.ts.map +1 -0
  115. package/dist/providers/atlascloud-transport.js +364 -0
  116. package/dist/providers/atlascloud-transport.js.map +1 -0
  117. package/dist/providers/atlascloud-webhook-registry.d.ts +35 -0
  118. package/dist/providers/atlascloud-webhook-registry.d.ts.map +1 -0
  119. package/dist/providers/atlascloud-webhook-registry.js +104 -0
  120. package/dist/providers/atlascloud-webhook-registry.js.map +1 -0
  121. package/dist/providers/audio-mime.d.ts +11 -0
  122. package/dist/providers/audio-mime.d.ts.map +1 -0
  123. package/dist/providers/audio-mime.js +46 -0
  124. package/dist/providers/audio-mime.js.map +1 -0
  125. package/dist/providers/base-provider.d.ts +481 -24
  126. package/dist/providers/base-provider.d.ts.map +1 -1
  127. package/dist/providers/base-provider.js +1259 -42
  128. package/dist/providers/base-provider.js.map +1 -1
  129. package/dist/providers/cassette-provider.d.ts +217 -0
  130. package/dist/providers/cassette-provider.d.ts.map +1 -0
  131. package/dist/providers/cassette-provider.js +502 -0
  132. package/dist/providers/cassette-provider.js.map +1 -0
  133. package/dist/providers/cerebras-provider.d.ts +6 -12
  134. package/dist/providers/cerebras-provider.d.ts.map +1 -1
  135. package/dist/providers/cerebras-provider.js +8 -33
  136. package/dist/providers/cerebras-provider.js.map +1 -1
  137. package/dist/providers/claude-agent-provider.d.ts +131 -68
  138. package/dist/providers/claude-agent-provider.d.ts.map +1 -1
  139. package/dist/providers/claude-agent-provider.js +1095 -515
  140. package/dist/providers/claude-agent-provider.js.map +1 -1
  141. package/dist/providers/codex-provider.d.ts +82 -0
  142. package/dist/providers/codex-provider.d.ts.map +1 -0
  143. package/dist/providers/codex-provider.js +492 -0
  144. package/dist/providers/codex-provider.js.map +1 -0
  145. package/dist/providers/cohere-provider.d.ts +5 -2
  146. package/dist/providers/cohere-provider.d.ts.map +1 -1
  147. package/dist/providers/cohere-provider.js +9 -2
  148. package/dist/providers/cohere-provider.js.map +1 -1
  149. package/dist/providers/comfy-cloud-provider.d.ts +30 -0
  150. package/dist/providers/comfy-cloud-provider.d.ts.map +1 -0
  151. package/dist/providers/comfy-cloud-provider.js +42 -0
  152. package/dist/providers/comfy-cloud-provider.js.map +1 -0
  153. package/dist/providers/content-filter.d.ts +46 -0
  154. package/dist/providers/content-filter.d.ts.map +1 -0
  155. package/dist/providers/content-filter.js +92 -0
  156. package/dist/providers/content-filter.js.map +1 -0
  157. package/dist/providers/context-exceeded.d.ts +37 -0
  158. package/dist/providers/context-exceeded.d.ts.map +1 -0
  159. package/dist/providers/context-exceeded.js +114 -0
  160. package/dist/providers/context-exceeded.js.map +1 -0
  161. package/dist/providers/context-window.d.ts +44 -0
  162. package/dist/providers/context-window.d.ts.map +1 -0
  163. package/dist/providers/context-window.js +145 -0
  164. package/dist/providers/context-window.js.map +1 -0
  165. package/dist/providers/contract/index.d.ts +4 -0
  166. package/dist/providers/contract/index.d.ts.map +1 -0
  167. package/dist/providers/contract/index.js +4 -0
  168. package/dist/providers/contract/index.js.map +1 -0
  169. package/dist/providers/contract/probe-manifest.d.ts +75 -0
  170. package/dist/providers/contract/probe-manifest.d.ts.map +1 -0
  171. package/dist/providers/contract/probe-manifest.js +379 -0
  172. package/dist/providers/contract/probe-manifest.js.map +1 -0
  173. package/dist/providers/contract/probe-runner.d.ts +57 -0
  174. package/dist/providers/contract/probe-runner.d.ts.map +1 -0
  175. package/dist/providers/contract/probe-runner.js +180 -0
  176. package/dist/providers/contract/probe-runner.js.map +1 -0
  177. package/dist/providers/contract/redact.d.ts +29 -0
  178. package/dist/providers/contract/redact.d.ts.map +1 -0
  179. package/dist/providers/contract/redact.js +113 -0
  180. package/dist/providers/contract/redact.js.map +1 -0
  181. package/dist/providers/core-tools.d.ts +74 -0
  182. package/dist/providers/core-tools.d.ts.map +1 -0
  183. package/dist/providers/core-tools.js +127 -0
  184. package/dist/providers/core-tools.js.map +1 -0
  185. package/dist/providers/cost-calculator.d.ts +69 -50
  186. package/dist/providers/cost-calculator.d.ts.map +1 -1
  187. package/dist/providers/cost-calculator.js +207 -397
  188. package/dist/providers/cost-calculator.js.map +1 -1
  189. package/dist/providers/credential-check.d.ts +45 -0
  190. package/dist/providers/credential-check.d.ts.map +1 -0
  191. package/dist/providers/credential-check.js +159 -0
  192. package/dist/providers/credential-check.js.map +1 -0
  193. package/dist/providers/custom-model-kinds.d.ts +33 -0
  194. package/dist/providers/custom-model-kinds.d.ts.map +1 -0
  195. package/dist/providers/custom-model-kinds.js +96 -0
  196. package/dist/providers/custom-model-kinds.js.map +1 -0
  197. package/dist/providers/custom-openai-provider.d.ts +81 -0
  198. package/dist/providers/custom-openai-provider.d.ts.map +1 -0
  199. package/dist/providers/custom-openai-provider.js +182 -0
  200. package/dist/providers/custom-openai-provider.js.map +1 -0
  201. package/dist/providers/custom-provider-registry.d.ts +19 -0
  202. package/dist/providers/custom-provider-registry.d.ts.map +1 -0
  203. package/dist/providers/custom-provider-registry.js +52 -0
  204. package/dist/providers/custom-provider-registry.js.map +1 -0
  205. package/dist/providers/deepseek-provider.d.ts +8 -14
  206. package/dist/providers/deepseek-provider.d.ts.map +1 -1
  207. package/dist/providers/deepseek-provider.js +6 -35
  208. package/dist/providers/deepseek-provider.js.map +1 -1
  209. package/dist/providers/defaults.d.ts +12 -0
  210. package/dist/providers/defaults.d.ts.map +1 -0
  211. package/dist/providers/defaults.js +12 -0
  212. package/dist/providers/defaults.js.map +1 -0
  213. package/dist/providers/elevenlabs-provider.d.ts +49 -0
  214. package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
  215. package/dist/providers/elevenlabs-provider.js +142 -0
  216. package/dist/providers/elevenlabs-provider.js.map +1 -0
  217. package/dist/providers/entity-references.d.ts +31 -0
  218. package/dist/providers/entity-references.d.ts.map +1 -0
  219. package/dist/providers/entity-references.js +113 -0
  220. package/dist/providers/entity-references.js.map +1 -0
  221. package/dist/providers/evolink-provider.d.ts +38 -0
  222. package/dist/providers/evolink-provider.d.ts.map +1 -0
  223. package/dist/providers/evolink-provider.js +304 -0
  224. package/dist/providers/evolink-provider.js.map +1 -0
  225. package/dist/providers/fake-provider.d.ts +72 -1
  226. package/dist/providers/fake-provider.d.ts.map +1 -1
  227. package/dist/providers/fake-provider.js +203 -1
  228. package/dist/providers/fake-provider.js.map +1 -1
  229. package/dist/providers/fal-generations.d.ts +106 -0
  230. package/dist/providers/fal-generations.d.ts.map +1 -0
  231. package/dist/providers/fal-generations.js +286 -0
  232. package/dist/providers/fal-generations.js.map +1 -0
  233. package/dist/providers/fal-provider.d.ts +171 -7
  234. package/dist/providers/fal-provider.d.ts.map +1 -1
  235. package/dist/providers/fal-provider.js +1369 -64
  236. package/dist/providers/fal-provider.js.map +1 -1
  237. package/dist/providers/fal-queue.d.ts +47 -0
  238. package/dist/providers/fal-queue.d.ts.map +1 -0
  239. package/dist/providers/fal-queue.js +231 -0
  240. package/dist/providers/fal-queue.js.map +1 -0
  241. package/dist/providers/gemini-provider.d.ts +148 -8
  242. package/dist/providers/gemini-provider.d.ts.map +1 -1
  243. package/dist/providers/gemini-provider.js +1500 -316
  244. package/dist/providers/gemini-provider.js.map +1 -1
  245. package/dist/providers/gmi-provider.d.ts +21 -0
  246. package/dist/providers/gmi-provider.d.ts.map +1 -0
  247. package/dist/providers/gmi-provider.js +34 -0
  248. package/dist/providers/gmi-provider.js.map +1 -0
  249. package/dist/providers/gpt-image-size.d.ts +3 -0
  250. package/dist/providers/gpt-image-size.d.ts.map +1 -0
  251. package/dist/providers/gpt-image-size.js +37 -0
  252. package/dist/providers/gpt-image-size.js.map +1 -0
  253. package/dist/providers/groq-provider.d.ts +9 -12
  254. package/dist/providers/groq-provider.d.ts.map +1 -1
  255. package/dist/providers/groq-provider.js +19 -33
  256. package/dist/providers/groq-provider.js.map +1 -1
  257. package/dist/providers/groq-request.d.ts +38 -0
  258. package/dist/providers/groq-request.d.ts.map +1 -0
  259. package/dist/providers/groq-request.js +138 -0
  260. package/dist/providers/groq-request.js.map +1 -0
  261. package/dist/providers/higgsfield-provider.d.ts +30 -0
  262. package/dist/providers/higgsfield-provider.d.ts.map +1 -0
  263. package/dist/providers/higgsfield-provider.js +131 -0
  264. package/dist/providers/higgsfield-provider.js.map +1 -0
  265. package/dist/providers/higgsfield-transport.d.ts +106 -0
  266. package/dist/providers/higgsfield-transport.d.ts.map +1 -0
  267. package/dist/providers/higgsfield-transport.js +182 -0
  268. package/dist/providers/higgsfield-transport.js.map +1 -0
  269. package/dist/providers/http-transport.d.ts +74 -0
  270. package/dist/providers/http-transport.d.ts.map +1 -0
  271. package/dist/providers/http-transport.js +152 -0
  272. package/dist/providers/http-transport.js.map +1 -0
  273. package/dist/providers/huggingface-provider.d.ts +71 -3
  274. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  275. package/dist/providers/huggingface-provider.js +230 -34
  276. package/dist/providers/huggingface-provider.js.map +1 -1
  277. package/dist/providers/image-mime.d.ts +39 -0
  278. package/dist/providers/image-mime.d.ts.map +1 -0
  279. package/dist/providers/image-mime.js +111 -0
  280. package/dist/providers/image-mime.js.map +1 -0
  281. package/dist/providers/image-ref.d.ts +21 -0
  282. package/dist/providers/image-ref.d.ts.map +1 -0
  283. package/dist/providers/image-ref.js +44 -0
  284. package/dist/providers/image-ref.js.map +1 -0
  285. package/dist/providers/index.d.ts +84 -8
  286. package/dist/providers/index.d.ts.map +1 -1
  287. package/dist/providers/index.js +239 -56
  288. package/dist/providers/index.js.map +1 -1
  289. package/dist/providers/jina-provider.d.ts +10 -2
  290. package/dist/providers/jina-provider.d.ts.map +1 -1
  291. package/dist/providers/jina-provider.js +16 -7
  292. package/dist/providers/jina-provider.js.map +1 -1
  293. package/dist/providers/kie-provider.d.ts +170 -9
  294. package/dist/providers/kie-provider.d.ts.map +1 -1
  295. package/dist/providers/kie-provider.js +1176 -228
  296. package/dist/providers/kie-provider.js.map +1 -1
  297. package/dist/providers/kie-webhook-registry.d.ts +28 -0
  298. package/dist/providers/kie-webhook-registry.d.ts.map +1 -0
  299. package/dist/providers/kie-webhook-registry.js +91 -0
  300. package/dist/providers/kie-webhook-registry.js.map +1 -0
  301. package/dist/providers/llama-provider.d.ts +21 -37
  302. package/dist/providers/llama-provider.d.ts.map +1 -1
  303. package/dist/providers/llama-provider.js +43 -354
  304. package/dist/providers/llama-provider.js.map +1 -1
  305. package/dist/providers/lmstudio-provider.d.ts +4 -7
  306. package/dist/providers/lmstudio-provider.d.ts.map +1 -1
  307. package/dist/providers/lmstudio-provider.js +24 -15
  308. package/dist/providers/lmstudio-provider.js.map +1 -1
  309. package/dist/providers/manifest-models.d.ts +341 -1
  310. package/dist/providers/manifest-models.d.ts.map +1 -1
  311. package/dist/providers/manifest-models.js +1106 -22
  312. package/dist/providers/manifest-models.js.map +1 -1
  313. package/dist/providers/media-mime.d.ts +14 -0
  314. package/dist/providers/media-mime.d.ts.map +1 -0
  315. package/dist/providers/media-mime.js +35 -0
  316. package/dist/providers/media-mime.js.map +1 -0
  317. package/dist/providers/meshy-provider.d.ts +14 -1
  318. package/dist/providers/meshy-provider.d.ts.map +1 -1
  319. package/dist/providers/meshy-provider.js +76 -46
  320. package/dist/providers/meshy-provider.js.map +1 -1
  321. package/dist/providers/meta-provider.d.ts +22 -0
  322. package/dist/providers/meta-provider.d.ts.map +1 -0
  323. package/dist/providers/meta-provider.js +54 -0
  324. package/dist/providers/meta-provider.js.map +1 -0
  325. package/dist/providers/minimax-provider.d.ts +25 -18
  326. package/dist/providers/minimax-provider.d.ts.map +1 -1
  327. package/dist/providers/minimax-provider.js +211 -72
  328. package/dist/providers/minimax-provider.js.map +1 -1
  329. package/dist/providers/mistral-provider.d.ts +6 -12
  330. package/dist/providers/mistral-provider.d.ts.map +1 -1
  331. package/dist/providers/mistral-provider.js +10 -34
  332. package/dist/providers/mistral-provider.js.map +1 -1
  333. package/dist/providers/moonshot-provider.d.ts +11 -15
  334. package/dist/providers/moonshot-provider.d.ts.map +1 -1
  335. package/dist/providers/moonshot-provider.js +33 -23
  336. package/dist/providers/moonshot-provider.js.map +1 -1
  337. package/dist/providers/node-llama-cpp-provider.d.ts +98 -0
  338. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
  339. package/dist/providers/node-llama-cpp-provider.js +479 -0
  340. package/dist/providers/node-llama-cpp-provider.js.map +1 -0
  341. package/dist/providers/nodetool-provider.d.ts +49 -0
  342. package/dist/providers/nodetool-provider.d.ts.map +1 -0
  343. package/dist/providers/nodetool-provider.js +224 -0
  344. package/dist/providers/nodetool-provider.js.map +1 -0
  345. package/dist/providers/oauth/browser-launcher.d.ts +23 -0
  346. package/dist/providers/oauth/browser-launcher.d.ts.map +1 -0
  347. package/dist/providers/oauth/browser-launcher.js +45 -0
  348. package/dist/providers/oauth/browser-launcher.js.map +1 -0
  349. package/dist/providers/oauth/claude-code-credentials.d.ts +74 -0
  350. package/dist/providers/oauth/claude-code-credentials.d.ts.map +1 -0
  351. package/dist/providers/oauth/claude-code-credentials.js +133 -0
  352. package/dist/providers/oauth/claude-code-credentials.js.map +1 -0
  353. package/dist/providers/oauth/claude-code-login.d.ts +124 -0
  354. package/dist/providers/oauth/claude-code-login.d.ts.map +1 -0
  355. package/dist/providers/oauth/claude-code-login.js +230 -0
  356. package/dist/providers/oauth/claude-code-login.js.map +1 -0
  357. package/dist/providers/oauth/claude-code-oauth-client.d.ts +111 -0
  358. package/dist/providers/oauth/claude-code-oauth-client.d.ts.map +1 -0
  359. package/dist/providers/oauth/claude-code-oauth-client.js +207 -0
  360. package/dist/providers/oauth/claude-code-oauth-client.js.map +1 -0
  361. package/dist/providers/oauth/errors.d.ts +54 -0
  362. package/dist/providers/oauth/errors.d.ts.map +1 -0
  363. package/dist/providers/oauth/errors.js +79 -0
  364. package/dist/providers/oauth/errors.js.map +1 -0
  365. package/dist/providers/oauth/index.d.ts +105 -0
  366. package/dist/providers/oauth/index.d.ts.map +1 -0
  367. package/dist/providers/oauth/index.js +167 -0
  368. package/dist/providers/oauth/index.js.map +1 -0
  369. package/dist/providers/oauth/jwt-claims.d.ts +23 -0
  370. package/dist/providers/oauth/jwt-claims.d.ts.map +1 -0
  371. package/dist/providers/oauth/jwt-claims.js +67 -0
  372. package/dist/providers/oauth/jwt-claims.js.map +1 -0
  373. package/dist/providers/oauth/local-callback-server.d.ts +60 -0
  374. package/dist/providers/oauth/local-callback-server.d.ts.map +1 -0
  375. package/dist/providers/oauth/local-callback-server.js +148 -0
  376. package/dist/providers/oauth/local-callback-server.js.map +1 -0
  377. package/dist/providers/oauth/oauth-client.d.ts +55 -0
  378. package/dist/providers/oauth/oauth-client.d.ts.map +1 -0
  379. package/dist/providers/oauth/oauth-client.js +161 -0
  380. package/dist/providers/oauth/oauth-client.js.map +1 -0
  381. package/dist/providers/oauth/openai-oauth-provider.d.ts +129 -0
  382. package/dist/providers/oauth/openai-oauth-provider.d.ts.map +1 -0
  383. package/dist/providers/oauth/openai-oauth-provider.js +265 -0
  384. package/dist/providers/oauth/openai-oauth-provider.js.map +1 -0
  385. package/dist/providers/oauth/pkce-helper.d.ts +43 -0
  386. package/dist/providers/oauth/pkce-helper.d.ts.map +1 -0
  387. package/dist/providers/oauth/pkce-helper.js +57 -0
  388. package/dist/providers/oauth/pkce-helper.js.map +1 -0
  389. package/dist/providers/oauth/redaction.d.ts +22 -0
  390. package/dist/providers/oauth/redaction.d.ts.map +1 -0
  391. package/dist/providers/oauth/redaction.js +59 -0
  392. package/dist/providers/oauth/redaction.js.map +1 -0
  393. package/dist/providers/oauth/secure-credential-store.d.ts +67 -0
  394. package/dist/providers/oauth/secure-credential-store.d.ts.map +1 -0
  395. package/dist/providers/oauth/secure-credential-store.js +73 -0
  396. package/dist/providers/oauth/secure-credential-store.js.map +1 -0
  397. package/dist/providers/oauth/token-store.d.ts +53 -0
  398. package/dist/providers/oauth/token-store.d.ts.map +1 -0
  399. package/dist/providers/oauth/token-store.js +78 -0
  400. package/dist/providers/oauth/token-store.js.map +1 -0
  401. package/dist/providers/oauth/types.d.ts +64 -0
  402. package/dist/providers/oauth/types.d.ts.map +1 -0
  403. package/dist/providers/oauth/types.js +12 -0
  404. package/dist/providers/oauth/types.js.map +1 -0
  405. package/dist/providers/object-tracking.d.ts +47 -0
  406. package/dist/providers/object-tracking.d.ts.map +1 -0
  407. package/dist/providers/object-tracking.js +46 -0
  408. package/dist/providers/object-tracking.js.map +1 -0
  409. package/dist/providers/offline-model-index.d.ts +20 -0
  410. package/dist/providers/offline-model-index.d.ts.map +1 -0
  411. package/dist/providers/offline-model-index.js +112 -0
  412. package/dist/providers/offline-model-index.js.map +1 -0
  413. package/dist/providers/ollama-provider.d.ts +28 -1
  414. package/dist/providers/ollama-provider.d.ts.map +1 -1
  415. package/dist/providers/ollama-provider.js +193 -43
  416. package/dist/providers/ollama-provider.js.map +1 -1
  417. package/dist/providers/openai-compat/client.d.ts +57 -0
  418. package/dist/providers/openai-compat/client.d.ts.map +1 -0
  419. package/dist/providers/openai-compat/client.js +157 -0
  420. package/dist/providers/openai-compat/client.js.map +1 -0
  421. package/dist/providers/openai-compat/decode.d.ts +36 -0
  422. package/dist/providers/openai-compat/decode.d.ts.map +1 -0
  423. package/dist/providers/openai-compat/decode.js +55 -0
  424. package/dist/providers/openai-compat/decode.js.map +1 -0
  425. package/dist/providers/openai-compat/errors.d.ts +54 -0
  426. package/dist/providers/openai-compat/errors.d.ts.map +1 -0
  427. package/dist/providers/openai-compat/errors.js +144 -0
  428. package/dist/providers/openai-compat/errors.js.map +1 -0
  429. package/dist/providers/openai-compat/index.d.ts +8 -0
  430. package/dist/providers/openai-compat/index.d.ts.map +1 -0
  431. package/dist/providers/openai-compat/index.js +5 -0
  432. package/dist/providers/openai-compat/index.js.map +1 -0
  433. package/dist/providers/openai-compat/sse.d.ts +14 -0
  434. package/dist/providers/openai-compat/sse.d.ts.map +1 -0
  435. package/dist/providers/openai-compat/sse.js +69 -0
  436. package/dist/providers/openai-compat/sse.js.map +1 -0
  437. package/dist/providers/openai-compat/types.d.ts +75 -0
  438. package/dist/providers/openai-compat/types.d.ts.map +1 -0
  439. package/dist/providers/openai-compat/types.js +9 -0
  440. package/dist/providers/openai-compat/types.js.map +1 -0
  441. package/dist/providers/openai-compat-provider.d.ts +90 -0
  442. package/dist/providers/openai-compat-provider.d.ts.map +1 -0
  443. package/dist/providers/openai-compat-provider.js +282 -0
  444. package/dist/providers/openai-compat-provider.js.map +1 -0
  445. package/dist/providers/openai-provider.d.ts +89 -26
  446. package/dist/providers/openai-provider.d.ts.map +1 -1
  447. package/dist/providers/openai-provider.js +990 -105
  448. package/dist/providers/openai-provider.js.map +1 -1
  449. package/dist/providers/openrouter-provider.d.ts +6 -12
  450. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  451. package/dist/providers/openrouter-provider.js +24 -53
  452. package/dist/providers/openrouter-provider.js.map +1 -1
  453. package/dist/providers/provider-call-failure.d.ts +39 -0
  454. package/dist/providers/provider-call-failure.d.ts.map +1 -0
  455. package/dist/providers/provider-call-failure.js +132 -0
  456. package/dist/providers/provider-call-failure.js.map +1 -0
  457. package/dist/providers/provider-error.d.ts +59 -0
  458. package/dist/providers/provider-error.d.ts.map +1 -0
  459. package/dist/providers/provider-error.js +165 -0
  460. package/dist/providers/provider-error.js.map +1 -0
  461. package/dist/providers/provider-generations.d.ts +99 -0
  462. package/dist/providers/provider-generations.d.ts.map +1 -0
  463. package/dist/providers/provider-generations.js +71 -0
  464. package/dist/providers/provider-generations.js.map +1 -0
  465. package/dist/providers/provider-queue.d.ts +62 -0
  466. package/dist/providers/provider-queue.d.ts.map +1 -0
  467. package/dist/providers/provider-queue.js +28 -0
  468. package/dist/providers/provider-queue.js.map +1 -0
  469. package/dist/providers/provider-registry.d.ts +33 -14
  470. package/dist/providers/provider-registry.d.ts.map +1 -1
  471. package/dist/providers/provider-registry.js +85 -68
  472. package/dist/providers/provider-registry.js.map +1 -1
  473. package/dist/providers/provider-request-log.d.ts +53 -0
  474. package/dist/providers/provider-request-log.d.ts.map +1 -0
  475. package/dist/providers/provider-request-log.js +157 -0
  476. package/dist/providers/provider-request-log.js.map +1 -0
  477. package/dist/providers/provider-session.d.ts +3 -0
  478. package/dist/providers/provider-session.d.ts.map +1 -0
  479. package/dist/providers/provider-session.js +10 -0
  480. package/dist/providers/provider-session.js.map +1 -0
  481. package/dist/providers/provider-transport.d.ts +11 -0
  482. package/dist/providers/provider-transport.d.ts.map +1 -0
  483. package/dist/providers/provider-transport.js +11 -0
  484. package/dist/providers/provider-transport.js.map +1 -0
  485. package/dist/providers/python-provider.d.ts +20 -12
  486. package/dist/providers/python-provider.d.ts.map +1 -1
  487. package/dist/providers/python-provider.js +185 -25
  488. package/dist/providers/python-provider.js.map +1 -1
  489. package/dist/providers/replicate-provider.d.ts +89 -7
  490. package/dist/providers/replicate-provider.d.ts.map +1 -1
  491. package/dist/providers/replicate-provider.js +801 -65
  492. package/dist/providers/replicate-provider.js.map +1 -1
  493. package/dist/providers/replicate-retry.d.ts +30 -0
  494. package/dist/providers/replicate-retry.d.ts.map +1 -0
  495. package/dist/providers/replicate-retry.js +97 -0
  496. package/dist/providers/replicate-retry.js.map +1 -0
  497. package/dist/providers/responses-api.d.ts +27 -0
  498. package/dist/providers/responses-api.d.ts.map +1 -0
  499. package/dist/providers/responses-api.js +297 -0
  500. package/dist/providers/responses-api.js.map +1 -0
  501. package/dist/providers/reve-provider.d.ts +45 -0
  502. package/dist/providers/reve-provider.d.ts.map +1 -0
  503. package/dist/providers/reve-provider.js +159 -0
  504. package/dist/providers/reve-provider.js.map +1 -0
  505. package/dist/providers/rodin-provider.d.ts +23 -1
  506. package/dist/providers/rodin-provider.d.ts.map +1 -1
  507. package/dist/providers/rodin-provider.js +89 -51
  508. package/dist/providers/rodin-provider.js.map +1 -1
  509. package/dist/providers/safe-url.d.ts +70 -0
  510. package/dist/providers/safe-url.d.ts.map +1 -0
  511. package/dist/providers/safe-url.js +277 -0
  512. package/dist/providers/safe-url.js.map +1 -0
  513. package/dist/providers/scripted-provider.d.ts +9 -0
  514. package/dist/providers/scripted-provider.d.ts.map +1 -1
  515. package/dist/providers/scripted-provider.js +86 -10
  516. package/dist/providers/scripted-provider.js.map +1 -1
  517. package/dist/providers/structured-output.d.ts +42 -0
  518. package/dist/providers/structured-output.d.ts.map +1 -0
  519. package/dist/providers/structured-output.js +83 -0
  520. package/dist/providers/structured-output.js.map +1 -0
  521. package/dist/providers/together-provider.d.ts +19 -16
  522. package/dist/providers/together-provider.d.ts.map +1 -1
  523. package/dist/providers/together-provider.js +103 -225
  524. package/dist/providers/together-provider.js.map +1 -1
  525. package/dist/providers/topaz-provider.d.ts +44 -0
  526. package/dist/providers/topaz-provider.d.ts.map +1 -0
  527. package/dist/providers/topaz-provider.js +239 -0
  528. package/dist/providers/topaz-provider.js.map +1 -0
  529. package/dist/providers/types.d.ts +603 -4
  530. package/dist/providers/types.d.ts.map +1 -1
  531. package/dist/providers/types.js +81 -1
  532. package/dist/providers/types.js.map +1 -1
  533. package/dist/providers/useapi-provider.d.ts +27 -0
  534. package/dist/providers/useapi-provider.d.ts.map +1 -0
  535. package/dist/providers/useapi-provider.js +266 -0
  536. package/dist/providers/useapi-provider.js.map +1 -0
  537. package/dist/providers/video-duration.d.ts +6 -0
  538. package/dist/providers/video-duration.d.ts.map +1 -0
  539. package/dist/providers/video-duration.js +63 -0
  540. package/dist/providers/video-duration.js.map +1 -0
  541. package/dist/providers/video-frame-fallback.d.ts +39 -0
  542. package/dist/providers/video-frame-fallback.d.ts.map +1 -0
  543. package/dist/providers/video-frame-fallback.js +155 -0
  544. package/dist/providers/video-frame-fallback.js.map +1 -0
  545. package/dist/providers/video-frames.d.ts +61 -0
  546. package/dist/providers/video-frames.d.ts.map +1 -0
  547. package/dist/providers/video-frames.js +208 -0
  548. package/dist/providers/video-frames.js.map +1 -0
  549. package/dist/providers/video-mime.d.ts +14 -0
  550. package/dist/providers/video-mime.d.ts.map +1 -0
  551. package/dist/providers/video-mime.js +44 -0
  552. package/dist/providers/video-mime.js.map +1 -0
  553. package/dist/providers/video-to-audio.d.ts +34 -0
  554. package/dist/providers/video-to-audio.d.ts.map +1 -0
  555. package/dist/providers/video-to-audio.js +62 -0
  556. package/dist/providers/video-to-audio.js.map +1 -0
  557. package/dist/providers/vllm-provider.d.ts +22 -8
  558. package/dist/providers/vllm-provider.d.ts.map +1 -1
  559. package/dist/providers/vllm-provider.js +48 -23
  560. package/dist/providers/vllm-provider.js.map +1 -1
  561. package/dist/providers/voyage-provider.d.ts +10 -2
  562. package/dist/providers/voyage-provider.d.ts.map +1 -1
  563. package/dist/providers/voyage-provider.js +16 -7
  564. package/dist/providers/voyage-provider.js.map +1 -1
  565. package/dist/providers/xai-provider.d.ts +54 -13
  566. package/dist/providers/xai-provider.d.ts.map +1 -1
  567. package/dist/providers/xai-provider.js +299 -22
  568. package/dist/providers/xai-provider.js.map +1 -1
  569. package/dist/python-bridge-base.d.ts +358 -0
  570. package/dist/python-bridge-base.d.ts.map +1 -0
  571. package/dist/python-bridge-base.js +1557 -0
  572. package/dist/python-bridge-base.js.map +1 -0
  573. package/dist/python-bridge-codec.d.ts +28 -0
  574. package/dist/python-bridge-codec.d.ts.map +1 -0
  575. package/dist/python-bridge-codec.js +39 -0
  576. package/dist/python-bridge-codec.js.map +1 -0
  577. package/dist/python-bridge-factory.d.ts +52 -0
  578. package/dist/python-bridge-factory.d.ts.map +1 -0
  579. package/dist/python-bridge-factory.js +69 -0
  580. package/dist/python-bridge-factory.js.map +1 -0
  581. package/dist/python-bridge-framing.d.ts +68 -0
  582. package/dist/python-bridge-framing.d.ts.map +1 -0
  583. package/dist/python-bridge-framing.js +91 -0
  584. package/dist/python-bridge-framing.js.map +1 -0
  585. package/dist/python-bridge-types.d.ts +545 -2
  586. package/dist/python-bridge-types.d.ts.map +1 -1
  587. package/dist/python-bridge-types.js +49 -1
  588. package/dist/python-bridge-types.js.map +1 -1
  589. package/dist/python-graph-resolver.d.ts +57 -0
  590. package/dist/python-graph-resolver.d.ts.map +1 -0
  591. package/dist/python-graph-resolver.js +79 -0
  592. package/dist/python-graph-resolver.js.map +1 -0
  593. package/dist/python-node-executor.d.ts +36 -4
  594. package/dist/python-node-executor.d.ts.map +1 -1
  595. package/dist/python-node-executor.js +177 -86
  596. package/dist/python-node-executor.js.map +1 -1
  597. package/dist/python-stdio-bridge.d.ts +18 -37
  598. package/dist/python-stdio-bridge.d.ts.map +1 -1
  599. package/dist/python-stdio-bridge.js +148 -475
  600. package/dist/python-stdio-bridge.js.map +1 -1
  601. package/dist/python-websocket-bridge.d.ts +140 -0
  602. package/dist/python-websocket-bridge.d.ts.map +1 -0
  603. package/dist/python-websocket-bridge.js +561 -0
  604. package/dist/python-websocket-bridge.js.map +1 -0
  605. package/dist/python-worker-stderr.d.ts +4 -0
  606. package/dist/python-worker-stderr.d.ts.map +1 -0
  607. package/dist/python-worker-stderr.js +24 -0
  608. package/dist/python-worker-stderr.js.map +1 -0
  609. package/dist/recommended-models.d.ts +2 -2
  610. package/dist/recommended-models.d.ts.map +1 -1
  611. package/dist/recommended-models.js +24 -4
  612. package/dist/recommended-models.js.map +1 -1
  613. package/dist/recoverable-node-error.d.ts +31 -0
  614. package/dist/recoverable-node-error.d.ts.map +1 -0
  615. package/dist/recoverable-node-error.js +37 -0
  616. package/dist/recoverable-node-error.js.map +1 -0
  617. package/dist/redact-params.d.ts +13 -0
  618. package/dist/redact-params.d.ts.map +1 -0
  619. package/dist/redact-params.js +57 -0
  620. package/dist/redact-params.js.map +1 -0
  621. package/dist/sandbox-module-catalog.d.ts +43 -0
  622. package/dist/sandbox-module-catalog.d.ts.map +1 -0
  623. package/dist/sandbox-module-catalog.js +25 -0
  624. package/dist/sandbox-module-catalog.js.map +1 -0
  625. package/dist/storage-workspace.d.ts +59 -0
  626. package/dist/storage-workspace.d.ts.map +1 -0
  627. package/dist/storage-workspace.js +426 -0
  628. package/dist/storage-workspace.js.map +1 -0
  629. package/dist/swappable-python-bridge.d.ts +83 -0
  630. package/dist/swappable-python-bridge.d.ts.map +1 -0
  631. package/dist/swappable-python-bridge.js +246 -0
  632. package/dist/swappable-python-bridge.js.map +1 -0
  633. package/dist/telemetry.d.ts +7 -0
  634. package/dist/telemetry.d.ts.map +1 -1
  635. package/dist/telemetry.js +23 -0
  636. package/dist/telemetry.js.map +1 -1
  637. package/dist/testing.d.ts +81 -0
  638. package/dist/testing.d.ts.map +1 -0
  639. package/dist/testing.js +130 -0
  640. package/dist/testing.js.map +1 -0
  641. package/dist/token-counter.d.ts +30 -0
  642. package/dist/token-counter.d.ts.map +1 -0
  643. package/dist/token-counter.js +156 -0
  644. package/dist/token-counter.js.map +1 -0
  645. package/dist/trace-exporters.d.ts +10 -0
  646. package/dist/trace-exporters.d.ts.map +1 -1
  647. package/dist/trace-exporters.js +59 -20
  648. package/dist/trace-exporters.js.map +1 -1
  649. package/dist/tracing-helpers.d.ts +45 -4
  650. package/dist/tracing-helpers.d.ts.map +1 -1
  651. package/dist/tracing-helpers.js +62 -19
  652. package/dist/tracing-helpers.js.map +1 -1
  653. package/dist/turn-budget.d.ts +278 -0
  654. package/dist/turn-budget.d.ts.map +1 -0
  655. package/dist/turn-budget.js +365 -0
  656. package/dist/turn-budget.js.map +1 -0
  657. package/dist/variable-channel.d.ts +48 -0
  658. package/dist/variable-channel.d.ts.map +1 -0
  659. package/dist/variable-channel.js +110 -0
  660. package/dist/variable-channel.js.map +1 -0
  661. package/dist/workspace.d.ts +119 -0
  662. package/dist/workspace.d.ts.map +1 -0
  663. package/dist/workspace.js +112 -0
  664. package/dist/workspace.js.map +1 -0
  665. package/package.json +107 -19
@@ -0,0 +1,502 @@
1
+ /**
2
+ * LLM record/replay ("VCR cassette") harness at the provider boundary.
3
+ *
4
+ * A {@link CassetteProvider} wraps any inner {@link BaseProvider}. In "record"
5
+ * mode it delegates every chat call to the inner provider and captures the
6
+ * request plus the full streamed response into a cassette. In "replay" mode it
7
+ * serves recorded responses by matching a stable hash of the request, never
8
+ * touching the inner provider (no API key, no network, no cost, no flakiness).
9
+ * "auto" replays when a matching interaction exists, otherwise records one.
10
+ *
11
+ * Only the chat surface (`generateMessage` / `generateMessages`) is recorded —
12
+ * that is where agent/prompt behavior lives. Every other modality (image,
13
+ * video, audio, embeddings) delegates straight to the inner provider.
14
+ */
15
+ import { getNodeBuiltinSync, importNodeBuiltin } from "@nodetool-ai/config";
16
+ import { BaseProvider } from "./base-provider.js";
17
+ import { isObjectLike } from "@nodetool-ai/protocol";
18
+ import { createUsageSlot } from "../tracing-helpers.js";
19
+ const _nodeCrypto = getNodeBuiltinSync("node:crypto");
20
+ function sleep(ms) {
21
+ return new Promise((resolve) => setTimeout(resolve, ms));
22
+ }
23
+ /** Immediate-failure faults: thrown before the cassette/inner provider is
24
+ * ever consulted. Returns null for faults that don't fail the call outright. */
25
+ async function throwImmediateFault(fault) {
26
+ if (fault.kind === "http-429") {
27
+ const err = new Error(`CassetteProvider fault: upstream rate limited (429 too many requests)` +
28
+ (fault.retryAfterSeconds
29
+ ? `; retry after ${fault.retryAfterSeconds}s`
30
+ : ""));
31
+ err.status = 429;
32
+ throw err;
33
+ }
34
+ if (fault.kind === "http-500") {
35
+ const err = new Error("CassetteProvider fault: upstream server error (500 internal server error)");
36
+ err.status = 500;
37
+ throw err;
38
+ }
39
+ if (fault.kind === "timeout") {
40
+ const ms = fault.timeoutMs ?? 50;
41
+ await sleep(ms);
42
+ const err = new Error(`CassetteProvider fault: request timed out after ${ms}ms`);
43
+ err.code = "ETIMEDOUT";
44
+ throw err;
45
+ }
46
+ }
47
+ export function createEmptyCassette() {
48
+ return { version: 1, interactions: [] };
49
+ }
50
+ /**
51
+ * Deterministic JSON with object keys sorted at every level. Arrays keep their
52
+ * order. Typed arrays/Buffers are encoded as a tagged base64 string so binary
53
+ * message content hashes stably. Circular references collapse to "[circular]".
54
+ */
55
+ export function stableStringify(value) {
56
+ const seen = new WeakSet();
57
+ const encode = (v) => {
58
+ if (!isObjectLike(v)) {
59
+ // Normalize undefined (omitted by JSON.stringify) and functions to null
60
+ // so two requests differing only in an unset optional hash identically.
61
+ if (typeof v === "undefined" || typeof v === "function")
62
+ return null;
63
+ if (typeof v === "bigint")
64
+ return `__bigint__:${v.toString()}`;
65
+ // SAFETY: what is left is a JSON scalar — string, number, boolean, null.
66
+ return v;
67
+ }
68
+ if (v instanceof Uint8Array) {
69
+ return `__bytes__:${bytesToBase64(v)}`;
70
+ }
71
+ if (ArrayBuffer.isView(v)) {
72
+ const view = v;
73
+ return `__bytes__:${bytesToBase64(new Uint8Array(view.buffer, view.byteOffset, view.byteLength))}`;
74
+ }
75
+ if (seen.has(v))
76
+ return "[circular]";
77
+ seen.add(v);
78
+ try {
79
+ if (Array.isArray(v)) {
80
+ return v.map(encode);
81
+ }
82
+ const obj = v;
83
+ const out = {};
84
+ for (const key of Object.keys(obj).sort()) {
85
+ out[key] = encode(obj[key]);
86
+ }
87
+ return out;
88
+ }
89
+ finally {
90
+ seen.delete(v);
91
+ }
92
+ };
93
+ return JSON.stringify(encode(value));
94
+ }
95
+ function bytesToBase64(bytes) {
96
+ if (typeof Buffer !== "undefined") {
97
+ return Buffer.from(bytes).toString("base64");
98
+ }
99
+ let binary = "";
100
+ for (const b of bytes)
101
+ binary += String.fromCharCode(b);
102
+ // btoa exists in browser/worker runtimes; fall back to a hex dump otherwise.
103
+ const g = globalThis;
104
+ return g.btoa ? g.btoa(binary) : Array.from(bytes).join(",");
105
+ }
106
+ /**
107
+ * sha256 of a string via node:crypto. Falls back to a deterministic non-crypto
108
+ * 64-bit FNV-1a hash (hex) when crypto is unavailable, so hashing still works
109
+ * in restricted runtimes — collisions are astronomically unlikely for request
110
+ * payloads and only matter within a single cassette.
111
+ */
112
+ export function hashString(input) {
113
+ if (_nodeCrypto?.createHash) {
114
+ return _nodeCrypto.createHash("sha256").update(input).digest("hex");
115
+ }
116
+ // FNV-1a 64-bit (BigInt) deterministic fallback.
117
+ let hash = 0xcbf29ce484222325n;
118
+ const prime = 0x100000001b3n;
119
+ const mask = 0xffffffffffffffffn;
120
+ for (let i = 0; i < input.length; i++) {
121
+ hash ^= BigInt(input.charCodeAt(i));
122
+ hash = (hash * prime) & mask;
123
+ }
124
+ return hash.toString(16).padStart(16, "0");
125
+ }
126
+ /** Build the normalized, hashable request summary from raw call args. */
127
+ export function normalizeRequest(args) {
128
+ const request = {
129
+ model: args.model,
130
+ messages: args.messages
131
+ };
132
+ if (args.tools && args.tools.length > 0) {
133
+ // Keep only output-affecting tool fields; drop the live `execute` closure
134
+ // and the `terminal` flag (loop control, not model input).
135
+ request.tools = args.tools.map((t) => ({
136
+ name: t.name,
137
+ description: t.description,
138
+ inputSchema: t.inputSchema,
139
+ inputExamples: t.inputExamples,
140
+ cacheControl: t.cacheControl,
141
+ strict: t.strict,
142
+ deferLoading: t.deferLoading,
143
+ allowedCallers: t.allowedCallers,
144
+ type: t.type
145
+ }));
146
+ }
147
+ if (args.toolChoice !== undefined)
148
+ request.toolChoice = args.toolChoice;
149
+ if (args.maxTokens !== undefined)
150
+ request.maxTokens = args.maxTokens;
151
+ if (args.maxTurns !== undefined)
152
+ request.maxTurns = args.maxTurns;
153
+ if (args.temperature !== undefined)
154
+ request.temperature = args.temperature;
155
+ if (args.topP !== undefined)
156
+ request.topP = args.topP;
157
+ if (args.presencePenalty !== undefined) {
158
+ request.presencePenalty = args.presencePenalty;
159
+ }
160
+ if (args.frequencyPenalty !== undefined) {
161
+ request.frequencyPenalty = args.frequencyPenalty;
162
+ }
163
+ if (args.thinking !== undefined)
164
+ request.thinking = args.thinking;
165
+ if (args.effort !== undefined)
166
+ request.effort = args.effort;
167
+ if (args.audio !== undefined)
168
+ request.audio = args.audio;
169
+ return request;
170
+ }
171
+ /**
172
+ * Deep-copy the messages of a request that is about to be stored.
173
+ *
174
+ * {@link normalizeRequest} deliberately aliases `args.messages` — it feeds the
175
+ * hash, which is taken while the array still holds this call's state, and
176
+ * cloning the whole conversation on every replay lookup would be wasted work.
177
+ * A *recorded* interaction outlives the call, though, and agent loops append
178
+ * to that same array between calls: kept as a reference, every interaction in
179
+ * a saved cassette ends up showing the conversation's final state rather than
180
+ * what its own call was sent. Snapshot at the moment of recording.
181
+ */
182
+ function snapshotRequest(request) {
183
+ return { ...request, messages: request.messages.map(cloneMessage) };
184
+ }
185
+ /** Stable hash of a request, scoped by method so the two surfaces never mix. */
186
+ export function hashRequest(method, request) {
187
+ return hashString(stableStringify({ method, request }));
188
+ }
189
+ // ---------------------------------------------------------------------------
190
+ // Cassette store (disk persistence)
191
+ // ---------------------------------------------------------------------------
192
+ /**
193
+ * Load/save cassettes as pretty-printed JSON on disk. Node-only; methods throw
194
+ * a clear {@link Error} when `node:fs/promises` is unavailable (browser/worker),
195
+ * so in-memory use stays the supported path off Node.
196
+ */
197
+ export class CassetteStore {
198
+ static async load(path) {
199
+ const fsP = await importNodeBuiltin("node:fs/promises");
200
+ if (!fsP) {
201
+ throw new Error("CassetteStore.load requires node:fs/promises");
202
+ }
203
+ const text = await fsP.readFile(path, "utf-8");
204
+ const parsed = JSON.parse(text);
205
+ if (!parsed || !Array.isArray(parsed.interactions)) {
206
+ throw new Error(`Invalid cassette at ${path}: missing interactions`);
207
+ }
208
+ return parsed;
209
+ }
210
+ /** Load a cassette if the file exists, otherwise return an empty one. */
211
+ static async loadOrEmpty(path) {
212
+ try {
213
+ return await CassetteStore.load(path);
214
+ }
215
+ catch (err) {
216
+ const code = err.code;
217
+ if (code === "ENOENT")
218
+ return createEmptyCassette();
219
+ throw err;
220
+ }
221
+ }
222
+ static async save(path, cassette) {
223
+ const fsP = await importNodeBuiltin("node:fs/promises");
224
+ if (!fsP) {
225
+ throw new Error("CassetteStore.save requires node:fs/promises");
226
+ }
227
+ await fsP.writeFile(path, JSON.stringify(cassette, null, 2), "utf-8");
228
+ }
229
+ }
230
+ /**
231
+ * Provider that records or replays the chat surface of an inner provider.
232
+ *
233
+ * Construct with an in-memory cassette for tests, or from disk via
234
+ * {@link CassetteProvider.fromFile}. The cassette grows in "record"/"auto"
235
+ * mode; call {@link CassetteProvider.save} to persist it.
236
+ */
237
+ export class CassetteProvider extends BaseProvider {
238
+ inner;
239
+ mode;
240
+ cassette;
241
+ path;
242
+ fault;
243
+ /**
244
+ * Per-hash replay cursor. Among interactions sharing a hash, successive
245
+ * replays cycle through them in record order (FIFO), wrapping around so two
246
+ * consecutive identical requests with a single recorded interaction both
247
+ * return that same interaction deterministically.
248
+ */
249
+ replayCursors = new Map();
250
+ constructor(inner, options = {}) {
251
+ // Adopt the inner provider's id so trackUsage() re-derives the exact same
252
+ // cost on replay via CostCalculator (it prices per provider + model).
253
+ super(inner.provider);
254
+ this.inner = inner;
255
+ this.mode = options.mode ?? "auto";
256
+ this.cassette = options.cassette ?? createEmptyCassette();
257
+ this.path = options.path;
258
+ this.fault = options.fault;
259
+ }
260
+ /**
261
+ * Wraps a stream (a cassette hit's recorded items or the inner provider's
262
+ * live generator) with the non-immediate faults: `truncated-stream` throws
263
+ * after `afterChunks` items (simulating a dropped connection mid-stream),
264
+ * `slow-drip` delays before every yield, `malformed-chunk` throws after the
265
+ * underlying stream ends (simulating an unparseable trailing SSE event).
266
+ * A no-op passthrough when no fault — or an immediate-failure fault — is set.
267
+ */
268
+ async *applyStreamFault(items) {
269
+ const fault = this.fault;
270
+ if (!fault) {
271
+ yield* items;
272
+ return;
273
+ }
274
+ const limit = fault.kind === "truncated-stream" ? (fault.afterChunks ?? 2) : null;
275
+ let count = 0;
276
+ for await (const item of items) {
277
+ if (limit !== null && count >= limit) {
278
+ throw new Error(`CassetteProvider fault: stream truncated after ${limit} chunk(s) (connection reset)`);
279
+ }
280
+ if (fault.kind === "slow-drip") {
281
+ await sleep(fault.delayMs ?? 10);
282
+ }
283
+ yield item;
284
+ count++;
285
+ }
286
+ if (fault.kind === "malformed-chunk") {
287
+ throw new SyntaxError("CassetteProvider fault: malformed SSE event (unparseable chunk)");
288
+ }
289
+ }
290
+ /** `cost-omission`: usage is never tracked/reproduced, even though the
291
+ * underlying call (real or replayed) succeeded normally. */
292
+ get omitCost() {
293
+ return this.fault?.kind === "cost-omission";
294
+ }
295
+ /**
296
+ * Build a provider backed by a cassette file. The file is loaded if present
297
+ * (empty cassette otherwise, for first-time recording). Pass `path` again — or
298
+ * omit it and call {@link save} with an explicit path — to persist.
299
+ */
300
+ static async fromFile(inner, path, options = {}) {
301
+ const cassette = await CassetteStore.loadOrEmpty(path);
302
+ return new CassetteProvider(inner, { ...options, cassette, path });
303
+ }
304
+ /** Persist the current cassette to disk (its `path`, or an override). */
305
+ async save(path) {
306
+ const target = path ?? this.path;
307
+ if (!target) {
308
+ throw new Error("CassetteProvider.save requires a path");
309
+ }
310
+ await CassetteStore.save(target, this.cassette);
311
+ }
312
+ async getAvailableLanguageModels() {
313
+ return this.inner.getAvailableLanguageModels();
314
+ }
315
+ async hasToolSupport(model) {
316
+ return this.inner.hasToolSupport(model);
317
+ }
318
+ /**
319
+ * The inner provider's answer, so a cassette over Gemini keeps sending whole
320
+ * clips instead of being downgraded to sampled frames by the base fallback.
321
+ */
322
+ get supportsVideoInput() {
323
+ return this.inner.supportsVideoInput;
324
+ }
325
+ // -------------------------------------------------------------------------
326
+ // Matching
327
+ // -------------------------------------------------------------------------
328
+ /**
329
+ * Find a recorded interaction for this request hash, advancing the per-hash
330
+ * replay cursor (FIFO, wrapping). Returns null when nothing was recorded for
331
+ * the hash.
332
+ */
333
+ matchInteraction(method, hash) {
334
+ const matches = this.cassette.interactions.filter((i) => i.method === method && i.hash === hash);
335
+ if (matches.length === 0)
336
+ return null;
337
+ const cursorKey = `${method}:${hash}`;
338
+ const cursor = this.replayCursors.get(cursorKey) ?? 0;
339
+ const interaction = matches[cursor % matches.length];
340
+ this.replayCursors.set(cursorKey, cursor + 1);
341
+ return interaction;
342
+ }
343
+ // -------------------------------------------------------------------------
344
+ // generateMessage (single-shot)
345
+ // -------------------------------------------------------------------------
346
+ async generateMessage(args) {
347
+ if (this.fault)
348
+ await throwImmediateFault(this.fault);
349
+ const request = normalizeRequest(args);
350
+ const hash = hashRequest("generateMessage", request);
351
+ if (this.mode === "replay" || this.mode === "auto") {
352
+ const hit = this.matchInteraction("generateMessage", hash);
353
+ if (hit) {
354
+ if (hit.error)
355
+ throw reconstructScriptedError(hit.error);
356
+ if (hit.usage && !this.omitCost)
357
+ this.trackUsage(request.model, hit.usage);
358
+ return cloneMessage(hit.response);
359
+ }
360
+ if (this.mode === "replay") {
361
+ throw new Error(`CassetteProvider replay miss: no recorded generateMessage for ` +
362
+ `model "${request.model}" (hash ${hash.slice(0, 12)})`);
363
+ }
364
+ }
365
+ // record / auto-miss: delegate, capturing the response and the inner
366
+ // provider's tracked usage so replay reproduces the same cost.
367
+ const { runInSlot, getUsage } = createUsageSlot();
368
+ const result = await runInSlot(() => this.inner.generateMessage(args));
369
+ const usage = this.omitCost ? undefined : usageFromSlot(getUsage());
370
+ if (usage)
371
+ this.trackUsage(request.model, usage);
372
+ const interaction = {
373
+ hash,
374
+ method: "generateMessage",
375
+ request: snapshotRequest(request),
376
+ response: cloneMessage(result)
377
+ };
378
+ if (usage) {
379
+ interaction.usage = usage;
380
+ }
381
+ this.cassette.interactions.push(interaction);
382
+ return result;
383
+ }
384
+ // -------------------------------------------------------------------------
385
+ // generateMessages (streaming primitive)
386
+ // -------------------------------------------------------------------------
387
+ async *generateMessages(args) {
388
+ if (this.fault)
389
+ await throwImmediateFault(this.fault);
390
+ const request = normalizeRequest(args);
391
+ const hash = hashRequest("generateMessages", request);
392
+ if (this.mode === "replay" || this.mode === "auto") {
393
+ const hit = this.matchInteraction("generateMessages", hash);
394
+ if (hit) {
395
+ if (hit.error)
396
+ throw reconstructScriptedError(hit.error);
397
+ const items = hit.response;
398
+ yield* this.applyStreamFault((async function* () {
399
+ for (const item of items)
400
+ yield cloneStreamItem(item);
401
+ })());
402
+ // Reproduce recorded usage AFTER the stream so a consumer that reads
403
+ // cost post-iteration (the common case) sees the same total a live run
404
+ // produced. trackUsage also feeds the tracing/cost slot.
405
+ if (hit.usage && !this.omitCost)
406
+ this.trackUsage(request.model, hit.usage);
407
+ return;
408
+ }
409
+ if (this.mode === "replay") {
410
+ throw new Error(`CassetteProvider replay miss: no recorded generateMessages for ` +
411
+ `model "${request.model}" (hash ${hash.slice(0, 12)})`);
412
+ }
413
+ }
414
+ // record / auto-miss: delegate, capturing every yielded item plus the
415
+ // inner provider's tracked usage. A usage slot wraps each next() so the
416
+ // inner provider's setLastUsage() survives across the generator's yields.
417
+ const { runInSlot, getUsage } = createUsageSlot();
418
+ const captured = [];
419
+ const source = this.inner.generateMessages(args);
420
+ const faulted = this.applyStreamFault((async function* () {
421
+ while (true) {
422
+ const next = await runInSlot(() => source.next());
423
+ if (next.done)
424
+ return;
425
+ yield next.value;
426
+ }
427
+ })());
428
+ for await (const item of faulted) {
429
+ captured.push(cloneStreamItem(item));
430
+ yield item;
431
+ }
432
+ const usage = this.omitCost ? undefined : usageFromSlot(getUsage());
433
+ if (usage)
434
+ this.trackUsage(request.model, usage);
435
+ const interaction = {
436
+ hash,
437
+ method: "generateMessages",
438
+ request: snapshotRequest(request),
439
+ response: captured
440
+ };
441
+ if (usage) {
442
+ interaction.usage = usage;
443
+ }
444
+ this.cassette.interactions.push(interaction);
445
+ }
446
+ }
447
+ // ---------------------------------------------------------------------------
448
+ // Helpers
449
+ // ---------------------------------------------------------------------------
450
+ /**
451
+ * Convert the inner provider's tracked {@link LlmUsage} (captured during
452
+ * recording via a usage slot) into the serializable {@link UsageInfo} stored on
453
+ * the interaction. On replay this is fed back through `trackUsage`, which
454
+ * re-derives the same cost because the cassette provider adopts the inner
455
+ * provider's id. Returns undefined when the inner provider tracked no usage
456
+ * (e.g. FakeProvider), in which case replay reports zero cost — matching the
457
+ * recorded run.
458
+ */
459
+ function usageFromSlot(usage) {
460
+ if (!usage)
461
+ return undefined;
462
+ const info = {
463
+ inputTokens: usage.inputTokens,
464
+ outputTokens: usage.outputTokens
465
+ };
466
+ if (usage.cachedInputTokens !== undefined) {
467
+ info.cachedTokens = usage.cachedInputTokens;
468
+ }
469
+ if (usage.cacheWriteTokens !== undefined) {
470
+ info.cacheWriteTokens = usage.cacheWriteTokens;
471
+ }
472
+ return info;
473
+ }
474
+ /** Rebuild an Error from a scripted {@link CassetteInteraction.error}. */
475
+ function reconstructScriptedError(error) {
476
+ const err = new Error(error.message);
477
+ if (error.status !== undefined)
478
+ err.status = error.status;
479
+ return err;
480
+ }
481
+ function cloneMessage(message) {
482
+ return structuredCloneSafe(message);
483
+ }
484
+ function cloneStreamItem(item) {
485
+ return structuredCloneSafe(item);
486
+ }
487
+ /** Deep clone that tolerates typed arrays; falls back to JSON for old runtimes. */
488
+ function structuredCloneSafe(value) {
489
+ const sc = globalThis
490
+ .structuredClone;
491
+ if (sc) {
492
+ try {
493
+ return sc(value);
494
+ }
495
+ catch {
496
+ // Value carried something structuredClone rejects (a function); fall
497
+ // through to the JSON path below.
498
+ }
499
+ }
500
+ return JSON.parse(JSON.stringify(value));
501
+ }
502
+ //# sourceMappingURL=cassette-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cassette-provider.js","sourceRoot":"","sources":["../../src/providers/cassette-provider.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,14 @@
1
- import OpenAI from "openai";
2
- import { OpenAIProvider } from "./openai-provider.js";
1
+ import { OpenAICompatProvider, type OpenAICompatProviderOptions } from "./openai-compat-provider.js";
3
2
  import type { LanguageModel } from "./types.js";
4
- interface CerebrasProviderOptions {
5
- client?: OpenAI;
6
- clientFactory?: (apiKey: string) => OpenAI;
7
- fetchFn?: typeof fetch;
8
- }
9
- export declare class CerebrasProvider extends OpenAIProvider {
3
+ export declare class CerebrasProvider extends OpenAICompatProvider {
10
4
  static requiredSecrets(): string[];
11
- private _cerebrasFetch;
12
5
  constructor(secrets: {
13
6
  CEREBRAS_API_KEY?: string;
14
- }, options?: CerebrasProviderOptions);
15
- getContainerEnv(): Record<string, string>;
7
+ }, options?: OpenAICompatProviderOptions);
8
+ getContainerEnv(): {
9
+ CEREBRAS_API_KEY: string;
10
+ };
16
11
  hasToolSupport(_model: string): Promise<boolean>;
17
12
  getAvailableLanguageModels(): Promise<LanguageModel[]>;
18
13
  }
19
- export {};
20
14
  //# sourceMappingURL=cerebras-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cerebras-provider.d.ts","sourceRoot":"","sources":["../../src/providers/cerebras-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,qBAAa,gBAAiB,SAAQ,cAAc;WAClC,eAAe,IAAI,MAAM,EAAE;IAI3C,OAAO,CAAC,cAAc,CAAe;gBAGnC,OAAO,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EACtC,OAAO,GAAE,uBAA4B;IA4B9B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CA6BtE"}
1
+ {"version":3,"file":"cerebras-provider.d.ts","sourceRoot":"","sources":["../../src/providers/cerebras-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,OAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;IAED,YACE,OAAO,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EACtC,OAAO,GAAE,2BAAgC,EAe1C;IAEQ,eAAe;QACb,gBAAgB;MAC1B;IAEc,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9D;IAEc,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAEpE;CACF"}
@@ -1,27 +1,18 @@
1
- import OpenAI from "openai";
2
- import { OpenAIProvider } from "./openai-provider.js";
3
- export class CerebrasProvider extends OpenAIProvider {
1
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
2
+ export class CerebrasProvider extends OpenAICompatProvider {
4
3
  static requiredSecrets() {
5
4
  return ["CEREBRAS_API_KEY"];
6
5
  }
7
- _cerebrasFetch;
8
6
  constructor(secrets, options = {}) {
9
7
  const apiKey = secrets.CEREBRAS_API_KEY;
10
8
  if (!apiKey) {
11
9
  throw new Error("CEREBRAS_API_KEY is required");
12
10
  }
13
- const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
14
- super({ OPENAI_API_KEY: apiKey }, {
15
- client: options.client,
16
- clientFactory: options.clientFactory ??
17
- ((key) => new OpenAI({
18
- apiKey: key,
19
- baseURL: "https://api.cerebras.ai/v1"
20
- })),
21
- fetchFn
22
- });
23
- this.provider = "cerebras";
24
- this._cerebrasFetch = fetchFn;
11
+ super({
12
+ providerId: "cerebras",
13
+ apiKey,
14
+ baseURL: "https://api.cerebras.ai/v1"
15
+ }, options);
25
16
  }
26
17
  getContainerEnv() {
27
18
  return { CEREBRAS_API_KEY: this.apiKey };
@@ -30,23 +21,7 @@ export class CerebrasProvider extends OpenAIProvider {
30
21
  return true;
31
22
  }
32
23
  async getAvailableLanguageModels() {
33
- const response = await this._cerebrasFetch("https://api.cerebras.ai/v1/models", {
34
- headers: {
35
- Authorization: `Bearer ${this.apiKey}`
36
- }
37
- });
38
- if (!response.ok) {
39
- return [];
40
- }
41
- const payload = (await response.json());
42
- const rows = payload.data ?? [];
43
- return rows
44
- .filter((row) => typeof row.id === "string" && row.id.length > 0)
45
- .map((row) => ({
46
- id: row.id,
47
- name: row.name ?? row.id,
48
- provider: "cerebras"
49
- }));
24
+ return this.listCompatModels();
50
25
  }
51
26
  }
52
27
  //# sourceMappingURL=cerebras-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cerebras-provider.js","sourceRoot":"","sources":["../../src/providers/cerebras-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAStD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAU,eAAe;QAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc,CAAe;IAErC,YACE,OAAsC,EACtC,UAAmC,EAAE;QAErC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAErE,KAAK,CACH,EAAE,cAAc,EAAE,MAAM,EAAE,EAC1B;YACE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EACX,OAAO,CAAC,aAAa;gBACrB,CAAC,CAAC,GAAG,EAAE,EAAE,CACP,IAAI,MAAM,CAAC;oBACT,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,4BAA4B;iBACtC,CAAC,CAAC;YACP,OAAO;SACR,CACF,CAAC;QAED,IAA6B,CAAC,QAAQ,GAAG,UAAU,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEQ,eAAe;QACtB,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,MAAc;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,0BAA0B;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CACxC,mCAAmC,EACnC;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;SACF,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAErC,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,OAAO,IAAI;aACR,MAAM,CACL,CAAC,GAAG,EAAwC,EAAE,CAC5C,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAClD;aACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE;YACxB,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC,CAAC;IACR,CAAC;CACF"}
1
+ {"version":3,"file":"cerebras-provider.js","sourceRoot":"","sources":["../../src/providers/cerebras-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,OAAO,gBAAiB,SAAQ,oBAAoB;IACxD,MAAM,CAAU,eAAe;QAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9B,CAAC;IAED,YACE,OAAsC,EACtC,OAAO,GAAgC,EAAE;QAEzC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,CACH;YACE,UAAU,EAAE,UAAU;YACtB,MAAM;YACN,OAAO,EAAE,4BAA4B;SACtC,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAEQ,eAAe;QACtB,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,MAAc;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,0BAA0B;QACvC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;CACF"}