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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) 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 +982 -127
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +2649 -530
  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 +75 -0
  44. package/dist/generation-registry.d.ts.map +1 -0
  45. package/dist/generation-registry.js +144 -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 +352 -0
  62. package/dist/host-binaries.js.map +1 -0
  63. package/dist/image-codec.d.ts +76 -0
  64. package/dist/image-codec.d.ts.map +1 -0
  65. package/dist/image-codec.js +293 -0
  66. package/dist/image-codec.js.map +1 -0
  67. package/dist/image-model-tasks.d.ts +15 -0
  68. package/dist/image-model-tasks.d.ts.map +1 -0
  69. package/dist/image-model-tasks.js +24 -0
  70. package/dist/image-model-tasks.js.map +1 -0
  71. package/dist/index.d.ts +67 -6
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +51 -4
  74. package/dist/index.js.map +1 -1
  75. package/dist/invocation-account.d.ts +43 -0
  76. package/dist/invocation-account.d.ts.map +1 -0
  77. package/dist/invocation-account.js +60 -0
  78. package/dist/invocation-account.js.map +1 -0
  79. package/dist/media-ref-bytes.d.ts +35 -0
  80. package/dist/media-ref-bytes.d.ts.map +1 -0
  81. package/dist/media-ref-bytes.js +191 -0
  82. package/dist/media-ref-bytes.js.map +1 -0
  83. package/dist/node-executor.d.ts +119 -2
  84. package/dist/node-executor.d.ts.map +1 -1
  85. package/dist/permission-gate.d.ts +152 -0
  86. package/dist/permission-gate.d.ts.map +1 -0
  87. package/dist/permission-gate.js +87 -0
  88. package/dist/permission-gate.js.map +1 -0
  89. package/dist/prefixed-storage-adapter.d.ts +33 -0
  90. package/dist/prefixed-storage-adapter.d.ts.map +1 -0
  91. package/dist/prefixed-storage-adapter.js +70 -0
  92. package/dist/prefixed-storage-adapter.js.map +1 -0
  93. package/dist/prompt-asset-refs.d.ts +222 -0
  94. package/dist/prompt-asset-refs.d.ts.map +1 -0
  95. package/dist/prompt-asset-refs.js +751 -0
  96. package/dist/prompt-asset-refs.js.map +1 -0
  97. package/dist/provider-cache.d.ts +3 -0
  98. package/dist/provider-cache.d.ts.map +1 -0
  99. package/dist/provider-cache.js +8 -0
  100. package/dist/provider-cache.js.map +1 -0
  101. package/dist/providers/aki-provider.d.ts +35 -10
  102. package/dist/providers/aki-provider.d.ts.map +1 -1
  103. package/dist/providers/aki-provider.js +90 -77
  104. package/dist/providers/aki-provider.js.map +1 -1
  105. package/dist/providers/alibaba-provider.d.ts +39 -0
  106. package/dist/providers/alibaba-provider.d.ts.map +1 -0
  107. package/dist/providers/alibaba-provider.js +86 -0
  108. package/dist/providers/alibaba-provider.js.map +1 -0
  109. package/dist/providers/anthropic-provider.d.ts +52 -3
  110. package/dist/providers/anthropic-provider.d.ts.map +1 -1
  111. package/dist/providers/anthropic-provider.js +1020 -338
  112. package/dist/providers/anthropic-provider.js.map +1 -1
  113. package/dist/providers/atlascloud-provider.d.ts +103 -0
  114. package/dist/providers/atlascloud-provider.d.ts.map +1 -0
  115. package/dist/providers/atlascloud-provider.js +1031 -0
  116. package/dist/providers/atlascloud-provider.js.map +1 -0
  117. package/dist/providers/atlascloud-transport.d.ts +100 -0
  118. package/dist/providers/atlascloud-transport.d.ts.map +1 -0
  119. package/dist/providers/atlascloud-transport.js +364 -0
  120. package/dist/providers/atlascloud-transport.js.map +1 -0
  121. package/dist/providers/atlascloud-webhook-registry.d.ts +35 -0
  122. package/dist/providers/atlascloud-webhook-registry.d.ts.map +1 -0
  123. package/dist/providers/atlascloud-webhook-registry.js +104 -0
  124. package/dist/providers/atlascloud-webhook-registry.js.map +1 -0
  125. package/dist/providers/audio-mime.d.ts +11 -0
  126. package/dist/providers/audio-mime.d.ts.map +1 -0
  127. package/dist/providers/audio-mime.js +46 -0
  128. package/dist/providers/audio-mime.js.map +1 -0
  129. package/dist/providers/base-provider.d.ts +501 -32
  130. package/dist/providers/base-provider.d.ts.map +1 -1
  131. package/dist/providers/base-provider.js +1280 -87
  132. package/dist/providers/base-provider.js.map +1 -1
  133. package/dist/providers/cassette-provider.d.ts +217 -0
  134. package/dist/providers/cassette-provider.d.ts.map +1 -0
  135. package/dist/providers/cassette-provider.js +502 -0
  136. package/dist/providers/cassette-provider.js.map +1 -0
  137. package/dist/providers/cerebras-provider.d.ts +6 -12
  138. package/dist/providers/cerebras-provider.d.ts.map +1 -1
  139. package/dist/providers/cerebras-provider.js +8 -33
  140. package/dist/providers/cerebras-provider.js.map +1 -1
  141. package/dist/providers/claude-agent-provider.d.ts +107 -74
  142. package/dist/providers/claude-agent-provider.d.ts.map +1 -1
  143. package/dist/providers/claude-agent-provider.js +1279 -517
  144. package/dist/providers/claude-agent-provider.js.map +1 -1
  145. package/dist/providers/codex-provider.d.ts +84 -0
  146. package/dist/providers/codex-provider.d.ts.map +1 -0
  147. package/dist/providers/codex-provider.js +505 -0
  148. package/dist/providers/codex-provider.js.map +1 -0
  149. package/dist/providers/cohere-provider.d.ts +7 -3
  150. package/dist/providers/cohere-provider.d.ts.map +1 -1
  151. package/dist/providers/cohere-provider.js +14 -2
  152. package/dist/providers/cohere-provider.js.map +1 -1
  153. package/dist/providers/comfy-cloud-provider.d.ts +30 -0
  154. package/dist/providers/comfy-cloud-provider.d.ts.map +1 -0
  155. package/dist/providers/comfy-cloud-provider.js +42 -0
  156. package/dist/providers/comfy-cloud-provider.js.map +1 -0
  157. package/dist/providers/content-filter.d.ts +46 -0
  158. package/dist/providers/content-filter.d.ts.map +1 -0
  159. package/dist/providers/content-filter.js +92 -0
  160. package/dist/providers/content-filter.js.map +1 -0
  161. package/dist/providers/context-exceeded.d.ts +37 -0
  162. package/dist/providers/context-exceeded.d.ts.map +1 -0
  163. package/dist/providers/context-exceeded.js +114 -0
  164. package/dist/providers/context-exceeded.js.map +1 -0
  165. package/dist/providers/context-window.d.ts +44 -0
  166. package/dist/providers/context-window.d.ts.map +1 -0
  167. package/dist/providers/context-window.js +145 -0
  168. package/dist/providers/context-window.js.map +1 -0
  169. package/dist/providers/contract/index.d.ts +4 -0
  170. package/dist/providers/contract/index.d.ts.map +1 -0
  171. package/dist/providers/contract/index.js +4 -0
  172. package/dist/providers/contract/index.js.map +1 -0
  173. package/dist/providers/contract/probe-manifest.d.ts +75 -0
  174. package/dist/providers/contract/probe-manifest.d.ts.map +1 -0
  175. package/dist/providers/contract/probe-manifest.js +379 -0
  176. package/dist/providers/contract/probe-manifest.js.map +1 -0
  177. package/dist/providers/contract/probe-runner.d.ts +57 -0
  178. package/dist/providers/contract/probe-runner.d.ts.map +1 -0
  179. package/dist/providers/contract/probe-runner.js +180 -0
  180. package/dist/providers/contract/probe-runner.js.map +1 -0
  181. package/dist/providers/contract/redact.d.ts +29 -0
  182. package/dist/providers/contract/redact.d.ts.map +1 -0
  183. package/dist/providers/contract/redact.js +113 -0
  184. package/dist/providers/contract/redact.js.map +1 -0
  185. package/dist/providers/core-tools.d.ts +75 -0
  186. package/dist/providers/core-tools.d.ts.map +1 -0
  187. package/dist/providers/core-tools.js +128 -0
  188. package/dist/providers/core-tools.js.map +1 -0
  189. package/dist/providers/cost-calculator.d.ts +69 -50
  190. package/dist/providers/cost-calculator.d.ts.map +1 -1
  191. package/dist/providers/cost-calculator.js +207 -397
  192. package/dist/providers/cost-calculator.js.map +1 -1
  193. package/dist/providers/credential-check.d.ts +45 -0
  194. package/dist/providers/credential-check.d.ts.map +1 -0
  195. package/dist/providers/credential-check.js +164 -0
  196. package/dist/providers/credential-check.js.map +1 -0
  197. package/dist/providers/custom-model-kinds.d.ts +33 -0
  198. package/dist/providers/custom-model-kinds.d.ts.map +1 -0
  199. package/dist/providers/custom-model-kinds.js +96 -0
  200. package/dist/providers/custom-model-kinds.js.map +1 -0
  201. package/dist/providers/custom-openai-provider.d.ts +83 -0
  202. package/dist/providers/custom-openai-provider.d.ts.map +1 -0
  203. package/dist/providers/custom-openai-provider.js +190 -0
  204. package/dist/providers/custom-openai-provider.js.map +1 -0
  205. package/dist/providers/custom-provider-registry.d.ts +19 -0
  206. package/dist/providers/custom-provider-registry.d.ts.map +1 -0
  207. package/dist/providers/custom-provider-registry.js +52 -0
  208. package/dist/providers/custom-provider-registry.js.map +1 -0
  209. package/dist/providers/deepseek-provider.d.ts +8 -14
  210. package/dist/providers/deepseek-provider.d.ts.map +1 -1
  211. package/dist/providers/deepseek-provider.js +6 -35
  212. package/dist/providers/deepseek-provider.js.map +1 -1
  213. package/dist/providers/defaults.d.ts +12 -0
  214. package/dist/providers/defaults.d.ts.map +1 -0
  215. package/dist/providers/defaults.js +12 -0
  216. package/dist/providers/defaults.js.map +1 -0
  217. package/dist/providers/dreamina-models.d.ts +5 -0
  218. package/dist/providers/dreamina-models.d.ts.map +1 -0
  219. package/dist/providers/dreamina-models.js +57 -0
  220. package/dist/providers/dreamina-models.js.map +1 -0
  221. package/dist/providers/dreamina-music.d.ts +52 -0
  222. package/dist/providers/dreamina-music.d.ts.map +1 -0
  223. package/dist/providers/dreamina-music.js +115 -0
  224. package/dist/providers/dreamina-music.js.map +1 -0
  225. package/dist/providers/dreamina-provider.d.ts +62 -0
  226. package/dist/providers/dreamina-provider.d.ts.map +1 -0
  227. package/dist/providers/dreamina-provider.js +790 -0
  228. package/dist/providers/dreamina-provider.js.map +1 -0
  229. package/dist/providers/elevenlabs-provider.d.ts +50 -0
  230. package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
  231. package/dist/providers/elevenlabs-provider.js +147 -0
  232. package/dist/providers/elevenlabs-provider.js.map +1 -0
  233. package/dist/providers/entity-references.d.ts +31 -0
  234. package/dist/providers/entity-references.d.ts.map +1 -0
  235. package/dist/providers/entity-references.js +113 -0
  236. package/dist/providers/entity-references.js.map +1 -0
  237. package/dist/providers/evolink-provider.d.ts +40 -0
  238. package/dist/providers/evolink-provider.d.ts.map +1 -0
  239. package/dist/providers/evolink-provider.js +312 -0
  240. package/dist/providers/evolink-provider.js.map +1 -0
  241. package/dist/providers/fake-provider.d.ts +74 -2
  242. package/dist/providers/fake-provider.d.ts.map +1 -1
  243. package/dist/providers/fake-provider.js +213 -1
  244. package/dist/providers/fake-provider.js.map +1 -1
  245. package/dist/providers/fal-generations.d.ts +106 -0
  246. package/dist/providers/fal-generations.d.ts.map +1 -0
  247. package/dist/providers/fal-generations.js +286 -0
  248. package/dist/providers/fal-generations.js.map +1 -0
  249. package/dist/providers/fal-provider.d.ts +173 -8
  250. package/dist/providers/fal-provider.d.ts.map +1 -1
  251. package/dist/providers/fal-provider.js +1396 -64
  252. package/dist/providers/fal-provider.js.map +1 -1
  253. package/dist/providers/fal-queue.d.ts +47 -0
  254. package/dist/providers/fal-queue.d.ts.map +1 -0
  255. package/dist/providers/fal-queue.js +231 -0
  256. package/dist/providers/fal-queue.js.map +1 -0
  257. package/dist/providers/gemini-provider.d.ts +150 -9
  258. package/dist/providers/gemini-provider.d.ts.map +1 -1
  259. package/dist/providers/gemini-provider.js +1515 -316
  260. package/dist/providers/gemini-provider.js.map +1 -1
  261. package/dist/providers/gmi-provider.d.ts +21 -0
  262. package/dist/providers/gmi-provider.d.ts.map +1 -0
  263. package/dist/providers/gmi-provider.js +34 -0
  264. package/dist/providers/gmi-provider.js.map +1 -0
  265. package/dist/providers/gpt-image-size.d.ts +3 -0
  266. package/dist/providers/gpt-image-size.d.ts.map +1 -0
  267. package/dist/providers/gpt-image-size.js +37 -0
  268. package/dist/providers/gpt-image-size.js.map +1 -0
  269. package/dist/providers/groq-provider.d.ts +9 -12
  270. package/dist/providers/groq-provider.d.ts.map +1 -1
  271. package/dist/providers/groq-provider.js +19 -33
  272. package/dist/providers/groq-provider.js.map +1 -1
  273. package/dist/providers/groq-request.d.ts +38 -0
  274. package/dist/providers/groq-request.d.ts.map +1 -0
  275. package/dist/providers/groq-request.js +138 -0
  276. package/dist/providers/groq-request.js.map +1 -0
  277. package/dist/providers/higgsfield-provider.d.ts +31 -0
  278. package/dist/providers/higgsfield-provider.d.ts.map +1 -0
  279. package/dist/providers/higgsfield-provider.js +143 -0
  280. package/dist/providers/higgsfield-provider.js.map +1 -0
  281. package/dist/providers/higgsfield-transport.d.ts +106 -0
  282. package/dist/providers/higgsfield-transport.d.ts.map +1 -0
  283. package/dist/providers/higgsfield-transport.js +182 -0
  284. package/dist/providers/higgsfield-transport.js.map +1 -0
  285. package/dist/providers/http-transport.d.ts +74 -0
  286. package/dist/providers/http-transport.d.ts.map +1 -0
  287. package/dist/providers/http-transport.js +152 -0
  288. package/dist/providers/http-transport.js.map +1 -0
  289. package/dist/providers/huggingface-provider.d.ts +73 -4
  290. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  291. package/dist/providers/huggingface-provider.js +240 -34
  292. package/dist/providers/huggingface-provider.js.map +1 -1
  293. package/dist/providers/image-mime.d.ts +39 -0
  294. package/dist/providers/image-mime.d.ts.map +1 -0
  295. package/dist/providers/image-mime.js +111 -0
  296. package/dist/providers/image-mime.js.map +1 -0
  297. package/dist/providers/image-ref.d.ts +21 -0
  298. package/dist/providers/image-ref.d.ts.map +1 -0
  299. package/dist/providers/image-ref.js +44 -0
  300. package/dist/providers/image-ref.js.map +1 -0
  301. package/dist/providers/index.d.ts +87 -8
  302. package/dist/providers/index.d.ts.map +1 -1
  303. package/dist/providers/index.js +250 -56
  304. package/dist/providers/index.js.map +1 -1
  305. package/dist/providers/jina-provider.d.ts +12 -3
  306. package/dist/providers/jina-provider.d.ts.map +1 -1
  307. package/dist/providers/jina-provider.js +21 -7
  308. package/dist/providers/jina-provider.js.map +1 -1
  309. package/dist/providers/kie-provider.d.ts +172 -10
  310. package/dist/providers/kie-provider.d.ts.map +1 -1
  311. package/dist/providers/kie-provider.js +1190 -228
  312. package/dist/providers/kie-provider.js.map +1 -1
  313. package/dist/providers/kie-webhook-registry.d.ts +28 -0
  314. package/dist/providers/kie-webhook-registry.d.ts.map +1 -0
  315. package/dist/providers/kie-webhook-registry.js +91 -0
  316. package/dist/providers/kie-webhook-registry.js.map +1 -0
  317. package/dist/providers/llama-provider.d.ts +23 -36
  318. package/dist/providers/llama-provider.d.ts.map +1 -1
  319. package/dist/providers/llama-provider.js +50 -355
  320. package/dist/providers/llama-provider.js.map +1 -1
  321. package/dist/providers/lmstudio-provider.d.ts +4 -7
  322. package/dist/providers/lmstudio-provider.d.ts.map +1 -1
  323. package/dist/providers/lmstudio-provider.js +24 -15
  324. package/dist/providers/lmstudio-provider.js.map +1 -1
  325. package/dist/providers/loop-tracing.d.ts +17 -0
  326. package/dist/providers/loop-tracing.d.ts.map +1 -0
  327. package/dist/providers/loop-tracing.js +132 -0
  328. package/dist/providers/loop-tracing.js.map +1 -0
  329. package/dist/providers/manifest-models.d.ts +341 -1
  330. package/dist/providers/manifest-models.d.ts.map +1 -1
  331. package/dist/providers/manifest-models.js +1106 -22
  332. package/dist/providers/manifest-models.js.map +1 -1
  333. package/dist/providers/media-mime.d.ts +14 -0
  334. package/dist/providers/media-mime.d.ts.map +1 -0
  335. package/dist/providers/media-mime.js +35 -0
  336. package/dist/providers/media-mime.js.map +1 -0
  337. package/dist/providers/meshy-provider.d.ts +16 -2
  338. package/dist/providers/meshy-provider.d.ts.map +1 -1
  339. package/dist/providers/meshy-provider.js +82 -46
  340. package/dist/providers/meshy-provider.js.map +1 -1
  341. package/dist/providers/meta-provider.d.ts +22 -0
  342. package/dist/providers/meta-provider.d.ts.map +1 -0
  343. package/dist/providers/meta-provider.js +54 -0
  344. package/dist/providers/meta-provider.js.map +1 -0
  345. package/dist/providers/minimax-provider.d.ts +27 -18
  346. package/dist/providers/minimax-provider.d.ts.map +1 -1
  347. package/dist/providers/minimax-provider.js +222 -72
  348. package/dist/providers/minimax-provider.js.map +1 -1
  349. package/dist/providers/mistral-provider.d.ts +8 -12
  350. package/dist/providers/mistral-provider.d.ts.map +1 -1
  351. package/dist/providers/mistral-provider.js +15 -34
  352. package/dist/providers/mistral-provider.js.map +1 -1
  353. package/dist/providers/moonshot-provider.d.ts +11 -15
  354. package/dist/providers/moonshot-provider.d.ts.map +1 -1
  355. package/dist/providers/moonshot-provider.js +33 -23
  356. package/dist/providers/moonshot-provider.js.map +1 -1
  357. package/dist/providers/node-llama-cpp-provider.d.ts +99 -0
  358. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
  359. package/dist/providers/node-llama-cpp-provider.js +484 -0
  360. package/dist/providers/node-llama-cpp-provider.js.map +1 -0
  361. package/dist/providers/nodetool-provider.d.ts +49 -0
  362. package/dist/providers/nodetool-provider.d.ts.map +1 -0
  363. package/dist/providers/nodetool-provider.js +222 -0
  364. package/dist/providers/nodetool-provider.js.map +1 -0
  365. package/dist/providers/oauth/browser-launcher.d.ts +23 -0
  366. package/dist/providers/oauth/browser-launcher.d.ts.map +1 -0
  367. package/dist/providers/oauth/browser-launcher.js +45 -0
  368. package/dist/providers/oauth/browser-launcher.js.map +1 -0
  369. package/dist/providers/oauth/claude-code-credentials.d.ts +74 -0
  370. package/dist/providers/oauth/claude-code-credentials.d.ts.map +1 -0
  371. package/dist/providers/oauth/claude-code-credentials.js +133 -0
  372. package/dist/providers/oauth/claude-code-credentials.js.map +1 -0
  373. package/dist/providers/oauth/claude-code-login.d.ts +124 -0
  374. package/dist/providers/oauth/claude-code-login.d.ts.map +1 -0
  375. package/dist/providers/oauth/claude-code-login.js +230 -0
  376. package/dist/providers/oauth/claude-code-login.js.map +1 -0
  377. package/dist/providers/oauth/claude-code-oauth-client.d.ts +111 -0
  378. package/dist/providers/oauth/claude-code-oauth-client.d.ts.map +1 -0
  379. package/dist/providers/oauth/claude-code-oauth-client.js +207 -0
  380. package/dist/providers/oauth/claude-code-oauth-client.js.map +1 -0
  381. package/dist/providers/oauth/errors.d.ts +54 -0
  382. package/dist/providers/oauth/errors.d.ts.map +1 -0
  383. package/dist/providers/oauth/errors.js +79 -0
  384. package/dist/providers/oauth/errors.js.map +1 -0
  385. package/dist/providers/oauth/index.d.ts +105 -0
  386. package/dist/providers/oauth/index.d.ts.map +1 -0
  387. package/dist/providers/oauth/index.js +167 -0
  388. package/dist/providers/oauth/index.js.map +1 -0
  389. package/dist/providers/oauth/jwt-claims.d.ts +23 -0
  390. package/dist/providers/oauth/jwt-claims.d.ts.map +1 -0
  391. package/dist/providers/oauth/jwt-claims.js +67 -0
  392. package/dist/providers/oauth/jwt-claims.js.map +1 -0
  393. package/dist/providers/oauth/local-callback-server.d.ts +60 -0
  394. package/dist/providers/oauth/local-callback-server.d.ts.map +1 -0
  395. package/dist/providers/oauth/local-callback-server.js +148 -0
  396. package/dist/providers/oauth/local-callback-server.js.map +1 -0
  397. package/dist/providers/oauth/oauth-client.d.ts +55 -0
  398. package/dist/providers/oauth/oauth-client.d.ts.map +1 -0
  399. package/dist/providers/oauth/oauth-client.js +161 -0
  400. package/dist/providers/oauth/oauth-client.js.map +1 -0
  401. package/dist/providers/oauth/openai-oauth-provider.d.ts +129 -0
  402. package/dist/providers/oauth/openai-oauth-provider.d.ts.map +1 -0
  403. package/dist/providers/oauth/openai-oauth-provider.js +265 -0
  404. package/dist/providers/oauth/openai-oauth-provider.js.map +1 -0
  405. package/dist/providers/oauth/pkce-helper.d.ts +43 -0
  406. package/dist/providers/oauth/pkce-helper.d.ts.map +1 -0
  407. package/dist/providers/oauth/pkce-helper.js +57 -0
  408. package/dist/providers/oauth/pkce-helper.js.map +1 -0
  409. package/dist/providers/oauth/redaction.d.ts +22 -0
  410. package/dist/providers/oauth/redaction.d.ts.map +1 -0
  411. package/dist/providers/oauth/redaction.js +59 -0
  412. package/dist/providers/oauth/redaction.js.map +1 -0
  413. package/dist/providers/oauth/secure-credential-store.d.ts +67 -0
  414. package/dist/providers/oauth/secure-credential-store.d.ts.map +1 -0
  415. package/dist/providers/oauth/secure-credential-store.js +73 -0
  416. package/dist/providers/oauth/secure-credential-store.js.map +1 -0
  417. package/dist/providers/oauth/token-store.d.ts +53 -0
  418. package/dist/providers/oauth/token-store.d.ts.map +1 -0
  419. package/dist/providers/oauth/token-store.js +78 -0
  420. package/dist/providers/oauth/token-store.js.map +1 -0
  421. package/dist/providers/oauth/types.d.ts +64 -0
  422. package/dist/providers/oauth/types.d.ts.map +1 -0
  423. package/dist/providers/oauth/types.js +12 -0
  424. package/dist/providers/oauth/types.js.map +1 -0
  425. package/dist/providers/object-tracking.d.ts +47 -0
  426. package/dist/providers/object-tracking.d.ts.map +1 -0
  427. package/dist/providers/object-tracking.js +46 -0
  428. package/dist/providers/object-tracking.js.map +1 -0
  429. package/dist/providers/offline-model-index.d.ts +20 -0
  430. package/dist/providers/offline-model-index.d.ts.map +1 -0
  431. package/dist/providers/offline-model-index.js +112 -0
  432. package/dist/providers/offline-model-index.js.map +1 -0
  433. package/dist/providers/ollama-provider.d.ts +30 -2
  434. package/dist/providers/ollama-provider.d.ts.map +1 -1
  435. package/dist/providers/ollama-provider.js +198 -43
  436. package/dist/providers/ollama-provider.js.map +1 -1
  437. package/dist/providers/openai-compat/client.d.ts +57 -0
  438. package/dist/providers/openai-compat/client.d.ts.map +1 -0
  439. package/dist/providers/openai-compat/client.js +157 -0
  440. package/dist/providers/openai-compat/client.js.map +1 -0
  441. package/dist/providers/openai-compat/decode.d.ts +36 -0
  442. package/dist/providers/openai-compat/decode.d.ts.map +1 -0
  443. package/dist/providers/openai-compat/decode.js +55 -0
  444. package/dist/providers/openai-compat/decode.js.map +1 -0
  445. package/dist/providers/openai-compat/errors.d.ts +54 -0
  446. package/dist/providers/openai-compat/errors.d.ts.map +1 -0
  447. package/dist/providers/openai-compat/errors.js +144 -0
  448. package/dist/providers/openai-compat/errors.js.map +1 -0
  449. package/dist/providers/openai-compat/index.d.ts +8 -0
  450. package/dist/providers/openai-compat/index.d.ts.map +1 -0
  451. package/dist/providers/openai-compat/index.js +5 -0
  452. package/dist/providers/openai-compat/index.js.map +1 -0
  453. package/dist/providers/openai-compat/sse.d.ts +14 -0
  454. package/dist/providers/openai-compat/sse.d.ts.map +1 -0
  455. package/dist/providers/openai-compat/sse.js +69 -0
  456. package/dist/providers/openai-compat/sse.js.map +1 -0
  457. package/dist/providers/openai-compat/types.d.ts +75 -0
  458. package/dist/providers/openai-compat/types.d.ts.map +1 -0
  459. package/dist/providers/openai-compat/types.js +9 -0
  460. package/dist/providers/openai-compat/types.js.map +1 -0
  461. package/dist/providers/openai-compat-provider.d.ts +90 -0
  462. package/dist/providers/openai-compat-provider.d.ts.map +1 -0
  463. package/dist/providers/openai-compat-provider.js +282 -0
  464. package/dist/providers/openai-compat-provider.js.map +1 -0
  465. package/dist/providers/openai-provider.d.ts +98 -27
  466. package/dist/providers/openai-provider.d.ts.map +1 -1
  467. package/dist/providers/openai-provider.js +1037 -105
  468. package/dist/providers/openai-provider.js.map +1 -1
  469. package/dist/providers/openrouter-provider.d.ts +58 -13
  470. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  471. package/dist/providers/openrouter-provider.js +383 -51
  472. package/dist/providers/openrouter-provider.js.map +1 -1
  473. package/dist/providers/provider-call-failure.d.ts +39 -0
  474. package/dist/providers/provider-call-failure.d.ts.map +1 -0
  475. package/dist/providers/provider-call-failure.js +132 -0
  476. package/dist/providers/provider-call-failure.js.map +1 -0
  477. package/dist/providers/provider-error.d.ts +59 -0
  478. package/dist/providers/provider-error.d.ts.map +1 -0
  479. package/dist/providers/provider-error.js +171 -0
  480. package/dist/providers/provider-error.js.map +1 -0
  481. package/dist/providers/provider-generations.d.ts +99 -0
  482. package/dist/providers/provider-generations.d.ts.map +1 -0
  483. package/dist/providers/provider-generations.js +71 -0
  484. package/dist/providers/provider-generations.js.map +1 -0
  485. package/dist/providers/provider-queue.d.ts +62 -0
  486. package/dist/providers/provider-queue.d.ts.map +1 -0
  487. package/dist/providers/provider-queue.js +28 -0
  488. package/dist/providers/provider-queue.js.map +1 -0
  489. package/dist/providers/provider-registry.d.ts +33 -14
  490. package/dist/providers/provider-registry.d.ts.map +1 -1
  491. package/dist/providers/provider-registry.js +85 -68
  492. package/dist/providers/provider-registry.js.map +1 -1
  493. package/dist/providers/provider-request-log.d.ts +53 -0
  494. package/dist/providers/provider-request-log.d.ts.map +1 -0
  495. package/dist/providers/provider-request-log.js +168 -0
  496. package/dist/providers/provider-request-log.js.map +1 -0
  497. package/dist/providers/provider-session.d.ts +3 -0
  498. package/dist/providers/provider-session.d.ts.map +1 -0
  499. package/dist/providers/provider-session.js +10 -0
  500. package/dist/providers/provider-session.js.map +1 -0
  501. package/dist/providers/provider-transport.d.ts +11 -0
  502. package/dist/providers/provider-transport.d.ts.map +1 -0
  503. package/dist/providers/provider-transport.js +11 -0
  504. package/dist/providers/provider-transport.js.map +1 -0
  505. package/dist/providers/python-provider.d.ts +26 -13
  506. package/dist/providers/python-provider.d.ts.map +1 -1
  507. package/dist/providers/python-provider.js +204 -25
  508. package/dist/providers/python-provider.js.map +1 -1
  509. package/dist/providers/replicate-provider.d.ts +91 -8
  510. package/dist/providers/replicate-provider.d.ts.map +1 -1
  511. package/dist/providers/replicate-provider.js +823 -65
  512. package/dist/providers/replicate-provider.js.map +1 -1
  513. package/dist/providers/replicate-retry.d.ts +30 -0
  514. package/dist/providers/replicate-retry.d.ts.map +1 -0
  515. package/dist/providers/replicate-retry.js +97 -0
  516. package/dist/providers/replicate-retry.js.map +1 -0
  517. package/dist/providers/requesty-provider.d.ts +30 -0
  518. package/dist/providers/requesty-provider.d.ts.map +1 -0
  519. package/dist/providers/requesty-provider.js +87 -0
  520. package/dist/providers/requesty-provider.js.map +1 -0
  521. package/dist/providers/responses-api.d.ts +27 -0
  522. package/dist/providers/responses-api.d.ts.map +1 -0
  523. package/dist/providers/responses-api.js +297 -0
  524. package/dist/providers/responses-api.js.map +1 -0
  525. package/dist/providers/reve-provider.d.ts +46 -0
  526. package/dist/providers/reve-provider.d.ts.map +1 -0
  527. package/dist/providers/reve-provider.js +165 -0
  528. package/dist/providers/reve-provider.js.map +1 -0
  529. package/dist/providers/rodin-provider.d.ts +25 -2
  530. package/dist/providers/rodin-provider.d.ts.map +1 -1
  531. package/dist/providers/rodin-provider.js +95 -51
  532. package/dist/providers/rodin-provider.js.map +1 -1
  533. package/dist/providers/safe-url.d.ts +70 -0
  534. package/dist/providers/safe-url.d.ts.map +1 -0
  535. package/dist/providers/safe-url.js +277 -0
  536. package/dist/providers/safe-url.js.map +1 -0
  537. package/dist/providers/scripted-provider.d.ts +9 -0
  538. package/dist/providers/scripted-provider.d.ts.map +1 -1
  539. package/dist/providers/scripted-provider.js +86 -10
  540. package/dist/providers/scripted-provider.js.map +1 -1
  541. package/dist/providers/structured-output.d.ts +42 -0
  542. package/dist/providers/structured-output.d.ts.map +1 -0
  543. package/dist/providers/structured-output.js +83 -0
  544. package/dist/providers/structured-output.js.map +1 -0
  545. package/dist/providers/together-operations.d.ts +27 -0
  546. package/dist/providers/together-operations.d.ts.map +1 -0
  547. package/dist/providers/together-operations.js +95 -0
  548. package/dist/providers/together-operations.js.map +1 -0
  549. package/dist/providers/together-provider.d.ts +18 -18
  550. package/dist/providers/together-provider.d.ts.map +1 -1
  551. package/dist/providers/together-provider.js +140 -367
  552. package/dist/providers/together-provider.js.map +1 -1
  553. package/dist/providers/topaz-provider.d.ts +45 -0
  554. package/dist/providers/topaz-provider.d.ts.map +1 -0
  555. package/dist/providers/topaz-provider.js +244 -0
  556. package/dist/providers/topaz-provider.js.map +1 -0
  557. package/dist/providers/types.d.ts +641 -4
  558. package/dist/providers/types.d.ts.map +1 -1
  559. package/dist/providers/types.js +81 -1
  560. package/dist/providers/types.js.map +1 -1
  561. package/dist/providers/useapi-provider.d.ts +28 -0
  562. package/dist/providers/useapi-provider.d.ts.map +1 -0
  563. package/dist/providers/useapi-provider.js +274 -0
  564. package/dist/providers/useapi-provider.js.map +1 -0
  565. package/dist/providers/video-duration.d.ts +6 -0
  566. package/dist/providers/video-duration.d.ts.map +1 -0
  567. package/dist/providers/video-duration.js +63 -0
  568. package/dist/providers/video-duration.js.map +1 -0
  569. package/dist/providers/video-frame-fallback.d.ts +39 -0
  570. package/dist/providers/video-frame-fallback.d.ts.map +1 -0
  571. package/dist/providers/video-frame-fallback.js +155 -0
  572. package/dist/providers/video-frame-fallback.js.map +1 -0
  573. package/dist/providers/video-frames.d.ts +61 -0
  574. package/dist/providers/video-frames.d.ts.map +1 -0
  575. package/dist/providers/video-frames.js +208 -0
  576. package/dist/providers/video-frames.js.map +1 -0
  577. package/dist/providers/video-mime.d.ts +14 -0
  578. package/dist/providers/video-mime.d.ts.map +1 -0
  579. package/dist/providers/video-mime.js +44 -0
  580. package/dist/providers/video-mime.js.map +1 -0
  581. package/dist/providers/video-to-audio.d.ts +34 -0
  582. package/dist/providers/video-to-audio.d.ts.map +1 -0
  583. package/dist/providers/video-to-audio.js +62 -0
  584. package/dist/providers/video-to-audio.js.map +1 -0
  585. package/dist/providers/vllm-provider.d.ts +20 -8
  586. package/dist/providers/vllm-provider.d.ts.map +1 -1
  587. package/dist/providers/vllm-provider.js +44 -23
  588. package/dist/providers/vllm-provider.js.map +1 -1
  589. package/dist/providers/voyage-provider.d.ts +12 -3
  590. package/dist/providers/voyage-provider.d.ts.map +1 -1
  591. package/dist/providers/voyage-provider.js +21 -7
  592. package/dist/providers/voyage-provider.js.map +1 -1
  593. package/dist/providers/xai-provider.d.ts +56 -13
  594. package/dist/providers/xai-provider.d.ts.map +1 -1
  595. package/dist/providers/xai-provider.js +307 -22
  596. package/dist/providers/xai-provider.js.map +1 -1
  597. package/dist/python-bridge-base.d.ts +358 -0
  598. package/dist/python-bridge-base.d.ts.map +1 -0
  599. package/dist/python-bridge-base.js +1557 -0
  600. package/dist/python-bridge-base.js.map +1 -0
  601. package/dist/python-bridge-codec.d.ts +28 -0
  602. package/dist/python-bridge-codec.d.ts.map +1 -0
  603. package/dist/python-bridge-codec.js +39 -0
  604. package/dist/python-bridge-codec.js.map +1 -0
  605. package/dist/python-bridge-factory.d.ts +52 -0
  606. package/dist/python-bridge-factory.d.ts.map +1 -0
  607. package/dist/python-bridge-factory.js +69 -0
  608. package/dist/python-bridge-factory.js.map +1 -0
  609. package/dist/python-bridge-framing.d.ts +68 -0
  610. package/dist/python-bridge-framing.d.ts.map +1 -0
  611. package/dist/python-bridge-framing.js +91 -0
  612. package/dist/python-bridge-framing.js.map +1 -0
  613. package/dist/python-bridge-types.d.ts +545 -2
  614. package/dist/python-bridge-types.d.ts.map +1 -1
  615. package/dist/python-bridge-types.js +49 -1
  616. package/dist/python-bridge-types.js.map +1 -1
  617. package/dist/python-graph-resolver.d.ts +57 -0
  618. package/dist/python-graph-resolver.d.ts.map +1 -0
  619. package/dist/python-graph-resolver.js +79 -0
  620. package/dist/python-graph-resolver.js.map +1 -0
  621. package/dist/python-node-executor.d.ts +36 -4
  622. package/dist/python-node-executor.d.ts.map +1 -1
  623. package/dist/python-node-executor.js +177 -86
  624. package/dist/python-node-executor.js.map +1 -1
  625. package/dist/python-stdio-bridge.d.ts +18 -37
  626. package/dist/python-stdio-bridge.d.ts.map +1 -1
  627. package/dist/python-stdio-bridge.js +148 -475
  628. package/dist/python-stdio-bridge.js.map +1 -1
  629. package/dist/python-websocket-bridge.d.ts +140 -0
  630. package/dist/python-websocket-bridge.d.ts.map +1 -0
  631. package/dist/python-websocket-bridge.js +561 -0
  632. package/dist/python-websocket-bridge.js.map +1 -0
  633. package/dist/python-worker-stderr.d.ts +4 -0
  634. package/dist/python-worker-stderr.d.ts.map +1 -0
  635. package/dist/python-worker-stderr.js +24 -0
  636. package/dist/python-worker-stderr.js.map +1 -0
  637. package/dist/recommended-models.d.ts +2 -2
  638. package/dist/recommended-models.d.ts.map +1 -1
  639. package/dist/recommended-models.js +44 -4
  640. package/dist/recommended-models.js.map +1 -1
  641. package/dist/recoverable-node-error.d.ts +31 -0
  642. package/dist/recoverable-node-error.d.ts.map +1 -0
  643. package/dist/recoverable-node-error.js +37 -0
  644. package/dist/recoverable-node-error.js.map +1 -0
  645. package/dist/redact-params.d.ts +13 -0
  646. package/dist/redact-params.d.ts.map +1 -0
  647. package/dist/redact-params.js +57 -0
  648. package/dist/redact-params.js.map +1 -0
  649. package/dist/run-context.d.ts +20 -0
  650. package/dist/run-context.d.ts.map +1 -0
  651. package/dist/run-context.js +18 -0
  652. package/dist/run-context.js.map +1 -0
  653. package/dist/run-trace-context.d.ts +30 -0
  654. package/dist/run-trace-context.d.ts.map +1 -0
  655. package/dist/run-trace-context.js +80 -0
  656. package/dist/run-trace-context.js.map +1 -0
  657. package/dist/run-trace-processor.d.ts +65 -0
  658. package/dist/run-trace-processor.d.ts.map +1 -0
  659. package/dist/run-trace-processor.js +417 -0
  660. package/dist/run-trace-processor.js.map +1 -0
  661. package/dist/run-trace-serialization.d.ts +5 -0
  662. package/dist/run-trace-serialization.d.ts.map +1 -0
  663. package/dist/run-trace-serialization.js +113 -0
  664. package/dist/run-trace-serialization.js.map +1 -0
  665. package/dist/sandbox-module-catalog.d.ts +43 -0
  666. package/dist/sandbox-module-catalog.d.ts.map +1 -0
  667. package/dist/sandbox-module-catalog.js +25 -0
  668. package/dist/sandbox-module-catalog.js.map +1 -0
  669. package/dist/storage-workspace.d.ts +62 -0
  670. package/dist/storage-workspace.d.ts.map +1 -0
  671. package/dist/storage-workspace.js +441 -0
  672. package/dist/storage-workspace.js.map +1 -0
  673. package/dist/swappable-python-bridge.d.ts +83 -0
  674. package/dist/swappable-python-bridge.d.ts.map +1 -0
  675. package/dist/swappable-python-bridge.js +246 -0
  676. package/dist/swappable-python-bridge.js.map +1 -0
  677. package/dist/telemetry.d.ts +16 -3
  678. package/dist/telemetry.d.ts.map +1 -1
  679. package/dist/telemetry.js +76 -20
  680. package/dist/telemetry.js.map +1 -1
  681. package/dist/testing.d.ts +81 -0
  682. package/dist/testing.d.ts.map +1 -0
  683. package/dist/testing.js +130 -0
  684. package/dist/testing.js.map +1 -0
  685. package/dist/token-counter.d.ts +30 -0
  686. package/dist/token-counter.d.ts.map +1 -0
  687. package/dist/token-counter.js +156 -0
  688. package/dist/token-counter.js.map +1 -0
  689. package/dist/trace-exporters.d.ts +11 -28
  690. package/dist/trace-exporters.d.ts.map +1 -1
  691. package/dist/trace-exporters.js +69 -22
  692. package/dist/trace-exporters.js.map +1 -1
  693. package/dist/tracing-helpers.d.ts +60 -26
  694. package/dist/tracing-helpers.d.ts.map +1 -1
  695. package/dist/tracing-helpers.js +100 -25
  696. package/dist/tracing-helpers.js.map +1 -1
  697. package/dist/trim-video-window.d.ts +8 -0
  698. package/dist/trim-video-window.d.ts.map +1 -0
  699. package/dist/trim-video-window.js +50 -0
  700. package/dist/trim-video-window.js.map +1 -0
  701. package/dist/turn-budget.d.ts +278 -0
  702. package/dist/turn-budget.d.ts.map +1 -0
  703. package/dist/turn-budget.js +365 -0
  704. package/dist/turn-budget.js.map +1 -0
  705. package/dist/variable-channel.d.ts +48 -0
  706. package/dist/variable-channel.d.ts.map +1 -0
  707. package/dist/variable-channel.js +110 -0
  708. package/dist/variable-channel.js.map +1 -0
  709. package/dist/workspace.d.ts +119 -0
  710. package/dist/workspace.d.ts.map +1 -0
  711. package/dist/workspace.js +112 -0
  712. package/dist/workspace.js.map +1 -0
  713. package/package.json +121 -19
