@nodetool-ai/websocket 0.7.0-rc.23 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detachable workflow runs.
|
|
3
|
+
*
|
|
4
|
+
* The WebSocket runner is per-connection, so before this module existed a
|
|
5
|
+
* dropped socket killed every in-flight run (`disconnect()` →
|
|
6
|
+
* `job.session.cancel()` for each entry of `activeJobs`): a laptop lid-close
|
|
7
|
+
* threw away minutes of paid GPU work, and `reconnect_job` from a fresh
|
|
8
|
+
* connection — a fresh `UnifiedWebSocketRunner`, with an empty `activeJobs` —
|
|
9
|
+
* could only read the persisted row, reporting even a completed run as
|
|
10
|
+
* `job_update failed` with "replay is unavailable". A {@link JobRunSession}
|
|
11
|
+
* decouples the run from the socket, exactly as {@link ChatTurnSession} does
|
|
12
|
+
* for a chat turn: every frame the run emits is stamped with a monotonically
|
|
13
|
+
* increasing `job_seq` and appended to a bounded buffer, and delivery goes to
|
|
14
|
+
* whichever connection is currently attached — or nowhere, while the client
|
|
15
|
+
* is away. On reconnect the client sends
|
|
16
|
+
* `{command: "reconnect_job", data: {job_id, last_seq}}` and gets the missed
|
|
17
|
+
* tail replayed, followed by live frames if the run is still going.
|
|
18
|
+
*
|
|
19
|
+
* Sessions are keyed by user+job in a process-wide registry. Job ids are
|
|
20
|
+
* unique per run, so — unlike a chat thread — a new run never supersedes an
|
|
21
|
+
* existing session; {@link JobRunRegistry.open} replacing an entry means the
|
|
22
|
+
* same job id was started twice, which is a caller bug, not a turn taking
|
|
23
|
+
* over.
|
|
24
|
+
*
|
|
25
|
+
* Two timers bound a session's life:
|
|
26
|
+
* - detach grace: a running job nobody is attached to is cancelled after
|
|
27
|
+
* `NODETOOL_JOB_DETACH_GRACE_MS` (default 10 min) so an abandoned client
|
|
28
|
+
* cannot leave a workflow burning provider spend forever;
|
|
29
|
+
* - retention: a finished session is kept for
|
|
30
|
+
* `NODETOOL_JOB_REPLAY_RETENTION_MS` (default 5 min) so a client that
|
|
31
|
+
* reconnects just after the run ended still gets the tail, then dropped.
|
|
32
|
+
*
|
|
33
|
+
* Terminal state is persisted to the `jobs` table independently of this
|
|
34
|
+
* buffer, so an expired or truncated replay degrades to `reconnect_job`'s
|
|
35
|
+
* persisted-row fallback — the run's real status, just without its events.
|
|
36
|
+
*/
|
|
37
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
38
|
+
const log = createLogger("nodetool.websocket.job-run-registry");
|
|
39
|
+
function envInt(name, fallback) {
|
|
40
|
+
const raw = process.env[name];
|
|
41
|
+
if (!raw)
|
|
42
|
+
return fallback;
|
|
43
|
+
const parsed = Number.parseInt(raw, 10);
|
|
44
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
45
|
+
}
|
|
46
|
+
const MAX_BUFFERED_EVENTS = () => envInt("NODETOOL_JOB_REPLAY_BUFFER_EVENTS", 2000);
|
|
47
|
+
const DETACH_GRACE_MS = () => envInt("NODETOOL_JOB_DETACH_GRACE_MS", 10 * 60 * 1000);
|
|
48
|
+
const RETENTION_MS = () => envInt("NODETOOL_JOB_REPLAY_RETENTION_MS", 5 * 60 * 1000);
|
|
49
|
+
export class JobRunSession {
|
|
50
|
+
hooks;
|
|
51
|
+
onDrop;
|
|
52
|
+
onFinish;
|
|
53
|
+
userId;
|
|
54
|
+
jobId;
|
|
55
|
+
workflowId;
|
|
56
|
+
status = "running";
|
|
57
|
+
/** The run's outcome, once known. Reported in the `job_resumed` header. */
|
|
58
|
+
terminalStatus = null;
|
|
59
|
+
seq = 0;
|
|
60
|
+
buffer = [];
|
|
61
|
+
/** Highest seq evicted from the bounded buffer (0 = nothing evicted). */
|
|
62
|
+
evictedThroughSeq = 0;
|
|
63
|
+
target = null;
|
|
64
|
+
/**
|
|
65
|
+
* Serializes delivery: replayed frames enqueue before any live frame that
|
|
66
|
+
* arrives after attach, so the client always sees seq order. Unbounded —
|
|
67
|
+
* a slow socket grows the chain rather than applying backpressure to the
|
|
68
|
+
* run; the buffer above is what bounds memory. Mirrored from the chat
|
|
69
|
+
* turn's chain.
|
|
70
|
+
*/
|
|
71
|
+
deliveryChain = Promise.resolve();
|
|
72
|
+
detachTimer = null;
|
|
73
|
+
retentionTimer = null;
|
|
74
|
+
constructor(userId, jobId, workflowId, hooks, onDrop,
|
|
75
|
+
/** Told when the run settles, so the registry can answer `drained`. */
|
|
76
|
+
onFinish = () => { }) {
|
|
77
|
+
this.hooks = hooks;
|
|
78
|
+
this.onDrop = onDrop;
|
|
79
|
+
this.onFinish = onFinish;
|
|
80
|
+
this.userId = userId;
|
|
81
|
+
this.jobId = jobId;
|
|
82
|
+
this.workflowId = workflowId;
|
|
83
|
+
}
|
|
84
|
+
get lastSeq() {
|
|
85
|
+
return this.seq;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stamp, buffer, and (when a connection is attached) deliver one frame.
|
|
89
|
+
* Returns the stamped copy.
|
|
90
|
+
*/
|
|
91
|
+
emit(message) {
|
|
92
|
+
this.seq += 1;
|
|
93
|
+
const stamped = { ...message, job_seq: this.seq };
|
|
94
|
+
this.buffer.push({ seq: this.seq, message: stamped });
|
|
95
|
+
const max = MAX_BUFFERED_EVENTS();
|
|
96
|
+
while (this.buffer.length > max) {
|
|
97
|
+
const evicted = this.buffer.shift();
|
|
98
|
+
if (evicted)
|
|
99
|
+
this.evictedThroughSeq = evicted.seq;
|
|
100
|
+
}
|
|
101
|
+
const target = this.target;
|
|
102
|
+
if (target) {
|
|
103
|
+
this.enqueueDelivery(() => target.deliver(stamped));
|
|
104
|
+
}
|
|
105
|
+
return stamped;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Attach a connection and hand back the frames it missed. Live frames
|
|
109
|
+
* emitted after this call are delivered to the new target, strictly after
|
|
110
|
+
* the returned replay is delivered (both ride {@link deliveryChain} when
|
|
111
|
+
* sent via {@link deliverReplay}).
|
|
112
|
+
*/
|
|
113
|
+
attach(target, lastSeq) {
|
|
114
|
+
this.clearDetachTimer();
|
|
115
|
+
this.target = target;
|
|
116
|
+
const replay = this.buffer
|
|
117
|
+
.filter((e) => e.seq > lastSeq)
|
|
118
|
+
.map((e) => e.message);
|
|
119
|
+
return { replay, incomplete: lastSeq < this.evictedThroughSeq };
|
|
120
|
+
}
|
|
121
|
+
/** Deliver frames on the session's ordered delivery chain. */
|
|
122
|
+
deliverReplay(target, frames) {
|
|
123
|
+
for (const frame of frames) {
|
|
124
|
+
this.enqueueDelivery(() => target.deliver(frame));
|
|
125
|
+
}
|
|
126
|
+
return this.deliveryChain;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The attached connection went away. A running job keeps executing and
|
|
130
|
+
* buffering; if nobody reattaches within the grace window the run is
|
|
131
|
+
* cancelled so it cannot burn spend unattended forever.
|
|
132
|
+
*/
|
|
133
|
+
detach(target) {
|
|
134
|
+
if (target && this.target !== target)
|
|
135
|
+
return;
|
|
136
|
+
this.target = null;
|
|
137
|
+
if (this.status !== "running")
|
|
138
|
+
return;
|
|
139
|
+
this.clearDetachTimer();
|
|
140
|
+
this.detachTimer = setTimeout(() => {
|
|
141
|
+
log.info("Detached job run expired, cancelling", { jobId: this.jobId });
|
|
142
|
+
this.cancel();
|
|
143
|
+
}, DETACH_GRACE_MS());
|
|
144
|
+
this.detachTimer.unref?.();
|
|
145
|
+
}
|
|
146
|
+
/** Cancel the run (client stop, or detach grace elapsed). */
|
|
147
|
+
cancel() {
|
|
148
|
+
this.hooks.cancel();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The run reached a terminal state. The session sticks around (still
|
|
152
|
+
* replayable) for the retention window, then drops out of the registry.
|
|
153
|
+
*/
|
|
154
|
+
finish(terminalStatus) {
|
|
155
|
+
if (terminalStatus)
|
|
156
|
+
this.terminalStatus = terminalStatus;
|
|
157
|
+
if (this.status === "finished")
|
|
158
|
+
return;
|
|
159
|
+
this.status = "finished";
|
|
160
|
+
this.clearDetachTimer();
|
|
161
|
+
this.retentionTimer = setTimeout(() => this.onDrop(this), RETENTION_MS());
|
|
162
|
+
this.retentionTimer.unref?.();
|
|
163
|
+
this.onFinish();
|
|
164
|
+
}
|
|
165
|
+
/** Release timers when the registry drops the session. */
|
|
166
|
+
dispose() {
|
|
167
|
+
this.clearDetachTimer();
|
|
168
|
+
if (this.retentionTimer) {
|
|
169
|
+
clearTimeout(this.retentionTimer);
|
|
170
|
+
this.retentionTimer = null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
clearDetachTimer() {
|
|
174
|
+
if (this.detachTimer) {
|
|
175
|
+
clearTimeout(this.detachTimer);
|
|
176
|
+
this.detachTimer = null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
enqueueDelivery(fn) {
|
|
180
|
+
this.deliveryChain = this.deliveryChain.then(fn).catch((err) => {
|
|
181
|
+
log.warn("Job run delivery failed", {
|
|
182
|
+
jobId: this.jobId,
|
|
183
|
+
error: err instanceof Error ? err.message : String(err)
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export class JobRunRegistry {
|
|
189
|
+
sessions = new Map();
|
|
190
|
+
/** Resolvers waiting for {@link runningCount} to reach zero. */
|
|
191
|
+
drainWaiters = new Set();
|
|
192
|
+
key(userId, jobId) {
|
|
193
|
+
return `${userId}\u0000${jobId}`;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Open a session for a starting run. Job ids are unique, so an entry that
|
|
197
|
+
* already exists can only mean the same id was started twice — cancel the
|
|
198
|
+
* stale run before dropping it. Dropping alone would leave it executing
|
|
199
|
+
* with nothing that can reach it: no grace timer, no cancel path, no
|
|
200
|
+
* replay.
|
|
201
|
+
*/
|
|
202
|
+
open(userId, jobId, workflowId, hooks) {
|
|
203
|
+
const key = this.key(userId, jobId);
|
|
204
|
+
const existing = this.sessions.get(key);
|
|
205
|
+
if (existing) {
|
|
206
|
+
log.warn("Job session reopened for an id already running", { jobId });
|
|
207
|
+
if (existing.status === "running")
|
|
208
|
+
existing.cancel();
|
|
209
|
+
this.drop(existing);
|
|
210
|
+
}
|
|
211
|
+
const session = new JobRunSession(userId, jobId, workflowId, hooks, (s) => this.drop(s), () => this.notifyDrainWaiters());
|
|
212
|
+
this.sessions.set(key, session);
|
|
213
|
+
return session;
|
|
214
|
+
}
|
|
215
|
+
get(userId, jobId) {
|
|
216
|
+
return this.sessions.get(this.key(userId, jobId)) ?? null;
|
|
217
|
+
}
|
|
218
|
+
/** Every run this process is still executing. The cancel poller's input. */
|
|
219
|
+
runningSessions() {
|
|
220
|
+
return [...this.sessions.values()].filter((s) => s.status === "running");
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Runs still executing for a user, across every connection. The
|
|
224
|
+
* concurrency caps count runs, not sockets: a detached run still occupies
|
|
225
|
+
* a slot, or a client could reconnect its way past the cap simply by
|
|
226
|
+
* abandoning sockets.
|
|
227
|
+
*/
|
|
228
|
+
countRunning(userId) {
|
|
229
|
+
let count = 0;
|
|
230
|
+
for (const session of this.sessions.values()) {
|
|
231
|
+
if (session.userId === userId && session.status === "running")
|
|
232
|
+
count += 1;
|
|
233
|
+
}
|
|
234
|
+
return count;
|
|
235
|
+
}
|
|
236
|
+
/** Same, narrowed to one workflow — the per-workflow cap's denominator. */
|
|
237
|
+
countRunningForWorkflow(userId, workflowId) {
|
|
238
|
+
let count = 0;
|
|
239
|
+
for (const session of this.sessions.values()) {
|
|
240
|
+
if (session.userId === userId &&
|
|
241
|
+
session.workflowId === workflowId &&
|
|
242
|
+
session.status === "running") {
|
|
243
|
+
count += 1;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return count;
|
|
247
|
+
}
|
|
248
|
+
/** Runs this process is still executing. What a drain waits on. */
|
|
249
|
+
runningCount() {
|
|
250
|
+
return this.runningSessions().length;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Cancel every run still executing, through the same hooks a client's
|
|
254
|
+
* `cancel_job` reaches. Returns how many were cancelled.
|
|
255
|
+
*/
|
|
256
|
+
cancelAll() {
|
|
257
|
+
const running = this.runningSessions();
|
|
258
|
+
for (const session of running)
|
|
259
|
+
session.cancel();
|
|
260
|
+
return running.length;
|
|
261
|
+
}
|
|
262
|
+
/** Cancel this process's runs that belong to a project being deleted. */
|
|
263
|
+
cancelJobs(userId, jobIds) {
|
|
264
|
+
let count = 0;
|
|
265
|
+
for (const session of this.runningSessions()) {
|
|
266
|
+
if (session.userId !== userId || !jobIds.has(session.jobId))
|
|
267
|
+
continue;
|
|
268
|
+
session.cancel();
|
|
269
|
+
count += 1;
|
|
270
|
+
}
|
|
271
|
+
return count;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Resolve true once no run is executing, false when `timeoutMs` elapses
|
|
275
|
+
* first. A run is executing until its terminal `job_update` has been
|
|
276
|
+
* persisted, which is what `finish` marks.
|
|
277
|
+
*/
|
|
278
|
+
drained(timeoutMs) {
|
|
279
|
+
if (this.runningCount() === 0)
|
|
280
|
+
return Promise.resolve(true);
|
|
281
|
+
return new Promise((resolve) => {
|
|
282
|
+
const waiter = () => {
|
|
283
|
+
if (this.runningCount() > 0)
|
|
284
|
+
return;
|
|
285
|
+
clearTimeout(timer);
|
|
286
|
+
this.drainWaiters.delete(waiter);
|
|
287
|
+
resolve(true);
|
|
288
|
+
};
|
|
289
|
+
const timer = setTimeout(() => {
|
|
290
|
+
this.drainWaiters.delete(waiter);
|
|
291
|
+
resolve(false);
|
|
292
|
+
}, timeoutMs);
|
|
293
|
+
timer.unref?.();
|
|
294
|
+
this.drainWaiters.add(waiter);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
notifyDrainWaiters() {
|
|
298
|
+
for (const waiter of [...this.drainWaiters])
|
|
299
|
+
waiter();
|
|
300
|
+
}
|
|
301
|
+
drop(session) {
|
|
302
|
+
const key = this.key(session.userId, session.jobId);
|
|
303
|
+
if (this.sessions.get(key) === session) {
|
|
304
|
+
this.sessions.delete(key);
|
|
305
|
+
}
|
|
306
|
+
session.dispose();
|
|
307
|
+
this.notifyDrainWaiters();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** Process-wide registry: sessions survive their originating connection. */
|
|
311
|
+
export const jobRunRegistry = new JobRunRegistry();
|
|
312
|
+
//# sourceMappingURL=job-run-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-run-registry.js","sourceRoot":"","sources":["../src/job-run-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /api/applications/build` — the Fastify-facing half of the app build
|
|
3
|
+
* service. The engine moved to `@nodetool-ai/agents`
|
|
4
|
+
* (`src/app-build/build-service.ts`), because `buildApp` lives there. What
|
|
5
|
+
* stays here is the registry the server bootstraps and the translation of the
|
|
6
|
+
* service's refusals into API errors.
|
|
7
|
+
*/
|
|
8
|
+
import { type AppBuildDeps, type AppBuildRequest } from "@nodetool-ai/agents";
|
|
9
|
+
import type { HttpApiOptions } from "../http-api.js";
|
|
10
|
+
export type { AppBuildDeps, AppBuildRequest };
|
|
11
|
+
/**
|
|
12
|
+
* Start a build. Resolves with the `BuildReport` (plus the session id), or —
|
|
13
|
+
* with `poll: true` — with the session id as soon as the build is under way.
|
|
14
|
+
*/
|
|
15
|
+
export declare function runApplicationBuild(userId: string, body: AppBuildRequest, apiOptions?: HttpApiOptions, deps?: AppBuildDeps): Promise<Record<string, unknown>>;
|
|
16
|
+
//# sourceMappingURL=app-build-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-build-service.d.ts","sourceRoot":"","sources":["../../src/lib/app-build-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAa9C;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,EACrB,UAAU,GAAE,cAAmB,EAC/B,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgBlC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /api/applications/build` — the Fastify-facing half of the app build
|
|
3
|
+
* service. The engine moved to `@nodetool-ai/agents`
|
|
4
|
+
* (`src/app-build/build-service.ts`), because `buildApp` lives there. What
|
|
5
|
+
* stays here is the registry the server bootstraps and the translation of the
|
|
6
|
+
* service's refusals into API errors.
|
|
7
|
+
*/
|
|
8
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
9
|
+
import { runApplicationBuild as runApplicationBuildService } from "@nodetool-ai/agents";
|
|
10
|
+
import { AppServiceError } from "@nodetool-ai/execution/service";
|
|
11
|
+
import { ApiErrorCode } from "../error-codes.js";
|
|
12
|
+
import { throwApiError } from "../trpc/error-formatter.js";
|
|
13
|
+
const log = createLogger("nodetool.websocket.app-build");
|
|
14
|
+
let defaultRegistryPromise = null;
|
|
15
|
+
async function getDefaultRegistry() {
|
|
16
|
+
if (!defaultRegistryPromise) {
|
|
17
|
+
defaultRegistryPromise = import("../node-registry-setup.js").then((m) => m.bootstrapNodeRegistry({ log }));
|
|
18
|
+
}
|
|
19
|
+
return defaultRegistryPromise;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Start a build. Resolves with the `BuildReport` (plus the session id), or —
|
|
23
|
+
* with `poll: true` — with the session id as soon as the build is under way.
|
|
24
|
+
*/
|
|
25
|
+
export async function runApplicationBuild(userId, body, apiOptions = {}, deps = {}) {
|
|
26
|
+
const registry = deps.registry ?? apiOptions.registry ?? (await getDefaultRegistry());
|
|
27
|
+
try {
|
|
28
|
+
return await runApplicationBuildService(userId, body, registry, deps);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (error instanceof AppServiceError) {
|
|
32
|
+
throwApiError(error.code === "not_found"
|
|
33
|
+
? ApiErrorCode.NOT_FOUND
|
|
34
|
+
: ApiErrorCode.INVALID_INPUT, error.message);
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=app-build-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-build-service.js","sourceRoot":"","sources":["../../src/lib/app-build-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,mBAAmB,IAAI,0BAA0B,EAGlD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,MAAM,GAAG,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAIzD,IAAI,sBAAsB,GAAiC,IAAI,CAAC;AAEhE,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtE,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC,CACjC,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,IAAqB,EACrB,UAAU,GAAmB,EAAE,EAC/B,IAAI,GAAiB,EAAE;IAEvB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,OAAO,MAAM,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,aAAa,CACX,KAAK,CAAC,IAAI,KAAK,WAAW;gBACxB,CAAC,CAAC,YAAY,CAAC,SAAS;gBACxB,CAAC,CAAC,YAAY,CAAC,aAAa,EAC9B,KAAK,CAAC,OAAO,CACd,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /api/applications/debug` — the Fastify-facing half of the app debug
|
|
3
|
+
* service. The engine moved to `@nodetool-ai/execution/service`, so the agent
|
|
4
|
+
* `debug_app` tool runs the same simulation in-process instead of over HTTP;
|
|
5
|
+
* what stays here is the registry the server bootstraps and the translation of
|
|
6
|
+
* the service's refusals into API errors.
|
|
7
|
+
*/
|
|
8
|
+
import type { AppDebugDeps, AppDebugRequest } from "@nodetool-ai/execution/service";
|
|
9
|
+
import type { HttpApiOptions } from "../http-api.js";
|
|
10
|
+
export type { AppDebugDeps, AppDebugRequest };
|
|
11
|
+
/**
|
|
12
|
+
* Debug an app. Resolves with the compacted report (plus the session id), or —
|
|
13
|
+
* with `poll: true` — with the session id as soon as the run is under way.
|
|
14
|
+
*/
|
|
15
|
+
export declare function runApplicationDebug(userId: string, body: AppDebugRequest, apiOptions?: HttpApiOptions, deps?: AppDebugDeps): Promise<Record<string, unknown>>;
|
|
16
|
+
//# sourceMappingURL=app-debug-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-debug-service.d.ts","sourceRoot":"","sources":["../../src/lib/app-debug-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAKxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAa9C;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,EACrB,UAAU,GAAE,cAAmB,EAC/B,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuBlC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /api/applications/debug` — the Fastify-facing half of the app debug
|
|
3
|
+
* service. The engine moved to `@nodetool-ai/execution/service`, so the agent
|
|
4
|
+
* `debug_app` tool runs the same simulation in-process instead of over HTTP;
|
|
5
|
+
* what stays here is the registry the server bootstraps and the translation of
|
|
6
|
+
* the service's refusals into API errors.
|
|
7
|
+
*/
|
|
8
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
9
|
+
import { createJsScriptAppRunner } from "@nodetool-ai/agents";
|
|
10
|
+
import { getSecret } from "@nodetool-ai/models";
|
|
11
|
+
import { AppServiceError, runApplicationDebug as runApplicationDebugService } from "@nodetool-ai/execution/service";
|
|
12
|
+
import { ApiErrorCode } from "../error-codes.js";
|
|
13
|
+
import { getAssetAdapter } from "./storage.js";
|
|
14
|
+
import { throwApiError } from "../trpc/error-formatter.js";
|
|
15
|
+
const log = createLogger("nodetool.websocket.app-debug");
|
|
16
|
+
let defaultRegistryPromise = null;
|
|
17
|
+
async function getDefaultRegistry() {
|
|
18
|
+
if (!defaultRegistryPromise) {
|
|
19
|
+
defaultRegistryPromise = import("../node-registry-setup.js").then((m) => m.bootstrapNodeRegistry({ log }));
|
|
20
|
+
}
|
|
21
|
+
return defaultRegistryPromise;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Debug an app. Resolves with the compacted report (plus the session id), or —
|
|
25
|
+
* with `poll: true` — with the session id as soon as the run is under way.
|
|
26
|
+
*/
|
|
27
|
+
export async function runApplicationDebug(userId, body, apiOptions = {}, deps = {}) {
|
|
28
|
+
const registry = deps.registry ?? apiOptions.registry ?? (await getDefaultRegistry());
|
|
29
|
+
try {
|
|
30
|
+
return await runApplicationDebugService(userId, body, registry, {
|
|
31
|
+
// A script operation runs the QuickJS sandbox, which lives above the
|
|
32
|
+
// execution package — the server is where both are in reach.
|
|
33
|
+
runScript: createJsScriptAppRunner(userId, { secretResolver: getSecret }),
|
|
34
|
+
// Same store the workflow run path reads `asset://<id>` inputs through.
|
|
35
|
+
assetStorage: getAssetAdapter(),
|
|
36
|
+
...deps
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error instanceof AppServiceError) {
|
|
41
|
+
throwApiError(error.code === "not_found"
|
|
42
|
+
? ApiErrorCode.NOT_FOUND
|
|
43
|
+
: ApiErrorCode.INVALID_INPUT, error.message);
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=app-debug-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-debug-service.js","sourceRoot":"","sources":["../../src/lib/app-debug-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,mBAAmB,IAAI,0BAA0B,EAClD,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,MAAM,GAAG,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAIzD,IAAI,sBAAsB,GAAiC,IAAI,CAAC;AAEhE,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtE,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC,CACjC,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,IAAqB,EACrB,UAAU,GAAmB,EAAE,EAC/B,IAAI,GAAiB,EAAE;IAEvB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,OAAO,MAAM,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9D,qEAAqE;YACrE,6DAA6D;YAC7D,SAAS,EAAE,uBAAuB,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;YACzE,wEAAwE;YACxE,YAAY,EAAE,eAAe,EAAE;YAC/B,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,aAAa,CACX,KAAK,CAAC,IAAI,KAAK,WAAW;gBACxB,CAAC,CAAC,YAAY,CAAC,SAAS;gBACxB,CAAC,CAAC,YAAY,CAAC,aAAa,EAC9B,KAAK,CAAC,OAAO,CACd,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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 { type OperationBinding } from "@nodetool-ai/app-runtime";
|
|
24
|
+
import { type ApplicationDeploymentSchema, type ApplicationReleaseResponse, type PublicApplication, type PublicApplicationSession } from "@nodetool-ai/protocol/api-schemas/applications.js";
|
|
25
|
+
/** Whether this server offers public app deployments at all. */
|
|
26
|
+
export declare function appDeploymentsEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
27
|
+
type PublicReleaseDocument = {
|
|
28
|
+
operations: ReadonlyArray<Pick<OperationBinding, "id" | "name" | "workflowId" | "workflowVersion" | "target">>;
|
|
29
|
+
resources: ReadonlyArray<unknown>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Why a release cannot be served over a public link, or null when it can.
|
|
33
|
+
*
|
|
34
|
+
* A public visitor reaches exactly two things: the release payload and the
|
|
35
|
+
* websocket. Everything else — the tRPC library, the script store, the asset
|
|
36
|
+
* routes — is refused at the door, on purpose. A workflow operation is fine:
|
|
37
|
+
* the release carries its pinned graph, so nothing has to be fetched. A script
|
|
38
|
+
* operation is not: its body lives behind an authenticated call the visitor
|
|
39
|
+
* cannot make, and a run that silently did nothing would be worse than a
|
|
40
|
+
* refusal.
|
|
41
|
+
*/
|
|
42
|
+
export declare function releaseBlockedReason(release: ApplicationReleaseResponse): string | null;
|
|
43
|
+
/** Document-level restrictions shared by draft publish and released rollback. */
|
|
44
|
+
export declare function publicReleaseDocumentBlockedReason(document: PublicReleaseDocument): string | null;
|
|
45
|
+
/** Return the reason a candidate cannot replace a live public release. */
|
|
46
|
+
export declare function publicReleasePreflight(applicationId: string, candidate: ApplicationReleaseResponse | {
|
|
47
|
+
document: PublicReleaseDocument;
|
|
48
|
+
}): Promise<string | null>;
|
|
49
|
+
/** The app's live deployment, or null when it has none. Owner only. */
|
|
50
|
+
export declare function getApplicationDeployment(userId: string, applicationId: string): Promise<ApplicationDeploymentSchema | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Deploy the app, returning the link — the one already out there when it has
|
|
53
|
+
* one, so re-deploying never invalidates a URL somebody pasted somewhere.
|
|
54
|
+
*
|
|
55
|
+
* An app with nothing released is refused rather than deployed dark: the
|
|
56
|
+
* public page serves the release, so a deployment without one is a link that
|
|
57
|
+
* resolves to nothing, and the owner should hear that now instead of from
|
|
58
|
+
* whoever they sent it to.
|
|
59
|
+
*/
|
|
60
|
+
export declare function deployApplication(userId: string, applicationId: string): Promise<ApplicationDeploymentSchema>;
|
|
61
|
+
/**
|
|
62
|
+
* Withdraw the link. Sessions already minted keep running until they expire —
|
|
63
|
+
* they are signed, not stored — so this stops new visitors rather than
|
|
64
|
+
* interrupting one mid-run.
|
|
65
|
+
*/
|
|
66
|
+
export declare function undeployApplication(userId: string, applicationId: string): Promise<{
|
|
67
|
+
ok: true;
|
|
68
|
+
}>;
|
|
69
|
+
/** What the public page renders: the app's identity and the release to run. */
|
|
70
|
+
export declare function getPublicApplication(token: string): Promise<PublicApplication>;
|
|
71
|
+
/**
|
|
72
|
+
* Mint the credential the public page runs on.
|
|
73
|
+
*
|
|
74
|
+
* It authenticates as the app's owner — their graphs, their keys, their
|
|
75
|
+
* budget — and carries the application id, which is what every consumer
|
|
76
|
+
* narrows on. Nothing about the visitor is recorded: a session is derived
|
|
77
|
+
* from the deployment and the clock, so it needs no row and revoking the
|
|
78
|
+
* deployment is the only state there is to change.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createPublicApplicationSession(token: string, signingKey: Buffer | string): Promise<PublicApplicationSession>;
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=app-deployment-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-deployment-service.d.ts","sourceRoot":"","sources":["../../src/lib/app-deployment-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAYlC,OAAO,EAKL,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC9B,MAAM,mDAAmD,CAAC;AAS3D,gEAAgE;AAChE,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAoCD,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,aAAa,CACvB,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CACpF,CAAC;IACF,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,0BAA0B,GAClC,MAAM,GAAG,IAAI,CAiBf;AAED,iFAAiF;AACjF,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,GAAG,IAAI,CAsBf;AAED,0EAA0E;AAC1E,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,SAAS,EACL,0BAA0B,GAC1B;IAAE,QAAQ,EAAE,qBAAqB,CAAA;CAAE,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AA8BD,uEAAuE;AACvE,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAS7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,2BAA2B,CAAC,CAyBtC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAKvB;AAmDD,+EAA+E;AAC/E,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,wBAAwB,CAAC,CAiBnC"}
|