@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,182 @@
1
+ /**
2
+ * A provider the user defined at runtime: any endpoint that speaks the OpenAI
3
+ * Chat Completions dialect, reached by base URL plus optional API key.
4
+ *
5
+ * Unlike every other provider here, this class is not registered under one
6
+ * fixed id. The host registers one entry per user-defined provider, passing the
7
+ * wire id and the secret names to read through the registry's kwargs — so the
8
+ * base URL and key still resolve per user at `getProvider()` time and nothing
9
+ * is baked in at module load.
10
+ */
11
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
12
+ import { isString, normalizeBaseUrl } from "@nodetool-ai/protocol";
13
+ import { classifyListedModel } from "./custom-model-kinds.js";
14
+ /** Cap on the model-list probe so an unreachable proxy cannot stall the model menu. */
15
+ const MODEL_LIST_TIMEOUT_MS = 5000;
16
+ /** Placeholder key for endpoints that accept anonymous requests. */
17
+ const NO_KEY = "no-key";
18
+ function readString(config, key) {
19
+ const value = config[key];
20
+ return isString(value) ? value.trim() : "";
21
+ }
22
+ function readModels(config, key) {
23
+ const value = config[key];
24
+ return Array.isArray(value) ? value.filter(isString) : [];
25
+ }
26
+ const IMAGE_TASKS = ["text_to_image", "image_to_image"];
27
+ const VIDEO_TASKS = ["text_to_video", "image_to_video"];
28
+ export class CustomOpenAIProvider extends OpenAICompatProvider {
29
+ static requiredSecrets() {
30
+ return [];
31
+ }
32
+ _customModels;
33
+ _imageModels;
34
+ _videoModels;
35
+ /** One listing per instance: the chat, image and video pickers share it. */
36
+ _listing = null;
37
+ _baseUrlKey;
38
+ _apiKeyKey;
39
+ constructor(config, options = {}) {
40
+ const providerId = readString(config, "_providerId");
41
+ if (!providerId) {
42
+ throw new Error("_providerId is required for a custom provider");
43
+ }
44
+ const baseUrlKey = readString(config, "_baseUrlKey");
45
+ if (!baseUrlKey) {
46
+ throw new Error("_baseUrlKey is required for a custom provider");
47
+ }
48
+ const apiKeyKey = readString(config, "_apiKeyKey");
49
+ if (!apiKeyKey) {
50
+ throw new Error("_apiKeyKey is required for a custom provider");
51
+ }
52
+ const baseURL = normalizeBaseUrl(readString(config, baseUrlKey));
53
+ if (!baseURL) {
54
+ throw new Error(`${baseUrlKey} is required`);
55
+ }
56
+ const apiKey = readString(config, apiKeyKey) || NO_KEY;
57
+ super({ providerId, apiKey, baseURL }, options);
58
+ this._customModels = readModels(config, "_models");
59
+ this._imageModels = readModels(config, "_imageModels");
60
+ this._videoModels = readModels(config, "_videoModels");
61
+ this._baseUrlKey = baseUrlKey;
62
+ this._apiKeyKey = apiKeyKey;
63
+ }
64
+ getContainerEnv() {
65
+ const env = {
66
+ [this._baseUrlKey]: this.compatBaseURL
67
+ };
68
+ if (this.apiKey && this.apiKey !== NO_KEY) {
69
+ env[this._apiKeyKey] = this.apiKey;
70
+ }
71
+ return env;
72
+ }
73
+ /**
74
+ * Nothing on the wire announces tool support, and it is a property of
75
+ * whatever sits behind the proxy. A model that lacks it fails at call time
76
+ * with the endpoint's own error; answering `false` here would hide the
77
+ * capability from every model behind every custom provider.
78
+ */
79
+ async hasToolSupport(_model) {
80
+ return true;
81
+ }
82
+ /**
83
+ * Every model this endpoint offers, sorted by kind. Ids the user marked as
84
+ * image or video models always win; the rest come from the hand-typed list
85
+ * or `GET /models`, classified by {@link classifyListedModel}.
86
+ */
87
+ listModels() {
88
+ this._listing ??= this.loadListing();
89
+ return this._listing;
90
+ }
91
+ async loadListing() {
92
+ const rows = await this.fetchListingRows();
93
+ const marked = new Map([
94
+ ...this._imageModels.map((id) => [id, "image"]),
95
+ ...this._videoModels.map((id) => [id, "video"])
96
+ ]);
97
+ const listed = rows.map((row) => {
98
+ const name = isString(row.name) && row.name ? row.name : row.id;
99
+ const markedKind = marked.get(row.id);
100
+ if (markedKind) {
101
+ return { id: row.id, name, kind: markedKind, certain: true };
102
+ }
103
+ const { kind, source } = classifyListedModel(row);
104
+ return { id: row.id, name, kind, certain: source === "metadata" };
105
+ });
106
+ const seen = new Set(listed.map((m) => m.id));
107
+ for (const [id, kind] of marked) {
108
+ if (!seen.has(id))
109
+ listed.push({ id, name: id, kind, certain: true });
110
+ }
111
+ return listed;
112
+ }
113
+ async fetchListingRows() {
114
+ if (this._customModels.length > 0) {
115
+ return this._customModels.map((id) => ({ id }));
116
+ }
117
+ try {
118
+ return await this.fetchCompatModelRows(undefined, {
119
+ signal: AbortSignal.timeout(MODEL_LIST_TIMEOUT_MS)
120
+ });
121
+ }
122
+ catch {
123
+ // An unreachable or slow proxy must not break the model menu.
124
+ return [];
125
+ }
126
+ }
127
+ /**
128
+ * Chat models. A model the endpoint or the user identified as image or
129
+ * video is left out; one that only has an image- or video-like id stays,
130
+ * because the id alone is a guess and hiding a chat model would leave no
131
+ * way to pick it.
132
+ */
133
+ async getAvailableLanguageModels() {
134
+ const models = await this.listModels();
135
+ return models
136
+ .filter((m) => m.kind === "language" || !m.certain)
137
+ .map(({ id, name }) => ({ id, name, provider: this.provider }));
138
+ }
139
+ /**
140
+ * Image models, called through `POST <base>/images/generations` and
141
+ * `/images/edits`. The listing says nothing about sizes, so no
142
+ * constraints are declared and the node's own size options apply.
143
+ */
144
+ async getAvailableImageModels() {
145
+ const models = await this.listModels();
146
+ return models
147
+ .filter((m) => m.kind === "image")
148
+ .map(({ id, name }) => ({
149
+ id,
150
+ name,
151
+ provider: this.provider,
152
+ supportedTasks: [...IMAGE_TASKS]
153
+ }));
154
+ }
155
+ /**
156
+ * Video models, called through the OpenAI video API (`POST <base>/videos`,
157
+ * then polled). No durations or resolutions are declared, for the same
158
+ * reason as image sizes.
159
+ */
160
+ async getAvailableVideoModels() {
161
+ const models = await this.listModels();
162
+ return models
163
+ .filter((m) => m.kind === "video")
164
+ .map(({ id, name }) => ({
165
+ id,
166
+ name,
167
+ provider: this.provider,
168
+ supportedTasks: [...VIDEO_TASKS]
169
+ }));
170
+ }
171
+ /**
172
+ * Pass the requested size through. The base class snaps to the three sizes
173
+ * OpenAI's own image models accept, which would squash a 16:9 request to a
174
+ * FLUX or Seedream model behind a gateway into 1536x1024.
175
+ */
176
+ resolveImageSize(width, height) {
177
+ if (!width || !height)
178
+ return null;
179
+ return `${Math.round(width)}x${Math.round(height)}`;
180
+ }
181
+ }
182
+ //# sourceMappingURL=custom-openai-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-openai-provider.js","sourceRoot":"","sources":["../../src/providers/custom-openai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Registration of user-defined OpenAI-compatible providers.
3
+ *
4
+ * The host loads the catalog — from the database, a config file, whatever it
5
+ * has — and calls {@link syncCustomProviders} with it. Only the slug and its
6
+ * optional model lists are baked in; the base URL and API key are declared as
7
+ * kwarg *names*, so the registry resolves them per user through the caller's
8
+ * `getSecret` on every `getProvider()` call, and an env var of the same name
9
+ * works with no database row at all.
10
+ */
11
+ import { type CustomProvider } from "@nodetool-ai/protocol";
12
+ /**
13
+ * Make the registry match `definitions`: register each one and drop every
14
+ * `custom_*` id that is no longer in the list. Returns the ids now registered.
15
+ */
16
+ export declare function syncCustomProviders(definitions: readonly CustomProvider[]): string[];
17
+ /** Every `custom_*` id currently in the registry. */
18
+ export declare function listCustomProviderIds(): string[];
19
+ //# sourceMappingURL=custom-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-provider-registry.d.ts","sourceRoot":"","sources":["../../src/providers/custom-provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAoC/B;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,SAAS,cAAc,EAAE,GACrC,MAAM,EAAE,CAMV;AAED,qDAAqD;AACrD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Registration of user-defined OpenAI-compatible providers.
3
+ *
4
+ * The host loads the catalog — from the database, a config file, whatever it
5
+ * has — and calls {@link syncCustomProviders} with it. Only the slug and its
6
+ * optional model lists are baked in; the base URL and API key are declared as
7
+ * kwarg *names*, so the registry resolves them per user through the caller's
8
+ * `getSecret` on every `getProvider()` call, and an env var of the same name
9
+ * works with no database row at all.
10
+ */
11
+ import { customProviderApiKeyKey, customProviderBaseUrlKey, customProviderId, isCustomProviderId } from "@nodetool-ai/protocol";
12
+ import { CustomOpenAIProvider } from "./custom-openai-provider.js";
13
+ import { listRegisteredProviderIds, registerProvider, unregisterProvider } from "./provider-registry.js";
14
+ function register(definition) {
15
+ const providerId = customProviderId(definition.slug);
16
+ const baseUrlKey = customProviderBaseUrlKey(definition.slug);
17
+ const apiKeyKey = customProviderApiKeyKey(definition.slug);
18
+ registerProvider(providerId, CustomOpenAIProvider, {
19
+ _providerId: providerId,
20
+ _baseUrlKey: baseUrlKey,
21
+ _apiKeyKey: apiKeyKey,
22
+ _models: definition.models ?? [],
23
+ _imageModels: definition.image_models ?? [],
24
+ _videoModels: definition.video_models ?? [],
25
+ // Empty declares "resolve me": the registry asks getSecret, then env, on
26
+ // every instantiation. It is also the only required kwarg, so a user who
27
+ // has not set a URL sees the provider as unconfigured rather than broken.
28
+ [baseUrlKey]: ""
29
+ },
30
+ // Endpoints that accept anonymous requests are common enough — a local
31
+ // router, a LAN gateway — that a missing key must not make the provider
32
+ // unavailable.
33
+ { [apiKeyKey]: "" });
34
+ return providerId;
35
+ }
36
+ /**
37
+ * Make the registry match `definitions`: register each one and drop every
38
+ * `custom_*` id that is no longer in the list. Returns the ids now registered.
39
+ */
40
+ export function syncCustomProviders(definitions) {
41
+ const wanted = new Set(definitions.map((d) => customProviderId(d.slug)));
42
+ for (const id of listCustomProviderIds()) {
43
+ if (!wanted.has(id))
44
+ unregisterProvider(id);
45
+ }
46
+ return definitions.map(register);
47
+ }
48
+ /** Every `custom_*` id currently in the registry. */
49
+ export function listCustomProviderIds() {
50
+ return listRegisteredProviderIds().filter(isCustomProviderId);
51
+ }
52
+ //# sourceMappingURL=custom-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-provider-registry.js","sourceRoot":"","sources":["../../src/providers/custom-provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,SAAS,QAAQ,CAAC,UAA0B;IAC1C,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE3D,gBAAgB,CACd,UAAU,EACV,oBAAoB,EACpB;QACE,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,UAAU,CAAC,MAAM,IAAI,EAAE;QAChC,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,EAAE;QAC3C,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,EAAE;QAC3C,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,CAAC,UAAU,CAAC,EAAE,EAAE;KACjB;IACD,uEAAuE;IACvE,wEAAwE;IACxE,eAAe;IACf,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CACpB,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAsC;IAEtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,EAAE,IAAI,qBAAqB,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,qBAAqB;IACnC,OAAO,yBAAyB,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
@@ -1,25 +1,19 @@
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 DeepSeekProviderOptions {
5
- client?: OpenAI;
6
- clientFactory?: (apiKey: string) => OpenAI;
7
- fetchFn?: typeof fetch;
8
- }
9
3
  /**
10
- * DeepSeek provider. Uses the OpenAI SDK against DeepSeek's
11
- * OpenAI-compatible endpoint at https://api.deepseek.com/v1.
4
+ * DeepSeek provider. Speaks the OpenAI Chat Completions dialect against
5
+ * DeepSeek's OpenAI-compatible endpoint at https://api.deepseek.com/v1.
12
6
  * Covers DeepSeek-V3 chat and DeepSeek-R1 reasoning models.
13
7
  */
