@nodetool-ai/runtime 0.7.0-rc.22 → 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,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image codec helpers for the raw-RGBA in-flight format.
|
|
3
|
+
*
|
|
4
|
+
* GPU image ops emit `ImageRef`s whose `data` is raw straight-alpha RGBA8
|
|
5
|
+
* (marked by `mimeType === RAW_RGBA_MIME`) so adjacent GPU ops skip the codec.
|
|
6
|
+
* Any boundary that needs portable bytes (client, storage, file save, the
|
|
7
|
+
* Python bridge) lazily encodes them to PNG via these helpers. Everything else
|
|
8
|
+
* must go through the shared decode/encode paths rather than assume `data` is
|
|
9
|
+
* already an encoded image.
|
|
10
|
+
*/
|
|
11
|
+
import { importHidden } from "@nodetool-ai/config";
|
|
12
|
+
import { isRawRgbaImage } from "@nodetool-ai/protocol";
|
|
13
|
+
let _sharpPromise = null;
|
|
14
|
+
/**
|
|
15
|
+
* Actionable error for a missing/broken `sharp` native addon, thrown by the
|
|
16
|
+
* raw-RGBA → PNG encoder when {@link loadSharp} resolves null and no Canvas
|
|
17
|
+
* fallback applies.
|
|
18
|
+
*/
|
|
19
|
+
export const SHARP_UNAVAILABLE_MESSAGE = "The 'sharp' image codec is unavailable. It is a native addon that must be " +
|
|
20
|
+
"installed for this runtime (run `npm install sharp` in the server install, " +
|
|
21
|
+
"or reinstall it for your platform/arch — e.g. musl or a serverless target). " +
|
|
22
|
+
"Raw-RGBA images cannot be encoded to PNG here without sharp or a Canvas.";
|
|
23
|
+
/**
|
|
24
|
+
* Lazily load `sharp`. Resolves `null` — never throws an opaque module-load
|
|
25
|
+
* error — off Node (browser/edge) or when the Node native addon can't load
|
|
26
|
+
* (musl, unbundled serverless, ABI mismatch, partial install). A rejected
|
|
27
|
+
* attempt is never cached, so a fixed install is picked up on the next call.
|
|
28
|
+
* Callers handle `null` with a Canvas fallback or a clear, actionable error.
|
|
29
|
+
*/
|
|
30
|
+
async function loadSharp() {
|
|
31
|
+
if (!_sharpPromise) {
|
|
32
|
+
// The attempt rejects when the import throws (broken addon: musl, ABI
|
|
33
|
+
// mismatch, partial install) so the `.catch` below can drop it from the
|
|
34
|
+
// cache and a later, fixed install is picked up. A legitimate off-Node
|
|
35
|
+
// `null` resolves and is cached — there is nothing to retry there.
|
|
36
|
+
const attempt = (async () => {
|
|
37
|
+
const mod = await importHidden("sharp");
|
|
38
|
+
if (!mod)
|
|
39
|
+
return null;
|
|
40
|
+
return "default" in mod ? mod.default : mod;
|
|
41
|
+
})();
|
|
42
|
+
_sharpPromise = attempt;
|
|
43
|
+
attempt.catch(() => {
|
|
44
|
+
if (_sharpPromise === attempt)
|
|
45
|
+
_sharpPromise = null;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Never surface an opaque module-load error to callers; a broken addon is
|
|
49
|
+
// reported as `null` (caller falls back to Canvas or a clear, actionable
|
|
50
|
+
// error). The cache reset above already happened on the rejected attempt.
|
|
51
|
+
return _sharpPromise.catch(() => null);
|
|
52
|
+
}
|
|
53
|
+
/** Encode raw straight-alpha RGBA8 pixels to PNG bytes. */
|
|
54
|
+
export async function encodeRawRgbaToPng(data, width, height) {
|
|
55
|
+
const sharp = await loadSharp();
|
|
56
|
+
if (!sharp) {
|
|
57
|
+
// No sharp (off Node, or a Node target where the addon won't load). Use
|
|
58
|
+
// OffscreenCanvas when the runtime exposes one (a bundled browser/edge or a
|
|
59
|
+
// Node build with Canvas); otherwise fail with a clear, actionable error.
|
|
60
|
+
if (typeof OffscreenCanvas !== "undefined") {
|
|
61
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
62
|
+
const ctx = canvas.getContext("2d");
|
|
63
|
+
if (!ctx)
|
|
64
|
+
throw new Error("OffscreenCanvas 2D context unavailable");
|
|
65
|
+
ctx.putImageData(new ImageData(new Uint8ClampedArray(data), width, height), 0, 0);
|
|
66
|
+
const blob = await canvas.convertToBlob({ type: "image/png" });
|
|
67
|
+
return new Uint8Array(await blob.arrayBuffer());
|
|
68
|
+
}
|
|
69
|
+
throw new Error(SHARP_UNAVAILABLE_MESSAGE);
|
|
70
|
+
}
|
|
71
|
+
const png = await sharp(Buffer.from(data.buffer, data.byteOffset, data.byteLength), { raw: { width, height, channels: 4 } })
|
|
72
|
+
.png()
|
|
73
|
+
.toBuffer();
|
|
74
|
+
return new Uint8Array(png);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* If `ref` is a raw-RGBA image, return an equivalent ImageRef with `data`
|
|
78
|
+
* encoded to PNG and `mimeType` set to `image/png`; otherwise return it
|
|
79
|
+
* unchanged. Use at any boundary that must hand out a portable image.
|
|
80
|
+
*/
|
|
81
|
+
export async function encodeRawImageRef(ref) {
|
|
82
|
+
if (!isRawRgbaImage(ref))
|
|
83
|
+
return ref;
|
|
84
|
+
const png = await encodeRawRgbaToPng(ref.data, ref.width, ref.height);
|
|
85
|
+
return { ...ref, data: png, mimeType: "image/png" };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Where an SVG can name a resource: an `href` / `xlink:href` attribute, and a
|
|
89
|
+
* CSS `url()`. Used to *split* the markup, so each piece that follows is where
|
|
90
|
+
* one value begins.
|
|
91
|
+
*
|
|
92
|
+
* Splitting rather than matching the values is the whole point, and it took
|
|
93
|
+
* two CodeQL findings to arrive at. A regex that matches a value restarts at
|
|
94
|
+
* the next candidate when it fails, and a value scan that runs to the end of
|
|
95
|
+
* the document on each of n candidates is quadratic: `"url(" + 2000 spaces`
|
|
96
|
+
* never finished against the first version, and `"url(".repeat(400_000)`
|
|
97
|
+
* took 15s against the second. Pieces, by contrast, partition the document —
|
|
98
|
+
* bounded work per piece sums to linear however many openers there are.
|
|
99
|
+
*/
|
|
100
|
+
const REFERENCE_OPENER = /(url\(|(?:xlink:)?href\s*=\s*)/i;
|
|
101
|
+
/** Longest value the screen reads. Past this it is not a URL anyone meant. */
|
|
102
|
+
const MAX_REFERENCE_VALUE = 2048;
|
|
103
|
+
const isSpace = (ch) => ch === " " || ch === "\t" || ch === "\n" || ch === "\r" || ch === "\f";
|
|
104
|
+
/** Characters that end a reference value in either syntax. */
|
|
105
|
+
const VALUE_END = new Set([")", '"', "'", ">", " ", "\t", "\n", "\r", "\f"]);
|
|
106
|
+
/**
|
|
107
|
+
* Read the value out of the text following an opener.
|
|
108
|
+
*
|
|
109
|
+
* Truncating at {@link MAX_REFERENCE_VALUE} is safe in the direction that
|
|
110
|
+
* matters: the value is only tested for a `#` or `data:` prefix, and a
|
|
111
|
+
* truncated value keeps its prefix — so a long `data:` payload still reads as
|
|
112
|
+
* internal, and anything else still reads as external.
|
|
113
|
+
*/
|
|
114
|
+
function referenceValue(piece) {
|
|
115
|
+
let i = 0;
|
|
116
|
+
while (i < piece.length && isSpace(piece[i]))
|
|
117
|
+
i++;
|
|
118
|
+
if (piece[i] === '"' || piece[i] === "'")
|
|
119
|
+
i++;
|
|
120
|
+
const start = i;
|
|
121
|
+
const limit = Math.min(piece.length, start + MAX_REFERENCE_VALUE);
|
|
122
|
+
while (i < limit && !VALUE_END.has(piece[i]))
|
|
123
|
+
i++;
|
|
124
|
+
return piece.slice(start, i);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Whether a reference points outside the document. A fragment (`#id`) and a
|
|
128
|
+
* `data:` payload are self-contained; an empty value names nothing.
|
|
129
|
+
*/
|
|
130
|
+
function isExternalReference(value) {
|
|
131
|
+
if (!value)
|
|
132
|
+
return false;
|
|
133
|
+
if (value.startsWith("#"))
|
|
134
|
+
return false;
|
|
135
|
+
return !value.slice(0, 5).toLowerCase().startsWith("data:");
|
|
136
|
+
}
|
|
137
|
+
/** The first reference in this markup that points outside it, if any. */
|
|
138
|
+
function firstExternalReference(markup) {
|
|
139
|
+
// One capture group, so `split` interleaves: text, opener, text, opener, …
|
|
140
|
+
// Every even index from 2 up is the text a value starts in.
|
|
141
|
+
const parts = markup.split(REFERENCE_OPENER);
|
|
142
|
+
for (let i = 2; i < parts.length; i += 2) {
|
|
143
|
+
const value = referenceValue(parts[i]);
|
|
144
|
+
if (isExternalReference(value))
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
/** Largest SVG this rasterizer will hand to the decoder. */
|
|
150
|
+
const MAX_SVG_BYTES = 8 * 1024 * 1024;
|
|
151
|
+
/** Longest side an SVG is rendered at when the caller names no `minSide`. */
|
|
152
|
+
const SVG_FALLBACK_SIDE = 1024;
|
|
153
|
+
/** Ceiling on the raster an SVG is rendered into, whatever `minSide` asks for. */
|
|
154
|
+
const MAX_SVG_RASTER_SIDE = 4096;
|
|
155
|
+
/**
|
|
156
|
+
* Rasterize SVG markup to PNG bytes.
|
|
157
|
+
*
|
|
158
|
+
* Vector sources reach the raster paths (a vision provider's image block, a
|
|
159
|
+
* crop, a downscale) only through here. Two rules the caller does not have to
|
|
160
|
+
* know about:
|
|
161
|
+
*
|
|
162
|
+
* - **No external references.** The decoder behind `sharp` is librsvg, which
|
|
163
|
+
* resolves `href` and `url()` against the process's own filesystem and
|
|
164
|
+
* network. Since the markup here is written by a model or uploaded by
|
|
165
|
+
* whoever, a document that reaches outward is refused by name rather than
|
|
166
|
+
* rendered — the error tells the caller to inline the resource.
|
|
167
|
+
* - **A usable size.** An SVG that declares `width="24"` renders to a 24px
|
|
168
|
+
* PNG, which is not something a model can read. `minSide` scales the render
|
|
169
|
+
* up so the result is worth looking at, defaulting to
|
|
170
|
+
* {@link SVG_FALLBACK_SIDE}.
|
|
171
|
+
*/
|
|
172
|
+
export async function rasterizeSvg(bytes, opts = {}) {
|
|
173
|
+
if (bytes.byteLength > MAX_SVG_BYTES) {
|
|
174
|
+
throw new Error(`SVG is ${bytes.byteLength} bytes, over the ${MAX_SVG_BYTES}-byte limit for rasterization.`);
|
|
175
|
+
}
|
|
176
|
+
const markup = new TextDecoder("utf-8", { fatal: false }).decode(bytes);
|
|
177
|
+
const external = firstExternalReference(markup);
|
|
178
|
+
if (external !== null) {
|
|
179
|
+
throw new Error(`Refusing to render an SVG that references "${external}". ` +
|
|
180
|
+
`The renderer would fetch it from this host's filesystem or network. ` +
|
|
181
|
+
`Inline the resource as a data: URI, or drop the reference.`);
|
|
182
|
+
}
|
|
183
|
+
const sharp = await loadSharp();
|
|
184
|
+
if (!sharp) {
|
|
185
|
+
throw new Error(SHARP_UNAVAILABLE_MESSAGE);
|
|
186
|
+
}
|
|
187
|
+
const buffer = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
188
|
+
const intrinsic = await sharp(buffer).metadata();
|
|
189
|
+
const srcSide = Math.max(intrinsic.width ?? 0, intrinsic.height ?? 0);
|
|
190
|
+
const targetSide = Math.min(opts.minSide ?? SVG_FALLBACK_SIDE, MAX_SVG_RASTER_SIDE);
|
|
191
|
+
// librsvg scales the whole render by DPI, so a density is how an SVG is asked
|
|
192
|
+
// for more pixels than it declares; 72 is the 1:1 baseline. The density is
|
|
193
|
+
// left unbounded because what it produces is not: the render lands at
|
|
194
|
+
// `targetSide` however few units the document declares, so a `width="0.01"`
|
|
195
|
+
// document costs the same pixels as any other.
|
|
196
|
+
const density = srcSide > 0 && srcSide < targetSide
|
|
197
|
+
? Math.ceil((72 * targetSide) / srcSide)
|
|
198
|
+
: 72;
|
|
199
|
+
let pipeline = sharp(buffer, { density, failOn: "none" });
|
|
200
|
+
if (opts.maxSide && opts.maxSide > 0) {
|
|
201
|
+
pipeline = pipeline.resize({
|
|
202
|
+
width: opts.maxSide,
|
|
203
|
+
height: opts.maxSide,
|
|
204
|
+
fit: "inside",
|
|
205
|
+
withoutEnlargement: true
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
const { data, info } = await pipeline
|
|
209
|
+
.png()
|
|
210
|
+
.toBuffer({ resolveWithObject: true });
|
|
211
|
+
return { data: new Uint8Array(data), width: info.width, height: info.height };
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Decode encoded image bytes (PNG/JPEG/WebP/…), optionally crop to a pixel
|
|
215
|
+
* `region` and/or downscale so the longest side fits `maxSide`, then re-encode
|
|
216
|
+
* to PNG. Used by the `view_image` tool to load only the pixels an agent asks
|
|
217
|
+
* for — a region crop and a "low" detail downscale both cut the token cost of
|
|
218
|
+
* the image the model actually sees.
|
|
219
|
+
*
|
|
220
|
+
* Coordinates are clamped to the image bounds, so an over-large or partly
|
|
221
|
+
* out-of-frame region yields the overlapping area rather than an error. When
|
|
222
|
+
* `sharp` is unavailable (off Node, or a broken native addon) the original
|
|
223
|
+
* bytes are returned unchanged with `width`/`height` 0 — the caller still gets
|
|
224
|
+
* a viewable full image, just uncropped. In that pass-through case the returned
|
|
225
|
+
* `mimeType` is `opts.sourceMime` (the caller's known format) so the bytes are
|
|
226
|
+
* never mislabeled; it falls back to `image/png` only when the caller didn't
|
|
227
|
+
* provide one.
|
|
228
|
+
*/
|
|
229
|
+
export async function extractImageRegion(bytes, opts = {}) {
|
|
230
|
+
const sharp = await loadSharp();
|
|
231
|
+
if (!sharp) {
|
|
232
|
+
// No re-encode happened — keep the true source mime rather than claiming
|
|
233
|
+
// PNG for what may be JPEG/WebP/GIF bytes (which a vision provider rejects).
|
|
234
|
+
return {
|
|
235
|
+
data: bytes,
|
|
236
|
+
mimeType: opts.sourceMime || "image/png",
|
|
237
|
+
width: 0,
|
|
238
|
+
height: 0
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
let pipeline = sharp(Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength), {
|
|
242
|
+
failOn: "none"
|
|
243
|
+
});
|
|
244
|
+
const meta = await pipeline.metadata();
|
|
245
|
+
const srcW = meta.width ?? 0;
|
|
246
|
+
const srcH = meta.height ?? 0;
|
|
247
|
+
const region = opts.region;
|
|
248
|
+
if (region) {
|
|
249
|
+
const left = Math.max(0, Math.min(Math.floor(region.x), Math.max(0, srcW - 1)));
|
|
250
|
+
const top = Math.max(0, Math.min(Math.floor(region.y), Math.max(0, srcH - 1)));
|
|
251
|
+
const maxW = srcW ? srcW - left : Math.floor(region.width);
|
|
252
|
+
const maxH = srcH ? srcH - top : Math.floor(region.height);
|
|
253
|
+
const width = Math.max(1, Math.min(Math.floor(region.width), maxW));
|
|
254
|
+
const height = Math.max(1, Math.min(Math.floor(region.height), maxH));
|
|
255
|
+
pipeline = pipeline.extract({ left, top, width, height });
|
|
256
|
+
}
|
|
257
|
+
if (opts.maxSide && opts.maxSide > 0) {
|
|
258
|
+
pipeline = pipeline.resize({
|
|
259
|
+
width: opts.maxSide,
|
|
260
|
+
height: opts.maxSide,
|
|
261
|
+
fit: "inside",
|
|
262
|
+
withoutEnlargement: true
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
const { data, info } = await pipeline.png().toBuffer({ resolveWithObject: true });
|
|
266
|
+
return {
|
|
267
|
+
data: new Uint8Array(data),
|
|
268
|
+
mimeType: "image/png",
|
|
269
|
+
width: info.width,
|
|
270
|
+
height: info.height
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=image-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-codec.js","sourceRoot":"","sources":["../src/image-codec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,68 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @nodetool-ai/runtime – Public API
|
|
3
3
|
*/
|
|
4
|
-
export { ProcessingContext, MemoryCache,
|
|
4
|
+
export { ProcessingContext, ACTIVE_MODEL_CONTEXT_KEY, type ActiveModelSelection, MemoryCache, resolveWorkspacePath, setDefaultModelInterfaces, getDefaultModelInterfaces, mediaResolverFor, type AssetOutputMode, type CacheAdapter, type AssetInfoEntry, type FolderAssetEntry, type ProcessingContextModelInterfaces, type EntityUpsertArgs, type GenerationRequest, type GenerationResult, type GenerationRunOptions, type GenerationLifecycleHooks, GenerationAlreadyAcceptedError, type InjectedTool, type StorageAdapter, type StorageEntry, type StorageListResult, type StorageStat } from "./context.js";
|
|
5
|
+
export { WorkspacePathError, WorkspaceNotLocalError, observeWorkspace, type Workspace, type WorkspaceChange, type WorkspaceEntry, type WorkspaceStat } from "./workspace.js";
|
|
6
|
+
export { StorageWorkspace, createWorkspace, createLocalWorkspace } from "./storage-workspace.js";
|
|
7
|
+
export { PrefixedStorageAdapter } from "./prefixed-storage-adapter.js";
|
|
8
|
+
export type { SandboxModuleCatalog } from "./sandbox-module-catalog.js";
|
|
9
|
+
export { getProcessSandboxModuleCatalog, refuseSandboxDelivery, setProcessSandboxModuleCatalog } from "./sandbox-module-catalog.js";
|
|
10
|
+
export { AgentMemory, memoryKeys, type MemoryEntry, type MemoryFilter, type MemoryKind, type MemoryListener } from "./agent-memory.js";
|
|
5
11
|
export * from "./providers/index.js";
|
|
6
|
-
export { initTelemetry, getTracer, type TelemetryOptions } from "./telemetry.js";
|
|
12
|
+
export { initTelemetry, shutdownTelemetry, getTracer, type TelemetryOptions } from "./telemetry.js";
|
|
7
13
|
export { spanToRecord, JsonlFileSpanExporter, StdoutSpanExporter, type TraceRecord, type StdoutFormat } from "./trace-exporters.js";
|
|
8
|
-
export { withAgentSpan, withAgentSpanGen, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot, type AgentSpanKind, type LlmUsage } from "./tracing-helpers.js";
|
|
14
|
+
export { withAgentSpan, withAgentSpanGen, withSpan, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot, type AgentSpanKind, type LlmUsage } from "./tracing-helpers.js";
|
|
15
|
+
export { RecoverableNodeError, isRecoverableNodeError } from "./recoverable-node-error.js";
|
|
16
|
+
export { createInvocationAccount, inInvocationAccount, recordInvocationCost, recordInvocationAsset, currentInvocationAccount, type InvocationAccount } from "./invocation-account.js";
|
|
17
|
+
export { recordGenerationReceipt, recordGenerationProviderResult, recordGenerationReceiptAsync, recordGenerationBindingAsync, runWithGenerationReceipt, currentGenerationReceipt, currentGenerationProviderRequestOptions, isAuthoritativeProviderTerminalError, GenerationScopeError, type GenerationReceiptScopeOptions, type GenerationProviderRequestOptions } from "./generation-receipt.js";
|
|
18
|
+
export { HIGGSFIELD_BASE, HiggsfieldApiError, higgsfieldSubmit, higgsfieldGetStatus, higgsfieldGetStatusByRequestId, higgsfieldAwaitResult, higgsfieldCancel, higgsfieldCancelByRequestId, higgsfieldEstimate, higgsfieldCreateUploadUrl, higgsfieldUploadMedia, higgsfieldOutputUrls, higgsfieldDownloadResult } from "./providers/higgsfield-transport.js";
|
|
19
|
+
export type { HiggsfieldCredentials, HiggsfieldStatus, HiggsfieldSubmission, HiggsfieldUpload, HiggsfieldEstimate } from "./providers/higgsfield-transport.js";
|
|
20
|
+
export { generationRegistry, type GenerationOutcome, type CompletedGeneration } from "./generation-registry.js";
|
|
21
|
+
export { redactGenerationParams } from "./redact-params.js";
|
|
22
|
+
export { CostCappedTurnBudget, CompositeTurnBudget, createRunBudget, createDeadline, createSemaphore, createCounter, isRunBudget, budgetFromContext, RUN_BUDGET_CONTEXT_KEY, BUDGET_EXHAUSTION_KINDS, TURN_REFUSALS, type TurnBudget, type TurnReservation, type TurnReservationHandle, type CostCappedTurnBudgetOptions, type CompositeTurnBudgetOptions, type CreateRunBudgetOptions, type RunBudget, type RunTurnBudget, type BudgetExhaustion, type BudgetExhaustionKind, type TurnRefusal, type Deadline, type Semaphore, type Release, type Counter } from "./turn-budget.js";
|
|
9
23
|
export { packContext, type PackedContext } from "./context-packer.js";
|
|
24
|
+
export { resolveEntities, type EntityLibraryContext } from "./entities.js";
|
|
25
|
+
export { isZodSchema, parseWithTypeCoercion, zodToJsonSchema, type JsonSchema, type ZodOrJsonSchema } from "@nodetool-ai/protocol/zod-schema";
|
|
26
|
+
export { VariableChannel } from "./variable-channel.js";
|
|
27
|
+
export { countTokens, truncateToTokens } from "./token-counter.js";
|
|
10
28
|
export { PythonStdioBridge, type PythonBridgeOptions, type PythonNodeMetadata, type ExecuteResult, type ProgressEvent, type PythonWorkerLoadError, type PythonWorkerStatus } from "./python-stdio-bridge.js";
|
|
29
|
+
import { PythonBridgeBase } from "./python-bridge-base.js";
|
|
30
|
+
export { PythonBridgeBase };
|
|
31
|
+
export type { UnifiedModelLike, ExecuteIdentity, JobBoundary, PythonJobLifecycle, ModelEvictRequest, ModelEvictResult, ModelDownloadRequest, ModelDownloadUpdate, ComfyStatusInfo, ComfyEvent, ComfyExecuteOptions, ComfyExecuteResult, ComfyModelDownloadRequest, ComfyModelDownloadUpdate, ComfyModelInfo, BlenderExecuteJob, BlenderStatusInfo, BlenderEvent, BlenderExecuteOptions, BlenderExecuteResult } from "./python-bridge-types.js";
|
|
32
|
+
export { WebsocketPythonBridge, type WebsocketPythonBridgeOptions } from "./python-websocket-bridge.js";
|
|
33
|
+
export { createPythonBridge, onPythonBridgeCreated } from "./python-bridge-factory.js";
|
|
34
|
+
export type { PythonBridgeObserver } from "./python-bridge-factory.js";
|
|
35
|
+
export { encodeFrame, FrameDecoder, FrameSizeError, DEFAULT_MAX_BRIDGE_FRAME_SIZE, type FrameDecoderOptions } from "./python-bridge-framing.js";
|
|
36
|
+
export { SwappableBridge } from "./swappable-python-bridge.js";
|
|
37
|
+
/**
|
|
38
|
+
* Transport-agnostic public handle for a Python worker bridge. An interface
|
|
39
|
+
* (not the concrete base) so both the stdio/WebSocket bridges and the
|
|
40
|
+
* {@link SwappableBridge} wrapper satisfy it — consumers hold one stable
|
|
41
|
+
* reference whose behavior follows the active worker.
|
|
42
|
+
*/
|
|
43
|
+
export type { PythonBridge } from "./python-bridge-types.js";
|
|
11
44
|
export { BRIDGE_PROTOCOL_VERSION, MIN_NODETOOL_CORE_VERSION } from "@nodetool-ai/protocol/bridge-protocol";
|
|
45
|
+
export { encodeRawRgbaToPng, encodeRawImageRef, extractImageRegion, rasterizeSvg } from "./image-codec.js";
|
|
46
|
+
export type { ImageRegion } from "./image-codec.js";
|
|
12
47
|
export { PythonNodeExecutor } from "./python-node-executor.js";
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export
|
|
48
|
+
export { connectPythonBridgeForGraph, resolvePythonNodeExecutor } from "./python-graph-resolver.js";
|
|
49
|
+
export { loadMediaRefBytes, type MediaRefValue } from "./media-ref-bytes.js";
|
|
50
|
+
export { fetchExternalMedia, privateMediaFetchAllowed } from "./external-media-fetch.js";
|
|
51
|
+
export { assetRefToPromptToken, classifyAssetToken, classifyTextToken, expandAssetReferences, expandEntityRefs, expandEntitiesForGeneration, findAssetRefs, findImageAssetRefs, findTextAssetRefs, inlineTextAssetRefs, stripAssetRefs, mapPromptAssetsToInputs, type AssetMediaKind, type PromptAssetRef, type TextAssetRef, type PromptAssetTextField, type PromptAssetInputField, type InjectedAssetRef, type EntityRefResolver, type ExpandedEntityPrompt } from "./prompt-asset-refs.js";
|
|
52
|
+
export { logPythonWorkerStderr } from "./python-worker-stderr.js";
|
|
53
|
+
export { type NodeExecutor, type StreamingInputs, type StreamingOutputs, type MessageEnvelopeLike, type TriggerEvent } from "./node-executor.js";
|
|
54
|
+
export { createFakeContext, stubGlobalFetch, type FakeContextHandle, type FakeContextOptions } from "./testing.js";
|
|
55
|
+
export { executeComfy, uploadComfyFile } from "./comfy-executor.js";
|
|
56
|
+
export { executeBlender, BlenderExecutorError } from "./blender-executor.js";
|
|
57
|
+
export type { BlenderWorkerJob, BlenderExecutorOptions, BlenderExecutorStats, BlenderExecutorResult } from "./blender-executor.js";
|
|
58
|
+
export type { ComfyExecutorResult, ComfyImage, ComfyFileOutput, ComfyNodeOutputs, ComfyProgressEvent, ComfyExecutionHandle } from "./comfy-executor.js";
|
|
59
|
+
export { runHostBinary, HostBinaryMissingError, MAX_CAPTURED_BYTES, MAX_ARTIFACT_BYTES, maxConcurrentHostBinaries, mimeFromFilename, clampTimeoutSeconds, type HostBinaryResult, type RunHostBinaryOptions } from "./host-binaries.js";
|
|
16
60
|
export { RECOMMENDED_MODELS } from "./recommended-models.js";
|
|
17
61
|
export type { RecommendedUnifiedModel } from "./recommended-models.js";
|
|
62
|
+
export { clearProviderCache, getProviderCacheVersion } from "./provider-cache.js";
|
|
63
|
+
export { registerCostReconciler, getCostReconciler } from "./cost-reconciler.js";
|
|
64
|
+
export type { CostReconciler, CostReconcileInput, ReconciledCost } from "./cost-reconciler.js";
|
|
65
|
+
export * from "./google/index.js";
|
|
66
|
+
export { PERMISSION_GATE_CONTEXT_KEY, decidePermission, headlessDenialReason, headlessGate } from "./permission-gate.js";
|
|
67
|
+
export type { ApprovalDecision, ApprovalRequest, PermissionCategory, PermissionDecision, PermissionGateAction, PermissionGateClock, PermissionGateOptions, PermissionGateVerdict, PermissionMode, RequestApproval } from "./permission-gate.js";
|
|
18
68
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @nodetool-ai/runtime – Public API
|
|
3
3
|
*/
|
|
4
|
-
export { ProcessingContext, MemoryCache,
|
|
4
|
+
export { ProcessingContext, ACTIVE_MODEL_CONTEXT_KEY, MemoryCache, resolveWorkspacePath, setDefaultModelInterfaces, getDefaultModelInterfaces, mediaResolverFor, GenerationAlreadyAcceptedError } from "./context.js";
|
|
5
|
+
// The run's workspace, as an interface over any storage backend. Importing
|
|
6
|
+
// `storage-workspace.js` here also installs the factory ProcessingContext uses
|
|
7
|
+
// to build a workspace from a plain `workspaceDir`.
|
|
8
|
+
export { WorkspacePathError, WorkspaceNotLocalError, observeWorkspace } from "./workspace.js";
|
|
9
|
+
export { StorageWorkspace, createWorkspace, createLocalWorkspace } from "./storage-workspace.js";
|
|
10
|
+
export { PrefixedStorageAdapter } from "./prefixed-storage-adapter.js";
|
|
11
|
+
export { getProcessSandboxModuleCatalog, refuseSandboxDelivery, setProcessSandboxModuleCatalog } from "./sandbox-module-catalog.js";
|
|
12
|
+
export { AgentMemory, memoryKeys } from "./agent-memory.js";
|
|
5
13
|
export * from "./providers/index.js";
|
|
6
|
-
export { initTelemetry, getTracer } from "./telemetry.js";
|
|
14
|
+
export { initTelemetry, shutdownTelemetry, getTracer } from "./telemetry.js";
|
|
7
15
|
export { spanToRecord, JsonlFileSpanExporter, StdoutSpanExporter } from "./trace-exporters.js";
|
|
8
|
-
export { withAgentSpan, withAgentSpanGen, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot } from "./tracing-helpers.js";
|
|
16
|
+
export { withAgentSpan, withAgentSpanGen, withSpan, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot } from "./tracing-helpers.js";
|
|
17
|
+
export { RecoverableNodeError, isRecoverableNodeError } from "./recoverable-node-error.js";
|
|
18
|
+
export { createInvocationAccount, inInvocationAccount, recordInvocationCost, recordInvocationAsset, currentInvocationAccount } from "./invocation-account.js";
|
|
19
|
+
export { recordGenerationReceipt, recordGenerationProviderResult, recordGenerationReceiptAsync, recordGenerationBindingAsync, runWithGenerationReceipt, currentGenerationReceipt, currentGenerationProviderRequestOptions, isAuthoritativeProviderTerminalError, GenerationScopeError } from "./generation-receipt.js";
|
|
20
|
+
export { HIGGSFIELD_BASE, HiggsfieldApiError, higgsfieldSubmit, higgsfieldGetStatus, higgsfieldGetStatusByRequestId, higgsfieldAwaitResult, higgsfieldCancel, higgsfieldCancelByRequestId, higgsfieldEstimate, higgsfieldCreateUploadUrl, higgsfieldUploadMedia, higgsfieldOutputUrls, higgsfieldDownloadResult } from "./providers/higgsfield-transport.js";
|
|
21
|
+
export { generationRegistry } from "./generation-registry.js";
|
|
22
|
+
export { redactGenerationParams } from "./redact-params.js";
|
|
23
|
+
export { CostCappedTurnBudget, CompositeTurnBudget, createRunBudget, createDeadline, createSemaphore, createCounter, isRunBudget, budgetFromContext, RUN_BUDGET_CONTEXT_KEY, BUDGET_EXHAUSTION_KINDS, TURN_REFUSALS } from "./turn-budget.js";
|
|
9
24
|
export { packContext } from "./context-packer.js";
|
|
25
|
+
export { resolveEntities } from "./entities.js";
|
|
26
|
+
// Public API re-export — the source of truth lives in @nodetool-ai/protocol
|
|
27
|
+
export { isZodSchema, parseWithTypeCoercion, zodToJsonSchema } from "@nodetool-ai/protocol/zod-schema";
|
|
28
|
+
export { VariableChannel } from "./variable-channel.js";
|
|
29
|
+
export { countTokens, truncateToTokens } from "./token-counter.js";
|
|
10
30
|
export { PythonStdioBridge } from "./python-stdio-bridge.js";
|
|
31
|
+
import { PythonBridgeBase } from "./python-bridge-base.js";
|
|
32
|
+
export { PythonBridgeBase };
|
|
33
|
+
export { WebsocketPythonBridge } from "./python-websocket-bridge.js";
|
|
34
|
+
export { createPythonBridge, onPythonBridgeCreated } from "./python-bridge-factory.js";
|
|
35
|
+
export { encodeFrame, FrameDecoder, FrameSizeError, DEFAULT_MAX_BRIDGE_FRAME_SIZE } from "./python-bridge-framing.js";
|
|
36
|
+
export { SwappableBridge } from "./swappable-python-bridge.js";
|
|
11
37
|
// Public API re-export — the source of truth lives in @nodetool-ai/protocol
|
|
12
38
|
// so the Electron main bundle (which can't pull in the runtime barrel) and
|
|
13
39
|
// any other thin consumer can read these constants without dragging the
|
|
14
40
|
// providers in. Internal callers should import from protocol directly.
|
|
15
41
|
export { BRIDGE_PROTOCOL_VERSION, MIN_NODETOOL_CORE_VERSION } from "@nodetool-ai/protocol/bridge-protocol";
|
|
42
|
+
export { encodeRawRgbaToPng, encodeRawImageRef, extractImageRegion, rasterizeSvg } from "./image-codec.js";
|
|
16
43
|
export { PythonNodeExecutor } from "./python-node-executor.js";
|
|
17
|
-
export {
|
|
44
|
+
export { connectPythonBridgeForGraph, resolvePythonNodeExecutor } from "./python-graph-resolver.js";
|
|
45
|
+
export { loadMediaRefBytes } from "./media-ref-bytes.js";
|
|
46
|
+
export { fetchExternalMedia, privateMediaFetchAllowed } from "./external-media-fetch.js";
|
|
47
|
+
export { assetRefToPromptToken, classifyAssetToken, classifyTextToken, expandAssetReferences, expandEntityRefs, expandEntitiesForGeneration, findAssetRefs, findImageAssetRefs, findTextAssetRefs, inlineTextAssetRefs, stripAssetRefs, mapPromptAssetsToInputs } from "./prompt-asset-refs.js";
|
|
48
|
+
export { logPythonWorkerStderr } from "./python-worker-stderr.js";
|
|
49
|
+
export { createFakeContext, stubGlobalFetch } from "./testing.js";
|
|
50
|
+
export { executeComfy, uploadComfyFile } from "./comfy-executor.js";
|
|
51
|
+
export { executeBlender, BlenderExecutorError } from "./blender-executor.js";
|
|
52
|
+
export { runHostBinary, HostBinaryMissingError, MAX_CAPTURED_BYTES, MAX_ARTIFACT_BYTES, maxConcurrentHostBinaries, mimeFromFilename, clampTimeoutSeconds } from "./host-binaries.js";
|
|
18
53
|
export { RECOMMENDED_MODELS } from "./recommended-models.js";
|
|
54
|
+
export { clearProviderCache, getProviderCacheVersion } from "./provider-cache.js";
|
|
55
|
+
export { registerCostReconciler, getCostReconciler } from "./cost-reconciler.js";
|
|
56
|
+
export * from "./google/index.js";
|
|
57
|
+
export { PERMISSION_GATE_CONTEXT_KEY, decidePermission, headlessDenialReason, headlessGate } from "./permission-gate.js";
|
|
19
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAExB,WAAW,EACX,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAWhB,8BAA8B,EAM/B,MAAM,cAAc,CAAC;AAEtB,2EAA2E;AAC3E,+EAA+E;AAC/E,oDAAoD;AACpD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,WAAW,EACX,UAAU,EAKX,MAAM,mBAAmB,CAAC;AAE3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAGnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,uCAAuC,EACvC,oCAAoC,EACpC,oBAAoB,EAGrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,EACL,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EAgBd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,eAAe,EAA6B,MAAM,eAAe,CAAC;AAC3E,4EAA4E;AAC5E,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,eAAe,EAGhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,iBAAiB,EAOlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAuB5B,OAAO,EACL,qBAAqB,EAEtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,6BAA6B,EAE9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAQ/D,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EASxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAQlE,OAAO,EACL,iBAAiB,EACjB,eAAe,EAGhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAe7E,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAM9B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACb,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invocation-scoped cost and asset accounting.
|
|
3
|
+
*
|
|
4
|
+
* The supervisor may only offer `retry` for an invocation that spent nothing
|
|
5
|
+
* and wrote nothing (docs/workflow-supervisor-design.md §5.3). Answering that
|
|
6
|
+
* needs per-invocation numbers, and a stack on the shared `ProcessingContext`
|
|
7
|
+
* cannot supply them: every actor holds the same context and actors complete
|
|
8
|
+
* out of order, so push/pop would credit actor A's charge to actor B whenever
|
|
9
|
+
* A finishes first — precisely the corruption that would re-expose retry after
|
|
10
|
+
* a billed call.
|
|
11
|
+
*
|
|
12
|
+
* So the scope travels with the invocation's async execution instead. Cost and
|
|
13
|
+
* asset hooks write to whichever account is on the async stack; concurrent
|
|
14
|
+
* invocations each have their own, in any completion order.
|
|
15
|
+
*/
|
|
16
|
+
export interface InvocationAccount {
|
|
17
|
+
/** Provider charges (USD) recorded while this invocation ran. */
|
|
18
|
+
costUsd: number;
|
|
19
|
+
/** True once the invocation created an asset. */
|
|
20
|
+
createdAssets: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function createInvocationAccount(): InvocationAccount;
|
|
23
|
+
/**
|
|
24
|
+
* Run `fn` inside `account`. The caller owns the account so it can read what
|
|
25
|
+
* the invocation spent even when `fn` throws — which is the case retry safety
|
|
26
|
+
* turns on.
|
|
27
|
+
*/
|
|
28
|
+
export declare function inInvocationAccount<T>(account: InvocationAccount, fn: () => Promise<T>): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Charge the invocation currently on the async stack, if any.
|
|
31
|
+
*
|
|
32
|
+
* A non-finite amount means a provider reported something we cannot add up —
|
|
33
|
+
* and "cannot add up" must not read as "free", or the invocation would look
|
|
34
|
+
* cost-free and re-earn a retry after a real charge. It is recorded as a
|
|
35
|
+
* nominal charge instead: the number is meaningless, the fact of spending is
|
|
36
|
+
* not. `costUsd` stays finite so the escalation record remains JSON-safe.
|
|
37
|
+
*/
|
|
38
|
+
export declare function recordInvocationCost(usd: number | undefined | null): void;
|
|
39
|
+
/** Mark the invocation currently on the async stack as having written an asset. */
|
|
40
|
+
export declare function recordInvocationAsset(): void;
|
|
41
|
+
/** The account for the invocation currently on the async stack, if any. */
|
|
42
|
+
export declare function currentInvocationAccount(): InvocationAccount | undefined;
|
|
43
|
+
//# sourceMappingURL=invocation-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-account.d.ts","sourceRoot":"","sources":["../src/invocation-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;CACxB;AAID,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,iBAAiB,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAKzE;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,2EAA2E;AAC3E,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,SAAS,CAExE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invocation-scoped cost and asset accounting.
|
|
3
|
+
*
|
|
4
|
+
* The supervisor may only offer `retry` for an invocation that spent nothing
|
|
5
|
+
* and wrote nothing (docs/workflow-supervisor-design.md §5.3). Answering that
|
|
6
|
+
* needs per-invocation numbers, and a stack on the shared `ProcessingContext`
|
|
7
|
+
* cannot supply them: every actor holds the same context and actors complete
|
|
8
|
+
* out of order, so push/pop would credit actor A's charge to actor B whenever
|
|
9
|
+
* A finishes first — precisely the corruption that would re-expose retry after
|
|
10
|
+
* a billed call.
|
|
11
|
+
*
|
|
12
|
+
* So the scope travels with the invocation's async execution instead. Cost and
|
|
13
|
+
* asset hooks write to whichever account is on the async stack; concurrent
|
|
14
|
+
* invocations each have their own, in any completion order.
|
|
15
|
+
*/
|
|
16
|
+
// Lazily resolved so this module still loads in browser/Edge bundles. There the
|
|
17
|
+
// fallback holder has no per-context isolation, and concurrent invocations
|
|
18
|
+
// would share one account — acceptable only because the supervisor that reads
|
|
19
|
+
// these numbers runs in the kernel, which is Node-only.
|
|
20
|
+
import { AsyncLocalStorage } from "./async-local-storage.js";
|
|
21
|
+
const store = new AsyncLocalStorage();
|
|
22
|
+
export function createInvocationAccount() {
|
|
23
|
+
return { costUsd: 0, createdAssets: false };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run `fn` inside `account`. The caller owns the account so it can read what
|
|
27
|
+
* the invocation spent even when `fn` throws — which is the case retry safety
|
|
28
|
+
* turns on.
|
|
29
|
+
*/
|
|
30
|
+
export function inInvocationAccount(account, fn) {
|
|
31
|
+
return store.run(account, fn);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Charge the invocation currently on the async stack, if any.
|
|
35
|
+
*
|
|
36
|
+
* A non-finite amount means a provider reported something we cannot add up —
|
|
37
|
+
* and "cannot add up" must not read as "free", or the invocation would look
|
|
38
|
+
* cost-free and re-earn a retry after a real charge. It is recorded as a
|
|
39
|
+
* nominal charge instead: the number is meaningless, the fact of spending is
|
|
40
|
+
* not. `costUsd` stays finite so the escalation record remains JSON-safe.
|
|
41
|
+
*/
|
|
42
|
+
export function recordInvocationCost(usd) {
|
|
43
|
+
if (usd === undefined || usd === null)
|
|
44
|
+
return;
|
|
45
|
+
const account = store.getStore();
|
|
46
|
+
if (!account)
|
|
47
|
+
return;
|
|
48
|
+
account.costUsd += Number.isFinite(usd) ? usd : Number.MIN_VALUE;
|
|
49
|
+
}
|
|
50
|
+
/** Mark the invocation currently on the async stack as having written an asset. */
|
|
51
|
+
export function recordInvocationAsset() {
|
|
52
|
+
const account = store.getStore();
|
|
53
|
+
if (account)
|
|
54
|
+
account.createdAssets = true;
|
|
55
|
+
}
|
|
56
|
+
/** The account for the invocation currently on the async stack, if any. */
|
|
57
|
+
export function currentInvocationAccount() {
|
|
58
|
+
return store.getStore();
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=invocation-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-account.js","sourceRoot":"","sources":["../src/invocation-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gFAAgF;AAChF,2EAA2E;AAC3E,8EAA8E;AAC9E,wDAAwD;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAS7D,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAqB,CAAC;AAEzD,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,EAAoB;IAEpB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAA8B;IACjE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,OAAO;QAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ProcessingContext } from "./context.js";
|
|
2
|
+
/** Encode bytes → base64 without requiring the `Buffer` global. */
|
|
3
|
+
export declare function encodeBase64(bytes: Uint8Array): string;
|
|
4
|
+
/** Minimal media ref shape for byte resolution (Python bridge + TS nodes). */
|
|
5
|
+
export type MediaRefValue = {
|
|
6
|
+
uri?: string;
|
|
7
|
+
type?: string;
|
|
8
|
+
asset_id?: string | null;
|
|
9
|
+
data?: unknown;
|
|
10
|
+
width?: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function isAbsoluteFilePath(uri: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve bytes for an image/audio/video/model ref.
|
|
16
|
+
* Shared by the Python bridge and TS nodes (e.g. Save Image).
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadMediaRefBytes(value: MediaRefValue, context?: ProcessingContext): Promise<Uint8Array | null>;
|
|
19
|
+
//# sourceMappingURL=media-ref-bytes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-ref-bytes.d.ts","sourceRoot":"","sources":["../src/media-ref-bytes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAoCtD,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUtD;AAUD,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AASF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIvD;AAgDD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAoF5B"}
|