@@ -1,54 +1,122 @@
1
- import OpenAI from "openai";
2
1
  import { createLogger } from "@nodetool-ai/config";
3
- import { OpenAIProvider } from "./openai-provider.js";
2
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
3
+ import { fetchWithRetry, pollUntilTerminal } from "./http-transport.js";
4
+ import { bytesToImageDataUri } from "./image-mime.js";
5
+ import { sniffAudioMimeOrNull } from "./audio-mime.js";
6
+ import { isString } from "@nodetool-ai/protocol";
7
+ // Stryker disable next-line StringLiteral: logger name is diagnostic, not asserted.
4
8
  const log = createLogger("nodetool.runtime.providers.openrouter");
9
+ const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
10
+ /** Attribution headers sent with every OpenRouter request. */
11
+ const OPENROUTER_HEADERS = {
12
+ // Stryker disable next-line StringLiteral
13
+ "HTTP-Referer": "https://github.com/nodetool-ai/nodetool-core",
14
+ // Stryker disable next-line StringLiteral
15
+ "X-Title": "NodeTool"
16
+ };
5
17
  /** Known image-capable models on OpenRouter. */
6
18
  const OPENROUTER_IMAGE_MODELS = [
7
19
  {
8
- id: "openai/dall-e-3",
9
- name: "DALL-E 3",
20
+ id: "stabilityai/stable-diffusion-xl",
21
+ name: "Stable Diffusion XL",
10
22
  provider: "openrouter",
11
23
  supportedTasks: ["text_to_image"]
12
24
  },
13
25
  {
14
- id: "openai/dall-e-2",
15
- name: "DALL-E 2",
26
+ id: "google/gemini-2.5-flash-image",
27
+ name: "Gemini 2.5 Flash Image",
16
28
  provider: "openrouter",
17
- supportedTasks: ["text_to_image"]
18
- },
19
- {
20
- id: "stabilityai/stable-diffusion-xl",
21
- name: "Stable Diffusion XL",
22
- provider: "openrouter",
23
- supportedTasks: ["text_to_image"]
29
+ supportedTasks: ["text_to_image", "image_to_image"]
24
30
  }
25
31
  ];
