@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
@@ -0,0 +1,286 @@
1
+ /**
2
+ * FAL's request history, read through its Platform APIs.
3
+ *
4
+ * Two endpoints answer different halves of a generation, and this module is
5
+ * the one client for both (https://fal.ai/docs/api-reference/platform-apis):
6
+ *
7
+ * - `GET /v1/models/billing-events` — one record per *charge*: request id,
8
+ * endpoint, timestamp and the billed cost. Account-wide, so it is what a
9
+ * listing without an endpoint filter can use. A billing event says a call
10
+ * was charged, never how it ended, so those records carry
11
+ * `status: "unknown"` rather than an invented outcome.
12
+ * - `GET /v1/models/requests/by-endpoint` — one record per *request*: status
13
+ * code, timings, and with `expand=payloads` the input and output. It
14
+ * requires at least one endpoint id, so it serves a listing filtered by
15
+ * model and the second half of a single lookup.
16
+ *
17
+ * Both need an admin-scoped key; NodeTool reuses `FAL_API_KEY` and a key
18
+ * without that scope 401/403s. The caller gets that as a thrown error on a
19
+ * direct read, and as a `note` with null costs when only the cost half fails.
20
+ */
21
+ import { createLogger } from "@nodetool-ai/config";
22
+ import { isFiniteNumber, isNumber } from "@nodetool-ai/protocol";
23
+ import { boundedLimit, modelFilter, providerGeneration } from "./provider-generations.js";
24
+ const log = createLogger("nodetool.runtime.fal-generations");
25
+ const FAL_PLATFORM_BASE = "https://api.fal.ai/v1";
26
+ const BILLING_EVENTS_PATH = "/models/billing-events";
27
+ const REQUESTS_PATH = "/models/requests/by-endpoint";
28
+ /** `limit` ceiling both endpoints document. */
29
+ const MAX_PAGE = 100;
30
+ const DEFAULT_PAGE = 50;
31
+ /** The window FAL keeps queryable when a request id is given. */
32
+ const LOOKUP_WINDOW_DAYS = 90;
33
+ const NANO_PER_USD = 1_000_000_000;
34
+ function isoDaysAgo(days) {
35
+ return new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
36
+ }
37
+ function buildUrl(path, params) {
38
+ const query = new URLSearchParams();
39
+ for (const [key, value] of params) {
40
+ if (value.length > 0)
41
+ query.append(key, value);
42
+ }
43
+ const suffix = query.toString();
44
+ return `${FAL_PLATFORM_BASE}${path}${suffix ? `?${suffix}` : ""}`;
45
+ }
46
+ /** FAL refused the key: it is missing, invalid, or not admin-scoped. */
47
+ export class FalPlatformAuthError extends Error {
48
+ status;
49
+ constructor(status) {
50
+ super(`FAL rejected the platform API key (HTTP ${status}). Reading FAL's ` +
51
+ `generation history needs an admin-scoped FAL_API_KEY.`);
52
+ this.name = "FalPlatformAuthError";
53
+ this.status = status;
54
+ }
55
+ }
56
+ async function falGet(apiKey, url, options) {
57
+ const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
58
+ const init = {
59
+ headers: { Authorization: `Key ${apiKey}` }
60
+ };
61
+ if (options.signal)
62
+ init.signal = options.signal;
63
+ const res = await fetchFn(url, init);
64
+ if (res.status === 401 || res.status === 403) {
65
+ throw new FalPlatformAuthError(res.status);
66
+ }
67
+ if (!res.ok) {
68
+ const body = await res.text();
69
+ throw new Error(`FAL platform API ${res.status} for ${url}: ${body.slice(0, 500)}`);
70
+ }
71
+ // SAFETY: each caller passes the response interface documented for the
72
+ // endpoint in that URL, and every field of those interfaces is optional, so
73
+ // a payload missing one narrows to undefined rather than lying.
74
+ return (await res.json());
75
+ }
76
+ function costOf(event) {
77
+ if (isFiniteNumber(event.cost_total))
78
+ return event.cost_total;
79
+ const nano = event.cost_estimate_nano_usd;
80
+ return isFiniteNumber(nano) ? nano / NANO_PER_USD : null;
81
+ }
82
+ /** Outputs FAL still hosts for a request, from the payloads it returns. */
83
+ export function falOutputUrls(output) {
84
+ if (!output)
85
+ return [];
86
+ const files = [
87
+ output.image,
88
+ output.video,
89
+ output.audio,
90
+ output.audio_file,
91
+ output.model_mesh,
92
+ ...(output.images ?? []),
93
+ ...(output.videos ?? [])
94
+ ];
95
+ const urls = [];
96
+ for (const file of files) {
97
+ const url = file?.url;
98
+ if (url !== undefined && url.length > 0)
99
+ urls.push(url);
100
+ }
101
+ return urls;
102
+ }
103
+ /**
104
+ * A request's outcome from its HTTP status. A request FAL has accepted but not
105
+ * finished has no `ended_at` and no status code yet — that is `running`, not a
106
+ * missing value.
107
+ */
108
+ export function falRequestStatus(item) {
109
+ const code = item.status_code;
110
+ if (!isNumber(code)) {
111
+ return item.ended_at ? "unknown" : "running";
112
+ }
113
+ if (code >= 200 && code < 400)
114
+ return "completed";
115
+ if (code >= 400)
116
+ return "failed";
117
+ return "unknown";
118
+ }
119
+ /** FAL's `status` filter for the statuses it can express. */
120
+ function falStatusFilter(status) {
121
+ if (status === "completed")
122
+ return "success";
123
+ if (status === "failed")
124
+ return "error";
125
+ return "";
126
+ }
127
+ function fromBillingEvent(event) {
128
+ const requestId = event.request_id;
129
+ if (requestId === undefined || requestId.length === 0)
130
+ return null;
131
+ return providerGeneration({
132
+ provider: "fal_ai",
133
+ request_id: requestId,
134
+ model: event.endpoint_id ?? null,
135
+ // A charge is not an outcome. `by-endpoint` is what knows how it ended.
136
+ status: "unknown",
137
+ created_at: event.timestamp ?? null,
138
+ cost: costOf(event),
139
+ currency: "USD",
140
+ quantity: event.output_units ?? null,
141
+ unit_price: event.unit_price ?? null
142
+ });
143
+ }
144
+ function fromRequestItem(item, event) {
145
+ const requestId = item.request_id;
146
+ if (requestId === undefined || requestId.length === 0)
147
+ return null;
148
+ return providerGeneration({
149
+ provider: "fal_ai",
150
+ request_id: requestId,
151
+ model: item.endpoint_id ?? event?.endpoint_id ?? null,
152
+ status: falRequestStatus(item),
153
+ created_at: item.started_at ?? item.sent_at ?? event?.timestamp ?? null,
154
+ completed_at: item.ended_at ?? null,
155
+ duration_seconds: item.duration ?? null,
156
+ cost: event ? costOf(event) : null,
157
+ currency: event ? "USD" : null,
158
+ quantity: event?.output_units ?? null,
159
+ unit_price: event?.unit_price ?? null,
160
+ output_urls: falOutputUrls(item.json_output)
161
+ });
162
+ }
163
+ /** One billing event by request id, or null when FAL has not posted one. */
164
+ export async function falBillingEvent(apiKey, requestId, options = {}) {
165
+ const url = buildUrl(BILLING_EVENTS_PATH, [
166
+ ["request_id", requestId],
167
+ ["start", isoDaysAgo(LOOKUP_WINDOW_DAYS)]
168
+ ]);
169
+ const body = await falGet(apiKey, url, options);
170
+ return ((body.billing_events ?? []).find((e) => e.request_id === requestId) ?? null);
171
+ }
172
+ /**
173
+ * The billed cost of one FAL request, in USD, or null when no billing event
174
+ * exists for it yet. The reconciler's lookup — see `fal-billing.ts` in
175
+ * `@nodetool-ai/fal-nodes` for the retry that surrounds it.
176
+ */
177
+ export async function falRequestCost(apiKey, requestId, options = {}) {
178
+ const event = await falBillingEvent(apiKey, requestId, options);
179
+ if (!event)
180
+ return null;
181
+ const cost = costOf(event);
182
+ if (cost === null)
183
+ return null;
184
+ return {
185
+ cost,
186
+ currency: "USD",
187
+ quantity: event.output_units ?? null,
188
+ unit_price: event.unit_price ?? null
189
+ };
190
+ }
191
+ /**
192
+ * List FAL's own record of this account's generations, newest first.
193
+ *
194
+ * With a `model` filter the request history answers, so each row carries a
195
+ * real status and its outputs, and one billing call fills the costs in.
196
+ * Without one, only the account-wide billing feed can answer, so the rows
197
+ * carry cost but `status: "unknown"` — the `note` says so.
198
+ */
199
+ export async function falListGenerations(apiKey, query = {}, options = {}) {
200
+ const limit = boundedLimit(query.limit, DEFAULT_PAGE, MAX_PAGE);
201
+ const endpoints = modelFilter(query.model);
202
+ const window = [
203
+ ["start", query.since ?? ""],
204
+ ["end", query.until ?? ""]
205
+ ];
206
+ if (endpoints.length === 0) {
207
+ const url = buildUrl(BILLING_EVENTS_PATH, [
208
+ ...window,
209
+ ["limit", String(limit)],
210
+ ["cursor", query.cursor ?? ""]
211
+ ]);
212
+ const body = await falGet(apiKey, url, options);
213
+ const generations = (body.billing_events ?? [])
214
+ .map(fromBillingEvent)
215
+ .filter((row) => row !== null);
216
+ return {
217
+ generations,
218
+ next_cursor: body.next_cursor ?? null,
219
+ note: "FAL lists account-wide generations through its billing feed, which " +
220
+ "records the charge and not the outcome. Pass a model (endpoint id) " +
221
+ "to read status, timings and outputs."
222
+ };
223
+ }
224
+ const url = buildUrl(REQUESTS_PATH, [
225
+ ...window,
226
+ ["endpoint_id", endpoints.join(",")],
227
+ ["limit", String(limit)],
228
+ ["cursor", query.cursor ?? ""],
229
+ ["status", falStatusFilter(query.status)],
230
+ ["expand", "payloads"]
231
+ ]);
232
+ const body = await falGet(apiKey, url, options);
233
+ const items = body.items ?? [];
234
+ // The request history carries no cost, so one billing call over the same
235
+ // window and endpoints supplies it. A key without billing scope leaves the
236
+ // costs null rather than failing a listing that otherwise answered.
237
+ const costs = new Map();
238
+ let note = null;
239
+ if (items.length > 0) {
240
+ const billingUrl = buildUrl(BILLING_EVENTS_PATH, [
241
+ ...window,
242
+ ["endpoint_id", endpoints.join(",")],
243
+ ["limit", String(MAX_PAGE)]
244
+ ]);
245
+ try {
246
+ const billing = await falGet(apiKey, billingUrl, options);
247
+ for (const event of billing.billing_events ?? []) {
248
+ if (event.request_id)
249
+ costs.set(event.request_id, event);
250
+ }
251
+ }
252
+ catch (err) {
253
+ log.warn(`FAL billing lookup failed, listing without costs: ${err}`);
254
+ note = `Costs are missing: the FAL billing feed answered ${String(err)}.`;
255
+ }
256
+ }
257
+ const generations = items
258
+ .map((item) => fromRequestItem(item, costs.get(item.request_id ?? "") ?? undefined))
259
+ .filter((row) => row !== null);
260
+ return { generations, next_cursor: body.next_cursor ?? null, note };
261
+ }
262
+ /**
263
+ * One FAL generation by request id. The billing feed finds it account-wide and
264
+ * names its endpoint; the request history then adds status, timings and
265
+ * outputs. A caller that already knows the endpoint passes it as `model`, and
266
+ * the lookup works even before FAL posts the charge.
267
+ */
268
+ export async function falGetGeneration(apiKey, requestId, lookup = {}, options = {}) {
269
+ const event = await falBillingEvent(apiKey, requestId, options);
270
+ const endpointId = lookup.model ?? event?.endpoint_id ?? null;
271
+ if (endpointId === null) {
272
+ return event ? fromBillingEvent(event) : null;
273
+ }
274
+ const url = buildUrl(REQUESTS_PATH, [
275
+ ["endpoint_id", endpointId],
276
+ ["request_id", requestId],
277
+ ["start", isoDaysAgo(LOOKUP_WINDOW_DAYS)],
278
+ ["expand", "payloads"]
279
+ ]);
280
+ const body = await falGet(apiKey, url, options);
281
+ const item = (body.items ?? []).find((i) => i.request_id === requestId);
282
+ if (!item)
283
+ return event ? fromBillingEvent(event) : null;
284
+ return fromRequestItem(item, event ?? undefined);
285
+ }
286
+ //# sourceMappingURL=fal-generations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fal-generations.js","sourceRoot":"","sources":["../../src/providers/fal-generations.ts"],"names":[],"mappings":"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"}
@@ -2,31 +2,196 @@
2
2
  * FAL AI Provider — wraps the @fal-ai/client SDK to provide image generation