14
- export declare class DeepSeekProvider extends OpenAIProvider {
8
+ export declare class DeepSeekProvider extends OpenAICompatProvider {
15
9
  static requiredSecrets(): string[];
16
- private _deepseekFetch;
17
10
  constructor(secrets: {
18
11
  DEEPSEEK_API_KEY?: string;
19
- }, options?: DeepSeekProviderOptions);
20
- getContainerEnv(): Record<string, string>;
12
+ }, options?: OpenAICompatProviderOptions);
13
+ getContainerEnv(): {
14
+ DEEPSEEK_API_KEY: string;
15
+ };
21
16
  hasToolSupport(_model: string): Promise<boolean>;
22
17
  getAvailableLanguageModels(): Promise<LanguageModel[]>;
23
18
  }
24
- export {};
25
19
  //# sourceMappingURL=deepseek-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-provider.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek-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;AAIhD,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;;;;GAIG;AACH,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":"deepseek-provider.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;;GAIG;AACH,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,EAW1C;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,33 +1,20 @@
1
- import OpenAI from "openai";
2
- import { OpenAIProvider } from "./openai-provider.js";
1
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
3
2
  const DEEPSEEK_BASE_URL = "https://api.deepseek.com/v1";
4
3
  /**
5
- * DeepSeek provider. Uses the OpenAI SDK against DeepSeek's
6
- * OpenAI-compatible endpoint at https://api.deepseek.com/v1.
4
+ * DeepSeek provider. Speaks the OpenAI Chat Completions dialect against
5
+ * DeepSeek's OpenAI-compatible endpoint at https://api.deepseek.com/v1.
7
6
  * Covers DeepSeek-V3 chat and DeepSeek-R1 reasoning models.
8
7
  */
