@nodetool-ai/websocket 0.8.1 → 0.8.3
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/dist/.nodetool-build-stamp +1 -1
- package/dist/chat-turn-registry.d.ts +2 -1
- package/dist/chat-turn-registry.d.ts.map +1 -1
- package/dist/chat-turn-registry.js +8 -1
- package/dist/chat-turn-registry.js.map +1 -1
- package/dist/collection-api.d.ts.map +1 -1
- package/dist/collection-api.js +41 -6
- package/dist/collection-api.js.map +1 -1
- package/dist/custom-providers.d.ts.map +1 -1
- package/dist/custom-providers.js +6 -1
- package/dist/custom-providers.js.map +1 -1
- package/dist/error-traces.d.ts +56 -0
- package/dist/error-traces.d.ts.map +1 -0
- package/dist/error-traces.js +179 -0
- package/dist/error-traces.js.map +1 -0
- package/dist/example-workflows.d.ts.map +1 -1
- package/dist/example-workflows.js +6 -0
- package/dist/example-workflows.js.map +1 -1
- package/dist/fake-runtime.d.ts +41 -6
- package/dist/fake-runtime.d.ts.map +1 -1
- package/dist/fake-runtime.js +247 -16
- package/dist/fake-runtime.js.map +1 -1
- package/dist/file-api.d.ts.map +1 -1
- package/dist/file-api.js +6 -8
- package/dist/file-api.js.map +1 -1
- package/dist/generation-recovery.d.ts.map +1 -1
- package/dist/generation-recovery.js +32 -7
- package/dist/generation-recovery.js.map +1 -1
- package/dist/headless-job-runner.d.ts.map +1 -1
- package/dist/headless-job-runner.js +5 -1
- package/dist/headless-job-runner.js.map +1 -1
- package/dist/http-api.d.ts +3 -1
- package/dist/http-api.d.ts.map +1 -1
- package/dist/http-api.js +66 -9
- package/dist/http-api.js.map +1 -1
- package/dist/http-body-schemas.d.ts +2 -0
- package/dist/http-body-schemas.d.ts.map +1 -1
- package/dist/http-body-schemas.js +8 -1
- package/dist/http-body-schemas.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/interrupted-jobs.d.ts +14 -0
- package/dist/interrupted-jobs.d.ts.map +1 -0
- package/dist/interrupted-jobs.js +28 -0
- package/dist/interrupted-jobs.js.map +1 -0
- package/dist/lib/admin.d.ts +7 -0
- package/dist/lib/admin.d.ts.map +1 -0
- package/dist/lib/admin.js +20 -0
- package/dist/lib/admin.js.map +1 -0
- package/dist/lib/app-debug-service.js +1 -1
- package/dist/lib/app-debug-service.js.map +1 -1
- package/dist/lib/app-instances-service.d.ts +1319 -0
- package/dist/lib/app-instances-service.d.ts.map +1 -0
- package/dist/lib/app-instances-service.js +377 -0
- package/dist/lib/app-instances-service.js.map +1 -0
- package/dist/lib/app-project-export.d.ts +12 -0
- package/dist/lib/app-project-export.d.ts.map +1 -0
- package/dist/lib/app-project-export.js +42 -0
- package/dist/lib/app-project-export.js.map +1 -0
- package/dist/lib/app-run-cancellation.d.ts +4 -0
- package/dist/lib/app-run-cancellation.d.ts.map +1 -0
- package/dist/lib/app-run-cancellation.js +28 -0
- package/dist/lib/app-run-cancellation.js.map +1 -0
- package/dist/lib/applications-service.d.ts +182 -1
- package/dist/lib/applications-service.d.ts.map +1 -1
- package/dist/lib/applications-service.js +27 -6
- package/dist/lib/applications-service.js.map +1 -1
- package/dist/lib/asset-export.d.ts +6 -2
- package/dist/lib/asset-export.d.ts.map +1 -1
- package/dist/lib/asset-export.js +15 -7
- package/dist/lib/asset-export.js.map +1 -1
- package/dist/lib/asset-paths.d.ts +7 -11
- package/dist/lib/asset-paths.d.ts.map +1 -1
- package/dist/lib/asset-paths.js +8 -56
- package/dist/lib/asset-paths.js.map +1 -1
- package/dist/lib/asset-response.d.ts.map +1 -1
- package/dist/lib/asset-response.js +3 -1
- package/dist/lib/asset-response.js.map +1 -1
- package/dist/lib/audio-peaks.d.ts.map +1 -1
- package/dist/lib/audio-peaks.js +5 -1
- package/dist/lib/audio-peaks.js.map +1 -1
- package/dist/lib/bridge.d.ts.map +1 -1
- package/dist/lib/bridge.js.map +1 -1
- package/dist/lib/cloud-profile.d.ts +10 -0
- package/dist/lib/cloud-profile.d.ts.map +1 -0
- package/dist/lib/cloud-profile.js +13 -0
- package/dist/lib/cloud-profile.js.map +1 -0
- package/dist/lib/document-model-interfaces.d.ts.map +1 -1
- package/dist/lib/document-model-interfaces.js +9 -8
- package/dist/lib/document-model-interfaces.js.map +1 -1
- package/dist/lib/example-apps.d.ts +9 -0
- package/dist/lib/example-apps.d.ts.map +1 -1
- package/dist/lib/example-apps.js +61 -14
- package/dist/lib/example-apps.js.map +1 -1
- package/dist/lib/http-tracing.d.ts +12 -0
- package/dist/lib/http-tracing.d.ts.map +1 -0
- package/dist/lib/http-tracing.js +81 -0
- package/dist/lib/http-tracing.js.map +1 -0
- package/dist/lib/http-user-id.d.ts +2 -0
- package/dist/lib/http-user-id.d.ts.map +1 -0
- package/dist/lib/http-user-id.js +4 -0
- package/dist/lib/http-user-id.js.map +1 -0
- package/dist/lib/json-body.d.ts +11 -0
- package/dist/lib/json-body.d.ts.map +1 -0
- package/dist/lib/json-body.js +13 -0
- package/dist/lib/json-body.js.map +1 -0
- package/dist/lib/media.d.ts +1 -6
- package/dist/lib/media.d.ts.map +1 -1
- package/dist/lib/media.js +8 -44
- package/dist/lib/media.js.map +1 -1
- package/dist/lib/public-routes.d.ts +22 -0
- package/dist/lib/public-routes.d.ts.map +1 -1
- package/dist/lib/public-routes.js +41 -0
- package/dist/lib/public-routes.js.map +1 -1
- package/dist/lib/public-workflow-share.d.ts +31 -0
- package/dist/lib/public-workflow-share.d.ts.map +1 -0
- package/dist/lib/public-workflow-share.js +88 -0
- package/dist/lib/public-workflow-share.js.map +1 -0
- package/dist/lib/python-metadata-roots.d.ts +27 -0
- package/dist/lib/python-metadata-roots.d.ts.map +1 -0
- package/dist/lib/python-metadata-roots.js +92 -0
- package/dist/lib/python-metadata-roots.js.map +1 -0
- package/dist/lib/run-trace-live-delivery.d.ts +25 -0
- package/dist/lib/run-trace-live-delivery.d.ts.map +1 -0
- package/dist/lib/run-trace-live-delivery.js +91 -0
- package/dist/lib/run-trace-live-delivery.js.map +1 -0
- package/dist/lib/runtime-detection.d.ts +1 -1
- package/dist/lib/runtime-detection.d.ts.map +1 -1
- package/dist/lib/runtime-detection.js +2 -1
- package/dist/lib/runtime-detection.js.map +1 -1
- package/dist/lib/server-auth-token.d.ts +18 -0
- package/dist/lib/server-auth-token.d.ts.map +1 -0
- package/dist/lib/server-auth-token.js +28 -0
- package/dist/lib/server-auth-token.js.map +1 -0
- package/dist/lib/test-ui-run-routes.d.ts +8 -0
- package/dist/lib/test-ui-run-routes.d.ts.map +1 -0
- package/dist/lib/test-ui-run-routes.js +42 -0
- package/dist/lib/test-ui-run-routes.js.map +1 -0
- package/dist/lib/thumbnail.d.ts.map +1 -1
- package/dist/lib/thumbnail.js +12 -9
- package/dist/lib/thumbnail.js.map +1 -1
- package/dist/lib/timeline-bundle.d.ts +159 -16
- package/dist/lib/timeline-bundle.d.ts.map +1 -1
- package/dist/lib/timeline-bundle.js +34 -6
- package/dist/lib/timeline-bundle.js.map +1 -1
- package/dist/lib/timeline-media-export.d.ts +18 -0
- package/dist/lib/timeline-media-export.d.ts.map +1 -0
- package/dist/lib/timeline-media-export.js +66 -0
- package/dist/lib/timeline-media-export.js.map +1 -0
- package/dist/lib/timeline-premiere-import.d.ts +24 -0
- package/dist/lib/timeline-premiere-import.d.ts.map +1 -0
- package/dist/lib/timeline-premiere-import.js +102 -0
- package/dist/lib/timeline-premiere-import.js.map +1 -0
- package/dist/lib/timeline-premiere.d.ts +38 -0
- package/dist/lib/timeline-premiere.d.ts.map +1 -0
- package/dist/lib/timeline-premiere.js +87 -0
- package/dist/lib/timeline-premiere.js.map +1 -0
- package/dist/lib/video-proxy.d.ts.map +1 -1
- package/dist/lib/video-proxy.js +3 -2
- package/dist/lib/video-proxy.js.map +1 -1
- package/dist/lib/workflow-service.d.ts.map +1 -1
- package/dist/lib/workflow-service.js +4 -1
- package/dist/lib/workflow-service.js.map +1 -1
- package/dist/mcp-agent-tools.d.ts.map +1 -1
- package/dist/mcp-agent-tools.js +95 -162
- package/dist/mcp-agent-tools.js.map +1 -1
- package/dist/mcp-client-config.d.ts +64 -0
- package/dist/mcp-client-config.d.ts.map +1 -0
- package/dist/mcp-client-config.js +353 -0
- package/dist/mcp-client-config.js.map +1 -0
- package/dist/mcp-server.d.ts +7 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +163 -16
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-skill-prompts.d.ts +23 -0
- package/dist/mcp-skill-prompts.d.ts.map +1 -0
- package/dist/mcp-skill-prompts.js +91 -0
- package/dist/mcp-skill-prompts.js.map +1 -0
- package/dist/mcp-tool-deps.d.ts.map +1 -1
- package/dist/mcp-tool-deps.js +8 -1
- package/dist/mcp-tool-deps.js.map +1 -1
- package/dist/models-api.d.ts +10 -0
- package/dist/models-api.d.ts.map +1 -1
- package/dist/models-api.js +29 -2
- package/dist/models-api.js.map +1 -1
- package/dist/node-registry-setup.d.ts +1 -1
- package/dist/node-registry-setup.d.ts.map +1 -1
- package/dist/node-registry-setup.js +21 -114
- package/dist/node-registry-setup.js.map +1 -1
- package/dist/oauth-api.d.ts.map +1 -1
- package/dist/oauth-api.js +45 -23
- package/dist/oauth-api.js.map +1 -1
- package/dist/openai-api.d.ts.map +1 -1
- package/dist/openai-api.js +10 -2
- package/dist/openai-api.js.map +1 -1
- package/dist/plugins/websocket.d.ts.map +1 -1
- package/dist/plugins/websocket.js +27 -59
- package/dist/plugins/websocket.js.map +1 -1
- package/dist/python-bridge-gate.d.ts +28 -0
- package/dist/python-bridge-gate.d.ts.map +1 -0
- package/dist/python-bridge-gate.js +36 -0
- package/dist/python-bridge-gate.js.map +1 -0
- package/dist/routes/app-runs.d.ts +4 -0
- package/dist/routes/app-runs.d.ts.map +1 -0
- package/dist/routes/app-runs.js +173 -0
- package/dist/routes/app-runs.js.map +1 -0
- package/dist/routes/applications.d.ts +1 -0
- package/dist/routes/applications.d.ts.map +1 -1
- package/dist/routes/applications.js +24 -0
- package/dist/routes/applications.js.map +1 -1
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +31 -41
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +6 -0
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/documents.d.ts.map +1 -1
- package/dist/routes/documents.js +24 -0
- package/dist/routes/documents.js.map +1 -1
- package/dist/routes/fal-pricing-estimate.d.ts.map +1 -1
- package/dist/routes/fal-pricing-estimate.js +2 -0
- package/dist/routes/fal-pricing-estimate.js.map +1 -1
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +2 -0
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/games.d.ts +38 -0
- package/dist/routes/games.d.ts.map +1 -0
- package/dist/routes/games.js +158 -0
- package/dist/routes/games.js.map +1 -0
- package/dist/routes/integrations.d.ts.map +1 -1
- package/dist/routes/integrations.js +22 -26
- package/dist/routes/integrations.js.map +1 -1
- package/dist/routes/js-scripts.d.ts +10 -4
- package/dist/routes/js-scripts.d.ts.map +1 -1
- package/dist/routes/js-scripts.js +451 -69
- package/dist/routes/js-scripts.js.map +1 -1
- package/dist/routes/nodes.d.ts.map +1 -1
- package/dist/routes/nodes.js +34 -1
- package/dist/routes/nodes.js.map +1 -1
- package/dist/routes/public-shared-workflows.d.ts +16 -0
- package/dist/routes/public-shared-workflows.d.ts.map +1 -0
- package/dist/routes/public-shared-workflows.js +55 -0
- package/dist/routes/public-shared-workflows.js.map +1 -0
- package/dist/routes/run-spans.d.ts +4 -0
- package/dist/routes/run-spans.d.ts.map +1 -0
- package/dist/routes/run-spans.js +53 -0
- package/dist/routes/run-spans.js.map +1 -0
- package/dist/routes/storage.d.ts.map +1 -1
- package/dist/routes/storage.js +2 -0
- package/dist/routes/storage.js.map +1 -1
- package/dist/routes/storyboards.d.ts.map +1 -1
- package/dist/routes/storyboards.js +6 -3
- package/dist/routes/storyboards.js.map +1 -1
- package/dist/routes/timeline-fonts.d.ts +22 -0
- package/dist/routes/timeline-fonts.d.ts.map +1 -1
- package/dist/routes/timeline-fonts.js +138 -7
- package/dist/routes/timeline-fonts.js.map +1 -1
- package/dist/routes/timelines.d.ts +8 -4
- package/dist/routes/timelines.d.ts.map +1 -1
- package/dist/routes/timelines.js +209 -16
- package/dist/routes/timelines.js.map +1 -1
- package/dist/screenshot-docs-seed.d.ts +24 -0
- package/dist/screenshot-docs-seed.d.ts.map +1 -0
- package/dist/screenshot-docs-seed.js +414 -0
- package/dist/screenshot-docs-seed.js.map +1 -0
- package/dist/screenshot-projects.d.ts.map +1 -1
- package/dist/screenshot-projects.js +9 -9
- package/dist/screenshot-projects.js.map +1 -1
- package/dist/screenshot-server.js +114 -20
- package/dist/screenshot-server.js.map +1 -1
- package/dist/sdk/sdk-model-download-service.d.ts.map +1 -1
- package/dist/sdk/sdk-model-download-service.js +5 -2
- package/dist/sdk/sdk-model-download-service.js.map +1 -1
- package/dist/server.js +173 -109
- package/dist/server.js.map +1 -1
- package/dist/session/app-run-fold.d.ts +7 -0
- package/dist/session/app-run-fold.d.ts.map +1 -0
- package/dist/session/app-run-fold.js +45 -0
- package/dist/session/app-run-fold.js.map +1 -0
- package/dist/session/chat-prompt.d.ts.map +1 -1
- package/dist/session/chat-prompt.js +37 -15
- package/dist/session/chat-prompt.js.map +1 -1
- package/dist/session/chat-turn.d.ts +11 -0
- package/dist/session/chat-turn.d.ts.map +1 -1
- package/dist/session/chat-turn.js +270 -116
- package/dist/session/chat-turn.js.map +1 -1
- package/dist/session/commands.d.ts +14 -0
- package/dist/session/commands.d.ts.map +1 -1
- package/dist/session/commands.js +119 -14
- package/dist/session/commands.js.map +1 -1
- package/dist/session/inference.d.ts +30 -2
- package/dist/session/inference.d.ts.map +1 -1
- package/dist/session/inference.js +165 -16
- package/dist/session/inference.js.map +1 -1
- package/dist/session/job-execution.d.ts +7 -1
- package/dist/session/job-execution.d.ts.map +1 -1
- package/dist/session/job-execution.js +329 -42
- package/dist/session/job-execution.js.map +1 -1
- package/dist/session/model-interfaces.d.ts +2 -1
- package/dist/session/model-interfaces.d.ts.map +1 -1
- package/dist/session/model-interfaces.js +1 -0
- package/dist/session/model-interfaces.js.map +1 -1
- package/dist/storage-api.d.ts +0 -4
- package/dist/storage-api.d.ts.map +1 -1
- package/dist/storage-api.js +3 -26
- package/dist/storage-api.js.map +1 -1
- package/dist/storage-retention.d.ts +5 -0
- package/dist/storage-retention.d.ts.map +1 -1
- package/dist/storage-retention.js +22 -1
- package/dist/storage-retention.js.map +1 -1
- package/dist/test-ui-server.d.ts +11 -0
- package/dist/test-ui-server.d.ts.map +1 -1
- package/dist/test-ui-server.js +84 -6
- package/dist/test-ui-server.js.map +1 -1
- package/dist/timeline-generation-recovery.d.ts +4 -0
- package/dist/timeline-generation-recovery.d.ts.map +1 -0
- package/dist/timeline-generation-recovery.js +72 -0
- package/dist/timeline-generation-recovery.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +26 -6
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/triggers/file-watch.d.ts.map +1 -1
- package/dist/triggers/file-watch.js +35 -19
- package/dist/triggers/file-watch.js.map +1 -1
- package/dist/triggers/scheduler.d.ts.map +1 -1
- package/dist/triggers/scheduler.js +7 -5
- package/dist/triggers/scheduler.js.map +1 -1
- package/dist/triggers/stores.js +8 -8
- package/dist/triggers/stores.js.map +1 -1
- package/dist/triggers/webhook-route.js +2 -2
- package/dist/triggers/webhook-route.js.map +1 -1
- package/dist/trpc/error-formatter.d.ts.map +1 -1
- package/dist/trpc/error-formatter.js +2 -1
- package/dist/trpc/error-formatter.js.map +1 -1
- package/dist/trpc/error-logging.d.ts +10 -0
- package/dist/trpc/error-logging.d.ts.map +1 -1
- package/dist/trpc/error-logging.js +21 -0
- package/dist/trpc/error-logging.js.map +1 -1
- package/dist/trpc/router.d.ts +100 -31028
- package/dist/trpc/router.d.ts.map +1 -1
- package/dist/trpc/router.js +12 -3
- package/dist/trpc/router.js.map +1 -1
- package/dist/trpc/routers/app-instances.d.ts +2332 -0
- package/dist/trpc/routers/app-instances.d.ts.map +1 -0
- package/dist/trpc/routers/app-instances.js +52 -0
- package/dist/trpc/routers/app-instances.js.map +1 -0
- package/dist/trpc/routers/app-runs.d.ts +1120 -0
- package/dist/trpc/routers/app-runs.d.ts.map +1 -0
- package/dist/trpc/routers/app-runs.js +28 -0
- package/dist/trpc/routers/app-runs.js.map +1 -0
- package/dist/trpc/routers/applications.d.ts +1102 -0
- package/dist/trpc/routers/applications.d.ts.map +1 -1
- package/dist/trpc/routers/applications.js +5 -2
- package/dist/trpc/routers/applications.js.map +1 -1
- package/dist/trpc/routers/assets.d.ts +18 -0
- package/dist/trpc/routers/assets.d.ts.map +1 -1
- package/dist/trpc/routers/assets.js +20 -5
- package/dist/trpc/routers/assets.js.map +1 -1
- package/dist/trpc/routers/bug-reports.d.ts +33 -0
- package/dist/trpc/routers/bug-reports.d.ts.map +1 -0
- package/dist/trpc/routers/bug-reports.js +69 -0
- package/dist/trpc/routers/bug-reports.js.map +1 -0
- package/dist/trpc/routers/collections.d.ts.map +1 -1
- package/dist/trpc/routers/collections.js +16 -10
- package/dist/trpc/routers/collections.js.map +1 -1
- package/dist/trpc/routers/credits.d.ts.map +1 -1
- package/dist/trpc/routers/credits.js +11 -1
- package/dist/trpc/routers/credits.js.map +1 -1
- package/dist/trpc/routers/documents.d.ts.map +1 -1
- package/dist/trpc/routers/documents.js +8 -2
- package/dist/trpc/routers/documents.js.map +1 -1
- package/dist/trpc/routers/error-traces.d.ts +132 -0
- package/dist/trpc/routers/error-traces.d.ts.map +1 -0
- package/dist/trpc/routers/error-traces.js +118 -0
- package/dist/trpc/routers/error-traces.js.map +1 -0
- package/dist/trpc/routers/extension.d.ts +3 -3
- package/dist/trpc/routers/extension.d.ts.map +1 -1
- package/dist/trpc/routers/extension.js +13 -9
- package/dist/trpc/routers/extension.js.map +1 -1
- package/dist/trpc/routers/gameDraftHistory.d.ts +7 -0
- package/dist/trpc/routers/gameDraftHistory.d.ts.map +1 -0
- package/dist/trpc/routers/gameDraftHistory.js +40 -0
- package/dist/trpc/routers/gameDraftHistory.js.map +1 -0
- package/dist/trpc/routers/games.d.ts +59974 -5414
- package/dist/trpc/routers/games.d.ts.map +1 -1
- package/dist/trpc/routers/games.js +531 -136
- package/dist/trpc/routers/games.js.map +1 -1
- package/dist/trpc/routers/jobs.d.ts +42 -0
- package/dist/trpc/routers/jobs.d.ts.map +1 -1
- package/dist/trpc/routers/jobs.js +89 -4
- package/dist/trpc/routers/jobs.js.map +1 -1
- package/dist/trpc/routers/js-scripts.d.ts.map +1 -1
- package/dist/trpc/routers/js-scripts.js +18 -2
- package/dist/trpc/routers/js-scripts.js.map +1 -1
- package/dist/trpc/routers/mcp-config.d.ts +3 -1
- package/dist/trpc/routers/mcp-config.d.ts.map +1 -1
- package/dist/trpc/routers/mcp-config.js +46 -208
- package/dist/trpc/routers/mcp-config.js.map +1 -1
- package/dist/trpc/routers/messages.d.ts +10 -0
- package/dist/trpc/routers/messages.d.ts.map +1 -1
- package/dist/trpc/routers/messages.js +16 -2
- package/dist/trpc/routers/messages.js.map +1 -1
- package/dist/trpc/routers/models.d.ts +130 -0
- package/dist/trpc/routers/models.d.ts.map +1 -1
- package/dist/trpc/routers/models.js +119 -61
- package/dist/trpc/routers/models.js.map +1 -1
- package/dist/trpc/routers/packs.d.ts.map +1 -1
- package/dist/trpc/routers/packs.js +18 -4
- package/dist/trpc/routers/packs.js.map +1 -1
- package/dist/trpc/routers/projects.d.ts +66 -2
- package/dist/trpc/routers/projects.d.ts.map +1 -1
- package/dist/trpc/routers/projects.js +19 -2
- package/dist/trpc/routers/projects.js.map +1 -1
- package/dist/trpc/routers/runs.d.ts +472 -0
- package/dist/trpc/routers/runs.d.ts.map +1 -0
- package/dist/trpc/routers/runs.js +40 -0
- package/dist/trpc/routers/runs.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +3 -0
- package/dist/trpc/routers/settings.d.ts.map +1 -1
- package/dist/trpc/routers/settings.js +32 -5
- package/dist/trpc/routers/settings.js.map +1 -1
- package/dist/trpc/routers/sketch.d.ts +44 -0
- package/dist/trpc/routers/sketch.d.ts.map +1 -1
- package/dist/trpc/routers/sketch.js +2 -2
- package/dist/trpc/routers/sketch.js.map +1 -1
- package/dist/trpc/routers/storyboards.d.ts +903 -1
- package/dist/trpc/routers/storyboards.d.ts.map +1 -1
- package/dist/trpc/routers/storyboards.js +8 -5
- package/dist/trpc/routers/storyboards.js.map +1 -1
- package/dist/trpc/routers/threads.d.ts.map +1 -1
- package/dist/trpc/routers/threads.js +8 -2
- package/dist/trpc/routers/threads.js.map +1 -1
- package/dist/trpc/routers/timeline.d.ts +647 -63
- package/dist/trpc/routers/timeline.d.ts.map +1 -1
- package/dist/trpc/routers/timeline.js +193 -4
- package/dist/trpc/routers/timeline.js.map +1 -1
- package/dist/trpc/routers/triggers.d.ts.map +1 -1
- package/dist/trpc/routers/triggers.js +18 -3
- package/dist/trpc/routers/triggers.js.map +1 -1
- package/dist/trpc/routers/users.d.ts +3 -2
- package/dist/trpc/routers/users.d.ts.map +1 -1
- package/dist/trpc/routers/users.js +25 -27
- package/dist/trpc/routers/users.js.map +1 -1
- package/dist/trpc/routers/worker.d.ts +10 -9
- package/dist/trpc/routers/worker.d.ts.map +1 -1
- package/dist/trpc/routers/worker.js +40 -16
- package/dist/trpc/routers/worker.js.map +1 -1
- package/dist/trpc/routers/workflows.d.ts +202 -3
- package/dist/trpc/routers/workflows.d.ts.map +1 -1
- package/dist/trpc/routers/workflows.js +72 -12
- package/dist/trpc/routers/workflows.js.map +1 -1
- package/dist/trpc/sandbox-coverage.d.ts.map +1 -1
- package/dist/trpc/sandbox-coverage.js +119 -0
- package/dist/trpc/sandbox-coverage.js.map +1 -1
- package/dist/websocket-client-session.d.ts +4 -2
- package/dist/websocket-client-session.d.ts.map +1 -1
- package/dist/websocket-client-session.js +23 -3
- package/dist/websocket-client-session.js.map +1 -1
- package/dist/worker-settings-env.d.ts +23 -0
- package/dist/worker-settings-env.d.ts.map +1 -0
- package/dist/worker-settings-env.js +47 -0
- package/dist/worker-settings-env.js.map +1 -0
- package/dist/workflow-interface-service.d.ts +7 -0
- package/dist/workflow-interface-service.d.ts.map +1 -1
- package/package.json +58 -41
- package/dist/extension-cdp-bridge.d.ts +0 -85
- package/dist/extension-cdp-bridge.d.ts.map +0 -1
- package/dist/extension-cdp-bridge.js +0 -163
- package/dist/extension-cdp-bridge.js.map +0 -1
package/dist/lib/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAO,SAAqC,EAGvD;CACF;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBtE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAoBxC;AAED,+EAA+E;AAC/E,wBAAsB,eAAe,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CASrB"}
|
package/dist/lib/media.js
CHANGED
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { execFile as execFileCb } from "node:child_process";
|
|
7
7
|
import { promisify } from "node:util";
|
|
8
|
-
import {
|
|
9
|
-
import os from "node:os";
|
|
10
|
-
import path from "node:path";
|
|
8
|
+
import { trimVideoWindow as trimSharedVideoWindow } from "@nodetool-ai/runtime/trim-video-window";
|
|
11
9
|
import { isObjectLike } from "./wire-values.js";
|
|
10
|
+
import { withTaskSpan } from "@nodetool-ai/runtime/tracing";
|
|
12
11
|
const execFile = promisify(execFileCb);
|
|
13
12
|
/**
|
|
14
13
|
* Thrown when the `ffmpeg`/`ffprobe` binaries are not on PATH (ENOENT), so the
|
|
@@ -86,7 +85,7 @@ export async function probeDurationMs(filePath) {
|
|
|
86
85
|
*/
|
|
87
86
|
export async function extractAudio(inputPath, outputPath) {
|
|
88
87
|
try {
|
|
89
|
-
await execFile("ffmpeg", ["-y", "-i", inputPath, "-vn", "-acodec", "pcm_s16le", outputPath], { maxBuffer: 50 * 1024 * 1024 });
|
|
88
|
+
await withTaskSpan("cpu", "subprocess.run", { "process.executable.name": "ffmpeg" }, () => execFile("ffmpeg", ["-y", "-i", inputPath, "-vn", "-acodec", "pcm_s16le", outputPath], { maxBuffer: 50 * 1024 * 1024 }));
|
|
90
89
|
return { durationMs: await probeDurationMs(outputPath) };
|
|
91
90
|
}
|
|
92
91
|
catch (err) {
|
|
@@ -96,51 +95,16 @@ export async function extractAudio(inputPath, outputPath) {
|
|
|
96
95
|
throw err;
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Materialize the exact constant-speed source window sent to a video editor.
|
|
101
|
-
* The source asset remains untouched in storage. The returned MP4 starts at
|
|
102
|
-
* time zero so providers receive the same window-relative contract as the
|
|
103
|
-
* timeline candidate.
|
|
104
|
-
*/
|
|
98
|
+
/** Shared source-window materialization used by browser and headless edits. */
|
|
105
99
|
export async function trimVideoWindow(input, startMs, endMs) {
|
|
106
|
-
if (input.length === 0 ||
|
|
107
|
-
!Number.isFinite(startMs) ||
|
|
108
|
-
!Number.isFinite(endMs) ||
|
|
109
|
-
startMs < 0 ||
|
|
110
|
-
endMs <= startMs) {
|
|
111
|
-
throw new Error("Video edit source window must be a positive finite range.");
|
|
112
|
-
}
|
|
113
|
-
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nodetool-video-edit-"));
|
|
114
|
-
const inputPath = path.join(dir, "input.mp4");
|
|
115
|
-
const outputPath = path.join(dir, "window.mp4");
|
|
116
100
|
try {
|
|
117
|
-
await
|
|
118
|
-
await execFile("ffmpeg", [
|
|
119
|
-
"-y",
|
|
120
|
-
"-i",
|
|
121
|
-
inputPath,
|
|
122
|
-
"-ss",
|
|
123
|
-
String(startMs / 1000),
|
|
124
|
-
"-t",
|
|
125
|
-
String((endMs - startMs) / 1000),
|
|
126
|
-
"-c:v",
|
|
127
|
-
"libx264",
|
|
128
|
-
"-c:a",
|
|
129
|
-
"aac",
|
|
130
|
-
"-movflags",
|
|
131
|
-
"+faststart",
|
|
132
|
-
outputPath
|
|
133
|
-
], { maxBuffer: 50 * 1024 * 1024 });
|
|
134
|
-
return new Uint8Array(await fs.readFile(outputPath));
|
|
101
|
+
return await trimSharedVideoWindow(input, startMs, endMs);
|
|
135
102
|
}
|
|
136
|
-
catch (
|
|
137
|
-
if (isEnoent(
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (isEnoent(error)) {
|
|
138
105
|
throw new MediaToolingMissingError();
|
|
139
106
|
}
|
|
140
|
-
throw
|
|
141
|
-
}
|
|
142
|
-
finally {
|
|
143
|
-
await fs.rm(dir, { recursive: true, force: true });
|
|
107
|
+
throw error;
|
|
144
108
|
}
|
|
145
109
|
}
|
|
146
110
|
//# sourceMappingURL=media.js.map
|
package/dist/lib/media.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,13 @@ export declare function isPublicMcpOauthAsRequest(pathname: string): boolean;
|
|
|
71
71
|
* outside production, where the surface does not exist at all.
|
|
72
72
|
*/
|
|
73
73
|
export declare function isPublicAppDeploymentRequest(pathname: string, method: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* The read behind a workflow's public share link. The token in the path is
|
|
76
|
+
* the credential: an unguessable 24-byte secret the owner minted and can
|
|
77
|
+
* revoke. Only a GET of exactly one segment qualifies, and the prefix sits
|
|
78
|
+
* outside `/api/workflows/` so it can never widen onto the caller's library.
|
|
79
|
+
*/
|
|
80
|
+
export declare function isPublicSharedWorkflowRequest(pathname: string, method: string): boolean;
|
|
74
81
|
/**
|
|
75
82
|
* The fal callback authenticates itself with the provider's Ed25519
|
|
76
83
|
* signature. Only POSTs to the exact callback shape are exempt; neighbouring
|
|
@@ -92,4 +99,19 @@ export declare function isPublicAtlasCloudWebhookRequest(pathname: string, metho
|
|
|
92
99
|
* covered by the global `@fastify/rate-limit` plugin registered before auth.
|
|
93
100
|
*/
|
|
94
101
|
export declare function isPublicAuthExemptRoute(pathname: string, method: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* The path the router will match for `url`. find-my-way runs `decodeURI` on
|
|
104
|
+
* the path before choosing a route, so `/%61pi/workflows` reaches the
|
|
105
|
+
* `/api/workflows` handler. Every auth decision must test this decoded form,
|
|
106
|
+
* never the raw `req.url`. Returns null for malformed escapes, which the
|
|
107
|
+
* router refuses anyway.
|
|
108
|
+
*/
|
|
109
|
+
export declare function routedPathname(url: string): string | null;
|
|
110
|
+
/**
|
|
111
|
+
* GETs the bundled frontend serves without auth: anything outside the API,
|
|
112
|
+
* WebSocket, OpenAI-compatible, tRPC and MCP prefixes. `GET /mcp` is the MCP
|
|
113
|
+
* SSE stream, so it stays behind auth to bind the session's user. A path that
|
|
114
|
+
* does not decode is never treated as a static asset.
|
|
115
|
+
*/
|
|
116
|
+
export declare function isStaticAppRequest(pathname: string | null, method: string): boolean;
|
|
95
117
|
//# sourceMappingURL=public-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-routes.d.ts","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAQT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAST;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAIT;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,
|
|
1
|
+
{"version":3,"file":"public-routes.d.ts","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAQT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAST;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAIT;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAyBT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT"}
|
|
@@ -100,6 +100,19 @@ export function isPublicAppDeploymentRequest(pathname, method) {
|
|
|
100
100
|
}
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* The read behind a workflow's public share link. The token in the path is
|
|
105
|
+
* the credential: an unguessable 24-byte secret the owner minted and can
|
|
106
|
+
* revoke. Only a GET of exactly one segment qualifies, and the prefix sits
|
|
107
|
+
* outside `/api/workflows/` so it can never widen onto the caller's library.
|
|
108
|
+
*/
|
|
109
|
+
export function isPublicSharedWorkflowRequest(pathname, method) {
|
|
110
|
+
const prefix = "/api/shared-workflows/";
|
|
111
|
+
if (method !== "GET" || !pathname.startsWith(prefix))
|
|
112
|
+
return false;
|
|
113
|
+
const token = pathname.slice(prefix.length);
|
|
114
|
+
return token.length > 0 && !token.includes("/");
|
|
115
|
+
}
|
|
103
116
|
/**
|
|
104
117
|
* The fal callback authenticates itself with the provider's Ed25519
|
|
105
118
|
* signature. Only POSTs to the exact callback shape are exempt; neighbouring
|
|
@@ -147,8 +160,36 @@ export function isPublicAuthExemptRoute(pathname, method) {
|
|
|
147
160
|
pathname.startsWith("/api/integrations/") ||
|
|
148
161
|
isPublicWorkflowMetadataRequest(pathname, method) ||
|
|
149
162
|
isPublicAppDeploymentRequest(pathname, method) ||
|
|
163
|
+
isPublicSharedWorkflowRequest(pathname, method) ||
|
|
150
164
|
isPublicFalWebhookRequest(pathname, method) ||
|
|
151
165
|
isPublicAtlasCloudWebhookRequest(pathname, method) ||
|
|
152
166
|
isPublicMcpOauthAsRequest(pathname));
|
|
153
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* The path the router will match for `url`. find-my-way runs `decodeURI` on
|
|
170
|
+
* the path before choosing a route, so `/%61pi/workflows` reaches the
|
|
171
|
+
* `/api/workflows` handler. Every auth decision must test this decoded form,
|
|
172
|
+
* never the raw `req.url`. Returns null for malformed escapes, which the
|
|
173
|
+
* router refuses anyway.
|
|
174
|
+
*/
|
|
175
|
+
export function routedPathname(url) {
|
|
176
|
+
const raw = url.split("?")[0] ?? "/";
|
|
177
|
+
try {
|
|
178
|
+
return decodeURI(raw);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* GETs the bundled frontend serves without auth: anything outside the API,
|
|
186
|
+
* WebSocket, OpenAI-compatible, tRPC and MCP prefixes. `GET /mcp` is the MCP
|
|
187
|
+
* SSE stream, so it stays behind auth to bind the session's user. A path that
|
|
188
|
+
* does not decode is never treated as a static asset.
|
|
189
|
+
*/
|
|
190
|
+
export function isStaticAppRequest(pathname, method) {
|
|
191
|
+
if (pathname === null || method !== "GET")
|
|
192
|
+
return false;
|
|
193
|
+
return !["/api", "/ws", "/v1", "/trpc", "/mcp"].some((prefix) => pathname.startsWith(prefix));
|
|
194
|
+
}
|
|
154
195
|
//# sourceMappingURL=public-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-routes.js","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public-routes.js","sourceRoot":"","sources":["../../src/lib/public-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads behind a workflow's public share link.
|
|
3
|
+
*
|
|
4
|
+
* A `public` share token lets anyone see one workflow and lets a signed-in
|
|
5
|
+
* user copy it into their own workflows. It never becomes a collaborator
|
|
6
|
+
* grant. Unknown, revoked, and non-public tokens all answer the same
|
|
7
|
+
* NOT_FOUND, so a caller cannot tell a view or edit token from a dead one.
|
|
8
|
+
*/
|
|
9
|
+
import type { Workflow as WorkflowModel } from "@nodetool-ai/models";
|
|
10
|
+
import { type PublicSharedWorkflow } from "@nodetool-ai/protocol/api-schemas/workflows.js";
|
|
11
|
+
/** The workflow behind an active public share token, else NOT_FOUND. */
|
|
12
|
+
export declare function loadPublicShareWorkflow(token: string): Promise<WorkflowModel>;
|
|
13
|
+
/**
|
|
14
|
+
* A shared graph with credential properties blanked. A public link reaches
|
|
15
|
+
* anyone, and a copy belongs to someone else, so neither may carry the
|
|
16
|
+
* owner's tokens.
|
|
17
|
+
*/
|
|
18
|
+
export declare function redactSharedGraph<T extends {
|
|
19
|
+
nodes: unknown[];
|
|
20
|
+
}>(graph: T): T;
|
|
21
|
+
/**
|
|
22
|
+
* The graph a stored row carries, with credentials blanked, or null when it
|
|
23
|
+
* does not parse.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseSharedGraph(raw: unknown): PublicSharedWorkflow["graph"];
|
|
26
|
+
/**
|
|
27
|
+
* What a public link shows: the graph and its label. Nothing about the owner,
|
|
28
|
+
* the row id, or where the workflow lives.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getPublicSharedWorkflow(token: string): Promise<PublicSharedWorkflow>;
|
|
31
|
+
//# sourceMappingURL=public-workflow-share.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-workflow-share.d.ts","sourceRoot":"","sources":["../../src/lib/public-workflow-share.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gDAAgD,CAAC;AAKxD,wEAAwE;AACxE,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAYxB;AAwBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAkB7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,GACX,oBAAoB,CAAC,OAAO,CAAC,CAI/B;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,oBAAoB,CAAC,CAQ/B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads behind a workflow's public share link.
|
|
3
|
+
*
|
|
4
|
+
* A `public` share token lets anyone see one workflow and lets a signed-in
|
|
5
|
+
* user copy it into their own workflows. It never becomes a collaborator
|
|
6
|
+
* grant. Unknown, revoked, and non-public tokens all answer the same
|
|
7
|
+
* NOT_FOUND, so a caller cannot tell a view or edit token from a dead one.
|
|
8
|
+
*/
|
|
9
|
+
import { Workflow, WorkflowShare } from "@nodetool-ai/models";
|
|
10
|
+
import { graph as graphSchema } from "@nodetool-ai/protocol/api-schemas/workflows.js";
|
|
11
|
+
import { ApiErrorCode } from "../error-codes.js";
|
|
12
|
+
import { throwApiError } from "../trpc/error-formatter.js";
|
|
13
|
+
/** The workflow behind an active public share token, else NOT_FOUND. */
|
|
14
|
+
export async function loadPublicShareWorkflow(token) {
|
|
15
|
+
const share = await WorkflowShare.findByToken(token);
|
|
16
|
+
if (!share || share.isRevoked || share.role !== "public") {
|
|
17
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Share link is invalid or revoked");
|
|
18
|
+
}
|
|
19
|
+
const workflow = (await Workflow.get(share.workflow_id));
|
|
20
|
+
if (!workflow) {
|
|
21
|
+
throwApiError(ApiErrorCode.NOT_FOUND, "Share link is invalid or revoked");
|
|
22
|
+
}
|
|
23
|
+
return workflow;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Property keys that hold credentials: a bot `token`, a `worker_token`, an
|
|
27
|
+
* `api_key`. Matched on whole name segments, so `max_tokens` and `author`
|
|
28
|
+
* are left alone.
|
|
29
|
+
*/
|
|
30
|
+
const CREDENTIAL_KEY_RE = /(^|_)(api_?key|secret|token|password|passwd|credentials?|bearer|access_?key|private_?key)$/i;
|
|
31
|
+
const blankCredentials = (record) => {
|
|
32
|
+
if (record === null || typeof record !== "object" || Array.isArray(record)) {
|
|
33
|
+
return record;
|
|
34
|
+
}
|
|
35
|
+
return Object.fromEntries(Object.entries(record).map(([key, value]) => [
|
|
36
|
+
key,
|
|
37
|
+
typeof value === "string" && value !== "" && CREDENTIAL_KEY_RE.test(key)
|
|
38
|
+
? ""
|
|
39
|
+
: value
|
|
40
|
+
]));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* A shared graph with credential properties blanked. A public link reaches
|
|
44
|
+
* anyone, and a copy belongs to someone else, so neither may carry the
|
|
45
|
+
* owner's tokens.
|
|
46
|
+
*/
|
|
47
|
+
export function redactSharedGraph(graph) {
|
|
48
|
+
return {
|
|
49
|
+
...graph,
|
|
50
|
+
nodes: graph.nodes.map((node) => {
|
|
51
|
+
if (node === null || typeof node !== "object")
|
|
52
|
+
return node;
|
|
53
|
+
const record = node;
|
|
54
|
+
const redacted = {
|
|
55
|
+
...record,
|
|
56
|
+
data: blankCredentials(record.data)
|
|
57
|
+
};
|
|
58
|
+
if ("dynamic_properties" in record) {
|
|
59
|
+
redacted.dynamic_properties = blankCredentials(record.dynamic_properties);
|
|
60
|
+
}
|
|
61
|
+
return redacted;
|
|
62
|
+
})
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The graph a stored row carries, with credentials blanked, or null when it
|
|
67
|
+
* does not parse.
|
|
68
|
+
*/
|
|
69
|
+
export function parseSharedGraph(raw) {
|
|
70
|
+
if (raw == null)
|
|
71
|
+
return null;
|
|
72
|
+
const parsed = graphSchema.safeParse(raw);
|
|
73
|
+
return parsed.success ? redactSharedGraph(parsed.data) : null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* What a public link shows: the graph and its label. Nothing about the owner,
|
|
77
|
+
* the row id, or where the workflow lives.
|
|
78
|
+
*/
|
|
79
|
+
export async function getPublicSharedWorkflow(token) {
|
|
80
|
+
const workflow = await loadPublicShareWorkflow(token);
|
|
81
|
+
return {
|
|
82
|
+
name: workflow.name,
|
|
83
|
+
description: workflow.description ?? null,
|
|
84
|
+
tags: workflow.tags ?? [],
|
|
85
|
+
graph: parseSharedGraph(workflow.graph)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=public-workflow-share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-workflow-share.js","sourceRoot":"","sources":["../../src/lib/public-workflow-share.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the directories that hold `package_metadata` for installed
|
|
3
|
+
* `nodetool-*` Python distributions, so the node registry can load their
|
|
4
|
+
* node metadata without a running Python worker.
|
|
5
|
+
*
|
|
6
|
+
* Reads the distributions through `importlib.metadata` in one interpreter.
|
|
7
|
+
* The previous form ran `pip list` and `pip show -f` in two child
|
|
8
|
+
* interpreters, which cost about a second of blocked startup because pip
|
|
9
|
+
* imports most of itself before printing anything.
|
|
10
|
+
*/
|
|
11
|
+
interface DetectOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Interpreters tried in order. Default: the interpreter the Python bridge
|
|
14
|
+
* runs (`resolvePythonBin`), then `python3` and `python` on PATH.
|
|
15
|
+
*/
|
|
16
|
+
pythons?: readonly string[];
|
|
17
|
+
env?: NodeJS.ProcessEnv;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the metadata roots of installed `nodetool-*` distributions. An
|
|
21
|
+
* editable install contributes its project directory; a regular install
|
|
22
|
+
* contributes each directory that holds a `package_metadata` file. Returns an
|
|
23
|
+
* empty list when no interpreter answers.
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectPipMetadataRoots(options?: DetectOptions): Promise<string[]>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=python-metadata-roots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-metadata-roots.d.ts","sourceRoot":"","sources":["../../src/lib/python-metadata-roots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmCH,UAAU,aAAa;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AA6BD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBnB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the directories that hold `package_metadata` for installed
|
|
3
|
+
* `nodetool-*` Python distributions, so the node registry can load their
|
|
4
|
+
* node metadata without a running Python worker.
|
|
5
|
+
*
|
|
6
|
+
* Reads the distributions through `importlib.metadata` in one interpreter.
|
|
7
|
+
* The previous form ran `pip list` and `pip show -f` in two child
|
|
8
|
+
* interpreters, which cost about a second of blocked startup because pip
|
|
9
|
+
* imports most of itself before printing anything.
|
|
10
|
+
*/
|
|
11
|
+
import { spawn } from "node:child_process";
|
|
12
|
+
import { existsSync } from "node:fs";
|
|
13
|
+
import { resolvePythonBin } from "@nodetool-ai/node-sdk";
|
|
14
|
+
/** A scan that has not answered by now is abandoned, not awaited. */
|
|
15
|
+
const SCAN_TIMEOUT_MS = 30_000;
|
|
16
|
+
const SCRIPT = `
|
|
17
|
+
import json, pathlib, sys
|
|
18
|
+
from importlib import metadata
|
|
19
|
+
roots = set()
|
|
20
|
+
for dist in metadata.distributions():
|
|
21
|
+
name = (dist.metadata["Name"] or "").lower().replace("_", "-")
|
|
22
|
+
if not name.startswith("nodetool-"):
|
|
23
|
+
continue
|
|
24
|
+
try:
|
|
25
|
+
direct_url = json.loads(dist.read_text("direct_url.json") or "{}")
|
|
26
|
+
except Exception:
|
|
27
|
+
direct_url = {}
|
|
28
|
+
if direct_url.get("dir_info", {}).get("editable"):
|
|
29
|
+
url = direct_url.get("url", "")
|
|
30
|
+
if url.startswith("file://"):
|
|
31
|
+
from urllib.parse import unquote, urlparse
|
|
32
|
+
from urllib.request import url2pathname
|
|
33
|
+
roots.add(url2pathname(unquote(urlparse(url).path)))
|
|
34
|
+
for rel in dist.files or []:
|
|
35
|
+
if "package_metadata" not in str(rel).replace("\\\\", "/"):
|
|
36
|
+
continue
|
|
37
|
+
abs_path = pathlib.Path(dist.locate_file(rel)).resolve()
|
|
38
|
+
roots.add(str(abs_path if abs_path.is_dir() else abs_path.parent))
|
|
39
|
+
print(json.dumps(sorted(roots)))
|
|
40
|
+
`;
|
|
41
|
+
function runScript(python, env) {
|
|
42
|
+
return new Promise((resolve) => {
|
|
43
|
+
let stdout = "";
|
|
44
|
+
let child;
|
|
45
|
+
try {
|
|
46
|
+
child = spawn(python, ["-c", SCRIPT], {
|
|
47
|
+
env: env ?? process.env,
|
|
48
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
49
|
+
timeout: SCAN_TIMEOUT_MS,
|
|
50
|
+
windowsHide: true
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
resolve(null);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
child.stdout.setEncoding("utf8");
|
|
58
|
+
child.stdout.on("data", (chunk) => {
|
|
59
|
+
stdout += chunk;
|
|
60
|
+
});
|
|
61
|
+
child.on("error", () => resolve(null));
|
|
62
|
+
child.on("close", (code) => resolve(code === 0 && stdout ? stdout : null));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve the metadata roots of installed `nodetool-*` distributions. An
|
|
67
|
+
* editable install contributes its project directory; a regular install
|
|
68
|
+
* contributes each directory that holds a `package_metadata` file. Returns an
|
|
69
|
+
* empty list when no interpreter answers.
|
|
70
|
+
*/
|
|
71
|
+
export async function detectPipMetadataRoots(options = {}) {
|
|
72
|
+
const pythons = options.pythons ?? [
|
|
73
|
+
...new Set([resolvePythonBin(), "python3", "python"])
|
|
74
|
+
];
|
|
75
|
+
for (const python of pythons) {
|
|
76
|
+
const stdout = await runScript(python, options.env);
|
|
77
|
+
if (stdout === null) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const roots = JSON.parse(stdout.trim());
|
|
82
|
+
if (Array.isArray(roots)) {
|
|
83
|
+
return roots.filter((p) => typeof p === "string" && p.length > 0 && existsSync(p));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Try the next interpreter.
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=python-metadata-roots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-metadata-roots.js","sourceRoot":"","sources":["../../src/lib/python-metadata-roots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qEAAqE;AACrE,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBd,CAAC;AAWF,SAAS,SAAS,CAChB,MAAc,EACd,GAAkC;IAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACpC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;gBACvB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnC,OAAO,EAAE,eAAe;gBACxB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAO,GAAkB,EAAE;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI;QACjC,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KACtD,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { StoredRunTraceUpdate } from "@nodetool-ai/protocol";
|
|
2
|
+
export type LiveRunTraceUpdate = StoredRunTraceUpdate & {
|
|
3
|
+
resnapshot_required?: true;
|
|
4
|
+
};
|
|
5
|
+
/** One transport write at a time, with a bounded cache of each span's latest record. */
|
|
6
|
+
export declare class RunTraceLiveDelivery {
|
|
7
|
+
private readonly send;
|
|
8
|
+
private readonly onError;
|
|
9
|
+
private readonly limits;
|
|
10
|
+
private readonly queued;
|
|
11
|
+
private queuedBytes;
|
|
12
|
+
private sending;
|
|
13
|
+
private closed;
|
|
14
|
+
private resnapshotRequired;
|
|
15
|
+
constructor(send: (update: LiveRunTraceUpdate) => Promise<void>, onError: (error: unknown) => void, limits?: {
|
|
16
|
+
spans: number;
|
|
17
|
+
bytes: number;
|
|
18
|
+
});
|
|
19
|
+
get bufferedSpanCount(): number;
|
|
20
|
+
get bufferedBytes(): number;
|
|
21
|
+
enqueue(update: StoredRunTraceUpdate): void;
|
|
22
|
+
close(): void;
|
|
23
|
+
private flush;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=run-trace-live-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-trace-live-delivery.d.ts","sourceRoot":"","sources":["../../src/lib/run-trace-live-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IAAE,mBAAmB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAKvF,wFAAwF;AACxF,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsE;IAC7F,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;IAEnC,YACmB,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,EACnD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACjC,MAAM;;;KAA2D,EAChF;IAEJ,IAAI,iBAAiB,IAAI,MAAM,CAA6B;IAC5D,IAAI,aAAa,IAAI,MAAM,CAA6B;IAExD,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAyB1C;IAED,KAAK,IAAI,IAAI,CAIZ;YAEa,KAAK;CAyBpB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const MAX_BUFFERED_SPANS = 128;
|
|
2
|
+
const MAX_BUFFERED_BYTES = 8 * 1024 * 1024;
|
|
3
|
+
/** One transport write at a time, with a bounded cache of each span's latest record. */
|
|
4
|
+
export class RunTraceLiveDelivery {
|
|
5
|
+
send;
|
|
6
|
+
onError;
|
|
7
|
+
limits;
|
|
8
|
+
queued = new Map();
|
|
9
|
+
queuedBytes = 0;
|
|
10
|
+
sending = false;
|
|
11
|
+
closed = false;
|
|
12
|
+
resnapshotRequired = false;
|
|
13
|
+
constructor(send, onError, limits = { spans: MAX_BUFFERED_SPANS, bytes: MAX_BUFFERED_BYTES }) {
|
|
14
|
+
this.send = send;
|
|
15
|
+
this.onError = onError;
|
|
16
|
+
this.limits = limits;
|
|
17
|
+
}
|
|
18
|
+
get bufferedSpanCount() { return this.queued.size; }
|
|
19
|
+
get bufferedBytes() { return this.queuedBytes; }
|
|
20
|
+
enqueue(update) {
|
|
21
|
+
if (this.closed) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const key = `${update.run_id}:${update.record.span_id}`;
|
|
25
|
+
const previous = this.queued.get(key);
|
|
26
|
+
if (previous) {
|
|
27
|
+
this.queued.delete(key);
|
|
28
|
+
this.queuedBytes -= previous.bytes;
|
|
29
|
+
this.resnapshotRequired = true;
|
|
30
|
+
}
|
|
31
|
+
const bytes = Buffer.byteLength(JSON.stringify(update));
|
|
32
|
+
if (bytes > this.limits.bytes) {
|
|
33
|
+
this.resnapshotRequired = true;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.queued.set(key, { update, bytes });
|
|
37
|
+
this.queuedBytes += bytes;
|
|
38
|
+
while (this.queued.size > this.limits.spans || this.queuedBytes > this.limits.bytes) {
|
|
39
|
+
const oldestKey = this.queued.keys().next().value;
|
|
40
|
+
if (oldestKey === undefined) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
const oldest = this.queued.get(oldestKey);
|
|
44
|
+
this.queued.delete(oldestKey);
|
|
45
|
+
this.queuedBytes -= oldest?.bytes ?? 0;
|
|
46
|
+
this.resnapshotRequired = true;
|
|
47
|
+
}
|
|
48
|
+
if (!this.sending) {
|
|
49
|
+
void this.flush();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
close() {
|
|
53
|
+
this.closed = true;
|
|
54
|
+
this.queued.clear();
|
|
55
|
+
this.queuedBytes = 0;
|
|
56
|
+
}
|
|
57
|
+
async flush() {
|
|
58
|
+
this.sending = true;
|
|
59
|
+
try {
|
|
60
|
+
while (!this.closed && this.queued.size > 0) {
|
|
61
|
+
const key = this.queued.keys().next().value;
|
|
62
|
+
if (key === undefined) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
const next = this.queued.get(key);
|
|
66
|
+
if (!next) {
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
this.queued.delete(key);
|
|
70
|
+
this.queuedBytes -= next.bytes;
|
|
71
|
+
const resnapshot = this.resnapshotRequired;
|
|
72
|
+
this.resnapshotRequired = false;
|
|
73
|
+
try {
|
|
74
|
+
const update = { ...next.update };
|
|
75
|
+
if (resnapshot) {
|
|
76
|
+
update.resnapshot_required = true;
|
|
77
|
+
}
|
|
78
|
+
await this.send(update);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
this.resnapshotRequired = true;
|
|
82
|
+
this.onError(error);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
this.sending = false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=run-trace-live-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-trace-live-delivery.js","sourceRoot":"","sources":["../../src/lib/run-trace-live-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** The runtimes a client gets when it asks for no particular ones. */
|
|
2
|
-
export declare const KNOWN_RUNTIMES: readonly ["python", "nodejs", "ffmpeg", "ffprobe", "pandoc", "pdftotext", "pdftoppm", "yt-dlp"];
|
|
2
|
+
export declare const KNOWN_RUNTIMES: readonly ["python", "nodejs", "ffmpeg", "ffprobe", "pandoc", "pdftotext", "pdftoppm", "yt-dlp", "manimgx"];
|
|
3
3
|
/** Whether `command` resolves to an executable on PATH. */
|
|
4
4
|
export declare function hasExecutable(command: string): Promise<boolean>;
|
|
5
5
|
export interface RuntimeStatus {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-detection.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-detection.ts"],"names":[],"mappings":"AA2BA,sEAAsE;AACtE,eAAO,MAAM,cAAc,YACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"runtime-detection.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-detection.ts"],"names":[],"mappings":"AA2BA,sEAAsE;AACtE,eAAO,MAAM,cAAc,YACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,CACD,CAAC;AAuBX,2DAA2D;AAC3D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQrE;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,GAAE,SAAS,MAAM,EAAmB,GACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1B;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|