@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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenStore — the token-shaped persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Sits between the provider (which thinks in `OAuthTokens`) and the
|
|
5
|
+
* `SecureCredentialStore` (which thinks in opaque strings). Keeping this seam
|
|
6
|
+
* explicit is what satisfies "separate token storage from provider
|
|
7
|
+
* implementation": the provider depends only on the `TokenStore` interface and
|
|
8
|
+
* never learns where bytes actually live.
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger } from "@nodetool-ai/config";
|
|
11
|
+
import type { OAuthTokens } from "./types.js";
|
|
12
|
+
import type { SecureCredentialStore } from "./secure-credential-store.js";
|
|
13
|
+
/** Load / persist / clear a single account's OAuth token set. */
|
|
14
|
+
export interface TokenStore {
|
|
15
|
+
/** Return the persisted tokens, or null if the account has none. */
|
|
16
|
+
load(): Promise<OAuthTokens | null>;
|
|
17
|
+
/** Persist the given token set, replacing any previous one. */
|
|
18
|
+
save(tokens: OAuthTokens): Promise<void>;
|
|
19
|
+
/** Remove all persisted tokens for this account. */
|
|
20
|
+
clear(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
interface SecureTokenStoreOptions {
|
|
23
|
+
/** Backing secret store (e.g. OS keychain). */
|
|
24
|
+
readonly credentialStore: SecureCredentialStore;
|
|
25
|
+
/** Provider id, e.g. "openai" — part of the storage key. */
|
|
26
|
+
readonly provider: string;
|
|
27
|
+
/** Account identifier (user id / login) — part of the storage key. */
|
|
28
|
+
readonly accountId: string;
|
|
29
|
+
readonly logger?: Logger;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* `TokenStore` that serializes the token set to JSON and hands it to a
|
|
33
|
+
* `SecureCredentialStore`. The full set — including the refresh token — is
|
|
34
|
+
* written only through the secure backend, never to a plaintext config file.
|
|
35
|
+
*/
|
|
36
|
+
export declare class SecureTokenStore implements TokenStore {
|
|
37
|
+
private readonly credentialStore;
|
|
38
|
+
private readonly key;
|
|
39
|
+
private readonly logger?;
|
|
40
|
+
constructor(options: SecureTokenStoreOptions);
|
|
41
|
+
load(): Promise<OAuthTokens | null>;
|
|
42
|
+
save(tokens: OAuthTokens): Promise<void>;
|
|
43
|
+
clear(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/** Volatile `TokenStore` for tests — keeps a single token set in memory. */
|
|
46
|
+
export declare class InMemoryTokenStore implements TokenStore {
|
|
47
|
+
private tokens;
|
|
48
|
+
load(): Promise<OAuthTokens | null>;
|
|
49
|
+
save(tokens: OAuthTokens): Promise<void>;
|
|
50
|
+
clear(): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=token-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/providers/oauth/token-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpC,+DAA+D;IAC/D,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,oDAAoD;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAuBD,UAAU,uBAAuB;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,YAAY,OAAO,EAAE,uBAAuB,EAI3C;IAEK,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQxC;IAEK,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF;AAED,4EAA4E;AAC5E,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAA4B;IAEpC,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAExC;IAEK,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenStore — the token-shaped persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Sits between the provider (which thinks in `OAuthTokens`) and the
|
|
5
|
+
* `SecureCredentialStore` (which thinks in opaque strings). Keeping this seam
|
|
6
|
+
* explicit is what satisfies "separate token storage from provider
|
|
7
|
+
* implementation": the provider depends only on the `TokenStore` interface and
|
|
8
|
+
* never learns where bytes actually live.
|
|
9
|
+
*/
|
|
10
|
+
import { isNumber, isObjectLike, isString } from "@nodetool-ai/protocol";
|
|
11
|
+
/** Runtime shape used to validate untrusted JSON read back from storage. */
|
|
12
|
+
function parseTokens(raw) {
|
|
13
|
+
let value;
|
|
14
|
+
try {
|
|
15
|
+
value = JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
if (!isObjectLike(value))
|
|
21
|
+
return null;
|
|
22
|
+
const v = value;
|
|
23
|
+
if (!isString(v.accessToken))
|
|
24
|
+
return null;
|
|
25
|
+
return {
|
|
26
|
+
accessToken: v.accessToken,
|
|
27
|
+
refreshToken: isString(v.refreshToken) ? v.refreshToken : null,
|
|
28
|
+
tokenType: isString(v.tokenType) ? v.tokenType : "Bearer",
|
|
29
|
+
scope: isString(v.scope) ? v.scope : null,
|
|
30
|
+
expiresAt: isNumber(v.expiresAt) ? v.expiresAt : null,
|
|
31
|
+
receivedAt: isNumber(v.receivedAt) ? v.receivedAt : Date.now()
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* `TokenStore` that serializes the token set to JSON and hands it to a
|
|
36
|
+
* `SecureCredentialStore`. The full set — including the refresh token — is
|
|
37
|
+
* written only through the secure backend, never to a plaintext config file.
|
|
38
|
+
*/
|
|
39
|
+
export class SecureTokenStore {
|
|
40
|
+
credentialStore;
|
|
41
|
+
key;
|
|
42
|
+
logger;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.credentialStore = options.credentialStore;
|
|
45
|
+
this.key = `${options.provider}:${options.accountId}`;
|
|
46
|
+
this.logger = options.logger;
|
|
47
|
+
}
|
|
48
|
+
async load() {
|
|
49
|
+
const raw = await this.credentialStore.get(this.key);
|
|
50
|
+
if (!raw)
|
|
51
|
+
return null;
|
|
52
|
+
const tokens = parseTokens(raw);
|
|
53
|
+
if (!tokens) {
|
|
54
|
+
this.logger?.warn("Discarding unparseable stored credential", { key: this.key });
|
|
55
|
+
}
|
|
56
|
+
return tokens;
|
|
57
|
+
}
|
|
58
|
+
async save(tokens) {
|
|
59
|
+
await this.credentialStore.set(this.key, JSON.stringify(tokens));
|
|
60
|
+
}
|
|
61
|
+
async clear() {
|
|
62
|
+
await this.credentialStore.delete(this.key);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Volatile `TokenStore` for tests — keeps a single token set in memory. */
|
|
66
|
+
export class InMemoryTokenStore {
|
|
67
|
+
tokens = null;
|
|
68
|
+
async load() {
|
|
69
|
+
return this.tokens;
|
|
70
|
+
}
|
|
71
|
+
async save(tokens) {
|
|
72
|
+
this.tokens = tokens;
|
|
73
|
+
}
|
|
74
|
+
async clear() {
|
|
75
|
+
this.tokens = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=token-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../src/providers/oauth/token-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the OpenAI OAuth subsystem.
|
|
3
|
+
*
|
|
4
|
+
* Everything here is plain data — no behaviour, no I/O — so it can be imported
|
|
5
|
+
* freely by every layer (PKCE, client, stores, provider) without creating
|
|
6
|
+
* cycles.
|
|
7
|
+
*/
|
|
8
|
+
/** PKCE code-challenge method. NodeTool only supports the secure S256 variant. */
|
|
9
|
+
export type CodeChallengeMethod = "S256";
|
|
10
|
+
/** A PKCE verifier/challenge pair plus the method used to derive the challenge. */
|
|
11
|
+
export interface PkcePair {
|
|
12
|
+
/** High-entropy random string kept secret on the client. */
|
|
13
|
+
readonly verifier: string;
|
|
14
|
+
/** BASE64URL(SHA-256(verifier)) sent in the authorization request. */
|
|
15
|
+
readonly challenge: string;
|
|
16
|
+
readonly method: CodeChallengeMethod;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A normalized OAuth token set. Timestamps are epoch milliseconds so they are
|
|
20
|
+
* trivially comparable against `Date.now()` and survive JSON round-trips.
|
|
21
|
+
*/
|
|
22
|
+
export interface OAuthTokens {
|
|
23
|
+
readonly accessToken: string;
|
|
24
|
+
/** May be absent — some providers omit it on refresh and reuse the old one. */
|
|
25
|
+
readonly refreshToken: string | null;
|
|
26
|
+
readonly tokenType: string;
|
|
27
|
+
readonly scope: string | null;
|
|
28
|
+
/** Absolute expiry in epoch ms, or null when the provider sends no expiry. */
|
|
29
|
+
readonly expiresAt: number | null;
|
|
30
|
+
/** When this set was minted (epoch ms). */
|
|
31
|
+
readonly receivedAt: number;
|
|
32
|
+
}
|
|
33
|
+
/** Static configuration for talking to an OAuth 2.0 authorization server. */
|
|
34
|
+
export interface OAuthClientConfig {
|
|
35
|
+
readonly authorizationEndpoint: string;
|
|
36
|
+
readonly tokenEndpoint: string;
|
|
37
|
+
/** RFC 7009 revocation endpoint. Optional — not every server exposes one. */
|
|
38
|
+
readonly revocationEndpoint?: string;
|
|
39
|
+
readonly clientId: string;
|
|
40
|
+
readonly scopes: readonly string[];
|
|
41
|
+
/** Optional `audience` parameter required by some providers. */
|
|
42
|
+
readonly audience?: string;
|
|
43
|
+
/** Extra static query params merged into the authorization URL. */
|
|
44
|
+
readonly extraAuthParams?: Readonly<Record<string, string>>;
|
|
45
|
+
}
|
|
46
|
+
/** Parameters needed to build a single authorization URL. */
|
|
47
|
+
export interface AuthorizationUrlParams {
|
|
48
|
+
readonly redirectUri: string;
|
|
49
|
+
readonly state: string;
|
|
50
|
+
readonly codeChallenge: string;
|
|
51
|
+
readonly codeChallengeMethod: CodeChallengeMethod;
|
|
52
|
+
}
|
|
53
|
+
/** The authorization code returned to the redirect URI by the browser. */
|
|
54
|
+
export interface AuthorizationResult {
|
|
55
|
+
readonly code: string;
|
|
56
|
+
readonly state: string;
|
|
57
|
+
}
|
|
58
|
+
/** Injectable clock so tests can control expiry math without real time. */
|
|
59
|
+
export interface Clock {
|
|
60
|
+
now(): number;
|
|
61
|
+
}
|
|
62
|
+
/** Default wall-clock implementation. */
|
|
63
|
+
export declare const systemClock: Clock;
|
|
64
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/oauth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEzC,mFAAmF;AACnF,MAAM,WAAW,QAAQ;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7D;AAED,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;CACnD;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,KAAK;IACpB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,yCAAyC;AACzC,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the OpenAI OAuth subsystem.
|
|
3
|
+
*
|
|
4
|
+
* Everything here is plain data — no behaviour, no I/O — so it can be imported
|
|
5
|
+
* freely by every layer (PKCE, client, stores, provider) without creating
|
|
6
|
+
* cycles.
|
|
7
|
+
*/
|
|
8
|
+
/** Default wall-clock implementation. */
|
|
9
|
+
export const systemClock = {
|
|
10
|
+
now: () => Date.now()
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/oauth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+DH,yCAAyC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;CACtB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** A box in the uncropped source frame, expressed as fractions of its size. */
|
|
3
|
+
export declare const trackingRegionSchema: z.ZodObject<{
|
|
4
|
+
x: z.ZodNumber;
|
|
5
|
+
y: z.ZodNumber;
|
|
6
|
+
width: z.ZodNumber;
|
|
7
|
+
height: z.ZodNumber;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
export declare const objectTrackingRequestSchema: z.ZodObject<{
|
|
10
|
+
sourceAssetId: z.ZodString;
|
|
11
|
+
initialRegion: z.ZodObject<{
|
|
12
|
+
x: z.ZodNumber;
|
|
13
|
+
y: z.ZodNumber;
|
|
14
|
+
width: z.ZodNumber;
|
|
15
|
+
height: z.ZodNumber;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
startMs: z.ZodNumber;
|
|
18
|
+
endMs: z.ZodNumber;
|
|
19
|
+
direction: z.ZodEnum<{
|
|
20
|
+
backward: "backward";
|
|
21
|
+
both: "both";
|
|
22
|
+
forward: "forward";
|
|
23
|
+
}>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export type ObjectTrackingRequest = z.infer<typeof objectTrackingRequestSchema>;
|
|
26
|
+
export type TrackingRegion = z.infer<typeof trackingRegionSchema>;
|
|
27
|
+
declare const resultSchema: z.ZodObject<{
|
|
28
|
+
samples: z.ZodArray<z.ZodIntersection<z.ZodObject<{
|
|
29
|
+
x: z.ZodNumber;
|
|
30
|
+
y: z.ZodNumber;
|
|
31
|
+
width: z.ZodNumber;
|
|
32
|
+
height: z.ZodNumber;
|
|
33
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
34
|
+
sourceMs: z.ZodNumber;
|
|
35
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
}, z.core.$strip>>>;
|
|
37
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type ObjectTrackingResult = z.infer<typeof resultSchema>;
|
|
40
|
+
export interface ObjectTrackingParams extends ObjectTrackingRequest {
|
|
41
|
+
readonly model: string;
|
|
42
|
+
readonly signal: AbortSignal;
|
|
43
|
+
}
|
|
44
|
+
/** Reject empty, malformed, unordered or out-of-window provider samples. */
|
|
45
|
+
export declare function parseObjectTrackingResult(value: unknown, request: ObjectTrackingRequest): ObjectTrackingResult;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=object-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-tracking.d.ts","sourceRoot":"","sources":["../../src/providers/object-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB;;;;;iBAS7B,CAAC;AAEL,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;iBAUpC,CAAC;AAEL,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AASlE,QAAA,MAAM,YAAY;;;;;;;;;;;iBAGhB,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEhE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAgBtB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** A box in the uncropped source frame, expressed as fractions of its size. */
|
|
3
|
+
export const trackingRegionSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
x: z.number().min(0).max(1),
|
|
6
|
+
y: z.number().min(0).max(1),
|
|
7
|
+
width: z.number().positive().max(1),
|
|
8
|
+
height: z.number().positive().max(1)
|
|
9
|
+
})
|
|
10
|
+
.refine((box) => box.x + box.width <= 1 && box.y + box.height <= 1, {
|
|
11
|
+
message: "The tracking rectangle must fit inside the source frame."
|
|
12
|
+
});
|
|
13
|
+
export const objectTrackingRequestSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
sourceAssetId: z.string().min(1),
|
|
16
|
+
initialRegion: trackingRegionSchema,
|
|
17
|
+
startMs: z.number().nonnegative(),
|
|
18
|
+
endMs: z.number().positive(),
|
|
19
|
+
direction: z.enum(["forward", "backward", "both"])
|
|
20
|
+
})
|
|
21
|
+
.refine((request) => request.endMs > request.startMs, {
|
|
22
|
+
message: "Tracking endMs must be greater than startMs."
|
|
23
|
+
});
|
|
24
|
+
const sampleSchema = trackingRegionSchema.and(z.object({
|
|
25
|
+
sourceMs: z.number().nonnegative(),
|
|
26
|
+
confidence: z.number().min(0).max(1).optional()
|
|
27
|
+
}));
|
|
28
|
+
const resultSchema = z.object({
|
|
29
|
+
samples: z.array(sampleSchema).min(1),
|
|
30
|
+
confidence: z.number().min(0).max(1).optional()
|
|
31
|
+
});
|
|
32
|
+
/** Reject empty, malformed, unordered or out-of-window provider samples. */
|
|
33
|
+
export function parseObjectTrackingResult(value, request) {
|
|
34
|
+
const result = resultSchema.parse(value);
|
|
35
|
+
let previous = -Infinity;
|
|
36
|
+
for (const sample of result.samples) {
|
|
37
|
+
if (sample.sourceMs < request.startMs ||
|
|
38
|
+
sample.sourceMs > request.endMs ||
|
|
39
|
+
sample.sourceMs <= previous) {
|
|
40
|
+
throw new Error("Tracking samples must be ordered within the requested source window.");
|
|
41
|
+
}
|
|
42
|
+
previous = sample.sourceMs;
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=object-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-tracking.js","sourceRoot":"","sources":["../../src/providers/object-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC;KACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;IAClE,OAAO,EAAE,0DAA0D;CACpE,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,aAAa,EAAE,oBAAoB;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;CACnD,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;IACpD,OAAO,EAAE,8CAA8C;CACxD,CAAC,CAAC;AAKL,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAC3C,CAAC,CAAC,MAAM,CAAC;IACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CACH,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AASH,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAA8B;IAE9B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IACE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO;YACjC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK;YAC/B,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAC3B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every model id `provider` offers of `modelType` (an `image_model`-style tag),
|
|
3
|
+
* or `undefined` when that cannot be established offline.
|
|
4
|
+
*/
|
|
5
|
+
export declare function listOfflineModelIds(provider: string, modelType: string): readonly string[] | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Text inputs `modelId` declares it will not run without, or `undefined` when
|
|
8
|
+
* that cannot be established offline.
|
|
9
|
+
*
|
|
10
|
+
* Same silence rules as {@link listOfflineModelIds}: an unknown provider, an
|
|
11
|
+
* unclassified model type, an unreadable manifest, or a model the manifest does
|
|
12
|
+
* not carry all answer `undefined`. An entry that declares no required text
|
|
13
|
+
* input answers `[]` — that one is knowledge, not a gap.
|
|
14
|
+
*/
|
|
15
|
+
export declare function listOfflineRequiredTextInputs(provider: string, modelType: string, modelId: string): readonly string[] | undefined;
|
|
16
|
+
/** Providers whose ids {@link listOfflineModelIds} can check. */
|
|
17
|
+
export declare function offlineModelIndexProviders(): readonly string[];
|
|
18
|
+
/** Model-ref type tags {@link listOfflineModelIds} can check. */
|
|
19
|
+
export declare function offlineModelIndexTypes(): readonly string[];
|
|
20
|
+
//# sourceMappingURL=offline-model-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offline-model-index.d.ts","sourceRoot":"","sources":["../../src/providers/offline-model-index.ts"],"names":[],"mappings":"AA0EA;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,SAAS,MAAM,EAAE,GAAG,SAAS,CAwB/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,SAAS,MAAM,EAAE,GAAG,SAAS,CAQ/B;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAE1D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model ids a provider ships in a bundled manifest, for callers that must
|
|
3
|
+
* decide whether a saved model id is real without touching the network.
|
|
4
|
+
*
|
|
5
|
+
* Two things narrow what this can answer, and both fail toward silence:
|
|
6
|
+
*
|
|
7
|
+
* - Only manifest-backed providers appear here. Everything else enumerates its
|
|
8
|
+
* catalog over the wire (Anthropic, Gemini, Groq) or from a local daemon
|
|
9
|
+
* (Ollama, LM Studio, HuggingFace).
|
|
10
|
+
* - Only the model types a manifest actually classifies are covered. ASR and
|
|
11
|
+
* language models are not among them — a fal ASR id like
|
|
12
|
+
* `openai/whisper-large-v3` appears nowhere in the fal manifest, so a lookup
|
|
13
|
+
* that ignored model type would call every real ASR selection a typo.
|
|
14
|
+
*
|
|
15
|
+
* Both cases return `undefined`, which means "cannot tell" — never "no such
|
|
16
|
+
* model". The manifests are where a typo is most likely and least visible:
|
|
17
|
+
* generated catalogs of hundreds of long, slash-separated ids
|
|
18
|
+
* (`fal-ai/ltx-2/image-to-video/fast`), where a wrong one fails only once the
|
|
19
|
+
* node runs, after the rest of the graph has already been paid for.
|
|
20
|
+
*/
|
|
21
|
+
import { getRequiredTextInputNames, loadImageModels, loadVideoModels, loadTTSModels, loadMusicModels, loadAudioToAudioModels } from "./manifest-models.js";
|
|
22
|
+
/**
|
|
23
|
+
* Kept in step with the `load*Models` call sites in each provider. A provider
|
|
24
|
+
* missing here is treated as un-enumerable rather than empty, so forgetting to
|
|
25
|
+
* add one costs a missed check, never a false "unknown model".
|
|
26
|
+
*/
|
|
27
|
+
const MANIFEST_SOURCES = {
|
|
28
|
+
fal_ai: { pkg: "@nodetool-ai/fal-nodes", path: "fal-manifest.json" },
|
|
29
|
+
kie: { pkg: "@nodetool-ai/kie-nodes", path: "kie-manifest.json" },
|
|
30
|
+
replicate: {
|
|
31
|
+
pkg: "@nodetool-ai/replicate-nodes",
|
|
32
|
+
path: "replicate-manifest.json"
|
|
33
|
+
},
|
|
34
|
+
together: {
|
|
35
|
+
pkg: "@nodetool-ai/together-nodes",
|
|
36
|
+
path: "together-manifest.json"
|
|
37
|
+
},
|
|
38
|
+
atlascloud: {
|
|
39
|
+
pkg: "@nodetool-ai/atlascloud-nodes",
|
|
40
|
+
path: "atlascloud-manifest.json"
|
|
41
|
+
},
|
|
42
|
+
topaz: { pkg: "@nodetool-ai/topaz-nodes", path: "topaz-manifest.json" }
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The model-ref `type` tags a manifest can answer for. A type absent here is
|
|
46
|
+
* un-enumerable offline no matter which provider is asked.
|
|
47
|
+
*/
|
|
48
|
+
const LOADER_BY_MODEL_TYPE = {
|
|
49
|
+
image_model: loadImageModels,
|
|
50
|
+
video_model: loadVideoModels,
|
|
51
|
+
tts_model: loadTTSModels,
|
|
52
|
+
music_model: loadMusicModels,
|
|
53
|
+
audio_to_audio_model: loadAudioToAudioModels
|
|
54
|
+
};
|
|
55
|
+
const cache = new Map();
|
|
56
|
+
/**
|
|
57
|
+
* Every model id `provider` offers of `modelType` (an `image_model`-style tag),
|
|
58
|
+
* or `undefined` when that cannot be established offline.
|
|
59
|
+
*/
|
|
60
|
+
export function listOfflineModelIds(provider, modelType) {
|
|
61
|
+
const key = `${provider}\u0000${modelType}`;
|
|
62
|
+
if (cache.has(key))
|
|
63
|
+
return cache.get(key);
|
|
64
|
+
const source = MANIFEST_SOURCES[provider];
|
|
65
|
+
const load = LOADER_BY_MODEL_TYPE[modelType];
|
|
66
|
+
if (!source || !load) {
|
|
67
|
+
cache.set(key, undefined);
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
let result;
|
|
71
|
+
try {
|
|
72
|
+
const ids = [...new Set(load(source.pkg, source.path, provider).map((m) => m.id).filter(Boolean))];
|
|
73
|
+
// An empty result means the manifest failed to resolve, or carries nothing
|
|
74
|
+
// of this type — a packaging fault or a gap, not proof of a bad id.
|
|
75
|
+
result = ids.length > 0 ? ids : undefined;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// A manifest that will not load cannot prove a model absent.
|
|
79
|
+
result = undefined;
|
|
80
|
+
}
|
|
81
|
+
cache.set(key, result);
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Text inputs `modelId` declares it will not run without, or `undefined` when
|
|
86
|
+
* that cannot be established offline.
|
|
87
|
+
*
|
|
88
|
+
* Same silence rules as {@link listOfflineModelIds}: an unknown provider, an
|
|
89
|
+
* unclassified model type, an unreadable manifest, or a model the manifest does
|
|
90
|
+
* not carry all answer `undefined`. An entry that declares no required text
|
|
91
|
+
* input answers `[]` — that one is knowledge, not a gap.
|
|
92
|
+
*/
|
|
93
|
+
export function listOfflineRequiredTextInputs(provider, modelType, modelId) {
|
|
94
|
+
const source = MANIFEST_SOURCES[provider];
|
|
95
|
+
if (!source || !LOADER_BY_MODEL_TYPE[modelType])
|
|
96
|
+
return undefined;
|
|
97
|
+
try {
|
|
98
|
+
return getRequiredTextInputNames(source.pkg, source.path, modelId);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Providers whose ids {@link listOfflineModelIds} can check. */
|
|
105
|
+
export function offlineModelIndexProviders() {
|
|
106
|
+
return Object.keys(MANIFEST_SOURCES);
|
|
107
|
+
}
|
|
108
|
+
/** Model-ref type tags {@link listOfflineModelIds} can check. */
|
|
109
|
+
export function offlineModelIndexTypes() {
|
|
110
|
+
return Object.keys(LOADER_BY_MODEL_TYPE);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=offline-model-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offline-model-index.js","sourceRoot":"","sources":["../../src/providers/offline-model-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,23 @@ interface OllamaProviderOptions {
|
|
|
6
6
|
export declare class OllamaProvider extends BaseProvider {
|
|
7
7
|
static requiredSecrets(): string[];
|
|
8
8
|
readonly apiUrl: string;
|
|
9
|
+
/**
|
|
10
|
+
* How long Ollama keeps the model resident after a request. Without this,
|
|
11
|
+
* large models (e.g. the default gpt-oss:20b) get evicted between turns and
|
|
12
|
+
* pay a multi-second reload on every message. Override with OLLAMA_KEEP_ALIVE
|
|
13
|
+
* (accepts Ollama's duration syntax, e.g. "30m", "-1" to keep forever, "0" to
|
|
14
|
+
* unload immediately).
|
|
15
|
+
*/
|
|
16
|
+
readonly keepAlive: string;
|
|
9
17
|
private _fetch;
|
|
10
18
|
constructor(secrets: {
|
|
11
19
|
OLLAMA_API_URL?: string;
|
|
12
20
|
}, options?: OllamaProviderOptions);
|
|
13
|
-
getContainerEnv():
|
|
21
|
+
getContainerEnv(): {
|
|
22
|
+
OLLAMA_API_URL: string;
|
|
23
|
+
};
|
|
24
|
+
/** Release cached model metadata held by this provider. */
|
|
25
|
+
close(): Promise<void>;
|
|
14
26
|
private _modelInfoCache;
|
|
15
27
|
/**
|
|
16
28
|
* Check if a model supports native tool calling by querying /api/show.
|
|
@@ -31,8 +43,21 @@ export declare class OllamaProvider extends BaseProvider {
|
|
|
31
43
|
formatTools(tools: ProviderTool[]): Array<Record<string, unknown>>;
|
|
32
44
|
private postJson;
|
|
33
45
|
getAvailableLanguageModels(): Promise<LanguageModel[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Delete a model from the Ollama server's local store. Ollama answers
|
|
48
|
+
* `DELETE /api/delete` with 200 on success and 404 when the model is not
|
|
49
|
+
* installed; a 404 is reported as `false` rather than thrown, so a
|
|
50
|
+
* double-delete is not an error.
|
|
51
|
+
*/
|
|
52
|
+
deleteModel(model: string): Promise<boolean>;
|
|
34
53
|
getAvailableEmbeddingModels(): Promise<EmbeddingModel[]>;
|
|
35
54
|
private toToolCalls;
|
|
55
|
+
/**
|
|
56
|
+
* Record the token counts Ollama reports on its final chat object. Local
|
|
57
|
+
* models cost nothing, but the counts still belong in `llm_call` events and
|
|
58
|
+
* `llm.chat`/`llm.stream` spans.
|
|
59
|
+
*/
|
|
60
|
+
private trackOllamaUsage;
|
|
36
61
|
private buildChatRequest;
|
|
37
62
|
generateMessage(args: {
|
|
38
63
|
messages: Message[];
|
|
@@ -43,6 +68,7 @@ export declare class OllamaProvider extends BaseProvider {
|
|
|
43
68
|
topP?: number;
|
|
44
69
|
presencePenalty?: number;
|
|
45
70
|
frequencyPenalty?: number;
|
|
71
|
+
signal?: AbortSignal;
|
|
46
72
|
}): Promise<Message>;
|
|
47
73
|
/**
|
|
48
74
|
* Inject tool emulation instructions into the message list.
|
|
@@ -59,6 +85,7 @@ export declare class OllamaProvider extends BaseProvider {
|
|
|
59
85
|
presencePenalty?: number;
|
|
60
86
|
frequencyPenalty?: number;
|
|
61
87
|
audio?: Record<string, unknown>;
|
|
88
|
+
signal?: AbortSignal;
|
|
62
89
|
}): AsyncGenerator<ProviderStreamItem>;
|
|
63
90
|
generateEmbedding(args: {
|
|
64
91
|
text: string | string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"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"}
|