9
- export class DeepSeekProvider extends OpenAIProvider {
8
+ export class DeepSeekProvider extends OpenAICompatProvider {
10
9
  static requiredSecrets() {
11
10
  return ["DEEPSEEK_API_KEY"];
12
11
  }
13
- _deepseekFetch;
14
12
  constructor(secrets, options = {}) {
15
13
  const apiKey = secrets.DEEPSEEK_API_KEY;
16
14
  if (!apiKey) {
17
15
  throw new Error("DEEPSEEK_API_KEY is required");
18
16
  }
19
- const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
20
- super({ OPENAI_API_KEY: apiKey }, {
21
- client: options.client,
22
- clientFactory: options.clientFactory ??
23
- ((key) => new OpenAI({
24
- apiKey: key,
25
- baseURL: DEEPSEEK_BASE_URL
26
- })),
27
- fetchFn
28
- });
29
- this.provider = "deepseek";
30
- this._deepseekFetch = fetchFn;
17
+ super({ providerId: "deepseek", apiKey, baseURL: DEEPSEEK_BASE_URL }, options);
31
18
  }
32
19
  getContainerEnv() {
33
20
  return { DEEPSEEK_API_KEY: this.apiKey };
@@ -36,23 +23,7 @@ export class DeepSeekProvider extends OpenAIProvider {
36
23
  return true;
37
24
  }
38
25
  async getAvailableLanguageModels() {
39
- const response = await this._deepseekFetch(`${DEEPSEEK_BASE_URL}/models`, {
40
- headers: {
41
- Authorization: `Bearer ${this.apiKey}`
42
- }
43
- });
44
- if (!response.ok) {
45
- return [];
46
- }
47
- const payload = (await response.json());
48
- const rows = payload.data ?? [];
49
- return rows
50
- .filter((row) => typeof row.id === "string" && row.id.length > 0)
51
- .map((row) => ({
52
- id: row.id,
53
- name: row.name ?? row.id,
54
- provider: "deepseek"
55
- }));
26
+ return this.listCompatModels();
56
27
  }
57
28
  }
58
29
  //# sourceMappingURL=deepseek-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-provider.js","sourceRoot":"","sources":["../../src/providers/deepseek-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAQxD;;;;GAIG;AACH,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,iBAAiB;iBAC3B,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,GAAG,iBAAiB,SAAS,EAC7B;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":"deepseek-provider.js","sourceRoot":"","sources":["../../src/providers/deepseek-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD;;;;GAIG;AACH,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,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAC9D,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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Default base URLs for local OpenAI-compatible / Ollama servers.
3
+ *
4
+ * These are the out-of-the-box ports the respective tools listen on. They are
5
+ * used only as the final fallback after an explicit option, the secret store,
6
+ * and the environment variable have all been consulted.
7
+ */
8
+ /** Standard Ollama daemon port. */
9
+ export declare const OLLAMA_DEFAULT_URL = "http://127.0.0.1:11434";
10
+ /** Standard LM Studio OpenAI-compatible server port. */
11
+ export declare const LMSTUDIO_DEFAULT_URL = "http://127.0.0.1:1234";
12
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Default base URLs for local OpenAI-compatible / Ollama servers.
3
+ *
4
+ * These are the out-of-the-box ports the respective tools listen on. They are
5
+ * used only as the final fallback after an explicit option, the secret store,
6
+ * and the environment variable have all been consulted.
7
+ */
8
+ /** Standard Ollama daemon port. */
9
+ export const OLLAMA_DEFAULT_URL = "http://127.0.0.1:11434";
10
+ /** Standard LM Studio OpenAI-compatible server port. */
11
+ export const LMSTUDIO_DEFAULT_URL = "http://127.0.0.1:1234";
12
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,wDAAwD;AACxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Unified provider for ElevenLabs text-to-speech.
3
+ *
4
+ * Surfaces ElevenLabs voices/models in the unified TTS picker and generates
5
+ * speech via the REST API. Chat / LLM generation is not supported.
6
+ *
7
+ * - `textToSpeech()` requests raw `pcm_24000` and yields Int16 samples (the
8
+ * streaming path used by the unified TTS node and realtime callers).
9
+ * - `textToSpeechEncoded()` requests `mp3_44100_128` and returns the encoded
10
+ * bytes (the path used by chat audio / media tools).
11
+ */
12
+ import { BaseProvider } from "./base-provider.js";
13
+ import type { EncodedAudioResult, Message, StreamingAudioChunk, TTSModel } from "./types.js";
14
+ interface ElevenLabsProviderOptions {
15
+ fetchFn?: typeof fetch;
16
+ }
17
+ export declare class ElevenLabsProvider extends BaseProvider {
18
+ static requiredSecrets(): string[];
19
+ readonly apiKey: string;
20
+ private readonly _fetch;
21
+ constructor(secrets: {
22
+ ELEVENLABS_API_KEY?: string;
23
+ }, options?: ElevenLabsProviderOptions);
24
+ getContainerEnv(): {
25
+ ELEVENLABS_API_KEY: string;
26
+ };
27
+ generateMessage(_args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
28
+ generateMessages(_args: Parameters<BaseProvider["generateMessages"]>[0]): ReturnType<BaseProvider["generateMessages"]>;
29
+ getAvailableTTSModels(): Promise<TTSModel[]>;
30
+ /** Resolve a voice name ("Aria") or raw voice id to a voice id. */
31
+ private resolveVoiceId;
32
+ private requestSpeech;
33
+ textToSpeech(args: {
34
+ text: string;
35
+ model: string;
36
+ voice?: string;
37
+ speed?: number;
38
+ audioFormat?: string;
39
+ }): AsyncGenerator<StreamingAudioChunk>;
40
+ textToSpeechEncoded(args: {
41
+ text: string;
42
+ model: string;
43
+ voice?: string;
44
+ speed?: number;
45
+ audioFormat?: string;
46
+ }): Promise<EncodedAudioResult | null>;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=elevenlabs-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-provider.d.ts","sourceRoot":"","sources":["../../src/providers/elevenlabs-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,QAAQ,EACT,MAAM,YAAY,CAAC;AA6CpB,UAAU,yBAAyB;IACjC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE,CAEjC;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,YACE,OAAO,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,EACxC,OAAO,GAAE,yBAA8B,EASxC;IAED,eAAe;QACJ,kBAAkB;MAC5B;IAED,eAAe,CACb,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,OAAO,CAAC,CAElB;IAGM,gBAAgB,CACrB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAE9C;IAEc,qBAAqB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO1D;IAED,mEAAmE;IACnE,OAAO,CAAC,cAAc;YAKR,aAAa;IAiCX,YAAY,CAAC,IAAI,EAAE;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAWtC;IAEc,mBAAmB,CAAC,IAAI,EAAE;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAYrC;CACF"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Unified provider for ElevenLabs text-to-speech.
3
+ *
4
+ * Surfaces ElevenLabs voices/models in the unified TTS picker and generates
5
+ * speech via the REST API. Chat / LLM generation is not supported.
6
+ *
7
+ * - `textToSpeech()` requests raw `pcm_24000` and yields Int16 samples (the
8
+ * streaming path used by the unified TTS node and realtime callers).
9
+ * - `textToSpeechEncoded()` requests `mp3_44100_128` and returns the encoded
10
+ * bytes (the path used by chat audio / media tools).
11
+ */
12
+ import { createLogger } from "@nodetool-ai/config";
13
+ import { BaseProvider } from "./base-provider.js";
14
+ const log = createLogger("nodetool.runtime.providers.elevenlabs");
15
+ const ELEVENLABS_API_BASE = "https://api.elevenlabs.io/v1";
16
+ /** Built-in ElevenLabs voices (name → voice id). */
17
+ const VOICE_ID_MAP = {
18
+ Aria: "9BWtsMINqrJLrRacOk9x",
19
+ Roger: "CwhRBWXzGAHq8TQ4Fs17",
20
+ Sarah: "EXAVITQu4vr4xnSDxMaL",
21
+ Laura: "FGY2WhTYpPnrIDTdsKH5",
22
+ Charlie: "IKne3meq5aSn9XLyUdCD",
23
+ George: "JBFqnCBsd6RMkjVDRZzb",
24
+ Callum: "N2lVS1w4EtoT3dr4eOWO",
25
+ River: "SAz9YHcvj6GT2YYXdXww",
26
+ Liam: "TX3LPaxmHKxFdv7VOQHJ",
27
+ Charlotte: "XB0fDUnXU5powFXDhCwa",
28
+ Alice: "Xb7hH8MSUJpSbSDYk0k2",
29
+ Will: "bIHbv24MWmeRgasZH58o",
30
+ Jessica: "cgSgspJ2msm6clMCkdW9",
31
+ Eric: "cjVigY5qzO86Huf0OWal",
32
+ Chris: "iP95p4xoKVk53GoZ742B",
33
+ Brian: "nPczCjzI2devNBz1zQrb",
34
+ Daniel: "onwK4e9ZLuTAKqWW03F9",
35
+ Lily: "pFZP5JQG7iQjIQuC4Bku",
36
+ Bill: "pqHfZKP75CvOlQylNhV4"
37
+ };
38
+ const VOICE_NAMES = Object.keys(VOICE_ID_MAP);
39
+ /** Available TTS models (id → display name). */
40
+ const MODELS = [
41
+ { id: "eleven_v3", name: "Eleven v3" },
42
+ { id: "eleven_multilingual_v2", name: "Multilingual v2" },
43
+ { id: "eleven_turbo_v2_5", name: "Turbo v2.5" },
44
+ { id: "eleven_flash_v2_5", name: "Flash v2.5" },
45
+ { id: "eleven_turbo_v2", name: "Turbo v2" },
46
+ { id: "eleven_flash_v2", name: "Flash v2" },
47
+ { id: "eleven_monolingual_v1", name: "Monolingual v1" },
48
+ { id: "eleven_multilingual_v1", name: "Multilingual v1" }
49
+ ];
50
+ const SAMPLE_RATE = 24000;
51
+ export class ElevenLabsProvider extends BaseProvider {
52
+ static requiredSecrets() {
53
+ return ["ELEVENLABS_API_KEY"];
54
+ }
55
+ apiKey;
56
+ _fetch;
57
+ constructor(secrets, options = {}) {
58
+ super("elevenlabs");
59
+ const apiKey = secrets.ELEVENLABS_API_KEY;
60
+ if (!apiKey) {
61
+ throw new Error("ELEVENLABS_API_KEY is required");
62
+ }
63
+ this.apiKey = apiKey;
64
+ this._fetch = options.fetchFn ?? globalThis.fetch.bind(globalThis);
65
+ }
66
+ getContainerEnv() {
67
+ return { ELEVENLABS_API_KEY: this.apiKey };
68
+ }
69
+ generateMessage(_args) {
70
+ throw new Error("elevenlabs does not support chat generation");
71
+ }
72
+ // eslint-disable-next-line require-yield
73
+ async *generateMessages(_args) {
74
+ throw new Error("elevenlabs does not support chat generation");
75
+ }
76
+ async getAvailableTTSModels() {
77
+ return MODELS.map((m) => ({
78
+ id: m.id,
79
+ name: m.name,
80
+ provider: "elevenlabs",
81
+ voices: VOICE_NAMES
82
+ }));
83
+ }
84
+ /** Resolve a voice name ("Aria") or raw voice id to a voice id. */
85
+ resolveVoiceId(voice) {
86
+ if (!voice)
87
+ return VOICE_ID_MAP.Aria;
88
+ return VOICE_ID_MAP[voice] ?? voice;
89
+ }
90
+ async requestSpeech(args, outputFormat) {
91
+ const voiceId = this.resolveVoiceId(args.voice);
92
+ const url = `${ELEVENLABS_API_BASE}/text-to-speech/${voiceId}` +
93
+ `?output_format=${outputFormat}`;
94
+ const body = {
95
+ text: args.text,
96
+ model_id: args.model
97
+ };
98
+ // ElevenLabs applies playback speed via voice_settings.speed (0.7–1.2).
99
+ // Forward it when the caller asked for a non-default tempo — omitting it
100
+ // silently discarded the request.
101
+ if (args.speed != null && args.speed !== 1.0) {
102
+ body.voice_settings = { speed: Math.max(0.7, Math.min(1.2, args.speed)) };
103
+ }
104
+ const response = await this._fetch(url, {
105
+ method: "POST",
106
+ headers: {
107
+ "xi-api-key": this.apiKey,
108
+ "Content-Type": "application/json"
109
+ },
110
+ body: JSON.stringify(body)
111
+ });
112
+ if (!response.ok) {
113
+ const detail = await response.text().catch(() => "");
114
+ throw new Error(`ElevenLabs TTS failed: ${response.status} ${detail}`);
115
+ }
116
+ return new Uint8Array(await response.arrayBuffer());
117
+ }
118
+ async *textToSpeech(args) {
119
+ if (!args.text)
120
+ throw new Error("text must not be empty");
121
+ log.debug("ElevenLabs textToSpeech", { model: args.model });
122
+ const bytes = await this.requestSpeech(args, `pcm_${SAMPLE_RATE}`);
123
+ // ElevenLabs `pcm_24000` is raw little-endian PCM16, no header.
124
+ const samples = new Int16Array(bytes.buffer, bytes.byteOffset, Math.floor(bytes.byteLength / 2));
125
+ yield { samples, sampleRate: SAMPLE_RATE };
126
+ }
127
+ async textToSpeechEncoded(args) {
128
+ if (!args.text)
129
+ throw new Error("text must not be empty");
130
+ log.debug("ElevenLabs textToSpeechEncoded", { model: args.model });
131
+ const fmt = (args.audioFormat ?? "mp3").toLowerCase();
132
+ if (fmt !== "mp3" && fmt !== "mpeg") {
133
+ // This encoded path only produces MP3. For any other requested format
134
+ // (pcm/wav/flac/…) defer to the streaming PCM path instead of silently
135
+ // handing back MP3 bytes mislabeled as the requested format.
136
+ return null;
137
+ }
138
+ const bytes = await this.requestSpeech(args, "mp3_44100_128");
139
+ return { data: bytes, mimeType: "audio/mpeg" };
140
+ }
141
+ }
142
+ //# sourceMappingURL=elevenlabs-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-provider.js","sourceRoot":"","sources":["../../src/providers/elevenlabs-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,MAAM,GAAG,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;AAElE,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAE3D,oDAAoD;AACpD,MAAM,YAAY,GAA2B;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,sBAAsB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;IAC9B,KAAK,EAAE,sBAAsB;IAC7B,IAAI,EAAE,sBAAsB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,KAAK,EAAE,sBAAsB;IAC7B,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,sBAAsB;IAC7B,MAAM,EAAE,sBAAsB;IAC9B,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,sBAAsB;CAC7B,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE9C,gDAAgD;AAChD,MAAM,MAAM,GAAwC;IAClD,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACtC,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACzD,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE;IAC/C,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE;IAC/C,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE;IAC3C,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE;IAC3C,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACvD,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE;CAC1D,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,CAAC;AAM1B,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,MAAM,CAAC,eAAe;QACpB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChC,CAAC;IAEQ,MAAM,CAAS;IACP,MAAM,CAAe;IAEtC,YACE,OAAwC,EACxC,OAAO,GAA8B,EAAE;QAEvC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,eAAe;QACb,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED,eAAe,CACb,KAAqD;QAErD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,CAAC,gBAAgB,CACrB,KAAsD;QAEtD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAEQ,KAAK,CAAC,qBAAqB;QAClC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,mEAAmE;IAC3D,cAAc,CAAC,KAAc;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,YAAY,CAAC,IAAI,CAAC;QACrC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAAqE,EACrE,YAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,GAAG,GACP,GAAG,mBAAmB,mBAAmB,OAAO,EAAE;YAClD,kBAAkB,YAAY,EAAE,CAAC;QACnC,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,KAAK;SACrB,CAAC;QACF,wEAAwE;QACxE,yEAAyE;QACzE,kCAAkC;QAClC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,IAAI,CAAC,MAAM;gBACzB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAEQ,KAAK,CAAC,CAAC,YAAY,CAAC,IAM5B;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,WAAW,EAAE,CAAC,CAAC;QACnE,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,UAAU,CAC5B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,UAAU,EAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CACjC,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;IAEQ,KAAK,CAAC,mBAAmB,CAAC,IAMlC;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACpC,sEAAsE;YACtE,uEAAuE;YACvE,6DAA6D;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;CACF"}