@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.
- package/README.md +29 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/agent-memory.d.ts +118 -0
- package/dist/agent-memory.d.ts.map +1 -0
- package/dist/agent-memory.js +186 -0
- package/dist/agent-memory.js.map +1 -0
- package/dist/async-local-storage.d.ts +20 -0
- package/dist/async-local-storage.d.ts.map +1 -0
- package/dist/async-local-storage.js +28 -0
- package/dist/async-local-storage.js.map +1 -0
- package/dist/blender-executor.d.ts +93 -0
- package/dist/blender-executor.d.ts.map +1 -0
- package/dist/blender-executor.js +294 -0
- package/dist/blender-executor.js.map +1 -0
- package/dist/comfy-executor.d.ts +23 -1
- package/dist/comfy-executor.d.ts.map +1 -1
- package/dist/comfy-executor.js +234 -55
- package/dist/comfy-executor.js.map +1 -1
- package/dist/context-packer.d.ts +1 -1
- package/dist/context-packer.d.ts.map +1 -1
- package/dist/context-packer.js +23 -25
- package/dist/context-packer.js.map +1 -1
- package/dist/context.d.ts +982 -127
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +2649 -530
- package/dist/context.js.map +1 -1
- package/dist/cost-reconciler.d.ts +32 -0
- package/dist/cost-reconciler.d.ts.map +1 -0
- package/dist/cost-reconciler.js +21 -0
- package/dist/cost-reconciler.js.map +1 -0
- package/dist/entities.d.ts +33 -0
- package/dist/entities.d.ts.map +1 -0
- package/dist/entities.js +43 -0
- package/dist/entities.js.map +1 -0
- package/dist/external-media-fetch.d.ts +29 -0
- package/dist/external-media-fetch.d.ts.map +1 -0
- package/dist/external-media-fetch.js +38 -0
- package/dist/external-media-fetch.js.map +1 -0
- package/dist/generation-receipt.d.ts +86 -0
- package/dist/generation-receipt.d.ts.map +1 -0
- package/dist/generation-receipt.js +137 -0
- package/dist/generation-receipt.js.map +1 -0
- package/dist/generation-registry.d.ts +75 -0
- package/dist/generation-registry.d.ts.map +1 -0
- package/dist/generation-registry.js +144 -0
- package/dist/generation-registry.js.map +1 -0
- package/dist/google/client.d.ts +196 -0
- package/dist/google/client.d.ts.map +1 -0
- package/dist/google/client.js +396 -0
- package/dist/google/client.js.map +1 -0
- package/dist/google/index.d.ts +3 -0
- package/dist/google/index.d.ts.map +1 -0
- package/dist/google/index.js +3 -0
- package/dist/google/index.js.map +1 -0
- package/dist/google/token.d.ts +15 -0
- package/dist/google/token.d.ts.map +1 -0
- package/dist/google/token.js +24 -0
- package/dist/google/token.js.map +1 -0
- package/dist/host-binaries.d.ts +106 -0
- package/dist/host-binaries.d.ts.map +1 -0
- package/dist/host-binaries.js +352 -0
- package/dist/host-binaries.js.map +1 -0
- package/dist/image-codec.d.ts +76 -0
- package/dist/image-codec.d.ts.map +1 -0
- package/dist/image-codec.js +293 -0
- package/dist/image-codec.js.map +1 -0
- package/dist/image-model-tasks.d.ts +15 -0
- package/dist/image-model-tasks.d.ts.map +1 -0
- package/dist/image-model-tasks.js +24 -0
- package/dist/image-model-tasks.js.map +1 -0
- package/dist/index.d.ts +67 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -4
- package/dist/index.js.map +1 -1
- package/dist/invocation-account.d.ts +43 -0
- package/dist/invocation-account.d.ts.map +1 -0
- package/dist/invocation-account.js +60 -0
- package/dist/invocation-account.js.map +1 -0
- package/dist/media-ref-bytes.d.ts +35 -0
- package/dist/media-ref-bytes.d.ts.map +1 -0
- package/dist/media-ref-bytes.js +191 -0
- package/dist/media-ref-bytes.js.map +1 -0
- package/dist/node-executor.d.ts +119 -2
- package/dist/node-executor.d.ts.map +1 -1
- package/dist/permission-gate.d.ts +152 -0
- package/dist/permission-gate.d.ts.map +1 -0
- package/dist/permission-gate.js +87 -0
- package/dist/permission-gate.js.map +1 -0
- package/dist/prefixed-storage-adapter.d.ts +33 -0
- package/dist/prefixed-storage-adapter.d.ts.map +1 -0
- package/dist/prefixed-storage-adapter.js +70 -0
- package/dist/prefixed-storage-adapter.js.map +1 -0
- package/dist/prompt-asset-refs.d.ts +222 -0
- package/dist/prompt-asset-refs.d.ts.map +1 -0
- package/dist/prompt-asset-refs.js +751 -0
- package/dist/prompt-asset-refs.js.map +1 -0
- package/dist/provider-cache.d.ts +3 -0
- package/dist/provider-cache.d.ts.map +1 -0
- package/dist/provider-cache.js +8 -0
- package/dist/provider-cache.js.map +1 -0
- package/dist/providers/aki-provider.d.ts +35 -10
- package/dist/providers/aki-provider.d.ts.map +1 -1
- package/dist/providers/aki-provider.js +90 -77
- package/dist/providers/aki-provider.js.map +1 -1
- package/dist/providers/alibaba-provider.d.ts +39 -0
- package/dist/providers/alibaba-provider.d.ts.map +1 -0
- package/dist/providers/alibaba-provider.js +86 -0
- package/dist/providers/alibaba-provider.js.map +1 -0
- package/dist/providers/anthropic-provider.d.ts +52 -3
- package/dist/providers/anthropic-provider.d.ts.map +1 -1
- package/dist/providers/anthropic-provider.js +1020 -338
- package/dist/providers/anthropic-provider.js.map +1 -1
- package/dist/providers/atlascloud-provider.d.ts +103 -0
- package/dist/providers/atlascloud-provider.d.ts.map +1 -0
- package/dist/providers/atlascloud-provider.js +1031 -0
- package/dist/providers/atlascloud-provider.js.map +1 -0
- package/dist/providers/atlascloud-transport.d.ts +100 -0
- package/dist/providers/atlascloud-transport.d.ts.map +1 -0
- package/dist/providers/atlascloud-transport.js +364 -0
- package/dist/providers/atlascloud-transport.js.map +1 -0
- package/dist/providers/atlascloud-webhook-registry.d.ts +35 -0
- package/dist/providers/atlascloud-webhook-registry.d.ts.map +1 -0
- package/dist/providers/atlascloud-webhook-registry.js +104 -0
- package/dist/providers/atlascloud-webhook-registry.js.map +1 -0
- package/dist/providers/audio-mime.d.ts +11 -0
- package/dist/providers/audio-mime.d.ts.map +1 -0
- package/dist/providers/audio-mime.js +46 -0
- package/dist/providers/audio-mime.js.map +1 -0
- package/dist/providers/base-provider.d.ts +501 -32
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +1280 -87
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/cassette-provider.d.ts +217 -0
- package/dist/providers/cassette-provider.d.ts.map +1 -0
- package/dist/providers/cassette-provider.js +502 -0
- package/dist/providers/cassette-provider.js.map +1 -0
- package/dist/providers/cerebras-provider.d.ts +6 -12
- package/dist/providers/cerebras-provider.d.ts.map +1 -1
- package/dist/providers/cerebras-provider.js +8 -33
- package/dist/providers/cerebras-provider.js.map +1 -1
- package/dist/providers/claude-agent-provider.d.ts +107 -74
- package/dist/providers/claude-agent-provider.d.ts.map +1 -1
- package/dist/providers/claude-agent-provider.js +1279 -517
- package/dist/providers/claude-agent-provider.js.map +1 -1
- package/dist/providers/codex-provider.d.ts +84 -0
- package/dist/providers/codex-provider.d.ts.map +1 -0
- package/dist/providers/codex-provider.js +505 -0
- package/dist/providers/codex-provider.js.map +1 -0
- package/dist/providers/cohere-provider.d.ts +7 -3
- package/dist/providers/cohere-provider.d.ts.map +1 -1
- package/dist/providers/cohere-provider.js +14 -2
- package/dist/providers/cohere-provider.js.map +1 -1
- package/dist/providers/comfy-cloud-provider.d.ts +30 -0
- package/dist/providers/comfy-cloud-provider.d.ts.map +1 -0
- package/dist/providers/comfy-cloud-provider.js +42 -0
- package/dist/providers/comfy-cloud-provider.js.map +1 -0
- package/dist/providers/content-filter.d.ts +46 -0
- package/dist/providers/content-filter.d.ts.map +1 -0
- package/dist/providers/content-filter.js +92 -0
- package/dist/providers/content-filter.js.map +1 -0
- package/dist/providers/context-exceeded.d.ts +37 -0
- package/dist/providers/context-exceeded.d.ts.map +1 -0
- package/dist/providers/context-exceeded.js +114 -0
- package/dist/providers/context-exceeded.js.map +1 -0
- package/dist/providers/context-window.d.ts +44 -0
- package/dist/providers/context-window.d.ts.map +1 -0
- package/dist/providers/context-window.js +145 -0
- package/dist/providers/context-window.js.map +1 -0
- package/dist/providers/contract/index.d.ts +4 -0
- package/dist/providers/contract/index.d.ts.map +1 -0
- package/dist/providers/contract/index.js +4 -0
- package/dist/providers/contract/index.js.map +1 -0
- package/dist/providers/contract/probe-manifest.d.ts +75 -0
- package/dist/providers/contract/probe-manifest.d.ts.map +1 -0
- package/dist/providers/contract/probe-manifest.js +379 -0
- package/dist/providers/contract/probe-manifest.js.map +1 -0
- package/dist/providers/contract/probe-runner.d.ts +57 -0
- package/dist/providers/contract/probe-runner.d.ts.map +1 -0
- package/dist/providers/contract/probe-runner.js +180 -0
- package/dist/providers/contract/probe-runner.js.map +1 -0
- package/dist/providers/contract/redact.d.ts +29 -0
- package/dist/providers/contract/redact.d.ts.map +1 -0
- package/dist/providers/contract/redact.js +113 -0
- package/dist/providers/contract/redact.js.map +1 -0
- package/dist/providers/core-tools.d.ts +75 -0
- package/dist/providers/core-tools.d.ts.map +1 -0
- package/dist/providers/core-tools.js +128 -0
- package/dist/providers/core-tools.js.map +1 -0
- package/dist/providers/cost-calculator.d.ts +69 -50
- package/dist/providers/cost-calculator.d.ts.map +1 -1
- package/dist/providers/cost-calculator.js +207 -397
- package/dist/providers/cost-calculator.js.map +1 -1
- package/dist/providers/credential-check.d.ts +45 -0
- package/dist/providers/credential-check.d.ts.map +1 -0
- package/dist/providers/credential-check.js +164 -0
- package/dist/providers/credential-check.js.map +1 -0
- package/dist/providers/custom-model-kinds.d.ts +33 -0
- package/dist/providers/custom-model-kinds.d.ts.map +1 -0
- package/dist/providers/custom-model-kinds.js +96 -0
- package/dist/providers/custom-model-kinds.js.map +1 -0
- package/dist/providers/custom-openai-provider.d.ts +83 -0
- package/dist/providers/custom-openai-provider.d.ts.map +1 -0
- package/dist/providers/custom-openai-provider.js +190 -0
- package/dist/providers/custom-openai-provider.js.map +1 -0
- package/dist/providers/custom-provider-registry.d.ts +19 -0
- package/dist/providers/custom-provider-registry.d.ts.map +1 -0
- package/dist/providers/custom-provider-registry.js +52 -0
- package/dist/providers/custom-provider-registry.js.map +1 -0
- package/dist/providers/deepseek-provider.d.ts +8 -14
- package/dist/providers/deepseek-provider.d.ts.map +1 -1
- package/dist/providers/deepseek-provider.js +6 -35
- package/dist/providers/deepseek-provider.js.map +1 -1
- package/dist/providers/defaults.d.ts +12 -0
- package/dist/providers/defaults.d.ts.map +1 -0
- package/dist/providers/defaults.js +12 -0
- package/dist/providers/defaults.js.map +1 -0
- package/dist/providers/dreamina-models.d.ts +5 -0
- package/dist/providers/dreamina-models.d.ts.map +1 -0
- package/dist/providers/dreamina-models.js +57 -0
- package/dist/providers/dreamina-models.js.map +1 -0
- package/dist/providers/dreamina-music.d.ts +52 -0
- package/dist/providers/dreamina-music.d.ts.map +1 -0
- package/dist/providers/dreamina-music.js +115 -0
- package/dist/providers/dreamina-music.js.map +1 -0
- package/dist/providers/dreamina-provider.d.ts +62 -0
- package/dist/providers/dreamina-provider.d.ts.map +1 -0
- package/dist/providers/dreamina-provider.js +790 -0
- package/dist/providers/dreamina-provider.js.map +1 -0
- package/dist/providers/elevenlabs-provider.d.ts +50 -0
- package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
- package/dist/providers/elevenlabs-provider.js +147 -0
- package/dist/providers/elevenlabs-provider.js.map +1 -0
- package/dist/providers/entity-references.d.ts +31 -0
- package/dist/providers/entity-references.d.ts.map +1 -0
- package/dist/providers/entity-references.js +113 -0
- package/dist/providers/entity-references.js.map +1 -0
- package/dist/providers/evolink-provider.d.ts +40 -0
- package/dist/providers/evolink-provider.d.ts.map +1 -0
- package/dist/providers/evolink-provider.js +312 -0
- package/dist/providers/evolink-provider.js.map +1 -0
- package/dist/providers/fake-provider.d.ts +74 -2
- package/dist/providers/fake-provider.d.ts.map +1 -1
- package/dist/providers/fake-provider.js +213 -1
- package/dist/providers/fake-provider.js.map +1 -1
- package/dist/providers/fal-generations.d.ts +106 -0
- package/dist/providers/fal-generations.d.ts.map +1 -0
- package/dist/providers/fal-generations.js +286 -0
- package/dist/providers/fal-generations.js.map +1 -0
- package/dist/providers/fal-provider.d.ts +173 -8
- package/dist/providers/fal-provider.d.ts.map +1 -1
- package/dist/providers/fal-provider.js +1396 -64
- package/dist/providers/fal-provider.js.map +1 -1
- package/dist/providers/fal-queue.d.ts +47 -0
- package/dist/providers/fal-queue.d.ts.map +1 -0
- package/dist/providers/fal-queue.js +231 -0
- package/dist/providers/fal-queue.js.map +1 -0
- package/dist/providers/gemini-provider.d.ts +150 -9
- package/dist/providers/gemini-provider.d.ts.map +1 -1
- package/dist/providers/gemini-provider.js +1515 -316
- package/dist/providers/gemini-provider.js.map +1 -1
- package/dist/providers/gmi-provider.d.ts +21 -0
- package/dist/providers/gmi-provider.d.ts.map +1 -0
- package/dist/providers/gmi-provider.js +34 -0
- package/dist/providers/gmi-provider.js.map +1 -0
- package/dist/providers/gpt-image-size.d.ts +3 -0
- package/dist/providers/gpt-image-size.d.ts.map +1 -0
- package/dist/providers/gpt-image-size.js +37 -0
- package/dist/providers/gpt-image-size.js.map +1 -0
- package/dist/providers/groq-provider.d.ts +9 -12
- package/dist/providers/groq-provider.d.ts.map +1 -1
- package/dist/providers/groq-provider.js +19 -33
- package/dist/providers/groq-provider.js.map +1 -1
- package/dist/providers/groq-request.d.ts +38 -0
- package/dist/providers/groq-request.d.ts.map +1 -0
- package/dist/providers/groq-request.js +138 -0
- package/dist/providers/groq-request.js.map +1 -0
- package/dist/providers/higgsfield-provider.d.ts +31 -0
- package/dist/providers/higgsfield-provider.d.ts.map +1 -0
- package/dist/providers/higgsfield-provider.js +143 -0
- package/dist/providers/higgsfield-provider.js.map +1 -0
- package/dist/providers/higgsfield-transport.d.ts +106 -0
- package/dist/providers/higgsfield-transport.d.ts.map +1 -0
- package/dist/providers/higgsfield-transport.js +182 -0
- package/dist/providers/higgsfield-transport.js.map +1 -0
- package/dist/providers/http-transport.d.ts +74 -0
- package/dist/providers/http-transport.d.ts.map +1 -0
- package/dist/providers/http-transport.js +152 -0
- package/dist/providers/http-transport.js.map +1 -0
- package/dist/providers/huggingface-provider.d.ts +73 -4
- package/dist/providers/huggingface-provider.d.ts.map +1 -1
- package/dist/providers/huggingface-provider.js +240 -34
- package/dist/providers/huggingface-provider.js.map +1 -1
- package/dist/providers/image-mime.d.ts +39 -0
- package/dist/providers/image-mime.d.ts.map +1 -0
- package/dist/providers/image-mime.js +111 -0
- package/dist/providers/image-mime.js.map +1 -0
- package/dist/providers/image-ref.d.ts +21 -0
- package/dist/providers/image-ref.d.ts.map +1 -0
- package/dist/providers/image-ref.js +44 -0
- package/dist/providers/image-ref.js.map +1 -0
- package/dist/providers/index.d.ts +87 -8
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +250 -56
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jina-provider.d.ts +12 -3
- package/dist/providers/jina-provider.d.ts.map +1 -1
- package/dist/providers/jina-provider.js +21 -7
- package/dist/providers/jina-provider.js.map +1 -1
- package/dist/providers/kie-provider.d.ts +172 -10
- package/dist/providers/kie-provider.d.ts.map +1 -1
- package/dist/providers/kie-provider.js +1190 -228
- package/dist/providers/kie-provider.js.map +1 -1
- package/dist/providers/kie-webhook-registry.d.ts +28 -0
- package/dist/providers/kie-webhook-registry.d.ts.map +1 -0
- package/dist/providers/kie-webhook-registry.js +91 -0
- package/dist/providers/kie-webhook-registry.js.map +1 -0
- package/dist/providers/llama-provider.d.ts +23 -36
- package/dist/providers/llama-provider.d.ts.map +1 -1
- package/dist/providers/llama-provider.js +50 -355
- package/dist/providers/llama-provider.js.map +1 -1
- package/dist/providers/lmstudio-provider.d.ts +4 -7
- package/dist/providers/lmstudio-provider.d.ts.map +1 -1
- package/dist/providers/lmstudio-provider.js +24 -15
- package/dist/providers/lmstudio-provider.js.map +1 -1
- package/dist/providers/loop-tracing.d.ts +17 -0
- package/dist/providers/loop-tracing.d.ts.map +1 -0
- package/dist/providers/loop-tracing.js +132 -0
- package/dist/providers/loop-tracing.js.map +1 -0
- package/dist/providers/manifest-models.d.ts +341 -1
- package/dist/providers/manifest-models.d.ts.map +1 -1
- package/dist/providers/manifest-models.js +1106 -22
- package/dist/providers/manifest-models.js.map +1 -1
- package/dist/providers/media-mime.d.ts +14 -0
- package/dist/providers/media-mime.d.ts.map +1 -0
- package/dist/providers/media-mime.js +35 -0
- package/dist/providers/media-mime.js.map +1 -0
- package/dist/providers/meshy-provider.d.ts +16 -2
- package/dist/providers/meshy-provider.d.ts.map +1 -1
- package/dist/providers/meshy-provider.js +82 -46
- package/dist/providers/meshy-provider.js.map +1 -1
- package/dist/providers/meta-provider.d.ts +22 -0
- package/dist/providers/meta-provider.d.ts.map +1 -0
- package/dist/providers/meta-provider.js +54 -0
- package/dist/providers/meta-provider.js.map +1 -0
- package/dist/providers/minimax-provider.d.ts +27 -18
- package/dist/providers/minimax-provider.d.ts.map +1 -1
- package/dist/providers/minimax-provider.js +222 -72
- package/dist/providers/minimax-provider.js.map +1 -1
- package/dist/providers/mistral-provider.d.ts +8 -12
- package/dist/providers/mistral-provider.d.ts.map +1 -1
- package/dist/providers/mistral-provider.js +15 -34
- package/dist/providers/mistral-provider.js.map +1 -1
- package/dist/providers/moonshot-provider.d.ts +11 -15
- package/dist/providers/moonshot-provider.d.ts.map +1 -1
- package/dist/providers/moonshot-provider.js +33 -23
- package/dist/providers/moonshot-provider.js.map +1 -1
- package/dist/providers/node-llama-cpp-provider.d.ts +99 -0
- package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
- package/dist/providers/node-llama-cpp-provider.js +484 -0
- package/dist/providers/node-llama-cpp-provider.js.map +1 -0
- package/dist/providers/nodetool-provider.d.ts +49 -0
- package/dist/providers/nodetool-provider.d.ts.map +1 -0
- package/dist/providers/nodetool-provider.js +222 -0
- package/dist/providers/nodetool-provider.js.map +1 -0
- package/dist/providers/oauth/browser-launcher.d.ts +23 -0
- package/dist/providers/oauth/browser-launcher.d.ts.map +1 -0
- package/dist/providers/oauth/browser-launcher.js +45 -0
- package/dist/providers/oauth/browser-launcher.js.map +1 -0
- package/dist/providers/oauth/claude-code-credentials.d.ts +74 -0
- package/dist/providers/oauth/claude-code-credentials.d.ts.map +1 -0
- package/dist/providers/oauth/claude-code-credentials.js +133 -0
- package/dist/providers/oauth/claude-code-credentials.js.map +1 -0
- package/dist/providers/oauth/claude-code-login.d.ts +124 -0
- package/dist/providers/oauth/claude-code-login.d.ts.map +1 -0
- package/dist/providers/oauth/claude-code-login.js +230 -0
- package/dist/providers/oauth/claude-code-login.js.map +1 -0
- package/dist/providers/oauth/claude-code-oauth-client.d.ts +111 -0
- package/dist/providers/oauth/claude-code-oauth-client.d.ts.map +1 -0
- package/dist/providers/oauth/claude-code-oauth-client.js +207 -0
- package/dist/providers/oauth/claude-code-oauth-client.js.map +1 -0
- package/dist/providers/oauth/errors.d.ts +54 -0
- package/dist/providers/oauth/errors.d.ts.map +1 -0
- package/dist/providers/oauth/errors.js +79 -0
- package/dist/providers/oauth/errors.js.map +1 -0
- package/dist/providers/oauth/index.d.ts +105 -0
- package/dist/providers/oauth/index.d.ts.map +1 -0
- package/dist/providers/oauth/index.js +167 -0
- package/dist/providers/oauth/index.js.map +1 -0
- package/dist/providers/oauth/jwt-claims.d.ts +23 -0
- package/dist/providers/oauth/jwt-claims.d.ts.map +1 -0
- package/dist/providers/oauth/jwt-claims.js +67 -0
- package/dist/providers/oauth/jwt-claims.js.map +1 -0
- package/dist/providers/oauth/local-callback-server.d.ts +60 -0
- package/dist/providers/oauth/local-callback-server.d.ts.map +1 -0
- package/dist/providers/oauth/local-callback-server.js +148 -0
- package/dist/providers/oauth/local-callback-server.js.map +1 -0
- package/dist/providers/oauth/oauth-client.d.ts +55 -0
- package/dist/providers/oauth/oauth-client.d.ts.map +1 -0
- package/dist/providers/oauth/oauth-client.js +161 -0
- package/dist/providers/oauth/oauth-client.js.map +1 -0
- package/dist/providers/oauth/openai-oauth-provider.d.ts +129 -0
- package/dist/providers/oauth/openai-oauth-provider.d.ts.map +1 -0
- package/dist/providers/oauth/openai-oauth-provider.js +265 -0
- package/dist/providers/oauth/openai-oauth-provider.js.map +1 -0
- package/dist/providers/oauth/pkce-helper.d.ts +43 -0
- package/dist/providers/oauth/pkce-helper.d.ts.map +1 -0
- package/dist/providers/oauth/pkce-helper.js +57 -0
- package/dist/providers/oauth/pkce-helper.js.map +1 -0
- package/dist/providers/oauth/redaction.d.ts +22 -0
- package/dist/providers/oauth/redaction.d.ts.map +1 -0
- package/dist/providers/oauth/redaction.js +59 -0
- package/dist/providers/oauth/redaction.js.map +1 -0
- package/dist/providers/oauth/secure-credential-store.d.ts +67 -0
- package/dist/providers/oauth/secure-credential-store.d.ts.map +1 -0
- package/dist/providers/oauth/secure-credential-store.js +73 -0
- package/dist/providers/oauth/secure-credential-store.js.map +1 -0
- package/dist/providers/oauth/token-store.d.ts +53 -0
- package/dist/providers/oauth/token-store.d.ts.map +1 -0
- package/dist/providers/oauth/token-store.js +78 -0
- package/dist/providers/oauth/token-store.js.map +1 -0
- package/dist/providers/oauth/types.d.ts +64 -0
- package/dist/providers/oauth/types.d.ts.map +1 -0
- package/dist/providers/oauth/types.js +12 -0
- package/dist/providers/oauth/types.js.map +1 -0
- package/dist/providers/object-tracking.d.ts +47 -0
- package/dist/providers/object-tracking.d.ts.map +1 -0
- package/dist/providers/object-tracking.js +46 -0
- package/dist/providers/object-tracking.js.map +1 -0
- package/dist/providers/offline-model-index.d.ts +20 -0
- package/dist/providers/offline-model-index.d.ts.map +1 -0
- package/dist/providers/offline-model-index.js +112 -0
- package/dist/providers/offline-model-index.js.map +1 -0
- package/dist/providers/ollama-provider.d.ts +30 -2
- package/dist/providers/ollama-provider.d.ts.map +1 -1
- package/dist/providers/ollama-provider.js +198 -43
- package/dist/providers/ollama-provider.js.map +1 -1
- package/dist/providers/openai-compat/client.d.ts +57 -0
- package/dist/providers/openai-compat/client.d.ts.map +1 -0
- package/dist/providers/openai-compat/client.js +157 -0
- package/dist/providers/openai-compat/client.js.map +1 -0
- package/dist/providers/openai-compat/decode.d.ts +36 -0
- package/dist/providers/openai-compat/decode.d.ts.map +1 -0
- package/dist/providers/openai-compat/decode.js +55 -0
- package/dist/providers/openai-compat/decode.js.map +1 -0
- package/dist/providers/openai-compat/errors.d.ts +54 -0
- package/dist/providers/openai-compat/errors.d.ts.map +1 -0
- package/dist/providers/openai-compat/errors.js +144 -0
- package/dist/providers/openai-compat/errors.js.map +1 -0
- package/dist/providers/openai-compat/index.d.ts +8 -0
- package/dist/providers/openai-compat/index.d.ts.map +1 -0
- package/dist/providers/openai-compat/index.js +5 -0
- package/dist/providers/openai-compat/index.js.map +1 -0
- package/dist/providers/openai-compat/sse.d.ts +14 -0
- package/dist/providers/openai-compat/sse.d.ts.map +1 -0
- package/dist/providers/openai-compat/sse.js +69 -0
- package/dist/providers/openai-compat/sse.js.map +1 -0
- package/dist/providers/openai-compat/types.d.ts +75 -0
- package/dist/providers/openai-compat/types.d.ts.map +1 -0
- package/dist/providers/openai-compat/types.js +9 -0
- package/dist/providers/openai-compat/types.js.map +1 -0
- package/dist/providers/openai-compat-provider.d.ts +90 -0
- package/dist/providers/openai-compat-provider.d.ts.map +1 -0
- package/dist/providers/openai-compat-provider.js +282 -0
- package/dist/providers/openai-compat-provider.js.map +1 -0
- package/dist/providers/openai-provider.d.ts +98 -27
- package/dist/providers/openai-provider.d.ts.map +1 -1
- package/dist/providers/openai-provider.js +1037 -105
- package/dist/providers/openai-provider.js.map +1 -1
- package/dist/providers/openrouter-provider.d.ts +58 -13
- package/dist/providers/openrouter-provider.d.ts.map +1 -1
- package/dist/providers/openrouter-provider.js +383 -51
- package/dist/providers/openrouter-provider.js.map +1 -1
- package/dist/providers/provider-call-failure.d.ts +39 -0
- package/dist/providers/provider-call-failure.d.ts.map +1 -0
- package/dist/providers/provider-call-failure.js +132 -0
- package/dist/providers/provider-call-failure.js.map +1 -0
- package/dist/providers/provider-error.d.ts +59 -0
- package/dist/providers/provider-error.d.ts.map +1 -0
- package/dist/providers/provider-error.js +171 -0
- package/dist/providers/provider-error.js.map +1 -0
- package/dist/providers/provider-generations.d.ts +99 -0
- package/dist/providers/provider-generations.d.ts.map +1 -0
- package/dist/providers/provider-generations.js +71 -0
- package/dist/providers/provider-generations.js.map +1 -0
- package/dist/providers/provider-queue.d.ts +62 -0
- package/dist/providers/provider-queue.d.ts.map +1 -0
- package/dist/providers/provider-queue.js +28 -0
- package/dist/providers/provider-queue.js.map +1 -0
- package/dist/providers/provider-registry.d.ts +33 -14
- package/dist/providers/provider-registry.d.ts.map +1 -1
- package/dist/providers/provider-registry.js +85 -68
- package/dist/providers/provider-registry.js.map +1 -1
- package/dist/providers/provider-request-log.d.ts +53 -0
- package/dist/providers/provider-request-log.d.ts.map +1 -0
- package/dist/providers/provider-request-log.js +168 -0
- package/dist/providers/provider-request-log.js.map +1 -0
- package/dist/providers/provider-session.d.ts +3 -0
- package/dist/providers/provider-session.d.ts.map +1 -0
- package/dist/providers/provider-session.js +10 -0
- package/dist/providers/provider-session.js.map +1 -0
- package/dist/providers/provider-transport.d.ts +11 -0
- package/dist/providers/provider-transport.d.ts.map +1 -0
- package/dist/providers/provider-transport.js +11 -0
- package/dist/providers/provider-transport.js.map +1 -0
- package/dist/providers/python-provider.d.ts +26 -13
- package/dist/providers/python-provider.d.ts.map +1 -1
- package/dist/providers/python-provider.js +204 -25
- package/dist/providers/python-provider.js.map +1 -1
- package/dist/providers/replicate-provider.d.ts +91 -8
- package/dist/providers/replicate-provider.d.ts.map +1 -1
- package/dist/providers/replicate-provider.js +823 -65
- package/dist/providers/replicate-provider.js.map +1 -1
- package/dist/providers/replicate-retry.d.ts +30 -0
- package/dist/providers/replicate-retry.d.ts.map +1 -0
- package/dist/providers/replicate-retry.js +97 -0
- package/dist/providers/replicate-retry.js.map +1 -0
- package/dist/providers/requesty-provider.d.ts +30 -0
- package/dist/providers/requesty-provider.d.ts.map +1 -0
- package/dist/providers/requesty-provider.js +87 -0
- package/dist/providers/requesty-provider.js.map +1 -0
- package/dist/providers/responses-api.d.ts +27 -0
- package/dist/providers/responses-api.d.ts.map +1 -0
- package/dist/providers/responses-api.js +297 -0
- package/dist/providers/responses-api.js.map +1 -0
- package/dist/providers/reve-provider.d.ts +46 -0
- package/dist/providers/reve-provider.d.ts.map +1 -0
- package/dist/providers/reve-provider.js +165 -0
- package/dist/providers/reve-provider.js.map +1 -0
- package/dist/providers/rodin-provider.d.ts +25 -2
- package/dist/providers/rodin-provider.d.ts.map +1 -1
- package/dist/providers/rodin-provider.js +95 -51
- package/dist/providers/rodin-provider.js.map +1 -1
- package/dist/providers/safe-url.d.ts +70 -0
- package/dist/providers/safe-url.d.ts.map +1 -0
- package/dist/providers/safe-url.js +277 -0
- package/dist/providers/safe-url.js.map +1 -0
- package/dist/providers/scripted-provider.d.ts +9 -0
- package/dist/providers/scripted-provider.d.ts.map +1 -1
- package/dist/providers/scripted-provider.js +86 -10
- package/dist/providers/scripted-provider.js.map +1 -1
- package/dist/providers/structured-output.d.ts +42 -0
- package/dist/providers/structured-output.d.ts.map +1 -0
- package/dist/providers/structured-output.js +83 -0
- package/dist/providers/structured-output.js.map +1 -0
- package/dist/providers/together-operations.d.ts +27 -0
- package/dist/providers/together-operations.d.ts.map +1 -0
- package/dist/providers/together-operations.js +95 -0
- package/dist/providers/together-operations.js.map +1 -0
- package/dist/providers/together-provider.d.ts +18 -18
- package/dist/providers/together-provider.d.ts.map +1 -1
- package/dist/providers/together-provider.js +140 -367
- package/dist/providers/together-provider.js.map +1 -1
- package/dist/providers/topaz-provider.d.ts +45 -0
- package/dist/providers/topaz-provider.d.ts.map +1 -0
- package/dist/providers/topaz-provider.js +244 -0
- package/dist/providers/topaz-provider.js.map +1 -0
- package/dist/providers/types.d.ts +641 -4
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +81 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/providers/useapi-provider.d.ts +28 -0
- package/dist/providers/useapi-provider.d.ts.map +1 -0
- package/dist/providers/useapi-provider.js +274 -0
- package/dist/providers/useapi-provider.js.map +1 -0
- package/dist/providers/video-duration.d.ts +6 -0
- package/dist/providers/video-duration.d.ts.map +1 -0
- package/dist/providers/video-duration.js +63 -0
- package/dist/providers/video-duration.js.map +1 -0
- package/dist/providers/video-frame-fallback.d.ts +39 -0
- package/dist/providers/video-frame-fallback.d.ts.map +1 -0
- package/dist/providers/video-frame-fallback.js +155 -0
- package/dist/providers/video-frame-fallback.js.map +1 -0
- package/dist/providers/video-frames.d.ts +61 -0
- package/dist/providers/video-frames.d.ts.map +1 -0
- package/dist/providers/video-frames.js +208 -0
- package/dist/providers/video-frames.js.map +1 -0
- package/dist/providers/video-mime.d.ts +14 -0
- package/dist/providers/video-mime.d.ts.map +1 -0
- package/dist/providers/video-mime.js +44 -0
- package/dist/providers/video-mime.js.map +1 -0
- package/dist/providers/video-to-audio.d.ts +34 -0
- package/dist/providers/video-to-audio.d.ts.map +1 -0
- package/dist/providers/video-to-audio.js +62 -0
- package/dist/providers/video-to-audio.js.map +1 -0
- package/dist/providers/vllm-provider.d.ts +20 -8
- package/dist/providers/vllm-provider.d.ts.map +1 -1
- package/dist/providers/vllm-provider.js +44 -23
- package/dist/providers/vllm-provider.js.map +1 -1
- package/dist/providers/voyage-provider.d.ts +12 -3
- package/dist/providers/voyage-provider.d.ts.map +1 -1
- package/dist/providers/voyage-provider.js +21 -7
- package/dist/providers/voyage-provider.js.map +1 -1
- package/dist/providers/xai-provider.d.ts +56 -13
- package/dist/providers/xai-provider.d.ts.map +1 -1
- package/dist/providers/xai-provider.js +307 -22
- package/dist/providers/xai-provider.js.map +1 -1
- package/dist/python-bridge-base.d.ts +358 -0
- package/dist/python-bridge-base.d.ts.map +1 -0
- package/dist/python-bridge-base.js +1557 -0
- package/dist/python-bridge-base.js.map +1 -0
- package/dist/python-bridge-codec.d.ts +28 -0
- package/dist/python-bridge-codec.d.ts.map +1 -0
- package/dist/python-bridge-codec.js +39 -0
- package/dist/python-bridge-codec.js.map +1 -0
- package/dist/python-bridge-factory.d.ts +52 -0
- package/dist/python-bridge-factory.d.ts.map +1 -0
- package/dist/python-bridge-factory.js +69 -0
- package/dist/python-bridge-factory.js.map +1 -0
- package/dist/python-bridge-framing.d.ts +68 -0
- package/dist/python-bridge-framing.d.ts.map +1 -0
- package/dist/python-bridge-framing.js +91 -0
- package/dist/python-bridge-framing.js.map +1 -0
- package/dist/python-bridge-types.d.ts +545 -2
- package/dist/python-bridge-types.d.ts.map +1 -1
- package/dist/python-bridge-types.js +49 -1
- package/dist/python-bridge-types.js.map +1 -1
- package/dist/python-graph-resolver.d.ts +57 -0
- package/dist/python-graph-resolver.d.ts.map +1 -0
- package/dist/python-graph-resolver.js +79 -0
- package/dist/python-graph-resolver.js.map +1 -0
- package/dist/python-node-executor.d.ts +36 -4
- package/dist/python-node-executor.d.ts.map +1 -1
- package/dist/python-node-executor.js +177 -86
- package/dist/python-node-executor.js.map +1 -1
- package/dist/python-stdio-bridge.d.ts +18 -37
- package/dist/python-stdio-bridge.d.ts.map +1 -1
- package/dist/python-stdio-bridge.js +148 -475
- package/dist/python-stdio-bridge.js.map +1 -1
- package/dist/python-websocket-bridge.d.ts +140 -0
- package/dist/python-websocket-bridge.d.ts.map +1 -0
- package/dist/python-websocket-bridge.js +561 -0
- package/dist/python-websocket-bridge.js.map +1 -0
- package/dist/python-worker-stderr.d.ts +4 -0
- package/dist/python-worker-stderr.d.ts.map +1 -0
- package/dist/python-worker-stderr.js +24 -0
- package/dist/python-worker-stderr.js.map +1 -0
- package/dist/recommended-models.d.ts +2 -2
- package/dist/recommended-models.d.ts.map +1 -1
- package/dist/recommended-models.js +44 -4
- package/dist/recommended-models.js.map +1 -1
- package/dist/recoverable-node-error.d.ts +31 -0
- package/dist/recoverable-node-error.d.ts.map +1 -0
- package/dist/recoverable-node-error.js +37 -0
- package/dist/recoverable-node-error.js.map +1 -0
- package/dist/redact-params.d.ts +13 -0
- package/dist/redact-params.d.ts.map +1 -0
- package/dist/redact-params.js +57 -0
- package/dist/redact-params.js.map +1 -0
- package/dist/run-context.d.ts +20 -0
- package/dist/run-context.d.ts.map +1 -0
- package/dist/run-context.js +18 -0
- package/dist/run-context.js.map +1 -0
- package/dist/run-trace-context.d.ts +30 -0
- package/dist/run-trace-context.d.ts.map +1 -0
- package/dist/run-trace-context.js +80 -0
- package/dist/run-trace-context.js.map +1 -0
- package/dist/run-trace-processor.d.ts +65 -0
- package/dist/run-trace-processor.d.ts.map +1 -0
- package/dist/run-trace-processor.js +417 -0
- package/dist/run-trace-processor.js.map +1 -0
- package/dist/run-trace-serialization.d.ts +5 -0
- package/dist/run-trace-serialization.d.ts.map +1 -0
- package/dist/run-trace-serialization.js +113 -0
- package/dist/run-trace-serialization.js.map +1 -0
- package/dist/sandbox-module-catalog.d.ts +43 -0
- package/dist/sandbox-module-catalog.d.ts.map +1 -0
- package/dist/sandbox-module-catalog.js +25 -0
- package/dist/sandbox-module-catalog.js.map +1 -0
- package/dist/storage-workspace.d.ts +62 -0
- package/dist/storage-workspace.d.ts.map +1 -0
- package/dist/storage-workspace.js +441 -0
- package/dist/storage-workspace.js.map +1 -0
- package/dist/swappable-python-bridge.d.ts +83 -0
- package/dist/swappable-python-bridge.d.ts.map +1 -0
- package/dist/swappable-python-bridge.js +246 -0
- package/dist/swappable-python-bridge.js.map +1 -0
- package/dist/telemetry.d.ts +16 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +76 -20
- package/dist/telemetry.js.map +1 -1
- package/dist/testing.d.ts +81 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +130 -0
- package/dist/testing.js.map +1 -0
- package/dist/token-counter.d.ts +30 -0
- package/dist/token-counter.d.ts.map +1 -0
- package/dist/token-counter.js +156 -0
- package/dist/token-counter.js.map +1 -0
- package/dist/trace-exporters.d.ts +11 -28
- package/dist/trace-exporters.d.ts.map +1 -1
- package/dist/trace-exporters.js +69 -22
- package/dist/trace-exporters.js.map +1 -1
- package/dist/tracing-helpers.d.ts +60 -26
- package/dist/tracing-helpers.d.ts.map +1 -1
- package/dist/tracing-helpers.js +100 -25
- package/dist/tracing-helpers.js.map +1 -1
- package/dist/trim-video-window.d.ts +8 -0
- package/dist/trim-video-window.d.ts.map +1 -0
- package/dist/trim-video-window.js +50 -0
- package/dist/trim-video-window.js.map +1 -0
- package/dist/turn-budget.d.ts +278 -0
- package/dist/turn-budget.d.ts.map +1 -0
- package/dist/turn-budget.js +365 -0
- package/dist/turn-budget.js.map +1 -0
- package/dist/variable-channel.d.ts +48 -0
- package/dist/variable-channel.d.ts.map +1 -0
- package/dist/variable-channel.js +110 -0
- package/dist/variable-channel.js.map +1 -0
- package/dist/workspace.d.ts +119 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +112 -0
- package/dist/workspace.js.map +1 -0
- 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 {
|
|
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
|
-
|
|
20
|
-
|
|
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(
|
|
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(
|
|
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
|
|
1
|
+
{"version":3,"file":"fal-provider.d.ts","sourceRoot":"","sources":["../../src/providers/fal-provider.ts"],"names":[],"mappings":"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"}
|