@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,75 @@
1
+ /**
2
+ * Wire types for the internal OpenAI-compatible Chat Completions client.
3
+ *
4
+ * These model only the fields NodeTool reads or writes — not the full OpenAI
5
+ * schema. Gateways diverge from OpenAI in the long tail, so every response
6
+ * field is optional and unknown extra request params ride the index signature.
7
+ */
8
+ /** Request body for `POST /chat/completions`. */
9
+ export interface ChatCompletionsRequest {
10
+ model: string;
11
+ messages: Array<Record<string, unknown>>;
12
+ stream?: boolean;
13
+ /** Extra params (temperature, tools, stream_options, …) pass through as-is. */
14
+ [param: string]: unknown;
15
+ }
16
+ export interface ChatCompletionUsage {
17
+ prompt_tokens?: number;
18
+ completion_tokens?: number;
19
+ total_tokens?: number;
20
+ prompt_tokens_details?: {
21
+ cached_tokens?: number;
22
+ };
23
+ }
24
+ export interface ChatCompletionToolCallFunction {
25
+ name?: string | null;
26
+ arguments?: string | null;
27
+ }
28
+ export interface ChatCompletionMessageToolCall {
29
+ id?: string | null;
30
+ type?: string;
31
+ function?: ChatCompletionToolCallFunction;
32
+ }
33
+ export interface ChatCompletionAssistantMessage {
34
+ role?: string;
35
+ content?: string | null;
36
+ tool_calls?: ChatCompletionMessageToolCall[] | null;
37
+ }
38
+ export interface ChatCompletionChoice {
39
+ index?: number;
40
+ message?: ChatCompletionAssistantMessage;
41
+ finish_reason?: string | null;
42
+ }
43
+ /** Non-streaming response from `POST /chat/completions`. */
44
+ export interface ChatCompletionResponse {
45
+ id?: string;
46
+ model?: string;
47
+ choices?: ChatCompletionChoice[];
48
+ usage?: ChatCompletionUsage | null;
49
+ }
50
+ export interface ChatCompletionChunkDeltaToolCall {
51
+ index?: number;
52
+ id?: string | null;
53
+ function?: ChatCompletionToolCallFunction;
54
+ }
55
+ export interface ChatCompletionChunkDelta {
56
+ content?: string | null;
57
+ tool_calls?: ChatCompletionChunkDeltaToolCall[] | null;
58
+ /** Audio-output models (`modalities: ["text","audio"]`) stream base64 here. */
59
+ audio?: {
60
+ data?: string;
61
+ };
62
+ }
63
+ export interface ChatCompletionChunkChoice {
64
+ index?: number;
65
+ delta?: ChatCompletionChunkDelta;
66
+ finish_reason?: string | null;
67
+ }
68
+ /** One SSE chunk of a streaming chat completion. */
69
+ export interface ChatCompletionChunk {
70
+ id?: string;
71
+ model?: string;
72
+ choices?: ChatCompletionChunkChoice[];
73
+ usage?: ChatCompletionUsage | null;
74
+ }
75
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/openai-compat/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,6BAA6B,EAAE,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,gCAAgC,EAAE,GAAG,IAAI,CAAC;IACvD,+EAA+E;IAC/E,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Wire types for the internal OpenAI-compatible Chat Completions client.
3
+ *
4
+ * These model only the fields NodeTool reads or writes — not the full OpenAI
5
+ * schema. Gateways diverge from OpenAI in the long tail, so every response
6
+ * field is optional and unknown extra request params ride the index signature.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/openai-compat/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Base class for providers that speak the OpenAI Chat Completions dialect
3
+ * against a non-OpenAI endpoint (Groq, Cerebras, xAI, Mistral, DeepSeek, …).
4
+ *
5
+ * Chat — the only surface these providers ever used the `openai` npm package
6
+ * for — runs on the internal {@link OpenAICompatClient} over `fetch`. The SDK
7
+ * client inherited from {@link OpenAIProvider} remains as a lazily-created
8
+ * fallback for the OpenAI-compatible media/embedding endpoints some gateways
9
+ * also expose (Together ASR, OpenRouter images, Mistral embeddings); it is
10
+ * never constructed on the chat path.
11
+ */
12
+ import OpenAI from "openai";
13
+ import { OpenAIProvider } from "./openai-provider.js";
14
+ import { OpenAICompatClient, type ChatCompletionsRequest } from "./openai-compat/index.js";
15
+ import type { LanguageModel, Message, ProviderId, ProviderStreamItem } from "./types.js";
16
+ import type { BaseProvider } from "./base-provider.js";
17
+ interface OpenAICompatConfig {
18
+ /** Provider id reported by this instance (e.g. `"groq"`). */
19
+ providerId: ProviderId;
20
+ apiKey: string;
21
+ /** Chat endpoint root, e.g. `https://api.groq.com/openai/v1`. */
22
+ baseURL: string;
23
+ /** Extra headers on every chat request (gateway attribution etc.). */
24
+ defaultHeaders?: Record<string, string>;
25
+ }
26
+ export interface OpenAICompatProviderOptions {
27
+ /** SDK client used only by inherited non-chat surfaces (images, ASR, …). */
28
+ client?: OpenAI;
29
+ clientFactory?: (apiKey: string) => OpenAI;
30
+ fetchFn?: typeof fetch;
31
+ /** Internal chat client override (tests). */
32
+ compatClient?: OpenAICompatClient;
33
+ }
34
+ /** One row of a `GET /models` listing: an id plus whatever else the vendor sent. */
35
+ export type CompatModelRow = Record<string, unknown> & {
36
+ id: string;
37
+ };
38
+ export declare class OpenAICompatProvider extends OpenAIProvider {
39
+ private _compatClient;
40
+ private readonly _compatConfig;
41
+ private readonly _compatFetch;
42
+ constructor(config: OpenAICompatConfig, options?: OpenAICompatProviderOptions);
43
+ /** The injected (or global) `fetch`, for surfaces this class does not cover. */
44
+ protected get compatFetch(): typeof fetch;
45
+ /** Chat endpoint root this instance was configured with. */
46
+ protected get compatBaseURL(): string;
47
+ /**
48
+ * Decode an OpenAI-shaped `GET /models` listing into language models tagged
49
+ * with this provider's id.
50
+ *
51
+ * A failed request answers `[]` rather than throwing: model discovery runs
52
+ * on every picker open, across every configured provider, and one bad key
53
+ * must not break the others. The status is logged so a user staring at an
54
+ * empty list can find the 401 in the log.
55
+ */
56
+ protected listCompatModels(url?: string, init?: {
57
+ headers?: Record<string, string>;
58
+ signal?: AbortSignal;
59
+ }): Promise<LanguageModel[]>;
60
+ /**
61
+ * The raw rows of an OpenAI-shaped `GET /models` listing, keeping every
62
+ * field the endpoint sent so callers can read vendor metadata (a `type`,
63
+ * output modalities) beyond the id. Rows without a string id are dropped;
64
+ * a failed request answers `[]` for the reason given on
65
+ * {@link listCompatModels}.
66
+ */
67
+ protected fetchCompatModelRows(url?: string, init?: {
68
+ headers?: Record<string, string>;
69
+ signal?: AbortSignal;
70
+ }): Promise<CompatModelRow[]>;
71
+ protected getCompatClient(): OpenAICompatClient;
72
+ /** Shared request assembly for both streaming and non-streaming chat. */
73
+ private buildChatRequest;
74
+ /**
75
+ * Last edit of the assembled request before dispatch. Subclasses override
76
+ * this when their endpoint deviates from OpenAI's dialect — e.g. a provider
77
+ * that only accepts `max_tokens` instead of `max_completion_tokens`.
78
+ */
79
+ protected transformChatRequest(request: ChatCompletionsRequest): ChatCompletionsRequest;
80
+ /**
81
+ * Provider-specific classification for an OpenAI-compatible failure. The
82
+ * request is the final converted wire payload, so subclasses can diagnose
83
+ * vendor limits without rebuilding or logging caller messages.
84
+ */
85
+ protected handleCompatError(error: unknown, _request: ChatCompletionsRequest): unknown;
86
+ generateMessages(args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
87
+ generateMessage(args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
88
+ }
89
+ export {};
90
+ //# sourceMappingURL=openai-compat-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compat-provider.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compat-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAElB,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,UAAU,kBAAkB;IAC1B,6DAA6D;IAC7D,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAQtE,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,YACE,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,2BAAgC,EAyB1C;IAED,gFAAgF;IAChF,SAAS,KAAK,WAAW,IAAI,OAAO,KAAK,CAExC;IAED,4DAA4D;IAC5D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED;;;;;;;;OAQG;IACH,UAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAA+C,EACpD,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpE,OAAO,CAAC,aAAa,EAAE,CAAC,CAO1B;IAED;;;;;;OAMG;IACH,UAAgB,oBAAoB,CAClC,GAAG,GAAE,MAA+C,EACpD,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpE,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B3B;IAED,SAAS,CAAC,eAAe,IAAI,kBAAkB,CAU9C;IAED,yEAAyE;YAC3D,gBAAgB;IA+D9B;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAC5B,OAAO,EAAE,sBAAsB,GAC9B,sBAAsB,CAExB;IAED;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CACzB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAET;IAEe,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,cAAc,CAAC,kBAAkB,CAAC,CA0FpC;IAEc,eAAe,CAC5B,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,OAAO,CAAC,CAuClB;CACF"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Base class for providers that speak the OpenAI Chat Completions dialect
3
+ * against a non-OpenAI endpoint (Groq, Cerebras, xAI, Mistral, DeepSeek, …).
4
+ *
5
+ * Chat — the only surface these providers ever used the `openai` npm package
6
+ * for — runs on the internal {@link OpenAICompatClient} over `fetch`. The SDK
7
+ * client inherited from {@link OpenAIProvider} remains as a lazily-created
8
+ * fallback for the OpenAI-compatible media/embedding endpoints some gateways
9
+ * also expose (Together ASR, OpenRouter images, Mistral embeddings); it is
10
+ * never constructed on the chat path.
11
+ */
12
+ import OpenAI from "openai";
13
+ import { isNonEmptyString, isRecord } from "@nodetool-ai/protocol";
14
+ import { createLogger } from "@nodetool-ai/config";
15
+ import { OpenAIProvider } from "./openai-provider.js";
16
+ import { OpenAICompatClient, decodeChatCompletion } from "./openai-compat/index.js";
17
+ const log = createLogger("nodetool.runtime.providers.openai-compat");
18
+ export class OpenAICompatProvider extends OpenAIProvider {
19
+ _compatClient;
20
+ _compatConfig;
21
+ _compatFetch;
22
+ constructor(config, options = {}) {
23
+ super({ OPENAI_API_KEY: config.apiKey }, {
24
+ providerId: config.providerId,
25
+ client: options.client,
26
+ clientFactory: options.clientFactory ??
27
+ ((key) => {
28
+ const clientOptions = {
29
+ apiKey: key,
30
+ baseURL: config.baseURL
31
+ };
32
+ if (config.defaultHeaders) {
33
+ clientOptions.defaultHeaders = config.defaultHeaders;
34
+ }
35
+ return new OpenAI(clientOptions);
36
+ }),
37
+ fetchFn: options.fetchFn
38
+ });
39
+ this._compatConfig = config;
40
+ this._compatClient = options.compatClient ?? null;
41
+ this._compatFetch = options.fetchFn ?? globalThis.fetch.bind(globalThis);
42
+ }
43
+ /** The injected (or global) `fetch`, for surfaces this class does not cover. */
44
+ get compatFetch() {
45
+ return this._compatFetch;
46
+ }
47
+ /** Chat endpoint root this instance was configured with. */
48
+ get compatBaseURL() {
49
+ return this._compatConfig.baseURL;
50
+ }
51
+ /**
52
+ * Decode an OpenAI-shaped `GET /models` listing into language models tagged
53
+ * with this provider's id.
54
+ *
55
+ * A failed request answers `[]` rather than throwing: model discovery runs
56
+ * on every picker open, across every configured provider, and one bad key
57
+ * must not break the others. The status is logged so a user staring at an
58
+ * empty list can find the 401 in the log.
59
+ */
60
+ async listCompatModels(url = `${this._compatConfig.baseURL}/models`, init = {}) {
61
+ const rows = await this.fetchCompatModelRows(url, init);
62
+ return rows.map((row) => ({
63
+ id: row.id,
64
+ name: isNonEmptyString(row.name) ? row.name : row.id,
65
+ provider: this.provider
66
+ }));
67
+ }
68
+ /**
69
+ * The raw rows of an OpenAI-shaped `GET /models` listing, keeping every
70
+ * field the endpoint sent so callers can read vendor metadata (a `type`,
71
+ * output modalities) beyond the id. Rows without a string id are dropped;
72
+ * a failed request answers `[]` for the reason given on
73
+ * {@link listCompatModels}.
74
+ */
75
+ async fetchCompatModelRows(url = `${this._compatConfig.baseURL}/models`, init = {}) {
76
+ const request = {
77
+ headers: {
78
+ Authorization: `Bearer ${this.apiKey}`,
79
+ // Same precedence as OpenAICompatClient: a configured header (gateway
80
+ // attribution, a non-Bearer auth scheme) wins over the default.
81
+ ...this._compatConfig.defaultHeaders,
82
+ ...init.headers
83
+ }
84
+ };
85
+ if (init.signal) {
86
+ request.signal = init.signal;
87
+ }
88
+ const response = await this._compatFetch(url, request);
89
+ if (!response.ok) {
90
+ log.warn("Model listing failed", {
91
+ provider: this.provider,
92
+ url,
93
+ status: response.status
94
+ });
95
+ return [];
96
+ }
97
+ const payload = await response.json();
98
+ const rows = isRecord(payload) ? payload.data : undefined;
99
+ // Stryker disable next-line ArrayDeclaration: the fallback is filtered downstream (rows need a string id), so [] vs any array is observably identical.
100
+ return (Array.isArray(rows) ? rows : [])
101
+ .filter(isRecord)
102
+ .filter((row) => isNonEmptyString(row.id));
103
+ }
104
+ getCompatClient() {
105
+ if (!this._compatClient) {
106
+ this._compatClient = new OpenAICompatClient({
107
+ baseURL: this._compatConfig.baseURL,
108
+ apiKey: this._compatConfig.apiKey,
109
+ defaultHeaders: this._compatConfig.defaultHeaders,
110
+ fetchFn: this._compatFetch
111
+ });
112
+ }
113
+ return this._compatClient;
114
+ }
115
+ /** Shared request assembly for both streaming and non-streaming chat. */
116
+ async buildChatRequest(args, stream) {
117
+ const { model, tools = [], toolChoice, maxTokens = 16384, temperature, topP, presencePenalty, frequencyPenalty, audio } = args;
118
+ const messages = this.convertSystemToUserForOModels(args.messages, model);
119
+ const openaiMessages = await Promise.all(messages.map((m) => this.convertMessage(m)));
120
+ const request = {
121
+ model,
122
+ messages: openaiMessages,
123
+ max_completion_tokens: maxTokens,
124
+ stream
125
+ };
126
+ if (stream)
127
+ request.stream_options = { include_usage: true };
128
+ if (temperature != null)
129
+ request.temperature = temperature;
130
+ if (topP != null)
131
+ request.top_p = topP;
132
+ if (presencePenalty != null)
133
+ request.presence_penalty = presencePenalty;
134
+ if (frequencyPenalty != null)
135
+ request.frequency_penalty = frequencyPenalty;
136
+ if (audio) {
137
+ request.audio = audio;
138
+ request.modalities = ["text", "audio"];
139
+ }
140
+ if (tools.length > 0 && (await this.hasToolSupport(model))) {
141
+ request.tools = this.formatTools(tools);
142
+ if (toolChoice) {
143
+ request.tool_choice =
144
+ toolChoice === "any"
145
+ ? "required"
146
+ : { type: "function", function: { name: toolChoice } };
147
+ }
148
+ }
149
+ return this.transformChatRequest(request);
150
+ }
151
+ /**
152
+ * Last edit of the assembled request before dispatch. Subclasses override
153
+ * this when their endpoint deviates from OpenAI's dialect — e.g. a provider
154
+ * that only accepts `max_tokens` instead of `max_completion_tokens`.
155
+ */
156
+ transformChatRequest(request) {
157
+ return request;
158
+ }
159
+ /**
160
+ * Provider-specific classification for an OpenAI-compatible failure. The
161
+ * request is the final converted wire payload, so subclasses can diagnose
162
+ * vendor limits without rebuilding or logging caller messages.
163
+ */
164
+ handleCompatError(error, _request) {
165
+ return error;
166
+ }
167
+ async *generateMessages(args) {
168
+ const { model } = args;
169
+ const request = await this.buildChatRequest(args, true);
170
+ log.debug("OpenAI-compatible chat request", {
171
+ provider: this.provider,
172
+ model
173
+ });
174
+ this.recordRequestPayload(request);
175
+ const deltaToolCalls = new Map();
176
+ try {
177
+ const stream = this.getCompatClient().chatCompletionsStream(request, {
178
+ signal: args.signal
179
+ });
180
+ for await (const chunk of stream) {
181
+ if (chunk.usage) {
182
+ this.trackUsage(model, {
183
+ inputTokens: chunk.usage.prompt_tokens ?? 0,
184
+ outputTokens: chunk.usage.completion_tokens ?? 0,
185
+ cachedTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
186
+ });
187
+ }
188
+ const choice = chunk.choices?.[0];
189
+ if (!choice)
190
+ continue;
191
+ const delta = choice.delta;
192
+ if (delta?.audio?.data) {
193
+ const audioChunk = {
194
+ type: "chunk",
195
+ content_type: "audio",
196
+ content: String(delta.audio.data)
197
+ };
198
+ yield audioChunk;
199
+ }
200
+ if (Array.isArray(delta?.tool_calls)) {
201
+ for (const tc of delta.tool_calls) {
202
+ const index = Number(tc.index ?? 0);
203
+ const current = deltaToolCalls.get(index) ?? {
204
+ id: String(tc.id ?? ""),
205
+ name: String(tc.function?.name ?? ""),
206
+ arguments: ""
207
+ };
208
+ if (tc.id)
209
+ current.id = String(tc.id);
210
+ if (tc.function?.name)
211
+ current.name = String(tc.function.name);
212
+ if (tc.function?.arguments)
213
+ current.arguments += String(tc.function.arguments);
214
+ deltaToolCalls.set(index, current);
215
+ }
216
+ }
217
+ if (delta?.content !== undefined || choice.finish_reason === "stop") {
218
+ const item = {
219
+ type: "chunk",
220
+ content: String(delta?.content ?? ""),
221
+ done: choice.finish_reason === "stop"
222
+ };
223
+ yield item;
224
+ }
225
+ if (choice.finish_reason && deltaToolCalls.size > 0) {
226
+ for (const call of deltaToolCalls.values()) {
227
+ const toolCall = this.buildToolCall(call.id, call.name, call.arguments);
228
+ yield toolCall;
229
+ }
230
+ deltaToolCalls.clear();
231
+ }
232
+ // Always emit a terminal `done: true` chunk when the completion
233
+ // finishes, regardless of reason. "stop" already emits one above; for
234
+ // every other terminal reason (tool_calls, length, content_filter)
235
+ // emit one here so consumers get a consistent end-of-stream marker.
236
+ if (choice.finish_reason && choice.finish_reason !== "stop") {
237
+ const doneChunk = { type: "chunk", content: "", done: true };
238
+ yield doneChunk;
239
+ }
240
+ }
241
+ }
242
+ catch (error) {
243
+ throw this.handleCompatError(error, request);
244
+ }
245
+ }
246
+ async generateMessage(args) {
247
+ const { model } = args;
248
+ const request = await this.buildChatRequest(args, false);
249
+ log.debug("OpenAI-compatible chat request", {
250
+ provider: this.provider,
251
+ model
252
+ });
253
+ this.recordRequestPayload(request);
254
+ let completion;
255
+ try {
256
+ completion = await this.getCompatClient().chatCompletions(request, {
257
+ signal: args.signal
258
+ });
259
+ }
260
+ catch (error) {
261
+ throw this.handleCompatError(error, request);
262
+ }
263
+ let decoded;
264
+ try {
265
+ decoded = decodeChatCompletion(completion);
266
+ }
267
+ catch {
268
+ // The decoder rejects exactly the bodies this path cannot turn into a
269
+ // message; keep the wording callers already match on.
270
+ throw new Error(`${this.provider} returned no choices`);
271
+ }
272
+ if (decoded.usage)
273
+ this.trackUsage(model, decoded.usage);
274
+ const toolCalls = decoded.toolCalls?.map((tc) => this.buildToolCall(tc.id, tc.name, tc.arguments));
275
+ return {
276
+ role: "assistant",
277
+ content: decoded.content,
278
+ toolCalls
279
+ };
280
+ }
281
+ }
282
+ //# sourceMappingURL=openai-compat-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compat-provider.js","sourceRoot":"","sources":["../../src/providers/openai-compat-provider.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,32 @@
1
1
  import OpenAI from "openai";
2
2
  import { BaseProvider } from "./base-provider.js";
3
- import type { ASRModel, EmbeddingModel, EncodedAudioResult, ImageModel, ImageToImageParams, ImageToVideoParams, LanguageModel, Message, ProviderStreamItem, ProviderTool, StreamingAudioChunk, TextToImageParams, TextToVideoParams, TTSModel, VideoModel } from "./types.js";
3
+ import type { RunBudget, TurnBudget } from "../turn-budget.js";
4
+ import type { ASRModel, EmbeddingModel, EncodedAudioResult, ImageModel, ImageToImageParams, InpaintingParams, ImageToVideoParams, LanguageModel, Message, MessageContent, ProviderId, ProviderStreamItem, ProviderTool, StreamingAudioChunk, TextToImageParams, TextToVideoParams, ToolCall, TTSModel, VideoModel } from "./types.js";
4
5
  interface OpenAIProviderOptions {
5
6
  client?: OpenAI;
6
7
  clientFactory?: (apiKey: string) => OpenAI;
7
8
  fetchFn?: typeof fetch;
9
+ /**
10
+ * Provider id reported by this instance. Defaults to `"openai"`.
11
+ * OpenAI-compatible subclasses (gateways pointed at a different base URL)
12
+ * pass their own id so the readonly `provider` field is set via the base
13
+ * constructor rather than reassigned afterwards.
14
+ */
15
+ providerId?: ProviderId;
8
16
  }
17
+ export declare const OPENAI_FALLBACK_MODELS: LanguageModel[];
18
+ /**
19
+ * Decode a `GET /v1/models` body into the language models it announces.
20
+ *
21
+ * Split out of {@link OpenAIProvider.getAvailableLanguageModels} so the live
22
+ * contract probe and its raw-response fixtures parse a real production
23
+ * response the same way the provider does. Strict on the envelope: a body
24
+ * without a `data` array throws, and the caller decides what to fall back to.
25
+ */
26
+ export declare function decodeOpenAIModelList(payload: unknown, options: {
27
+ provider: ProviderId;
28
+ onlyResponsesModels: boolean;
29
+ }): LanguageModel[];
9
30
  export declare class OpenAIProvider extends BaseProvider {
10
31
  static requiredSecrets(): string[];
11
32
  readonly apiKey: string;
@@ -17,16 +38,45 @@ export declare class OpenAIProvider extends BaseProvider {
17
38
  }, options?: OpenAIProviderOptions);
18
39
  getContainerEnv(): Record<string, string>;
19
40
  getClient(): OpenAI;
41
+ /**
42
+ * True when this instance should serve `model` through the Responses API.
43
+ * Gated on the real `openai` provider so OpenAI-compatible subclasses (which
44
+ * pass their own provider id) stay on Chat Completions.
45
+ */
46
+ protected usesResponsesApi(model: string): boolean;
47
+ get supportsNativeWebSearch(): boolean;
48
+ get supportsNativeImageGeneration(): boolean;
20
49
  hasToolSupport(model: string): Promise<boolean>;
50
+ /**
51
+ * Whether this instance actually serves OpenAI's own model catalog.
52
+ *
53
+ * The media and embedding lists below are hardcoded OpenAI models tagged
54
+ * `provider: "openai"`. Subclasses inherit OpenAI's *chat dialect*, not its
55
+ * lineup — a Groq or vLLM instance offering `gpt-image-2` or `whisper-1` is
56
+ * always wrong, and picking one sends the request to a host that has no such
57
+ * endpoint. Subclasses that do serve media (Together, MiniMax, GMI, xAI, …)
58
+ * override these methods with their own catalog; everyone else correctly
59
+ * reports none.
60
+ */
61
+ protected servesOpenAICatalog(): boolean;
21
62
  getAvailableLanguageModels(): Promise<LanguageModel[]>;
22
63
  getAvailableTTSModels(): Promise<TTSModel[]>;
23
64
  getAvailableASRModels(): Promise<ASRModel[]>;
24
65
  getAvailableVideoModels(): Promise<VideoModel[]>;
25
66
  getAvailableImageModels(): Promise<ImageModel[]>;
26
67
  getAvailableEmbeddingModels(): Promise<EmbeddingModel[]>;
27
- resolveImageSize(width?: number | null, height?: number | null): string | null;
28
- static resolveVideoSize(aspectRatio?: string | null, resolution?: string | null): string | null;
68
+ /**
69
+ * gpt-image-2 accepts arbitrary sizes within limits: both edges a multiple of
70
+ * 16, long edge <= 3840, aspect ratio <= 3:1, and total area between 0.64MP
71
+ * and 8.3MP. Requested sizes rarely land on that grid (16:9 at 1K is
72
+ * 1820x1024), so snap to the nearest valid size preserving the aspect ratio
73
+ * rather than dropping `size` and letting the API default to a square.
74
+ */
75
+ static snapToGptImage2Size(width: number, height: number): string | null;
76
+ resolveImageSize(width?: number | null, height?: number | null, model?: string): string | null;
77
+ static resolveVideoSize(aspectRatio?: string | null, resolution?: string | null, model?: string): string | null;
29
78
  static secondsFromParams(params: {
79
+ durationSeconds?: number | null;
30
80
  numFrames?: number | null;
31
81
  }): number | null;
32
82
  static snapToValidVideoDimensions(width: number, height: number): string;
@@ -36,36 +86,46 @@ export declare class OpenAIProvider extends BaseProvider {
36
86
  private messageContentToOpenAIContentPart;
37
87
  convertMessage(message: Message): Promise<Record<string, unknown>>;
38
88
  formatTools(tools: ProviderTool[]): Array<Record<string, unknown>>;
39
- private convertSystemToUserForOModels;
40
- generateMessages(args: {
41
- messages: Message[];
42
- model: string;
43
- tools?: ProviderTool[];
44
- maxTokens?: number;
45
- temperature?: number;
46
- topP?: number;
47
- presencePenalty?: number;
48
- frequencyPenalty?: number;
49
- audio?: Record<string, unknown>;
89
+ protected convertSystemToUserForOModels(messages: Message[], model: string): Message[];
90
+ generateMessages(args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
91
+ generateMessage(args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
92
+ /** Tool shapes for the Responses API: native web_search / image_generation. */
93
+ private formatResponsesTools;
94
+ private generateMessageResponses;
95
+ private generateMessagesResponses;
96
+ generateLoop(args: Parameters<BaseProvider["generateMessages"]>[0] & {
97
+ executeTool?: (toolCall: ToolCall) => Promise<string | MessageContent[]>;
98
+ maxIterations?: number;
99
+ sequentialTools?: boolean;
100
+ turnBudget?: TurnBudget | RunBudget;
101
+ resolveMedia?: (messages: Message[]) => Promise<Message[]>;
50
102
  }): AsyncGenerator<ProviderStreamItem>;
51
- generateMessage(args: {
52
- messages: Message[];
53
- model: string;
54
- tools?: ProviderTool[];
55
- toolChoice?: string | "any";
56
- maxTokens?: number;
57
- temperature?: number;
58
- topP?: number;
59
- presencePenalty?: number;
60
- frequencyPenalty?: number;
61
- }): Promise<Message>;
103
+ private buildResponsesRequest;
104
+ private streamResponsesRequest;
105
+ private createResponsesTurnState;
106
+ private runResponsesLoop;
107
+ private collectResponsesTurn;
62
108
  textToImage(params: TextToImageParams): Promise<Uint8Array>;
63
- imageToImage(image: Uint8Array, params: ImageToImageParams): Promise<Uint8Array>;
109
+ /**
110
+ * Convert a white-region mask (R=G=B=255, alpha = selection) into the mask
111
+ * OpenAI's edit endpoint expects, where fully transparent pixels mark the
112
+ * region to regenerate. Inverts the alpha channel and keeps RGBA shape.
113
+ */
114
+ private toOpenAiEditMask;
115
+ imageToImage(images: Uint8Array[], params: ImageToImageParams): Promise<Uint8Array>;
116
+ inpaint(images: Uint8Array[], params: InpaintingParams): Promise<Uint8Array>;
117
+ /**
118
+ * Shared OpenAI image-edit call for both image-to-image and inpaint. When
119
+ * `mask` is supplied the masked region is regenerated.
120
+ */
121
+ private runImageEdit;
64
122
  textToSpeech(args: {
65
123
  text: string;
66
124
  model: string;
67
125
  voice?: string;
68
126
  speed?: number;
127
+ language?: string;
128
+ instructions?: string;
69
129
  audioFormat?: string;
70
130
  }): AsyncGenerator<StreamingAudioChunk>;
71
131
  /**
@@ -80,6 +140,8 @@ export declare class OpenAIProvider extends BaseProvider {
80
140
  model: string;
81
141
  voice?: string;
82
142
  speed?: number;
143
+ language?: string;
144
+ instructions?: string;
83
145
  audioFormat?: string;
84
146
  }): Promise<EncodedAudioResult | null>;
85
147
  automaticSpeechRecognition(args: {
@@ -97,6 +159,7 @@ export declare class OpenAIProvider extends BaseProvider {
97
159
  model: string;
98
160
  dimensions?: number;
99
161
  }): Promise<number[][]>;
162
+ isContextExceededError(error: unknown): boolean;
100
163
  isContextLengthError(error: unknown): boolean;
101
164
  }
102
165
  export {};