@nodetool-ai/runtime 0.7.0-rc.23 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +954 -127
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +2424 -513
- 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 +67 -0
- package/dist/generation-registry.d.ts.map +1 -0
- package/dist/generation-registry.js +126 -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 +344 -0
- package/dist/host-binaries.js.map +1 -0
- package/dist/image-codec.d.ts +74 -0
- package/dist/image-codec.d.ts.map +1 -0
- package/dist/image-codec.js +273 -0
- package/dist/image-codec.js.map +1 -0
- package/dist/index.d.ts +56 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -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 +19 -0
- package/dist/media-ref-bytes.d.ts.map +1 -0
- package/dist/media-ref-bytes.js +181 -0
- package/dist/media-ref-bytes.js.map +1 -0
- package/dist/node-executor.d.ts +113 -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 +33 -10
- package/dist/providers/aki-provider.d.ts.map +1 -1
- package/dist/providers/aki-provider.js +84 -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 +101 -0
- package/dist/providers/atlascloud-provider.d.ts.map +1 -0
- package/dist/providers/atlascloud-provider.js +1009 -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 +481 -24
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +1259 -42
- 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 +131 -68
- package/dist/providers/claude-agent-provider.d.ts.map +1 -1
- package/dist/providers/claude-agent-provider.js +1095 -515
- package/dist/providers/claude-agent-provider.js.map +1 -1
- package/dist/providers/codex-provider.d.ts +82 -0
- package/dist/providers/codex-provider.d.ts.map +1 -0
- package/dist/providers/codex-provider.js +492 -0
- package/dist/providers/codex-provider.js.map +1 -0
- package/dist/providers/cohere-provider.d.ts +5 -2
- package/dist/providers/cohere-provider.d.ts.map +1 -1
- package/dist/providers/cohere-provider.js +9 -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 +74 -0
- package/dist/providers/core-tools.d.ts.map +1 -0
- package/dist/providers/core-tools.js +127 -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 +159 -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 +81 -0
- package/dist/providers/custom-openai-provider.d.ts.map +1 -0
- package/dist/providers/custom-openai-provider.js +182 -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/elevenlabs-provider.d.ts +49 -0
- package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
- package/dist/providers/elevenlabs-provider.js +142 -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 +38 -0
- package/dist/providers/evolink-provider.d.ts.map +1 -0
- package/dist/providers/evolink-provider.js +304 -0
- package/dist/providers/evolink-provider.js.map +1 -0
- package/dist/providers/fake-provider.d.ts +72 -1
- package/dist/providers/fake-provider.d.ts.map +1 -1
- package/dist/providers/fake-provider.js +203 -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 +171 -7
- package/dist/providers/fal-provider.d.ts.map +1 -1
- package/dist/providers/fal-provider.js +1369 -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 +148 -8
- package/dist/providers/gemini-provider.d.ts.map +1 -1
- package/dist/providers/gemini-provider.js +1500 -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 +30 -0
- package/dist/providers/higgsfield-provider.d.ts.map +1 -0
- package/dist/providers/higgsfield-provider.js +131 -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 +71 -3
- package/dist/providers/huggingface-provider.d.ts.map +1 -1
- package/dist/providers/huggingface-provider.js +230 -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 +84 -8
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +239 -56
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jina-provider.d.ts +10 -2
- package/dist/providers/jina-provider.d.ts.map +1 -1
- package/dist/providers/jina-provider.js +16 -7
- package/dist/providers/jina-provider.js.map +1 -1
- package/dist/providers/kie-provider.d.ts +170 -9
- package/dist/providers/kie-provider.d.ts.map +1 -1
- package/dist/providers/kie-provider.js +1176 -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 +21 -37
- package/dist/providers/llama-provider.d.ts.map +1 -1
- package/dist/providers/llama-provider.js +43 -354
- 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/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 +14 -1
- package/dist/providers/meshy-provider.d.ts.map +1 -1
- package/dist/providers/meshy-provider.js +76 -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 +25 -18
- package/dist/providers/minimax-provider.d.ts.map +1 -1
- package/dist/providers/minimax-provider.js +211 -72
- package/dist/providers/minimax-provider.js.map +1 -1
- package/dist/providers/mistral-provider.d.ts +6 -12
- package/dist/providers/mistral-provider.d.ts.map +1 -1
- package/dist/providers/mistral-provider.js +10 -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 +98 -0
- package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
- package/dist/providers/node-llama-cpp-provider.js +479 -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 +224 -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 +28 -1
- package/dist/providers/ollama-provider.d.ts.map +1 -1
- package/dist/providers/ollama-provider.js +193 -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 +89 -26
- package/dist/providers/openai-provider.d.ts.map +1 -1
- package/dist/providers/openai-provider.js +990 -105
- package/dist/providers/openai-provider.js.map +1 -1
- package/dist/providers/openrouter-provider.d.ts +6 -12
- package/dist/providers/openrouter-provider.d.ts.map +1 -1
- package/dist/providers/openrouter-provider.js +24 -53
- 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 +165 -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 +157 -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 +20 -12
- package/dist/providers/python-provider.d.ts.map +1 -1
- package/dist/providers/python-provider.js +185 -25
- package/dist/providers/python-provider.js.map +1 -1
- package/dist/providers/replicate-provider.d.ts +89 -7
- package/dist/providers/replicate-provider.d.ts.map +1 -1
- package/dist/providers/replicate-provider.js +801 -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/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 +45 -0
- package/dist/providers/reve-provider.d.ts.map +1 -0
- package/dist/providers/reve-provider.js +159 -0
- package/dist/providers/reve-provider.js.map +1 -0
- package/dist/providers/rodin-provider.d.ts +23 -1
- package/dist/providers/rodin-provider.d.ts.map +1 -1
- package/dist/providers/rodin-provider.js +89 -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-provider.d.ts +19 -16
- package/dist/providers/together-provider.d.ts.map +1 -1
- package/dist/providers/together-provider.js +103 -225
- package/dist/providers/together-provider.js.map +1 -1
- package/dist/providers/topaz-provider.d.ts +44 -0
- package/dist/providers/topaz-provider.d.ts.map +1 -0
- package/dist/providers/topaz-provider.js +239 -0
- package/dist/providers/topaz-provider.js.map +1 -0
- package/dist/providers/types.d.ts +603 -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 +27 -0
- package/dist/providers/useapi-provider.d.ts.map +1 -0
- package/dist/providers/useapi-provider.js +266 -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 +22 -8
- package/dist/providers/vllm-provider.d.ts.map +1 -1
- package/dist/providers/vllm-provider.js +48 -23
- package/dist/providers/vllm-provider.js.map +1 -1
- package/dist/providers/voyage-provider.d.ts +10 -2
- package/dist/providers/voyage-provider.d.ts.map +1 -1
- package/dist/providers/voyage-provider.js +16 -7
- package/dist/providers/voyage-provider.js.map +1 -1
- package/dist/providers/xai-provider.d.ts +54 -13
- package/dist/providers/xai-provider.d.ts.map +1 -1
- package/dist/providers/xai-provider.js +299 -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 +24 -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/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 +59 -0
- package/dist/storage-workspace.d.ts.map +1 -0
- package/dist/storage-workspace.js +426 -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 +7 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +23 -0
- 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 +10 -0
- package/dist/trace-exporters.d.ts.map +1 -1
- package/dist/trace-exporters.js +59 -20
- package/dist/trace-exporters.js.map +1 -1
- package/dist/tracing-helpers.d.ts +45 -4
- package/dist/tracing-helpers.d.ts.map +1 -1
- package/dist/tracing-helpers.js +62 -19
- package/dist/tracing-helpers.js.map +1 -1
- 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 +107 -19
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire types for the internal OpenAI-compatible Chat Completions client.
|
|
3
|
+
*
|
|
4
|
+
* These model only the fields NodeTool reads or writes — not the full OpenAI
|
|
5
|
+
* schema. Gateways diverge from OpenAI in the long tail, so every response
|
|
6
|
+
* field is optional and unknown extra request params ride the index signature.
|
|
7
|
+
*/
|
|
8
|
+
/** Request body for `POST /chat/completions`. */
|
|
9
|
+
export interface ChatCompletionsRequest {
|
|
10
|
+
model: string;
|
|
11
|
+
messages: Array<Record<string, unknown>>;
|
|
12
|
+
stream?: boolean;
|
|
13
|
+
/** Extra params (temperature, tools, stream_options, …) pass through as-is. */
|
|
14
|
+
[param: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface ChatCompletionUsage {
|
|
17
|
+
prompt_tokens?: number;
|
|
18
|
+
completion_tokens?: number;
|
|
19
|
+
total_tokens?: number;
|
|
20
|
+
prompt_tokens_details?: {
|
|
21
|
+
cached_tokens?: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface ChatCompletionToolCallFunction {
|
|
25
|
+
name?: string | null;
|
|
26
|
+
arguments?: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface ChatCompletionMessageToolCall {
|
|
29
|
+
id?: string | null;
|
|
30
|
+
type?: string;
|
|
31
|
+
function?: ChatCompletionToolCallFunction;
|
|
32
|
+
}
|
|
33
|
+
export interface ChatCompletionAssistantMessage {
|
|
34
|
+
role?: string;
|
|
35
|
+
content?: string | null;
|
|
36
|
+
tool_calls?: ChatCompletionMessageToolCall[] | null;
|
|
37
|
+
}
|
|
38
|
+
export interface ChatCompletionChoice {
|
|
39
|
+
index?: number;
|
|
40
|
+
message?: ChatCompletionAssistantMessage;
|
|
41
|
+
finish_reason?: string | null;
|
|
42
|
+
}
|
|
43
|
+
/** Non-streaming response from `POST /chat/completions`. */
|
|
44
|
+
export interface ChatCompletionResponse {
|
|
45
|
+
id?: string;
|
|
46
|
+
model?: string;
|
|
47
|
+
choices?: ChatCompletionChoice[];
|
|
48
|
+
usage?: ChatCompletionUsage | null;
|
|
49
|
+
}
|
|
50
|
+
export interface ChatCompletionChunkDeltaToolCall {
|
|
51
|
+
index?: number;
|
|
52
|
+
id?: string | null;
|
|
53
|
+
function?: ChatCompletionToolCallFunction;
|
|
54
|
+
}
|
|
55
|
+
export interface ChatCompletionChunkDelta {
|
|
56
|
+
content?: string | null;
|
|
57
|
+
tool_calls?: ChatCompletionChunkDeltaToolCall[] | null;
|
|
58
|
+
/** Audio-output models (`modalities: ["text","audio"]`) stream base64 here. */
|
|
59
|
+
audio?: {
|
|
60
|
+
data?: string;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface ChatCompletionChunkChoice {
|
|
64
|
+
index?: number;
|
|
65
|
+
delta?: ChatCompletionChunkDelta;
|
|
66
|
+
finish_reason?: string | null;
|
|
67
|
+
}
|
|
68
|
+
/** One SSE chunk of a streaming chat completion. */
|
|
69
|
+
export interface ChatCompletionChunk {
|
|
70
|
+
id?: string;
|
|
71
|
+
model?: string;
|
|
72
|
+
choices?: ChatCompletionChunkChoice[];
|
|
73
|
+
usage?: ChatCompletionUsage | null;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/openai-compat/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,6BAA6B,EAAE,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,gCAAgC,EAAE,GAAG,IAAI,CAAC;IACvD,+EAA+E;IAC/E,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire types for the internal OpenAI-compatible Chat Completions client.
|
|
3
|
+
*
|
|
4
|
+
* These model only the fields NodeTool reads or writes — not the full OpenAI
|
|
5
|
+
* schema. Gateways diverge from OpenAI in the long tail, so every response
|
|
6
|
+
* field is optional and unknown extra request params ride the index signature.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/openai-compat/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for providers that speak the OpenAI Chat Completions dialect
|
|
3
|
+
* against a non-OpenAI endpoint (Groq, Cerebras, xAI, Mistral, DeepSeek, …).
|
|
4
|
+
*
|
|
5
|
+
* Chat — the only surface these providers ever used the `openai` npm package
|
|
6
|
+
* for — runs on the internal {@link OpenAICompatClient} over `fetch`. The SDK
|
|
7
|
+
* client inherited from {@link OpenAIProvider} remains as a lazily-created
|
|
8
|
+
* fallback for the OpenAI-compatible media/embedding endpoints some gateways
|
|
9
|
+
* also expose (Together ASR, OpenRouter images, Mistral embeddings); it is
|
|
10
|
+
* never constructed on the chat path.
|
|
11
|
+
*/
|
|
12
|
+
import OpenAI from "openai";
|
|
13
|
+
import { OpenAIProvider } from "./openai-provider.js";
|
|
14
|
+
import { OpenAICompatClient, type ChatCompletionsRequest } from "./openai-compat/index.js";
|
|
15
|
+
import type { LanguageModel, Message, ProviderId, ProviderStreamItem } from "./types.js";
|
|
16
|
+
import type { BaseProvider } from "./base-provider.js";
|
|
17
|
+
interface OpenAICompatConfig {
|
|
18
|
+
/** Provider id reported by this instance (e.g. `"groq"`). */
|
|
19
|
+
providerId: ProviderId;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
/** Chat endpoint root, e.g. `https://api.groq.com/openai/v1`. */
|
|
22
|
+
baseURL: string;
|
|
23
|
+
/** Extra headers on every chat request (gateway attribution etc.). */
|
|
24
|
+
defaultHeaders?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
export interface OpenAICompatProviderOptions {
|
|
27
|
+
/** SDK client used only by inherited non-chat surfaces (images, ASR, …). */
|
|
28
|
+
client?: OpenAI;
|
|
29
|
+
clientFactory?: (apiKey: string) => OpenAI;
|
|
30
|
+
fetchFn?: typeof fetch;
|
|
31
|
+
/** Internal chat client override (tests). */
|
|
32
|
+
compatClient?: OpenAICompatClient;
|
|
33
|
+
}
|
|
34
|
+
/** One row of a `GET /models` listing: an id plus whatever else the vendor sent. */
|
|
35
|
+
export type CompatModelRow = Record<string, unknown> & {
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
export declare class OpenAICompatProvider extends OpenAIProvider {
|
|
39
|
+
private _compatClient;
|
|
40
|
+
private readonly _compatConfig;
|
|
41
|
+
private readonly _compatFetch;
|
|
42
|
+
constructor(config: OpenAICompatConfig, options?: OpenAICompatProviderOptions);
|
|
43
|
+
/** The injected (or global) `fetch`, for surfaces this class does not cover. */
|
|
44
|
+
protected get compatFetch(): typeof fetch;
|
|
45
|
+
/** Chat endpoint root this instance was configured with. */
|
|
46
|
+
protected get compatBaseURL(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Decode an OpenAI-shaped `GET /models` listing into language models tagged
|
|
49
|
+
* with this provider's id.
|
|
50
|
+
*
|
|
51
|
+
* A failed request answers `[]` rather than throwing: model discovery runs
|
|
52
|
+
* on every picker open, across every configured provider, and one bad key
|
|
53
|
+
* must not break the others. The status is logged so a user staring at an
|
|
54
|
+
* empty list can find the 401 in the log.
|
|
55
|
+
*/
|
|
56
|
+
protected listCompatModels(url?: string, init?: {
|
|
57
|
+
headers?: Record<string, string>;
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
}): Promise<LanguageModel[]>;
|
|
60
|
+
/**
|
|
61
|
+
* The raw rows of an OpenAI-shaped `GET /models` listing, keeping every
|
|
62
|
+
* field the endpoint sent so callers can read vendor metadata (a `type`,
|
|
63
|
+
* output modalities) beyond the id. Rows without a string id are dropped;
|
|
64
|
+
* a failed request answers `[]` for the reason given on
|
|
65
|
+
* {@link listCompatModels}.
|
|
66
|
+
*/
|
|
67
|
+
protected fetchCompatModelRows(url?: string, init?: {
|
|
68
|
+
headers?: Record<string, string>;
|
|
69
|
+
signal?: AbortSignal;
|
|
70
|
+
}): Promise<CompatModelRow[]>;
|
|
71
|
+
protected getCompatClient(): OpenAICompatClient;
|
|
72
|
+
/** Shared request assembly for both streaming and non-streaming chat. */
|
|
73
|
+
private buildChatRequest;
|
|
74
|
+
/**
|
|
75
|
+
* Last edit of the assembled request before dispatch. Subclasses override
|
|
76
|
+
* this when their endpoint deviates from OpenAI's dialect — e.g. a provider
|
|
77
|
+
* that only accepts `max_tokens` instead of `max_completion_tokens`.
|
|
78
|
+
*/
|
|
79
|
+
protected transformChatRequest(request: ChatCompletionsRequest): ChatCompletionsRequest;
|
|
80
|
+
/**
|
|
81
|
+
* Provider-specific classification for an OpenAI-compatible failure. The
|
|
82
|
+
* request is the final converted wire payload, so subclasses can diagnose
|
|
83
|
+
* vendor limits without rebuilding or logging caller messages.
|
|
84
|
+
*/
|
|
85
|
+
protected handleCompatError(error: unknown, _request: ChatCompletionsRequest): unknown;
|
|
86
|
+
generateMessages(args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
|
|
87
|
+
generateMessage(args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
|
|
88
|
+
}
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=openai-compat-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compat-provider.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compat-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAElB,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,UAAU,kBAAkB;IAC1B,6DAA6D;IAC7D,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAQtE,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,YACE,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,2BAAgC,EAyB1C;IAED,gFAAgF;IAChF,SAAS,KAAK,WAAW,IAAI,OAAO,KAAK,CAExC;IAED,4DAA4D;IAC5D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED;;;;;;;;OAQG;IACH,UAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAA+C,EACpD,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpE,OAAO,CAAC,aAAa,EAAE,CAAC,CAO1B;IAED;;;;;;OAMG;IACH,UAAgB,oBAAoB,CAClC,GAAG,GAAE,MAA+C,EACpD,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpE,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B3B;IAED,SAAS,CAAC,eAAe,IAAI,kBAAkB,CAU9C;IAED,yEAAyE;YAC3D,gBAAgB;IA+D9B;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAC5B,OAAO,EAAE,sBAAsB,GAC9B,sBAAsB,CAExB;IAED;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CACzB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAET;IAEe,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,cAAc,CAAC,kBAAkB,CAAC,CA0FpC;IAEc,eAAe,CAC5B,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,OAAO,CAAC,CAuClB;CACF"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for providers that speak the OpenAI Chat Completions dialect
|
|
3
|
+
* against a non-OpenAI endpoint (Groq, Cerebras, xAI, Mistral, DeepSeek, …).
|
|
4
|
+
*
|
|
5
|
+
* Chat — the only surface these providers ever used the `openai` npm package
|
|
6
|
+
* for — runs on the internal {@link OpenAICompatClient} over `fetch`. The SDK
|
|
7
|
+
* client inherited from {@link OpenAIProvider} remains as a lazily-created
|
|
8
|
+
* fallback for the OpenAI-compatible media/embedding endpoints some gateways
|
|
9
|
+
* also expose (Together ASR, OpenRouter images, Mistral embeddings); it is
|
|
10
|
+
* never constructed on the chat path.
|
|
11
|
+
*/
|
|
12
|
+
import OpenAI from "openai";
|
|
13
|
+
import { isNonEmptyString, isRecord } from "@nodetool-ai/protocol";
|
|
14
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
15
|
+
import { OpenAIProvider } from "./openai-provider.js";
|
|
16
|
+
import { OpenAICompatClient, decodeChatCompletion } from "./openai-compat/index.js";
|
|
17
|
+
const log = createLogger("nodetool.runtime.providers.openai-compat");
|
|
18
|
+
export class OpenAICompatProvider extends OpenAIProvider {
|
|
19
|
+
_compatClient;
|
|
20
|
+
_compatConfig;
|
|
21
|
+
_compatFetch;
|
|
22
|
+
constructor(config, options = {}) {
|
|
23
|
+
super({ OPENAI_API_KEY: config.apiKey }, {
|
|
24
|
+
providerId: config.providerId,
|
|
25
|
+
client: options.client,
|
|
26
|
+
clientFactory: options.clientFactory ??
|
|
27
|
+
((key) => {
|
|
28
|
+
const clientOptions = {
|
|
29
|
+
apiKey: key,
|
|
30
|
+
baseURL: config.baseURL
|
|
31
|
+
};
|
|
32
|
+
if (config.defaultHeaders) {
|
|
33
|
+
clientOptions.defaultHeaders = config.defaultHeaders;
|
|
34
|
+
}
|
|
35
|
+
return new OpenAI(clientOptions);
|
|
36
|
+
}),
|
|
37
|
+
fetchFn: options.fetchFn
|
|
38
|
+
});
|
|
39
|
+
this._compatConfig = config;
|
|
40
|
+
this._compatClient = options.compatClient ?? null;
|
|
41
|
+
this._compatFetch = options.fetchFn ?? globalThis.fetch.bind(globalThis);
|
|
42
|
+
}
|
|
43
|
+
/** The injected (or global) `fetch`, for surfaces this class does not cover. */
|
|
44
|
+
get compatFetch() {
|
|
45
|
+
return this._compatFetch;
|
|
46
|
+
}
|
|
47
|
+
/** Chat endpoint root this instance was configured with. */
|
|
48
|
+
get compatBaseURL() {
|
|
49
|
+
return this._compatConfig.baseURL;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Decode an OpenAI-shaped `GET /models` listing into language models tagged
|
|
53
|
+
* with this provider's id.
|
|
54
|
+
*
|
|
55
|
+
* A failed request answers `[]` rather than throwing: model discovery runs
|
|
56
|
+
* on every picker open, across every configured provider, and one bad key
|
|
57
|
+
* must not break the others. The status is logged so a user staring at an
|
|
58
|
+
* empty list can find the 401 in the log.
|
|
59
|
+
*/
|
|
60
|
+
async listCompatModels(url = `${this._compatConfig.baseURL}/models`, init = {}) {
|
|
61
|
+
const rows = await this.fetchCompatModelRows(url, init);
|
|
62
|
+
return rows.map((row) => ({
|
|
63
|
+
id: row.id,
|
|
64
|
+
name: isNonEmptyString(row.name) ? row.name : row.id,
|
|
65
|
+
provider: this.provider
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The raw rows of an OpenAI-shaped `GET /models` listing, keeping every
|
|
70
|
+
* field the endpoint sent so callers can read vendor metadata (a `type`,
|
|
71
|
+
* output modalities) beyond the id. Rows without a string id are dropped;
|
|
72
|
+
* a failed request answers `[]` for the reason given on
|
|
73
|
+
* {@link listCompatModels}.
|
|
74
|
+
*/
|
|
75
|
+
async fetchCompatModelRows(url = `${this._compatConfig.baseURL}/models`, init = {}) {
|
|
76
|
+
const request = {
|
|
77
|
+
headers: {
|
|
78
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
79
|
+
// Same precedence as OpenAICompatClient: a configured header (gateway
|
|
80
|
+
// attribution, a non-Bearer auth scheme) wins over the default.
|
|
81
|
+
...this._compatConfig.defaultHeaders,
|
|
82
|
+
...init.headers
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
if (init.signal) {
|
|
86
|
+
request.signal = init.signal;
|
|
87
|
+
}
|
|
88
|
+
const response = await this._compatFetch(url, request);
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
log.warn("Model listing failed", {
|
|
91
|
+
provider: this.provider,
|
|
92
|
+
url,
|
|
93
|
+
status: response.status
|
|
94
|
+
});
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
const payload = await response.json();
|
|
98
|
+
const rows = isRecord(payload) ? payload.data : undefined;
|
|
99
|
+
// Stryker disable next-line ArrayDeclaration: the fallback is filtered downstream (rows need a string id), so [] vs any array is observably identical.
|
|
100
|
+
return (Array.isArray(rows) ? rows : [])
|
|
101
|
+
.filter(isRecord)
|
|
102
|
+
.filter((row) => isNonEmptyString(row.id));
|
|
103
|
+
}
|
|
104
|
+
getCompatClient() {
|
|
105
|
+
if (!this._compatClient) {
|
|
106
|
+
this._compatClient = new OpenAICompatClient({
|
|
107
|
+
baseURL: this._compatConfig.baseURL,
|
|
108
|
+
apiKey: this._compatConfig.apiKey,
|
|
109
|
+
defaultHeaders: this._compatConfig.defaultHeaders,
|
|
110
|
+
fetchFn: this._compatFetch
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return this._compatClient;
|
|
114
|
+
}
|
|
115
|
+
/** Shared request assembly for both streaming and non-streaming chat. */
|
|
116
|
+
async buildChatRequest(args, stream) {
|
|
117
|
+
const { model, tools = [], toolChoice, maxTokens = 16384, temperature, topP, presencePenalty, frequencyPenalty, audio } = args;
|
|
118
|
+
const messages = this.convertSystemToUserForOModels(args.messages, model);
|
|
119
|
+
const openaiMessages = await Promise.all(messages.map((m) => this.convertMessage(m)));
|
|
120
|
+
const request = {
|
|
121
|
+
model,
|
|
122
|
+
messages: openaiMessages,
|
|
123
|
+
max_completion_tokens: maxTokens,
|
|
124
|
+
stream
|
|
125
|
+
};
|
|
126
|
+
if (stream)
|
|
127
|
+
request.stream_options = { include_usage: true };
|
|
128
|
+
if (temperature != null)
|
|
129
|
+
request.temperature = temperature;
|
|
130
|
+
if (topP != null)
|
|
131
|
+
request.top_p = topP;
|
|
132
|
+
if (presencePenalty != null)
|
|
133
|
+
request.presence_penalty = presencePenalty;
|
|
134
|
+
if (frequencyPenalty != null)
|
|
135
|
+
request.frequency_penalty = frequencyPenalty;
|
|
136
|
+
if (audio) {
|
|
137
|
+
request.audio = audio;
|
|
138
|
+
request.modalities = ["text", "audio"];
|
|
139
|
+
}
|
|
140
|
+
if (tools.length > 0 && (await this.hasToolSupport(model))) {
|
|
141
|
+
request.tools = this.formatTools(tools);
|
|
142
|
+
if (toolChoice) {
|
|
143
|
+
request.tool_choice =
|
|
144
|
+
toolChoice === "any"
|
|
145
|
+
? "required"
|
|
146
|
+
: { type: "function", function: { name: toolChoice } };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return this.transformChatRequest(request);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Last edit of the assembled request before dispatch. Subclasses override
|
|
153
|
+
* this when their endpoint deviates from OpenAI's dialect — e.g. a provider
|
|
154
|
+
* that only accepts `max_tokens` instead of `max_completion_tokens`.
|
|
155
|
+
*/
|
|
156
|
+
transformChatRequest(request) {
|
|
157
|
+
return request;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Provider-specific classification for an OpenAI-compatible failure. The
|
|
161
|
+
* request is the final converted wire payload, so subclasses can diagnose
|
|
162
|
+
* vendor limits without rebuilding or logging caller messages.
|
|
163
|
+
*/
|
|
164
|
+
handleCompatError(error, _request) {
|
|
165
|
+
return error;
|
|
166
|
+
}
|
|
167
|
+
async *generateMessages(args) {
|
|
168
|
+
const { model } = args;
|
|
169
|
+
const request = await this.buildChatRequest(args, true);
|
|
170
|
+
log.debug("OpenAI-compatible chat request", {
|
|
171
|
+
provider: this.provider,
|
|
172
|
+
model
|
|
173
|
+
});
|
|
174
|
+
this.recordRequestPayload(request);
|
|
175
|
+
const deltaToolCalls = new Map();
|
|
176
|
+
try {
|
|
177
|
+
const stream = this.getCompatClient().chatCompletionsStream(request, {
|
|
178
|
+
signal: args.signal
|
|
179
|
+
});
|
|
180
|
+
for await (const chunk of stream) {
|
|
181
|
+
if (chunk.usage) {
|
|
182
|
+
this.trackUsage(model, {
|
|
183
|
+
inputTokens: chunk.usage.prompt_tokens ?? 0,
|
|
184
|
+
outputTokens: chunk.usage.completion_tokens ?? 0,
|
|
185
|
+
cachedTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const choice = chunk.choices?.[0];
|
|
189
|
+
if (!choice)
|
|
190
|
+
continue;
|
|
191
|
+
const delta = choice.delta;
|
|
192
|
+
if (delta?.audio?.data) {
|
|
193
|
+
const audioChunk = {
|
|
194
|
+
type: "chunk",
|
|
195
|
+
content_type: "audio",
|
|
196
|
+
content: String(delta.audio.data)
|
|
197
|
+
};
|
|
198
|
+
yield audioChunk;
|
|
199
|
+
}
|
|
200
|
+
if (Array.isArray(delta?.tool_calls)) {
|
|
201
|
+
for (const tc of delta.tool_calls) {
|
|
202
|
+
const index = Number(tc.index ?? 0);
|
|
203
|
+
const current = deltaToolCalls.get(index) ?? {
|
|
204
|
+
id: String(tc.id ?? ""),
|
|
205
|
+
name: String(tc.function?.name ?? ""),
|
|
206
|
+
arguments: ""
|
|
207
|
+
};
|
|
208
|
+
if (tc.id)
|
|
209
|
+
current.id = String(tc.id);
|
|
210
|
+
if (tc.function?.name)
|
|
211
|
+
current.name = String(tc.function.name);
|
|
212
|
+
if (tc.function?.arguments)
|
|
213
|
+
current.arguments += String(tc.function.arguments);
|
|
214
|
+
deltaToolCalls.set(index, current);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (delta?.content !== undefined || choice.finish_reason === "stop") {
|
|
218
|
+
const item = {
|
|
219
|
+
type: "chunk",
|
|
220
|
+
content: String(delta?.content ?? ""),
|
|
221
|
+
done: choice.finish_reason === "stop"
|
|
222
|
+
};
|
|
223
|
+
yield item;
|
|
224
|
+
}
|
|
225
|
+
if (choice.finish_reason && deltaToolCalls.size > 0) {
|
|
226
|
+
for (const call of deltaToolCalls.values()) {
|
|
227
|
+
const toolCall = this.buildToolCall(call.id, call.name, call.arguments);
|
|
228
|
+
yield toolCall;
|
|
229
|
+
}
|
|
230
|
+
deltaToolCalls.clear();
|
|
231
|
+
}
|
|
232
|
+
// Always emit a terminal `done: true` chunk when the completion
|
|
233
|
+
// finishes, regardless of reason. "stop" already emits one above; for
|
|
234
|
+
// every other terminal reason (tool_calls, length, content_filter)
|
|
235
|
+
// emit one here so consumers get a consistent end-of-stream marker.
|
|
236
|
+
if (choice.finish_reason && choice.finish_reason !== "stop") {
|
|
237
|
+
const doneChunk = { type: "chunk", content: "", done: true };
|
|
238
|
+
yield doneChunk;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
throw this.handleCompatError(error, request);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async generateMessage(args) {
|
|
247
|
+
const { model } = args;
|
|
248
|
+
const request = await this.buildChatRequest(args, false);
|
|
249
|
+
log.debug("OpenAI-compatible chat request", {
|
|
250
|
+
provider: this.provider,
|
|
251
|
+
model
|
|
252
|
+
});
|
|
253
|
+
this.recordRequestPayload(request);
|
|
254
|
+
let completion;
|
|
255
|
+
try {
|
|
256
|
+
completion = await this.getCompatClient().chatCompletions(request, {
|
|
257
|
+
signal: args.signal
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
throw this.handleCompatError(error, request);
|
|
262
|
+
}
|
|
263
|
+
let decoded;
|
|
264
|
+
try {
|
|
265
|
+
decoded = decodeChatCompletion(completion);
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// The decoder rejects exactly the bodies this path cannot turn into a
|
|
269
|
+
// message; keep the wording callers already match on.
|
|
270
|
+
throw new Error(`${this.provider} returned no choices`);
|
|
271
|
+
}
|
|
272
|
+
if (decoded.usage)
|
|
273
|
+
this.trackUsage(model, decoded.usage);
|
|
274
|
+
const toolCalls = decoded.toolCalls?.map((tc) => this.buildToolCall(tc.id, tc.name, tc.arguments));
|
|
275
|
+
return {
|
|
276
|
+
role: "assistant",
|
|
277
|
+
content: decoded.content,
|
|
278
|
+
toolCalls
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=openai-compat-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compat-provider.js","sourceRoot":"","sources":["../../src/providers/openai-compat-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import OpenAI from "openai";
|
|
2
2
|
import { BaseProvider } from "./base-provider.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { RunBudget, TurnBudget } from "../turn-budget.js";
|
|
4
|
+
import type { ASRModel, EmbeddingModel, EncodedAudioResult, ImageModel, ImageToImageParams, InpaintingParams, ImageToVideoParams, LanguageModel, Message, MessageContent, ProviderId, ProviderStreamItem, ProviderTool, StreamingAudioChunk, TextToImageParams, TextToVideoParams, ToolCall, TTSModel, VideoModel } from "./types.js";
|
|
4
5
|
interface OpenAIProviderOptions {
|
|
5
6
|
client?: OpenAI;
|
|
6
7
|
clientFactory?: (apiKey: string) => OpenAI;
|
|
7
8
|
fetchFn?: typeof fetch;
|
|
9
|
+
/**
|
|
10
|
+
* Provider id reported by this instance. Defaults to `"openai"`.
|
|
11
|
+
* OpenAI-compatible subclasses (gateways pointed at a different base URL)
|
|
12
|
+
* pass their own id so the readonly `provider` field is set via the base
|
|
13
|
+
* constructor rather than reassigned afterwards.
|
|
14
|
+
*/
|
|
15
|
+
providerId?: ProviderId;
|
|
8
16
|
}
|
|
17
|
+
export declare const OPENAI_FALLBACK_MODELS: LanguageModel[];
|
|
18
|
+
/**
|
|
19
|
+
* Decode a `GET /v1/models` body into the language models it announces.
|
|
20
|
+
*
|
|
21
|
+
* Split out of {@link OpenAIProvider.getAvailableLanguageModels} so the live
|
|
22
|
+
* contract probe and its raw-response fixtures parse a real production
|
|
23
|
+
* response the same way the provider does. Strict on the envelope: a body
|
|
24
|
+
* without a `data` array throws, and the caller decides what to fall back to.
|
|
25
|
+
*/
|
|
26
|
+
export declare function decodeOpenAIModelList(payload: unknown, options: {
|
|
27
|
+
provider: ProviderId;
|
|
28
|
+
onlyResponsesModels: boolean;
|
|
29
|
+
}): LanguageModel[];
|
|
9
30
|
export declare class OpenAIProvider extends BaseProvider {
|
|
10
31
|
static requiredSecrets(): string[];
|
|
11
32
|
readonly apiKey: string;
|
|
@@ -17,16 +38,45 @@ export declare class OpenAIProvider extends BaseProvider {
|
|
|
17
38
|
}, options?: OpenAIProviderOptions);
|
|
18
39
|
getContainerEnv(): Record<string, string>;
|
|
19
40
|
getClient(): OpenAI;
|
|
41
|
+
/**
|
|
42
|
+
* True when this instance should serve `model` through the Responses API.
|
|
43
|
+
* Gated on the real `openai` provider so OpenAI-compatible subclasses (which
|
|
44
|
+
* pass their own provider id) stay on Chat Completions.
|
|
45
|
+
*/
|
|
46
|
+
protected usesResponsesApi(model: string): boolean;
|
|
47
|
+
get supportsNativeWebSearch(): boolean;
|
|
48
|
+
get supportsNativeImageGeneration(): boolean;
|
|
20
49
|
hasToolSupport(model: string): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Whether this instance actually serves OpenAI's own model catalog.
|
|
52
|
+
*
|
|
53
|
+
* The media and embedding lists below are hardcoded OpenAI models tagged
|
|
54
|
+
* `provider: "openai"`. Subclasses inherit OpenAI's *chat dialect*, not its
|
|
55
|
+
* lineup — a Groq or vLLM instance offering `gpt-image-2` or `whisper-1` is
|
|
56
|
+
* always wrong, and picking one sends the request to a host that has no such
|
|
57
|
+
* endpoint. Subclasses that do serve media (Together, MiniMax, GMI, xAI, …)
|
|
58
|
+
* override these methods with their own catalog; everyone else correctly
|
|
59
|
+
* reports none.
|
|
60
|
+
*/
|
|
61
|
+
protected servesOpenAICatalog(): boolean;
|
|
21
62
|
getAvailableLanguageModels(): Promise<LanguageModel[]>;
|
|
22
63
|
getAvailableTTSModels(): Promise<TTSModel[]>;
|
|
23
64
|
getAvailableASRModels(): Promise<ASRModel[]>;
|
|
24
65
|
getAvailableVideoModels(): Promise<VideoModel[]>;
|
|
25
66
|
getAvailableImageModels(): Promise<ImageModel[]>;
|
|
26
67
|
getAvailableEmbeddingModels(): Promise<EmbeddingModel[]>;
|
|
27
|
-
|
|
28
|
-
|
|
68
|
+
/**
|
|
69
|
+
* gpt-image-2 accepts arbitrary sizes within limits: both edges a multiple of
|
|
70
|
+
* 16, long edge <= 3840, aspect ratio <= 3:1, and total area between 0.64MP
|
|
71
|
+
* and 8.3MP. Requested sizes rarely land on that grid (16:9 at 1K is
|
|
72
|
+
* 1820x1024), so snap to the nearest valid size preserving the aspect ratio
|
|
73
|
+
* rather than dropping `size` and letting the API default to a square.
|
|
74
|
+
*/
|
|
75
|
+
static snapToGptImage2Size(width: number, height: number): string | null;
|
|
76
|
+
resolveImageSize(width?: number | null, height?: number | null, model?: string): string | null;
|
|
77
|
+
static resolveVideoSize(aspectRatio?: string | null, resolution?: string | null, model?: string): string | null;
|
|
29
78
|
static secondsFromParams(params: {
|
|
79
|
+
durationSeconds?: number | null;
|
|
30
80
|
numFrames?: number | null;
|
|
31
81
|
}): number | null;
|
|
32
82
|
static snapToValidVideoDimensions(width: number, height: number): string;
|
|
@@ -36,36 +86,46 @@ export declare class OpenAIProvider extends BaseProvider {
|
|
|
36
86
|
private messageContentToOpenAIContentPart;
|
|
37
87
|
convertMessage(message: Message): Promise<Record<string, unknown>>;
|
|
38
88
|
formatTools(tools: ProviderTool[]): Array<Record<string, unknown>>;
|
|
39
|
-
|
|
40
|
-
generateMessages(args:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
89
|
+
protected convertSystemToUserForOModels(messages: Message[], model: string): Message[];
|
|
90
|
+
generateMessages(args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
|
|
91
|
+
generateMessage(args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
|
|
92
|
+
/** Tool shapes for the Responses API: native web_search / image_generation. */
|
|
93
|
+
private formatResponsesTools;
|
|
94
|
+
private generateMessageResponses;
|
|
95
|
+
private generateMessagesResponses;
|
|
96
|
+
generateLoop(args: Parameters<BaseProvider["generateMessages"]>[0] & {
|
|
97
|
+
executeTool?: (toolCall: ToolCall) => Promise<string | MessageContent[]>;
|
|
98
|
+
maxIterations?: number;
|
|
99
|
+
sequentialTools?: boolean;
|
|
100
|
+
turnBudget?: TurnBudget | RunBudget;
|
|
101
|
+
resolveMedia?: (messages: Message[]) => Promise<Message[]>;
|
|
50
102
|
}): AsyncGenerator<ProviderStreamItem>;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
maxTokens?: number;
|
|
57
|
-
temperature?: number;
|
|
58
|
-
topP?: number;
|
|
59
|
-
presencePenalty?: number;
|
|
60
|
-
frequencyPenalty?: number;
|
|
61
|
-
}): Promise<Message>;
|
|
103
|
+
private buildResponsesRequest;
|
|
104
|
+
private streamResponsesRequest;
|
|
105
|
+
private createResponsesTurnState;
|
|
106
|
+
private runResponsesLoop;
|
|
107
|
+
private collectResponsesTurn;
|
|
62
108
|
textToImage(params: TextToImageParams): Promise<Uint8Array>;
|
|
63
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Convert a white-region mask (R=G=B=255, alpha = selection) into the mask
|
|
111
|
+
* OpenAI's edit endpoint expects, where fully transparent pixels mark the
|
|
112
|
+
* region to regenerate. Inverts the alpha channel and keeps RGBA shape.
|
|
113
|
+
*/
|
|
114
|
+
private toOpenAiEditMask;
|
|
115
|
+
imageToImage(images: Uint8Array[], params: ImageToImageParams): Promise<Uint8Array>;
|
|
116
|
+
inpaint(images: Uint8Array[], params: InpaintingParams): Promise<Uint8Array>;
|
|
117
|
+
/**
|
|
118
|
+
* Shared OpenAI image-edit call for both image-to-image and inpaint. When
|
|
119
|
+
* `mask` is supplied the masked region is regenerated.
|
|
120
|
+
*/
|
|
121
|
+
private runImageEdit;
|
|
64
122
|
textToSpeech(args: {
|
|
65
123
|
text: string;
|
|
66
124
|
model: string;
|
|
67
125
|
voice?: string;
|
|
68
126
|
speed?: number;
|
|
127
|
+
language?: string;
|
|
128
|
+
instructions?: string;
|
|
69
129
|
audioFormat?: string;
|
|
70
130
|
}): AsyncGenerator<StreamingAudioChunk>;
|
|
71
131
|
/**
|
|
@@ -80,6 +140,8 @@ export declare class OpenAIProvider extends BaseProvider {
|
|
|
80
140
|
model: string;
|
|
81
141
|
voice?: string;
|
|
82
142
|
speed?: number;
|
|
143
|
+
language?: string;
|
|
144
|
+
instructions?: string;
|
|
83
145
|
audioFormat?: string;
|
|
84
146
|
}): Promise<EncodedAudioResult | null>;
|
|
85
147
|
automaticSpeechRecognition(args: {
|
|
@@ -97,6 +159,7 @@ export declare class OpenAIProvider extends BaseProvider {
|
|
|
97
159
|
model: string;
|
|
98
160
|
dimensions?: number;
|
|
99
161
|
}): Promise<number[][]>;
|
|
162
|
+
isContextExceededError(error: unknown): boolean;
|
|
100
163
|
isContextLengthError(error: unknown): boolean;
|
|
101
164
|
}
|
|
102
165
|
export {};
|