@nodetool-ai/runtime 0.7.0-rc.22 → 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,31 @@
1
+ /**
2
+ * Central expansion of {@link EntityReference}s attached to modality params.
3
+ *
4
+ * Consumers (nodes, the chat WebSocket, CLI) attach `entities` to generation
5
+ * params; {@link BaseProvider} calls {@link applyEntityReferences} on the call
6
+ * arguments before the concrete provider runs, so every provider gets the same
7
+ * behavior without knowing entities exist:
8
+ *
9
+ * - descriptors are appended to the prompt as a `Consistency references:`
10
+ * block — the same shape the Apply Entities node and the runtime's
11
+ * entity-mention expansion produce;
12
+ * - on image-editing methods, reference image bytes are appended to the
13
+ * source-image list after the caller's own images (multi-image providers
14
+ * use them as references; single-image providers ignore them), and each
15
+ * appended image's line names its 1-based position in the final list
16
+ * (`- Image 2 (Harbor): …`) so the model can tell which image is which;
17
+ * - the `entities` field is stripped so nested delegation (e.g. the base
18
+ * `imageToImages` fallback calling `imageToImage`) never applies twice.
19
+ */
20
+ import type { EntityReference } from "./types.js";
21
+ /** Append the entities' descriptors to a prompt as a consistency block. */
22
+ export declare const injectEntityDescriptors: (prompt: string, entities: EntityReference[]) => string;
23
+ /**
24
+ * Expand `params.entities` in a modality method's call arguments. Returns the
25
+ * original array untouched when the method doesn't take entities or none are
26
+ * attached; otherwise returns a new args array with the prompt expanded, the
27
+ * reference images appended for image and video edits, and `entities`
28
+ * stripped from the params.
29
+ */
30
+ export declare function applyEntityReferences(method: string, args: unknown[]): unknown[];
31
+ //# sourceMappingURL=entity-references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-references.d.ts","sourceRoot":"","sources":["../../src/providers/entity-references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,WAC1B,MAAM,YACJ,eAAe,EAAE,KAC1B,MAMA,CAAC;AAEJ;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EAAE,GACd,OAAO,EAAE,CAmDX"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Central expansion of {@link EntityReference}s attached to modality params.
3
+ *
4
+ * Consumers (nodes, the chat WebSocket, CLI) attach `entities` to generation
5
+ * params; {@link BaseProvider} calls {@link applyEntityReferences} on the call
6
+ * arguments before the concrete provider runs, so every provider gets the same
7
+ * behavior without knowing entities exist:
8
+ *
9
+ * - descriptors are appended to the prompt as a `Consistency references:`
10
+ * block — the same shape the Apply Entities node and the runtime's
11
+ * entity-mention expansion produce;
12
+ * - on image-editing methods, reference image bytes are appended to the
13
+ * source-image list after the caller's own images (multi-image providers
14
+ * use them as references; single-image providers ignore them), and each
15
+ * appended image's line names its 1-based position in the final list
16
+ * (`- Image 2 (Harbor): …`) so the model can tell which image is which;
17
+ * - the `entities` field is stripped so nested delegation (e.g. the base
18
+ * `imageToImages` fallback calling `imageToImage`) never applies twice.
19
+ */
20
+ /** Methods whose first argument is a `Uint8Array[]` that accepts references. */
21
+ const IMAGE_LIST_METHODS = new Set([
22
+ "imageToImage",
23
+ "imageToImages",
24
+ "inpaint",
25
+ "inpaintImages"
26
+ ]);
27
+ /**
28
+ * Position of the params argument per entity-bearing method. Video edits use
29
+ * separate reference images. Image-to-video keeps its source frame unchanged.
30
+ */
31
+ const PARAMS_INDEX = {
32
+ textToImage: 0,
33
+ textToImages: 0,
34
+ imageToImage: 1,
35
+ imageToImages: 1,
36
+ inpaint: 1,
37
+ inpaintImages: 1,
38
+ textToVideo: 0,
39
+ imageToVideo: 1,
40
+ referenceToVideo: 1,
41
+ videoToVideo: 1
42
+ };
43
+ const hasEntityParams = (value) => !!value &&
44
+ typeof value === "object" &&
45
+ Array.isArray(value.entities);
46
+ const appendConsistencyBlock = (prompt, lines) => {
47
+ if (lines.length === 0) {
48
+ return prompt;
49
+ }
50
+ const block = `Consistency references:\n${lines.join("\n")}`;
51
+ return prompt.trim().length > 0 ? `${prompt}\n\n${block}` : block;
52
+ };
53
+ /** Append the entities' descriptors to a prompt as a consistency block. */
54
+ export const injectEntityDescriptors = (prompt, entities) => appendConsistencyBlock(prompt, entities
55
+ .filter((e) => !!e.descriptor && e.descriptor.trim().length > 0)
56
+ .map((e) => `- ${e.name}: ${e.descriptor.trim()}`));
57
+ /**
58
+ * Expand `params.entities` in a modality method's call arguments. Returns the
59
+ * original array untouched when the method doesn't take entities or none are
60
+ * attached; otherwise returns a new args array with the prompt expanded, the
61
+ * reference images appended for image and video edits, and `entities`
62
+ * stripped from the params.
63
+ */
64
+ export function applyEntityReferences(method, args) {
65
+ const paramsIndex = PARAMS_INDEX[method];
66
+ if (paramsIndex === undefined)
67
+ return args;
68
+ const params = args[paramsIndex];
69
+ if (!hasEntityParams(params) || params.entities.length === 0)
70
+ return args;
71
+ const entities = params.entities;
72
+ const next = [...args];
73
+ let prompt;
74
+ if (IMAGE_LIST_METHODS.has(method)) {
75
+ // Appended reference images are attributed in the prompt by their 1-based
76
+ // position in the final image list, counting the caller's own images.
77
+ const images = Array.isArray(args[0]) ? args[0] : [];
78
+ const appended = [];
79
+ const lines = [];
80
+ for (const entity of entities) {
81
+ const image = entity.image instanceof Uint8Array && entity.image.length > 0
82
+ ? entity.image
83
+ : null;
84
+ const descriptor = entity.descriptor?.trim();
85
+ if (image) {
86
+ appended.push(image);
87
+ const position = images.length + appended.length;
88
+ lines.push(`- Image ${position} (${entity.name})${descriptor ? `: ${descriptor}` : ""}`);
89
+ }
90
+ else if (descriptor) {
91
+ lines.push(`- ${entity.name}: ${descriptor}`);
92
+ }
93
+ }
94
+ prompt = appendConsistencyBlock(params.prompt ?? "", lines);
95
+ if (appended.length > 0) {
96
+ next[0] = [...images, ...appended];
97
+ }
98
+ }
99
+ else {
100
+ prompt = injectEntityDescriptors(params.prompt ?? "", entities);
101
+ }
102
+ const nextParams = { ...params, prompt };
103
+ if (method === "videoToVideo") {
104
+ const images = entities.flatMap((entity) => entity.image instanceof Uint8Array && entity.image.length > 0 ? [entity.image] : []);
105
+ if (images.length) {
106
+ nextParams.referenceImages = [...(params.referenceImages ?? []), ...images];
107
+ }
108
+ }
109
+ delete nextParams.entities;
110
+ next[paramsIndex] = nextParams;
111
+ return next;
112
+ }
113
+ //# sourceMappingURL=entity-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-references.js","sourceRoot":"","sources":["../../src/providers/entity-references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { OpenAICompatProvider, type OpenAICompatProviderOptions } from "./openai-compat-provider.js";
2
+ import type { ImageModel, ImageToImageParams, ImageToVideoParams, LanguageModel, TextToImageParams, TextToVideoParams, VideoModel } from "./types.js";
3
+ /**
4
+ * Evolink provider. Speaks the OpenAI Chat Completions dialect against Evolink's
5
+ * OpenAI-compatible gateway at https://direct.evolink.ai/v1 for chat (which
6
+ * fronts GPT, Claude, Gemini, DeepSeek and other models behind a single API
7
+ * key), and Evolink's asynchronous task API at https://api.evolink.ai for
8
+ * image and video generation.
9
+ */
10
+ export declare class EvolinkProvider extends OpenAICompatProvider {
11
+ static requiredSecrets(): string[];
12
+ constructor(secrets: {
13
+ EVOLINK_API_KEY?: string;
14
+ }, options?: OpenAICompatProviderOptions);
15
+ getContainerEnv(): {
16
+ EVOLINK_API_KEY: string;
17
+ };
18
+ getAvailableLanguageModels(): Promise<LanguageModel[]>;
19
+ getAvailableImageModels(): Promise<ImageModel[]>;
20
+ getAvailableVideoModels(): Promise<VideoModel[]>;
21
+ textToImage(params: TextToImageParams): Promise<Uint8Array>;
22
+ imageToImage(images: Uint8Array[], params: ImageToImageParams): Promise<Uint8Array>;
23
+ textToVideo(params: TextToVideoParams): Promise<Uint8Array>;
24
+ imageToVideo(image: Uint8Array, params: ImageToVideoParams): Promise<Uint8Array>;
25
+ private withNegativePrompt;
26
+ private resolveEvolinkImageSize;
27
+ private applyVideoParams;
28
+ private resolveVideoDuration;
29
+ private mediaHeaders;
30
+ /** Upload raw image bytes and return a hosted URL Evolink can reference. */
31
+ private uploadImage;
32
+ /** Submit a media task, poll until it completes, and download the result. */
33
+ private runMediaTask;
34
+ private submitMediaTask;
35
+ private pollMediaTask;
36
+ private downloadResult;
37
+ }
38
+ //# sourceMappingURL=evolink-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolink-provider.d.ts","sourceRoot":"","sources":["../../src/providers/evolink-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAgGpB;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,oBAAoB;IACvD,OAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;IAED,YACE,OAAO,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,EACrC,OAAO,GAAE,2BAAgC,EAe1C;IAEQ,eAAe;QACb,eAAe;MACzB;IAEc,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAEpE;IAEc,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE9D;IAEc,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE9D;IAEc,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBzE;IAEc,YAAY,CACzB,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CA4BrB;IAEc,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAYzE;IAEc,YAAY,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CAcrB;IAED,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,YAAY;IAOpB,4EAA4E;YAC9D,WAAW;IAgCzB,6EAA6E;YAC/D,YAAY;YAcZ,eAAe;YAuBf,aAAa;YAqCb,cAAc;CAS7B"}
@@ -0,0 +1,304 @@
1
+ import { createLogger } from "@nodetool-ai/config";
2
+ import { safeFetch } from "./safe-url.js";
3
+ import { detectImageMime } from "./image-mime.js";
4
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
5
+ import { isString } from "@nodetool-ai/protocol";
6
+ const log = createLogger("nodetool.runtime.providers.evolink");
7
+ // Evolink fronts two hosts: a synchronous OpenAI/Anthropic-compatible gateway
8
+ // for text models, and an asynchronous, task-based gateway for media. The
9
+ // chat path speaks Chat Completions against the gateway; image/video calls
10
+ // submit a task and poll for the result on the media host.
11
+ const EVOLINK_CHAT_BASE_URL = "https://direct.evolink.ai/v1";
12
+ const EVOLINK_MEDIA_BASE_URL = "https://api.evolink.ai";
13
+ const EVOLINK_FILE_UPLOAD_URL = "https://files-api.evolink.ai/api/v1/files/upload/base64";
14
+ /**
15
+ * Image models reachable via `POST /v1/images/generations`. Every listed
16
+ * model also accepts an `image_urls` array, so each supports both
17
+ * text-to-image and image-to-image (editing).
18
+ */
19
+ const EVOLINK_IMAGE_MODELS = [
20
+ { id: "gpt-image-2", name: "GPT Image 2" },
21
+ { id: "gpt-image-1.5", name: "GPT Image 1.5" },
22
+ { id: "gemini-3.1-flash-image-preview", name: "Nano Banana 2" },
23
+ { id: "doubao-seedream-5.0-lite", name: "Seedream 5.0 Lite" }
24
+ ].map((m) => ({
25
+ ...m,
26
+ provider: "evolink",
27
+ supportedTasks: ["text_to_image", "image_to_image"]
28
+ }));
29
+ /**
30
+ * Video models reachable via `POST /v1/videos/generations`. Evolink uses
31
+ * distinct model ids per task for some families (e.g. Seedance, Wan), while
32
+ * others (Veo, Sora) switch task by the presence of `image_urls` — reflected
33
+ * in each model's `supportedTasks`.
34
+ */
35
+ const EVOLINK_VIDEO_MODELS = [
36
+ {
37
+ id: "seedance-2.0-text-to-video",
38
+ name: "Seedance 2.0 (Text to Video)",
39
+ supportedTasks: ["text_to_video"],
40
+ resolutions: ["480p", "720p", "1080p"],
41
+ aspectRatios: ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"]
42
+ },
43
+ {
44
+ id: "seedance-2.0-image-to-video",
45
+ name: "Seedance 2.0 (Image to Video)",
46
+ supportedTasks: ["image_to_video"],
47
+ resolutions: ["480p", "720p", "1080p"],
48
+ aspectRatios: ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"]
49
+ },
50
+ {
51
+ id: "wan2.6-text-to-video",
52
+ name: "Wan 2.6 (Text to Video)",
53
+ supportedTasks: ["text_to_video"],
54
+ resolutions: ["720p", "1080p"],
55
+ aspectRatios: ["16:9", "9:16", "1:1", "4:3", "3:4"]
56
+ },
57
+ {
58
+ id: "wan2.6-image-to-video",
59
+ name: "Wan 2.6 (Image to Video)",
60
+ supportedTasks: ["image_to_video"],
61
+ resolutions: ["720p", "1080p"],
62
+ aspectRatios: ["16:9", "9:16", "1:1", "4:3", "3:4"]
63
+ },
64
+ {
65
+ id: "veo3.1-pro-beta",
66
+ name: "Veo 3.1 Pro",
67
+ supportedTasks: ["text_to_video", "image_to_video"],
68
+ resolutions: ["720p"],
69
+ aspectRatios: ["auto", "16:9", "9:16"]
70
+ },
71
+ {
72
+ id: "sora-2-pro-preview",
73
+ name: "Sora 2 Pro",
74
+ supportedTasks: ["text_to_video", "image_to_video"],
75
+ durations: [4, 8, 12],
76
+ resolutions: ["720p", "1080p"],
77
+ aspectRatios: ["16:9", "9:16"]
78
+ },
79
+ {
80
+ id: "grok-imagine-image-to-video-beta",
81
+ name: "Grok Imagine (Image to Video)",
82
+ supportedTasks: ["image_to_video"],
83
+ resolutions: ["480p", "720p"],
84
+ aspectRatios: ["16:9", "9:16", "1:1", "3:2", "2:3"]
85
+ }
86
+ ].map((m) => ({ ...m, provider: "evolink" }));
87
+ /**
88
+ * Evolink provider. Speaks the OpenAI Chat Completions dialect against Evolink's
89
+ * OpenAI-compatible gateway at https://direct.evolink.ai/v1 for chat (which
90
+ * fronts GPT, Claude, Gemini, DeepSeek and other models behind a single API
91
+ * key), and Evolink's asynchronous task API at https://api.evolink.ai for
92
+ * image and video generation.
93
+ */
94
+ export class EvolinkProvider extends OpenAICompatProvider {
95
+ static requiredSecrets() {
96
+ return ["EVOLINK_API_KEY"];
97
+ }
98
+ constructor(secrets, options = {}) {
99
+ const apiKey = secrets.EVOLINK_API_KEY;
100
+ if (!apiKey) {
101
+ throw new Error("EVOLINK_API_KEY is required");
102
+ }
103
+ super({
104
+ providerId: "evolink",
105
+ apiKey,
106
+ baseURL: EVOLINK_CHAT_BASE_URL
107
+ }, options);
108
+ }
109
+ getContainerEnv() {
110
+ return { EVOLINK_API_KEY: this.apiKey };
111
+ }
112
+ async getAvailableLanguageModels() {
113
+ return this.listCompatModels();
114
+ }
115
+ async getAvailableImageModels() {
116
+ return EVOLINK_IMAGE_MODELS;
117
+ }
118
+ async getAvailableVideoModels() {
119
+ return EVOLINK_VIDEO_MODELS;
120
+ }
121
+ async textToImage(params) {
122
+ if (!params.prompt) {
123
+ throw new Error("The input prompt cannot be empty.");
124
+ }
125
+ const body = {
126
+ model: params.model.id,
127
+ prompt: this.withNegativePrompt(params.prompt, params.negativePrompt)
128
+ };
129
+ const size = this.resolveEvolinkImageSize(params.aspectRatio, params.width, params.height);
130
+ if (size)
131
+ body.size = size;
132
+ if (params.resolution)
133
+ body.resolution = params.resolution;
134
+ if (params.quality)
135
+ body.quality = params.quality;
136
+ return this.runMediaTask("/v1/images/generations", body);
137
+ }
138
+ async imageToImage(images, params) {
139
+ const sources = images.filter((b) => b && b.length > 0);
140
+ if (sources.length === 0) {
141
+ throw new Error("image must not be empty.");
142
+ }
143
+ if (!params.prompt) {
144
+ throw new Error("The input prompt cannot be empty.");
145
+ }
146
+ const imageUrls = await Promise.all(sources.map((b) => this.uploadImage(b)));
147
+ const body = {
148
+ model: params.model.id,
149
+ prompt: this.withNegativePrompt(params.prompt, params.negativePrompt),
150
+ image_urls: imageUrls
151
+ };
152
+ const size = this.resolveEvolinkImageSize(params.aspectRatio, params.targetWidth ?? undefined, params.targetHeight ?? undefined);
153
+ if (size)
154
+ body.size = size;
155
+ if (params.resolution)
156
+ body.resolution = params.resolution;
157
+ if (params.quality)
158
+ body.quality = params.quality;
159
+ return this.runMediaTask("/v1/images/generations", body);
160
+ }
161
+ async textToVideo(params) {
162
+ if (!params.prompt) {
163
+ throw new Error("The input prompt cannot be empty.");
164
+ }
165
+ const body = {
166
+ model: params.model.id,
167
+ prompt: params.prompt
168
+ };
169
+ this.applyVideoParams(body, params);
170
+ return this.runMediaTask("/v1/videos/generations", body);
171
+ }
172
+ async imageToVideo(image, params) {
173
+ if (!image || image.length === 0) {
174
+ throw new Error("The input image cannot be empty.");
175
+ }
176
+ const imageUrl = await this.uploadImage(image);
177
+ const body = {
178
+ model: params.model.id,
179
+ prompt: params.prompt ?? "",
180
+ image_urls: [imageUrl]
181
+ };
182
+ this.applyVideoParams(body, params);
183
+ return this.runMediaTask("/v1/videos/generations", body);
184
+ }
185
+ withNegativePrompt(prompt, negativePrompt) {
186
+ return negativePrompt
187
+ ? `${prompt.trim()}\n\nDo not include: ${negativePrompt.trim()}`
188
+ : prompt;
189
+ }
190
+ resolveEvolinkImageSize(aspectRatio, width, height) {
191
+ if (aspectRatio)
192
+ return aspectRatio;
193
+ if (width && height)
194
+ return `${width}x${height}`;
195
+ return undefined;
196
+ }
197
+ applyVideoParams(body, params) {
198
+ const duration = this.resolveVideoDuration(params);
199
+ if (duration)
200
+ body.duration = duration;
201
+ // Evolink expresses video resolution through the `quality` field
202
+ // (e.g. "720p", "1080p"), not a pixel size.
203
+ if (params.resolution)
204
+ body.quality = params.resolution;
205
+ if (params.aspectRatio)
206
+ body.aspect_ratio = params.aspectRatio;
207
+ }
208
+ resolveVideoDuration(params) {
209
+ if (params.durationSeconds && params.durationSeconds > 0) {
210
+ return Math.round(params.durationSeconds);
211
+ }
212
+ if (params.numFrames && params.numFrames > 0) {
213
+ return Math.max(1, Math.round(params.numFrames / 24));
214
+ }
215
+ return undefined;
216
+ }
217
+ mediaHeaders() {
218
+ return {
219
+ Authorization: `Bearer ${this.apiKey}`,
220
+ "Content-Type": "application/json"
221
+ };
222
+ }
223
+ /** Upload raw image bytes and return a hosted URL Evolink can reference. */
224
+ async uploadImage(image,
225
+ // Sniff the container by default so a JPEG/WebP source isn't mislabeled as
226
+ // PNG (which a strict file store would reject or store with a wrong type).
227
+ mimeType = detectImageMime(image)) {
228
+ const base64 = Buffer.from(image).toString("base64");
229
+ const response = await this.compatFetch(EVOLINK_FILE_UPLOAD_URL, {
230
+ method: "POST",
231
+ headers: this.mediaHeaders(),
232
+ body: JSON.stringify({
233
+ base64_data: `data:${mimeType};base64,${base64}`
234
+ })
235
+ });
236
+ const payload = (await response
237
+ .json()
238
+ .catch(() => ({})));
239
+ const fileUrl = payload.data?.file_url;
240
+ if (!response.ok || !payload.success || !fileUrl) {
241
+ throw new Error(`Evolink file upload failed: ${response.status} ${payload.msg ?? ""}`.trim());
242
+ }
243
+ return fileUrl;
244
+ }
245
+ /** Submit a media task, poll until it completes, and download the result. */
246
+ async runMediaTask(path, body) {
247
+ log.debug("Evolink media task", { path, model: body.model });
248
+ const taskId = await this.submitMediaTask(path, body);
249
+ const results = await this.pollMediaTask(taskId);
250
+ const url = results[0];
251
+ if (!url) {
252
+ throw new Error(`Evolink task ${taskId} returned no results`);
253
+ }
254
+ return this.downloadResult(url);
255
+ }
256
+ async submitMediaTask(path, body) {
257
+ const response = await this.compatFetch(`${EVOLINK_MEDIA_BASE_URL}${path}`, {
258
+ method: "POST",
259
+ headers: this.mediaHeaders(),
260
+ body: JSON.stringify(body)
261
+ });
262
+ const payload = (await response
263
+ .json()
264
+ .catch(() => ({})));
265
+ if (!response.ok || !payload.id) {
266
+ throw new Error(`Evolink task submit failed: ${response.status} ${JSON.stringify(payload)}`);
267
+ }
268
+ return payload.id;
269
+ }
270
+ async pollMediaTask(taskId, pollIntervalMs = 3000, maxAttempts = 300) {
271
+ const url = `${EVOLINK_MEDIA_BASE_URL}/v1/tasks/${taskId}`;
272
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
273
+ const response = await this.compatFetch(url, {
274
+ headers: { Authorization: `Bearer ${this.apiKey}` }
275
+ });
276
+ if (!response.ok) {
277
+ throw new Error(`Evolink task query failed: ${response.status} (taskId: ${taskId})`);
278
+ }
279
+ const data = (await response.json());
280
+ if (data.status === "completed") {
281
+ return data.results ?? [];
282
+ }
283
+ if (data.status === "failed") {
284
+ const message = isString(data.error)
285
+ ? data.error
286
+ : data.error?.message ?? "Unknown error";
287
+ throw new Error(`Evolink task failed: ${message} (taskId: ${taskId})`);
288
+ }
289
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
290
+ }
291
+ const timeoutSeconds = (maxAttempts * pollIntervalMs) / 1000;
292
+ throw new Error(`Evolink task timed out after ${timeoutSeconds}s (taskId: ${taskId})`);
293
+ }
294
+ async downloadResult(url) {
295
+ // url is task-result-body-controlled — gate it through safeFetch (SSRF)
296
+ // while still using the injected fetch impl for testability.
297
+ const response = await safeFetch(url, undefined, 5, this.compatFetch);
298
+ if (!response.ok) {
299
+ throw new Error(`Failed to download Evolink result: ${response.status}`);
300
+ }
301
+ return new Uint8Array(await response.arrayBuffer());
302
+ }
303
+ }
304
+ //# sourceMappingURL=evolink-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolink-provider.js","sourceRoot":"","sources":["../../src/providers/evolink-provider.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { BaseProvider } from "./base-provider.js";
2
- import type { LanguageModel, Message, ProviderStreamItem, ProviderTool, ToolCall } from "./types.js";
2
+ import type { ASRResult, ImageTo3DParams, ImageToImageParams, ImageToVideoParams, LanguageModel, LipSyncParams, Message, ProviderStreamItem, ProviderTool, RelightImageParams, RemoveBackgroundParams, StreamingAudioChunk, TextTo3DParams, TextToImageParams, TextToVideoParams, ToolCall, UpscaleImageParams, VectorizeImageParams, VideoToVideoParams } from "./types.js";
3
3
  type CustomResponseFn = (messages: Message[], model: string) => string | ToolCall[];
