@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,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serving a mini app from a hidden URL, with no login.
|
|
3
|
+
*
|
|
4
|
+
* Two audiences, kept apart on purpose. The **owner** deploys and withdraws
|
|
5
|
+
* the link through their authenticated session, and is the only one who ever
|
|
6
|
+
* sees the token. The **visitor** presents the token and gets exactly two
|
|
7
|
+
* things: the app's released snapshot, and a short-lived session token that
|
|
8
|
+
* may run that release and nothing else.
|
|
9
|
+
*
|
|
10
|
+
* Every failure a visitor can reach answers the same way — 404, "This app is
|
|
11
|
+
* not available" — whether the token was never minted, was revoked, names an
|
|
12
|
+
* app that has since been deleted, or names one that has published nothing.
|
|
13
|
+
* Distinguishing them would turn the hidden URL into an oracle for guessing
|
|
14
|
+
* the rest of them.
|
|
15
|
+
*
|
|
16
|
+
* The whole surface is production-only (`isAppDeploymentEnabled`). A local
|
|
17
|
+
* install already answers loopback as user "1" without credentials, so there
|
|
18
|
+
* a "no login needed" link is a second door onto an open house; production is
|
|
19
|
+
* where auth is enforced, where asset bytes come back as signed URLs a
|
|
20
|
+
* logged-out browser can load, and where the app's spend budget is what
|
|
21
|
+
* stands between a shared link and the owner's provider bill.
|
|
22
|
+
*/
|
|
23
|
+
import { operationTarget } from "@nodetool-ai/app-runtime";
|
|
24
|
+
import { Application, ApplicationDeployment, getApplicationBudget, hasFiniteBudgetLimit, releasedApplicationRelease } from "@nodetool-ai/models";
|
|
25
|
+
import { APP_DEPLOYMENT_SESSION_TTL_SECONDS, isAppDeploymentEnabled } from "@nodetool-ai/protocol";
|
|
26
|
+
import { applicationDeployment, applicationReleaseResponse, publicApplication, publicApplicationSession } from "@nodetool-ai/protocol/api-schemas/applications.js";
|
|
27
|
+
import { mintAppSessionToken } from "@nodetool-ai/auth";
|
|
28
|
+
import { ZodError } from "zod";
|
|
29
|
+
import { ApiErrorCode } from "../error-codes.js";
|
|
30
|
+
import { throwApiError } from "../trpc/error-formatter.js";
|
|
31
|
+
import { loadOwnedApplication } from "./applications-service.js";
|
|
32
|
+
import { resolvePublicAppStaticAssetLocators } from "./public-app-assets.js";
|
|
33
|
+
/** Whether this server offers public app deployments at all. */
|
|
34
|
+
export function appDeploymentsEnabled(env = process.env) {
|
|
35
|
+
return isAppDeploymentEnabled(env["NODETOOL_ENV"]);
|
|
36
|
+
}
|
|
37
|
+
/** The one answer a visitor gets for every way a link can fail. */
|
|
38
|
+
function notAvailable() {
|
|
39
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "This app is not available");
|
|
40
|
+
}
|
|
41
|
+
/** A corrupt release is unavailable to a visitor, not a validation oracle. */
|
|
42
|
+
function parsePublicRelease(release) {
|
|
43
|
+
try {
|
|
44
|
+
return applicationReleaseResponse.parse(release);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof ZodError)
|
|
48
|
+
notAvailable();
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Refuse the whole surface outside production, for the owner as well as the
|
|
54
|
+
* visitor. A deploy that silently succeeded locally would hand the owner a URL
|
|
55
|
+
* that stops working the moment it matters.
|
|
56
|
+
*/
|
|
57
|
+
function requireEnabled() {
|
|
58
|
+
if (!appDeploymentsEnabled()) {
|
|
59
|
+
throwApiError(ApiErrorCode.FORBIDDEN, "Deploying an app to a public URL is only available on nodetool.ai");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const PUBLIC_BUDGET_REQUIRED = "Public app runs require a finite invocation or USD budget. Configure one before deploying.";
|
|
63
|
+
/**
|
|
64
|
+
* Why a release cannot be served over a public link, or null when it can.
|
|
65
|
+
*
|
|
66
|
+
* A public visitor reaches exactly two things: the release payload and the
|
|
67
|
+
* websocket. Everything else — the tRPC library, the script store, the asset
|
|
68
|
+
* routes — is refused at the door, on purpose. A workflow operation is fine:
|
|
69
|
+
* the release carries its pinned graph, so nothing has to be fetched. A script
|
|
70
|
+
* operation is not: its body lives behind an authenticated call the visitor
|
|
71
|
+
* cannot make, and a run that silently did nothing would be worse than a
|
|
72
|
+
* refusal.
|
|
73
|
+
*/
|
|
74
|
+
export function releaseBlockedReason(release) {
|
|
75
|
+
const documentBlocked = publicReleaseDocumentBlockedReason(release.document);
|
|
76
|
+
if (documentBlocked)
|
|
77
|
+
return documentBlocked;
|
|
78
|
+
const unpinned = release.document.operations.filter((operation) => {
|
|
79
|
+
const pinned = release.workflows.find((entry) => entry.workflowId === operation.workflowId);
|
|
80
|
+
return !pinned?.graph;
|
|
81
|
+
});
|
|
82
|
+
if (unpinned.length > 0) {
|
|
83
|
+
// A snapshot published before releases pinned graphs. A draft run falls
|
|
84
|
+
// back to the live workflow; a public run must not, because "the live
|
|
85
|
+
// workflow" is the owner's editable graph and nobody chose to publish it.
|
|
86
|
+
return "This released version predates pinned graphs. Publish it again to deploy it.";
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
/** Document-level restrictions shared by draft publish and released rollback. */
|
|
91
|
+
export function publicReleaseDocumentBlockedReason(document) {
|
|
92
|
+
const scripted = document.operations.filter((operation) => operationTarget(operation).kind === "script");
|
|
93
|
+
if (scripted.length > 0) {
|
|
94
|
+
return (`A public link cannot run a script operation (${scripted
|
|
95
|
+
.map((operation) => operation.name || operation.id)
|
|
96
|
+
.join(", ")}). Move the step into a workflow and publish again.`);
|
|
97
|
+
}
|
|
98
|
+
if (document.resources.length > 0) {
|
|
99
|
+
// A resource binding reads the owner's own library — their assets,
|
|
100
|
+
// timelines, storyboards, sketches. Serving that to whoever has the link
|
|
101
|
+
// is not what deploying an app means, and the session cannot make the
|
|
102
|
+
// call anyway, so the widget would sit empty.
|
|
103
|
+
return ("A public link cannot open your asset library. Remove the resource " +
|
|
104
|
+
"bindings and publish again.");
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
/** Return the reason a candidate cannot replace a live public release. */
|
|
109
|
+
export async function publicReleasePreflight(applicationId, candidate) {
|
|
110
|
+
const blocked = "workflows" in candidate
|
|
111
|
+
? releaseBlockedReason(candidate)
|
|
112
|
+
: publicReleaseDocumentBlockedReason(candidate.document);
|
|
113
|
+
if (blocked) {
|
|
114
|
+
if (blocked.includes("script operation")) {
|
|
115
|
+
return "This app has a live public link. Script operations cannot be published to that audience.";
|
|
116
|
+
}
|
|
117
|
+
if (blocked.includes("asset library")) {
|
|
118
|
+
return "This app has a live public link. Resource bindings cannot be published to that audience.";
|
|
119
|
+
}
|
|
120
|
+
return blocked;
|
|
121
|
+
}
|
|
122
|
+
return hasFiniteBudgetLimit(await getApplicationBudget(applicationId))
|
|
123
|
+
? null
|
|
124
|
+
: "This app has a live public link. Configure a finite budget before publishing again.";
|
|
125
|
+
}
|
|
126
|
+
const toResponse = (deployment, blockedReason) => applicationDeployment.parse({
|
|
127
|
+
applicationId: deployment.application_id,
|
|
128
|
+
token: deployment.token,
|
|
129
|
+
createdAt: deployment.created_at,
|
|
130
|
+
revokedAt: deployment.revoked_at,
|
|
131
|
+
blockedReason
|
|
132
|
+
});
|
|
133
|
+
/** What the app's link would serve right now, and why it might serve nothing. */
|
|
134
|
+
async function currentBlockedReason(applicationId, userId) {
|
|
135
|
+
const release = await releasedApplicationRelease(applicationId, userId);
|
|
136
|
+
if (!release)
|
|
137
|
+
return "This app has no released version to serve.";
|
|
138
|
+
const releaseBlocked = releaseBlockedReason(applicationReleaseResponse.parse(release));
|
|
139
|
+
if (releaseBlocked)
|
|
140
|
+
return releaseBlocked;
|
|
141
|
+
return hasFiniteBudgetLimit(await getApplicationBudget(applicationId))
|
|
142
|
+
? null
|
|
143
|
+
: PUBLIC_BUDGET_REQUIRED;
|
|
144
|
+
}
|
|
145
|
+
/** The app's live deployment, or null when it has none. Owner only. */
|
|
146
|
+
export async function getApplicationDeployment(userId, applicationId) {
|
|
147
|
+
requireEnabled();
|
|
148
|
+
await loadOwnedApplication(userId, applicationId);
|
|
149
|
+
const deployment = await ApplicationDeployment.findLive(applicationId);
|
|
150
|
+
if (!deployment)
|
|
151
|
+
return null;
|
|
152
|
+
return toResponse(deployment, await currentBlockedReason(applicationId, userId));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Deploy the app, returning the link — the one already out there when it has
|
|
156
|
+
* one, so re-deploying never invalidates a URL somebody pasted somewhere.
|
|
157
|
+
*
|
|
158
|
+
* An app with nothing released is refused rather than deployed dark: the
|
|
159
|
+
* public page serves the release, so a deployment without one is a link that
|
|
160
|
+
* resolves to nothing, and the owner should hear that now instead of from
|
|
161
|
+
* whoever they sent it to.
|
|
162
|
+
*/
|
|
163
|
+
export async function deployApplication(userId, applicationId) {
|
|
164
|
+
requireEnabled();
|
|
165
|
+
const app = await loadOwnedApplication(userId, applicationId);
|
|
166
|
+
const release = await releasedApplicationRelease(applicationId, userId);
|
|
167
|
+
if (!release) {
|
|
168
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, "Publish a version of this app before deploying it");
|
|
169
|
+
}
|
|
170
|
+
// A release the public runtime cannot execute is refused now rather than
|
|
171
|
+
// deployed dark: the owner is here, and whoever they would have sent the
|
|
172
|
+
// link to is not.
|
|
173
|
+
const blocked = releaseBlockedReason(applicationReleaseResponse.parse(release));
|
|
174
|
+
if (blocked)
|
|
175
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, blocked);
|
|
176
|
+
if (!hasFiniteBudgetLimit(await getApplicationBudget(applicationId))) {
|
|
177
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, PUBLIC_BUDGET_REQUIRED);
|
|
178
|
+
}
|
|
179
|
+
const deployment = await ApplicationDeployment.ensure({
|
|
180
|
+
applicationId: app.id,
|
|
181
|
+
userId
|
|
182
|
+
});
|
|
183
|
+
return toResponse(deployment, null);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Withdraw the link. Sessions already minted keep running until they expire —
|
|
187
|
+
* they are signed, not stored — so this stops new visitors rather than
|
|
188
|
+
* interrupting one mid-run.
|
|
189
|
+
*/
|
|
190
|
+
export async function undeployApplication(userId, applicationId) {
|
|
191
|
+
requireEnabled();
|
|
192
|
+
await loadOwnedApplication(userId, applicationId);
|
|
193
|
+
await ApplicationDeployment.revokeAllLive(applicationId);
|
|
194
|
+
return { ok: true };
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The deployment behind a token, with its app and current release, or the
|
|
198
|
+
* single 404 every failure shares.
|
|
199
|
+
*
|
|
200
|
+
* The release is read fresh on every request rather than pinned to the
|
|
201
|
+
* deployment: publishing a new version is how an owner updates a deployed app,
|
|
202
|
+
* and a link that kept serving the version that was current when it was minted
|
|
203
|
+
* would make publish a no-op for exactly the audience it was published for.
|
|
204
|
+
*/
|
|
205
|
+
async function resolveDeployment(token) {
|
|
206
|
+
// The visitor gets the same 404 for a server that does not offer
|
|
207
|
+
// deployments as for a token that was never minted. `requireEnabled`'s
|
|
208
|
+
// explanation is for the owner, who is asking about their own app; telling
|
|
209
|
+
// a stranger which servers have the surface turned off tells them where to
|
|
210
|
+
// go looking for links.
|
|
211
|
+
if (!appDeploymentsEnabled())
|
|
212
|
+
notAvailable();
|
|
213
|
+
const deployment = await ApplicationDeployment.findLiveByToken(token);
|
|
214
|
+
if (!deployment)
|
|
215
|
+
notAvailable();
|
|
216
|
+
const application = await Application.findById(deployment.application_id);
|
|
217
|
+
// The deployment cascades with its app, so a missing app here means a
|
|
218
|
+
// database that lost the cascade rather than a normal state — either way the
|
|
219
|
+
// link serves nothing.
|
|
220
|
+
if (!application || application.user_id !== deployment.user_id) {
|
|
221
|
+
notAvailable();
|
|
222
|
+
}
|
|
223
|
+
const release = await releasedApplicationRelease(deployment.application_id, deployment.user_id);
|
|
224
|
+
if (!release)
|
|
225
|
+
notAvailable();
|
|
226
|
+
// A version published after the link was minted can be one the public
|
|
227
|
+
// runtime cannot execute. The link stops serving rather than serving
|
|
228
|
+
// something that half-works; the owner sees why in `blockedReason`, and the
|
|
229
|
+
// visitor gets the same 404 every other failure gives them.
|
|
230
|
+
if (releaseBlockedReason(parsePublicRelease(release)) ||
|
|
231
|
+
!hasFiniteBudgetLimit(await getApplicationBudget(deployment.application_id))) {
|
|
232
|
+
notAvailable();
|
|
233
|
+
}
|
|
234
|
+
return { deployment, application, release };
|
|
235
|
+
}
|
|
236
|
+
/** What the public page renders: the app's identity and the release to run. */
|
|
237
|
+
export async function getPublicApplication(token) {
|
|
238
|
+
const { application, release } = await resolveDeployment(token);
|
|
239
|
+
try {
|
|
240
|
+
const publicRelease = parsePublicRelease(release);
|
|
241
|
+
const document = {
|
|
242
|
+
...publicRelease.document,
|
|
243
|
+
ui: await resolvePublicAppStaticAssetLocators(publicRelease.document.ui, application.user_id),
|
|
244
|
+
variables: await resolvePublicAppStaticAssetLocators(publicRelease.document.variables, application.user_id)
|
|
245
|
+
};
|
|
246
|
+
return publicApplication.parse({
|
|
247
|
+
id: application.id,
|
|
248
|
+
name: application.name,
|
|
249
|
+
description: application.description,
|
|
250
|
+
release: { ...publicRelease, document }
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (error instanceof ZodError)
|
|
255
|
+
notAvailable();
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Mint the credential the public page runs on.
|
|
261
|
+
*
|
|
262
|
+
* It authenticates as the app's owner — their graphs, their keys, their
|
|
263
|
+
* budget — and carries the application id, which is what every consumer
|
|
264
|
+
* narrows on. Nothing about the visitor is recorded: a session is derived
|
|
265
|
+
* from the deployment and the clock, so it needs no row and revoking the
|
|
266
|
+
* deployment is the only state there is to change.
|
|
267
|
+
*/
|
|
268
|
+
export async function createPublicApplicationSession(token, signingKey) {
|
|
269
|
+
const { deployment, release } = await resolveDeployment(token);
|
|
270
|
+
const minted = mintAppSessionToken(signingKey, {
|
|
271
|
+
userId: deployment.user_id,
|
|
272
|
+
applicationId: deployment.application_id,
|
|
273
|
+
version: release.version
|
|
274
|
+
}, APP_DEPLOYMENT_SESSION_TTL_SECONDS);
|
|
275
|
+
return publicApplicationSession.parse({
|
|
276
|
+
token: minted.token,
|
|
277
|
+
expiresAt: minted.expiresAt,
|
|
278
|
+
applicationId: deployment.application_id,
|
|
279
|
+
version: release.version
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=app-deployment-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-deployment-service.js","sourceRoot":"","sources":["../../src/lib/app-deployment-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kernel runner every server-side app simulation uses. It moved to
|
|
3
|
+
* `@nodetool-ai/execution/service`; this module is the server's import site.
|
|
4
|
+
*/
|
|
5
|
+
export { createAppServerRunner } from "@nodetool-ai/execution/service";
|
|
6
|
+
export type { AppServerRunnerOptions } from "@nodetool-ai/execution/service";
|
|
7
|
+
//# sourceMappingURL=app-run-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-run-server.d.ts","sourceRoot":"","sources":["../../src/lib/app-run-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kernel runner every server-side app simulation uses. It moved to
|
|
3
|
+
* `@nodetool-ai/execution/service`; this module is the server's import site.
|
|
4
|
+
*/
|
|
5
|
+
export { createAppServerRunner } from "@nodetool-ai/execution/service";
|
|
6
|
+
//# sourceMappingURL=app-run-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-run-server.js","sourceRoot":"","sources":["../../src/lib/app-run-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a websocket connection opened by a deployed app's visitor may do.
|
|
3
|
+
*
|
|
4
|
+
* The connection authenticates as the app's owner (see the `nda_` token in
|
|
5
|
+
* `@nodetool-ai/auth`), so on the wire it looks like any other session. It is
|
|
6
|
+
* not one: the person holding it was given a link to one app, and the account
|
|
7
|
+
* behind it is a stranger's. Everything below is written as an allowlist for
|
|
8
|
+
* that reason — a command added to the runner later is refused here until
|
|
9
|
+
* someone decides it belongs, rather than reaching a stranger's account
|
|
10
|
+
* because nobody remembered this file.
|
|
11
|
+
*
|
|
12
|
+
* Two rules, and they are separate on purpose. Which *commands* are allowed is
|
|
13
|
+
* a fixed set. Which *graph* a run executes is not a matter of trust at all:
|
|
14
|
+
* the client's graph is discarded and the release's pinned graph is
|
|
15
|
+
* substituted, so a visitor who edits the payload runs the same thing as one
|
|
16
|
+
* who does not.
|
|
17
|
+
*/
|
|
18
|
+
import type { RunJobRequest } from "../websocket-client-session.js";
|
|
19
|
+
/** The app this connection may act on, and the release it loaded. */
|
|
20
|
+
export interface AppSessionScope {
|
|
21
|
+
applicationId: string;
|
|
22
|
+
version: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Just enough of a release to decide what a visitor may run: which version
|
|
26
|
+
* they are running, and the graph each of its workflows was frozen to. Named
|
|
27
|
+
* here rather than imported so this module depends on the two fields it
|
|
28
|
+
* actually reads — a stored graph arrives as JSON either way.
|
|
29
|
+
*/
|
|
30
|
+
export interface RunnableRelease {
|
|
31
|
+
version: number;
|
|
32
|
+
document: {
|
|
33
|
+
operations: ReadonlyArray<{
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
workflowId: string;
|
|
37
|
+
target?: {
|
|
38
|
+
kind: "workflow" | "script";
|
|
39
|
+
};
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
workflows: ReadonlyArray<{
|
|
43
|
+
workflowId: string;
|
|
44
|
+
graph: {
|
|
45
|
+
nodes: Array<Record<string, unknown>>;
|
|
46
|
+
edges: Array<Record<string, unknown>>;
|
|
47
|
+
} | null;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The commands a deployed app needs: start a run, feed it, stop it, and see
|
|
52
|
+
* where it got to. Everything else the runner answers — chat, inference,
|
|
53
|
+
* asset and workflow listings, node metadata writes, model management — reads
|
|
54
|
+
* or spends the owner's account beyond the one app, so none of it is here.
|
|
55
|
+
*
|
|
56
|
+
* `reconnect_job` is included because a reload mid-run is ordinary use, and it
|
|
57
|
+
* only replays a job this connection's user owns.
|
|
58
|
+
*/
|
|
59
|
+
export declare const APP_SESSION_COMMANDS: ReadonlySet<string>;
|
|
60
|
+
export declare function isAppSessionCommandAllowed(command: string): boolean;
|
|
61
|
+
/** A run this connection may not make, and the reason to send back. */
|
|
62
|
+
export interface AppSessionRunRefusal {
|
|
63
|
+
refused: string;
|
|
64
|
+
}
|
|
65
|
+
export declare function isRunRefusal(result: RunJobRequest | AppSessionRunRefusal): result is AppSessionRunRefusal;
|
|
66
|
+
/**
|
|
67
|
+
* Rewrite a visitor's run request into the only run it is allowed to make.
|
|
68
|
+
*
|
|
69
|
+
* Built field by field rather than by spreading the request, for the same
|
|
70
|
+
* reason the command set is an allowlist: a field added to `RunJobRequest`
|
|
71
|
+
* later must not reach a stranger's account because nobody remembered this
|
|
72
|
+
* file. What a visitor gets to say is what an app *is* — which operation to
|
|
73
|
+
* run, and what to run it on:
|
|
74
|
+
*
|
|
75
|
+
* `params` the inputs. Supplying them is the whole point.
|
|
76
|
+
* `operation_id` which published workflow operation to run.
|
|
77
|
+
*
|
|
78
|
+
* Everything else the wire carries is the server's. `job_id` names the run so
|
|
79
|
+
* the client can follow it, and the runner refuses one that is already taken.
|
|
80
|
+
* `workflow_id`, `job_name`, and `application_id` come
|
|
81
|
+
* from the signed session and `application_version` from the release, so a
|
|
82
|
+
* visitor cannot bill a run to another app or file it under a version that
|
|
83
|
+
* never shipped. `graph` comes from the release, so what runs is what the
|
|
84
|
+
* owner published — a client that sends a wider graph, or one with an
|
|
85
|
+
* exfiltrating node in it, gets the published graph instead. `supervise` is
|
|
86
|
+
* dropped because it puts a second model on the owner's bill;
|
|
87
|
+
* `execution_options`, `concurrent`, `auth_token` and `user_id` are dropped
|
|
88
|
+
* because none of them is a visitor's to set.
|
|
89
|
+
*/
|
|
90
|
+
export declare function confineRunRequest(req: RunJobRequest, scope: AppSessionScope, release: RunnableRelease): RunJobRequest | AppSessionRunRefusal;
|
|
91
|
+
//# sourceMappingURL=app-session-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-session-scope.d.ts","sourceRoot":"","sources":["../../src/lib/app-session-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,UAAU,EAAE,aAAa,CAAC;YACxB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE;gBAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;aAAE,CAAC;SAC1C,CAAC,CAAC;KACJ,CAAC;IACF,SAAS,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACtC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SACvC,GAAG,IAAI,CAAC;KACV,CAAC,CAAC;CACJ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAOnD,CAAC;AAEH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,GAAG,oBAAoB,GAC3C,MAAM,IAAI,oBAAoB,CAEhC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,eAAe,GACvB,aAAa,GAAG,oBAAoB,CA6BtC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a websocket connection opened by a deployed app's visitor may do.
|
|
3
|
+
*
|
|
4
|
+
* The connection authenticates as the app's owner (see the `nda_` token in
|
|
5
|
+
* `@nodetool-ai/auth`), so on the wire it looks like any other session. It is
|
|
6
|
+
* not one: the person holding it was given a link to one app, and the account
|
|
7
|
+
* behind it is a stranger's. Everything below is written as an allowlist for
|
|
8
|
+
* that reason — a command added to the runner later is refused here until
|
|
9
|
+
* someone decides it belongs, rather than reaching a stranger's account
|
|
10
|
+
* because nobody remembered this file.
|
|
11
|
+
*
|
|
12
|
+
* Two rules, and they are separate on purpose. Which *commands* are allowed is
|
|
13
|
+
* a fixed set. Which *graph* a run executes is not a matter of trust at all:
|
|
14
|
+
* the client's graph is discarded and the release's pinned graph is
|
|
15
|
+
* substituted, so a visitor who edits the payload runs the same thing as one
|
|
16
|
+
* who does not.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The commands a deployed app needs: start a run, feed it, stop it, and see
|
|
20
|
+
* where it got to. Everything else the runner answers — chat, inference,
|
|
21
|
+
* asset and workflow listings, node metadata writes, model management — reads
|
|
22
|
+
* or spends the owner's account beyond the one app, so none of it is here.
|
|
23
|
+
*
|
|
24
|
+
* `reconnect_job` is included because a reload mid-run is ordinary use, and it
|
|
25
|
+
* only replays a job this connection's user owns.
|
|
26
|
+
*/
|
|
27
|
+
export const APP_SESSION_COMMANDS = new Set([
|
|
28
|
+
"run_job",
|
|
29
|
+
"reconnect_job",
|
|
30
|
+
"cancel_job",
|
|
31
|
+
"stream_input",
|
|
32
|
+
"end_input_stream",
|
|
33
|
+
"get_status"
|
|
34
|
+
]);
|
|
35
|
+
export function isAppSessionCommandAllowed(command) {
|
|
36
|
+
return APP_SESSION_COMMANDS.has(command);
|
|
37
|
+
}
|
|
38
|
+
export function isRunRefusal(result) {
|
|
39
|
+
return "refused" in result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Rewrite a visitor's run request into the only run it is allowed to make.
|
|
43
|
+
*
|
|
44
|
+
* Built field by field rather than by spreading the request, for the same
|
|
45
|
+
* reason the command set is an allowlist: a field added to `RunJobRequest`
|
|
46
|
+
* later must not reach a stranger's account because nobody remembered this
|
|
47
|
+
* file. What a visitor gets to say is what an app *is* — which operation to
|
|
48
|
+
* run, and what to run it on:
|
|
49
|
+
*
|
|
50
|
+
* `params` the inputs. Supplying them is the whole point.
|
|
51
|
+
* `operation_id` which published workflow operation to run.
|
|
52
|
+
*
|
|
53
|
+
* Everything else the wire carries is the server's. `job_id` names the run so
|
|
54
|
+
* the client can follow it, and the runner refuses one that is already taken.
|
|
55
|
+
* `workflow_id`, `job_name`, and `application_id` come
|
|
56
|
+
* from the signed session and `application_version` from the release, so a
|
|
57
|
+
* visitor cannot bill a run to another app or file it under a version that
|
|
58
|
+
* never shipped. `graph` comes from the release, so what runs is what the
|
|
59
|
+
* owner published — a client that sends a wider graph, or one with an
|
|
60
|
+
* exfiltrating node in it, gets the published graph instead. `supervise` is
|
|
61
|
+
* dropped because it puts a second model on the owner's bill;
|
|
62
|
+
* `execution_options`, `concurrent`, `auth_token` and `user_id` are dropped
|
|
63
|
+
* because none of them is a visitor's to set.
|
|
64
|
+
*/
|
|
65
|
+
export function confineRunRequest(req, scope, release) {
|
|
66
|
+
const operationId = req.operation_id;
|
|
67
|
+
if (!operationId) {
|
|
68
|
+
return { refused: "This app run did not name an operation" };
|
|
69
|
+
}
|
|
70
|
+
const operation = release.document.operations.find((entry) => entry.id === operationId);
|
|
71
|
+
if (!operation) {
|
|
72
|
+
return { refused: "This app does not publish that operation" };
|
|
73
|
+
}
|
|
74
|
+
if (operation.target?.kind === "script" || !operation.workflowId) {
|
|
75
|
+
return { refused: "This app operation is not a workflow" };
|
|
76
|
+
}
|
|
77
|
+
const pinned = release.workflows.find((entry) => entry.workflowId === operation.workflowId);
|
|
78
|
+
if (!pinned?.graph) {
|
|
79
|
+
return { refused: "This app does not publish that workflow" };
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
workflow_id: operation.workflowId,
|
|
83
|
+
job_name: operation.name,
|
|
84
|
+
params: req.params,
|
|
85
|
+
operation_id: operation.id,
|
|
86
|
+
application_id: scope.applicationId,
|
|
87
|
+
application_version: release.version,
|
|
88
|
+
graph: pinned.graph
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=app-session-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-session-scope.js","sourceRoot":"","sources":["../../src/lib/app-session-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuCH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,SAAS;IACT,eAAe;IACf,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,OAAO,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAOD,MAAM,UAAU,YAAY,CAC1B,MAA4C;IAE5C,OAAO,SAAS,IAAI,MAAM,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAkB,EAClB,KAAsB,EACtB,OAAwB;IAExB,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CACpC,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,CACrD,CAAC;IACF,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IAChE,CAAC;IACD,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,UAAU;QACjC,QAAQ,EAAE,SAAS,CAAC,IAAI;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,SAAS,CAAC,EAAE;QAC1B,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,mBAAmB,EAAE,OAAO,CAAC,OAAO;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
|