26
- export class OpenRouterProvider extends OpenAIProvider {
32
+ const VIDEO_POLL_INTERVAL_MS = 5000;
33
+ /** Default polling window when the caller sets no timeout. */
34
+ const VIDEO_DEFAULT_TIMEOUT_SECONDS = 20 * 60;
35
+ function stringList(value) {
36
+ return Array.isArray(value)
37
+ ? value.filter((v) => typeof v === "string")
38
+ : [];
39
+ }
40
+ function numberList(value) {
41
+ return Array.isArray(value)
42
+ ? value.filter((v) => typeof v === "number")
43
+ : [];
44
+ }
45
+ /** `input_audio.format` values OpenRouter accepts, by sniffed MIME type. */
46
+ const AUDIO_FORMAT_BY_MIME = {
47
+ "audio/wav": "wav",
48
+ "audio/mpeg": "mp3",
49
+ "audio/ogg": "ogg",
50
+ "audio/flac": "flac"
51
+ };
52
+ function architectureOf(row) {
53
+ const architecture = row.architecture;
54
+ return architecture && typeof architecture === "object"
55
+ ? architecture
56
+ : {};
57
+ }
58
+ /** The enum values of one `supported_parameters` entry, or `[]`. */
59
+ function parameterValues(row, name) {
60
+ const parameters = row.supported_parameters;
61
+ if (!parameters || typeof parameters !== "object")
62
+ return [];
63
+ const entry = parameters[name];
64
+ if (!entry || typeof entry !== "object")
65
+ return [];
66
+ return stringList(entry.values);
67
+ }
68
+ function withNegativePrompt(prompt, negativePrompt) {
69
+ return negativePrompt
70
+ ? `${prompt.trim()}\n\nDo not include: ${negativePrompt.trim()}`
71
+ : prompt;
72
+ }
73
+ /** The message OpenRouter puts in `error` (a string or `{ message }`). */
74
+ function errorText(body) {
75
+ const error = body.error;
76
+ if (typeof error === "string")
77
+ return error;
78
+ if (error && typeof error === "object") {
79
+ const message = error.message;
80
+ if (typeof message === "string")
81
+ return message;
82
+ }
83
+ return JSON.stringify(body).slice(0, 500);
84
+ }
85
+ function reportedCost(body) {
86
+ const usage = body.usage;
87
+ if (!usage || typeof usage !== "object")
88
+ return undefined;
89
+ const cost = usage.cost;
90
+ return typeof cost === "number" ? cost : undefined;
91
+ }
92
+ export class OpenRouterProvider extends OpenAICompatProvider {
93
+ declaredCapabilities() {
94
+ return [
95
+ "text_to_image",
96
+ "image_to_image",
97
+ "text_to_video",
98
+ "image_to_video",
99
+ "text_to_speech",
100
+ "automatic_speech_recognition",
101
+ "generate_embedding"
102
+ ];
103
+ }
27
104
  static requiredSecrets() {
28
105
  return ["OPENROUTER_API_KEY"];
29
106
  }
30
- _routerFetch;
31
107
  constructor(secrets, options = {}) {
32
108
  const apiKey = secrets.OPENROUTER_API_KEY;
33
109
  if (!apiKey) {
34
110
  throw new Error("OPENROUTER_API_KEY is required");
35
111
  }
36
- const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
37
- super({ OPENAI_API_KEY: apiKey }, {
38
- client: options.client,
39
- clientFactory: options.clientFactory ??
40
- ((key) => new OpenAI({
41
- apiKey: key,
42
- baseURL: "https://openrouter.ai/api/v1",
43
- defaultHeaders: {
44
- "HTTP-Referer": "https://github.com/nodetool-ai/nodetool-core",
45
- "X-Title": "NodeTool"
46
- }
47
- })),
48
- fetchFn
49
- });
50
- this.provider = "openrouter";
51
- this._routerFetch = fetchFn;
112
+ super({
113
+ providerId: "openrouter",
114
+ apiKey,
115
+ baseURL: OPENROUTER_BASE_URL,
116
+ // Attribution headers ride every chat request (and the SDK fallback);
117
+ // the same header values are asserted on the /models fetch below.
118
+ defaultHeaders: OPENROUTER_HEADERS
119
+ }, options);
52
120
  }
53
121
  getContainerEnv() {
54
122
  return { OPENROUTER_API_KEY: this.apiKey };
@@ -73,7 +141,7 @@ export class OpenRouterProvider extends OpenAIProvider {
73
141
  ? {
74
142
  ...msg,
75
143
  role: "user",
76
- content: `Instructions: ${typeof msg.content === "string" ? msg.content : ""}`
144
+ content: `Instructions: ${isString(msg.content) ? msg.content : ""}`
77
145
  }
78
146
  : msg);
79
147
  }
@@ -86,6 +154,19 @@ export class OpenRouterProvider extends OpenAIProvider {
86
154
  yield* super.generateMessages({ ...args, messages: convertedMessages });
87
155
  }
88
156
  async textToImage(params) {
157
+ const size = this.resolveImageSize(params.width ?? undefined, params.height ?? undefined);
158
+ return this.generateImage(params, [], size);
159
+ }
160
+ /**
161
+ * Edit or compose from source images. OpenRouter's image API takes them as
162
+ * `input_references`; entity reference images arrive here already appended
163
+ * to `images` by the base provider.
164
+ */
165
+ async imageToImage(images, params) {
166
+ const size = this.resolveImageSize(params.targetWidth ?? undefined, params.targetHeight ?? undefined);
167
+ return this.generateImage(params, images, size);
168
+ }
169
+ async generateImage(params, inputs, size) {
89
170
  if (!params.prompt) {
90
171
  throw new Error("The input prompt cannot be empty.");
91
172
  }
@@ -96,12 +177,28 @@ export class OpenRouterProvider extends OpenAIProvider {
96
177
  model: params.model.id,
97
178
  prompt
98
179
  };
99
- const size = this.resolveImageSize(params.width ?? undefined, params.height ?? undefined);
100
180
  if (size)
101
181
  request.size = size;
102
182
  if (params.quality)
103
183
  request.quality = params.quality;
104
- log.debug("OpenRouter textToImage", { model: params.model.id });
184
+ // Gemini image models ignore `size`; OpenRouter reads the shape from here.
185
+ if (params.aspectRatio)
186
+ request.aspect_ratio = params.aspectRatio;
187
+ if (params.resolution)
188
+ request.resolution = params.resolution;
189
+ if (inputs.length > 0) {
190
+ request.input_references = inputs.map((bytes) => ({
191
+ type: "image_url",
192
+ image_url: { url: bytesToImageDataUri(bytes) }
193
+ }));
194
+ }
195
+ // Stryker disable next-line StringLiteral,ObjectLiteral: diagnostic log, not asserted.
196
+ log.debug("OpenRouter image generation", {
197
+ model: params.model.id,
198
+ inputs: inputs.length
199
+ });
200
+ // SAFETY: a dictionary request against the OpenAI SDK's closed image
201
+ // params; OpenRouter is driven through the same client.
105
202
  const response = (await this.getClient().images.generate(request));
106
203
  const item = response.data?.[0];
107
204
  if (!item) {
@@ -111,7 +208,7 @@ export class OpenRouterProvider extends OpenAIProvider {
111
208
  return Uint8Array.from(Buffer.from(item.b64_json, "base64"));
112
209
  }
113
210
  if (item.url) {
114
- const fetchResponse = await this._routerFetch(item.url);
211
+ const fetchResponse = await this.compatFetch(item.url);
115
212
  if (!fetchResponse.ok) {
116
213
  throw new Error(`Image fetch failed: ${fetchResponse.status}`);
117
214
  }
@@ -119,29 +216,264 @@ export class OpenRouterProvider extends OpenAIProvider {
119
216
  }
120
217
  throw new Error("OpenRouter image generation returned no image data.");
121
218
  }
219
+ /**
220
+ * Video models are listed under `/videos/models`, not `/models`. A model
221
+ * without durations (an editor) or with an upscale factor (an upscaler)
222
+ * cannot render from a prompt, so it is left out.
223
+ */
224
+ async getAvailableVideoModels() {
225
+ const rows = await this.fetchCompatModelRows(`${OPENROUTER_BASE_URL}/videos/models`);
226
+ const models = [];
227
+ for (const row of rows) {
228
+ const durations = numberList(row.supported_durations);
229
+ if (durations.length === 0 || row.upscale_factor != null)
230
+ continue;
231
+ const supportedTasks = ["text_to_video"];
232
+ if (stringList(row.supported_frame_images).includes("first_frame")) {
233
+ supportedTasks.push("image_to_video");
234
+ }
235
+ const model = {
236
+ id: row.id,
237
+ name: typeof row.name === "string" ? row.name : row.id,
238
+ provider: "openrouter",
239
+ supportedTasks,
240
+ durations
241
+ };
242
+ const resolutions = stringList(row.supported_resolutions);
243
+ if (resolutions.length > 0)
244
+ model.resolutions = resolutions;
245
+ const aspectRatios = stringList(row.supported_aspect_ratios);
246
+ if (aspectRatios.length > 0)
247
+ model.aspectRatios = aspectRatios;
248
+ models.push(model);
249
+ }
250
+ return models;
251
+ }
252
+ async textToVideo(params) {
253
+ if (!params.prompt) {
254
+ throw new Error("The input prompt cannot be empty.");
255
+ }
256
+ return this.generateVideo(params, {});
257
+ }
258
+ /**
259
+ * Animate a start frame. OpenRouter takes it as a data URI in
260
+ * `frame_images`, plus an optional `last_frame` for interpolation.
261
+ */
262
+ async imageToVideo(image, params) {
263
+ if (image.length === 0) {
264
+ throw new Error("imageToVideo requires a start frame");
265
+ }
266
+ const frames = [
267
+ {
268
+ type: "image_url",
269
+ image_url: { url: bytesToImageDataUri(image) },
270
+ frame_type: "first_frame"
271
+ }
272
+ ];
273
+ if (params.endImage && params.endImage.length > 0) {
274
+ frames.push({
275
+ type: "image_url",
276
+ image_url: { url: bytesToImageDataUri(params.endImage) },
277
+ frame_type: "last_frame"
278
+ });
279
+ }
280
+ return this.generateVideo(params, { frame_images: frames });
281
+ }
282
+ /**
283
+ * Image models come from `/images/models`, with per-model aspect ratio and
284
+ * resolution enums. The built-in list is the fallback when the listing is
285
+ * unreachable, so the picker is never empty.
286
+ */
122
287
  async getAvailableImageModels() {
123
- return OPENROUTER_IMAGE_MODELS;
288
+ const rows = await this.fetchCompatModelRows(`${OPENROUTER_BASE_URL}/images/models`);
289
+ if (rows.length === 0)
290
+ return OPENROUTER_IMAGE_MODELS;
291
+ return rows.map((row) => {
292
+ const supportedTasks = ["text_to_image"];
293
+ if (stringList(architectureOf(row).input_modalities).includes("image")) {
294
+ supportedTasks.push("image_to_image");
295
+ }
296
+ const model = {
297
+ id: row.id,
298
+ name: typeof row.name === "string" ? row.name : row.id,
299
+ provider: "openrouter",
300
+ supportedTasks
301
+ };
302
+ const aspectRatios = parameterValues(row, "aspect_ratio");
303
+ if (aspectRatios.length > 0)
304
+ model.aspectRatios = aspectRatios;
305
+ const resolutions = parameterValues(row, "resolution");
306
+ if (resolutions.length > 0)
307
+ model.resolutions = resolutions;
308
+ return model;
309
+ });
124
310
  }
125
311
  async getAvailableLanguageModels() {
126
- const response = await this._routerFetch("https://openrouter.ai/api/v1/models", {
127
- headers: {
128
- Authorization: `Bearer ${this.apiKey}`,
129
- "HTTP-Referer": "https://github.com/nodetool-ai/nodetool-core",
130
- "X-Title": "NodeTool"
131
- }
312
+ return this.listCompatModels();
313
+ }
314
+ /** Speech models are `/models` rows whose output modality is `speech`. */
315
+ async getAvailableTTSModels() {
316
+ const rows = await this.fetchCompatModelRows(`${OPENROUTER_BASE_URL}/models?output_modalities=speech`);
317
+ return rows.map((row) => {
318
+ const model = {
319
+ id: row.id,
320
+ name: typeof row.name === "string" ? row.name : row.id,
321
+ provider: "openrouter"
322
+ };
323
+ const voices = stringList(row.supported_voices);
324
+ if (voices.length > 0)
325
+ model.voices = voices;
326
+ return model;
132
327
  });
133
- if (!response.ok) {
134
- return [];
135
- }
136
- const payload = (await response.json());
137
- const rows = payload.data ?? [];
138
- return rows
139
- .filter((row) => typeof row.id === "string" && row.id.length > 0)
140
- .map((row) => ({
328
+ }
329
+ /** Transcription models are `/models` rows with output modality `transcription`. */
330
+ async getAvailableASRModels() {
331
+ const rows = await this.fetchCompatModelRows(`${OPENROUTER_BASE_URL}/models?output_modalities=transcription`);
332
+ return rows.map((row) => ({
141
333
  id: row.id,
142
- name: row.name ?? row.id,
334
+ name: typeof row.name === "string" ? row.name : row.id,
143
335
  provider: "openrouter"
144
336
  }));
145
337
  }
338
+ async getAvailableEmbeddingModels() {
339
+ const rows = await this.fetchCompatModelRows(`${OPENROUTER_BASE_URL}/embeddings/models`);
340
+ return rows.map((row) => ({
341
+ id: row.id,
342
+ name: typeof row.name === "string" ? row.name : row.id,
343
+ provider: "openrouter"
344
+ }));
345
+ }
346
+ /**
347
+ * OpenRouter transcribes from a JSON body with base64 `input_audio`, not the
348
+ * multipart upload the inherited OpenAI path sends. `prompt` has no
349
+ * OpenRouter field and is ignored.
350
+ */
351
+ async automaticSpeechRecognition(args) {
352
+ if (!args.audio || args.audio.length === 0) {
353
+ throw new Error("audio must not be empty");
354
+ }
355
+ const mime = sniffAudioMimeOrNull(args.audio);
356
+ const request = {
357
+ model: args.model,
358
+ input_audio: {
359
+ data: Buffer.from(args.audio).toString("base64"),
360
+ format: (mime && AUDIO_FORMAT_BY_MIME[mime]) ?? "mp3"
361
+ }
362
+ };
363
+ if (args.language)
364
+ request.language = args.language;
365
+ if (args.temperature != null)
366
+ request.temperature = args.temperature;
367
+ if (args.word_timestamps) {
368
+ request.response_format = "verbose_json";
369
+ request.timestamp_granularities = ["word"];
370
+ }
371
+ const res = await this.compatFetch(`${OPENROUTER_BASE_URL}/audio/transcriptions`, {
372
+ method: "POST",
373
+ headers: this.openRouterHeaders(),
374
+ body: JSON.stringify(request)
375
+ });
376
+ if (!res.ok) {
377
+ throw new Error(`OpenRouter transcription failed: ${res.status} ${(await res.text()).slice(0, 500)}`);
378
+ }
379
+ const body = (await res.json());
380
+ const usage = body.usage;
381
+ if (typeof usage?.seconds === "number") {
382
+ this.trackUsage(args.model, { durationSeconds: usage.seconds });
383
+ }
384
+ const text = typeof body.text === "string" ? body.text : "";
385
+ if (!args.word_timestamps)
386
+ return { text };
387
+ const chunks = [];
388
+ for (const word of Array.isArray(body.words) ? body.words : []) {
389
+ if (word &&
390
+ typeof word.word === "string" &&
391
+ typeof word.start === "number" &&
392
+ typeof word.end === "number") {
393
+ chunks.push({ timestamp: [word.start, word.end], text: word.word });
394
+ }
395
+ }
396
+ return chunks.length > 0 ? { text, chunks } : { text };
397
+ }
398
+ openRouterHeaders() {
399
+ return {
400
+ Authorization: `Bearer ${this.apiKey}`,
401
+ "Content-Type": "application/json",
402
+ ...OPENROUTER_HEADERS
403
+ };
404
+ }
405
+ /**
406
+ * Submit to `POST /videos`, poll the job, and download its first output.
407
+ * The status and content URLs are built from the job id rather than taken
408
+ * from the response, so the API key is only ever sent to OpenRouter.
409
+ */
410
+ async generateVideo(params, extra) {
411
+ const request = {
412
+ model: params.model.id,
413
+ prompt: withNegativePrompt(params.prompt ?? "", params.negativePrompt),
414
+ ...extra
415
+ };
416
+ if (params.durationSeconds) {
417
+ request.duration = Math.round(params.durationSeconds);
418
+ }
419
+ if (params.resolution)
420
+ request.resolution = params.resolution;
421
+ if (params.aspectRatio)
422
+ request.aspect_ratio = params.aspectRatio;
423
+ if (params.seed != null && params.seed >= 0)
424
+ request.seed = params.seed;
425
+ const timeoutSeconds = params.timeoutSeconds && params.timeoutSeconds > 0
426
+ ? params.timeoutSeconds
427
+ : VIDEO_DEFAULT_TIMEOUT_SECONDS;
428
+ const timeout = AbortSignal.timeout(timeoutSeconds * 1000);
429
+ const signal = params.signal
430
+ ? AbortSignal.any([params.signal, timeout])
431
+ : timeout;
432
+ // Stryker disable next-line StringLiteral,ObjectLiteral: diagnostic log, not asserted.
433
+ log.debug("OpenRouter video submit", { model: params.model.id });
434
+ const submit = await this.compatFetch(`${OPENROUTER_BASE_URL}/videos`, {
435
+ method: "POST",
436
+ headers: this.openRouterHeaders(),
437
+ body: JSON.stringify(request),
438
+ signal
439
+ });
440
+ if (!submit.ok) {
441
+ throw new Error(`OpenRouter video submit failed: ${submit.status} ${(await submit.text()).slice(0, 500)}`);
442
+ }
443
+ const submitted = (await submit.json());
444
+ const jobId = submitted.id;
445
+ if (typeof jobId !== "string" || jobId.length === 0) {
446
+ throw new Error(`OpenRouter video submit returned no job id: ${JSON.stringify(submitted).slice(0, 500)}`);
447
+ }
448
+ const jobUrl = `${OPENROUTER_BASE_URL}/videos/${encodeURIComponent(jobId)}`;
449
+ const done = await pollUntilTerminal(async () => {
450
+ // The job is already submitted and billed: a 429 or a gateway 5xx on
451
+ // the status GET must back off, not throw the job away.
452
+ const res = await fetchWithRetry(jobUrl, { headers: this.openRouterHeaders(), signal }, { fetchImpl: this.compatFetch });
453
+ if (!res.ok) {
454
+ throw new Error(`OpenRouter video status failed: ${res.status} ${(await res.text()).slice(0, 500)}`);
455
+ }
456
+ return (await res.json());
457
+ }, {
458
+ intervalMs: VIDEO_POLL_INTERVAL_MS,
459
+ maxAttempts: Math.max(1, Math.ceil((timeoutSeconds * 1000) / VIDEO_POLL_INTERVAL_MS)),
460
+ signal,
461
+ onFailure: (body) => new Error(`OpenRouter video job ${jobId} failed: ${errorText(body)}`),
462
+ onTimeout: () => new Error(`OpenRouter video job ${jobId} did not finish within ${timeoutSeconds}s`)
463
+ });
464
+ const cost = reportedCost(done);
465
+ if (cost !== undefined) {
466
+ // Stryker disable next-line StringLiteral,ObjectLiteral: diagnostic log, not asserted.
467
+ log.info("OpenRouter video cost", { model: params.model.id, cost });
468
+ }
469
+ const content = await this.compatFetch(`${jobUrl}/content?index=0`, {
470
+ headers: this.openRouterHeaders(),
471
+ signal
472
+ });
473
+ if (!content.ok) {
474
+ throw new Error(`OpenRouter video download failed: ${content.status} ${(await content.text()).slice(0, 500)}`);
475
+ }
476
+ return new Uint8Array(await content.arrayBuffer());
477
+ }
146
478
  }
147
479
  //# sourceMappingURL=openrouter-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter-provider.js","sourceRoot":"","sources":["../../src/providers/openrouter-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter-provider.js","sourceRoot":"","sources":["../../src/providers/openrouter-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Turns a thrown provider error into the `provider_call_failed` message the
3
+ * UI reports with.
4
+ *
5
+ * A user who hits a 429 sees prose. What a maintainer needs is the provider,
6
+ * the model, the status, the request id and the payload that was sent — and
7
+ * asking the user to reconstruct that from a toast is how bug reports arrive
8
+ * useless. {@link buildProviderCallFailure} assembles it once, at the same
9
+ * place {@link logProviderRequestFailure} logs it, so every surface reports
10
+ * the same record.
11
+ */
12
+ import type { ProviderCallFailed } from "@nodetool-ai/protocol";
13
+ /**
14
+ * Failure classes a surface can branch on. Derived from the status when there
15
+ * is one, otherwise from the error's `code`/`name`.
16
+ */
17
+ export type ProviderFailureKind = "auth" | "payment" | "not_found" | "rate_limit" | "timeout" | "server" | "network" | "client" | "unknown";
18
+ export declare function providerFailureKind(error: unknown): ProviderFailureKind;
19
+ /**
20
+ * Provider-side request id, under any of the names the SDKs use for it. It is
21
+ * what a provider's support asks for first, so it is worth digging out.
22
+ */
23
+ export declare function providerRequestId(error: unknown): string | null;
24
+ export interface ProviderCallFailureInput {
25
+ provider: string;
26
+ model?: string;
27
+ /** Provider method that threw (e.g. `generateMessages`, `textToImage`). */
28
+ operation: string;
29
+ /** The wire payload the provider recorded, when it recorded one. */
30
+ request?: unknown;
31
+ /** NodeTool-level args, reported when no wire payload exists. */
32
+ nodetoolArgs?: unknown;
33
+ error: unknown;
34
+ /** `Date.now()` when the call started, for the elapsed time. */
35
+ startedAt?: number;
36
+ }
37
+ /** The message a surface reports with. `null` for a caller cancellation. */
38
+ export declare function buildProviderCallFailure(input: ProviderCallFailureInput, now?: Date): ProviderCallFailed | null;
39
+ //# sourceMappingURL=provider-call-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-call-failure.d.ts","sourceRoot":"","sources":["../../src/providers/provider-call-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAYhE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,SAAS,GACT,WAAW,GACX,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAcd,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAsBvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkB/D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,EAC/B,GAAG,GAAE,IAAiB,GACrB,kBAAkB,GAAG,IAAI,CA8B3B"}