@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,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs the live half of the provider contract probes.
|
|
3
|
+
*
|
|
4
|
+
* One request per manifest entry, decoded by the production decoder the entry
|
|
5
|
+
* names. The two ways a probe fails are reported apart: a **network failure**
|
|
6
|
+
* means we never got a body to judge (DNS, timeout, 5xx, a non-JSON gateway
|
|
7
|
+
* page), and a **schema failure** means the provider answered and the response
|
|
8
|
+
* no longer decodes into what NodeTool needs. Only the second is a contract
|
|
9
|
+
* break; treating them alike would turn every flaky night into a false alarm.
|
|
10
|
+
*
|
|
11
|
+
* Nothing here writes a cassette, and nothing retains a response body: what a
|
|
12
|
+
* run keeps is the shape (see `summarizeShape`).
|
|
13
|
+
*/
|
|
14
|
+
import { redactText, summarizeShape } from "./redact.js";
|
|
15
|
+
import { PROBE_MANIFEST } from "./probe-manifest.js";
|
|
16
|
+
/** A body that never reached the decoder: the run has nothing to judge. */
|
|
17
|
+
class NetworkProbeError extends Error {
|
|
18
|
+
}
|
|
19
|
+
async function readJsonBody(response, entry) {
|
|
20
|
+
const acceptsHttpError = entry.live?.acceptsHttpError ?? false;
|
|
21
|
+
const text = await response.text();
|
|
22
|
+
if (!response.ok && !acceptsHttpError) {
|
|
23
|
+
throw new NetworkProbeError(`HTTP ${response.status}: ${redactText(text, 200)}`);
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(text);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// A gateway error page is a network-layer problem, not a contract change.
|
|
30
|
+
throw new NetworkProbeError(`response body is not JSON (HTTP ${response.status}): ${redactText(text, 200)}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function runProbes(options = {}) {
|
|
34
|
+
const env = options.env ?? {};
|
|
35
|
+
const fetchImpl = options.fetchImpl ?? globalThis.fetch.bind(globalThis);
|
|
36
|
+
const entries = options.entries ?? PROBE_MANIFEST;
|
|
37
|
+
const timeoutMs = options.timeoutMs ?? 60_000;
|
|
38
|
+
const now = options.now ?? (() => Date.now());
|
|
39
|
+
const results = [];
|
|
40
|
+
const perProvider = {};
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
const spent = (perProvider[entry.provider] ??= { requests: 0, costUsd: 0 });
|
|
43
|
+
const base = {
|
|
44
|
+
id: entry.id,
|
|
45
|
+
provider: entry.provider,
|
|
46
|
+
target: entry.target,
|
|
47
|
+
decoder: entry.decoder
|
|
48
|
+
};
|
|
49
|
+
const live = entry.live;
|
|
50
|
+
if (!live) {
|
|
51
|
+
results.push({
|
|
52
|
+
...base,
|
|
53
|
+
status: "skipped",
|
|
54
|
+
reason: `fixture only: ${entry.liveGap ?? "no live probe declared"}`,
|
|
55
|
+
durationMs: 0,
|
|
56
|
+
requests: 0,
|
|
57
|
+
costUsd: 0
|
|
58
|
+
});
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const credential = live.credential ? (env[live.credential] ?? "") : "";
|
|
62
|
+
if (live.credential && !credential) {
|
|
63
|
+
results.push({
|
|
64
|
+
...base,
|
|
65
|
+
status: "skipped",
|
|
66
|
+
reason: `${live.credential} is not set`,
|
|
67
|
+
durationMs: 0,
|
|
68
|
+
requests: 0,
|
|
69
|
+
costUsd: 0
|
|
70
|
+
});
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (spent.requests + 1 > live.maxRequests) {
|
|
74
|
+
results.push({
|
|
75
|
+
...base,
|
|
76
|
+
status: "skipped",
|
|
77
|
+
reason: `request budget for ${entry.provider} is spent (${live.maxRequests})`,
|
|
78
|
+
durationMs: 0,
|
|
79
|
+
requests: 0,
|
|
80
|
+
costUsd: 0
|
|
81
|
+
});
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (spent.costUsd + live.estimatedCostUsd > live.maxCostUsd) {
|
|
85
|
+
results.push({
|
|
86
|
+
...base,
|
|
87
|
+
status: "skipped",
|
|
88
|
+
reason: `cost budget for ${entry.provider} is spent (USD ${live.maxCostUsd})`,
|
|
89
|
+
durationMs: 0,
|
|
90
|
+
requests: 0,
|
|
91
|
+
costUsd: 0
|
|
92
|
+
});
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const startedAt = now();
|
|
96
|
+
const controller = new AbortController();
|
|
97
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
98
|
+
let status = "passed";
|
|
99
|
+
let reason;
|
|
100
|
+
let shape;
|
|
101
|
+
try {
|
|
102
|
+
const { url, init } = live.request(env, credential);
|
|
103
|
+
let body;
|
|
104
|
+
try {
|
|
105
|
+
const response = await fetchImpl(url, {
|
|
106
|
+
...init,
|
|
107
|
+
signal: controller.signal
|
|
108
|
+
});
|
|
109
|
+
body = await readJsonBody(response, entry);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw err instanceof NetworkProbeError
|
|
113
|
+
? err
|
|
114
|
+
: new NetworkProbeError(err.message);
|
|
115
|
+
}
|
|
116
|
+
shape = summarizeShape(body);
|
|
117
|
+
entry.check(body);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
status = err instanceof NetworkProbeError ? "network-failure" : "schema-failure";
|
|
121
|
+
reason = redactText(err.message);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
clearTimeout(timer);
|
|
125
|
+
}
|
|
126
|
+
spent.requests += 1;
|
|
127
|
+
spent.costUsd += live.estimatedCostUsd;
|
|
128
|
+
results.push({
|
|
129
|
+
...base,
|
|
130
|
+
status,
|
|
131
|
+
reason,
|
|
132
|
+
durationMs: now() - startedAt,
|
|
133
|
+
requests: 1,
|
|
134
|
+
costUsd: live.estimatedCostUsd,
|
|
135
|
+
shape
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
const totals = {
|
|
139
|
+
passed: 0,
|
|
140
|
+
schemaFailures: 0,
|
|
141
|
+
networkFailures: 0,
|
|
142
|
+
skipped: 0,
|
|
143
|
+
requests: 0,
|
|
144
|
+
costUsd: 0
|
|
145
|
+
};
|
|
146
|
+
for (const r of results) {
|
|
147
|
+
if (r.status === "passed")
|
|
148
|
+
totals.passed++;
|
|
149
|
+
else if (r.status === "schema-failure")
|
|
150
|
+
totals.schemaFailures++;
|
|
151
|
+
else if (r.status === "network-failure")
|
|
152
|
+
totals.networkFailures++;
|
|
153
|
+
else if (r.status === "skipped")
|
|
154
|
+
totals.skipped++;
|
|
155
|
+
totals.requests += r.requests;
|
|
156
|
+
totals.costUsd += r.costUsd;
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
startedAt: new Date(now()).toISOString(),
|
|
160
|
+
results,
|
|
161
|
+
totals,
|
|
162
|
+
perProvider
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/** One line per probe, for a CI log. */
|
|
166
|
+
export function formatProbeReport(report) {
|
|
167
|
+
const icon = {
|
|
168
|
+
passed: "✓",
|
|
169
|
+
"schema-failure": "✗",
|
|
170
|
+
"network-failure": "~",
|
|
171
|
+
skipped: "·"
|
|
172
|
+
};
|
|
173
|
+
const lines = report.results.map((r) => `${icon[r.status]} ${r.id.padEnd(28)} ${r.status}` +
|
|
174
|
+
(r.reason ? ` — ${r.reason}` : ""));
|
|
175
|
+
lines.push(`\n${report.totals.passed} passed, ${report.totals.schemaFailures} schema failures, ` +
|
|
176
|
+
`${report.totals.networkFailures} network failures, ${report.totals.skipped} skipped ` +
|
|
177
|
+
`(${report.totals.requests} requests, ~USD ${report.totals.costUsd.toFixed(4)})`);
|
|
178
|
+
return lines.join("\n");
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=probe-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe-runner.js","sourceRoot":"","sources":["../../../src/providers/contract/probe-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact redaction for the provider contract probes.
|
|
3
|
+
*
|
|
4
|
+
* A probe run keeps something about the live response so a human can read why
|
|
5
|
+
* it failed, and a live response carries credentials in echoed headers, the
|
|
6
|
+
* prompt, model output, request ids, and pre-signed result URLs. Rather than
|
|
7
|
+
* denylisting those one by one — a list that is wrong the first time a
|
|
8
|
+
* provider adds a field — the retained artifact is a *shape*: every leaf
|
|
9
|
+
* becomes its type name, and only a small allowlist of enum-like keys keeps
|
|
10
|
+
* its literal value. A probe checks structure, so structure is all it needs.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Keys whose values stay literal. Each is an enum or a small closed set that
|
|
14
|
+
* carries no prompt, credential, identifier, or URL — and each is exactly what
|
|
15
|
+
* a contract failure is usually about.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SHAPE_LITERAL_KEYS: ReadonlySet<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Reduce a value to its shape. Strings become `"string(len)"`, numbers
|
|
20
|
+
* `"number"`, and so on; an allowlisted key keeps a short literal instead.
|
|
21
|
+
*/
|
|
22
|
+
export declare function summarizeShape(value: unknown, depth?: number): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* Redact free text a probe wants to keep — an error message, which can quote
|
|
25
|
+
* a body. Strips anything that looks like a credential or a URL query string,
|
|
26
|
+
* then truncates.
|
|
27
|
+
*/
|
|
28
|
+
export declare function redactText(text: string, maxLength?: number): string;
|
|
29
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/providers/contract/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAejD,CAAC;AAaH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAsBjE;AAcD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CA0BhE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact redaction for the provider contract probes.
|
|
3
|
+
*
|
|
4
|
+
* A probe run keeps something about the live response so a human can read why
|
|
5
|
+
* it failed, and a live response carries credentials in echoed headers, the
|
|
6
|
+
* prompt, model output, request ids, and pre-signed result URLs. Rather than
|
|
7
|
+
* denylisting those one by one — a list that is wrong the first time a
|
|
8
|
+
* provider adds a field — the retained artifact is a *shape*: every leaf
|
|
9
|
+
* becomes its type name, and only a small allowlist of enum-like keys keeps
|
|
10
|
+
* its literal value. A probe checks structure, so structure is all it needs.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Keys whose values stay literal. Each is an enum or a small closed set that
|
|
14
|
+
* carries no prompt, credential, identifier, or URL — and each is exactly what
|
|
15
|
+
* a contract failure is usually about.
|
|
16
|
+
*/
|
|
17
|
+
export const SHAPE_LITERAL_KEYS = new Set([
|
|
18
|
+
"object",
|
|
19
|
+
"role",
|
|
20
|
+
"type",
|
|
21
|
+
"state",
|
|
22
|
+
"status",
|
|
23
|
+
"code",
|
|
24
|
+
"finish_reason",
|
|
25
|
+
"finishReason",
|
|
26
|
+
"blockReason",
|
|
27
|
+
"mime_type",
|
|
28
|
+
"mimeType",
|
|
29
|
+
"content_type",
|
|
30
|
+
"modality",
|
|
31
|
+
"successFlag"
|
|
32
|
+
]);
|
|
33
|
+
/** Longest array the artifact keeps; the rest is reported as a count. */
|
|
34
|
+
const MAX_ARRAY_ITEMS = 3;
|
|
35
|
+
/** Deepest nesting the artifact keeps. */
|
|
36
|
+
const MAX_DEPTH = 8;
|
|
37
|
+
function literalKind(value) {
|
|
38
|
+
if (value === null)
|
|
39
|
+
return "null";
|
|
40
|
+
if (Array.isArray(value))
|
|
41
|
+
return "array";
|
|
42
|
+
return typeof value;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Reduce a value to its shape. Strings become `"string(len)"`, numbers
|
|
46
|
+
* `"number"`, and so on; an allowlisted key keeps a short literal instead.
|
|
47
|
+
*/
|
|
48
|
+
export function summarizeShape(value, depth = 0) {
|
|
49
|
+
if (depth > MAX_DEPTH)
|
|
50
|
+
return "…";
|
|
51
|
+
if (value === null)
|
|
52
|
+
return "null";
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
const head = value
|
|
55
|
+
.slice(0, MAX_ARRAY_ITEMS)
|
|
56
|
+
.map((item) => summarizeShape(item, depth + 1));
|
|
57
|
+
return value.length > MAX_ARRAY_ITEMS
|
|
58
|
+
? [...head, `…${value.length - MAX_ARRAY_ITEMS} more`]
|
|
59
|
+
: head;
|
|
60
|
+
}
|
|
61
|
+
if (typeof value === "object") {
|
|
62
|
+
const out = {};
|
|
63
|
+
for (const [key, item] of Object.entries(value)) {
|
|
64
|
+
out[key] = SHAPE_LITERAL_KEYS.has(key)
|
|
65
|
+
? shortLiteral(item)
|
|
66
|
+
: summarizeShape(item, depth + 1);
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
if (typeof value === "string")
|
|
71
|
+
return `string(${value.length})`;
|
|
72
|
+
return literalKind(value);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* An allowlisted key's value, kept literal but bounded: a long string under an
|
|
76
|
+
* allowlisted name is a value someone reused that key for, not an enum.
|
|
77
|
+
*/
|
|
78
|
+
function shortLiteral(value) {
|
|
79
|
+
if (typeof value === "string") {
|
|
80
|
+
return value.length <= 32 ? value : `string(${value.length})`;
|
|
81
|
+
}
|
|
82
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
83
|
+
return value;
|
|
84
|
+
return summarizeShape(value);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Redact free text a probe wants to keep — an error message, which can quote
|
|
88
|
+
* a body. Strips anything that looks like a credential or a URL query string,
|
|
89
|
+
* then truncates.
|
|
90
|
+
*/
|
|
91
|
+
export function redactText(text, maxLength = 400) {
|
|
92
|
+
const scrubbed = text
|
|
93
|
+
// Bearer/Key headers and `"api_key": "…"`-style pairs.
|
|
94
|
+
.replace(/\b(Bearer|Key)\s+[A-Za-z0-9._-]{8,}/gi, "$1 [redacted]")
|
|
95
|
+
.replace(/("?(?:api[_-]?key|apikey|token|secret|password|authorization|credential)"?\s*[:=]\s*"?)[^",\s}]+/gi, "$1[redacted]")
|
|
96
|
+
// Credential-shaped tokens wherever they sit, including inside a message
|
|
97
|
+
// a provider echoed back ("Incorrect API key provided: sk-…").
|
|
98
|
+
.replace(/\b(?:sk|pk|rk|ak|gsk|xai|fal|kie|hf|nvapi|AIza)[-_][A-Za-z0-9_-]{8,}/gi, "[redacted-credential]")
|
|
99
|
+
.replace(/\b[A-Za-z0-9_-]{32,}\b/g, "[redacted-token]")
|
|
100
|
+
// Any URL: the path may identify a user and the query may sign it.
|
|
101
|
+
.replace(/https?:\/\/[^\s"']+/gi, (url) => {
|
|
102
|
+
try {
|
|
103
|
+
return `${new URL(url).origin}/[redacted]`;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return "[redacted-url]";
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return scrubbed.length > maxLength
|
|
110
|
+
? `${scrubbed.slice(0, maxLength)}…`
|
|
111
|
+
: scrubbed;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/providers/contract/redact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The NodeTool tools that mirror a Claude Agent SDK built-in.
|
|
3
|
+
*
|
|
4
|
+
* Two rules follow from that mirroring, and this module is the one place both
|
|
5
|
+
* read:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Top level, not CodeAct.** Every provider gets these as ordinary tool
|
|
8
|
+
* definitions instead of finding them behind `execute_code`. They are the
|
|
9
|
+
* shapes every frontier model is trained on, so a tool call costs less than
|
|
10
|
+
* a sandbox round trip that only forwards one.
|
|
11
|
+
* 2. **The built-in wins on the Claude Agent SDK.** That provider runs the
|
|
12
|
+
* SDK's own agent loop, which already ships `Read`/`Write`/`Grep`/… . A
|
|
13
|
+
* NodeTool copy next to the built-in is a second surface for one capability,
|
|
14
|
+
* so {@link SDK_NATIVE_TOOL_REPLACEMENTS} names the ones the built-in
|
|
15
|
+
* replaces outright and the provider drops them from its MCP toolset.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Tools lifted out of the CodeAct sandbox and offered top level, for every
|
|
19
|
+
* provider. Membership is decided by "the Claude Agent SDK has a built-in for
|
|
20
|
+
* this", not by how often the tool is used.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CORE_TOOL_NAMES: ReadonlySet<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Discovery: which providers, models and node types this install actually has.
|
|
25
|
+
*
|
|
26
|
+
* These are lookups whose answer decides what the model writes next, and a
|
|
27
|
+
* wrong answer is expensive — a hallucinated model id or node type fails at
|
|
28
|
+
* generation time, after the run has been paid for. A lookup is also exactly
|
|
29
|
+
* the shape a tool call fits: one question, one answer, nothing to compose.
|
|
30
|
+
* Routing it through a code action costs a sandbox round trip and hides the
|
|
31
|
+
* result behind whatever the action chose to return.
|
|
32
|
+
*
|
|
33
|
+
* They stay on the belt, so `nodetool.models.pick()` inside an action and the
|
|
34
|
+
* graph planner's own searches keep working; what changes is the documented
|
|
35
|
+
* path.
|
|
36
|
+
*/
|
|
37
|
+
export declare const DISCOVERY_TOOL_NAMES: ReadonlySet<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Every tool offered as an ordinary tool call next to `execute_code`:
|
|
40
|
+
* {@link CORE_TOOL_NAMES} plus {@link DISCOVERY_TOOL_NAMES}. The two sets are
|
|
41
|
+
* kept apart because only the core set has SDK built-ins behind it — the
|
|
42
|
+
* substitution in {@link SDK_NATIVE_TOOL_REPLACEMENTS} must never reach a
|
|
43
|
+
* discovery tool, which no built-in covers.
|
|
44
|
+
*/
|
|
45
|
+
export declare const DIRECT_TOOL_NAMES: ReadonlySet<string>;
|
|
46
|
+
/**
|
|
47
|
+
* NodeTool tool name → the Claude Agent SDK built-in that replaces it. Only
|
|
48
|
+
* true replacements are listed. Three members of {@link CORE_TOOL_NAMES} are
|
|
49
|
+
* deliberately absent:
|
|
50
|
+
*
|
|
51
|
+
* - `list_directory` — `Glob` matches a pattern; it does not list a directory.
|
|
52
|
+
* - `browser` / `http_request` / `download_file` — `WebFetch` is a prompted GET
|
|
53
|
+
* that writes nothing, so it covers none of the three in full.
|
|
54
|
+
* - `run_subtask` — `Task` spawns an SDK agent holding SDK tools. The child
|
|
55
|
+
* would lose the NodeTool toolbelt the parent passed it.
|
|
56
|
+
*/
|
|
57
|
+
export declare const SDK_NATIVE_TOOL_REPLACEMENTS: ReadonlyMap<string, string>;
|
|
58
|
+
/**
|
|
59
|
+
* The replacements that resolve paths. NodeTool's versions are contained to the
|
|
60
|
+
* run's workspace directory; the SDK's built-ins resolve against the session
|
|
61
|
+
* `cwd`. Substituting one for the other is only equivalent when that `cwd` is
|
|
62
|
+
* the workspace, so a caller that passes no workspace directory keeps the
|
|
63
|
+
* NodeTool tools.
|
|
64
|
+
*/
|
|
65
|
+
export declare const SDK_NATIVE_WORKSPACE_SCOPED: ReadonlySet<string>;
|
|
66
|
+
/**
|
|
67
|
+
* The SDK built-ins that replace a NodeTool tool for this call.
|
|
68
|
+
*
|
|
69
|
+
* @param toolNames Tool names the caller offered.
|
|
70
|
+
* @param workspaceDir The session `cwd`. Without it the path-scoped
|
|
71
|
+
* replacements are skipped — see {@link SDK_NATIVE_WORKSPACE_SCOPED}.
|
|
72
|
+
*/
|
|
73
|
+
export declare function sdkNativeReplacements(toolNames: Iterable<string>, workspaceDir?: string): Set<string>;
|
|
74
|
+
//# sourceMappingURL=core-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-tools.d.ts","sourceRoot":"","sources":["../../src/providers/core-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAiB9C,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CASnD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAGhD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAUpE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAM1D,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB,GAAG,CAAC,MAAM,CAAC,CAQb"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The NodeTool tools that mirror a Claude Agent SDK built-in.
|
|
3
|
+
*
|
|
4
|
+
* Two rules follow from that mirroring, and this module is the one place both
|
|
5
|
+
* read:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Top level, not CodeAct.** Every provider gets these as ordinary tool
|
|
8
|
+
* definitions instead of finding them behind `execute_code`. They are the
|
|
9
|
+
* shapes every frontier model is trained on, so a tool call costs less than
|
|
10
|
+
* a sandbox round trip that only forwards one.
|
|
11
|
+
* 2. **The built-in wins on the Claude Agent SDK.** That provider runs the
|
|
12
|
+
* SDK's own agent loop, which already ships `Read`/`Write`/`Grep`/… . A
|
|
13
|
+
* NodeTool copy next to the built-in is a second surface for one capability,
|
|
14
|
+
* so {@link SDK_NATIVE_TOOL_REPLACEMENTS} names the ones the built-in
|
|
15
|
+
* replaces outright and the provider drops them from its MCP toolset.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Tools lifted out of the CodeAct sandbox and offered top level, for every
|
|
19
|
+
* provider. Membership is decided by "the Claude Agent SDK has a built-in for
|
|
20
|
+
* this", not by how often the tool is used.
|
|
21
|
+
*/
|
|
22
|
+
export const CORE_TOOL_NAMES = new Set([
|
|
23
|
+
// Read / Write / Edit / Glob / Grep.
|
|
24
|
+
"read_file",
|
|
25
|
+
"write_file",
|
|
26
|
+
"edit_file",
|
|
27
|
+
"list_directory",
|
|
28
|
+
"glob",
|
|
29
|
+
"grep",
|
|
30
|
+
// WebSearch / WebFetch.
|
|
31
|
+
"web_search",
|
|
32
|
+
"browser",
|
|
33
|
+
"http_request",
|
|
34
|
+
"download_file",
|
|
35
|
+
// TodoWrite.
|
|
36
|
+
"todo_write",
|
|
37
|
+
// Task.
|
|
38
|
+
"run_subtask"
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Discovery: which providers, models and node types this install actually has.
|
|
42
|
+
*
|
|
43
|
+
* These are lookups whose answer decides what the model writes next, and a
|
|
44
|
+
* wrong answer is expensive — a hallucinated model id or node type fails at
|
|
45
|
+
* generation time, after the run has been paid for. A lookup is also exactly
|
|
46
|
+
* the shape a tool call fits: one question, one answer, nothing to compose.
|
|
47
|
+
* Routing it through a code action costs a sandbox round trip and hides the
|
|
48
|
+
* result behind whatever the action chose to return.
|
|
49
|
+
*
|
|
50
|
+
* They stay on the belt, so `nodetool.models.pick()` inside an action and the
|
|
51
|
+
* graph planner's own searches keep working; what changes is the documented
|
|
52
|
+
* path.
|
|
53
|
+
*/
|
|
54
|
+
export const DISCOVERY_TOOL_NAMES = new Set([
|
|
55
|
+
// Providers and models.
|
|
56
|
+
"find_model",
|
|
57
|
+
"list_models",
|
|
58
|
+
"list_provider_models",
|
|
59
|
+
// Node types.
|
|
60
|
+
"search_nodes",
|
|
61
|
+
"get_node_info",
|
|
62
|
+
"list_nodes"
|
|
63
|
+
]);
|
|
64
|
+
/**
|
|
65
|
+
* Every tool offered as an ordinary tool call next to `execute_code`:
|
|
66
|
+
* {@link CORE_TOOL_NAMES} plus {@link DISCOVERY_TOOL_NAMES}. The two sets are
|
|
67
|
+
* kept apart because only the core set has SDK built-ins behind it — the
|
|
68
|
+
* substitution in {@link SDK_NATIVE_TOOL_REPLACEMENTS} must never reach a
|
|
69
|
+
* discovery tool, which no built-in covers.
|
|
70
|
+
*/
|
|
71
|
+
export const DIRECT_TOOL_NAMES = new Set([
|
|
72
|
+
...CORE_TOOL_NAMES,
|
|
73
|
+
...DISCOVERY_TOOL_NAMES
|
|
74
|
+
]);
|
|
75
|
+
/**
|
|
76
|
+
* NodeTool tool name → the Claude Agent SDK built-in that replaces it. Only
|
|
77
|
+
* true replacements are listed. Three members of {@link CORE_TOOL_NAMES} are
|
|
78
|
+
* deliberately absent:
|
|
79
|
+
*
|
|
80
|
+
* - `list_directory` — `Glob` matches a pattern; it does not list a directory.
|
|
81
|
+
* - `browser` / `http_request` / `download_file` — `WebFetch` is a prompted GET
|
|
82
|
+
* that writes nothing, so it covers none of the three in full.
|
|
83
|
+
* - `run_subtask` — `Task` spawns an SDK agent holding SDK tools. The child
|
|
84
|
+
* would lose the NodeTool toolbelt the parent passed it.
|
|
85
|
+
*/
|
|
86
|
+
export const SDK_NATIVE_TOOL_REPLACEMENTS = new Map([
|
|
87
|
+
["read_file", "Read"],
|
|
88
|
+
["write_file", "Write"],
|
|
89
|
+
["edit_file", "Edit"],
|
|
90
|
+
["glob", "Glob"],
|
|
91
|
+
["grep", "Grep"],
|
|
92
|
+
["web_search", "WebSearch"],
|
|
93
|
+
["todo_write", "TodoWrite"]
|
|
94
|
+
]);
|
|
95
|
+
/**
|
|
96
|
+
* The replacements that resolve paths. NodeTool's versions are contained to the
|
|
97
|
+
* run's workspace directory; the SDK's built-ins resolve against the session
|
|
98
|
+
* `cwd`. Substituting one for the other is only equivalent when that `cwd` is
|
|
99
|
+
* the workspace, so a caller that passes no workspace directory keeps the
|
|
100
|
+
* NodeTool tools.
|
|
101
|
+
*/
|
|
102
|
+
export const SDK_NATIVE_WORKSPACE_SCOPED = new Set([
|
|
103
|
+
"read_file",
|
|
104
|
+
"write_file",
|
|
105
|
+
"edit_file",
|
|
106
|
+
"glob",
|
|
107
|
+
"grep"
|
|
108
|
+
]);
|
|
109
|
+
/**
|
|
110
|
+
* The SDK built-ins that replace a NodeTool tool for this call.
|
|
111
|
+
*
|
|
112
|
+
* @param toolNames Tool names the caller offered.
|
|
113
|
+
* @param workspaceDir The session `cwd`. Without it the path-scoped
|
|
114
|
+
* replacements are skipped — see {@link SDK_NATIVE_WORKSPACE_SCOPED}.
|
|
115
|
+
*/
|
|
116
|
+
export function sdkNativeReplacements(toolNames, workspaceDir) {
|
|
117
|
+
const replaced = new Set();
|
|
118
|
+
for (const name of toolNames) {
|
|
119
|
+
if (!SDK_NATIVE_TOOL_REPLACEMENTS.has(name))
|
|
120
|
+
continue;
|
|
121
|
+
if (!workspaceDir && SDK_NATIVE_WORKSPACE_SCOPED.has(name))
|
|
122
|
+
continue;
|
|
123
|
+
replaced.add(name);
|
|
124
|
+
}
|
|
125
|
+
return replaced;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=core-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-tools.js","sourceRoot":"","sources":["../../src/providers/core-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IAC1D,qCAAqC;IACrC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,wBAAwB;IACxB,YAAY;IACZ,SAAS;IACT,cAAc;IACd,eAAe;IACf,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,aAAa;CACd,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,wBAAwB;IACxB,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,cAAc;IACd,cAAc;IACd,eAAe;IACf,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,GAAG,eAAe;IAClB,GAAG,oBAAoB;CACxB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAgC,IAAI,GAAG,CAC9E;IACE,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,YAAY,EAAE,WAAW,CAAC;CAC5B,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IACtE,WAAW;IACX,YAAY;IACZ,WAAW;IACX,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA2B,EAC3B,YAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtD,IAAI,CAAC,YAAY,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|