3
3
  * through the standard BaseProvider interface.
4
4
  *
5
- * Supports: textToImage, imageToImage, getAvailableImageModels
5
+ * Supports: textToImage, imageToImage, getAvailableImageModels, and chat
6
+ * against fal's OpenAI-compatible LLM route.
6
7
  */
7
- import { BaseProvider } from "./base-provider.js";
8
- import type { ImageModel, VideoModel, Message, ProviderStreamItem, TextToImageParams, ImageToImageParams, TextToVideoParams, ImageToVideoParams } from "./types.js";
8
+ import { BaseProvider, type ProviderCapability } from "./base-provider.js";
9
+ import type { ProviderGeneration, ProviderGenerationLookup, ProviderGenerationPage, ProviderGenerationQuery } from "./provider-generations.js";
10
+ import type { ImageModel, LanguageModel, VideoModel, TTSModel, MusicModel, EncodedAudioResult, Message, ProviderStreamItem, TextToImageParams, TextToMusicParams, AudioToAudioModel, AudioToAudioParams, ImageToImageParams, InpaintingParams, TextToVideoParams, ImageToVideoParams, OutpaintImageParams, OutpaintVideoParams, UpscaleImageParams, UpscaleVideoParams, InterpolateVideoParams, RemoveBackgroundParams, SegmentImageParams, ImageSegmentationMask, RelightImageParams, VectorizeImageParams, VideoToVideoParams, ExtendVideoParams, LipSyncParams } from "./types.js";
11
+ import type { ReferenceToVideoInputs, ReferenceToVideoParams } from "./types.js";
12
+ import { type FalQueueSubmission } from "./fal-queue.js";
13
+ import type { ProviderQueueBinding } from "./provider-queue.js";
14
+ interface OpenRouterCatalogRow {
15
+ id?: string;
16
+ name?: string;
17
+ supported_parameters?: string[];
18
+ }
9
19
  export declare class FalProvider extends BaseProvider {
10
20
  private apiKey;
11
21
  private _client;
22
+ private _chat;
23
+ private readonly _fetch;
24
+ private readonly _webhookUrl;
25
+ private readonly _onQueueAccepted;
26
+ private readonly _onQueueBound;
27
+ /** Model ids the catalog says accept `tools`. Filled by the model listing. */
28
+ private _toolCapableModels;
29
+ protected declaredCapabilities(): readonly ProviderCapability[];
12
30
  static requiredSecrets(): string[];
13
- constructor(secrets?: Record<string, unknown>);
31
+ constructor(secrets?: Record<string, unknown>, options?: {
32
+ fetchFn?: typeof fetch;
33
+ webhookUrl?: string;
34
+ onQueueAccepted?: (submission: FalQueueSubmission) => void | Promise<void>;
35
+ onQueueBound?: (binding: ProviderQueueBinding) => void | Promise<void>;
36
+ });
14
37
  /** Build an onQueueUpdate callback that forwards progress via emitMessage. */
15
38
  private makeQueueUpdateHandler;
16
39
  private getClient;
40
+ /** How the platform-API client reaches FAL: this provider's fetch, its signal. */
41
+ private generationsOptions;
42
+ /**
43
+ * FAL's own record of this account's requests, through its Platform APIs —
44
+ * generations this installation never ran included, at the cost FAL billed.
45
+ * See `fal-generations.ts` for which endpoint answers what.
46
+ */
47
+ listGenerations(query?: ProviderGenerationQuery): Promise<ProviderGenerationPage>;
48
+ /** One FAL request by its request id — the id the local row keeps. */
49
+ getGeneration(requestId: string, options?: ProviderGenerationLookup): Promise<ProviderGeneration | null>;
17
50
  getAvailableImageModels(): Promise<ImageModel[]>;
18
51
  getAvailableVideoModels(): Promise<VideoModel[]>;
19
- generateMessage(_args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
20
- generateMessages(_args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
52
+ getAvailableTTSModels(): Promise<TTSModel[]>;
53
+ getAvailableMusicModels(): Promise<MusicModel[]>;
54
+ getAvailableAudioToAudioModels(): Promise<AudioToAudioModel[]>;
55
+ /**
56
+ * Rewrite a recording. The source audio is uploaded and attached to whatever
57
+ * audio field the endpoint declares; the optional direction fields are only
58
+ * written where the manifest declares them, so a voice changer that takes a
59
+ * `voice` and a separator that takes nothing both work off one call.
60
+ */
61
+ audioToAudio(audio: Uint8Array, params: AudioToAudioParams): Promise<EncodedAudioResult>;
62
+ /**
63
+ * Generate music as an encoded audio file. FAL music endpoints (Stable Audio,
64
+ * MiniMax Music, ACE-Step, DiffRhythm, …) return a file URL, so this mirrors
65
+ * {@link textToSpeechEncoded}: shape the request from the manifest, run it,
66
+ * and download the resulting audio bytes.
67
+ */
68
+ textToMusic(params: TextToMusicParams): Promise<EncodedAudioResult>;
69
+ /**
70
+ * Shape music inputs for whatever the endpoint declares. The text prompt
71
+ * lands in `prompt`; lyrics (for vocal models) and duration land in whichever
72
+ * of the heterogeneous duration/lyrics fields the endpoint accepts.
73
+ * {@link FalArgsBuilder.set} drops keys the endpoint doesn't declare.
74
+ */
75
+ private buildTextToMusicArgs;
76
+ /**
77
+ * Generate speech as an encoded audio file (mp3/wav, depending on the
78
+ * endpoint). FAL TTS endpoints return a file URL rather than raw PCM, so the
79
+ * unified TTS node consumes this encoded path instead of streaming samples.
80
+ */
81
+ textToSpeechEncoded(args: {
82
+ text: string;
83
+ model: string;
84
+ voice?: string;
85
+ speed?: number;
86
+ language?: string;
87
+ instructions?: string;
88
+ audioFormat?: string;
89
+ }): Promise<EncodedAudioResult | null>;
90
+ /**
91
+ * Shape TTS inputs for whatever the endpoint declares. The spoken text lands
92
+ * in the first text-like field the endpoint accepts; the voice lands in
93
+ * `voice` / `speaker` when enumerated. {@link FalArgsBuilder.set} drops keys
94
+ * the endpoint doesn't declare, so this works across the heterogeneous TTS
95
+ * catalog.
96
+ */
97
+ private buildTextToSpeechArgs;
98
+ /**
99
+ * fal's chat surface is an OpenAI-compatible route
100
+ * ({@link FAL_LLM_BASE_URL}) backed by OpenRouter, so it speaks the same
101
+ * dialect every other gateway provider here does — with one difference: fal
102
+ * authenticates with `Key <FAL_KEY>`, not `Bearer`, and answers 401 to the
103
+ * Bearer form. The compat client spreads `defaultHeaders` after its own
104
+ * Authorization, so this overrides it.
105
+ */
106
+ private chatProvider;
107
+ /**
108
+ * Language models reachable through fal's OpenAI-compatible route. The route
109
+ * is OpenRouter's router, so the ids it accepts are OpenRouter's ids and its
110
+ * public catalog is the model list — fal itself publishes no `/models` for
111
+ * this endpoint. Unreachable catalog means no language models rather than a
112
+ * failed provider, matching how the other enumerating providers fail.
113
+ */
114
+ getAvailableLanguageModels(): Promise<LanguageModel[]>;
115
+ /**
116
+ * Tool support varies model by model across a 300-model catalog, so answer
117
+ * from what the catalog declared. Before any listing there is nothing to
118
+ * answer from — say yes, as the base class does, rather than hiding tools
119
+ * from a model that has them.
120
+ */
121
+ hasToolSupport(model: string): Promise<boolean>;
122
+ generateMessage(args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
123
+ generateMessages(args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
124
+ /** Chat spend accrues on the delegate; report it as this provider's own. */
125
+ get cost(): number;
126
+ resetCost(): void;
21
127
  private buildTextToImageArgs;
128
+ /**
129
+ * Configure a {@link FalArgsBuilder} with the shared image-edit inputs
130
+ * (source images + prompt + sampling knobs). Used by both image-to-image and
131
+ * inpaint; the latter additionally attaches a mask.
132
+ */
133
+ private buildEditBuilder;
22
134
  private buildImageToImageArgs;
135
+ /**
136
+ * Build image-to-image args plus the inpaint mask. The mask is uploaded and
137
+ * attached to whatever mask field the endpoint declares (`mask_url`,
138
+ * `mask_image_url`, …) via {@link FalArgsBuilder.attachMask}.
139
+ */
140
+ private buildInpaintArgs;
23
141
  private buildTextToVideoArgs;
24
142
  private buildImageToVideoArgs;
25
143
  textToImage(params: TextToImageParams): Promise<Uint8Array>;
26
- imageToImage(image: Uint8Array, params: ImageToImageParams): Promise<Uint8Array>;
144
+ imageToImage(images: Uint8Array[], params: ImageToImageParams): Promise<Uint8Array>;
145
+ inpaint(images: Uint8Array[], params: InpaintingParams): Promise<Uint8Array>;
146
+ inpaintImages(images: Uint8Array[], params: InpaintingParams, numImages: number): Promise<Uint8Array[]>;
147
+ outpaintImage(images: Uint8Array[], params: OutpaintImageParams): Promise<Uint8Array>;
27
148
  textToVideo(params: TextToVideoParams): Promise<Uint8Array>;
28
- imageToImages(image: Uint8Array, params: ImageToImageParams, numImages: number): Promise<Uint8Array[]>;
149
+ imageToImages(images: Uint8Array[], params: ImageToImageParams, numImages: number): Promise<Uint8Array[]>;
29
150
  textToImages(params: TextToImageParams, numImages: number): Promise<Uint8Array[]>;
30
151
  imageToVideo(image: Uint8Array, params: ImageToVideoParams): Promise<Uint8Array>;
152
+ referenceToVideo(inputs: ReferenceToVideoInputs, params: ReferenceToVideoParams): Promise<Uint8Array>;
153
+ /** Upload raw bytes to FAL storage and return the hosted URL. */
154
+ private upload;
155
+ /** Upload every non-empty image to FAL storage, returning the hosted URLs. */
156
+ private uploadImages;
157
+ /** Run an endpoint that takes a single uploaded image and returns an image. */
158
+ private runImageEndpoint;
159
+ /** Run an endpoint that returns a video and download the bytes. */
160
+ private runVideoEndpoint;
161
+ upscaleImage(image: Uint8Array, params: UpscaleImageParams): Promise<Uint8Array>;
162
+ /**
163
+ * Segment an image into object masks. fal's SAM endpoints answer with mask
164
+ * images plus loose side-channels — `scores`, `boxes` and `metadata` arrive
165
+ * as JSON-encoded strings, and boxes are normalized `[cx, cy, w, h]` — so
166
+ * everything past the mask list is parsed defensively and left absent when
167
+ * it does not decode.
168
+ */
169
+ segmentImage(image: Uint8Array, params: SegmentImageParams): Promise<ImageSegmentationMask[]>;
170
+ removeBackground(image: Uint8Array, params: RemoveBackgroundParams): Promise<Uint8Array>;
171
+ relightImage(image: Uint8Array, params: RelightImageParams): Promise<Uint8Array>;
172
+ vectorizeImage(image: Uint8Array, params: VectorizeImageParams): Promise<Uint8Array>;
173
+ videoToVideo(video: Uint8Array, params: VideoToVideoParams): Promise<Uint8Array>;
174
+ extendVideo(video: Uint8Array, params: ExtendVideoParams): Promise<Uint8Array>;
175
+ upscaleVideo(video: Uint8Array, params: UpscaleVideoParams): Promise<Uint8Array>;
176
+ interpolateVideo(video: Uint8Array, params: InterpolateVideoParams): Promise<Uint8Array>;
177
+ outpaintVideo(video: Uint8Array, params: OutpaintVideoParams): Promise<Uint8Array>;
178
+ lipSync(video: Uint8Array, params: LipSyncParams): Promise<Uint8Array>;
31
179
  }
180
+ /**
181
+ * Decode the OpenRouter catalog fal's chat route is backed by. Throws when the
182
+ * body carries no `data` array; {@link FalProvider.getAvailableLanguageModels}
183
+ * treats that the way it treats an unreachable catalog.
184
+ */
185
+ export declare function decodeFalLanguageCatalog(payload: unknown): OpenRouterCatalogRow[];
186
+ /**
187
+ * The result-URL extractors below are the fal response decoders: every media
188
+ * surface hands its endpoint's payload to one of them. The checked-in raw
189
+ * fixtures in `packages/runtime/tests/fixtures/provider-contract/` run these
190
+ * same functions, so an endpoint that renames its result field fails there.
191
+ */
192
+ export declare function extractImageUrls(result: Record<string, unknown>): string[];
193
+ export declare function extractImageUrl(result: Record<string, unknown>): string;
194
+ export declare function extractVideoUrl(result: Record<string, unknown>): string;
195
+ export declare function extractAudioUrl(result: Record<string, unknown>): string;
196
+ export {};
32
197
  //# sourceMappingURL=fal-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fal-provider.d.ts","sourceRoot":"","sources":["../../src/providers/fal-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAsOpB,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA0B;WAEzB,eAAe,IAAI,MAAM,EAAE;gBAI/B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAKjD,8EAA8E;IAC9E,OAAO,CAAC,sBAAsB;YA8BhB,SAAS;IASR,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIhD,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzD,eAAe,CACnB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,OAAO,CAAC;IAIZ,gBAAgB,CACrB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,cAAc,CAAC,kBAAkB,CAAC;IAIrC,OAAO,CAAC,oBAAoB;YAgBd,qBAAqB;IAuBnC,OAAO,CAAC,oBAAoB;YAed,qBAAqB;IAqBpB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAc3D,YAAY,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC;IAcP,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAc3D,aAAa,CAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IAqBT,YAAY,CACzB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IAqBT,YAAY,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC;CAavB"}
1
+ {"version":3,"file":"fal-provider.d.ts","sourceRoot":"","sources":["../../src/providers/fal-provider.ts"],"names":[],"mappings":"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"}