@nodetool-ai/websocket 0.7.0-rc.23 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/agent/run-node-tool.d.ts +39 -0
- package/dist/agent/run-node-tool.d.ts.map +1 -0
- package/dist/agent/run-node-tool.js +55 -0
- package/dist/agent/run-node-tool.js.map +1 -0
- package/dist/chat-prediction-forwarder.d.ts +13 -0
- package/dist/chat-prediction-forwarder.d.ts.map +1 -0
- package/dist/chat-prediction-forwarder.js +22 -0
- package/dist/chat-prediction-forwarder.js.map +1 -0
- package/dist/chat-tool-call-repair.d.ts +45 -0
- package/dist/chat-tool-call-repair.d.ts.map +1 -0
- package/dist/chat-tool-call-repair.js +100 -0
- package/dist/chat-tool-call-repair.js.map +1 -0
- package/dist/chat-turn-registry.d.ts +169 -0
- package/dist/chat-turn-registry.d.ts.map +1 -0
- package/dist/chat-turn-registry.js +326 -0
- package/dist/chat-turn-registry.js.map +1 -0
- package/dist/collection-api.d.ts +2 -2
- package/dist/collection-api.d.ts.map +1 -1
- package/dist/collection-api.js +44 -13
- package/dist/collection-api.js.map +1 -1
- package/dist/configured-providers.d.ts +52 -0
- package/dist/configured-providers.d.ts.map +1 -0
- package/dist/configured-providers.js +85 -0
- package/dist/configured-providers.js.map +1 -0
- package/dist/cors.d.ts +22 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +91 -0
- package/dist/cors.js.map +1 -0
- package/dist/credit-gate.d.ts +36 -0
- package/dist/credit-gate.d.ts.map +1 -0
- package/dist/credit-gate.js +76 -0
- package/dist/credit-gate.js.map +1 -0
- package/dist/custom-providers.d.ts +40 -0
- package/dist/custom-providers.d.ts.map +1 -0
- package/dist/custom-providers.js +134 -0
- package/dist/custom-providers.js.map +1 -0
- package/dist/debug-sessions.d.ts +10 -0
- package/dist/debug-sessions.d.ts.map +1 -0
- package/dist/debug-sessions.js +9 -0
- package/dist/debug-sessions.js.map +1 -0
- package/dist/drain.d.ts +34 -0
- package/dist/drain.d.ts.map +1 -0
- package/dist/drain.js +68 -0
- package/dist/drain.js.map +1 -0
- package/dist/e2e-server.d.ts +30 -0
- package/dist/e2e-server.d.ts.map +1 -0
- package/dist/e2e-server.js +111 -0
- package/dist/e2e-server.js.map +1 -0
- package/dist/example-workflows.d.ts +20 -0
- package/dist/example-workflows.d.ts.map +1 -0
- package/dist/example-workflows.js +123 -0
- package/dist/example-workflows.js.map +1 -0
- package/dist/extension-cdp-bridge.d.ts +85 -0
- package/dist/extension-cdp-bridge.d.ts.map +1 -0
- package/dist/extension-cdp-bridge.js +163 -0
- package/dist/extension-cdp-bridge.js.map +1 -0
- package/dist/external-mcp.d.ts +58 -0
- package/dist/external-mcp.d.ts.map +1 -0
- package/dist/external-mcp.js +288 -0
- package/dist/external-mcp.js.map +1 -0
- package/dist/fake-runtime.d.ts +114 -0
- package/dist/fake-runtime.d.ts.map +1 -0
- package/dist/fake-runtime.js +270 -0
- package/dist/fake-runtime.js.map +1 -0
- package/dist/file-api.d.ts +4 -7
- package/dist/file-api.d.ts.map +1 -1
- package/dist/file-api.js +122 -39
- package/dist/file-api.js.map +1 -1
- package/dist/frontend-renderer-registry.d.ts +75 -0
- package/dist/frontend-renderer-registry.d.ts.map +1 -0
- package/dist/frontend-renderer-registry.js +111 -0
- package/dist/frontend-renderer-registry.js.map +1 -0
- package/dist/generation-recovery.d.ts +13 -0
- package/dist/generation-recovery.d.ts.map +1 -0
- package/dist/generation-recovery.js +197 -0
- package/dist/generation-recovery.js.map +1 -0
- package/dist/headless-job-runner.d.ts +71 -0
- package/dist/headless-job-runner.d.ts.map +1 -0
- package/dist/headless-job-runner.js +198 -0
- package/dist/headless-job-runner.js.map +1 -0
- package/dist/http-api.d.ts +157 -24
- package/dist/http-api.d.ts.map +1 -1
- package/dist/http-api.js +613 -646
- package/dist/http-api.js.map +1 -1
- package/dist/http-body-schemas.d.ts +109 -0
- package/dist/http-body-schemas.d.ts.map +1 -0
- package/dist/http-body-schemas.js +146 -0
- package/dist/http-body-schemas.js.map +1 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/job-control.d.ts +57 -0
- package/dist/job-control.d.ts.map +1 -0
- package/dist/job-control.js +134 -0
- package/dist/job-control.js.map +1 -0
- package/dist/job-queue.d.ts +47 -0
- package/dist/job-queue.d.ts.map +1 -0
- package/dist/job-queue.js +52 -0
- package/dist/job-queue.js.map +1 -0
- package/dist/job-run-registry.d.ts +176 -0
- package/dist/job-run-registry.d.ts.map +1 -0
- package/dist/job-run-registry.js +312 -0
- package/dist/job-run-registry.js.map +1 -0
- package/dist/lib/app-build-service.d.ts +16 -0
- package/dist/lib/app-build-service.d.ts.map +1 -0
- package/dist/lib/app-build-service.js +39 -0
- package/dist/lib/app-build-service.js.map +1 -0
- package/dist/lib/app-debug-service.d.ts +16 -0
- package/dist/lib/app-debug-service.d.ts.map +1 -0
- package/dist/lib/app-debug-service.js +48 -0
- package/dist/lib/app-debug-service.js.map +1 -0
- package/dist/lib/app-deployment-service.d.ts +82 -0
- package/dist/lib/app-deployment-service.d.ts.map +1 -0
- package/dist/lib/app-deployment-service.js +282 -0
- package/dist/lib/app-deployment-service.js.map +1 -0
- package/dist/lib/app-run-server.d.ts +7 -0
- package/dist/lib/app-run-server.d.ts.map +1 -0
- package/dist/lib/app-run-server.js +6 -0
- package/dist/lib/app-run-server.js.map +1 -0
- package/dist/lib/app-session-scope.d.ts +91 -0
- package/dist/lib/app-session-scope.d.ts.map +1 -0
- package/dist/lib/app-session-scope.js +91 -0
- package/dist/lib/app-session-scope.js.map +1 -0
- package/dist/lib/applications-service.d.ts +173 -0
- package/dist/lib/applications-service.d.ts.map +1 -0
- package/dist/lib/applications-service.js +491 -0
- package/dist/lib/applications-service.js.map +1 -0
- package/dist/lib/asset-duration.d.ts +7 -0
- package/dist/lib/asset-duration.d.ts.map +1 -0
- package/dist/lib/asset-duration.js +24 -0
- package/dist/lib/asset-duration.js.map +1 -0
- package/dist/lib/asset-export.d.ts +34 -0
- package/dist/lib/asset-export.d.ts.map +1 -0
- package/dist/lib/asset-export.js +113 -0
- package/dist/lib/asset-export.js.map +1 -0
- package/dist/lib/asset-model-interface.d.ts +41 -0
- package/dist/lib/asset-model-interface.d.ts.map +1 -0
- package/dist/lib/asset-model-interface.js +74 -0
- package/dist/lib/asset-model-interface.js.map +1 -0
- package/dist/lib/asset-paths.d.ts +52 -0
- package/dist/lib/asset-paths.d.ts.map +1 -1
- package/dist/lib/asset-paths.js +145 -1
- package/dist/lib/asset-paths.js.map +1 -1
- package/dist/lib/asset-response.d.ts +12 -0
- package/dist/lib/asset-response.d.ts.map +1 -0
- package/dist/lib/asset-response.js +88 -0
- package/dist/lib/asset-response.js.map +1 -0
- package/dist/lib/audio-peaks.d.ts +23 -0
- package/dist/lib/audio-peaks.d.ts.map +1 -0
- package/dist/lib/audio-peaks.js +331 -0
- package/dist/lib/audio-peaks.js.map +1 -0
- package/dist/lib/bridge.d.ts +9 -1
- package/dist/lib/bridge.d.ts.map +1 -1
- package/dist/lib/bridge.js +27 -4
- package/dist/lib/bridge.js.map +1 -1
- package/dist/lib/compression.d.ts +3 -0
- package/dist/lib/compression.d.ts.map +1 -0
- package/dist/lib/compression.js +3 -0
- package/dist/lib/compression.js.map +1 -0
- package/dist/lib/document-model-interfaces.d.ts +30 -0
- package/dist/lib/document-model-interfaces.d.ts.map +1 -0
- package/dist/lib/document-model-interfaces.js +295 -0
- package/dist/lib/document-model-interfaces.js.map +1 -0
- package/dist/lib/env-config.d.ts +9 -0
- package/dist/lib/env-config.d.ts.map +1 -0
- package/dist/lib/env-config.js +18 -0
- package/dist/lib/env-config.js.map +1 -0
- package/dist/lib/example-apps.d.ts +43 -0
- package/dist/lib/example-apps.d.ts.map +1 -0
- package/dist/lib/example-apps.js +145 -0
- package/dist/lib/example-apps.js.map +1 -0
- package/dist/lib/example-games.d.ts +5 -0
- package/dist/lib/example-games.d.ts.map +1 -0
- package/dist/lib/example-games.js +13 -0
- package/dist/lib/example-games.js.map +1 -0
- package/dist/lib/example-recipes.d.ts +33 -0
- package/dist/lib/example-recipes.d.ts.map +1 -0
- package/dist/lib/example-recipes.js +213 -0
- package/dist/lib/example-recipes.js.map +1 -0
- package/dist/lib/example-storyboards.d.ts +40 -0
- package/dist/lib/example-storyboards.d.ts.map +1 -0
- package/dist/lib/example-storyboards.js +131 -0
- package/dist/lib/example-storyboards.js.map +1 -0
- package/dist/lib/example-thumbnail.d.ts +21 -0
- package/dist/lib/example-thumbnail.d.ts.map +1 -0
- package/dist/lib/example-thumbnail.js +50 -0
- package/dist/lib/example-thumbnail.js.map +1 -0
- package/dist/lib/example-timelines.d.ts +9 -0
- package/dist/lib/example-timelines.d.ts.map +1 -0
- package/dist/lib/example-timelines.js +25 -0
- package/dist/lib/example-timelines.js.map +1 -0
- package/dist/lib/extension-dist.d.ts +24 -0
- package/dist/lib/extension-dist.d.ts.map +1 -0
- package/dist/lib/extension-dist.js +67 -0
- package/dist/lib/extension-dist.js.map +1 -0
- package/dist/lib/external-asset-lookup.d.ts +30 -0
- package/dist/lib/external-asset-lookup.d.ts.map +1 -0
- package/dist/lib/external-asset-lookup.js +99 -0
- package/dist/lib/external-asset-lookup.js.map +1 -0
- package/dist/lib/external-assets.d.ts +13 -0
- package/dist/lib/external-assets.d.ts.map +1 -0
- package/dist/lib/external-assets.js +46 -0
- package/dist/lib/external-assets.js.map +1 -0
- package/dist/lib/fly-replay.d.ts +34 -0
- package/dist/lib/fly-replay.d.ts.map +1 -0
- package/dist/lib/fly-replay.js +111 -0
- package/dist/lib/fly-replay.js.map +1 -0
- package/dist/lib/http-rate-limit.d.ts +32 -0
- package/dist/lib/http-rate-limit.d.ts.map +1 -0
- package/dist/lib/http-rate-limit.js +47 -0
- package/dist/lib/http-rate-limit.js.map +1 -0
- package/dist/lib/instance-id.d.ts +25 -0
- package/dist/lib/instance-id.d.ts.map +1 -0
- package/dist/lib/instance-id.js +44 -0
- package/dist/lib/instance-id.js.map +1 -0
- package/dist/lib/link-codes.d.ts +82 -0
- package/dist/lib/link-codes.d.ts.map +1 -0
- package/dist/lib/link-codes.js +100 -0
- package/dist/lib/link-codes.js.map +1 -0
- package/dist/lib/local-asset-upload.d.ts +5 -0
- package/dist/lib/local-asset-upload.d.ts.map +1 -0
- package/dist/lib/local-asset-upload.js +69 -0
- package/dist/lib/local-asset-upload.js.map +1 -0
- package/dist/lib/local-file-access.d.ts +31 -0
- package/dist/lib/local-file-access.d.ts.map +1 -0
- package/dist/lib/local-file-access.js +169 -0
- package/dist/lib/local-file-access.js.map +1 -0
- package/dist/lib/localhost-trust.d.ts +59 -0
- package/dist/lib/localhost-trust.d.ts.map +1 -0
- package/dist/lib/localhost-trust.js +139 -0
- package/dist/lib/localhost-trust.js.map +1 -0
- package/dist/lib/mcp-mount.d.ts +25 -0
- package/dist/lib/mcp-mount.d.ts.map +1 -0
- package/dist/lib/mcp-mount.js +32 -0
- package/dist/lib/mcp-mount.js.map +1 -0
- package/dist/lib/media-size.d.ts +21 -0
- package/dist/lib/media-size.d.ts.map +1 -0
- package/dist/lib/media-size.js +48 -0
- package/dist/lib/media-size.js.map +1 -0
- package/dist/lib/media.d.ts +38 -0
- package/dist/lib/media.d.ts.map +1 -0
- package/dist/lib/media.js +146 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/package-asset-export.d.ts +83 -0
- package/dist/lib/package-asset-export.d.ts.map +1 -0
- package/dist/lib/package-asset-export.js +212 -0
- package/dist/lib/package-asset-export.js.map +1 -0
- package/dist/lib/package-assets.d.ts +41 -0
- package/dist/lib/package-assets.d.ts.map +1 -0
- package/dist/lib/package-assets.js +155 -0
- package/dist/lib/package-assets.js.map +1 -0
- package/dist/lib/project-delete.d.ts +11 -0
- package/dist/lib/project-delete.d.ts.map +1 -0
- package/dist/lib/project-delete.js +67 -0
- package/dist/lib/project-delete.js.map +1 -0
- package/dist/lib/project-document-copy.d.ts +31 -0
- package/dist/lib/project-document-copy.d.ts.map +1 -0
- package/dist/lib/project-document-copy.js +473 -0
- package/dist/lib/project-document-copy.js.map +1 -0
- package/dist/lib/public-app-assets.d.ts +8 -0
- package/dist/lib/public-app-assets.d.ts.map +1 -0
- package/dist/lib/public-app-assets.js +77 -0
- package/dist/lib/public-app-assets.js.map +1 -0
- package/dist/lib/public-routes.d.ts +95 -0
- package/dist/lib/public-routes.d.ts.map +1 -0
- package/dist/lib/public-routes.js +154 -0
- package/dist/lib/public-routes.js.map +1 -0
- package/dist/lib/runtime-detection.d.ts +17 -0
- package/dist/lib/runtime-detection.d.ts.map +1 -0
- package/dist/lib/runtime-detection.js +90 -0
- package/dist/lib/runtime-detection.js.map +1 -0
- package/dist/lib/storage-access.d.ts +21 -0
- package/dist/lib/storage-access.d.ts.map +1 -0
- package/dist/lib/storage-access.js +74 -0
- package/dist/lib/storage-access.js.map +1 -0
- package/dist/lib/storage.d.ts +9 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +28 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/storyboard-export.d.ts +64 -0
- package/dist/lib/storyboard-export.d.ts.map +1 -0
- package/dist/lib/storyboard-export.js +183 -0
- package/dist/lib/storyboard-export.js.map +1 -0
- package/dist/lib/style-presets.d.ts +34 -0
- package/dist/lib/style-presets.d.ts.map +1 -0
- package/dist/lib/style-presets.js +62 -0
- package/dist/lib/style-presets.js.map +1 -0
- package/dist/lib/temp-url-resolver.d.ts +35 -0
- package/dist/lib/temp-url-resolver.d.ts.map +1 -0
- package/dist/lib/temp-url-resolver.js +88 -0
- package/dist/lib/temp-url-resolver.js.map +1 -0
- package/dist/lib/thumbnail.d.ts +74 -0
- package/dist/lib/thumbnail.d.ts.map +1 -0
- package/dist/lib/thumbnail.js +302 -0
- package/dist/lib/thumbnail.js.map +1 -0
- package/dist/lib/timeline-bundle.d.ts +1689 -0
- package/dist/lib/timeline-bundle.d.ts.map +1 -0
- package/dist/lib/timeline-bundle.js +330 -0
- package/dist/lib/timeline-bundle.js.map +1 -0
- package/dist/lib/video-proxy.d.ts +114 -0
- package/dist/lib/video-proxy.d.ts.map +1 -0
- package/dist/lib/video-proxy.js +545 -0
- package/dist/lib/video-proxy.js.map +1 -0
- package/dist/lib/wire-values.d.ts +31 -0
- package/dist/lib/wire-values.d.ts.map +1 -0
- package/dist/lib/wire-values.js +49 -0
- package/dist/lib/wire-values.js.map +1 -0
- package/dist/lib/workflow-bundle.d.ts +102 -0
- package/dist/lib/workflow-bundle.d.ts.map +1 -0
- package/dist/lib/workflow-bundle.js +306 -0
- package/dist/lib/workflow-bundle.js.map +1 -0
- package/dist/lib/workflow-service.d.ts +82 -0
- package/dist/lib/workflow-service.d.ts.map +1 -0
- package/dist/lib/workflow-service.js +194 -0
- package/dist/lib/workflow-service.js.map +1 -0
- package/dist/lib/workflow-workspace.d.ts +20 -0
- package/dist/lib/workflow-workspace.d.ts.map +1 -0
- package/dist/lib/workflow-workspace.js +65 -0
- package/dist/lib/workflow-workspace.js.map +1 -0
- package/dist/lib/ws-connection-health.d.ts +10 -0
- package/dist/lib/ws-connection-health.d.ts.map +1 -0
- package/dist/lib/ws-connection-health.js +38 -0
- package/dist/lib/ws-connection-health.js.map +1 -0
- package/dist/lib/ws-rate-limit.d.ts +22 -0
- package/dist/lib/ws-rate-limit.d.ts.map +1 -0
- package/dist/lib/ws-rate-limit.js +45 -0
- package/dist/lib/ws-rate-limit.js.map +1 -0
- package/dist/lib/ws-upgrade.d.ts +40 -0
- package/dist/lib/ws-upgrade.d.ts.map +1 -0
- package/dist/lib/ws-upgrade.js +66 -0
- package/dist/lib/ws-upgrade.js.map +1 -0
- package/dist/lib/zip-stream.d.ts +46 -0
- package/dist/lib/zip-stream.d.ts.map +1 -0
- package/dist/lib/zip-stream.js +140 -0
- package/dist/lib/zip-stream.js.map +1 -0
- package/dist/mcp-agent-tools.d.ts +56 -0
- package/dist/mcp-agent-tools.d.ts.map +1 -0
- package/dist/mcp-agent-tools.js +1216 -0
- package/dist/mcp-agent-tools.js.map +1 -0
- package/dist/mcp-server.d.ts +56 -7
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +255 -762
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tool-deps.d.ts +20 -0
- package/dist/mcp-tool-deps.d.ts.map +1 -0
- package/dist/mcp-tool-deps.js +61 -0
- package/dist/mcp-tool-deps.js.map +1 -0
- package/dist/messagepack.d.ts +7 -0
- package/dist/messagepack.d.ts.map +1 -0
- package/dist/messagepack.js +19 -0
- package/dist/messagepack.js.map +1 -0
- package/dist/model-download-runtime.d.ts +9 -0
- package/dist/model-download-runtime.d.ts.map +1 -0
- package/dist/model-download-runtime.js +77 -0
- package/dist/model-download-runtime.js.map +1 -0
- package/dist/model-execution-availability.d.ts +14 -0
- package/dist/model-execution-availability.d.ts.map +1 -0
- package/dist/model-execution-availability.js +161 -0
- package/dist/model-execution-availability.js.map +1 -0
- package/dist/models-api.d.ts +51 -5
- package/dist/models-api.d.ts.map +1 -1
- package/dist/models-api.js +160 -690
- package/dist/models-api.js.map +1 -1
- package/dist/node-registry-setup.d.ts +84 -0
- package/dist/node-registry-setup.d.ts.map +1 -0
- package/dist/node-registry-setup.js +256 -0
- package/dist/node-registry-setup.js.map +1 -0
- package/dist/oauth/cimd.d.ts +28 -0
- package/dist/oauth/cimd.d.ts.map +1 -0
- package/dist/oauth/cimd.js +177 -0
- package/dist/oauth/cimd.js.map +1 -0
- package/dist/oauth/gate.d.ts +38 -0
- package/dist/oauth/gate.d.ts.map +1 -0
- package/dist/oauth/gate.js +77 -0
- package/dist/oauth/gate.js.map +1 -0
- package/dist/oauth/metadata.d.ts +35 -0
- package/dist/oauth/metadata.d.ts.map +1 -0
- package/dist/oauth/metadata.js +56 -0
- package/dist/oauth/metadata.js.map +1 -0
- package/dist/oauth/pending-store.d.ts +79 -0
- package/dist/oauth/pending-store.d.ts.map +1 -0
- package/dist/oauth/pending-store.js +133 -0
- package/dist/oauth/pending-store.js.map +1 -0
- package/dist/oauth/pkce.d.ts +16 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +29 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/validate.d.ts +25 -0
- package/dist/oauth/validate.d.ts.map +1 -0
- package/dist/oauth/validate.js +62 -0
- package/dist/oauth/validate.js.map +1 -0
- package/dist/oauth/www-authenticate.d.ts +9 -0
- package/dist/oauth/www-authenticate.d.ts.map +1 -0
- package/dist/oauth/www-authenticate.js +33 -0
- package/dist/oauth/www-authenticate.js.map +1 -0
- package/dist/oauth-api.d.ts +19 -0
- package/dist/oauth-api.d.ts.map +1 -1
- package/dist/oauth-api.js +531 -12
- package/dist/oauth-api.js.map +1 -1
- package/dist/openai-api.d.ts.map +1 -1
- package/dist/openai-api.js +4 -9
- package/dist/openai-api.js.map +1 -1
- package/dist/pack-snapshot.d.ts +24 -0
- package/dist/pack-snapshot.d.ts.map +1 -0
- package/dist/pack-snapshot.js +35 -0
- package/dist/pack-snapshot.js.map +1 -0
- package/dist/plugins/websocket.d.ts +21 -4
- package/dist/plugins/websocket.d.ts.map +1 -1
- package/dist/plugins/websocket.js +136 -290
- package/dist/plugins/websocket.js.map +1 -1
- package/dist/resolve-media-urls.d.ts +17 -3
- package/dist/resolve-media-urls.d.ts.map +1 -1
- package/dist/resolve-media-urls.js +117 -31
- package/dist/resolve-media-urls.js.map +1 -1
- package/dist/resource-events.d.ts +28 -0
- package/dist/resource-events.d.ts.map +1 -0
- package/dist/resource-events.js +20 -0
- package/dist/resource-events.js.map +1 -0
- package/dist/routes/account.d.ts +100 -0
- package/dist/routes/account.d.ts.map +1 -0
- package/dist/routes/account.js +197 -0
- package/dist/routes/account.js.map +1 -0
- package/dist/routes/applications.d.ts +36 -0
- package/dist/routes/applications.d.ts.map +1 -0
- package/dist/routes/applications.js +183 -0
- package/dist/routes/applications.js.map +1 -0
- package/dist/routes/assets.d.ts +3 -3
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +78 -44
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/atlascloud-webhook.d.ts +93 -0
- package/dist/routes/atlascloud-webhook.d.ts.map +1 -0
- package/dist/routes/atlascloud-webhook.js +369 -0
- package/dist/routes/atlascloud-webhook.js.map +1 -0
- package/dist/routes/collections.d.ts.map +1 -1
- package/dist/routes/config.d.ts +26 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +64 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/documents.d.ts +27 -0
- package/dist/routes/documents.d.ts.map +1 -0
- package/dist/routes/documents.js +155 -0
- package/dist/routes/documents.js.map +1 -0
- package/dist/routes/fal-credits.d.ts +4 -0
- package/dist/routes/fal-credits.d.ts.map +1 -0
- package/dist/routes/fal-credits.js +101 -0
- package/dist/routes/fal-credits.js.map +1 -0
- package/dist/routes/fal-pricing-estimate.d.ts +4 -0
- package/dist/routes/fal-pricing-estimate.d.ts.map +1 -0
- package/dist/routes/fal-pricing-estimate.js +114 -0
- package/dist/routes/fal-pricing-estimate.js.map +1 -0
- package/dist/routes/fal-pricing.d.ts +4 -0
- package/dist/routes/fal-pricing.d.ts.map +1 -0
- package/dist/routes/fal-pricing.js +93 -0
- package/dist/routes/fal-pricing.js.map +1 -0
- package/dist/routes/fal-webhook.d.ts +102 -0
- package/dist/routes/fal-webhook.d.ts.map +1 -0
- package/dist/routes/fal-webhook.js +379 -0
- package/dist/routes/fal-webhook.js.map +1 -0
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +4 -3
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/health.d.ts +1 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +41 -7
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/integrations.d.ts +39 -0
- package/dist/routes/integrations.d.ts.map +1 -0
- package/dist/routes/integrations.js +211 -0
- package/dist/routes/integrations.js.map +1 -0
- package/dist/routes/js-scripts.d.ts +26 -0
- package/dist/routes/js-scripts.d.ts.map +1 -0
- package/dist/routes/js-scripts.js +116 -0
- package/dist/routes/js-scripts.js.map +1 -0
- package/dist/routes/kie-credits.d.ts +4 -0
- package/dist/routes/kie-credits.d.ts.map +1 -0
- package/dist/routes/kie-credits.js +93 -0
- package/dist/routes/kie-credits.js.map +1 -0
- package/dist/routes/kie-pricing.d.ts +4 -0
- package/dist/routes/kie-pricing.d.ts.map +1 -0
- package/dist/routes/kie-pricing.js +45 -0
- package/dist/routes/kie-pricing.js.map +1 -0
- package/dist/routes/kie-webhook.d.ts +4 -0
- package/dist/routes/kie-webhook.d.ts.map +1 -0
- package/dist/routes/kie-webhook.js +70 -0
- package/dist/routes/kie-webhook.js.map +1 -0
- package/dist/routes/nodes.d.ts.map +1 -1
- package/dist/routes/nodes.js +6 -59
- package/dist/routes/nodes.js.map +1 -1
- package/dist/routes/oauth-as.d.ts +30 -0
- package/dist/routes/oauth-as.d.ts.map +1 -0
- package/dist/routes/oauth-as.js +412 -0
- package/dist/routes/oauth-as.js.map +1 -0
- package/dist/routes/oauth.d.ts.map +1 -1
- package/dist/routes/openai.d.ts.map +1 -1
- package/dist/routes/public-apps.d.ts +27 -0
- package/dist/routes/public-apps.d.ts.map +1 -0
- package/dist/routes/public-apps.js +99 -0
- package/dist/routes/public-apps.js.map +1 -0
- package/dist/routes/sandbox-modules.d.ts +17 -0
- package/dist/routes/sandbox-modules.d.ts.map +1 -0
- package/dist/routes/sandbox-modules.js +85 -0
- package/dist/routes/sandbox-modules.js.map +1 -0
- package/dist/routes/sdk-v1.d.ts +24 -0
- package/dist/routes/sdk-v1.d.ts.map +1 -0
- package/dist/routes/sdk-v1.js +320 -0
- package/dist/routes/sdk-v1.js.map +1 -0
- package/dist/routes/storage.d.ts.map +1 -1
- package/dist/routes/storyboards.d.ts +16 -0
- package/dist/routes/storyboards.d.ts.map +1 -0
- package/dist/routes/storyboards.js +97 -0
- package/dist/routes/storyboards.js.map +1 -0
- package/dist/routes/timeline-animations.d.ts +23 -0
- package/dist/routes/timeline-animations.d.ts.map +1 -0
- package/dist/routes/timeline-animations.js +99 -0
- package/dist/routes/timeline-animations.js.map +1 -0
- package/dist/routes/timeline-audio-bake.d.ts +51 -0
- package/dist/routes/timeline-audio-bake.d.ts.map +1 -0
- package/dist/routes/timeline-audio-bake.js +110 -0
- package/dist/routes/timeline-audio-bake.js.map +1 -0
- package/dist/routes/timeline-fonts.d.ts +29 -0
- package/dist/routes/timeline-fonts.d.ts.map +1 -0
- package/dist/routes/timeline-fonts.js +64 -0
- package/dist/routes/timeline-fonts.js.map +1 -0
- package/dist/routes/timeline-isolate-subject.d.ts +55 -0
- package/dist/routes/timeline-isolate-subject.d.ts.map +1 -0
- package/dist/routes/timeline-isolate-subject.js +128 -0
- package/dist/routes/timeline-isolate-subject.js.map +1 -0
- package/dist/routes/timeline-track-object.d.ts +39 -0
- package/dist/routes/timeline-track-object.d.ts.map +1 -0
- package/dist/routes/timeline-track-object.js +97 -0
- package/dist/routes/timeline-track-object.js.map +1 -0
- package/dist/routes/timelines.d.ts +18 -0
- package/dist/routes/timelines.d.ts.map +1 -0
- package/dist/routes/timelines.js +191 -0
- package/dist/routes/timelines.js.map +1 -0
- package/dist/routes/workflows.d.ts +6 -9
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +100 -11
- package/dist/routes/workflows.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/run-supervisor.d.ts +30 -0
- package/dist/run-supervisor.d.ts.map +1 -0
- package/dist/run-supervisor.js +86 -0
- package/dist/run-supervisor.js.map +1 -0
- package/dist/sandbox-catalog.d.ts +28 -0
- package/dist/sandbox-catalog.d.ts.map +1 -0
- package/dist/sandbox-catalog.js +74 -0
- package/dist/sandbox-catalog.js.map +1 -0
- package/dist/screenshot-projects.d.ts +27 -0
- package/dist/screenshot-projects.d.ts.map +1 -0
- package/dist/screenshot-projects.js +880 -0
- package/dist/screenshot-projects.js.map +1 -0
- package/dist/screenshot-server.js +947 -43
- package/dist/screenshot-server.js.map +1 -1
- package/dist/sdk/sdk-cached-model-inventory.d.ts +21 -0
- package/dist/sdk/sdk-cached-model-inventory.d.ts.map +1 -0
- package/dist/sdk/sdk-cached-model-inventory.js +51 -0
- package/dist/sdk/sdk-cached-model-inventory.js.map +1 -0
- package/dist/sdk/sdk-capabilities-service.d.ts +32 -0
- package/dist/sdk/sdk-capabilities-service.d.ts.map +1 -0
- package/dist/sdk/sdk-capabilities-service.js +47 -0
- package/dist/sdk/sdk-capabilities-service.js.map +1 -0
- package/dist/sdk/sdk-execution-readiness-probe.d.ts +19 -0
- package/dist/sdk/sdk-execution-readiness-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-execution-readiness-probe.js +90 -0
- package/dist/sdk/sdk-execution-readiness-probe.js.map +1 -0
- package/dist/sdk/sdk-execution-target-readiness.d.ts +15 -0
- package/dist/sdk/sdk-execution-target-readiness.d.ts.map +1 -0
- package/dist/sdk/sdk-execution-target-readiness.js +50 -0
- package/dist/sdk/sdk-execution-target-readiness.js.map +1 -0
- package/dist/sdk/sdk-feature-flags.d.ts +18 -0
- package/dist/sdk/sdk-feature-flags.d.ts.map +1 -0
- package/dist/sdk/sdk-feature-flags.js +30 -0
- package/dist/sdk/sdk-feature-flags.js.map +1 -0
- package/dist/sdk/sdk-huggingface-download-state.d.ts +15 -0
- package/dist/sdk/sdk-huggingface-download-state.d.ts.map +1 -0
- package/dist/sdk/sdk-huggingface-download-state.js +25 -0
- package/dist/sdk/sdk-huggingface-download-state.js.map +1 -0
- package/dist/sdk/sdk-live-runner-registry.d.ts +21 -0
- package/dist/sdk/sdk-live-runner-registry.d.ts.map +1 -0
- package/dist/sdk/sdk-live-runner-registry.js +26 -0
- package/dist/sdk/sdk-live-runner-registry.js.map +1 -0
- package/dist/sdk/sdk-model-catalog-service.d.ts +20 -0
- package/dist/sdk/sdk-model-catalog-service.d.ts.map +1 -0
- package/dist/sdk/sdk-model-catalog-service.js +219 -0
- package/dist/sdk/sdk-model-catalog-service.js.map +1 -0
- package/dist/sdk/sdk-model-download-service.d.ts +39 -0
- package/dist/sdk/sdk-model-download-service.d.ts.map +1 -0
- package/dist/sdk/sdk-model-download-service.js +274 -0
- package/dist/sdk/sdk-model-download-service.js.map +1 -0
- package/dist/sdk/sdk-model-requirement-probe.d.ts +30 -0
- package/dist/sdk/sdk-model-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-model-requirement-probe.js +120 -0
- package/dist/sdk/sdk-model-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-node-package-requirement-probe.d.ts +20 -0
- package/dist/sdk/sdk-node-package-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-node-package-requirement-probe.js +44 -0
- package/dist/sdk/sdk-node-package-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-node-type-inventory-service.d.ts +11 -0
- package/dist/sdk/sdk-node-type-inventory-service.d.ts.map +1 -0
- package/dist/sdk/sdk-node-type-inventory-service.js +36 -0
- package/dist/sdk/sdk-node-type-inventory-service.js.map +1 -0
- package/dist/sdk/sdk-preflight-orchestrator.d.ts +54 -0
- package/dist/sdk/sdk-preflight-orchestrator.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-orchestrator.js +63 -0
- package/dist/sdk/sdk-preflight-orchestrator.js.map +1 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.d.ts +35 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.js +67 -0
- package/dist/sdk/sdk-preflight-requirement-resolver.js.map +1 -0
- package/dist/sdk/sdk-preflight-service.d.ts +61 -0
- package/dist/sdk/sdk-preflight-service.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-service.js +104 -0
- package/dist/sdk/sdk-preflight-service.js.map +1 -0
- package/dist/sdk/sdk-preflight-workflow-source.d.ts +18 -0
- package/dist/sdk/sdk-preflight-workflow-source.d.ts.map +1 -0
- package/dist/sdk/sdk-preflight-workflow-source.js +42 -0
- package/dist/sdk/sdk-preflight-workflow-source.js.map +1 -0
- package/dist/sdk/sdk-route-policy.d.ts +3 -0
- package/dist/sdk/sdk-route-policy.d.ts.map +1 -0
- package/dist/sdk/sdk-route-policy.js +18 -0
- package/dist/sdk/sdk-route-policy.js.map +1 -0
- package/dist/sdk/sdk-runtime-capabilities-service.d.ts +60 -0
- package/dist/sdk/sdk-runtime-capabilities-service.d.ts.map +1 -0
- package/dist/sdk/sdk-runtime-capabilities-service.js +30 -0
- package/dist/sdk/sdk-runtime-capabilities-service.js.map +1 -0
- package/dist/sdk/sdk-runtime-requirement-probe.d.ts +13 -0
- package/dist/sdk/sdk-runtime-requirement-probe.d.ts.map +1 -0
- package/dist/sdk/sdk-runtime-requirement-probe.js +55 -0
- package/dist/sdk/sdk-runtime-requirement-probe.js.map +1 -0
- package/dist/sdk/sdk-static-preflight-service.d.ts +66 -0
- package/dist/sdk/sdk-static-preflight-service.d.ts.map +1 -0
- package/dist/sdk/sdk-static-preflight-service.js +492 -0
- package/dist/sdk/sdk-static-preflight-service.js.map +1 -0
- package/dist/sdk/sdk-temporary-asset-service.d.ts +18 -0
- package/dist/sdk/sdk-temporary-asset-service.d.ts.map +1 -0
- package/dist/sdk/sdk-temporary-asset-service.js +33 -0
- package/dist/sdk/sdk-temporary-asset-service.js.map +1 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.d.ts +9 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.d.ts.map +1 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.js +65 -0
- package/dist/sdk/sdk-temporary-asset-upload-http-handler.js.map +1 -0
- package/dist/sdk/sdk-v1-handler-map.d.ts +44 -0
- package/dist/sdk/sdk-v1-handler-map.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-handler-map.js +37 -0
- package/dist/sdk/sdk-v1-handler-map.js.map +1 -0
- package/dist/sdk/sdk-v1-service-error.d.ts +21 -0
- package/dist/sdk/sdk-v1-service-error.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-service-error.js +62 -0
- package/dist/sdk/sdk-v1-service-error.js.map +1 -0
- package/dist/sdk/sdk-v1-service.d.ts +74 -0
- package/dist/sdk/sdk-v1-service.d.ts.map +1 -0
- package/dist/sdk/sdk-v1-service.js +219 -0
- package/dist/sdk/sdk-v1-service.js.map +1 -0
- package/dist/sdk/sdk-worker-readiness-adapter.d.ts +22 -0
- package/dist/sdk/sdk-worker-readiness-adapter.d.ts.map +1 -0
- package/dist/sdk/sdk-worker-readiness-adapter.js +29 -0
- package/dist/sdk/sdk-worker-readiness-adapter.js.map +1 -0
- package/dist/server.js +1019 -201
- package/dist/server.js.map +1 -1
- package/dist/session/asset-autosave.d.ts +80 -0
- package/dist/session/asset-autosave.d.ts.map +1 -0
- package/dist/session/asset-autosave.js +456 -0
- package/dist/session/asset-autosave.js.map +1 -0
- package/dist/session/chat-compaction.d.ts +107 -0
- package/dist/session/chat-compaction.d.ts.map +1 -0
- package/dist/session/chat-compaction.js +191 -0
- package/dist/session/chat-compaction.js.map +1 -0
- package/dist/session/chat-history.d.ts +75 -0
- package/dist/session/chat-history.d.ts.map +1 -0
- package/dist/session/chat-history.js +194 -0
- package/dist/session/chat-history.js.map +1 -0
- package/dist/session/chat-prompt.d.ts +45 -0
- package/dist/session/chat-prompt.d.ts.map +1 -0
- package/dist/session/chat-prompt.js +480 -0
- package/dist/session/chat-prompt.js.map +1 -0
- package/dist/session/chat-turn.d.ts +336 -0
- package/dist/session/chat-turn.d.ts.map +1 -0
- package/dist/session/chat-turn.js +3516 -0
- package/dist/session/chat-turn.js.map +1 -0
- package/dist/session/client-session.d.ts +59 -0
- package/dist/session/client-session.d.ts.map +1 -0
- package/dist/session/client-session.js +2 -0
- package/dist/session/client-session.js.map +1 -0
- package/dist/session/commands.d.ts +133 -0
- package/dist/session/commands.d.ts.map +1 -0
- package/dist/session/commands.js +778 -0
- package/dist/session/commands.js.map +1 -0
- package/dist/session/inference.d.ts +213 -0
- package/dist/session/inference.d.ts.map +1 -0
- package/dist/session/inference.js +1072 -0
- package/dist/session/inference.js.map +1 -0
- package/dist/session/job-execution.d.ts +477 -0
- package/dist/session/job-execution.d.ts.map +1 -0
- package/dist/session/job-execution.js +2089 -0
- package/dist/session/job-execution.js.map +1 -0
- package/dist/session/media-generation.d.ts +94 -0
- package/dist/session/media-generation.d.ts.map +1 -0
- package/dist/session/media-generation.js +234 -0
- package/dist/session/media-generation.js.map +1 -0
- package/dist/session/model-interfaces.d.ts +27 -0
- package/dist/session/model-interfaces.d.ts.map +1 -0
- package/dist/session/model-interfaces.js +132 -0
- package/dist/session/model-interfaces.js.map +1 -0
- package/dist/session/sanitize.d.ts +7 -0
- package/dist/session/sanitize.d.ts.map +1 -0
- package/dist/session/sanitize.js +64 -0
- package/dist/session/sanitize.js.map +1 -0
- package/dist/settings-registry.d.ts +6 -15
- package/dist/settings-registry.d.ts.map +1 -1
- package/dist/settings-registry.js +6 -103
- package/dist/settings-registry.js.map +1 -1
- package/dist/storage-api.d.ts +20 -0
- package/dist/storage-api.d.ts.map +1 -1
- package/dist/storage-api.js +260 -77
- package/dist/storage-api.js.map +1 -1
- package/dist/storage-retention.d.ts +9 -0
- package/dist/storage-retention.d.ts.map +1 -0
- package/dist/storage-retention.js +74 -0
- package/dist/storage-retention.js.map +1 -0
- package/dist/system-stats.d.ts +52 -0
- package/dist/system-stats.d.ts.map +1 -0
- package/dist/system-stats.js +134 -0
- package/dist/system-stats.js.map +1 -0
- package/dist/test-ui-server.d.ts +46 -0
- package/dist/test-ui-server.d.ts.map +1 -1
- package/dist/test-ui-server.js +188 -41
- package/dist/test-ui-server.js.map +1 -1
- package/dist/triggers/boot.d.ts +73 -0
- package/dist/triggers/boot.d.ts.map +1 -0
- package/dist/triggers/boot.js +149 -0
- package/dist/triggers/boot.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +234 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -0
- package/dist/triggers/dispatcher.js +525 -0
- package/dist/triggers/dispatcher.js.map +1 -0
- package/dist/triggers/file-watch.d.ts +90 -0
- package/dist/triggers/file-watch.d.ts.map +1 -0
- package/dist/triggers/file-watch.js +405 -0
- package/dist/triggers/file-watch.js.map +1 -0
- package/dist/triggers/registration-sync.d.ts +34 -0
- package/dist/triggers/registration-sync.d.ts.map +1 -0
- package/dist/triggers/registration-sync.js +162 -0
- package/dist/triggers/registration-sync.js.map +1 -0
- package/dist/triggers/schedule-timing.d.ts +52 -0
- package/dist/triggers/schedule-timing.d.ts.map +1 -0
- package/dist/triggers/schedule-timing.js +90 -0
- package/dist/triggers/schedule-timing.js.map +1 -0
- package/dist/triggers/scheduler.d.ts +55 -0
- package/dist/triggers/scheduler.d.ts.map +1 -0
- package/dist/triggers/scheduler.js +122 -0
- package/dist/triggers/scheduler.js.map +1 -0
- package/dist/triggers/settle.d.ts +66 -0
- package/dist/triggers/settle.d.ts.map +1 -0
- package/dist/triggers/settle.js +99 -0
- package/dist/triggers/settle.js.map +1 -0
- package/dist/triggers/stores.d.ts +38 -0
- package/dist/triggers/stores.d.ts.map +1 -0
- package/dist/triggers/stores.js +168 -0
- package/dist/triggers/stores.js.map +1 -0
- package/dist/triggers/webhook-route.d.ts +49 -0
- package/dist/triggers/webhook-route.d.ts.map +1 -0
- package/dist/triggers/webhook-route.js +148 -0
- package/dist/triggers/webhook-route.js.map +1 -0
- package/dist/trpc/context.d.ts +52 -5
- package/dist/trpc/context.d.ts.map +1 -1
- package/dist/trpc/context.js +4 -1
- package/dist/trpc/context.js.map +1 -1
- package/dist/trpc/error-formatter.d.ts.map +1 -1
- package/dist/trpc/error-formatter.js +23 -2
- package/dist/trpc/error-formatter.js.map +1 -1
- package/dist/trpc/error-logging.d.ts +14 -0
- package/dist/trpc/error-logging.d.ts.map +1 -0
- package/dist/trpc/error-logging.js +27 -0
- package/dist/trpc/error-logging.js.map +1 -0
- package/dist/trpc/index.d.ts +2 -2
- package/dist/trpc/index.d.ts.map +1 -1
- package/dist/trpc/index.js +0 -2
- package/dist/trpc/index.js.map +1 -1
- package/dist/trpc/middleware.d.ts +6 -3
- package/dist/trpc/middleware.d.ts.map +1 -1
- package/dist/trpc/router.d.ts +29791 -1303
- package/dist/trpc/router.d.ts.map +1 -1
- package/dist/trpc/router.js +46 -3
- package/dist/trpc/router.js.map +1 -1
- package/dist/trpc/routers/agent-access.d.ts +149 -0
- package/dist/trpc/routers/agent-access.d.ts.map +1 -0
- package/dist/trpc/routers/agent-access.js +224 -0
- package/dist/trpc/routers/agent-access.js.map +1 -0
- package/dist/trpc/routers/applications.d.ts +1117 -0
- package/dist/trpc/routers/applications.d.ts.map +1 -0
- package/dist/trpc/routers/applications.js +218 -0
- package/dist/trpc/routers/applications.js.map +1 -0
- package/dist/trpc/routers/assets.d.ts +184 -42
- package/dist/trpc/routers/assets.d.ts.map +1 -1
- package/dist/trpc/routers/assets.js +499 -105
- package/dist/trpc/routers/assets.js.map +1 -1
- package/dist/trpc/routers/code-gen.d.ts +99 -0
- package/dist/trpc/routers/code-gen.d.ts.map +1 -0
- package/dist/trpc/routers/code-gen.js +164 -0
- package/dist/trpc/routers/code-gen.js.map +1 -0
- package/dist/trpc/routers/collections.d.ts +1 -26
- package/dist/trpc/routers/collections.d.ts.map +1 -1
- package/dist/trpc/routers/collections.js +145 -78
- package/dist/trpc/routers/collections.js.map +1 -1
- package/dist/trpc/routers/costs.d.ts +40 -96
- package/dist/trpc/routers/costs.d.ts.map +1 -1
- package/dist/trpc/routers/costs.js +14 -89
- package/dist/trpc/routers/costs.js.map +1 -1
- package/dist/trpc/routers/credits.d.ts +110 -0
- package/dist/trpc/routers/credits.d.ts.map +1 -0
- package/dist/trpc/routers/credits.js +69 -0
- package/dist/trpc/routers/credits.js.map +1 -0
- package/dist/trpc/routers/custom-providers.d.ts +88 -0
- package/dist/trpc/routers/custom-providers.d.ts.map +1 -0
- package/dist/trpc/routers/custom-providers.js +140 -0
- package/dist/trpc/routers/custom-providers.js.map +1 -0
- package/dist/trpc/routers/documents.d.ts +61 -0
- package/dist/trpc/routers/documents.d.ts.map +1 -0
- package/dist/trpc/routers/documents.js +23 -0
- package/dist/trpc/routers/documents.js.map +1 -0
- package/dist/trpc/routers/extension.d.ts +24 -0
- package/dist/trpc/routers/extension.d.ts.map +1 -0
- package/dist/trpc/routers/extension.js +28 -0
- package/dist/trpc/routers/extension.js.map +1 -0
- package/dist/trpc/routers/external-mcp.d.ts +108 -0
- package/dist/trpc/routers/external-mcp.d.ts.map +1 -0
- package/dist/trpc/routers/external-mcp.js +70 -0
- package/dist/trpc/routers/external-mcp.js.map +1 -0
- package/dist/trpc/routers/files.d.ts +9 -2
- package/dist/trpc/routers/files.d.ts.map +1 -1
- package/dist/trpc/routers/files.js +67 -37
- package/dist/trpc/routers/files.js.map +1 -1
- package/dist/trpc/routers/fonts.d.ts +30 -0
- package/dist/trpc/routers/fonts.d.ts.map +1 -0
- package/dist/trpc/routers/fonts.js +112 -0
- package/dist/trpc/routers/fonts.js.map +1 -0
- package/dist/trpc/routers/games.d.ts +7610 -0
- package/dist/trpc/routers/games.d.ts.map +1 -0
- package/dist/trpc/routers/games.js +456 -0
- package/dist/trpc/routers/games.js.map +1 -0
- package/dist/trpc/routers/integrations.d.ts +86 -0
- package/dist/trpc/routers/integrations.d.ts.map +1 -0
- package/dist/trpc/routers/integrations.js +129 -0
- package/dist/trpc/routers/integrations.js.map +1 -0
- package/dist/trpc/routers/jobs.d.ts +88 -27
- package/dist/trpc/routers/jobs.d.ts.map +1 -1
- package/dist/trpc/routers/jobs.js +113 -35
- package/dist/trpc/routers/jobs.js.map +1 -1
- package/dist/trpc/routers/js-scripts.d.ts +410 -0
- package/dist/trpc/routers/js-scripts.d.ts.map +1 -0
- package/dist/trpc/routers/js-scripts.js +303 -0
- package/dist/trpc/routers/js-scripts.js.map +1 -0
- package/dist/trpc/routers/mcp-config.d.ts +1 -1
- package/dist/trpc/routers/mcp-config.js +5 -3
- package/dist/trpc/routers/mcp-config.js.map +1 -1
- package/dist/trpc/routers/memories.d.ts +79 -0
- package/dist/trpc/routers/memories.d.ts.map +1 -0
- package/dist/trpc/routers/memories.js +66 -0
- package/dist/trpc/routers/memories.js.map +1 -0
- package/dist/trpc/routers/messages.d.ts +4 -77
- package/dist/trpc/routers/messages.d.ts.map +1 -1
- package/dist/trpc/routers/messages.js +9 -58
- package/dist/trpc/routers/messages.js.map +1 -1
- package/dist/trpc/routers/models.d.ts +1403 -238
- package/dist/trpc/routers/models.d.ts.map +1 -1
- package/dist/trpc/routers/models.js +532 -294
- package/dist/trpc/routers/models.js.map +1 -1
- package/dist/trpc/routers/nodes.d.ts +32 -16
- package/dist/trpc/routers/nodes.d.ts.map +1 -1
- package/dist/trpc/routers/nodes.js +70 -31
- package/dist/trpc/routers/nodes.js.map +1 -1
- package/dist/trpc/routers/packs.d.ts +184 -0
- package/dist/trpc/routers/packs.d.ts.map +1 -0
- package/dist/trpc/routers/packs.js +259 -0
- package/dist/trpc/routers/packs.js.map +1 -0
- package/dist/trpc/routers/projects.d.ts +422 -0
- package/dist/trpc/routers/projects.d.ts.map +1 -0
- package/dist/trpc/routers/projects.js +373 -0
- package/dist/trpc/routers/projects.js.map +1 -0
- package/dist/trpc/routers/resources.d.ts +120 -0
- package/dist/trpc/routers/resources.d.ts.map +1 -0
- package/dist/trpc/routers/resources.js +212 -0
- package/dist/trpc/routers/resources.js.map +1 -0
- package/dist/trpc/routers/scripts.d.ts +1116 -0
- package/dist/trpc/routers/scripts.d.ts.map +1 -0
- package/dist/trpc/routers/scripts.js +131 -0
- package/dist/trpc/routers/scripts.js.map +1 -0
- package/dist/trpc/routers/segmentation.d.ts +62 -0
- package/dist/trpc/routers/segmentation.d.ts.map +1 -0
- package/dist/trpc/routers/segmentation.js +146 -0
- package/dist/trpc/routers/segmentation.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +177 -10
- package/dist/trpc/routers/settings.d.ts.map +1 -1
- package/dist/trpc/routers/settings.js +123 -33
- package/dist/trpc/routers/settings.js.map +1 -1
- package/dist/trpc/routers/sketch.d.ts +854 -0
- package/dist/trpc/routers/sketch.d.ts.map +1 -0
- package/dist/trpc/routers/sketch.js +617 -0
- package/dist/trpc/routers/sketch.js.map +1 -0
- package/dist/trpc/routers/skills.d.ts +76 -22
- package/dist/trpc/routers/skills.d.ts.map +1 -1
- package/dist/trpc/routers/skills.js +195 -170
- package/dist/trpc/routers/skills.js.map +1 -1
- package/dist/trpc/routers/storage.d.ts +3 -30
- package/dist/trpc/routers/storage.d.ts.map +1 -1
- package/dist/trpc/routers/storage.js +60 -117
- package/dist/trpc/routers/storage.js.map +1 -1
- package/dist/trpc/routers/storyboards.d.ts +5907 -0
- package/dist/trpc/routers/storyboards.d.ts.map +1 -0
- package/dist/trpc/routers/storyboards.js +156 -0
- package/dist/trpc/routers/storyboards.js.map +1 -0
- package/dist/trpc/routers/threads.d.ts +33 -21
- package/dist/trpc/routers/threads.d.ts.map +1 -1
- package/dist/trpc/routers/threads.js +36 -30
- package/dist/trpc/routers/threads.js.map +1 -1
- package/dist/trpc/routers/timeline.d.ts +8516 -0
- package/dist/trpc/routers/timeline.d.ts.map +1 -0
- package/dist/trpc/routers/timeline.js +493 -0
- package/dist/trpc/routers/timeline.js.map +1 -0
- package/dist/trpc/routers/triggers.d.ts +46 -0
- package/dist/trpc/routers/triggers.d.ts.map +1 -0
- package/dist/trpc/routers/triggers.js +117 -0
- package/dist/trpc/routers/triggers.js.map +1 -0
- package/dist/trpc/routers/users.d.ts +1 -14
- package/dist/trpc/routers/users.d.ts.map +1 -1
- package/dist/trpc/routers/users.js +1 -12
- package/dist/trpc/routers/users.js.map +1 -1
- package/dist/trpc/routers/worker.d.ts +242 -0
- package/dist/trpc/routers/worker.d.ts.map +1 -0
- package/dist/trpc/routers/worker.js +220 -0
- package/dist/trpc/routers/worker.js.map +1 -0
- package/dist/trpc/routers/workflows.d.ts +385 -197
- package/dist/trpc/routers/workflows.d.ts.map +1 -1
- package/dist/trpc/routers/workflows.js +326 -345
- package/dist/trpc/routers/workflows.js.map +1 -1
- package/dist/trpc/routers/workspace.d.ts +59 -33
- package/dist/trpc/routers/workspace.d.ts.map +1 -1
- package/dist/trpc/routers/workspace.js +230 -93
- package/dist/trpc/routers/workspace.js.map +1 -1
- package/dist/trpc/sandbox-coverage.d.ts +64 -0
- package/dist/trpc/sandbox-coverage.d.ts.map +1 -0
- package/dist/trpc/sandbox-coverage.js +1049 -0
- package/dist/trpc/sandbox-coverage.js.map +1 -0
- package/dist/websocket-client-session.d.ts +320 -0
- package/dist/websocket-client-session.d.ts.map +1 -0
- package/dist/websocket-client-session.js +1253 -0
- package/dist/websocket-client-session.js.map +1 -0
- package/dist/workflow-interface-service.d.ts +87 -0
- package/dist/workflow-interface-service.d.ts.map +1 -0
- package/dist/workflow-interface-service.js +131 -0
- package/dist/workflow-interface-service.js.map +1 -0
- package/dist/workspace-api.d.ts.map +1 -1
- package/dist/workspace-api.js +33 -23
- package/dist/workspace-api.js.map +1 -1
- package/dist/ws-adapter.d.ts +46 -3
- package/dist/ws-adapter.d.ts.map +1 -1
- package/dist/ws-adapter.js +164 -26
- package/dist/ws-adapter.js.map +1 -1
- package/package.json +81 -35
- package/dist/agent/agent-runtime.d.ts +0 -47
- package/dist/agent/agent-runtime.d.ts.map +0 -1
- package/dist/agent/agent-runtime.js +0 -579
- package/dist/agent/agent-runtime.js.map +0 -1
- package/dist/agent/codex-agent.d.ts +0 -41
- package/dist/agent/codex-agent.d.ts.map +0 -1
- package/dist/agent/codex-agent.js +0 -334
- package/dist/agent/codex-agent.js.map +0 -1
- package/dist/agent/index.d.ts +0 -6
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js +0 -4
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/llm-agent.d.ts +0 -51
- package/dist/agent/llm-agent.d.ts.map +0 -1
- package/dist/agent/llm-agent.js +0 -526
- package/dist/agent/llm-agent.js.map +0 -1
- package/dist/agent/mcp-tool-server.d.ts +0 -33
- package/dist/agent/mcp-tool-server.d.ts.map +0 -1
- package/dist/agent/mcp-tool-server.js +0 -292
- package/dist/agent/mcp-tool-server.js.map +0 -1
- package/dist/agent/opencode-agent.d.ts +0 -32
- package/dist/agent/opencode-agent.d.ts.map +0 -1
- package/dist/agent/opencode-agent.js +0 -332
- package/dist/agent/opencode-agent.js.map +0 -1
- package/dist/agent/pi-agent.d.ts +0 -42
- package/dist/agent/pi-agent.d.ts.map +0 -1
- package/dist/agent/pi-agent.js +0 -429
- package/dist/agent/pi-agent.js.map +0 -1
- package/dist/agent/sdk-provider.d.ts +0 -46
- package/dist/agent/sdk-provider.d.ts.map +0 -1
- package/dist/agent/sdk-provider.js +0 -50
- package/dist/agent/sdk-provider.js.map +0 -1
- package/dist/agent/socket-route.d.ts +0 -11
- package/dist/agent/socket-route.d.ts.map +0 -1
- package/dist/agent/socket-route.js +0 -262
- package/dist/agent/socket-route.js.map +0 -1
- package/dist/agent/transport.d.ts +0 -39
- package/dist/agent/transport.d.ts.map +0 -1
- package/dist/agent/transport.js +0 -17
- package/dist/agent/transport.js.map +0 -1
- package/dist/agent/types.d.ts +0 -11
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -10
- package/dist/agent/types.js.map +0 -1
- package/dist/routes/jobs.d.ts +0 -16
- package/dist/routes/jobs.d.ts.map +0 -1
- package/dist/routes/jobs.js +0 -25
- package/dist/routes/jobs.js.map +0 -1
- package/dist/trpc/routers/sandboxes.d.ts +0 -64
- package/dist/trpc/routers/sandboxes.d.ts.map +0 -1
- package/dist/trpc/routers/sandboxes.js +0 -327
- package/dist/trpc/routers/sandboxes.js.map +0 -1
- package/dist/unified-websocket-runner.d.ts +0 -280
- package/dist/unified-websocket-runner.d.ts.map +0 -1
- package/dist/unified-websocket-runner.js +0 -3840
- package/dist/unified-websocket-runner.js.map +0 -1
|
@@ -2,16 +2,35 @@
|
|
|
2
2
|
* Resolve asset IDs in message content to browser-accessible URLs.
|
|
3
3
|
*
|
|
4
4
|
* Media refs store an `asset_id` in the database. Before sending to a
|
|
5
|
-
* client, this module resolves each to a
|
|
5
|
+
* client, this module resolves each to a URL the browser can load directly
|
|
6
|
+
* from an `<img>` / `<video>` / `<audio>` element — which is why it goes
|
|
7
|
+
* through the storage backend's own URL builder, exactly like
|
|
8
|
+
* `assets.get_url` does. A media element sends no `Authorization` header, so
|
|
9
|
+
* on a deployment with auth enforced and asset bytes in S3/Supabase the old
|
|
10
|
+
* `/api/storage/<key>` path answered 401 (and pointed at a local file backend
|
|
11
|
+
* that did not hold the bytes anyway); the signed URL those backends mint is
|
|
12
|
+
* loadable as-is.
|
|
6
13
|
*
|
|
7
14
|
* For LLM providers use `resolveContentForProvider` instead, which maps
|
|
8
15
|
* asset_id directly to a file:// URI so no HTTP round-trip is needed.
|
|
16
|
+
*
|
|
17
|
+
* Pass the owning `userId` wherever it's known: asset bytes are written
|
|
18
|
+
* owner-prefixed (`<userId>/<assetId>.<ext>`), and a key built without the
|
|
19
|
+
* prefix resolves to a path that no longer exists.
|
|
9
20
|
*/
|
|
10
|
-
import { buildAssetUrl, getAssetFilePath } from "@nodetool-ai/config";
|
|
21
|
+
import { buildAssetUrl, getAssetFilePath, loadAssetStorageConfig } from "@nodetool-ai/config";
|
|
22
|
+
import { assetObjectKey, createAssetUrlBuilder } from "@nodetool-ai/storage";
|
|
23
|
+
import { existsSync } from "node:fs";
|
|
11
24
|
import { pathToFileURL } from "node:url";
|
|
25
|
+
import { isObjectLike, isString } from "./lib/wire-values.js";
|
|
12
26
|
const MIME_TO_EXT = {
|
|
13
27
|
"image/png": "png",
|
|
14
28
|
"image/jpeg": "jpg",
|
|
29
|
+
// `image/jpg` and `image/bmp` are accepted by the storage-side extension map
|
|
30
|
+
// (IMAGE_MIME_TO_EXT); without them here, resolution fell through to `.bin`
|
|
31
|
+
// and produced a dangling asset URL for a file written as `.jpg` / `.bmp`.
|
|
32
|
+
"image/jpg": "jpg",
|
|
33
|
+
"image/bmp": "bmp",
|
|
15
34
|
"image/gif": "gif",
|
|
16
35
|
"image/webp": "webp",
|
|
17
36
|
"image/svg+xml": "svg",
|
|
@@ -28,17 +47,65 @@ function extFromMime(mime) {
|
|
|
28
47
|
return "bin";
|
|
29
48
|
return MIME_TO_EXT[mime] ?? "bin";
|
|
30
49
|
}
|
|
31
|
-
|
|
32
|
-
|
|
50
|
+
// asset_id comes from client-supplied message content and is interpolated into
|
|
51
|
+
// a filesystem path. A value with path separators or `..` segments would let
|
|
52
|
+
// the resolved file:// URI escape the assets dir and expose arbitrary local
|
|
53
|
+
// files to the LLM. Restrict to a plain id token.
|
|
54
|
+
function isSafeAssetId(assetId) {
|
|
55
|
+
return (assetId.length > 0 &&
|
|
56
|
+
!assetId.includes("/") &&
|
|
57
|
+
!assetId.includes("\\") &&
|
|
58
|
+
!assetId.includes("..") &&
|
|
59
|
+
!assetId.includes("\0"));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Bytes are written owner-prefixed (`<userId>/<assetId>.<ext>`) by
|
|
63
|
+
* `storeAssetWithThumbnail`, and `/api/storage` only falls back
|
|
64
|
+
* prefixed → flat, never the other way round — so a flat URL 404s for every
|
|
65
|
+
* asset written under the current layout. Build the prefixed key whenever the
|
|
66
|
+
* owner is known; without one, the flat legacy key is all there is.
|
|
67
|
+
*/
|
|
68
|
+
function assetKeyFor(assetId, mimeType, userId) {
|
|
69
|
+
const fileName = `${assetId}.${extFromMime(mimeType)}`;
|
|
70
|
+
return userId ? assetObjectKey(userId, fileName) : fileName;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The configured backend's URL builder, rebuilt when the backend kind changes
|
|
74
|
+
* (tests switch backends in-process). The `file` backend is served by this
|
|
75
|
+
* server's own `/api/storage` route, so it keeps going through
|
|
76
|
+
* `buildAssetUrl`, which percent-encodes each key segment; the cloud backends
|
|
77
|
+
* mint a signed URL to their own origin.
|
|
78
|
+
*/
|
|
79
|
+
let cachedBuilderKind = null;
|
|
80
|
+
let cachedBuilder = null;
|
|
81
|
+
async function assetUrlForKey(key) {
|
|
82
|
+
const config = loadAssetStorageConfig();
|
|
83
|
+
if (config.kind === "file") {
|
|
84
|
+
return buildAssetUrl(key);
|
|
85
|
+
}
|
|
86
|
+
if (!cachedBuilder || cachedBuilderKind !== config.kind) {
|
|
87
|
+
cachedBuilderKind = config.kind;
|
|
88
|
+
cachedBuilder = createAssetUrlBuilder(config);
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
return await cachedBuilder(key);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Signing failed (network, expired credentials). The server-side route is
|
|
95
|
+
// no worse than emitting nothing, and it still works for a caller that can
|
|
96
|
+
// authenticate.
|
|
97
|
+
return buildAssetUrl(key);
|
|
98
|
+
}
|
|
33
99
|
}
|
|
34
100
|
/**
|
|
35
101
|
* Resolve a media ref object: if it has an asset_id, derive uri from it.
|
|
36
102
|
*/
|
|
37
|
-
function resolveRef(ref, fallbackMime) {
|
|
103
|
+
async function resolveRef(ref, fallbackMime, userId) {
|
|
38
104
|
const resolved = { ...ref };
|
|
39
105
|
const mime = (resolved.mimeType ?? resolved.mime_type ?? resolved.content_type ?? fallbackMime);
|
|
40
|
-
if (
|
|
41
|
-
|
|
106
|
+
if (isString(resolved.asset_id) &&
|
|
107
|
+
isSafeAssetId(resolved.asset_id)) {
|
|
108
|
+
resolved.uri = await assetUrlForKey(assetKeyFor(resolved.asset_id, mime, userId));
|
|
42
109
|
}
|
|
43
110
|
return resolved;
|
|
44
111
|
}
|
|
@@ -47,12 +114,21 @@ function resolveRef(ref, fallbackMime) {
|
|
|
47
114
|
* Maps asset_id directly to a file:// URI so providers read from disk,
|
|
48
115
|
* not via an HTTP round-trip to the local server.
|
|
49
116
|
*/
|
|
50
|
-
function resolveRefForProvider(ref, fallbackMime) {
|
|
117
|
+
function resolveRefForProvider(ref, fallbackMime, userId) {
|
|
51
118
|
const resolved = { ...ref };
|
|
52
119
|
const mime = (resolved.mimeType ?? resolved.mime_type ?? resolved.content_type ?? fallbackMime);
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
120
|
+
if (isString(resolved.asset_id) &&
|
|
121
|
+
isSafeAssetId(resolved.asset_id) &&
|
|
122
|
+
!resolved.uri) {
|
|
123
|
+
const flat = `${resolved.asset_id}.${extFromMime(mime)}`;
|
|
124
|
+
// Prefer the owner-prefixed path the bytes are actually written to, but
|
|
125
|
+
// fall back to the flat legacy path for objects predating that layout.
|
|
126
|
+
let filePath = getAssetFilePath(assetKeyFor(resolved.asset_id, mime, userId));
|
|
127
|
+
if (userId && !existsSync(filePath)) {
|
|
128
|
+
const legacy = getAssetFilePath(flat);
|
|
129
|
+
if (existsSync(legacy))
|
|
130
|
+
filePath = legacy;
|
|
131
|
+
}
|
|
56
132
|
resolved.uri = pathToFileURL(filePath).href;
|
|
57
133
|
}
|
|
58
134
|
return resolved;
|
|
@@ -61,49 +137,59 @@ function resolveRefForProvider(ref, fallbackMime) {
|
|
|
61
137
|
* Walk a message content array and resolve asset_id refs to file:// URIs
|
|
62
138
|
* suitable for LLM provider calls (reads directly from disk).
|
|
63
139
|
*/
|
|
64
|
-
export function resolveContentForProvider(content) {
|
|
140
|
+
export function resolveContentForProvider(content, userId) {
|
|
65
141
|
if (!Array.isArray(content))
|
|
66
142
|
return content;
|
|
67
143
|
return content.map((block) => {
|
|
68
|
-
if (!block
|
|
144
|
+
if (!isObjectLike(block))
|
|
69
145
|
return block;
|
|
70
146
|
const b = block;
|
|
71
147
|
if ((b.type === "image_url" || b.type === "image") &&
|
|
72
|
-
b.image
|
|
73
|
-
|
|
74
|
-
return { ...b, image: resolveRefForProvider(b.image, "image/png") };
|
|
148
|
+
isObjectLike(b.image)) {
|
|
149
|
+
return { ...b, image: resolveRefForProvider(b.image, "image/png", userId) };
|
|
75
150
|
}
|
|
76
|
-
if (b.type === "video" && b.video
|
|
77
|
-
return { ...b, video: resolveRefForProvider(b.video, "video/mp4") };
|
|
151
|
+
if (b.type === "video" && isObjectLike(b.video)) {
|
|
152
|
+
return { ...b, video: resolveRefForProvider(b.video, "video/mp4", userId) };
|
|
78
153
|
}
|
|
79
|
-
if (b.type === "audio" && b.audio
|
|
80
|
-
return { ...b, audio: resolveRefForProvider(b.audio, "audio/wav") };
|
|
154
|
+
if (b.type === "audio" && isObjectLike(b.audio)) {
|
|
155
|
+
return { ...b, audio: resolveRefForProvider(b.audio, "audio/wav", userId) };
|
|
81
156
|
}
|
|
82
157
|
return block;
|
|
83
158
|
});
|
|
84
159
|
}
|
|
85
160
|
/**
|
|
86
161
|
* Walk a message content array and resolve asset_id refs to URLs.
|
|
162
|
+
*
|
|
163
|
+
* Async because a cloud storage backend signs each URL; the `file` backend
|
|
164
|
+
* resolves without I/O.
|
|
87
165
|
*/
|
|
88
|
-
export function resolveContentUrls(content) {
|
|
166
|
+
export async function resolveContentUrls(content, userId) {
|
|
89
167
|
if (!Array.isArray(content))
|
|
90
168
|
return content;
|
|
91
|
-
return content.map((block) => {
|
|
92
|
-
if (!block
|
|
169
|
+
return Promise.all(content.map(async (block) => {
|
|
170
|
+
if (!isObjectLike(block))
|
|
93
171
|
return block;
|
|
94
172
|
const b = block;
|
|
95
173
|
if ((b.type === "image_url" || b.type === "image") &&
|
|
96
|
-
b.image
|
|
97
|
-
|
|
98
|
-
|
|
174
|
+
isObjectLike(b.image)) {
|
|
175
|
+
return {
|
|
176
|
+
...b,
|
|
177
|
+
image: await resolveRef(b.image, "image/png", userId)
|
|
178
|
+
};
|
|
99
179
|
}
|
|
100
|
-
if (b.type === "video" && b.video
|
|
101
|
-
return {
|
|
180
|
+
if (b.type === "video" && isObjectLike(b.video)) {
|
|
181
|
+
return {
|
|
182
|
+
...b,
|
|
183
|
+
video: await resolveRef(b.video, "video/mp4", userId)
|
|
184
|
+
};
|
|
102
185
|
}
|
|
103
|
-
if (b.type === "audio" && b.audio
|
|
104
|
-
return {
|
|
186
|
+
if (b.type === "audio" && isObjectLike(b.audio)) {
|
|
187
|
+
return {
|
|
188
|
+
...b,
|
|
189
|
+
audio: await resolveRef(b.audio, "audio/wav", userId)
|
|
190
|
+
};
|
|
105
191
|
}
|
|
106
192
|
return block;
|
|
107
|
-
});
|
|
193
|
+
}));
|
|
108
194
|
}
|
|
109
195
|
//# sourceMappingURL=resolve-media-urls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-media-urls.js","sourceRoot":"","sources":["../src/resolve-media-urls.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve-media-urls.js","sourceRoot":"","sources":["../src/resolve-media-urls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-wide resource change emitter for non-DBModel resources
|
|
3
|
+
* (collections, model installs, etc.) that need to broadcast cache
|
|
4
|
+
* invalidations to connected clients.
|
|
5
|
+
*
|
|
6
|
+
* DBModel mutations already broadcast via `ModelObserver` from
|
|
7
|
+
* `@nodetool-ai/models`. Use this emitter for resources that don't go
|
|
8
|
+
* through a DBModel.
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitter } from "node:events";
|
|
11
|
+
export type ResourceChangeEvent = "created" | "updated" | "deleted";
|
|
12
|
+
export interface ResourceChangePayload {
|
|
13
|
+
event: ResourceChangeEvent;
|
|
14
|
+
resource_type: string;
|
|
15
|
+
resource: Record<string, unknown> & {
|
|
16
|
+
id: string;
|
|
17
|
+
etag?: string;
|
|
18
|
+
};
|
|
19
|
+
/** When set, only sessions for this user receive the event. */
|
|
20
|
+
userId?: string | null;
|
|
21
|
+
}
|
|
22
|
+
declare class ResourceEventEmitter extends EventEmitter {
|
|
23
|
+
emitChange(payload: ResourceChangePayload): void;
|
|
24
|
+
}
|
|
25
|
+
export declare const resourceEvents: ResourceEventEmitter;
|
|
26
|
+
export declare function notifyResourceChange(payload: ResourceChangePayload): void;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=resource-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-events.d.ts","sourceRoot":"","sources":["../src/resource-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,cAAM,oBAAqB,SAAQ,YAAY;IAC7C,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAE/C;CACF;AAED,eAAO,MAAM,cAAc,sBAA6B,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAEzE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-wide resource change emitter for non-DBModel resources
|
|
3
|
+
* (collections, model installs, etc.) that need to broadcast cache
|
|
4
|
+
* invalidations to connected clients.
|
|
5
|
+
*
|
|
6
|
+
* DBModel mutations already broadcast via `ModelObserver` from
|
|
7
|
+
* `@nodetool-ai/models`. Use this emitter for resources that don't go
|
|
8
|
+
* through a DBModel.
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitter } from "node:events";
|
|
11
|
+
class ResourceEventEmitter extends EventEmitter {
|
|
12
|
+
emitChange(payload) {
|
|
13
|
+
this.emit("change", payload);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export const resourceEvents = new ResourceEventEmitter();
|
|
17
|
+
export function notifyResourceChange(payload) {
|
|
18
|
+
resourceEvents.emitChange(payload);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=resource-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-events.js","sourceRoot":"","sources":["../src/resource-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,MAAM,oBAAqB,SAAQ,YAAY;IAC7C,UAAU,CAAC,OAA8B;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data-subject-rights endpoints — the HTTP door onto `@nodetool-ai/models`'
|
|
3
|
+
* `exportPersonalData` / `erasePersonalData`.
|
|
4
|
+
*
|
|
5
|
+
* GET /api/account/export → Art. 20 portability
|
|
6
|
+
* DELETE /api/account → Art. 17 erasure
|
|
7
|
+
*
|
|
8
|
+
* The published privacy policy promises both in-product; this is what it
|
|
9
|
+
* points at. Neither route decides policy: `PERSONAL_DATA_REGISTRY` says what
|
|
10
|
+
* happens to each table and the library walks it.
|
|
11
|
+
*
|
|
12
|
+
* ## The subject is always the caller
|
|
13
|
+
*
|
|
14
|
+
* There is no admin path here and no way to name a subject. Both handlers get
|
|
15
|
+
* their user id from `getUserId`, reading the request that `bridge` built —
|
|
16
|
+
* and `bridge` deletes any client-supplied identity header before setting it
|
|
17
|
+
* from `req.userId`, the id the server's own auth hook decided. No id is read
|
|
18
|
+
* from the path, the query or the body: the erase body's schema declares
|
|
19
|
+
* `confirm` and nothing else, and the routes carry no `:id` segment for one to
|
|
20
|
+
* hide in. A caller wanting somebody else's data would have to change this
|
|
21
|
+
* file, not the request. `req.userId == null` is refused with 401 rather than
|
|
22
|
+
* falling back to `getUserId`'s default of user "1".
|
|
23
|
+
*
|
|
24
|
+
* ## The erasure contract
|
|
25
|
+
*
|
|
26
|
+
* `DELETE /api/account` is irreversible, so it is deliberate by construction:
|
|
27
|
+
*
|
|
28
|
+
* - The body must be `{"confirm": "DELETE MY ACCOUNT"}` — the exact string,
|
|
29
|
+
* case-sensitive. A bare `DELETE` with no body, an empty object, a typo, or
|
|
30
|
+
* any other value is `400` and nothing is touched. A stray or replayed
|
|
31
|
+
* `DELETE` therefore cannot erase anything.
|
|
32
|
+
* - It is idempotent. The library re-runs the same sweep; a second call finds
|
|
33
|
+
* nothing left and reports zeros. Both calls answer `200`.
|
|
34
|
+
* - It returns the per-table report — deleted/redacted/retained counts keyed
|
|
35
|
+
* by table — plus the `requestId` that ties the two audit rows together.
|
|
36
|
+
* - Audit: this route writes `data_erasure_requested` *before* the sweep, so
|
|
37
|
+
* the request is on record even if the sweep then throws.
|
|
38
|
+
* `erasePersonalData` writes `data_erasure_completed` itself once it is
|
|
39
|
+
* given a `requestId`; this route does not write that event a second time.
|
|
40
|
+
* Both types are in `NEVER_PRUNED_USER_EVENT_TYPES`, so the sweep it runs
|
|
41
|
+
* leaves them behind as the evidence the request was answered.
|
|
42
|
+
*
|
|
43
|
+
* ## Bytes, not just rows
|
|
44
|
+
*
|
|
45
|
+
* `erasePersonalData` takes an {@link ErasureObjectStore} and reports
|
|
46
|
+
* `objectKeysDeleted: null` without one — deleting the asset row and leaving
|
|
47
|
+
* the object readable to anyone holding a URL. `assetErasureStore` below wires
|
|
48
|
+
* the real `StorageAdapter`, so the report names the keys it removed.
|
|
49
|
+
*
|
|
50
|
+
* Two things that adapter does on purpose. It filters the listing to keys
|
|
51
|
+
* under `<userId>/` rather than trusting the prefix scoping: `list()`
|
|
52
|
+
* normalizes `"u1/"` to `"u1"`, and on the S3 and Supabase backends — which
|
|
53
|
+
* match a prefix as a string, not as a directory — that would also match
|
|
54
|
+
* `u10/…`. And it only ever deletes what that filter passes, so the blast
|
|
55
|
+
* radius is one user's prefix whatever the backend does with the argument.
|
|
56
|
+
* Objects stored before the owner prefix existed sit at a flat
|
|
57
|
+
* `<assetId>.<ext>` and are not reachable by any per-user prefix; they are not
|
|
58
|
+
* swept here.
|
|
59
|
+
*
|
|
60
|
+
* ## Why the body is validated with Zod rather than a Fastify `schema`
|
|
61
|
+
*
|
|
62
|
+
* These are bridged routes. The server installs an app-wide
|
|
63
|
+
* `addContentTypeParser("*", { parseAs: "buffer" })`, so `req.body` reaches a
|
|
64
|
+
* route as raw bytes and a JSON-schema `schema.body` would reject every
|
|
65
|
+
* request as "not an object". Validation therefore happens where the bytes
|
|
66
|
+
* are — one `safeParse` at the boundary, before anything reads a field —
|
|
67
|
+
* which is the pattern the other bridged routes in this package use and what
|
|
68
|
+
* `packages/AGENTS.md` means by "Zod is the canonical validator".
|
|
69
|
+
*/
|
|
70
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
71
|
+
import { type ErasureObjectStore } from "@nodetool-ai/models";
|
|
72
|
+
import type { StorageAdapter } from "@nodetool-ai/storage";
|
|
73
|
+
import { z } from "zod";
|
|
74
|
+
import { type HttpApiOptions } from "../http-api.js";
|
|
75
|
+
interface RouteOptions {
|
|
76
|
+
apiOptions: HttpApiOptions;
|
|
77
|
+
/** Object store swept on erasure. Defaults to the asset adapter. */
|
|
78
|
+
storage?: StorageAdapter;
|
|
79
|
+
}
|
|
80
|
+
/** The exact phrase `DELETE /api/account` requires in its body. */
|
|
81
|
+
export declare const ERASURE_CONFIRMATION = "DELETE MY ACCOUNT";
|
|
82
|
+
/**
|
|
83
|
+
* The one field the erase body may carry.
|
|
84
|
+
*
|
|
85
|
+
* `z.literal` rather than a free string so the gate is the phrase itself, and
|
|
86
|
+
* `strict()` so an unexpected field — `user_id`, `userId`, `subject` — is a
|
|
87
|
+
* `400` rather than something a later reader might mistake for an instruction.
|
|
88
|
+
*/
|
|
89
|
+
export declare const erasureRequest: z.ZodObject<{
|
|
90
|
+
confirm: z.ZodLiteral<"DELETE MY ACCOUNT">;
|
|
91
|
+
}, z.core.$strict>;
|
|
92
|
+
/**
|
|
93
|
+
* A {@link ErasureObjectStore} over a `StorageAdapter` — the adapter shape the
|
|
94
|
+
* doc comment on `ErasureObjectStore` sketches, with the prefix guard the
|
|
95
|
+
* string-prefix backends need.
|
|
96
|
+
*/
|
|
97
|
+
export declare function assetErasureStore(adapter: StorageAdapter): ErasureObjectStore;
|
|
98
|
+
declare const accountRoutes: FastifyPluginAsync<RouteOptions>;
|
|
99
|
+
export default accountRoutes;
|
|
100
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhE,UAAU,YAAY;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,oEAAoE;IACpE,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;kBAEhB,CAAC;AAoBZ;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,GACtB,kBAAkB,CAapB;AAQD,QAAA,MAAM,aAAa,EAAE,kBAAkB,CAAC,YAAY,CAoFnD,CAAC;eAEa,aAAa"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data-subject-rights endpoints — the HTTP door onto `@nodetool-ai/models`'
|
|
3
|
+
* `exportPersonalData` / `erasePersonalData`.
|
|
4
|
+
*
|
|
5
|
+
* GET /api/account/export → Art. 20 portability
|
|
6
|
+
* DELETE /api/account → Art. 17 erasure
|
|
7
|
+
*
|
|
8
|
+
* The published privacy policy promises both in-product; this is what it
|
|
9
|
+
* points at. Neither route decides policy: `PERSONAL_DATA_REGISTRY` says what
|
|
10
|
+
* happens to each table and the library walks it.
|
|
11
|
+
*
|
|
12
|
+
* ## The subject is always the caller
|
|
13
|
+
*
|
|
14
|
+
* There is no admin path here and no way to name a subject. Both handlers get
|
|
15
|
+
* their user id from `getUserId`, reading the request that `bridge` built —
|
|
16
|
+
* and `bridge` deletes any client-supplied identity header before setting it
|
|
17
|
+
* from `req.userId`, the id the server's own auth hook decided. No id is read
|
|
18
|
+
* from the path, the query or the body: the erase body's schema declares
|
|
19
|
+
* `confirm` and nothing else, and the routes carry no `:id` segment for one to
|
|
20
|
+
* hide in. A caller wanting somebody else's data would have to change this
|
|
21
|
+
* file, not the request. `req.userId == null` is refused with 401 rather than
|
|
22
|
+
* falling back to `getUserId`'s default of user "1".
|
|
23
|
+
*
|
|
24
|
+
* ## The erasure contract
|
|
25
|
+
*
|
|
26
|
+
* `DELETE /api/account` is irreversible, so it is deliberate by construction:
|
|
27
|
+
*
|
|
28
|
+
* - The body must be `{"confirm": "DELETE MY ACCOUNT"}` — the exact string,
|
|
29
|
+
* case-sensitive. A bare `DELETE` with no body, an empty object, a typo, or
|
|
30
|
+
* any other value is `400` and nothing is touched. A stray or replayed
|
|
31
|
+
* `DELETE` therefore cannot erase anything.
|
|
32
|
+
* - It is idempotent. The library re-runs the same sweep; a second call finds
|
|
33
|
+
* nothing left and reports zeros. Both calls answer `200`.
|
|
34
|
+
* - It returns the per-table report — deleted/redacted/retained counts keyed
|
|
35
|
+
* by table — plus the `requestId` that ties the two audit rows together.
|
|
36
|
+
* - Audit: this route writes `data_erasure_requested` *before* the sweep, so
|
|
37
|
+
* the request is on record even if the sweep then throws.
|
|
38
|
+
* `erasePersonalData` writes `data_erasure_completed` itself once it is
|
|
39
|
+
* given a `requestId`; this route does not write that event a second time.
|
|
40
|
+
* Both types are in `NEVER_PRUNED_USER_EVENT_TYPES`, so the sweep it runs
|
|
41
|
+
* leaves them behind as the evidence the request was answered.
|
|
42
|
+
*
|
|
43
|
+
* ## Bytes, not just rows
|
|
44
|
+
*
|
|
45
|
+
* `erasePersonalData` takes an {@link ErasureObjectStore} and reports
|
|
46
|
+
* `objectKeysDeleted: null` without one — deleting the asset row and leaving
|
|
47
|
+
* the object readable to anyone holding a URL. `assetErasureStore` below wires
|
|
48
|
+
* the real `StorageAdapter`, so the report names the keys it removed.
|
|
49
|
+
*
|
|
50
|
+
* Two things that adapter does on purpose. It filters the listing to keys
|
|
51
|
+
* under `<userId>/` rather than trusting the prefix scoping: `list()`
|
|
52
|
+
* normalizes `"u1/"` to `"u1"`, and on the S3 and Supabase backends — which
|
|
53
|
+
* match a prefix as a string, not as a directory — that would also match
|
|
54
|
+
* `u10/…`. And it only ever deletes what that filter passes, so the blast
|
|
55
|
+
* radius is one user's prefix whatever the backend does with the argument.
|
|
56
|
+
* Objects stored before the owner prefix existed sit at a flat
|
|
57
|
+
* `<assetId>.<ext>` and are not reachable by any per-user prefix; they are not
|
|
58
|
+
* swept here.
|
|
59
|
+
*
|
|
60
|
+
* ## Why the body is validated with Zod rather than a Fastify `schema`
|
|
61
|
+
*
|
|
62
|
+
* These are bridged routes. The server installs an app-wide
|
|
63
|
+
* `addContentTypeParser("*", { parseAs: "buffer" })`, so `req.body` reaches a
|
|
64
|
+
* route as raw bytes and a JSON-schema `schema.body` would reject every
|
|
65
|
+
* request as "not an object". Validation therefore happens where the bytes
|
|
66
|
+
* are — one `safeParse` at the boundary, before anything reads a field —
|
|
67
|
+
* which is the pattern the other bridged routes in this package use and what
|
|
68
|
+
* `packages/AGENTS.md` means by "Zod is the canonical validator".
|
|
69
|
+
*/
|
|
70
|
+
import { randomUUID } from "node:crypto";
|
|
71
|
+
import { UserEventType, erasePersonalData, exportPersonalData, recordUserEvent } from "@nodetool-ai/models";
|
|
72
|
+
import { z } from "zod";
|
|
73
|
+
import { bridge } from "../lib/bridge.js";
|
|
74
|
+
import { getUserId } from "../http-api.js";
|
|
75
|
+
import { getAssetAdapter } from "../lib/storage.js";
|
|
76
|
+
/** The exact phrase `DELETE /api/account` requires in its body. */
|
|
77
|
+
export const ERASURE_CONFIRMATION = "DELETE MY ACCOUNT";
|
|
78
|
+
/**
|
|
79
|
+
* The one field the erase body may carry.
|
|
80
|
+
*
|
|
81
|
+
* `z.literal` rather than a free string so the gate is the phrase itself, and
|
|
82
|
+
* `strict()` so an unexpected field — `user_id`, `userId`, `subject` — is a
|
|
83
|
+
* `400` rather than something a later reader might mistake for an instruction.
|
|
84
|
+
*/
|
|
85
|
+
export const erasureRequest = z
|
|
86
|
+
.object({ confirm: z.literal(ERASURE_CONFIRMATION) })
|
|
87
|
+
.strict();
|
|
88
|
+
function jsonResponse(data, status = 200) {
|
|
89
|
+
return new Response(JSON.stringify(data ?? null), {
|
|
90
|
+
status,
|
|
91
|
+
headers: { "content-type": "application/json", "cache-control": "no-store" }
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** The parsed JSON body, or `null` when there is nothing parseable. */
|
|
95
|
+
async function readJsonBody(request) {
|
|
96
|
+
try {
|
|
97
|
+
const text = await request.text();
|
|
98
|
+
return text.length > 0 ? JSON.parse(text) : null;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Unparseable bytes are "no body", answered by the schema below as a 400.
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A {@link ErasureObjectStore} over a `StorageAdapter` — the adapter shape the
|
|
107
|
+
* doc comment on `ErasureObjectStore` sketches, with the prefix guard the
|
|
108
|
+
* string-prefix backends need.
|
|
109
|
+
*/
|
|
110
|
+
export function assetErasureStore(adapter) {
|
|
111
|
+
return {
|
|
112
|
+
async deleteObjectsForUser(userId) {
|
|
113
|
+
const prefix = `${userId}/`;
|
|
114
|
+
const { entries } = await adapter.list(prefix);
|
|
115
|
+
const deleted = [];
|
|
116
|
+
for (const entry of entries) {
|
|
117
|
+
if (!entry.key.startsWith(prefix))
|
|
118
|
+
continue;
|
|
119
|
+
if (await adapter.delete(entry.uri))
|
|
120
|
+
deleted.push(entry.key);
|
|
121
|
+
}
|
|
122
|
+
return deleted;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/** Filename a browser saves the export as. */
|
|
127
|
+
function exportFilename(generatedAt) {
|
|
128
|
+
const day = generatedAt.slice(0, 10);
|
|
129
|
+
return `nodetool-personal-data-export-${day}.json`;
|
|
130
|
+
}
|
|
131
|
+
const accountRoutes = async (app, opts) => {
|
|
132
|
+
const { apiOptions } = opts;
|
|
133
|
+
const userIdHeader = apiOptions.userIdHeader ?? "x-user-id";
|
|
134
|
+
app.get("/api/account/export", async (req, reply) => {
|
|
135
|
+
// No authenticated identity means no subject. `getUserId` would answer "1"
|
|
136
|
+
// here, which is a real account on a local install.
|
|
137
|
+
if (req.userId == null) {
|
|
138
|
+
reply
|
|
139
|
+
.code(401)
|
|
140
|
+
.header("cache-control", "no-store")
|
|
141
|
+
.send({ detail: "Authentication required" });
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
await bridge(req, reply, async (request) => {
|
|
145
|
+
const userId = getUserId(request, userIdHeader);
|
|
146
|
+
const data = await exportPersonalData(userId);
|
|
147
|
+
await recordUserEvent({
|
|
148
|
+
userId,
|
|
149
|
+
eventType: UserEventType.DATA_EXPORT_REQUESTED,
|
|
150
|
+
metadata: { request_id: randomUUID(), format: data.format }
|
|
151
|
+
});
|
|
152
|
+
return new Response(JSON.stringify(data), {
|
|
153
|
+
status: 200,
|
|
154
|
+
headers: {
|
|
155
|
+
"content-type": "application/json",
|
|
156
|
+
"cache-control": "no-store",
|
|
157
|
+
"content-disposition": `attachment; filename="${exportFilename(data.generatedAt)}"`
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}, userIdHeader);
|
|
161
|
+
});
|
|
162
|
+
app.delete("/api/account", async (req, reply) => {
|
|
163
|
+
if (req.userId == null) {
|
|
164
|
+
reply
|
|
165
|
+
.code(401)
|
|
166
|
+
.header("cache-control", "no-store")
|
|
167
|
+
.send({ detail: "Authentication required" });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
await bridge(req, reply, async (request) => {
|
|
171
|
+
const parsed = erasureRequest.safeParse(await readJsonBody(request));
|
|
172
|
+
if (!parsed.success) {
|
|
173
|
+
return jsonResponse({
|
|
174
|
+
detail: "Erasure is irreversible. Send " +
|
|
175
|
+
`{"confirm": "${ERASURE_CONFIRMATION}"} to confirm.`
|
|
176
|
+
}, 400);
|
|
177
|
+
}
|
|
178
|
+
const userId = getUserId(request, userIdHeader);
|
|
179
|
+
const requestId = randomUUID();
|
|
180
|
+
// Before the sweep: this row is the record that the request arrived,
|
|
181
|
+
// and it has to survive a sweep that then fails part-way.
|
|
182
|
+
await recordUserEvent({
|
|
183
|
+
userId,
|
|
184
|
+
eventType: UserEventType.DATA_ERASURE_REQUESTED,
|
|
185
|
+
metadata: { request_id: requestId }
|
|
186
|
+
});
|
|
187
|
+
const report = await erasePersonalData(userId, {
|
|
188
|
+
objectStore: assetErasureStore(opts.storage ?? getAssetAdapter()),
|
|
189
|
+
// `erasePersonalData` writes `data_erasure_completed` from this id.
|
|
190
|
+
requestId
|
|
191
|
+
});
|
|
192
|
+
return jsonResponse({ requestId, report });
|
|
193
|
+
}, userIdHeader);
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
export default accountRoutes;
|
|
197
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applications REST routes — the non-tRPC door onto the same service.
|
|
3
|
+
*
|
|
4
|
+
* The web app uses `/trpc/applications.*`; mobile, the CLI, and third-party
|
|
5
|
+
* clients use these. Both call `lib/applications-service.ts`, so a given app
|
|
6
|
+
* serializes identically on either transport.
|
|
7
|
+
*
|
|
8
|
+
* GET /api/applications → ApplicationListItem[]
|
|
9
|
+
* POST /api/applications → ApplicationResponse
|
|
10
|
+
* GET /api/applications/:id → ApplicationResponse
|
|
11
|
+
* PUT /api/applications/:id → ApplicationResponse
|
|
12
|
+
* PATCH /api/applications/:id → ApplicationResponse
|
|
13
|
+
* DELETE /api/applications/:id → { ok: true }
|
|
14
|
+
* GET /api/applications/:id/released-document → ApplicationReleaseResponse | null
|
|
15
|
+
* GET /api/applications/:id/export-bundle → ApplicationBundle (download)
|
|
16
|
+
* POST /api/applications/import-bundle → ApplicationResponse
|
|
17
|
+
* POST /api/applications/build → BuildReport | {session_id}
|
|
18
|
+
* POST /api/applications/debug → AppDebugSummary | {session_id}
|
|
19
|
+
* GET /api/applications/examples → ExampleAppSummary[]
|
|
20
|
+
* GET /api/applications/examples/:slug → ApplicationBundle
|
|
21
|
+
* POST /api/applications/examples/:slug/install → ApplicationResponse
|
|
22
|
+
*/
|
|
23
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
24
|
+
import { type HttpApiOptions } from "../http-api.js";
|
|
25
|
+
import { type AppBuildDeps } from "../lib/app-build-service.js";
|
|
26
|
+
import { type AppDebugDeps } from "../lib/app-debug-service.js";
|
|
27
|
+
interface RouteOptions {
|
|
28
|
+
apiOptions: HttpApiOptions;
|
|
29
|
+
/** Build dependencies — overridden only by tests. */
|
|
30
|
+
appBuild?: AppBuildDeps;
|
|
31
|
+
/** Debug dependencies — overridden only by tests. */
|
|
32
|
+
appDebug?: AppDebugDeps;
|
|
33
|
+
}
|
|
34
|
+
declare const applicationsRoutes: FastifyPluginAsync<RouteOptions>;
|
|
35
|
+
export default applicationsRoutes;
|
|
36
|
+
//# sourceMappingURL=applications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/routes/applications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAgBlD,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAYhE,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,6BAA6B,CAAC;AAErC,UAAU,YAAY;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAqDD,QAAA,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CAmKxD,CAAC;eAEa,kBAAkB"}
|