@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,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application service — the business logic behind both transports.
|
|
3
|
+
*
|
|
4
|
+
* The tRPC `applications` router and the `/api/applications` REST routes are
|
|
5
|
+
* two doors onto these functions, so an app looks the same whichever one a
|
|
6
|
+
* client comes through. Errors are raised with `throwApiError`, which the REST
|
|
7
|
+
* layer maps back to a status code.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { type ApplicationDocument } from "@nodetool-ai/app-runtime";
|
|
11
|
+
import { Application, Workflow } from "@nodetool-ai/models";
|
|
12
|
+
import { type ApplicationBundleSchema, type ApplicationListItem, type ApplicationReleaseResponse, type ApplicationResponse, type CreateApplicationInput, type ImportApplicationBundleInput } from "@nodetool-ai/protocol/api-schemas/applications.js";
|
|
13
|
+
export declare const listApplicationsInput: z.ZodObject<{
|
|
14
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
export declare const applicationIdInput: z.ZodObject<{
|
|
17
|
+
id: z.ZodString;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export declare const updateApplicationInput: z.ZodIntersection<z.ZodObject<{
|
|
20
|
+
name: z.ZodOptional<z.ZodString>;
|
|
21
|
+
description: z.ZodOptional<z.ZodString>;
|
|
22
|
+
document: z.ZodOptional<z.ZodObject<{
|
|
23
|
+
schemaVersion: z.ZodNumber;
|
|
24
|
+
ui: z.ZodObject<{
|
|
25
|
+
root: z.ZodObject<{
|
|
26
|
+
props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
content: z.ZodArray<z.ZodUnknown>;
|
|
29
|
+
zones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodUnknown>>>;
|
|
30
|
+
}, z.core.$loose>;
|
|
31
|
+
operations: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
name: z.ZodString;
|
|
34
|
+
workflowId: z.ZodString;
|
|
35
|
+
workflowVersion: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
target: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"workflow">;
|
|
38
|
+
workflowId: z.ZodString;
|
|
39
|
+
workflowVersion: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
41
|
+
kind: z.ZodLiteral<"script">;
|
|
42
|
+
scriptId: z.ZodString;
|
|
43
|
+
scriptVersion: z.ZodNumber;
|
|
44
|
+
}, z.core.$strip>]>>;
|
|
45
|
+
inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
46
|
+
from: z.ZodLiteral<"widget">;
|
|
47
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
48
|
+
from: z.ZodLiteral<"variable">;
|
|
49
|
+
variableId: z.ZodString;
|
|
50
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
51
|
+
from: z.ZodLiteral<"constant">;
|
|
52
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
53
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
54
|
+
from: z.ZodLiteral<"resource">;
|
|
55
|
+
resourceBindingId: z.ZodString;
|
|
56
|
+
}, z.core.$strip>]>>>;
|
|
57
|
+
outputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
58
|
+
to: z.ZodLiteral<"display">;
|
|
59
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
60
|
+
to: z.ZodLiteral<"variable">;
|
|
61
|
+
variableId: z.ZodString;
|
|
62
|
+
}, z.core.$strip>]>>>;
|
|
63
|
+
policy: z.ZodDefault<z.ZodEnum<{
|
|
64
|
+
parallel: "parallel";
|
|
65
|
+
queue: "queue";
|
|
66
|
+
replace: "replace";
|
|
67
|
+
}>>;
|
|
68
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
}, z.core.$strip>>>;
|
|
70
|
+
resources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
71
|
+
id: z.ZodString;
|
|
72
|
+
name: z.ZodString;
|
|
73
|
+
kind: z.ZodEnum<{
|
|
74
|
+
asset: "asset";
|
|
75
|
+
sketch: "sketch";
|
|
76
|
+
storyboard: "storyboard";
|
|
77
|
+
timeline: "timeline";
|
|
78
|
+
}>;
|
|
79
|
+
scope: z.ZodObject<{
|
|
80
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
81
|
+
fixedId: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
operations: z.ZodArray<z.ZodEnum<{
|
|
84
|
+
create: "create";
|
|
85
|
+
delete: "delete";
|
|
86
|
+
read: "read";
|
|
87
|
+
update: "update";
|
|
88
|
+
}>>;
|
|
89
|
+
}, z.core.$strip>>>;
|
|
90
|
+
variables: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
91
|
+
id: z.ZodString;
|
|
92
|
+
name: z.ZodString;
|
|
93
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
94
|
+
type: z.ZodString;
|
|
95
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
96
|
+
}, z.core.$strip>>>;
|
|
97
|
+
default: z.ZodOptional<z.ZodUnknown>;
|
|
98
|
+
scope: z.ZodEnum<{
|
|
99
|
+
instance: "instance";
|
|
100
|
+
user: "user";
|
|
101
|
+
}>;
|
|
102
|
+
persist: z.ZodBoolean;
|
|
103
|
+
}, z.core.$strip>>>;
|
|
104
|
+
theme: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
id: z.ZodString;
|
|
106
|
+
}, z.core.$strip>>;
|
|
107
|
+
}, z.core.$strip>>;
|
|
108
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
109
|
+
id: z.ZodString;
|
|
110
|
+
baseUpdatedAt: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, z.core.$strip>>;
|
|
112
|
+
export type UpdateApplicationInput = z.infer<typeof updateApplicationInput>;
|
|
113
|
+
export declare function toListItem(app: Application): ApplicationListItem;
|
|
114
|
+
export declare function loadOwnedApplication(userId: string | null, id: string): Promise<Application>;
|
|
115
|
+
/**
|
|
116
|
+
* Build a small, deterministic first screen for workflows that predate the
|
|
117
|
+
* standalone application document. The widgets intentionally bind by node ID
|
|
118
|
+
* and let the shared runtime derive their type and defaults from the graph.
|
|
119
|
+
* That keeps this service independent of the web editor's input-kind catalog
|
|
120
|
+
* while making the result runnable as soon as it is opened.
|
|
121
|
+
*/
|
|
122
|
+
export declare function scaffoldDocumentFromWorkflow(workflowId: string, workflow: Workflow): ApplicationDocument;
|
|
123
|
+
export declare function listApplications(userId: string, projectId?: string): Promise<ApplicationListItem[]>;
|
|
124
|
+
export declare function getApplication(userId: string, id: string): Promise<ApplicationResponse>;
|
|
125
|
+
export declare function createApplication(userId: string, input: CreateApplicationInput): Promise<ApplicationResponse>;
|
|
126
|
+
export declare function updateApplication(userId: string, input: UpdateApplicationInput): Promise<ApplicationResponse>;
|
|
127
|
+
/**
|
|
128
|
+
* Delete the app together with its versions, ledger and budget.
|
|
129
|
+
*
|
|
130
|
+
* `Application.delete` is the cascade: the child tables carry no owner check
|
|
131
|
+
* of their own, so leaving a row behind hands it to whoever next claims this
|
|
132
|
+
* id — an id a client is free to name.
|
|
133
|
+
*/
|
|
134
|
+
export declare function deleteApplication(userId: string, id: string): Promise<{
|
|
135
|
+
ok: true;
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* Export an app as an {@link ApplicationBundle}: the document plus the full
|
|
139
|
+
* graph of every workflow its operations bind, with the operations rewritten
|
|
140
|
+
* to bundle-local keys.
|
|
141
|
+
*
|
|
142
|
+
* With `released`, the bundle carries the released snapshot and the graphs the
|
|
143
|
+
* release pinned, so a published app exports reproducibly; otherwise it carries
|
|
144
|
+
* the draft and the workflows' live graphs. A workflow an operation binds but
|
|
145
|
+
* that no longer exists is left out — the operation keeps its raw id, so the
|
|
146
|
+
* broken link stays visible instead of silently disappearing.
|
|
147
|
+
*/
|
|
148
|
+
export declare function exportApplicationBundle(userId: string, id: string, options?: {
|
|
149
|
+
released?: boolean;
|
|
150
|
+
}): Promise<ApplicationBundleSchema>;
|
|
151
|
+
/**
|
|
152
|
+
* Import an {@link ApplicationBundle}: create a workflow row per carried
|
|
153
|
+
* workflow, then the application with its operations pointing at the new ids.
|
|
154
|
+
*
|
|
155
|
+
* Workflows are written first so the app never references a row that does not
|
|
156
|
+
* exist yet.
|
|
157
|
+
*
|
|
158
|
+
* **Dedupe rule.** A carried workflow that declares a `sourceId` gets a row id
|
|
159
|
+
* derived from that source and the importing user, so importing the same
|
|
160
|
+
* source twice lands on the same row: the second import reuses what the first
|
|
161
|
+
* created rather than duplicating it. That is what keeps two example apps
|
|
162
|
+
* binding the same template — Photo Studio and Concept Studio both bind Image
|
|
163
|
+
* Enhance — down to one workflow. A workflow with no `sourceId` (a
|
|
164
|
+
* hand-exported bundle) always gets a fresh id, so importing a colleague's app
|
|
165
|
+
* never silently attaches to a workflow you already have.
|
|
166
|
+
*/
|
|
167
|
+
export declare function importApplicationBundle(userId: string, input: ImportApplicationBundleInput): Promise<ApplicationResponse>;
|
|
168
|
+
/**
|
|
169
|
+
* What a published app should run: the released snapshot's document, its
|
|
170
|
+
* version number and capabilities, plus the graph each operation is pinned to.
|
|
171
|
+
*/
|
|
172
|
+
export declare function releasedApplicationDocument(userId: string, id: string): Promise<ApplicationReleaseResponse | null>;
|
|
173
|
+
//# sourceMappingURL=applications-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applications-service.d.ts","sourceRoot":"","sources":["../../src/lib/applications-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAQL,KAAK,mBAAmB,EAGzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,WAAW,EAKX,QAAQ,EAMT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EAClC,MAAM,mDAAmD,CAAC;AAK3D,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;iBAA+B,CAAC;AAE/D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAElC,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB,CAShE;AAOD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,WAAW,CAAC,CAOtB;AA4DD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,mBAAmB,CAqJrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAKhC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAkCD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAkC9B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAIvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,uBAAuB,CAAC,CA+DlC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAmE9B;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAI5C"}
|
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application service — the business logic behind both transports.
|
|
3
|
+
*
|
|
4
|
+
* The tRPC `applications` router and the `/api/applications` REST routes are
|
|
5
|
+
* two doors onto these functions, so an app looks the same whichever one a
|
|
6
|
+
* client comes through. Errors are raised with `throwApiError`, which the REST
|
|
7
|
+
* layer maps back to a status code.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { applyBundle, bundleFromApplication, createEmptyDocument, operationTarget, parseApplicationBundle, parseApplicationDocument, pinScriptVersions } from "@nodetool-ai/app-runtime";
|
|
11
|
+
import { Application, ApplicationIdInUseError, InvalidApplicationIdError, JsScript, JsScriptVersion, Workflow, createJsScriptResolver, createStableUuid, createTimeOrderedUuid, normalizeApplicationId, releasedApplicationRelease } from "@nodetool-ai/models";
|
|
12
|
+
import { applicationBundle, applicationReleaseResponse, applicationResponse, patchApplicationInput } from "@nodetool-ai/protocol/api-schemas/applications.js";
|
|
13
|
+
import { ApiErrorCode } from "../error-codes.js";
|
|
14
|
+
import { throwApiError } from "../trpc/error-formatter.js";
|
|
15
|
+
import { isRecord, isString } from "./wire-values.js";
|
|
16
|
+
export const listApplicationsInput = z.object({
|
|
17
|
+
projectId: z.string().optional()
|
|
18
|
+
});
|
|
19
|
+
export const applicationIdInput = z.object({ id: z.string() });
|
|
20
|
+
export const updateApplicationInput = patchApplicationInput.and(z.object({ id: z.string(), baseUpdatedAt: z.string().optional() }));
|
|
21
|
+
export function toListItem(app) {
|
|
22
|
+
return {
|
|
23
|
+
id: app.id,
|
|
24
|
+
projectId: app.project_id,
|
|
25
|
+
name: app.name,
|
|
26
|
+
description: app.description,
|
|
27
|
+
operationCount: app.toDocument().operations.length,
|
|
28
|
+
updatedAt: app.updated_at
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export async function loadOwnedApplication(userId, id) {
|
|
32
|
+
if (!userId)
|
|
33
|
+
throwApiError(ApiErrorCode.UNAUTHORIZED, "Unauthorized");
|
|
34
|
+
const app = await Application.findById(id);
|
|
35
|
+
if (!app || app.user_id !== userId) {
|
|
36
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Application not found");
|
|
37
|
+
}
|
|
38
|
+
return app;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Import a legacy `workflow.app_doc` as an application document. The parser
|
|
42
|
+
* lifts a `{ version, data }` payload into one operation bound to the host
|
|
43
|
+
* workflow; widget bindings inside the UI keep their stored form and resolve
|
|
44
|
+
* against the live graph at runtime.
|
|
45
|
+
*/
|
|
46
|
+
async function documentFromWorkflow(workflowId, userId) {
|
|
47
|
+
const workflow = await Workflow.find(userId, workflowId);
|
|
48
|
+
if (!workflow) {
|
|
49
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Workflow not found");
|
|
50
|
+
}
|
|
51
|
+
// SAFETY: `app_doc` is a JSON column the `Workflow` model does not declare.
|
|
52
|
+
const raw = workflow.app_doc;
|
|
53
|
+
const parsed = raw
|
|
54
|
+
? parseApplicationDocument(isString(raw) ? JSON.parse(raw) : raw, { hostWorkflowId: workflowId })
|
|
55
|
+
: null;
|
|
56
|
+
if (parsed)
|
|
57
|
+
return parsed;
|
|
58
|
+
return scaffoldDocumentFromWorkflow(workflowId, workflow);
|
|
59
|
+
}
|
|
60
|
+
const workflowNodes = (workflow) => workflow.graph.nodes.flatMap((raw) => {
|
|
61
|
+
if (!isRecord(raw) || !isString(raw.id) || !isString(raw.type)) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
id: raw.id,
|
|
67
|
+
type: raw.type,
|
|
68
|
+
data: isRecord(raw.data) ? raw.data : undefined
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
});
|
|
72
|
+
const nodeLabel = (node) => isString(node.data?.name) && node.data.name.length > 0
|
|
73
|
+
? node.data.name
|
|
74
|
+
: node.id;
|
|
75
|
+
const isWorkflowInput = (node) => node.type.startsWith("nodetool.input.");
|
|
76
|
+
const isWorkflowOutput = (node) => node.type.startsWith("nodetool.output.") ||
|
|
77
|
+
node.type === "nodetool.workflows.base_node.Preview";
|
|
78
|
+
/**
|
|
79
|
+
* Build a small, deterministic first screen for workflows that predate the
|
|
80
|
+
* standalone application document. The widgets intentionally bind by node ID
|
|
81
|
+
* and let the shared runtime derive their type and defaults from the graph.
|
|
82
|
+
* That keeps this service independent of the web editor's input-kind catalog
|
|
83
|
+
* while making the result runnable as soon as it is opened.
|
|
84
|
+
*/
|
|
85
|
+
export function scaffoldDocumentFromWorkflow(workflowId, workflow) {
|
|
86
|
+
const document = createEmptyDocument(workflow.name);
|
|
87
|
+
const operationId = "main";
|
|
88
|
+
const nodes = workflowNodes(workflow);
|
|
89
|
+
const inputs = nodes.filter(isWorkflowInput);
|
|
90
|
+
const outputs = nodes.filter(isWorkflowOutput);
|
|
91
|
+
const binding = (kind, nodeId) => {
|
|
92
|
+
if (kind === "execution") {
|
|
93
|
+
return `op:${operationId}/exec#${nodeId}`;
|
|
94
|
+
}
|
|
95
|
+
return `op:${operationId}/${kind === "input" ? "in" : "out"}:${nodeId}`;
|
|
96
|
+
};
|
|
97
|
+
const content = [
|
|
98
|
+
{
|
|
99
|
+
type: "Heading",
|
|
100
|
+
props: { id: "workflow-title", text: workflow.name || "Workflow app", level: "1" }
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: "Text",
|
|
104
|
+
props: {
|
|
105
|
+
id: "workflow-description",
|
|
106
|
+
text: "This app was created from your workflow. Review the inputs, then run it."
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: "Container",
|
|
111
|
+
props: {
|
|
112
|
+
id: "workflow-inputs",
|
|
113
|
+
title: "Inputs",
|
|
114
|
+
content: inputs.length > 0
|
|
115
|
+
? inputs.map((node) => ({
|
|
116
|
+
type: "WorkflowInput",
|
|
117
|
+
props: {
|
|
118
|
+
id: `workflow-input-${node.id}`,
|
|
119
|
+
binding: binding("input", node.id),
|
|
120
|
+
label: nodeLabel(node),
|
|
121
|
+
events: []
|
|
122
|
+
}
|
|
123
|
+
}))
|
|
124
|
+
: [
|
|
125
|
+
{
|
|
126
|
+
type: "Text",
|
|
127
|
+
props: {
|
|
128
|
+
id: "workflow-no-inputs",
|
|
129
|
+
text: "This workflow has no Input nodes."
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: "Button",
|
|
137
|
+
props: {
|
|
138
|
+
id: "workflow-run",
|
|
139
|
+
label: "Run workflow",
|
|
140
|
+
variant: "contained",
|
|
141
|
+
color: "primary",
|
|
142
|
+
events: [
|
|
143
|
+
{ trigger: "click", kind: "run", operationId, key: "", value: "" }
|
|
144
|
+
],
|
|
145
|
+
disabledWhen: {
|
|
146
|
+
binding: binding("execution", "running"),
|
|
147
|
+
op: "notEmpty"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: "Button",
|
|
153
|
+
props: {
|
|
154
|
+
id: "workflow-cancel",
|
|
155
|
+
label: "Cancel run",
|
|
156
|
+
variant: "outlined",
|
|
157
|
+
color: "warning",
|
|
158
|
+
events: [
|
|
159
|
+
{ trigger: "click", kind: "cancel", operationId, key: "", value: "" }
|
|
160
|
+
],
|
|
161
|
+
visibleWhen: {
|
|
162
|
+
binding: binding("execution", "running"),
|
|
163
|
+
op: "notEmpty"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: "Container",
|
|
169
|
+
props: {
|
|
170
|
+
id: "workflow-results",
|
|
171
|
+
title: "Results",
|
|
172
|
+
content: [
|
|
173
|
+
{
|
|
174
|
+
type: "Progress",
|
|
175
|
+
props: {
|
|
176
|
+
id: "workflow-progress",
|
|
177
|
+
binding: binding("execution", "progress"),
|
|
178
|
+
label: "Running…"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: "Alert",
|
|
183
|
+
props: {
|
|
184
|
+
id: "workflow-error",
|
|
185
|
+
binding: binding("execution", "error"),
|
|
186
|
+
title: "The workflow failed",
|
|
187
|
+
text: "",
|
|
188
|
+
severity: "error",
|
|
189
|
+
visibleWhen: {
|
|
190
|
+
binding: binding("execution", "error"),
|
|
191
|
+
op: "notEmpty"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
...(outputs.length > 0
|
|
196
|
+
? outputs.map((node) => ({
|
|
197
|
+
type: "Output",
|
|
198
|
+
props: {
|
|
199
|
+
id: `workflow-output-${node.id}`,
|
|
200
|
+
binding: binding("output", node.id),
|
|
201
|
+
placeholder: `${nodeLabel(node)} will appear here`,
|
|
202
|
+
download: true,
|
|
203
|
+
filename: ""
|
|
204
|
+
}
|
|
205
|
+
}))
|
|
206
|
+
: [
|
|
207
|
+
{
|
|
208
|
+
type: "Text",
|
|
209
|
+
props: {
|
|
210
|
+
id: "workflow-no-outputs",
|
|
211
|
+
text: "This workflow has no Output nodes. Add one to display a result."
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
])
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
];
|
|
219
|
+
document.ui = { root: { props: {} }, content, zones: {} };
|
|
220
|
+
document.operations = [
|
|
221
|
+
{
|
|
222
|
+
id: operationId,
|
|
223
|
+
name: "Run",
|
|
224
|
+
workflowId,
|
|
225
|
+
inputs: {},
|
|
226
|
+
outputs: {},
|
|
227
|
+
policy: "replace"
|
|
228
|
+
}
|
|
229
|
+
];
|
|
230
|
+
return document;
|
|
231
|
+
}
|
|
232
|
+
export async function listApplications(userId, projectId) {
|
|
233
|
+
const apps = projectId
|
|
234
|
+
? await Application.listByProject(projectId, userId)
|
|
235
|
+
: await Application.listByUser(userId);
|
|
236
|
+
return apps.map(toListItem);
|
|
237
|
+
}
|
|
238
|
+
export async function getApplication(userId, id) {
|
|
239
|
+
const app = await loadOwnedApplication(userId, id);
|
|
240
|
+
return applicationResponse.parse(app.toResponse());
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Create the row, mapping the model's id errors onto API errors.
|
|
244
|
+
*
|
|
245
|
+
* Ids are global: an app the caller does not own occupies its id just as much
|
|
246
|
+
* as one they do, and the row it names is reported the same way a missing one
|
|
247
|
+
* is — the caller learns their id was refused, not who holds it.
|
|
248
|
+
*/
|
|
249
|
+
async function insertApplication(userId, data) {
|
|
250
|
+
try {
|
|
251
|
+
return await Application.createUnique(data);
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (error instanceof InvalidApplicationIdError) {
|
|
255
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, "Invalid application id");
|
|
256
|
+
}
|
|
257
|
+
if (error instanceof ApplicationIdInUseError) {
|
|
258
|
+
// The id was taken between the caller's existence check and this insert.
|
|
259
|
+
// Answer exactly as that check would have: the owner gets their app back
|
|
260
|
+
// so a retried create stays idempotent, and everyone else gets the same
|
|
261
|
+
// answer a missing id gets. Reporting "already exists" here would make
|
|
262
|
+
// the losing side of the race the one place that reveals an id is held.
|
|
263
|
+
const existing = isString(data.id) ? await Application.findById(data.id) : null;
|
|
264
|
+
if (existing && existing.user_id === userId)
|
|
265
|
+
return existing;
|
|
266
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Application not found");
|
|
267
|
+
}
|
|
268
|
+
throw error;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
export async function createApplication(userId, input) {
|
|
272
|
+
let id;
|
|
273
|
+
if (input.id) {
|
|
274
|
+
try {
|
|
275
|
+
id = normalizeApplicationId(input.id);
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, "Invalid application id");
|
|
279
|
+
}
|
|
280
|
+
// Creating over an existing id is idempotent for its owner — a retried
|
|
281
|
+
// create returns the same app — and refused for everyone else. The id must
|
|
282
|
+
// never be reused, because the app's versions, ledger and budget are keyed
|
|
283
|
+
// on it and a deleted app's children could otherwise be inherited.
|
|
284
|
+
const existing = await Application.findById(id);
|
|
285
|
+
if (existing) {
|
|
286
|
+
if (existing.user_id !== userId) {
|
|
287
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Application not found");
|
|
288
|
+
}
|
|
289
|
+
return applicationResponse.parse(existing.toResponse());
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const document = input.document ??
|
|
293
|
+
(input.fromWorkflowId
|
|
294
|
+
? await documentFromWorkflow(input.fromWorkflowId, userId)
|
|
295
|
+
: createEmptyDocument());
|
|
296
|
+
const app = await insertApplication(userId, {
|
|
297
|
+
id,
|
|
298
|
+
user_id: userId,
|
|
299
|
+
project_id: input.projectId,
|
|
300
|
+
name: input.name,
|
|
301
|
+
description: input.description,
|
|
302
|
+
document: JSON.stringify(document)
|
|
303
|
+
});
|
|
304
|
+
return applicationResponse.parse(app.toResponse());
|
|
305
|
+
}
|
|
306
|
+
export async function updateApplication(userId, input) {
|
|
307
|
+
const app = await loadOwnedApplication(userId, input.id);
|
|
308
|
+
// CAS on updated_at so the conflict check and the write are atomic.
|
|
309
|
+
const expectedUpdatedAt = input.baseUpdatedAt ?? app.updated_at;
|
|
310
|
+
if (input.baseUpdatedAt && app.updated_at !== input.baseUpdatedAt) {
|
|
311
|
+
throwApiError(ApiErrorCode.ALREADY_EXISTS, "Application was modified since last read (optimistic concurrency conflict)");
|
|
312
|
+
}
|
|
313
|
+
const fields = {};
|
|
314
|
+
if (input.name !== undefined)
|
|
315
|
+
fields.name = input.name;
|
|
316
|
+
if (input.description !== undefined)
|
|
317
|
+
fields.description = input.description;
|
|
318
|
+
if (input.document !== undefined) {
|
|
319
|
+
fields.document = JSON.stringify(input.document);
|
|
320
|
+
}
|
|
321
|
+
const updated = await Application.updateFieldsIfUnchanged(input.id, expectedUpdatedAt, fields);
|
|
322
|
+
if (!updated) {
|
|
323
|
+
throwApiError(ApiErrorCode.ALREADY_EXISTS, "Application was modified since last read (optimistic concurrency conflict)");
|
|
324
|
+
}
|
|
325
|
+
return applicationResponse.parse(updated.toResponse());
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Delete the app together with its versions, ledger and budget.
|
|
329
|
+
*
|
|
330
|
+
* `Application.delete` is the cascade: the child tables carry no owner check
|
|
331
|
+
* of their own, so leaving a row behind hands it to whoever next claims this
|
|
332
|
+
* id — an id a client is free to name.
|
|
333
|
+
*/
|
|
334
|
+
export async function deleteApplication(userId, id) {
|
|
335
|
+
const app = await loadOwnedApplication(userId, id);
|
|
336
|
+
await app.delete();
|
|
337
|
+
return { ok: true };
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Export an app as an {@link ApplicationBundle}: the document plus the full
|
|
341
|
+
* graph of every workflow its operations bind, with the operations rewritten
|
|
342
|
+
* to bundle-local keys.
|
|
343
|
+
*
|
|
344
|
+
* With `released`, the bundle carries the released snapshot and the graphs the
|
|
345
|
+
* release pinned, so a published app exports reproducibly; otherwise it carries
|
|
346
|
+
* the draft and the workflows' live graphs. A workflow an operation binds but
|
|
347
|
+
* that no longer exists is left out — the operation keeps its raw id, so the
|
|
348
|
+
* broken link stays visible instead of silently disappearing.
|
|
349
|
+
*/
|
|
350
|
+
export async function exportApplicationBundle(userId, id, options = {}) {
|
|
351
|
+
const app = await loadOwnedApplication(userId, id);
|
|
352
|
+
const release = options.released
|
|
353
|
+
? await releasedApplicationRelease(id, userId)
|
|
354
|
+
: null;
|
|
355
|
+
if (options.released && !release) {
|
|
356
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Application has no released version");
|
|
357
|
+
}
|
|
358
|
+
const document = release ? release.document : app.toDocument();
|
|
359
|
+
const pinned = new Map((release?.workflows ?? []).map((entry) => [entry.workflowId, entry]));
|
|
360
|
+
const sources = [];
|
|
361
|
+
const scriptSources = [];
|
|
362
|
+
const seen = new Set();
|
|
363
|
+
const seenScripts = new Set();
|
|
364
|
+
for (const operation of document.operations) {
|
|
365
|
+
const target = operationTarget(operation);
|
|
366
|
+
if (target.kind === "script") {
|
|
367
|
+
if (seenScripts.has(target.scriptId))
|
|
368
|
+
continue;
|
|
369
|
+
seenScripts.add(target.scriptId);
|
|
370
|
+
// The pinned version is what the app runs, so that is what ships — not
|
|
371
|
+
// whatever the script has drifted to since.
|
|
372
|
+
const resolved = await createJsScriptResolver().resolve({ id: target.scriptId, version: target.scriptVersion }, userId);
|
|
373
|
+
// A script the operation pins but the install no longer has is left out,
|
|
374
|
+
// the way a missing workflow is: the broken link stays visible.
|
|
375
|
+
if (!resolved)
|
|
376
|
+
continue;
|
|
377
|
+
scriptSources.push({
|
|
378
|
+
scriptId: target.scriptId,
|
|
379
|
+
name: resolved.name,
|
|
380
|
+
document: resolved.document,
|
|
381
|
+
sourceId: target.scriptId,
|
|
382
|
+
version: target.scriptVersion
|
|
383
|
+
});
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (seen.has(operation.workflowId))
|
|
387
|
+
continue;
|
|
388
|
+
seen.add(operation.workflowId);
|
|
389
|
+
const pin = pinned.get(operation.workflowId);
|
|
390
|
+
const workflow = await Workflow.find(userId, operation.workflowId);
|
|
391
|
+
const graph = pin?.graph ?? workflow?.getGraph();
|
|
392
|
+
if (!graph)
|
|
393
|
+
continue;
|
|
394
|
+
sources.push({
|
|
395
|
+
workflowId: operation.workflowId,
|
|
396
|
+
name: workflow?.name ?? operation.name,
|
|
397
|
+
description: workflow?.description ?? "",
|
|
398
|
+
graph,
|
|
399
|
+
version: pin?.version ?? null,
|
|
400
|
+
graphHash: pin?.graphHash ?? null
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
return applicationBundle.parse(bundleFromApplication({ name: app.name, description: app.description, document }, sources, scriptSources));
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Import an {@link ApplicationBundle}: create a workflow row per carried
|
|
407
|
+
* workflow, then the application with its operations pointing at the new ids.
|
|
408
|
+
*
|
|
409
|
+
* Workflows are written first so the app never references a row that does not
|
|
410
|
+
* exist yet.
|
|
411
|
+
*
|
|
412
|
+
* **Dedupe rule.** A carried workflow that declares a `sourceId` gets a row id
|
|
413
|
+
* derived from that source and the importing user, so importing the same
|
|
414
|
+
* source twice lands on the same row: the second import reuses what the first
|
|
415
|
+
* created rather than duplicating it. That is what keeps two example apps
|
|
416
|
+
* binding the same template — Photo Studio and Concept Studio both bind Image
|
|
417
|
+
* Enhance — down to one workflow. A workflow with no `sourceId` (a
|
|
418
|
+
* hand-exported bundle) always gets a fresh id, so importing a colleague's app
|
|
419
|
+
* never silently attaches to a workflow you already have.
|
|
420
|
+
*/
|
|
421
|
+
export async function importApplicationBundle(userId, input) {
|
|
422
|
+
const bundle = parseApplicationBundle(input.bundle);
|
|
423
|
+
if (!bundle) {
|
|
424
|
+
throwApiError(ApiErrorCode.INVALID_INPUT, "Invalid application bundle");
|
|
425
|
+
}
|
|
426
|
+
const result = applyBundle(bundle, {
|
|
427
|
+
newWorkflowId: (workflow) => workflow.sourceId
|
|
428
|
+
? createStableUuid(userId, workflow.sourceId)
|
|
429
|
+
: createTimeOrderedUuid(),
|
|
430
|
+
newScriptId: (script) => script.sourceId
|
|
431
|
+
? createStableUuid(userId, script.sourceId)
|
|
432
|
+
: createTimeOrderedUuid()
|
|
433
|
+
});
|
|
434
|
+
for (const workflow of result.workflows) {
|
|
435
|
+
if (workflow.sourceId && (await Workflow.find(userId, workflow.id))) {
|
|
436
|
+
continue;
|
|
437
|
+
}
|
|
438
|
+
await Workflow.create({
|
|
439
|
+
id: workflow.id,
|
|
440
|
+
user_id: userId,
|
|
441
|
+
name: workflow.name,
|
|
442
|
+
description: workflow.description ?? "",
|
|
443
|
+
access: "private",
|
|
444
|
+
graph: workflow.graph
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
// A script row has its own version numbering, so the number the export
|
|
448
|
+
// pinned means nothing here: every carried script is snapshotted and the
|
|
449
|
+
// operations are re-pinned to the version this install created.
|
|
450
|
+
const scriptVersions = new Map();
|
|
451
|
+
for (const script of result.scripts) {
|
|
452
|
+
const existing = await JsScript.findById(script.id);
|
|
453
|
+
const row = existing && existing.user_id === userId
|
|
454
|
+
? existing
|
|
455
|
+
: new JsScript({
|
|
456
|
+
id: script.id,
|
|
457
|
+
user_id: userId,
|
|
458
|
+
project_id: input.projectId,
|
|
459
|
+
name: script.name,
|
|
460
|
+
document: JSON.stringify(script.document)
|
|
461
|
+
});
|
|
462
|
+
if (row !== existing)
|
|
463
|
+
await row.save();
|
|
464
|
+
const version = await JsScriptVersion.snapshot(row, {
|
|
465
|
+
saveType: "manual",
|
|
466
|
+
name: `Imported with ${result.app.name}`
|
|
467
|
+
});
|
|
468
|
+
scriptVersions.set(script.id, version.version);
|
|
469
|
+
}
|
|
470
|
+
const document = scriptVersions.size > 0
|
|
471
|
+
? pinScriptVersions(result.app.document, scriptVersions)
|
|
472
|
+
: result.app.document;
|
|
473
|
+
const app = await insertApplication(userId, {
|
|
474
|
+
user_id: userId,
|
|
475
|
+
project_id: input.projectId,
|
|
476
|
+
name: result.app.name,
|
|
477
|
+
description: result.app.description,
|
|
478
|
+
document: JSON.stringify(document)
|
|
479
|
+
});
|
|
480
|
+
return applicationResponse.parse(app.toResponse());
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* What a published app should run: the released snapshot's document, its
|
|
484
|
+
* version number and capabilities, plus the graph each operation is pinned to.
|
|
485
|
+
*/
|
|
486
|
+
export async function releasedApplicationDocument(userId, id) {
|
|
487
|
+
await loadOwnedApplication(userId, id);
|
|
488
|
+
const release = await releasedApplicationRelease(id, userId);
|
|
489
|
+
return release ? applicationReleaseResponse.parse(release) : null;
|
|
490
|
+
}
|
|
491
|
+
//# sourceMappingURL=applications-service.js.map
|