4
4
  export interface FakeProviderOptions {
5
5
  textResponse?: string;
@@ -7,6 +7,30 @@ export interface FakeProviderOptions {
7
7
  shouldStream?: boolean;
8
8
  chunkSize?: number;
9
9
  customResponseFn?: CustomResponseFn;
10
+ /**
11
+ * When set, and the caller passes a non-empty `tools` array without
12
+ * preset `toolCalls` or a `customResponseFn`, the provider emits this
13
+ * many tool calls per declared tool on its FIRST call to either
14
+ * `generateMessage` or `generateMessages`, then stops emitting tool
15
+ * calls on later invocations of either method. The two methods share
16
+ * the same burst counter so a `generateMessage` followed by a
17
+ * `generateMessages` (or vice versa) yields one burst total.
18
+ *
19
+ * This lets tool-loop-style consumers (e.g. ListGenerator's `add_item`
20
+ * loop, DataGenerator's `add_row` loop) exit cleanly instead of
21
+ * hanging.
22
+ *
23
+ * Defaults to 3. Set to 0 to disable.
24
+ */
25
+ toolCallsPerTool?: number;
26
+ /**
27
+ * Optional builder for the args passed to auto-emitted tool calls.
28
+ * Receives the tool name and the 0-based index within the burst. The
29
+ * default builder returns plausible defaults for well-known tools:
30
+ * - `add_item` → `{ item: "fake item N" }`
31
+ * - everything else → `{}`
32
+ */
33
+ toolArgsBuilder?: (toolName: string, index: number) => Record<string, unknown>;
10
34
  }
11
35
  export declare class FakeProvider extends BaseProvider {
12
36
  textResponse: string;
@@ -14,11 +38,16 @@ export declare class FakeProvider extends BaseProvider {
14
38
  shouldStream: boolean;
15
39
  chunkSize: number;
16
40
  customResponseFn: CustomResponseFn | null;
41
+ toolCallsPerTool: number;
42
+ toolArgsBuilder: (toolName: string, index: number) => Record<string, unknown>;
43
+ /** Number of LLM invocations that have already auto-emitted tool calls. */
44
+ private _toolBurstsEmitted;
17
45
  callCount: number;
18
46
  lastMessages: Message[] | null;
19
47
  lastModel: string | null;
20
48
  lastTools: ProviderTool[];
21
49
  constructor(options?: FakeProviderOptions);
50
+ private autoToolCalls;
22
51
  private getResponse;
23
52
  resetCallCount(): void;
24
53
  getAvailableLanguageModels(): Promise<LanguageModel[]>;
@@ -43,6 +72,48 @@ export declare class FakeProvider extends BaseProvider {
43
72
  frequencyPenalty?: number;
44
73
  audio?: Record<string, unknown>;
45
74
  }): AsyncGenerator<ProviderStreamItem>;
75
+ textToImage(_params: TextToImageParams): Promise<Uint8Array>;
76
+ imageToImage(_images: Uint8Array[], _params: ImageToImageParams): Promise<Uint8Array>;
77
+ upscaleImage(_image: Uint8Array, _params: UpscaleImageParams): Promise<Uint8Array>;
78
+ removeBackground(_image: Uint8Array, _params: RemoveBackgroundParams): Promise<Uint8Array>;
79
+ relightImage(_image: Uint8Array, _params: RelightImageParams): Promise<Uint8Array>;
80
+ vectorizeImage(_image: Uint8Array, _params: VectorizeImageParams): Promise<Uint8Array>;
81
+ textToVideo(_params: TextToVideoParams): Promise<Uint8Array>;
82
+ imageToVideo(_image: Uint8Array, _params: ImageToVideoParams): Promise<Uint8Array>;
83
+ videoToVideo(_video: Uint8Array, _params: VideoToVideoParams): Promise<Uint8Array>;
84
+ lipSync(_video: Uint8Array, _params: LipSyncParams): Promise<Uint8Array>;
85
+ textToSpeech(_args: {
86
+ text: string;
87
+ model: string;
88
+ voice?: string;
89
+ speed?: number;
90
+ audioFormat?: string;
91
+ }): AsyncGenerator<StreamingAudioChunk>;
92
+ textToSpeechEncoded(_args: {
93
+ text: string;
94
+ model: string;
95
+ voice?: string;
96
+ speed?: number;
97
+ audioFormat?: string;
98
+ }): Promise<{
99
+ data: Uint8Array;
100
+ mimeType: string;
101
+ } | null>;
102
+ automaticSpeechRecognition(_args: {
103
+ audio: Uint8Array;
104
+ model: string;
105
+ language?: string;
106
+ prompt?: string;
107
+ temperature?: number;
108
+ word_timestamps?: boolean;
109
+ }): Promise<ASRResult>;
110
+ generateEmbedding(args: {
111
+ text: string | string[];
112
+ model: string;
113
+ dimensions?: number;
114
+ }): Promise<number[][]>;
115
+ textTo3D(_params: TextTo3DParams): Promise<Uint8Array>;
116
+ imageTo3D(_image: Uint8Array, _params: ImageTo3DParams): Promise<Uint8Array>;
46
117
  }
47
118
  export declare function createFakeToolCall(name: string, args?: Record<string, unknown>, callId?: string): ToolCall;
48
119
  export declare function createSimpleFakeProvider(responseText?: string): FakeProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"fake-provider.d.ts","sourceRoot":"","sources":["../../src/providers/fake-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EAEP,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,KAAK,gBAAgB,GAAG,CACtB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,KACV,MAAM,GAAG,QAAQ,EAAE,CAAC;AAEzB,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C,SAAS,SAAK;IACd,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAQ;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,SAAS,EAAE,YAAY,EAAE,CAAM;gBAEnB,OAAO,GAAE,mBAAwB;IAU7C,OAAO,CAAC,WAAW;IAUnB,cAAc,IAAI,IAAI;IAIP,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAQ/D,eAAe,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC,OAAO,CAAC;IAeb,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,GAAG,cAAc,CAAC,kBAAkB,CAAC;CAmCvC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,QAAQ,CAMV;AAED,wBAAgB,wBAAwB,CACtC,YAAY,SAAkB,GAC7B,YAAY,CAEd;AAED,wBAAgB,2BAA2B,CACzC,YAAY,SAAsC,EAClD,SAAS,SAAI,GACZ,YAAY,CAMd;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,QAAQ,EAAE,GACpB,YAAY,CAEd"}
1
+ {"version":3,"file":"fake-provider.d.ts","sourceRoot":"","sources":["../../src/providers/fake-provider.ts"],"names":[],"mappings":"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"}