@nodetool-ai/websocket 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 +50 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/agent/run-node-tool.d.ts +39 -0
- package/dist/agent/run-node-tool.d.ts.map +1 -0
- package/dist/agent/run-node-tool.js +55 -0
- package/dist/agent/run-node-tool.js.map +1 -0
- package/dist/chat-prediction-forwarder.d.ts +13 -0
- package/dist/chat-prediction-forwarder.d.ts.map +1 -0
- package/dist/chat-prediction-forwarder.js +22 -0
- package/dist/chat-prediction-forwarder.js.map +1 -0
- package/dist/chat-tool-call-repair.d.ts +45 -0
- package/dist/chat-tool-call-repair.d.ts.map +1 -0
- package/dist/chat-tool-call-repair.js +100 -0
- package/dist/chat-tool-call-repair.js.map +1 -0
- package/dist/chat-turn-registry.d.ts +169 -0
- package/dist/chat-turn-registry.d.ts.map +1 -0
- package/dist/chat-turn-registry.js +326 -0
- package/dist/chat-turn-registry.js.map +1 -0
- package/dist/collection-api.d.ts +2 -2
- package/dist/collection-api.d.ts.map +1 -1
- package/dist/collection-api.js +44 -13
- package/dist/collection-api.js.map +1 -1
- package/dist/configured-providers.d.ts +52 -0
- package/dist/configured-providers.d.ts.map +1 -0
- package/dist/configured-providers.js +85 -0
- package/dist/configured-providers.js.map +1 -0
- package/dist/cors.d.ts +22 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +91 -0
- package/dist/cors.js.map +1 -0
- package/dist/credit-gate.d.ts +36 -0
- package/dist/credit-gate.d.ts.map +1 -0
- package/dist/credit-gate.js +76 -0
- package/dist/credit-gate.js.map +1 -0
- package/dist/custom-providers.d.ts +40 -0
- package/dist/custom-providers.d.ts.map +1 -0
- package/dist/custom-providers.js +134 -0
- package/dist/custom-providers.js.map +1 -0
- package/dist/debug-sessions.d.ts +10 -0
- package/dist/debug-sessions.d.ts.map +1 -0
- package/dist/debug-sessions.js +9 -0
- package/dist/debug-sessions.js.map +1 -0
- package/dist/drain.d.ts +34 -0
- package/dist/drain.d.ts.map +1 -0
- package/dist/drain.js +68 -0
- package/dist/drain.js.map +1 -0
- package/dist/e2e-server.d.ts +30 -0
- package/dist/e2e-server.d.ts.map +1 -0
- package/dist/e2e-server.js +111 -0
- package/dist/e2e-server.js.map +1 -0
- package/dist/example-workflows.d.ts +20 -0
- package/dist/example-workflows.d.ts.map +1 -0
- package/dist/example-workflows.js +123 -0
- package/dist/example-workflows.js.map +1 -0
- package/dist/extension-cdp-bridge.d.ts +85 -0
- package/dist/extension-cdp-bridge.d.ts.map +1 -0
- package/dist/extension-cdp-bridge.js +163 -0
- package/dist/extension-cdp-bridge.js.map +1 -0
- package/dist/external-mcp.d.ts +58 -0
- package/dist/external-mcp.d.ts.map +1 -0
- package/dist/external-mcp.js +288 -0
- package/dist/external-mcp.js.map +1 -0
- package/dist/fake-runtime.d.ts +114 -0
- package/dist/fake-runtime.d.ts.map +1 -0
- package/dist/fake-runtime.js +270 -0
- package/dist/fake-runtime.js.map +1 -0
- package/dist/file-api.d.ts +4 -7
- package/dist/file-api.d.ts.map +1 -1
- package/dist/file-api.js +122 -39
- package/dist/file-api.js.map +1 -1
- package/dist/frontend-renderer-registry.d.ts +75 -0
- package/dist/frontend-renderer-registry.d.ts.map +1 -0
- package/dist/frontend-renderer-registry.js +111 -0
- package/dist/frontend-renderer-registry.js.map +1 -0
- package/dist/generation-recovery.d.ts +13 -0
- package/dist/generation-recovery.d.ts.map +1 -0
- package/dist/generation-recovery.js +197 -0
- package/dist/generation-recovery.js.map +1 -0
- package/dist/headless-job-runner.d.ts +71 -0
- package/dist/headless-job-runner.d.ts.map +1 -0
- package/dist/headless-job-runner.js +198 -0
- package/dist/headless-job-runner.js.map +1 -0
- package/dist/http-api.d.ts +157 -24
- package/dist/http-api.d.ts.map +1 -1
- package/dist/http-api.js +613 -646
- package/dist/http-api.js.map +1 -1
- package/dist/http-body-schemas.d.ts +109 -0
- package/dist/http-body-schemas.d.ts.map +1 -0
- package/dist/http-body-schemas.js +146 -0
- package/dist/http-body-schemas.js.map +1 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/job-control.d.ts +57 -0
- package/dist/job-control.d.ts.map +1 -0
- package/dist/job-control.js +134 -0
- package/dist/job-control.js.map +1 -0
- package/dist/job-queue.d.ts +47 -0
- package/dist/job-queue.d.ts.map +1 -0
- package/dist/job-queue.js +52 -0
- package/dist/job-queue.js.map +1 -0
- package/dist/job-run-registry.d.ts +176 -0
- package/dist/job-run-registry.d.ts.map +1 -0
- package/dist/job-run-registry.js +312 -0
- package/dist/job-run-registry.js.map +1 -0
- package/dist/lib/app-build-service.d.ts +16 -0
- package/dist/lib/app-build-service.d.ts.map +1 -0
- package/dist/lib/app-build-service.js +39 -0
- package/dist/lib/app-build-service.js.map +1 -0
- package/dist/lib/app-debug-service.d.ts +16 -0
- package/dist/lib/app-debug-service.d.ts.map +1 -0
- package/dist/lib/app-debug-service.js +48 -0
- package/dist/lib/app-debug-service.js.map +1 -0
- package/dist/lib/app-deployment-service.d.ts +82 -0
- package/dist/lib/app-deployment-service.d.ts.map +1 -0
- package/dist/lib/app-deployment-service.js +282 -0
- package/dist/lib/app-deployment-service.js.map +1 -0
- package/dist/lib/app-run-server.d.ts +7 -0
- package/dist/lib/app-run-server.d.ts.map +1 -0
- package/dist/lib/app-run-server.js +6 -0
- package/dist/lib/app-run-server.js.map +1 -0
- package/dist/lib/app-session-scope.d.ts +91 -0
- package/dist/lib/app-session-scope.d.ts.map +1 -0
- package/dist/lib/app-session-scope.js +91 -0
- package/dist/lib/app-session-scope.js.map +1 -0
- package/dist/lib/applications-service.d.ts +173 -0
- package/dist/lib/applications-service.d.ts.map +1 -0
- package/dist/lib/applications-service.js +491 -0
- package/dist/lib/applications-service.js.map +1 -0
- package/dist/lib/asset-duration.d.ts +7 -0
- package/dist/lib/asset-duration.d.ts.map +1 -0
- package/dist/lib/asset-duration.js +24 -0
- package/dist/lib/asset-duration.js.map +1 -0
- package/dist/lib/asset-export.d.ts +34 -0
- package/dist/lib/asset-export.d.ts.map +1 -0
- package/dist/lib/asset-export.js +113 -0
- package/dist/lib/asset-export.js.map +1 -0
- package/dist/lib/asset-model-interface.d.ts +41 -0
- package/dist/lib/asset-model-interface.d.ts.map +1 -0
- package/dist/lib/asset-model-interface.js +74 -0
- package/dist/lib/asset-model-interface.js.map +1 -0
- package/dist/lib/asset-paths.d.ts +52 -0
- package/dist/lib/asset-paths.d.ts.map +1 -1
- package/dist/lib/asset-paths.js +145 -1
- package/dist/lib/asset-paths.js.map +1 -1
- package/dist/lib/asset-response.d.ts +12 -0
- package/dist/lib/asset-response.d.ts.map +1 -0
- package/dist/lib/asset-response.js +88 -0
- package/dist/lib/asset-response.js.map +1 -0
- package/dist/lib/audio-peaks.d.ts +23 -0
- package/dist/lib/audio-peaks.d.ts.map +1 -0
- package/dist/lib/audio-peaks.js +331 -0
- package/dist/lib/audio-peaks.js.map +1 -0
- package/dist/lib/bridge.d.ts +9 -1
- package/dist/lib/bridge.d.ts.map +1 -1
- package/dist/lib/bridge.js +27 -4
- package/dist/lib/bridge.js.map +1 -1
- package/dist/lib/compression.d.ts +3 -0
- package/dist/lib/compression.d.ts.map +1 -0
- package/dist/lib/compression.js +3 -0
- package/dist/lib/compression.js.map +1 -0
- package/dist/lib/document-model-interfaces.d.ts +30 -0
- package/dist/lib/document-model-interfaces.d.ts.map +1 -0
- package/dist/lib/document-model-interfaces.js +295 -0
- package/dist/lib/document-model-interfaces.js.map +1 -0
- package/dist/lib/env-config.d.ts +9 -0
- package/dist/lib/env-config.d.ts.map +1 -0
- package/dist/lib/env-config.js +18 -0
- package/dist/lib/env-config.js.map +1 -0
- package/dist/lib/example-apps.d.ts +43 -0
- package/dist/lib/example-apps.d.ts.map +1 -0
- package/dist/lib/example-apps.js +145 -0
- package/dist/lib/example-apps.js.map +1 -0
- package/dist/lib/example-games.d.ts +5 -0
- package/dist/lib/example-games.d.ts.map +1 -0
- package/dist/lib/example-games.js +13 -0
- package/dist/lib/example-games.js.map +1 -0
- package/dist/lib/example-recipes.d.ts +33 -0
- package/dist/lib/example-recipes.d.ts.map +1 -0
- package/dist/lib/example-recipes.js +213 -0
- package/dist/lib/example-recipes.js.map +1 -0
- package/dist/lib/example-storyboards.d.ts +40 -0
- package/dist/lib/example-storyboards.d.ts.map +1 -0
- package/dist/lib/example-storyboards.js +131 -0
- package/dist/lib/example-storyboards.js.map +1 -0
- package/dist/lib/example-thumbnail.d.ts +21 -0
- package/dist/lib/example-thumbnail.d.ts.map +1 -0
- package/dist/lib/example-thumbnail.js +50 -0
- package/dist/lib/example-thumbnail.js.map +1 -0
- package/dist/lib/example-timelines.d.ts +9 -0
- package/dist/lib/example-timelines.d.ts.map +1 -0
- package/dist/lib/example-timelines.js +25 -0
- package/dist/lib/example-timelines.js.map +1 -0
- package/dist/lib/extension-dist.d.ts +24 -0
- package/dist/lib/extension-dist.d.ts.map +1 -0
- package/dist/lib/extension-dist.js +67 -0
- package/dist/lib/extension-dist.js.map +1 -0
- package/dist/lib/external-asset-lookup.d.ts +30 -0
- package/dist/lib/external-asset-lookup.d.ts.map +1 -0
- package/dist/lib/external-asset-lookup.js +99 -0
- package/dist/lib/external-asset-lookup.js.map +1 -0
- package/dist/lib/external-assets.d.ts +13 -0
- package/dist/lib/external-assets.d.ts.map +1 -0
- package/dist/lib/external-assets.js +46 -0
- package/dist/lib/external-assets.js.map +1 -0
- package/dist/lib/fly-replay.d.ts +34 -0
- package/dist/lib/fly-replay.d.ts.map +1 -0
- package/dist/lib/fly-replay.js +111 -0
- package/dist/lib/fly-replay.js.map +1 -0
- package/dist/lib/http-rate-limit.d.ts +32 -0
- package/dist/lib/http-rate-limit.d.ts.map +1 -0
- package/dist/lib/http-rate-limit.js +47 -0
- package/dist/lib/http-rate-limit.js.map +1 -0
- package/dist/lib/instance-id.d.ts +25 -0
- package/dist/lib/instance-id.d.ts.map +1 -0
- package/dist/lib/instance-id.js +44 -0
- package/dist/lib/instance-id.js.map +1 -0
- package/dist/lib/link-codes.d.ts +82 -0
- package/dist/lib/link-codes.d.ts.map +1 -0
- package/dist/lib/link-codes.js +100 -0
- package/dist/lib/link-codes.js.map +1 -0
- package/dist/lib/local-asset-upload.d.ts +5 -0
- package/dist/lib/local-asset-upload.d.ts.map +1 -0
- package/dist/lib/local-asset-upload.js +69 -0
- package/dist/lib/local-asset-upload.js.map +1 -0
- package/dist/lib/local-file-access.d.ts +31 -0
- package/dist/lib/local-file-access.d.ts.map +1 -0
- package/dist/lib/local-file-access.js +169 -0
- package/dist/lib/local-file-access.js.map +1 -0
- package/dist/lib/localhost-trust.d.ts +59 -0
- package/dist/lib/localhost-trust.d.ts.map +1 -0
- package/dist/lib/localhost-trust.js +139 -0
- package/dist/lib/localhost-trust.js.map +1 -0
- package/dist/lib/mcp-mount.d.ts +25 -0
- package/dist/lib/mcp-mount.d.ts.map +1 -0
- package/dist/lib/mcp-mount.js +32 -0
- package/dist/lib/mcp-mount.js.map +1 -0
- package/dist/lib/media-size.d.ts +21 -0
- package/dist/lib/media-size.d.ts.map +1 -0
- package/dist/lib/media-size.js +48 -0
- package/dist/lib/media-size.js.map +1 -0
- package/dist/lib/media.d.ts +38 -0
- package/dist/lib/media.d.ts.map +1 -0
- package/dist/lib/media.js +146 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/package-asset-export.d.ts +83 -0
- package/dist/lib/package-asset-export.d.ts.map +1 -0
- package/dist/lib/package-asset-export.js +212 -0
- package/dist/lib/package-asset-export.js.map +1 -0
- package/dist/lib/package-assets.d.ts +41 -0
- package/dist/lib/package-assets.d.ts.map +1 -0
- package/dist/lib/package-assets.js +155 -0
- package/dist/lib/package-assets.js.map +1 -0
- package/dist/lib/project-delete.d.ts +11 -0
- package/dist/lib/project-delete.d.ts.map +1 -0
- package/dist/lib/project-delete.js +67 -0
- package/dist/lib/project-delete.js.map +1 -0
- package/dist/lib/project-document-copy.d.ts +31 -0
- package/dist/lib/project-document-copy.d.ts.map +1 -0
- package/dist/lib/project-document-copy.js +473 -0
- package/dist/lib/project-document-copy.js.map +1 -0
- package/dist/lib/public-app-assets.d.ts +8 -0
- package/dist/lib/public-app-assets.d.ts.map +1 -0
- package/dist/lib/public-app-assets.js +77 -0
- package/dist/lib/public-app-assets.js.map +1 -0
- package/dist/lib/public-routes.d.ts +95 -0
- package/dist/lib/public-routes.d.ts.map +1 -0
- package/dist/lib/public-routes.js +154 -0
- package/dist/lib/public-routes.js.map +1 -0
- package/dist/lib/runtime-detection.d.ts +17 -0
- package/dist/lib/runtime-detection.d.ts.map +1 -0
- package/dist/lib/runtime-detection.js +90 -0
- package/dist/lib/runtime-detection.js.map +1 -0
- package/dist/lib/storage-access.d.ts +21 -0
- package/dist/lib/storage-access.d.ts.map +1 -0
- package/dist/lib/storage-access.js +74 -0
- package/dist/lib/storage-access.js.map +1 -0
- package/dist/lib/storage.d.ts +9 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +28 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/storyboard-export.d.ts +64 -0
- package/dist/lib/storyboard-export.d.ts.map +1 -0
- package/dist/lib/storyboard-export.js +183 -0
- package/dist/lib/storyboard-export.js.map +1 -0
- package/dist/lib/style-presets.d.ts +34 -0
- package/dist/lib/style-presets.d.ts.map +1 -0
- package/dist/lib/style-presets.js +62 -0
- package/dist/lib/style-presets.js.map +1 -0
- package/dist/lib/temp-url-resolver.d.ts +35 -0
- package/dist/lib/temp-url-resolver.d.ts.map +1 -0
- package/dist/lib/temp-url-resolver.js +88 -0
- package/dist/lib/temp-url-resolver.js.map +1 -0
- package/dist/lib/thumbnail.d.ts +74 -0
- package/dist/lib/thumbnail.d.ts.map +1 -0
- package/dist/lib/thumbnail.js +302 -0
- package/dist/lib/thumbnail.js.map +1 -0
- package/dist/lib/timeline-bundle.d.ts +1689 -0
- package/dist/lib/timeline-bundle.d.ts.map +1 -0
- package/dist/lib/timeline-bundle.js +330 -0
- package/dist/lib/timeline-bundle.js.map +1 -0
- package/dist/lib/video-proxy.d.ts +114 -0
- package/dist/lib/video-proxy.d.ts.map +1 -0
- package/dist/lib/video-proxy.js +545 -0
- package/dist/lib/video-proxy.js.map +1 -0
- package/dist/lib/wire-values.d.ts +31 -0
- package/dist/lib/wire-values.d.ts.map +1 -0
- package/dist/lib/wire-values.js +49 -0
- package/dist/lib/wire-values.js.map +1 -0
- package/dist/lib/workflow-bundle.d.ts +102 -0
- package/dist/lib/workflow-bundle.d.ts.map +1 -0
- package/dist/lib/workflow-bundle.js +306 -0
- package/dist/lib/workflow-bundle.js.map +1 -0
- package/dist/lib/workflow-service.d.ts +82 -0
- package/dist/lib/workflow-service.d.ts.map +1 -0
- package/dist/lib/workflow-service.js +194 -0
- package/dist/lib/workflow-service.js.map +1 -0
- package/dist/lib/workflow-workspace.d.ts +20 -0
- package/dist/lib/workflow-workspace.d.ts.map +1 -0
- package/dist/lib/workflow-workspace.js +65 -0
- package/dist/lib/workflow-workspace.js.map +1 -0
- package/dist/lib/ws-connection-health.d.ts +10 -0
- package/dist/lib/ws-connection-health.d.ts.map +1 -0
- package/dist/lib/ws-connection-health.js +38 -0
- package/dist/lib/ws-connection-health.js.map +1 -0
- package/dist/lib/ws-rate-limit.d.ts +22 -0
- package/dist/lib/ws-rate-limit.d.ts.map +1 -0
- package/dist/lib/ws-rate-limit.js +45 -0
- package/dist/lib/ws-rate-limit.js.map +1 -0
- package/dist/lib/ws-upgrade.d.ts +40 -0
- package/dist/lib/ws-upgrade.d.ts.map +1 -0
- package/dist/lib/ws-upgrade.js +66 -0
- package/dist/lib/ws-upgrade.js.map +1 -0
- package/dist/lib/zip-stream.d.ts +46 -0
- package/dist/lib/zip-stream.d.ts.map +1 -0
- package/dist/lib/zip-stream.js +140 -0
- package/dist/lib/zip-stream.js.map +1 -0
- package/dist/mcp-agent-tools.d.ts +56 -0
- package/dist/mcp-agent-tools.d.ts.map +1 -0
- package/dist/mcp-agent-tools.js +1216 -0
- package/dist/mcp-agent-tools.js.map +1 -0
- package/dist/mcp-server.d.ts +56 -7
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +255 -762
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tool-deps.d.ts +20 -0
- package/dist/mcp-tool-deps.d.ts.map +1 -0
- package/dist/mcp-tool-deps.js +61 -0
- package/dist/mcp-tool-deps.js.map +1 -0
- package/dist/messagepack.d.ts +7 -0
- package/dist/messagepack.d.ts.map +1 -0
- package/dist/messagepack.js +19 -0
- package/dist/messagepack.js.map +1 -0
- package/dist/model-download-runtime.d.ts +9 -0
- package/dist/model-download-runtime.d.ts.map +1 -0
- package/dist/model-download-runtime.js +77 -0
- package/dist/model-download-runtime.js.map +1 -0
- package/dist/model-execution-availability.d.ts +14 -0
- package/dist/model-execution-availability.d.ts.map +1 -0
- package/dist/model-execution-availability.js +161 -0
- package/dist/model-execution-availability.js.map +1 -0
- package/dist/models-api.d.ts +51 -5
- package/dist/models-api.d.ts.map +1 -1
- package/dist/models-api.js +160 -690
- package/dist/models-api.js.map +1 -1
- package/dist/node-registry-setup.d.ts +84 -0
- package/dist/node-registry-setup.d.ts.map +1 -0
- package/dist/node-registry-setup.js +256 -0
- package/dist/node-registry-setup.js.map +1 -0
- package/dist/oauth/cimd.d.ts +28 -0
- package/dist/oauth/cimd.d.ts.map +1 -0
- package/dist/oauth/cimd.js +177 -0
- package/dist/oauth/cimd.js.map +1 -0
- package/dist/oauth/gate.d.ts +38 -0
- package/dist/oauth/gate.d.ts.map +1 -0
- package/dist/oauth/gate.js +77 -0
- package/dist/oauth/gate.js.map +1 -0
- package/dist/oauth/metadata.d.ts +35 -0
- package/dist/oauth/metadata.d.ts.map +1 -0
- package/dist/oauth/metadata.js +56 -0
- package/dist/oauth/metadata.js.map +1 -0
- package/dist/oauth/pending-store.d.ts +79 -0
- package/dist/oauth/pending-store.d.ts.map +1 -0
- package/dist/oauth/pending-store.js +133 -0
- package/dist/oauth/pending-store.js.map +1 -0
- package/dist/oauth/pkce.d.ts +16 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +29 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/validate.d.ts +25 -0
- package/dist/oauth/validate.d.ts.map +1 -0
- package/dist/oauth/validate.js +62 -0
- package/dist/oauth/validate.js.map +1 -0
- package/dist/oauth/www-authenticate.d.ts +9 -0
- package/dist/oauth/www-authenticate.d.ts.map +1 -0
- package/dist/oauth/www-authenticate.js +33 -0
- package/dist/oauth/www-authenticate.js.map +1 -0
- package/dist/oauth-api.d.ts +19 -0
- package/dist/oauth-api.d.ts.map +1 -1
- package/dist/oauth-api.js +531 -12
- package/dist/oauth-api.js.map +1 -1
- package/dist/openai-api.d.ts.map +1 -1
- package/dist/openai-api.js +4 -9
- package/dist/openai-api.js.map +1 -1
- package/dist/pack-snapshot.d.ts +24 -0
- package/dist/pack-snapshot.d.ts.map +1 -0
- package/dist/pack-snapshot.js +35 -0
- package/dist/pack-snapshot.js.map +1 -0
- package/dist/plugins/websocket.d.ts +21 -4
- package/dist/plugins/websocket.d.ts.map +1 -1
- package/dist/plugins/websocket.js +136 -290
- package/dist/plugins/websocket.js.map +1 -1
- package/dist/resolve-media-urls.d.ts +17 -3
- package/dist/resolve-media-urls.d.ts.map +1 -1
- package/dist/resolve-media-urls.js +117 -31
- package/dist/resolve-media-urls.js.map +1 -1
- package/dist/resource-events.d.ts +28 -0
- package/dist/resource-events.d.ts.map +1 -0
- package/dist/resource-events.js +20 -0
- package/dist/resource-events.js.map +1 -0
- package/dist/routes/account.d.ts +100 -0
- package/dist/routes/account.d.ts.map +1 -0
- package/dist/routes/account.js +197 -0
- package/dist/routes/account.js.map +1 -0
- package/dist/routes/applications.d.ts +36 -0
- package/dist/routes/applications.d.ts.map +1 -0
- package/dist/routes/applications.js +183 -0
- package/dist/routes/applications.js.map +1 -0
- package/dist/routes/assets.d.ts +3 -3
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +78 -44
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/atlascloud-webhook.d.ts +93 -0
- package/dist/routes/atlascloud-webhook.d.ts.map +1 -0
- package/dist/routes/atlascloud-webhook.js +369 -0
- package/dist/routes/atlascloud-webhook.js.map +1 -0
- package/dist/routes/collections.d.ts.map +1 -1
- package/dist/routes/config.d.ts +26 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +64 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/documents.d.ts +27 -0
- package/dist/routes/documents.d.ts.map +1 -0
- package/dist/routes/documents.js +155 -0
- package/dist/routes/documents.js.map +1 -0
- package/dist/routes/fal-credits.d.ts +4 -0
- package/dist/routes/fal-credits.d.ts.map +1 -0
- package/dist/routes/fal-credits.js +101 -0
- package/dist/routes/fal-credits.js.map +1 -0
- package/dist/routes/fal-pricing-estimate.d.ts +4 -0
- package/dist/routes/fal-pricing-estimate.d.ts.map +1 -0
- package/dist/routes/fal-pricing-estimate.js +114 -0
- package/dist/routes/fal-pricing-estimate.js.map +1 -0
- package/dist/routes/fal-pricing.d.ts +4 -0
- package/dist/routes/fal-pricing.d.ts.map +1 -0
- package/dist/routes/fal-pricing.js +93 -0
- package/dist/routes/fal-pricing.js.map +1 -0
- package/dist/routes/fal-webhook.d.ts +102 -0
- package/dist/routes/fal-webhook.d.ts.map +1 -0
- package/dist/routes/fal-webhook.js +379 -0
- package/dist/routes/fal-webhook.js.map +1 -0
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +4 -3
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/health.d.ts +1 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +41 -7
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/integrations.d.ts +39 -0
- package/dist/routes/integrations.d.ts.map +1 -0
- package/dist/routes/integrations.js +211 -0
- package/dist/routes/integrations.js.map +1 -0
- package/dist/routes/js-scripts.d.ts +26 -0
- package/dist/routes/js-scripts.d.ts.map +1 -0
- package/dist/routes/js-scripts.js +116 -0
- package/dist/routes/js-scripts.js.map +1 -0
- package/dist/routes/kie-credits.d.ts +4 -0
- package/dist/routes/kie-credits.d.ts.map +1 -0
- package/dist/routes/kie-credits.js +93 -0
- package/dist/routes/kie-credits.js.map +1 -0
- package/dist/routes/kie-pricing.d.ts +4 -0
- package/dist/routes/kie-pricing.d.ts.map +1 -0
- package/dist/routes/kie-pricing.js +45 -0
- package/dist/routes/kie-pricing.js.map +1 -0
- package/dist/routes/kie-webhook.d.ts +4 -0
- package/dist/routes/kie-webhook.d.ts.map +1 -0
- package/dist/routes/kie-webhook.js +70 -0
- package/dist/routes/kie-webhook.js.map +1 -0
- package/dist/routes/nodes.d.ts.map +1 -1
- package/dist/routes/nodes.js +6 -59
- package/dist/routes/nodes.js.map +1 -1
- package/dist/routes/oauth-as.d.ts +30 -0
- package/dist/routes/oauth-as.d.ts.map +1 -0
- package/dist/routes/oauth-as.js +412 -0
- package/dist/routes/oauth-as.js.map +1 -0
- package/dist/routes/oauth.d.ts.map +1 -1
- package/dist/routes/openai.d.ts.map +1 -1
- package/dist/routes/public-apps.d.ts +27 -0
- package/dist/routes/public-apps.d.ts.map +1 -0
- package/dist/routes/public-apps.js +99 -0
- package/dist/routes/public-apps.js.map +1 -0
- package/dist/routes/sandbox-modules.d.ts +17 -0
- package/dist/routes/sandbox-modules.d.ts.map +1 -0
- package/dist/routes/sandbox-modules.js +85 -0
- package/dist/routes/sandbox-modules.js.map +1 -0
- package/dist/routes/sdk-v1.d.ts +24 -0
- package/dist/routes/sdk-v1.d.ts.map +1 -0
- package/dist/routes/sdk-v1.js +320 -0
- package/dist/routes/sdk-v1.js.map +1 -0
- package/dist/routes/storage.d.ts.map +1 -1
- package/dist/routes/storyboards.d.ts +16 -0
- package/dist/routes/storyboards.d.ts.map +1 -0
- package/dist/routes/storyboards.js +97 -0
- package/dist/routes/storyboards.js.map +1 -0
- package/dist/routes/timeline-animations.d.ts +23 -0
- package/dist/routes/timeline-animations.d.ts.map +1 -0
- package/dist/routes/timeline-animations.js +99 -0
- package/dist/routes/timeline-animations.js.map +1 -0
- package/dist/routes/timeline-audio-bake.d.ts +51 -0
- package/dist/routes/timeline-audio-bake.d.ts.map +1 -0
- package/dist/routes/timeline-audio-bake.js +110 -0
- package/dist/routes/timeline-audio-bake.js.map +1 -0
- package/dist/routes/timeline-fonts.d.ts +29 -0
- package/dist/routes/timeline-fonts.d.ts.map +1 -0
- package/dist/routes/timeline-fonts.js +64 -0
- package/dist/routes/timeline-fonts.js.map +1 -0
- package/dist/routes/timeline-isolate-subject.d.ts +55 -0
- package/dist/routes/timeline-isolate-subject.d.ts.map +1 -0
- package/dist/routes/timeline-isolate-subject.js +128 -0
- package/dist/routes/timeline-isolate-subject.js.map +1 -0
- package/dist/routes/timeline-track-object.d.ts +39 -0
- package/dist/routes/timeline-track-object.d.ts.map +1 -0
- package/dist/routes/timeline-track-object.js +97 -0
- package/dist/routes/timeline-track-object.js.map +1 -0
- package/dist/routes/timelines.d.ts +18 -0
- package/dist/routes/timelines.d.ts.map +1 -0
- package/dist/routes/timelines.js +191 -0
- package/dist/routes/timelines.js.map +1 -0
- package/dist/routes/workflows.d.ts +6 -9
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +100 -11
- package/dist/routes/workflows.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/run-supervisor.d.ts +30 -0
- package/dist/run-supervisor.d.ts.map +1 -0
- package/dist/run-supervisor.js +86 -0
- package/dist/run-supervisor.js.map +1 -0
- package/dist/sandbox-catalog.d.ts +28 -0
- package/dist/sandbox-catalog.d.ts.map +1 -0
- package/dist/sandbox-catalog.js +74 -0
- package/dist/sandbox-catalog.js.map +1 -0
- package/dist/screenshot-projects.d.ts +27 -0
- package/dist/screenshot-projects.d.ts.map +1 -0
- package/dist/screenshot-projects.js +880 -0
- package/dist/screenshot-projects.js.map +1 -0
- package/dist/screenshot-server.js +947 -43
- package/dist/screenshot-server.js.map +1 -1
- package/dist/sdk/sdk-cached-model-inventory.d.ts +21 -0
- package/dist/sdk/sdk-cached-model-inventory.d.ts.map +1 -0
- package/dist/sdk/sdk-cached-model-inventory.js +51 -0
- package/dist/sdk/sdk-cached-model-inventory.js.map +1 -0
- package/dist/sdk/sdk-capabilities-service.d.ts +32 -0
- package/dist/sdk/sdk-capabilities-service.d.ts.map +1 -0
- package/dist/sdk/sdk-capabilities-service.js +47 -0
- package/dist/sdk/sdk-capabilities-service.js.map +1 -0
- package/dist/sdk/sdk-execution-readiness-probe.d.ts +19 -0
- package/dist/sdk/sdk-execution-readiness-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-execution-readiness-probe.js +90 -0
- package/dist/sdk/sdk-execution-readiness-probe.js.map +1 -0
- package/dist/sdk/sdk-execution-target-readiness.d.ts +15 -0
- package/dist/sdk/sdk-execution-target-readiness.d.ts.map +1 -0
- package/dist/sdk/sdk-execution-target-readiness.js +50 -0
- package/dist/sdk/sdk-execution-target-readiness.js.map +1 -0
- package/dist/sdk/sdk-feature-flags.d.ts +18 -0
- package/dist/sdk/sdk-feature-flags.d.ts.map +1 -0
- package/dist/sdk/sdk-feature-flags.js +30 -0
- package/dist/sdk/sdk-feature-flags.js.map +1 -0
- package/dist/sdk/sdk-huggingface-download-state.d.ts +15 -0
- package/dist/sdk/sdk-huggingface-download-state.d.ts.map +1 -0
- package/dist/sdk/sdk-huggingface-download-state.js +25 -0
- package/dist/sdk/sdk-huggingface-download-state.js.map +1 -0
- package/dist/sdk/sdk-live-runner-registry.d.ts +21 -0
- package/dist/sdk/sdk-live-runner-registry.d.ts.map +1 -0
- package/dist/sdk/sdk-live-runner-registry.js +26 -0
- package/dist/sdk/sdk-live-runner-registry.js.map +1 -0
- package/dist/sdk/sdk-model-catalog-service.d.ts +20 -0
- package/dist/sdk/sdk-model-catalog-service.d.ts.map +1 -0
- package/dist/sdk/sdk-model-catalog-service.js +219 -0
- package/dist/sdk/sdk-model-catalog-service.js.map +1 -0
- package/dist/sdk/sdk-model-download-service.d.ts +39 -0
- package/dist/sdk/sdk-model-download-service.d.ts.map +1 -0
- package/dist/sdk/sdk-model-download-service.js +274 -0
- package/dist/sdk/sdk-model-download-service.js.map +1 -0
- package/dist/sdk/sdk-model-requirement-probe.d.ts +30 -0
- package/dist/sdk/sdk-model-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-model-requirement-probe.js +120 -0
- package/dist/sdk/sdk-model-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-node-package-requirement-probe.d.ts +20 -0
- package/dist/sdk/sdk-node-package-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-node-package-requirement-probe.js +44 -0
- package/dist/sdk/sdk-node-package-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-node-type-inventory-service.d.ts +11 -0
- package/dist/sdk/sdk-node-type-inventory-service.d.ts.map +1 -0
- package/dist/sdk/sdk-node-type-inventory-service.js +36 -0
- package/dist/sdk/sdk-node-type-inventory-service.js.map +1 -0
- package/dist/sdk/sdk-preflight-orchestrator.d.ts +54 -0
- package/dist/sdk/sdk-preflight-orchestrator.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-orchestrator.js +63 -0
- package/dist/sdk/sdk-preflight-orchestrator.js.map +1 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.d.ts +35 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.js +67 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.js.map +1 -0
- package/dist/sdk/sdk-preflight-service.d.ts +61 -0
- package/dist/sdk/sdk-preflight-service.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-service.js +104 -0
- package/dist/sdk/sdk-preflight-service.js.map +1 -0
- package/dist/sdk/sdk-preflight-workflow-source.d.ts +18 -0
- package/dist/sdk/sdk-preflight-workflow-source.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-workflow-source.js +42 -0
- package/dist/sdk/sdk-preflight-workflow-source.js.map +1 -0
- package/dist/sdk/sdk-route-policy.d.ts +3 -0
- package/dist/sdk/sdk-route-policy.d.ts.map +1 -0
- package/dist/sdk/sdk-route-policy.js +18 -0
- package/dist/sdk/sdk-route-policy.js.map +1 -0
- package/dist/sdk/sdk-runtime-capabilities-service.d.ts +60 -0
- package/dist/sdk/sdk-runtime-capabilities-service.d.ts.map +1 -0
- package/dist/sdk/sdk-runtime-capabilities-service.js +30 -0
- package/dist/sdk/sdk-runtime-capabilities-service.js.map +1 -0
- package/dist/sdk/sdk-runtime-requirement-probe.d.ts +13 -0
- package/dist/sdk/sdk-runtime-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-runtime-requirement-probe.js +55 -0
- package/dist/sdk/sdk-runtime-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-static-preflight-service.d.ts +66 -0
- package/dist/sdk/sdk-static-preflight-service.d.ts.map +1 -0
- package/dist/sdk/sdk-static-preflight-service.js +492 -0
- package/dist/sdk/sdk-static-preflight-service.js.map +1 -0
- package/dist/sdk/sdk-temporary-asset-service.d.ts +18 -0
- package/dist/sdk/sdk-temporary-asset-service.d.ts.map +1 -0
- package/dist/sdk/sdk-temporary-asset-service.js +33 -0
- package/dist/sdk/sdk-temporary-asset-service.js.map +1 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.d.ts +9 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.d.ts.map +1 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.js +65 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.js.map +1 -0
- package/dist/sdk/sdk-v1-handler-map.d.ts +44 -0
- package/dist/sdk/sdk-v1-handler-map.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-handler-map.js +37 -0
- package/dist/sdk/sdk-v1-handler-map.js.map +1 -0
- package/dist/sdk/sdk-v1-service-error.d.ts +21 -0
- package/dist/sdk/sdk-v1-service-error.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-service-error.js +62 -0
- package/dist/sdk/sdk-v1-service-error.js.map +1 -0
- package/dist/sdk/sdk-v1-service.d.ts +74 -0
- package/dist/sdk/sdk-v1-service.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-service.js +219 -0
- package/dist/sdk/sdk-v1-service.js.map +1 -0
- package/dist/sdk/sdk-worker-readiness-adapter.d.ts +22 -0
- package/dist/sdk/sdk-worker-readiness-adapter.d.ts.map +1 -0
- package/dist/sdk/sdk-worker-readiness-adapter.js +29 -0
- package/dist/sdk/sdk-worker-readiness-adapter.js.map +1 -0
- package/dist/server.js +1019 -201
- package/dist/server.js.map +1 -1
- package/dist/session/asset-autosave.d.ts +80 -0
- package/dist/session/asset-autosave.d.ts.map +1 -0
- package/dist/session/asset-autosave.js +456 -0
- package/dist/session/asset-autosave.js.map +1 -0
- package/dist/session/chat-compaction.d.ts +107 -0
- package/dist/session/chat-compaction.d.ts.map +1 -0
- package/dist/session/chat-compaction.js +191 -0
- package/dist/session/chat-compaction.js.map +1 -0
- package/dist/session/chat-history.d.ts +75 -0
- package/dist/session/chat-history.d.ts.map +1 -0
- package/dist/session/chat-history.js +194 -0
- package/dist/session/chat-history.js.map +1 -0
- package/dist/session/chat-prompt.d.ts +45 -0
- package/dist/session/chat-prompt.d.ts.map +1 -0
- package/dist/session/chat-prompt.js +480 -0
- package/dist/session/chat-prompt.js.map +1 -0
- package/dist/session/chat-turn.d.ts +336 -0
- package/dist/session/chat-turn.d.ts.map +1 -0
- package/dist/session/chat-turn.js +3516 -0
- package/dist/session/chat-turn.js.map +1 -0
- package/dist/session/client-session.d.ts +59 -0
- package/dist/session/client-session.d.ts.map +1 -0
- package/dist/session/client-session.js +2 -0
- package/dist/session/client-session.js.map +1 -0
- package/dist/session/commands.d.ts +133 -0
- package/dist/session/commands.d.ts.map +1 -0
- package/dist/session/commands.js +778 -0
- package/dist/session/commands.js.map +1 -0
- package/dist/session/inference.d.ts +213 -0
- package/dist/session/inference.d.ts.map +1 -0
- package/dist/session/inference.js +1072 -0
- package/dist/session/inference.js.map +1 -0
- package/dist/session/job-execution.d.ts +477 -0
- package/dist/session/job-execution.d.ts.map +1 -0
- package/dist/session/job-execution.js +2089 -0
- package/dist/session/job-execution.js.map +1 -0
- package/dist/session/media-generation.d.ts +94 -0
- package/dist/session/media-generation.d.ts.map +1 -0
- package/dist/session/media-generation.js +234 -0
- package/dist/session/media-generation.js.map +1 -0
- package/dist/session/model-interfaces.d.ts +27 -0
- package/dist/session/model-interfaces.d.ts.map +1 -0
- package/dist/session/model-interfaces.js +132 -0
- package/dist/session/model-interfaces.js.map +1 -0
- package/dist/session/sanitize.d.ts +7 -0
- package/dist/session/sanitize.d.ts.map +1 -0
- package/dist/session/sanitize.js +64 -0
- package/dist/session/sanitize.js.map +1 -0
- package/dist/settings-registry.d.ts +6 -15
- package/dist/settings-registry.d.ts.map +1 -1
- package/dist/settings-registry.js +6 -103
- package/dist/settings-registry.js.map +1 -1
- package/dist/storage-api.d.ts +20 -0
- package/dist/storage-api.d.ts.map +1 -1
- package/dist/storage-api.js +260 -77
- package/dist/storage-api.js.map +1 -1
- package/dist/storage-retention.d.ts +9 -0
- package/dist/storage-retention.d.ts.map +1 -0
- package/dist/storage-retention.js +74 -0
- package/dist/storage-retention.js.map +1 -0
- package/dist/system-stats.d.ts +52 -0
- package/dist/system-stats.d.ts.map +1 -0
- package/dist/system-stats.js +134 -0
- package/dist/system-stats.js.map +1 -0
- package/dist/test-ui-server.d.ts +46 -0
- package/dist/test-ui-server.d.ts.map +1 -1
- package/dist/test-ui-server.js +188 -41
- package/dist/test-ui-server.js.map +1 -1
- package/dist/triggers/boot.d.ts +73 -0
- package/dist/triggers/boot.d.ts.map +1 -0
- package/dist/triggers/boot.js +149 -0
- package/dist/triggers/boot.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +234 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -0
- package/dist/triggers/dispatcher.js +525 -0
- package/dist/triggers/dispatcher.js.map +1 -0
- package/dist/triggers/file-watch.d.ts +90 -0
- package/dist/triggers/file-watch.d.ts.map +1 -0
- package/dist/triggers/file-watch.js +405 -0
- package/dist/triggers/file-watch.js.map +1 -0
- package/dist/triggers/registration-sync.d.ts +34 -0
- package/dist/triggers/registration-sync.d.ts.map +1 -0
- package/dist/triggers/registration-sync.js +162 -0
- package/dist/triggers/registration-sync.js.map +1 -0
- package/dist/triggers/schedule-timing.d.ts +52 -0
- package/dist/triggers/schedule-timing.d.ts.map +1 -0
- package/dist/triggers/schedule-timing.js +90 -0
- package/dist/triggers/schedule-timing.js.map +1 -0
- package/dist/triggers/scheduler.d.ts +55 -0
- package/dist/triggers/scheduler.d.ts.map +1 -0
- package/dist/triggers/scheduler.js +122 -0
- package/dist/triggers/scheduler.js.map +1 -0
- package/dist/triggers/settle.d.ts +66 -0
- package/dist/triggers/settle.d.ts.map +1 -0
- package/dist/triggers/settle.js +99 -0
- package/dist/triggers/settle.js.map +1 -0
- package/dist/triggers/stores.d.ts +38 -0
- package/dist/triggers/stores.d.ts.map +1 -0
- package/dist/triggers/stores.js +168 -0
- package/dist/triggers/stores.js.map +1 -0
- package/dist/triggers/webhook-route.d.ts +49 -0
- package/dist/triggers/webhook-route.d.ts.map +1 -0
- package/dist/triggers/webhook-route.js +148 -0
- package/dist/triggers/webhook-route.js.map +1 -0
- package/dist/trpc/context.d.ts +52 -5
- package/dist/trpc/context.d.ts.map +1 -1
- package/dist/trpc/context.js +4 -1
- package/dist/trpc/context.js.map +1 -1
- package/dist/trpc/error-formatter.d.ts.map +1 -1
- package/dist/trpc/error-formatter.js +23 -2
- package/dist/trpc/error-formatter.js.map +1 -1
- package/dist/trpc/error-logging.d.ts +14 -0
- package/dist/trpc/error-logging.d.ts.map +1 -0
- package/dist/trpc/error-logging.js +27 -0
- package/dist/trpc/error-logging.js.map +1 -0
- package/dist/trpc/index.d.ts +2 -2
- package/dist/trpc/index.d.ts.map +1 -1
- package/dist/trpc/index.js +0 -2
- package/dist/trpc/index.js.map +1 -1
- package/dist/trpc/middleware.d.ts +6 -3
- package/dist/trpc/middleware.d.ts.map +1 -1
- package/dist/trpc/router.d.ts +29791 -1303
- package/dist/trpc/router.d.ts.map +1 -1
- package/dist/trpc/router.js +46 -3
- package/dist/trpc/router.js.map +1 -1
- package/dist/trpc/routers/agent-access.d.ts +149 -0
- package/dist/trpc/routers/agent-access.d.ts.map +1 -0
- package/dist/trpc/routers/agent-access.js +224 -0
- package/dist/trpc/routers/agent-access.js.map +1 -0
- package/dist/trpc/routers/applications.d.ts +1117 -0
- package/dist/trpc/routers/applications.d.ts.map +1 -0
- package/dist/trpc/routers/applications.js +218 -0
- package/dist/trpc/routers/applications.js.map +1 -0
- package/dist/trpc/routers/assets.d.ts +184 -42
- package/dist/trpc/routers/assets.d.ts.map +1 -1
- package/dist/trpc/routers/assets.js +499 -105
- package/dist/trpc/routers/assets.js.map +1 -1
- package/dist/trpc/routers/code-gen.d.ts +99 -0
- package/dist/trpc/routers/code-gen.d.ts.map +1 -0
- package/dist/trpc/routers/code-gen.js +164 -0
- package/dist/trpc/routers/code-gen.js.map +1 -0
- package/dist/trpc/routers/collections.d.ts +1 -26
- package/dist/trpc/routers/collections.d.ts.map +1 -1
- package/dist/trpc/routers/collections.js +145 -78
- package/dist/trpc/routers/collections.js.map +1 -1
- package/dist/trpc/routers/costs.d.ts +40 -96
- package/dist/trpc/routers/costs.d.ts.map +1 -1
- package/dist/trpc/routers/costs.js +14 -89
- package/dist/trpc/routers/costs.js.map +1 -1
- package/dist/trpc/routers/credits.d.ts +110 -0
- package/dist/trpc/routers/credits.d.ts.map +1 -0
- package/dist/trpc/routers/credits.js +69 -0
- package/dist/trpc/routers/credits.js.map +1 -0
- package/dist/trpc/routers/custom-providers.d.ts +88 -0
- package/dist/trpc/routers/custom-providers.d.ts.map +1 -0
- package/dist/trpc/routers/custom-providers.js +140 -0
- package/dist/trpc/routers/custom-providers.js.map +1 -0
- package/dist/trpc/routers/documents.d.ts +61 -0
- package/dist/trpc/routers/documents.d.ts.map +1 -0
- package/dist/trpc/routers/documents.js +23 -0
- package/dist/trpc/routers/documents.js.map +1 -0
- package/dist/trpc/routers/extension.d.ts +24 -0
- package/dist/trpc/routers/extension.d.ts.map +1 -0
- package/dist/trpc/routers/extension.js +28 -0
- package/dist/trpc/routers/extension.js.map +1 -0
- package/dist/trpc/routers/external-mcp.d.ts +108 -0
- package/dist/trpc/routers/external-mcp.d.ts.map +1 -0
- package/dist/trpc/routers/external-mcp.js +70 -0
- package/dist/trpc/routers/external-mcp.js.map +1 -0
- package/dist/trpc/routers/files.d.ts +9 -2
- package/dist/trpc/routers/files.d.ts.map +1 -1
- package/dist/trpc/routers/files.js +67 -37
- package/dist/trpc/routers/files.js.map +1 -1
- package/dist/trpc/routers/fonts.d.ts +30 -0
- package/dist/trpc/routers/fonts.d.ts.map +1 -0
- package/dist/trpc/routers/fonts.js +112 -0
- package/dist/trpc/routers/fonts.js.map +1 -0
- package/dist/trpc/routers/games.d.ts +7610 -0
- package/dist/trpc/routers/games.d.ts.map +1 -0
- package/dist/trpc/routers/games.js +456 -0
- package/dist/trpc/routers/games.js.map +1 -0
- package/dist/trpc/routers/integrations.d.ts +86 -0
- package/dist/trpc/routers/integrations.d.ts.map +1 -0
- package/dist/trpc/routers/integrations.js +129 -0
- package/dist/trpc/routers/integrations.js.map +1 -0
- package/dist/trpc/routers/jobs.d.ts +88 -27
- package/dist/trpc/routers/jobs.d.ts.map +1 -1
- package/dist/trpc/routers/jobs.js +113 -35
- package/dist/trpc/routers/jobs.js.map +1 -1
- package/dist/trpc/routers/js-scripts.d.ts +410 -0
- package/dist/trpc/routers/js-scripts.d.ts.map +1 -0
- package/dist/trpc/routers/js-scripts.js +303 -0
- package/dist/trpc/routers/js-scripts.js.map +1 -0
- package/dist/trpc/routers/mcp-config.d.ts +1 -1
- package/dist/trpc/routers/mcp-config.js +5 -3
- package/dist/trpc/routers/mcp-config.js.map +1 -1
- package/dist/trpc/routers/memories.d.ts +79 -0
- package/dist/trpc/routers/memories.d.ts.map +1 -0
- package/dist/trpc/routers/memories.js +66 -0
- package/dist/trpc/routers/memories.js.map +1 -0
- package/dist/trpc/routers/messages.d.ts +4 -77
- package/dist/trpc/routers/messages.d.ts.map +1 -1
- package/dist/trpc/routers/messages.js +9 -58
- package/dist/trpc/routers/messages.js.map +1 -1
- package/dist/trpc/routers/models.d.ts +1403 -238
- package/dist/trpc/routers/models.d.ts.map +1 -1
- package/dist/trpc/routers/models.js +532 -294
- package/dist/trpc/routers/models.js.map +1 -1
- package/dist/trpc/routers/nodes.d.ts +32 -16
- package/dist/trpc/routers/nodes.d.ts.map +1 -1
- package/dist/trpc/routers/nodes.js +70 -31
- package/dist/trpc/routers/nodes.js.map +1 -1
- package/dist/trpc/routers/packs.d.ts +184 -0
- package/dist/trpc/routers/packs.d.ts.map +1 -0
- package/dist/trpc/routers/packs.js +259 -0
- package/dist/trpc/routers/packs.js.map +1 -0
- package/dist/trpc/routers/projects.d.ts +422 -0
- package/dist/trpc/routers/projects.d.ts.map +1 -0
- package/dist/trpc/routers/projects.js +373 -0
- package/dist/trpc/routers/projects.js.map +1 -0
- package/dist/trpc/routers/resources.d.ts +120 -0
- package/dist/trpc/routers/resources.d.ts.map +1 -0
- package/dist/trpc/routers/resources.js +212 -0
- package/dist/trpc/routers/resources.js.map +1 -0
- package/dist/trpc/routers/scripts.d.ts +1116 -0
- package/dist/trpc/routers/scripts.d.ts.map +1 -0
- package/dist/trpc/routers/scripts.js +131 -0
- package/dist/trpc/routers/scripts.js.map +1 -0
- package/dist/trpc/routers/segmentation.d.ts +62 -0
- package/dist/trpc/routers/segmentation.d.ts.map +1 -0
- package/dist/trpc/routers/segmentation.js +146 -0
- package/dist/trpc/routers/segmentation.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +177 -10
- package/dist/trpc/routers/settings.d.ts.map +1 -1
- package/dist/trpc/routers/settings.js +123 -33
- package/dist/trpc/routers/settings.js.map +1 -1
- package/dist/trpc/routers/sketch.d.ts +854 -0
- package/dist/trpc/routers/sketch.d.ts.map +1 -0
- package/dist/trpc/routers/sketch.js +617 -0
- package/dist/trpc/routers/sketch.js.map +1 -0
- package/dist/trpc/routers/skills.d.ts +76 -22
- package/dist/trpc/routers/skills.d.ts.map +1 -1
- package/dist/trpc/routers/skills.js +195 -170
- package/dist/trpc/routers/skills.js.map +1 -1
- package/dist/trpc/routers/storage.d.ts +3 -30
- package/dist/trpc/routers/storage.d.ts.map +1 -1
- package/dist/trpc/routers/storage.js +60 -117
- package/dist/trpc/routers/storage.js.map +1 -1
- package/dist/trpc/routers/storyboards.d.ts +5907 -0
- package/dist/trpc/routers/storyboards.d.ts.map +1 -0
- package/dist/trpc/routers/storyboards.js +156 -0
- package/dist/trpc/routers/storyboards.js.map +1 -0
- package/dist/trpc/routers/threads.d.ts +33 -21
- package/dist/trpc/routers/threads.d.ts.map +1 -1
- package/dist/trpc/routers/threads.js +36 -30
- package/dist/trpc/routers/threads.js.map +1 -1
- package/dist/trpc/routers/timeline.d.ts +8516 -0
- package/dist/trpc/routers/timeline.d.ts.map +1 -0
- package/dist/trpc/routers/timeline.js +493 -0
- package/dist/trpc/routers/timeline.js.map +1 -0
- package/dist/trpc/routers/triggers.d.ts +46 -0
- package/dist/trpc/routers/triggers.d.ts.map +1 -0
- package/dist/trpc/routers/triggers.js +117 -0
- package/dist/trpc/routers/triggers.js.map +1 -0
- package/dist/trpc/routers/users.d.ts +1 -14
- package/dist/trpc/routers/users.d.ts.map +1 -1
- package/dist/trpc/routers/users.js +1 -12
- package/dist/trpc/routers/users.js.map +1 -1
- package/dist/trpc/routers/worker.d.ts +242 -0
- package/dist/trpc/routers/worker.d.ts.map +1 -0
- package/dist/trpc/routers/worker.js +220 -0
- package/dist/trpc/routers/worker.js.map +1 -0
- package/dist/trpc/routers/workflows.d.ts +385 -197
- package/dist/trpc/routers/workflows.d.ts.map +1 -1
- package/dist/trpc/routers/workflows.js +326 -345
- package/dist/trpc/routers/workflows.js.map +1 -1
- package/dist/trpc/routers/workspace.d.ts +59 -33
- package/dist/trpc/routers/workspace.d.ts.map +1 -1
- package/dist/trpc/routers/workspace.js +230 -93
- package/dist/trpc/routers/workspace.js.map +1 -1
- package/dist/trpc/sandbox-coverage.d.ts +64 -0
- package/dist/trpc/sandbox-coverage.d.ts.map +1 -0
- package/dist/trpc/sandbox-coverage.js +1049 -0
- package/dist/trpc/sandbox-coverage.js.map +1 -0
- package/dist/websocket-client-session.d.ts +320 -0
- package/dist/websocket-client-session.d.ts.map +1 -0
- package/dist/websocket-client-session.js +1253 -0
- package/dist/websocket-client-session.js.map +1 -0
- package/dist/workflow-interface-service.d.ts +87 -0
- package/dist/workflow-interface-service.d.ts.map +1 -0
- package/dist/workflow-interface-service.js +131 -0
- package/dist/workflow-interface-service.js.map +1 -0
- package/dist/workspace-api.d.ts.map +1 -1
- package/dist/workspace-api.js +33 -23
- package/dist/workspace-api.js.map +1 -1
- package/dist/ws-adapter.d.ts +46 -3
- package/dist/ws-adapter.d.ts.map +1 -1
- package/dist/ws-adapter.js +164 -26
- package/dist/ws-adapter.js.map +1 -1
- package/package.json +81 -35
- package/dist/agent/agent-runtime.d.ts +0 -47
- package/dist/agent/agent-runtime.d.ts.map +0 -1
- package/dist/agent/agent-runtime.js +0 -579
- package/dist/agent/agent-runtime.js.map +0 -1
- package/dist/agent/codex-agent.d.ts +0 -41
- package/dist/agent/codex-agent.d.ts.map +0 -1
- package/dist/agent/codex-agent.js +0 -334
- package/dist/agent/codex-agent.js.map +0 -1
- package/dist/agent/index.d.ts +0 -6
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js +0 -4
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/llm-agent.d.ts +0 -51
- package/dist/agent/llm-agent.d.ts.map +0 -1
- package/dist/agent/llm-agent.js +0 -526
- package/dist/agent/llm-agent.js.map +0 -1
- package/dist/agent/mcp-tool-server.d.ts +0 -33
- package/dist/agent/mcp-tool-server.d.ts.map +0 -1
- package/dist/agent/mcp-tool-server.js +0 -292
- package/dist/agent/mcp-tool-server.js.map +0 -1
- package/dist/agent/opencode-agent.d.ts +0 -32
- package/dist/agent/opencode-agent.d.ts.map +0 -1
- package/dist/agent/opencode-agent.js +0 -332
- package/dist/agent/opencode-agent.js.map +0 -1
- package/dist/agent/pi-agent.d.ts +0 -42
- package/dist/agent/pi-agent.d.ts.map +0 -1
- package/dist/agent/pi-agent.js +0 -429
- package/dist/agent/pi-agent.js.map +0 -1
- package/dist/agent/sdk-provider.d.ts +0 -46
- package/dist/agent/sdk-provider.d.ts.map +0 -1
- package/dist/agent/sdk-provider.js +0 -50
- package/dist/agent/sdk-provider.js.map +0 -1
- package/dist/agent/socket-route.d.ts +0 -11
- package/dist/agent/socket-route.d.ts.map +0 -1
- package/dist/agent/socket-route.js +0 -262
- package/dist/agent/socket-route.js.map +0 -1
- package/dist/agent/transport.d.ts +0 -39
- package/dist/agent/transport.d.ts.map +0 -1
- package/dist/agent/transport.js +0 -17
- package/dist/agent/transport.js.map +0 -1
- package/dist/agent/types.d.ts +0 -11
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -10
- package/dist/agent/types.js.map +0 -1
- package/dist/routes/jobs.d.ts +0 -16
- package/dist/routes/jobs.d.ts.map +0 -1
- package/dist/routes/jobs.js +0 -25
- package/dist/routes/jobs.js.map +0 -1
- package/dist/trpc/routers/sandboxes.d.ts +0 -64
- package/dist/trpc/routers/sandboxes.d.ts.map +0 -1
- package/dist/trpc/routers/sandboxes.js +0 -327
- package/dist/trpc/routers/sandboxes.js.map +0 -1
- package/dist/unified-websocket-runner.d.ts +0 -280
- package/dist/unified-websocket-runner.d.ts.map +0 -1
- package/dist/unified-websocket-runner.js +0 -3840
- package/dist/unified-websocket-runner.js.map +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The auth-exemption allowlist predicates used by the server's `onRequest`
|
|
3
|
+
* hook.
|
|
4
|
+
*
|
|
5
|
+
* These live in their own module so they are testable without booting the
|
|
6
|
+
* server (`server.ts` is an entry point: importing it opens the database and
|
|
7
|
+
* binds a port). Getting an entry wrong here is an unauthenticated read of
|
|
8
|
+
* someone's data, so each predicate is deliberately an allowlist of exact
|
|
9
|
+
* paths or prefixes that carry no per-caller state.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Read-only workflow GETs that carry no per-user data: the shipped example
|
|
13
|
+
* templates and workflows the owner explicitly marked `access: "public"`.
|
|
14
|
+
*
|
|
15
|
+
* Nothing that reads the *caller's* library belongs here. The REST handlers
|
|
16
|
+
* resolve identity from the (server-set) `x-user-id` header and fall back to
|
|
17
|
+
* user "1" when it is absent, so an auth-exempt route serves the local user's
|
|
18
|
+
* private workflows — full graph included — to anyone who can reach the port.
|
|
19
|
+
* That is exactly the disclosure the "Remote access requires authentication"
|
|
20
|
+
* 401 exists to prevent, so `/api/workflows`, `/api/workflows/:id`,
|
|
21
|
+
* `/api/workflows/names`, `/api/workflows/tools`, and `:id/dsl-export` all
|
|
22
|
+
* stay behind auth. A genuinely public workflow is still reachable
|
|
23
|
+
* unauthenticated at `/api/workflows/public/:id`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isPublicWorkflowMetadataRequest(pathname: string, method: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* OAuth paths reachable without a session. Only the two browser redirect
|
|
28
|
+
* targets qualify: the identity provider sends the user back with no
|
|
29
|
+
* `Authorization` header, and the handlers authenticate the callback through
|
|
30
|
+
* the single-use PKCE `state` they minted at `/start`.
|
|
31
|
+
*
|
|
32
|
+
* Every other `/api/oauth/*` path reads or mutates stored credentials for the
|
|
33
|
+
* caller's user id, so exempting the whole prefix let an unauthenticated
|
|
34
|
+
* caller enumerate linked accounts (`/tokens`), pull the linked third-party
|
|
35
|
+
* profile and email (`/hf/whoami`, `/github/user`), force token refreshes, and
|
|
36
|
+
* delete credentials (`/openai/disconnect`) as user "1". The OpenAI (Codex)
|
|
37
|
+
* flow needs no entry: it redirects to a loopback listener this process binds,
|
|
38
|
+
* not to a server route.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isPublicOAuthRequest(pathname: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The MCP OAuth 2.1 authorization-server + resource-metadata surface
|
|
43
|
+
* (`docs/mcp-oauth-design.md`, `routes/oauth-as.ts`). Every one of these
|
|
44
|
+
* paths authenticates on its own terms — well-known documents carry no
|
|
45
|
+
* per-caller state, and `/oauth/authorize|token|register|revoke` validate a
|
|
46
|
+
* client, a PKCE verifier, or a bearer token, never a session. The two
|
|
47
|
+
* well-known prefixes are matched with `startsWith` so the path-aware form
|
|
48
|
+
* (`…/oauth-protected-resource/mcp`) and the root form
|
|
49
|
+
* (`…/oauth-protected-resource`) both clear under one entry, same as the
|
|
50
|
+
* file's other prefix rules.
|
|
51
|
+
*
|
|
52
|
+
* `/oauth/consent` is deliberately absent: it is an SPA page, not an API
|
|
53
|
+
* route, and its data comes from an authenticated tRPC call
|
|
54
|
+
* (`agentAccess.getOauthRequest`) that goes through the normal auth hook.
|
|
55
|
+
* Exempting it here would serve the page's HTML shell to a caller with no
|
|
56
|
+
* session, which is fine, but the shell carries no data — the tRPC calls it
|
|
57
|
+
* makes still require login, so there is nothing to gain and a naming
|
|
58
|
+
* collision with the four API paths to avoid.
|
|
59
|
+
*/
|
|
60
|
+
export declare function isPublicMcpOauthAsRequest(pathname: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* The two routes a deployed mini app is served from: read the app, and mint
|
|
63
|
+
* the short-lived session its runs go through. Both take the deployment token
|
|
64
|
+
* from the path, and that token is the credential — an unguessable 24-byte
|
|
65
|
+
* secret its owner minted and can revoke.
|
|
66
|
+
*
|
|
67
|
+
* The prefix is exact and shallow (`/api/apps/`, not `/api/applications/`) so
|
|
68
|
+
* it can never widen onto the owner-scoped application routes, which read the
|
|
69
|
+
* caller's own library and stay behind auth. Nothing here reads a caller's
|
|
70
|
+
* identity: both handlers resolve everything from the token, and both refuse
|
|
71
|
+
* outside production, where the surface does not exist at all.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isPublicAppDeploymentRequest(pathname: string, method: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* The fal callback authenticates itself with the provider's Ed25519
|
|
76
|
+
* signature. Only POSTs to the exact callback shape are exempt; neighbouring
|
|
77
|
+
* provider routes and arbitrary path suffixes remain behind session auth.
|
|
78
|
+
*/
|
|
79
|
+
export declare function isPublicFalWebhookRequest(pathname: string, method: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* The AtlasCloud callback authenticates itself with the provider's Ed25519
|
|
82
|
+
* signature over the raw body. Only POSTs to the exact callback path are
|
|
83
|
+
* exempt; neighbouring provider routes stay behind session auth.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isPublicAtlasCloudWebhookRequest(pathname: string, method: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Paths that skip session auth in the server's `onRequest` hook. Every entry
|
|
88
|
+
* must carry no per-caller private state, or authenticate on its own (webhook
|
|
89
|
+
* secret, OAuth PKCE state, KIE webhook signature, fal and AtlasCloud Ed25519
|
|
90
|
+
* signatures).
|
|
91
|
+
* All of these are still
|
|
92
|
+
* covered by the global `@fastify/rate-limit` plugin registered before auth.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isPublicAuthExemptRoute(pathname: string, method: string): boolean;
|
|
95
|
+
//# sourceMappingURL=public-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-routes.d.ts","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAQT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAST;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAIT;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAwBT"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The auth-exemption allowlist predicates used by the server's `onRequest`
|
|
3
|
+
* hook.
|
|
4
|
+
*
|
|
5
|
+
* These live in their own module so they are testable without booting the
|
|
6
|
+
* server (`server.ts` is an entry point: importing it opens the database and
|
|
7
|
+
* binds a port). Getting an entry wrong here is an unauthenticated read of
|
|
8
|
+
* someone's data, so each predicate is deliberately an allowlist of exact
|
|
9
|
+
* paths or prefixes that carry no per-caller state.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Read-only workflow GETs that carry no per-user data: the shipped example
|
|
13
|
+
* templates and workflows the owner explicitly marked `access: "public"`.
|
|
14
|
+
*
|
|
15
|
+
* Nothing that reads the *caller's* library belongs here. The REST handlers
|
|
16
|
+
* resolve identity from the (server-set) `x-user-id` header and fall back to
|
|
17
|
+
* user "1" when it is absent, so an auth-exempt route serves the local user's
|
|
18
|
+
* private workflows — full graph included — to anyone who can reach the port.
|
|
19
|
+
* That is exactly the disclosure the "Remote access requires authentication"
|
|
20
|
+
* 401 exists to prevent, so `/api/workflows`, `/api/workflows/:id`,
|
|
21
|
+
* `/api/workflows/names`, `/api/workflows/tools`, and `:id/dsl-export` all
|
|
22
|
+
* stay behind auth. A genuinely public workflow is still reachable
|
|
23
|
+
* unauthenticated at `/api/workflows/public/:id`.
|
|
24
|
+
*/
|
|
25
|
+
export function isPublicWorkflowMetadataRequest(pathname, method) {
|
|
26
|
+
if (method !== "GET")
|
|
27
|
+
return false;
|
|
28
|
+
return (pathname === "/api/workflows/public" ||
|
|
29
|
+
pathname.startsWith("/api/workflows/public/") ||
|
|
30
|
+
pathname === "/api/workflows/examples" ||
|
|
31
|
+
pathname.startsWith("/api/workflows/examples/"));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* OAuth paths reachable without a session. Only the two browser redirect
|
|
35
|
+
* targets qualify: the identity provider sends the user back with no
|
|
36
|
+
* `Authorization` header, and the handlers authenticate the callback through
|
|
37
|
+
* the single-use PKCE `state` they minted at `/start`.
|
|
38
|
+
*
|
|
39
|
+
* Every other `/api/oauth/*` path reads or mutates stored credentials for the
|
|
40
|
+
* caller's user id, so exempting the whole prefix let an unauthenticated
|
|
41
|
+
* caller enumerate linked accounts (`/tokens`), pull the linked third-party
|
|
42
|
+
* profile and email (`/hf/whoami`, `/github/user`), force token refreshes, and
|
|
43
|
+
* delete credentials (`/openai/disconnect`) as user "1". The OpenAI (Codex)
|
|
44
|
+
* flow needs no entry: it redirects to a loopback listener this process binds,
|
|
45
|
+
* not to a server route.
|
|
46
|
+
*/
|
|
47
|
+
export function isPublicOAuthRequest(pathname) {
|
|
48
|
+
return (pathname === "/api/oauth/hf/callback" ||
|
|
49
|
+
pathname === "/api/oauth/github/callback");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The MCP OAuth 2.1 authorization-server + resource-metadata surface
|
|
53
|
+
* (`docs/mcp-oauth-design.md`, `routes/oauth-as.ts`). Every one of these
|
|
54
|
+
* paths authenticates on its own terms — well-known documents carry no
|
|
55
|
+
* per-caller state, and `/oauth/authorize|token|register|revoke` validate a
|
|
56
|
+
* client, a PKCE verifier, or a bearer token, never a session. The two
|
|
57
|
+
* well-known prefixes are matched with `startsWith` so the path-aware form
|
|
58
|
+
* (`…/oauth-protected-resource/mcp`) and the root form
|
|
59
|
+
* (`…/oauth-protected-resource`) both clear under one entry, same as the
|
|
60
|
+
* file's other prefix rules.
|
|
61
|
+
*
|
|
62
|
+
* `/oauth/consent` is deliberately absent: it is an SPA page, not an API
|
|
63
|
+
* route, and its data comes from an authenticated tRPC call
|
|
64
|
+
* (`agentAccess.getOauthRequest`) that goes through the normal auth hook.
|
|
65
|
+
* Exempting it here would serve the page's HTML shell to a caller with no
|
|
66
|
+
* session, which is fine, but the shell carries no data — the tRPC calls it
|
|
67
|
+
* makes still require login, so there is nothing to gain and a naming
|
|
68
|
+
* collision with the four API paths to avoid.
|
|
69
|
+
*/
|
|
70
|
+
export function isPublicMcpOauthAsRequest(pathname) {
|
|
71
|
+
return (pathname.startsWith("/.well-known/oauth-protected-resource") ||
|
|
72
|
+
pathname.startsWith("/.well-known/oauth-authorization-server") ||
|
|
73
|
+
pathname === "/oauth/authorize" ||
|
|
74
|
+
pathname === "/oauth/token" ||
|
|
75
|
+
pathname === "/oauth/register" ||
|
|
76
|
+
pathname === "/oauth/revoke");
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The two routes a deployed mini app is served from: read the app, and mint
|
|
80
|
+
* the short-lived session its runs go through. Both take the deployment token
|
|
81
|
+
* from the path, and that token is the credential — an unguessable 24-byte
|
|
82
|
+
* secret its owner minted and can revoke.
|
|
83
|
+
*
|
|
84
|
+
* The prefix is exact and shallow (`/api/apps/`, not `/api/applications/`) so
|
|
85
|
+
* it can never widen onto the owner-scoped application routes, which read the
|
|
86
|
+
* caller's own library and stay behind auth. Nothing here reads a caller's
|
|
87
|
+
* identity: both handlers resolve everything from the token, and both refuse
|
|
88
|
+
* outside production, where the surface does not exist at all.
|
|
89
|
+
*/
|
|
90
|
+
export function isPublicAppDeploymentRequest(pathname, method) {
|
|
91
|
+
if (!pathname.startsWith("/api/apps/"))
|
|
92
|
+
return false;
|
|
93
|
+
const segments = pathname.slice("/api/apps/".length).split("/");
|
|
94
|
+
if (segments[0] === "")
|
|
95
|
+
return false;
|
|
96
|
+
if (method === "GET")
|
|
97
|
+
return segments.length === 1;
|
|
98
|
+
if (method === "POST") {
|
|
99
|
+
return segments.length === 2 && segments[1] === "session";
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The fal callback authenticates itself with the provider's Ed25519
|
|
105
|
+
* signature. Only POSTs to the exact callback shape are exempt; neighbouring
|
|
106
|
+
* provider routes and arbitrary path suffixes remain behind session auth.
|
|
107
|
+
*/
|
|
108
|
+
export function isPublicFalWebhookRequest(pathname, method) {
|
|
109
|
+
const prefix = "/api/providers/fal/webhook/";
|
|
110
|
+
if (method !== "POST" || !pathname.startsWith(prefix))
|
|
111
|
+
return false;
|
|
112
|
+
const token = pathname.slice(prefix.length);
|
|
113
|
+
return token.length > 0 && !token.includes("/");
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The AtlasCloud callback authenticates itself with the provider's Ed25519
|
|
117
|
+
* signature over the raw body. Only POSTs to the exact callback path are
|
|
118
|
+
* exempt; neighbouring provider routes stay behind session auth.
|
|
119
|
+
*/
|
|
120
|
+
export function isPublicAtlasCloudWebhookRequest(pathname, method) {
|
|
121
|
+
return (method === "POST" && pathname === "/api/providers/atlascloud/webhook");
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Paths that skip session auth in the server's `onRequest` hook. Every entry
|
|
125
|
+
* must carry no per-caller private state, or authenticate on its own (webhook
|
|
126
|
+
* secret, OAuth PKCE state, KIE webhook signature, fal and AtlasCloud Ed25519
|
|
127
|
+
* signatures).
|
|
128
|
+
* All of these are still
|
|
129
|
+
* covered by the global `@fastify/rate-limit` plugin registered before auth.
|
|
130
|
+
*/
|
|
131
|
+
export function isPublicAuthExemptRoute(pathname, method) {
|
|
132
|
+
return (pathname === "/health" ||
|
|
133
|
+
pathname === "/ready" ||
|
|
134
|
+
pathname === "/api/health" ||
|
|
135
|
+
pathname === "/api/config" ||
|
|
136
|
+
isPublicOAuthRequest(pathname) ||
|
|
137
|
+
pathname === "/api/assets/packages" ||
|
|
138
|
+
pathname.startsWith("/api/assets/packages/") ||
|
|
139
|
+
pathname === "/api/nodes/metadata" ||
|
|
140
|
+
pathname.startsWith("/api/kie/webhook") ||
|
|
141
|
+
pathname.startsWith("/api/webhooks/") ||
|
|
142
|
+
// Messaging-integration identity routes. Like the webhook routes, they
|
|
143
|
+
// authenticate themselves — every handler requires the server's
|
|
144
|
+
// NODETOOL_INTEGRATION_TOKEN, compared in constant time — and they carry
|
|
145
|
+
// no per-caller session. Without that env var they are not registered at
|
|
146
|
+
// all, so the exemption reaches a 404.
|
|
147
|
+
pathname.startsWith("/api/integrations/") ||
|
|
148
|
+
isPublicWorkflowMetadataRequest(pathname, method) ||
|
|
149
|
+
isPublicAppDeploymentRequest(pathname, method) ||
|
|
150
|
+
isPublicFalWebhookRequest(pathname, method) ||
|
|
151
|
+
isPublicAtlasCloudWebhookRequest(pathname, method) ||
|
|
152
|
+
isPublicMcpOauthAsRequest(pathname));
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=public-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-routes.js","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The runtimes a client gets when it asks for no particular ones. */
|
|
2
|
+
export declare const KNOWN_RUNTIMES: readonly ["python", "nodejs", "ffmpeg", "ffprobe", "pandoc", "pdftotext", "pdftoppm", "yt-dlp"];
|
|
3
|
+
/** Whether `command` resolves to an executable on PATH. */
|
|
4
|
+
export declare function hasExecutable(command: string): Promise<boolean>;
|
|
5
|
+
export interface RuntimeStatus {
|
|
6
|
+
id: string;
|
|
7
|
+
installed: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Report install status for each runtime id. Unknown-but-safe ids are probed
|
|
11
|
+
* under their own name; an id that isn't a bare command name reports
|
|
12
|
+
* `installed: false` rather than touching the filesystem with it.
|
|
13
|
+
*/
|
|
14
|
+
export declare function detectRuntimes(ids?: readonly string[]): Promise<RuntimeStatus[]>;
|
|
15
|
+
/** Drop cached probe results (tests, and after an install changes PATH). */
|
|
16
|
+
export declare function clearRuntimeDetectionCache(): void;
|
|
17
|
+
//# sourceMappingURL=runtime-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-detection.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-detection.ts"],"names":[],"mappings":"AA2BA,sEAAsE;AACtE,eAAO,MAAM,cAAc,YACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,CACA,CAAC;AAuBX,2DAA2D;AAC3D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQrE;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,GAAE,SAAS,MAAM,EAAmB,GACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1B;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects which external runtimes (ffmpeg, pandoc, yt-dlp, …) are present on
|
|
3
|
+
* the machine running the server.
|
|
4
|
+
*
|
|
5
|
+
* The desktop app answers this over Electron IPC, because it also installs the
|
|
6
|
+
* runtimes. A browser client — the web build, and every Docker/Fly deployment —
|
|
7
|
+
* has no such channel, so without this it assumed nothing was installed and
|
|
8
|
+
* showed "Requires FFmpeg" on nodes that run fine, since the container ships
|
|
9
|
+
* ffmpeg.
|
|
10
|
+
*
|
|
11
|
+
* Detection is a PATH scan for an executable file, not a spawn: it costs a few
|
|
12
|
+
* `access()` calls, cannot hang, and cannot run client-supplied strings.
|
|
13
|
+
* Results are cached briefly so a canvas full of video nodes probes once.
|
|
14
|
+
*/
|
|
15
|
+
import { constants as fsConstants, promises as fs } from "node:fs";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
/**
|
|
18
|
+
* Runtime ids whose executable is named differently from the id. Ids not
|
|
19
|
+
* listed here are probed under their own name (`ffmpeg`, `pandoc`, `yt-dlp`, …).
|
|
20
|
+
*/
|
|
21
|
+
const RUNTIME_COMMANDS = {
|
|
22
|
+
nodejs: "node",
|
|
23
|
+
pdftotext: "pdftotext",
|
|
24
|
+
pdftoppm: "pdftoppm"
|
|
25
|
+
};
|
|
26
|
+
/** The runtimes a client gets when it asks for no particular ones. */
|
|
27
|
+
export const KNOWN_RUNTIMES = [
|
|
28
|
+
"python",
|
|
29
|
+
"nodejs",
|
|
30
|
+
"ffmpeg",
|
|
31
|
+
"ffprobe",
|
|
32
|
+
"pandoc",
|
|
33
|
+
"pdftotext",
|
|
34
|
+
"pdftoppm",
|
|
35
|
+
"yt-dlp"
|
|
36
|
+
];
|
|
37
|
+
/** Ids that are safe to probe: a bare command name, nothing path-like. */
|
|
38
|
+
const SAFE_ID = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/;
|
|
39
|
+
const CACHE_TTL_MS = 30_000;
|
|
40
|
+
const cache = new Map();
|
|
41
|
+
function candidateNames(command) {
|
|
42
|
+
if (process.platform !== "win32")
|
|
43
|
+
return [command];
|
|
44
|
+
const exts = (process.env["PATHEXT"] ?? ".EXE;.CMD;.BAT;.COM").split(";");
|
|
45
|
+
return [command, ...exts.filter(Boolean).map((ext) => command + ext)];
|
|
46
|
+
}
|
|
47
|
+
async function isExecutable(file) {
|
|
48
|
+
try {
|
|
49
|
+
await fs.access(file, fsConstants.X_OK);
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Whether `command` resolves to an executable on PATH. */
|
|
57
|
+
export async function hasExecutable(command) {
|
|
58
|
+
const dirs = (process.env["PATH"] ?? "").split(path.delimiter).filter(Boolean);
|
|
59
|
+
for (const dir of dirs) {
|
|
60
|
+
for (const name of candidateNames(command)) {
|
|
61
|
+
if (await isExecutable(path.join(dir, name)))
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Report install status for each runtime id. Unknown-but-safe ids are probed
|
|
69
|
+
* under their own name; an id that isn't a bare command name reports
|
|
70
|
+
* `installed: false` rather than touching the filesystem with it.
|
|
71
|
+
*/
|
|
72
|
+
export async function detectRuntimes(ids = KNOWN_RUNTIMES) {
|
|
73
|
+
const now = Date.now();
|
|
74
|
+
return Promise.all(ids.map(async (id) => {
|
|
75
|
+
if (!SAFE_ID.test(id))
|
|
76
|
+
return { id, installed: false };
|
|
77
|
+
const cached = cache.get(id);
|
|
78
|
+
if (cached && now - cached.at < CACHE_TTL_MS) {
|
|
79
|
+
return { id, installed: cached.installed };
|
|
80
|
+
}
|
|
81
|
+
const installed = await hasExecutable(RUNTIME_COMMANDS[id] ?? id);
|
|
82
|
+
cache.set(id, { installed, at: now });
|
|
83
|
+
return { id, installed };
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
/** Drop cached probe results (tests, and after an install changes PATH). */
|
|
87
|
+
export function clearRuntimeDetectionCache() {
|
|
88
|
+
cache.clear();
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=runtime-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-detection.js","sourceRoot":"","sources":["../../src/lib/runtime-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function isRuntimeScratchKey(key: string): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Derive the owning asset id from a storage key. Asset files are stored flat
|
|
4
|
+
* as `<assetId>.<ext>` and `<assetId>_thumb.jpg`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function assetIdFromKey(key: string): string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Whether `userId` owns the asset a key refers to. Fails closed: a key that
|
|
9
|
+
* maps to no asset row, or a lookup that throws, is not owned.
|
|
10
|
+
*/
|
|
11
|
+
export declare function callerOwnsStorageKey(userId: string, key: string): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `userId` may read the bytes at `key`.
|
|
14
|
+
*
|
|
15
|
+
* Owner-prefixed keys (`<userId>/<assetId>.<ext>`) are settled by the prefix
|
|
16
|
+
* alone — no database round trip, and the same rule a Supabase RLS policy or
|
|
17
|
+
* bucket policy applies to the object itself. Legacy flat keys, written
|
|
18
|
+
* before that layout, still need the `assets` lookup.
|
|
19
|
+
*/
|
|
20
|
+
export declare function canReadStorageKey(userId: string, key: string): Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=storage-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-access.d.ts","sourceRoot":"","sources":["../../src/lib/storage-access.ts"],"names":[],"mappings":"AA+BA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKzD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAKlB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ownership rules for `/api/storage/<key>`.
|
|
3
|
+
*
|
|
4
|
+
* The local storage backend is a single shared directory with no per-user
|
|
5
|
+
* prefix: an asset's bytes live at `<assetId>.<ext>` (thumbnail:
|
|
6
|
+
* `<assetId>_thumb.jpg`), whoever created it. The only thing that ties a key
|
|
7
|
+
* to a user is the `assets` row, so every read has to go through it — without
|
|
8
|
+
* that check any authenticated caller could read (and, when PUT was open,
|
|
9
|
+
* overwrite) another tenant's asset bytes by id alone.
|
|
10
|
+
*
|
|
11
|
+
* The tRPC `storage.signUrl` procedure already gated on this; these helpers
|
|
12
|
+
* are the shared implementation so REST and tRPC can't drift apart again.
|
|
13
|
+
*/
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { Asset } from "@nodetool-ai/models";
|
|
16
|
+
import { assetKeyOwner } from "@nodetool-ai/storage";
|
|
17
|
+
/**
|
|
18
|
+
* Key prefixes the runtime writes to directly, with no `assets` row behind
|
|
19
|
+
* them: `temp/<uuid>.<ext>` (temp_url asset outputs) and `assets/<uuid>.<ext>`
|
|
20
|
+
* (storage_url outputs, binary tool results). They are capability keys — a
|
|
21
|
+
* random v4 UUID minted per run and handed only to the caller who triggered
|
|
22
|
+
* it — so they stay readable without an ownership record. Nothing can
|
|
23
|
+
* overwrite them: `/api/storage` no longer accepts writes at all.
|
|
24
|
+
*/
|
|
25
|
+
const RUNTIME_SCRATCH_PREFIXES = ["temp/", "assets/"];
|
|
26
|
+
function normalizeKey(key) {
|
|
27
|
+
return key.replace(/\\/g, "/").replace(/^\/+/, "");
|
|
28
|
+
}
|
|
29
|
+
export function isRuntimeScratchKey(key) {
|
|
30
|
+
const normalized = normalizeKey(key);
|
|
31
|
+
return RUNTIME_SCRATCH_PREFIXES.some((prefix) => normalized.startsWith(prefix));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Derive the owning asset id from a storage key. Asset files are stored flat
|
|
35
|
+
* as `<assetId>.<ext>` and `<assetId>_thumb.jpg`.
|
|
36
|
+
*/
|
|
37
|
+
export function assetIdFromKey(key) {
|
|
38
|
+
const base = path.basename(normalizeKey(key));
|
|
39
|
+
const withoutExt = base.replace(/\.[^.]+$/, "");
|
|
40
|
+
const id = withoutExt.replace(/_thumb$/, "");
|
|
41
|
+
return id || null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether `userId` owns the asset a key refers to. Fails closed: a key that
|
|
45
|
+
* maps to no asset row, or a lookup that throws, is not owned.
|
|
46
|
+
*/
|
|
47
|
+
export async function callerOwnsStorageKey(userId, key) {
|
|
48
|
+
const assetId = assetIdFromKey(key);
|
|
49
|
+
if (!assetId)
|
|
50
|
+
return false;
|
|
51
|
+
try {
|
|
52
|
+
return (await Asset.find(userId, assetId)) !== null;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Whether `userId` may read the bytes at `key`.
|
|
60
|
+
*
|
|
61
|
+
* Owner-prefixed keys (`<userId>/<assetId>.<ext>`) are settled by the prefix
|
|
62
|
+
* alone — no database round trip, and the same rule a Supabase RLS policy or
|
|
63
|
+
* bucket policy applies to the object itself. Legacy flat keys, written
|
|
64
|
+
* before that layout, still need the `assets` lookup.
|
|
65
|
+
*/
|
|
66
|
+
export async function canReadStorageKey(userId, key) {
|
|
67
|
+
if (isRuntimeScratchKey(key))
|
|
68
|
+
return true;
|
|
69
|
+
const owner = assetKeyOwner(key);
|
|
70
|
+
if (owner !== null)
|
|
71
|
+
return owner === userId;
|
|
72
|
+
return callerOwnsStorageKey(userId, key);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=storage-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-access.js","sourceRoot":"","sources":["../../src/lib/storage-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAEtD,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC9C,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,IAAI,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,GAAW;IAEX,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,GAAW;IAEX,IAAI,mBAAmB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,KAAK,MAAM,CAAC;IAC5C,OAAO,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type StorageAdapter } from "@nodetool-ai/storage";
|
|
2
|
+
/**
|
|
3
|
+
* The asset store. On the local file backend it also resolves external
|
|
4
|
+
* assets, whose bytes stay at their original path outside the storage root.
|
|
5
|
+
* Server-built `ProcessingContext`s receive this instance as `assetStorage`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAssetAdapter(): StorageAdapter;
|
|
8
|
+
export declare function getTempAdapter(): StorageAdapter;
|
|
9
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAM9B;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,cAAc,CAWhD;AAED,wBAAgB,cAAc,IAAI,cAAc,CAG/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { loadAssetStorageConfig, loadTempStorageConfig } from "@nodetool-ai/config";
|
|
2
|
+
import { createStorageAdapter, FileStorageAdapter } from "@nodetool-ai/storage";
|
|
3
|
+
import { lookupExternalAssetPath } from "./external-asset-lookup.js";
|
|
4
|
+
let _assetAdapter = null;
|
|
5
|
+
let _tempAdapter = null;
|
|
6
|
+
/**
|
|
7
|
+
* The asset store. On the local file backend it also resolves external
|
|
8
|
+
* assets, whose bytes stay at their original path outside the storage root.
|
|
9
|
+
* Server-built `ProcessingContext`s receive this instance as `assetStorage`.
|
|
10
|
+
*/
|
|
11
|
+
export function getAssetAdapter() {
|
|
12
|
+
if (!_assetAdapter) {
|
|
13
|
+
const config = loadAssetStorageConfig();
|
|
14
|
+
_assetAdapter =
|
|
15
|
+
config.kind === "file"
|
|
16
|
+
? new FileStorageAdapter(config.rootDir, {
|
|
17
|
+
externalPathLookup: lookupExternalAssetPath
|
|
18
|
+
})
|
|
19
|
+
: createStorageAdapter(config);
|
|
20
|
+
}
|
|
21
|
+
return _assetAdapter;
|
|
22
|
+
}
|
|
23
|
+
export function getTempAdapter() {
|
|
24
|
+
if (!_tempAdapter)
|
|
25
|
+
_tempAdapter = createStorageAdapter(loadTempStorageConfig());
|
|
26
|
+
return _tempAdapter;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,IAAI,aAAa,GAA0B,IAAI,CAAC;AAChD,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACxC,aAAa;YACX,MAAM,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE;oBACrC,kBAAkB,EAAE,uBAAuB;iBAC5C,CAAC;gBACJ,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,YAAY;QAAE,YAAY,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAChF,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Shot } from "@nodetool-ai/protocol";
|
|
2
|
+
import { type ExportSource, type ZipStreamWriter } from "./zip-stream.js";
|
|
3
|
+
/** The board fields the export reads, as `Storyboard.toDocument()` holds them. */
|
|
4
|
+
export interface StoryboardExportInput {
|
|
5
|
+
name: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
logline?: string;
|
|
8
|
+
brief?: string;
|
|
9
|
+
style?: string;
|
|
10
|
+
aspectRatio?: string;
|
|
11
|
+
narration?: string;
|
|
12
|
+
musicPrompt?: string;
|
|
13
|
+
shots: Shot[];
|
|
14
|
+
}
|
|
15
|
+
/** What the archive holds for one shot: a packed path, or why it holds none. */
|
|
16
|
+
interface ShotMedia {
|
|
17
|
+
still?: string;
|
|
18
|
+
clip?: string;
|
|
19
|
+
/** Refs the shot named that the export could not turn into bytes. */
|
|
20
|
+
unresolved?: Array<{
|
|
21
|
+
kind: "still" | "clip";
|
|
22
|
+
source: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The locator to resolve bytes from, or null when the ref carries none.
|
|
27
|
+
*
|
|
28
|
+
* A stored `asset_id` beats the ref's own `uri` when that uri is not something
|
|
29
|
+
* the server can fetch — a `blob:` or `file://` source is the browser's
|
|
30
|
+
* handle on the bytes, not the server's, and the asset id names the same
|
|
31
|
+
* media in terms the storage adapter understands.
|
|
32
|
+
*/
|
|
33
|
+
export declare function mediaRefSource(ref: unknown): string | null;
|
|
34
|
+
/**
|
|
35
|
+
* Render the board as Markdown. `media` maps a shot id to the archive-relative
|
|
36
|
+
* paths packed for it; a shot missing from it renders without media links.
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderStoryboardMarkdown(board: StoryboardExportInput, media: ReadonlyMap<string, ShotMedia>): string;
|
|
39
|
+
export interface PackStoryboardZipOptions {
|
|
40
|
+
board: StoryboardExportInput;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a media ref uri (`asset://…`, `/api/storage/…`) to bytes or a
|
|
43
|
+
* local file, which is streamed from disk.
|
|
44
|
+
*/
|
|
45
|
+
fetchAssetSource: (ref: string) => Promise<ExportSource | null>;
|
|
46
|
+
}
|
|
47
|
+
export interface WriteStoryboardZipResult {
|
|
48
|
+
/** Archive-relative paths written, `storyboard.md` first. */
|
|
49
|
+
files: string[];
|
|
50
|
+
/** Refs that named media the export could not resolve. */
|
|
51
|
+
missing: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface PackStoryboardZipResult extends WriteStoryboardZipResult {
|
|
54
|
+
bytes: Uint8Array;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Write the zip to `writer`: every resolvable shot asset as it is read, then
|
|
58
|
+
* the Markdown document, which names what was found.
|
|
59
|
+
*/
|
|
60
|
+
export declare function writeStoryboardZip(options: PackStoryboardZipOptions, writer: ZipStreamWriter): Promise<WriteStoryboardZipResult>;
|
|
61
|
+
/** Build the zip in memory. The HTTP export streams instead. */
|
|
62
|
+
export declare function packStoryboardZip(options: PackStoryboardZipOptions): Promise<PackStoryboardZipResult>;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=storyboard-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storyboard-export.d.ts","sourceRoot":"","sources":["../../src/lib/storyboard-export.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAGzB,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,gFAAgF;AAChF,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAkBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS1D;AAqCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,MAAM,CA+CR;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,qBAAqB,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,wBAAwB,CAAC,CAmEnC;AAED,gEAAgE;AAChE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAOlC"}
|