@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,405 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-watch adapter — the host-owned ingestion adapter for `file_watch`
|
|
3
|
+
* registrations (compiled from `FileWatchTriggerNode`s, see
|
|
4
|
+
* `registration-sync.ts`).
|
|
5
|
+
*
|
|
6
|
+
* File events arrive live through `fs.watch`, unlike the scheduler's poll
|
|
7
|
+
* sweep — so the sweep timer here only reconciles *which* registrations are
|
|
8
|
+
* watched: it opens a watcher for every enabled `file_watch` registration
|
|
9
|
+
* that isn't already watched with the current config (skipping — and
|
|
10
|
+
* recording `last_error` for — paths that don't exist), and closes the
|
|
11
|
+
* watcher for any registration that is no longer enabled, no longer exists,
|
|
12
|
+
* or whose watched path/recursion setting changed. Pattern/ignore-pattern
|
|
13
|
+
* matching and debounce reuse `FileWatchTriggerNode`'s own logic via the
|
|
14
|
+
* shared `@nodetool-ai/automation-nodes` helper, so the adapter and the
|
|
15
|
+
* in-editor live-test path can never drift apart.
|
|
16
|
+
*
|
|
17
|
+
* Follows `scheduler.ts`'s shape: a pure-ish sweep function callers can drive
|
|
18
|
+
* directly in tests, a thin `setInterval` wrapper for production, and a stop
|
|
19
|
+
* handle. The one difference is unavoidable statefulness — `fs.watch` handles
|
|
20
|
+
* must persist across sweeps — so the sweep function takes an explicit state
|
|
21
|
+
* map instead of being fully pure.
|
|
22
|
+
*/
|
|
23
|
+
import * as fs from "node:fs";
|
|
24
|
+
import * as path from "node:path";
|
|
25
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
26
|
+
import { TriggerRegistration } from "@nodetool-ai/models";
|
|
27
|
+
import { FileWatchDebouncer, shouldEmitFileWatchEvent, shouldProcessFileWatchPath, isWatchedFileEvent } from "@nodetool-ai/automation-nodes";
|
|
28
|
+
import { isFunctionValue, isString } from "../lib/wire-values.js";
|
|
29
|
+
// Stryker disable next-line StringLiteral: logger name is a diagnostic label, not a behavioural contract
|
|
30
|
+
const log = createLogger("nodetool.websocket.triggers.file-watch");
|
|
31
|
+
const DEFAULT_SWEEP_INTERVAL_MS = 5_000;
|
|
32
|
+
/**
|
|
33
|
+
* Downtime catch-up (`config_json.catch_up: true`). `fs.watch` has no
|
|
34
|
+
* history, so the only way to notice a change made while the adapter wasn't
|
|
35
|
+
* running is to compare a snapshot taken before stopping against a fresh
|
|
36
|
+
* scan on the next start. Capped so a huge tree can't make shutdown/startup
|
|
37
|
+
* hang or bloat the `cursor` column — `last_error` records when the cap was
|
|
38
|
+
* hit so the truncation is visible, not silent.
|
|
39
|
+
*/
|
|
40
|
+
const CATCH_UP_SNAPSHOT_CAP = 10_000;
|
|
41
|
+
export function createFileWatchState() {
|
|
42
|
+
return new Map();
|
|
43
|
+
}
|
|
44
|
+
function readString(config, key, fallback) {
|
|
45
|
+
const raw = config?.[key];
|
|
46
|
+
return isString(raw) ? raw : fallback;
|
|
47
|
+
}
|
|
48
|
+
function readBool(config, key, fallback) {
|
|
49
|
+
const raw = config?.[key];
|
|
50
|
+
return raw === undefined || raw === null ? fallback : Boolean(raw);
|
|
51
|
+
}
|
|
52
|
+
function readNumber(config, key, fallback) {
|
|
53
|
+
const raw = config?.[key];
|
|
54
|
+
if (raw === undefined || raw === null)
|
|
55
|
+
return fallback;
|
|
56
|
+
const value = Number(raw);
|
|
57
|
+
return Number.isFinite(value) ? value : fallback;
|
|
58
|
+
}
|
|
59
|
+
function readStringArray(config, key, fallback) {
|
|
60
|
+
const raw = config?.[key];
|
|
61
|
+
return Array.isArray(raw) ? raw.filter((v) => typeof v === "string") : fallback;
|
|
62
|
+
}
|
|
63
|
+
/** The same property names `FileWatchTriggerNode` snapshots into the
|
|
64
|
+
* registration on sync (`registration-sync.ts`). */
|
|
65
|
+
function resolveWatchPath(config) {
|
|
66
|
+
return path.resolve(readString(config, "path", "."));
|
|
67
|
+
}
|
|
68
|
+
function configFilter(config) {
|
|
69
|
+
return {
|
|
70
|
+
patterns: readStringArray(config, "patterns", ["*"]),
|
|
71
|
+
ignorePatterns: readStringArray(config, "ignore_patterns", []),
|
|
72
|
+
events: readStringArray(config, "events", [
|
|
73
|
+
"created",
|
|
74
|
+
"modified",
|
|
75
|
+
"deleted",
|
|
76
|
+
"moved"
|
|
77
|
+
])
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function configSnapshotKey(config) {
|
|
81
|
+
return JSON.stringify({
|
|
82
|
+
path: resolveWatchPath(config),
|
|
83
|
+
recursive: readBool(config, "recursive", false)
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async function deliverFileWatchEvent(registration, eventType, filePath, isDirectory, opts, inputId) {
|
|
87
|
+
const nowMs = (opts.now ?? Date.now)();
|
|
88
|
+
const payload = {
|
|
89
|
+
event: eventType,
|
|
90
|
+
path: filePath,
|
|
91
|
+
dest_path: "",
|
|
92
|
+
is_directory: isDirectory,
|
|
93
|
+
timestamp: new Date(nowMs).toISOString()
|
|
94
|
+
};
|
|
95
|
+
try {
|
|
96
|
+
await opts.wakeupService.deliverTriggerInput({
|
|
97
|
+
runId: registration.workflow_id,
|
|
98
|
+
nodeId: registration.node_id,
|
|
99
|
+
inputId,
|
|
100
|
+
payload
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
105
|
+
registration.last_error = error.message;
|
|
106
|
+
await registration.save();
|
|
107
|
+
log.warn(`File-watch registration ${registration.id} failed to deliver trigger input`, error);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
registration.last_fired_at = new Date(nowMs).toISOString();
|
|
111
|
+
registration.last_error = null;
|
|
112
|
+
await registration.save();
|
|
113
|
+
opts.notify?.({ registrationId: registration.id, inputId });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Attach an `fs.watch` handle for one registration. Mirrors
|
|
117
|
+
* `FileWatchTriggerNode.genProcess()`'s `watchDir`: `fs.watch` emits
|
|
118
|
+
* `"rename"` for create/delete and `"change"` for modify.
|
|
119
|
+
*/
|
|
120
|
+
function attachWatcher(registration, watchPath, recursive, filter, debouncer, opts) {
|
|
121
|
+
const eventCounter = { count: 0 };
|
|
122
|
+
const handleEvent = (eventType, filePath, isDirectory) => {
|
|
123
|
+
if (!shouldEmitFileWatchEvent(eventType, filePath, filter, debouncer)) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
eventCounter.count += 1;
|
|
127
|
+
const nowMs = (opts.now ?? Date.now)();
|
|
128
|
+
const inputId = `${registration.id}:${nowMs}:${eventCounter.count}`;
|
|
129
|
+
void deliverFileWatchEvent(registration, eventType, filePath, isDirectory, opts, inputId);
|
|
130
|
+
};
|
|
131
|
+
const watch = opts.watch ?? fs.watch;
|
|
132
|
+
return watch(watchPath, { recursive, persistent: true }, (eventType, filename) => {
|
|
133
|
+
if (!filename)
|
|
134
|
+
return;
|
|
135
|
+
const fullPath = path.join(watchPath, filename.toString());
|
|
136
|
+
const exists = fs.existsSync(fullPath);
|
|
137
|
+
const isDirectory = exists && fs.statSync(fullPath).isDirectory();
|
|
138
|
+
if (eventType === "rename") {
|
|
139
|
+
if (exists) {
|
|
140
|
+
handleEvent("created", fullPath, isDirectory);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
handleEvent("deleted", fullPath, false);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (eventType === "change") {
|
|
147
|
+
// macOS can report a change for the watched directory itself using
|
|
148
|
+
// its basename. Joining that name to watchPath produces a nonexistent
|
|
149
|
+
// duplicate path, which is not a valid modified-file event.
|
|
150
|
+
if (!exists)
|
|
151
|
+
return;
|
|
152
|
+
handleEvent("modified", fullPath, isDirectory);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Scan `watchPath` for the files a watcher for `filter` would care about
|
|
158
|
+
* (directories are never diffed — only file mtimes), capped at
|
|
159
|
+
* `CATCH_UP_SNAPSHOT_CAP` entries. BFS order so a capped scan takes a
|
|
160
|
+
* deterministic, roughly breadth-first prefix of the tree rather than an
|
|
161
|
+
* arbitrary one that depends on `readdirSync` ordering across directories.
|
|
162
|
+
*/
|
|
163
|
+
function scanDirectorySnapshot(watchPath, recursive, filter) {
|
|
164
|
+
const entries = {};
|
|
165
|
+
let truncated = false;
|
|
166
|
+
const dirs = [watchPath];
|
|
167
|
+
while (dirs.length > 0 && !truncated) {
|
|
168
|
+
const dir = dirs.shift();
|
|
169
|
+
let dirents;
|
|
170
|
+
try {
|
|
171
|
+
dirents = fs.readdirSync(dir, { withFileTypes: true });
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Directory vanished mid-scan (e.g. concurrent delete) — skip it.
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
for (const dirent of dirents) {
|
|
178
|
+
const fullPath = path.join(dir, dirent.name);
|
|
179
|
+
if (dirent.isDirectory()) {
|
|
180
|
+
if (recursive)
|
|
181
|
+
dirs.push(fullPath);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (!dirent.isFile())
|
|
185
|
+
continue;
|
|
186
|
+
if (!shouldProcessFileWatchPath(fullPath, filter))
|
|
187
|
+
continue;
|
|
188
|
+
if (Object.keys(entries).length >= CATCH_UP_SNAPSHOT_CAP) {
|
|
189
|
+
truncated = true;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
entries[fullPath] = fs.statSync(fullPath).mtimeMs;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// File vanished between readdir and stat — skip it.
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { snapshot: { entries }, truncated };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Diff a stored snapshot against a fresh scan: files whose mtime changed are
|
|
204
|
+
* `modified`, files absent from the old snapshot are `created`, files absent
|
|
205
|
+
* from the new scan are `deleted`.
|
|
206
|
+
*/
|
|
207
|
+
function diffSnapshots(previous, current) {
|
|
208
|
+
const changes = [];
|
|
209
|
+
for (const [filePath, mtimeMs] of Object.entries(current.entries)) {
|
|
210
|
+
const previousMtime = previous.entries[filePath];
|
|
211
|
+
if (previousMtime === undefined) {
|
|
212
|
+
changes.push({ event: "created", path: filePath, mtimeMs });
|
|
213
|
+
}
|
|
214
|
+
else if (previousMtime !== mtimeMs) {
|
|
215
|
+
changes.push({ event: "modified", path: filePath, mtimeMs });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
for (const filePath of Object.keys(previous.entries)) {
|
|
219
|
+
if (!(filePath in current.entries)) {
|
|
220
|
+
changes.push({ event: "deleted", path: filePath, mtimeMs: 0 });
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return changes;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Replay changes that happened while the adapter wasn't running, using the
|
|
227
|
+
* `{path -> mtime}` snapshot `stopFileWatch` persisted into `cursor`. Runs
|
|
228
|
+
* before `attachWatcher` so catch-up events are delivered ahead of anything
|
|
229
|
+
* the live watcher itself observes.
|
|
230
|
+
*
|
|
231
|
+
* `inputId` is deterministic — `<registrationId>:catchup:<event>:<path>:
|
|
232
|
+
* <mtimeMs>` — instead of timestamp-based like the live-event ids. If the
|
|
233
|
+
* server crashes twice in a row before a clean `stopFileWatch` ever runs
|
|
234
|
+
* again (so `cursor` still holds the same stale snapshot both times), both
|
|
235
|
+
* restarts diff against the identical baseline and recompute the identical
|
|
236
|
+
* change list, which produces the identical inputIds. `deliverTriggerInput`
|
|
237
|
+
* is idempotent by inputId — durably so, once wired to the DB-backed store
|
|
238
|
+
* (Task 3/11) whose `trigger_inputs.input_id` is uniquely indexed — so the
|
|
239
|
+
* replay from the second restart is rejected as a duplicate instead of
|
|
240
|
+
* dispatching the same catch-up event twice. A counter or wall-clock id
|
|
241
|
+
* would not have that property: it would mint a fresh id each replay and
|
|
242
|
+
* double-fire on the second crash-restart.
|
|
243
|
+
*/
|
|
244
|
+
async function runCatchUpEvents(registration, watchPath, recursive, filter, opts) {
|
|
245
|
+
const cursorRaw = registration.cursor;
|
|
246
|
+
if (!cursorRaw)
|
|
247
|
+
return;
|
|
248
|
+
let previous;
|
|
249
|
+
try {
|
|
250
|
+
const parsed = JSON.parse(cursorRaw);
|
|
251
|
+
previous = { entries: parsed.entries ?? {} };
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
// Cursor predates this format (or is corrupt) — nothing to replay.
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const { snapshot: current } = scanDirectorySnapshot(watchPath, recursive, filter);
|
|
258
|
+
const changes = diffSnapshots(previous, current);
|
|
259
|
+
for (const change of changes) {
|
|
260
|
+
if (!isWatchedFileEvent(change.event, filter.events))
|
|
261
|
+
continue;
|
|
262
|
+
const inputId = `${registration.id}:catchup:${change.event}:${change.path}:${change.mtimeMs}`;
|
|
263
|
+
await deliverFileWatchEvent(registration, change.event, change.path, false, opts, inputId);
|
|
264
|
+
}
|
|
265
|
+
// Consume the cursor: the live watcher takes over from here, and leaving
|
|
266
|
+
// the stale snapshot in place would replay the same diff on every future
|
|
267
|
+
// restart until the next clean stop overwrites it.
|
|
268
|
+
registration.cursor = null;
|
|
269
|
+
await registration.save();
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Run one reconciliation sweep against the current set of enabled
|
|
273
|
+
* `file_watch` registrations: closes watchers for registrations that are no
|
|
274
|
+
* longer enabled/present/unchanged, and opens watchers for the rest. Skips —
|
|
275
|
+
* and records `last_error` for — a registration whose path does not exist.
|
|
276
|
+
*/
|
|
277
|
+
export async function runFileWatchSweepOnce(state, opts) {
|
|
278
|
+
const registrations = await TriggerRegistration.findEnabledByKind("file_watch");
|
|
279
|
+
const enabledIds = new Set(registrations.map((r) => r.id));
|
|
280
|
+
for (const [id, entry] of [...state.entries()]) {
|
|
281
|
+
if (!enabledIds.has(id)) {
|
|
282
|
+
entry.watcher.close();
|
|
283
|
+
state.delete(id);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
for (const registration of registrations) {
|
|
287
|
+
const snapshot = configSnapshotKey(registration.config_json);
|
|
288
|
+
const existing = state.get(registration.id);
|
|
289
|
+
if (existing && existing.configSnapshot === snapshot)
|
|
290
|
+
continue;
|
|
291
|
+
if (existing) {
|
|
292
|
+
existing.watcher.close();
|
|
293
|
+
state.delete(registration.id);
|
|
294
|
+
}
|
|
295
|
+
const config = registration.config_json;
|
|
296
|
+
const watchPath = resolveWatchPath(config);
|
|
297
|
+
if (!fs.existsSync(watchPath)) {
|
|
298
|
+
registration.last_error = `Watch path does not exist: ${watchPath}`;
|
|
299
|
+
await registration.save();
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
const recursive = readBool(config, "recursive", false);
|
|
303
|
+
const debounceMs = readNumber(config, "debounce_seconds", 0.5) * 1000;
|
|
304
|
+
const filter = configFilter(config);
|
|
305
|
+
const debouncer = new FileWatchDebouncer(debounceMs, opts.now);
|
|
306
|
+
const catchUp = readBool(config, "catch_up", false);
|
|
307
|
+
if (catchUp) {
|
|
308
|
+
await runCatchUpEvents(registration, watchPath, recursive, filter, opts);
|
|
309
|
+
}
|
|
310
|
+
let watcher;
|
|
311
|
+
try {
|
|
312
|
+
watcher = attachWatcher(registration, watchPath, recursive, filter, debouncer, opts);
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
316
|
+
registration.last_error = `Failed to watch path: ${watchPath} (${error.message})`;
|
|
317
|
+
await registration.save();
|
|
318
|
+
log.warn(`File-watch registration ${registration.id} failed to attach a watcher`, error);
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
if (registration.last_error) {
|
|
322
|
+
registration.last_error = null;
|
|
323
|
+
await registration.save();
|
|
324
|
+
}
|
|
325
|
+
state.set(registration.id, {
|
|
326
|
+
watcher,
|
|
327
|
+
configSnapshot: snapshot,
|
|
328
|
+
registration,
|
|
329
|
+
watchPath,
|
|
330
|
+
recursive,
|
|
331
|
+
filter,
|
|
332
|
+
catchUp
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Capture a `{path -> mtime}` snapshot for a catch-up-enabled registration
|
|
338
|
+
* and persist it into `cursor` so the next start can diff against it. Caps
|
|
339
|
+
* at `CATCH_UP_SNAPSHOT_CAP` entries and notes the truncation in
|
|
340
|
+
* `last_error` — a capped snapshot means changes to the excluded files while
|
|
341
|
+
* stopped may be missed, which is worth surfacing even though it doesn't
|
|
342
|
+
* block anything.
|
|
343
|
+
*/
|
|
344
|
+
async function captureCatchUpSnapshot(entry) {
|
|
345
|
+
if (!entry.catchUp)
|
|
346
|
+
return;
|
|
347
|
+
const { snapshot, truncated } = scanDirectorySnapshot(entry.watchPath, entry.recursive, entry.filter);
|
|
348
|
+
entry.registration.cursor = JSON.stringify(snapshot);
|
|
349
|
+
if (truncated) {
|
|
350
|
+
entry.registration.last_error = `File-watch catch-up snapshot capped at ${CATCH_UP_SNAPSHOT_CAP} entries; changes to excluded files while stopped may be missed.`;
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
await entry.registration.save();
|
|
354
|
+
}
|
|
355
|
+
catch (err) {
|
|
356
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
357
|
+
log.warn(`File-watch registration ${entry.registration.id} failed to persist catch-up snapshot`, error);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/** Close every watcher tracked by `state`, persisting a catch-up snapshot
|
|
361
|
+
* for each catch-up-enabled registration, and clear the state. */
|
|
362
|
+
export async function stopFileWatch(state) {
|
|
363
|
+
for (const entry of state.values()) {
|
|
364
|
+
entry.watcher.close();
|
|
365
|
+
await captureCatchUpSnapshot(entry);
|
|
366
|
+
}
|
|
367
|
+
state.clear();
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Start the file-watch adapter: an immediate sweep plus a periodic
|
|
371
|
+
* reconciliation timer (`startReaper`/`startScheduler` shape). File events
|
|
372
|
+
* themselves are not polled — they arrive live through each registration's
|
|
373
|
+
* `fs.watch` handle; only registration churn (new/disabled/changed) waits for
|
|
374
|
+
* the sweep.
|
|
375
|
+
*/
|
|
376
|
+
export function startFileWatch(opts) {
|
|
377
|
+
const intervalMs = opts.intervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
|
|
378
|
+
const state = createFileWatchState();
|
|
379
|
+
let sweepPromise = null;
|
|
380
|
+
const sweep = () => {
|
|
381
|
+
if (sweepPromise)
|
|
382
|
+
return;
|
|
383
|
+
sweepPromise = runFileWatchSweepOnce(state, opts)
|
|
384
|
+
.catch((err) => {
|
|
385
|
+
log.warn("File-watch sweep failed", err instanceof Error ? err : new Error(String(err)));
|
|
386
|
+
})
|
|
387
|
+
.finally(() => {
|
|
388
|
+
sweepPromise = null;
|
|
389
|
+
});
|
|
390
|
+
};
|
|
391
|
+
sweep();
|
|
392
|
+
const timer = setInterval(sweep, intervalMs);
|
|
393
|
+
if (isFunctionValue(timer.unref)) {
|
|
394
|
+
timer.unref();
|
|
395
|
+
}
|
|
396
|
+
return async () => {
|
|
397
|
+
clearInterval(timer);
|
|
398
|
+
// A sweep that was already running can attach watchers after this call
|
|
399
|
+
// begins. Wait for it before closing the state so the returned promise
|
|
400
|
+
// means that teardown is complete.
|
|
401
|
+
await sweepPromise;
|
|
402
|
+
await stopFileWatch(state);
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=file-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-watch.js","sourceRoot":"","sources":["../../src/triggers/file-watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration sync — compiles a workflow's trigger nodes into durable
|
|
3
|
+
* `trigger_registrations` rows.
|
|
4
|
+
*
|
|
5
|
+
* Runs whenever a workflow is saved. Every node whose type maps to a known
|
|
6
|
+
* trigger kind gets one registration row, with the node's properties
|
|
7
|
+
* snapshotted into `config_json`; rows for node ids no longer present in the
|
|
8
|
+
* graph are deleted. Saving never arms a trigger: with `options.enabled`
|
|
9
|
+
* omitted, existing rows keep the state the Activate toggle last set and new
|
|
10
|
+
* rows start disabled. Passing `enabled` explicitly is the workflow-level
|
|
11
|
+
* "active" switch; the start/stop endpoints in the jobs router flip a single
|
|
12
|
+
* registration instead.
|
|
13
|
+
*/
|
|
14
|
+
import { TriggerRegistration } from "@nodetool-ai/models";
|
|
15
|
+
import type { Workflow as WorkflowModel } from "@nodetool-ai/models";
|
|
16
|
+
import { TRIGGER_KIND_BY_NODE_TYPE } from "@nodetool-ai/protocol";
|
|
17
|
+
import type { TriggerKind } from "@nodetool-ai/protocol";
|
|
18
|
+
export { TRIGGER_KIND_BY_NODE_TYPE };
|
|
19
|
+
export type { TriggerKind };
|
|
20
|
+
interface SyncRegistrationsOptions {
|
|
21
|
+
/**
|
|
22
|
+
* Workflow-level activation state to apply to every synced row. Omit it on
|
|
23
|
+
* the plain save path: existing rows then keep whatever the Activate toggle
|
|
24
|
+
* last set, and new rows start disabled. Arming a trigger is always an
|
|
25
|
+
* explicit act, never a side effect of saving the graph.
|
|
26
|
+
*/
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Reconcile a workflow's `trigger_registrations` rows against its current
|
|
31
|
+
* graph. Returns the registrations that now exist for the workflow.
|
|
32
|
+
*/
|
|
33
|
+
export declare function syncRegistrations(workflow: WorkflowModel, options: SyncRegistrationsOptions): Promise<TriggerRegistration[]>;
|
|
34
|
+
//# sourceMappingURL=registration-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-sync.d.ts","sourceRoot":"","sources":["../../src/triggers/registration-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAY,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzD,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,CAAC;AAW5B,UAAU,wBAAwB;IAChC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiGD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA4EhC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration sync — compiles a workflow's trigger nodes into durable
|
|
3
|
+
* `trigger_registrations` rows.
|
|
4
|
+
*
|
|
5
|
+
* Runs whenever a workflow is saved. Every node whose type maps to a known
|
|
6
|
+
* trigger kind gets one registration row, with the node's properties
|
|
7
|
+
* snapshotted into `config_json`; rows for node ids no longer present in the
|
|
8
|
+
* graph are deleted. Saving never arms a trigger: with `options.enabled`
|
|
9
|
+
* omitted, existing rows keep the state the Activate toggle last set and new
|
|
10
|
+
* rows start disabled. Passing `enabled` explicitly is the workflow-level
|
|
11
|
+
* "active" switch; the start/stop endpoints in the jobs router flip a single
|
|
12
|
+
* registration instead.
|
|
13
|
+
*/
|
|
14
|
+
import { randomBytes, createHash } from "node:crypto";
|
|
15
|
+
import { RunEvent, TriggerRegistration } from "@nodetool-ai/models";
|
|
16
|
+
import { TRIGGER_KIND_BY_NODE_TYPE } from "@nodetool-ai/protocol";
|
|
17
|
+
import { isObjectLike, isString } from "../lib/wire-values.js";
|
|
18
|
+
export { TRIGGER_KIND_BY_NODE_TYPE };
|
|
19
|
+
/** Keys `syncRegistrations` writes into a webhook registration's `config_json`
|
|
20
|
+
* that are not part of the node's own property snapshot — stripped out
|
|
21
|
+
* before diffing so token/secret rotation doesn't happen on every save. */
|
|
22
|
+
const WEBHOOK_BOOKKEEPING_KEYS = [
|
|
23
|
+
"webhook_token",
|
|
24
|
+
"webhook_secret",
|
|
25
|
+
"webhook_secret_hash"
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* A graph node's own property bag, following the same `properties`-then-
|
|
29
|
+
* `data` precedence the kernel graph loader uses (`kernel/src/graph.ts`).
|
|
30
|
+
*/
|
|
31
|
+
function extractNodeProps(node) {
|
|
32
|
+
const properties = node.properties;
|
|
33
|
+
if (isObjectLike(properties)) {
|
|
34
|
+
return { ...properties };
|
|
35
|
+
}
|
|
36
|
+
const data = node.data;
|
|
37
|
+
if (isObjectLike(data)) {
|
|
38
|
+
return { ...data };
|
|
39
|
+
}
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
function hashSecret(secret) {
|
|
43
|
+
return createHash("sha256").update(secret).digest("hex");
|
|
44
|
+
}
|
|
45
|
+
function generateWebhookToken() {
|
|
46
|
+
return randomBytes(24).toString("hex");
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The shared secret a sender puts in `x-webhook-secret`. It is kept in
|
|
50
|
+
* plaintext because the user has to read it back to configure the sending
|
|
51
|
+
* system — there is no show-once channel — and stored next to its digest so
|
|
52
|
+
* the ingestion route can compare hashes in constant time without rehashing
|
|
53
|
+
* per request.
|
|
54
|
+
*/
|
|
55
|
+
function generateWebhookSecret() {
|
|
56
|
+
return randomBytes(32).toString("hex");
|
|
57
|
+
}
|
|
58
|
+
function stripWebhookBookkeeping(config) {
|
|
59
|
+
const rest = { ...config };
|
|
60
|
+
for (const key of WEBHOOK_BOOKKEEPING_KEYS) {
|
|
61
|
+
delete rest[key];
|
|
62
|
+
}
|
|
63
|
+
return rest;
|
|
64
|
+
}
|
|
65
|
+
/** True when the node-property portion of two config snapshots differs
|
|
66
|
+
* (ignoring webhook token/secret bookkeeping, which sync owns). */
|
|
67
|
+
function configPropsChanged(previous, nextProps) {
|
|
68
|
+
if (!previous)
|
|
69
|
+
return true;
|
|
70
|
+
const previousProps = stripWebhookBookkeeping(previous);
|
|
71
|
+
return JSON.stringify(previousProps) !== JSON.stringify(nextProps);
|
|
72
|
+
}
|
|
73
|
+
function collectTriggerNodes(workflow) {
|
|
74
|
+
const nodes = workflow.graph?.nodes ?? [];
|
|
75
|
+
const entries = [];
|
|
76
|
+
for (const rawNode of nodes) {
|
|
77
|
+
const node = rawNode;
|
|
78
|
+
const nodeId = isString(node.id) ? node.id : undefined;
|
|
79
|
+
const nodeType = isString(node.type) ? node.type : undefined;
|
|
80
|
+
if (!nodeId || !nodeType)
|
|
81
|
+
continue;
|
|
82
|
+
const kind = TRIGGER_KIND_BY_NODE_TYPE[nodeType];
|
|
83
|
+
if (!kind)
|
|
84
|
+
continue;
|
|
85
|
+
entries.push({ nodeId, kind, props: extractNodeProps(node) });
|
|
86
|
+
}
|
|
87
|
+
return entries;
|
|
88
|
+
}
|
|
89
|
+
async function emitTriggerRegistered(workflow, registration) {
|
|
90
|
+
await RunEvent.appendEvent(workflow.id, "TriggerRegistered", {
|
|
91
|
+
registration_id: registration.id,
|
|
92
|
+
workflow_id: workflow.id,
|
|
93
|
+
kind: registration.kind
|
|
94
|
+
}, registration.node_id);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Reconcile a workflow's `trigger_registrations` rows against its current
|
|
98
|
+
* graph. Returns the registrations that now exist for the workflow.
|
|
99
|
+
*/
|
|
100
|
+
export async function syncRegistrations(workflow, options) {
|
|
101
|
+
const triggerNodes = collectTriggerNodes(workflow);
|
|
102
|
+
const triggerNodeIds = new Set(triggerNodes.map((n) => n.nodeId));
|
|
103
|
+
const existing = await TriggerRegistration.findByWorkflow(workflow.id);
|
|
104
|
+
const existingByNodeId = new Map(existing.map((r) => [r.node_id, r]));
|
|
105
|
+
const results = [];
|
|
106
|
+
for (const entry of triggerNodes) {
|
|
107
|
+
const current = existingByNodeId.get(entry.nodeId) ?? null;
|
|
108
|
+
const wasEnabled = current ? current.enabled === 1 : false;
|
|
109
|
+
let config = { ...entry.props };
|
|
110
|
+
if (entry.kind === "webhook") {
|
|
111
|
+
const previousConfig = current?.config_json ?? null;
|
|
112
|
+
const webhookToken = previousConfig?.webhook_token ??
|
|
113
|
+
generateWebhookToken();
|
|
114
|
+
const webhookSecret = previousConfig?.webhook_secret ??
|
|
115
|
+
generateWebhookSecret();
|
|
116
|
+
config = {
|
|
117
|
+
...config,
|
|
118
|
+
webhook_token: webhookToken,
|
|
119
|
+
webhook_secret: webhookSecret,
|
|
120
|
+
webhook_secret_hash: hashSecret(webhookSecret)
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const propsChanged = configPropsChanged(current?.config_json ?? null, entry.props);
|
|
124
|
+
const enabled = options.enabled ?? wasEnabled;
|
|
125
|
+
let registration;
|
|
126
|
+
if (current) {
|
|
127
|
+
current.kind = entry.kind;
|
|
128
|
+
current.config_json = config;
|
|
129
|
+
current.enabled = enabled ? 1 : 0;
|
|
130
|
+
if (propsChanged) {
|
|
131
|
+
current.cursor = null;
|
|
132
|
+
}
|
|
133
|
+
await current.save();
|
|
134
|
+
registration = current;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
registration = await TriggerRegistration.create({
|
|
138
|
+
user_id: workflow.user_id,
|
|
139
|
+
workflow_id: workflow.id,
|
|
140
|
+
node_id: entry.nodeId,
|
|
141
|
+
kind: entry.kind,
|
|
142
|
+
config_json: config,
|
|
143
|
+
enabled: enabled ? 1 : 0,
|
|
144
|
+
cursor: null
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (enabled && !wasEnabled) {
|
|
148
|
+
await emitTriggerRegistered(workflow, registration);
|
|
149
|
+
}
|
|
150
|
+
results.push(registration);
|
|
151
|
+
}
|
|
152
|
+
// Registrations for nodes that no longer exist (or are no longer trigger
|
|
153
|
+
// nodes) are removed outright — cursors only survive a disable, not a
|
|
154
|
+
// deletion.
|
|
155
|
+
for (const reg of existing) {
|
|
156
|
+
if (!triggerNodeIds.has(reg.node_id)) {
|
|
157
|
+
await reg.delete();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return results;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=registration-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-sync.js","sourceRoot":"","sources":["../../src/triggers/registration-sync.ts"],"names":[],"mappings":"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"}
|