@superblocksteam/vite-plugin-file-sync 1.99.99-next.3 → 2.0.0-SNAPSHOT.2143e2e95d0107ab
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/ai-service/agent/middleware.d.ts +66 -0
- package/dist/ai-service/agent/middleware.d.ts.map +1 -0
- package/dist/ai-service/agent/middleware.js +423 -0
- package/dist/ai-service/agent/middleware.js.map +1 -0
- package/dist/ai-service/agent/prompts/api-prompts.d.ts +39 -0
- package/dist/ai-service/agent/prompts/api-prompts.d.ts.map +1 -0
- package/dist/ai-service/agent/prompts/api-prompts.js +806 -0
- package/dist/ai-service/agent/prompts/api-prompts.js.map +1 -0
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +59 -0
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -0
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +1133 -0
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts +17 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +285 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -0
- package/dist/ai-service/agent/subagents/apis/example-selector.d.ts +24 -0
- package/dist/ai-service/agent/subagents/apis/example-selector.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/apis/example-selector.js +104 -0
- package/dist/ai-service/agent/subagents/apis/example-selector.js.map +1 -0
- package/dist/ai-service/agent/subagents/apis/examples.d.ts +38 -0
- package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/apis/examples.js +1355 -0
- package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -0
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +42 -0
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js +103 -0
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -0
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts +2 -0
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/apis/static-analysis.js +779 -0
- package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -0
- package/dist/ai-service/agent/subagents/apis/types.d.ts +2 -0
- package/dist/ai-service/agent/subagents/apis/types.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/apis/types.js.map +1 -0
- package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts +16 -0
- package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/coding/prompt-builder.js +30 -0
- package/dist/ai-service/agent/subagents/coding/prompt-builder.js.map +1 -0
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts +30 -0
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js +134 -0
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js.map +1 -0
- package/dist/ai-service/agent/subagents/testing/index.d.ts +3 -0
- package/dist/ai-service/agent/subagents/testing/index.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/index.js +2 -0
- package/dist/ai-service/agent/subagents/testing/index.js.map +1 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts +10 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js +177 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -0
- package/dist/ai-service/agent/subagents/testing/types.d.ts +67 -0
- package/dist/ai-service/agent/subagents/testing/types.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/types.js +2 -0
- package/dist/ai-service/agent/subagents/testing/types.js.map +1 -0
- package/dist/ai-service/agent/subagents/types.d.ts +48 -0
- package/dist/ai-service/agent/subagents/types.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/types.js +49 -0
- package/dist/ai-service/agent/subagents/types.js.map +1 -0
- package/dist/ai-service/agent/tool-message-utils.d.ts +26 -0
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -0
- package/dist/ai-service/agent/tool-message-utils.js +356 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -0
- package/dist/ai-service/agent/tool-permission-delivery-metrics.d.ts +3 -0
- package/dist/ai-service/agent/tool-permission-delivery-metrics.d.ts.map +1 -0
- package/dist/ai-service/agent/tool-permission-delivery-metrics.js +23 -0
- package/dist/ai-service/agent/tool-permission-delivery-metrics.js.map +1 -0
- package/dist/ai-service/agent/tool-permission-delivery.d.ts +50 -0
- package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -0
- package/dist/ai-service/agent/tool-permission-delivery.js +434 -0
- package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -0
- package/dist/ai-service/agent/tool-result-metrics.d.ts +29 -0
- package/dist/ai-service/agent/tool-result-metrics.d.ts.map +1 -0
- package/dist/ai-service/agent/tool-result-metrics.js +162 -0
- package/dist/ai-service/agent/tool-result-metrics.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/analysis.d.ts +30 -0
- package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/analysis.js +1305 -0
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts +36 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.js +366 -0
- package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts +92 -0
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-executor.js +480 -0
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.d.ts +43 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.js +259 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +71 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +562 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +51 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +378 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api.d.ts +15 -0
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api.js +82 -0
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +66 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +2242 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-integration-types.d.ts +12 -0
- package/dist/ai-service/agent/tools/apis/get-integration-types.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-integration-types.js +76 -0
- package/dist/ai-service/agent/tools/apis/get-integration-types.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts +32 -0
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +277 -0
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts +59 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js +1677 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/sample-json.d.ts +2 -0
- package/dist/ai-service/agent/tools/apis/sample-json.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/sample-json.js +16 -0
- package/dist/ai-service/agent/tools/apis/sample-json.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts +20 -0
- package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/sdk-registry.js +78 -0
- package/dist/ai-service/agent/tools/apis/sdk-registry.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +66 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.js +864 -0
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +12 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.js +47 -0
- package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts +29 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.js +399 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.js.map +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +59 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +483 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts +12 -0
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-directory.js +51 -0
- package/dist/ai-service/agent/tools/build-copy-directory.js.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-file.d.ts +12 -0
- package/dist/ai-service/agent/tools/build-copy-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-file.js +52 -0
- package/dist/ai-service/agent/tools/build-copy-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-utils.d.ts +57 -0
- package/dist/ai-service/agent/tools/build-copy-utils.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-copy-utils.js +37 -0
- package/dist/ai-service/agent/tools/build-copy-utils.js.map +1 -0
- package/dist/ai-service/agent/tools/build-debug.d.ts +17 -0
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-debug.js +244 -0
- package/dist/ai-service/agent/tools/build-debug.js.map +1 -0
- package/dist/ai-service/agent/tools/build-delete-file.d.ts +27 -0
- package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-delete-file.js +217 -0
- package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-edit-file.d.ts +23 -0
- package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-edit-file.js +509 -0
- package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-finalize.d.ts +19 -0
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-finalize.js +234 -0
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -0
- package/dist/ai-service/agent/tools/build-install-packages.d.ts +89 -0
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-install-packages.js +727 -0
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -0
- package/dist/ai-service/agent/tools/build-list-files.d.ts +5 -0
- package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-list-files.js +26 -0
- package/dist/ai-service/agent/tools/build-list-files.js.map +1 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts +29 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js +66 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js.map +1 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +89 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.js +276 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -0
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +20 -0
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-multi-edit-file.js +209 -0
- package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts +17 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js +71 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js.map +1 -0
- package/dist/ai-service/agent/tools/build-read-file.d.ts +21 -0
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-read-file.js +148 -0
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-reload-file.d.ts +14 -0
- package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-reload-file.js +78 -0
- package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-rename-file.d.ts +13 -0
- package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-rename-file.js +72 -0
- package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-write-file.d.ts +13 -0
- package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-write-file.js +82 -0
- package/dist/ai-service/agent/tools/build-write-file.js.map +1 -0
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts +10 -0
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js +38 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js.map +1 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts +58 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js +258 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +489 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +1172 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts +65 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tools.js +77 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tools.js.map +1 -0
- package/dist/ai-service/agent/tools/debug-cache.d.ts +175 -0
- package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/debug-cache.js +643 -0
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -0
- package/dist/ai-service/agent/tools/get-logs.d.ts +74 -0
- package/dist/ai-service/agent/tools/get-logs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/get-logs.js +357 -0
- package/dist/ai-service/agent/tools/get-logs.js.map +1 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts +13 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js +63 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -0
- package/dist/ai-service/agent/tools/index.d.ts +36 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/index.js +36 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts +18 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.js +107 -0
- package/dist/ai-service/agent/tools/integrations/delete-integration.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/errors.d.ts +9 -0
- package/dist/ai-service/agent/tools/integrations/errors.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/errors.js +35 -0
- package/dist/ai-service/agent/tools/integrations/errors.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +471 -0
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/execute-request.js +1179 -0
- package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/index.d.ts +6 -0
- package/dist/ai-service/agent/tools/integrations/index.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/index.js +6 -0
- package/dist/ai-service/agent/tools/integrations/index.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts +98 -0
- package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/integration-setup.js +391 -0
- package/dist/ai-service/agent/tools/integrations/integration-setup.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/internal.d.ts +15 -0
- package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/internal.js +95 -0
- package/dist/ai-service/agent/tools/integrations/internal.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/managed-app-database.d.ts +16 -0
- package/dist/ai-service/agent/tools/integrations/managed-app-database.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/managed-app-database.js +31 -0
- package/dist/ai-service/agent/tools/integrations/managed-app-database.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts +15 -0
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/metadata.js +94 -0
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/run-code.d.ts +9 -0
- package/dist/ai-service/agent/tools/integrations/run-code.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/run-code.js +41 -0
- package/dist/ai-service/agent/tools/integrations/run-code.js.map +1 -0
- package/dist/ai-service/agent/tools/integrations/sql-classification.d.ts +50 -0
- package/dist/ai-service/agent/tools/integrations/sql-classification.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/integrations/sql-classification.js +570 -0
- package/dist/ai-service/agent/tools/integrations/sql-classification.js.map +1 -0
- package/dist/ai-service/agent/tools/mark-api-manually-verified.d.ts +31 -0
- package/dist/ai-service/agent/tools/mark-api-manually-verified.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/mark-api-manually-verified.js +94 -0
- package/dist/ai-service/agent/tools/mark-api-manually-verified.js.map +1 -0
- package/dist/ai-service/agent/tools/migration/update-migration-write-policy.d.ts +23 -0
- package/dist/ai-service/agent/tools/migration/update-migration-write-policy.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/migration/update-migration-write-policy.js +94 -0
- package/dist/ai-service/agent/tools/migration/update-migration-write-policy.js.map +1 -0
- package/dist/ai-service/agent/tools/page-edit-guidance.d.ts +2 -0
- package/dist/ai-service/agent/tools/page-edit-guidance.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/page-edit-guidance.js +11 -0
- package/dist/ai-service/agent/tools/page-edit-guidance.js.map +1 -0
- package/dist/ai-service/agent/tools/report-security-findings.d.ts +169 -0
- package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/report-security-findings.js +53 -0
- package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -0
- package/dist/ai-service/agent/tools/screenshot-selector.d.ts +23 -0
- package/dist/ai-service/agent/tools/screenshot-selector.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/screenshot-selector.js +158 -0
- package/dist/ai-service/agent/tools/screenshot-selector.js.map +1 -0
- package/dist/ai-service/agent/tools/shared-helpers.d.ts +6 -0
- package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/shared-helpers.js +26 -0
- package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -0
- package/dist/ai-service/agent/tools.d.ts +65 -0
- package/dist/ai-service/agent/tools.d.ts.map +1 -0
- package/dist/ai-service/agent/tools.js +799 -0
- package/dist/ai-service/agent/tools.js.map +1 -0
- package/dist/ai-service/agent/tools2/access-control.d.ts +150 -0
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/access-control.js +310 -0
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -0
- package/dist/ai-service/agent/tools2/entity-permissions.d.ts +201 -0
- package/dist/ai-service/agent/tools2/entity-permissions.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/entity-permissions.js +163 -0
- package/dist/ai-service/agent/tools2/entity-permissions.js.map +1 -0
- package/dist/ai-service/agent/tools2/example.d.ts +13 -0
- package/dist/ai-service/agent/tools2/example.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/example.js +151 -0
- package/dist/ai-service/agent/tools2/example.js.map +1 -0
- package/dist/ai-service/agent/tools2/index.d.ts +18 -0
- package/dist/ai-service/agent/tools2/index.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/index.js +19 -0
- package/dist/ai-service/agent/tools2/index.js.map +1 -0
- package/dist/ai-service/agent/tools2/registry.d.ts +231 -0
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/registry.js +602 -0
- package/dist/ai-service/agent/tools2/registry.js.map +1 -0
- package/dist/ai-service/agent/tools2/test-utils.d.ts +7 -0
- package/dist/ai-service/agent/tools2/test-utils.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/test-utils.js +10 -0
- package/dist/ai-service/agent/tools2/test-utils.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts +32 -0
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +103 -0
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts +33 -0
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +92 -0
- package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/bash.d.ts +34 -0
- package/dist/ai-service/agent/tools2/tools/bash.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/bash.js +97 -0
- package/dist/ai-service/agent/tools2/tools/bash.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/cancel-task.d.ts +20 -0
- package/dist/ai-service/agent/tools2/tools/cancel-task.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/cancel-task.js +39 -0
- package/dist/ai-service/agent/tools2/tools/cancel-task.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/check-task.d.ts +38 -0
- package/dist/ai-service/agent/tools2/tools/check-task.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/check-task.js +59 -0
- package/dist/ai-service/agent/tools2/tools/check-task.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts +16 -0
- package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/deploy-service.js +167 -0
- package/dist/ai-service/agent/tools2/tools/deploy-service.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts +33 -0
- package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/download-attachments.js +309 -0
- package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/edit.d.ts +17 -0
- package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/edit.js +67 -0
- package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts +31 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js +112 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +58 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +802 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/git-raw.d.ts +25 -0
- package/dist/ai-service/agent/tools2/tools/git-raw.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/git-raw.js +394 -0
- package/dist/ai-service/agent/tools2/tools/git-raw.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/git.d.ts +126 -0
- package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/git.js +898 -0
- package/dist/ai-service/agent/tools2/tools/git.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/glob.d.ts +14 -0
- package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/glob.js +71 -0
- package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts +22 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js +927 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +123 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +534 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +26 -0
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/grep.js +249 -0
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/index.d.ts +24 -0
- package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/index.js +28 -0
- package/dist/ai-service/agent/tools2/tools/index.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +18 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js +70 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/list-tasks.d.ts +21 -0
- package/dist/ai-service/agent/tools2/tools/list-tasks.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/list-tasks.js +35 -0
- package/dist/ai-service/agent/tools2/tools/list-tasks.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ls.d.ts +17 -0
- package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ls.js +141 -0
- package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/read.d.ts +12 -0
- package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/read.js +60 -0
- package/dist/ai-service/agent/tools2/tools/read.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.d.ts +31 -0
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.js +118 -0
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +50 -0
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +273 -0
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts +24 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +409 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/tool-timeout.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/tool-timeout.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/tool-timeout.js +2 -0
- package/dist/ai-service/agent/tools2/tools/tool-timeout.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +29 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +112 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/wait-for-task.d.ts +48 -0
- package/dist/ai-service/agent/tools2/tools/wait-for-task.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/wait-for-task.js +101 -0
- package/dist/ai-service/agent/tools2/tools/wait-for-task.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts +30 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.js +285 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-search.d.ts +25 -0
- package/dist/ai-service/agent/tools2/tools/web-search.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-search.js +210 -0
- package/dist/ai-service/agent/tools2/tools/web-search.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/write.d.ts +14 -0
- package/dist/ai-service/agent/tools2/tools/write.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/write.js +33 -0
- package/dist/ai-service/agent/tools2/tools/write.js.map +1 -0
- package/dist/ai-service/agent/tools2/types.d.ts +396 -0
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/types.js +204 -0
- package/dist/ai-service/agent/tools2/types.js.map +1 -0
- package/dist/ai-service/agent/tools2/utils.d.ts +9 -0
- package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/utils.js +14 -0
- package/dist/ai-service/agent/tools2/utils.js.map +1 -0
- package/dist/ai-service/agent/utils.d.ts +15 -0
- package/dist/ai-service/agent/utils.d.ts.map +1 -0
- package/dist/ai-service/agent/utils.js +612 -0
- package/dist/ai-service/agent/utils.js.map +1 -0
- package/dist/ai-service/app-interface/cancellable-exec.d.ts +34 -0
- package/dist/ai-service/app-interface/cancellable-exec.d.ts.map +1 -0
- package/dist/ai-service/app-interface/cancellable-exec.js +98 -0
- package/dist/ai-service/app-interface/cancellable-exec.js.map +1 -0
- package/dist/ai-service/app-interface/constants.d.ts +60 -0
- package/dist/ai-service/app-interface/constants.d.ts.map +1 -0
- package/dist/ai-service/app-interface/constants.js +124 -0
- package/dist/ai-service/app-interface/constants.js.map +1 -0
- package/dist/ai-service/app-interface/file-system-interface.d.ts +22 -0
- package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -0
- package/dist/ai-service/app-interface/file-system-interface.js +109 -0
- package/dist/ai-service/app-interface/file-system-interface.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +87 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js +91 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts +36 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js +250 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts +95 -0
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js +530 -0
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts +12 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.js +10 -0
- package/dist/ai-service/app-interface/filesystem/index.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/path-validator.d.ts +43 -0
- package/dist/ai-service/app-interface/filesystem/path-validator.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/path-validator.js +9 -0
- package/dist/ai-service/app-interface/filesystem/path-validator.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/sdk-path-validator.d.ts +50 -0
- package/dist/ai-service/app-interface/filesystem/sdk-path-validator.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/sdk-path-validator.js +70 -0
- package/dist/ai-service/app-interface/filesystem/sdk-path-validator.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts +88 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.js +197 -0
- package/dist/ai-service/app-interface/filesystem/validation.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +144 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +238 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts +126 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js +9 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/yaml-path-validator.d.ts +49 -0
- package/dist/ai-service/app-interface/filesystem/yaml-path-validator.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/yaml-path-validator.js +67 -0
- package/dist/ai-service/app-interface/filesystem/yaml-path-validator.js.map +1 -0
- package/dist/ai-service/app-interface/linter.d.ts +11 -0
- package/dist/ai-service/app-interface/linter.d.ts.map +1 -0
- package/dist/ai-service/app-interface/linter.js +152 -0
- package/dist/ai-service/app-interface/linter.js.map +1 -0
- package/dist/ai-service/app-interface/npm-error-parser.d.ts +84 -0
- package/dist/ai-service/app-interface/npm-error-parser.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-error-parser.js +510 -0
- package/dist/ai-service/app-interface/npm-error-parser.js.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +338 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js +1043 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts +913 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-registry.js +2461 -0
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -0
- package/dist/ai-service/app-interface/shell.d.ts +575 -4
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +2596 -70
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts +83 -0
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -0
- package/dist/ai-service/app-interface/vulnerability-gate.js +543 -0
- package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -0
- package/dist/ai-service/app-skills/build-knowledge-feedback-message.d.ts +3 -0
- package/dist/ai-service/app-skills/build-knowledge-feedback-message.d.ts.map +1 -0
- package/dist/ai-service/app-skills/build-knowledge-feedback-message.js +47 -0
- package/dist/ai-service/app-skills/build-knowledge-feedback-message.js.map +1 -0
- package/dist/ai-service/app-skills/helpers.d.ts +18 -0
- package/dist/ai-service/app-skills/helpers.d.ts.map +1 -0
- package/dist/ai-service/app-skills/helpers.js +441 -0
- package/dist/ai-service/app-skills/helpers.js.map +1 -0
- package/dist/ai-service/app-skills/manager.d.ts +68 -0
- package/dist/ai-service/app-skills/manager.d.ts.map +1 -0
- package/dist/ai-service/app-skills/manager.js +259 -0
- package/dist/ai-service/app-skills/manager.js.map +1 -0
- package/dist/ai-service/app-skills/parser.d.ts +53 -0
- package/dist/ai-service/app-skills/parser.d.ts.map +1 -0
- package/dist/ai-service/app-skills/parser.js +82 -0
- package/dist/ai-service/app-skills/parser.js.map +1 -0
- package/dist/ai-service/attachment-upload.d.ts +33 -0
- package/dist/ai-service/attachment-upload.d.ts.map +1 -0
- package/dist/ai-service/attachment-upload.js +98 -0
- package/dist/ai-service/attachment-upload.js.map +1 -0
- package/dist/ai-service/attachments/index.d.ts +2 -0
- package/dist/ai-service/attachments/index.d.ts.map +1 -0
- package/dist/ai-service/attachments/index.js +2 -0
- package/dist/ai-service/attachments/index.js.map +1 -0
- package/dist/ai-service/attachments/parse-data-url.d.ts +5 -0
- package/dist/ai-service/attachments/parse-data-url.d.ts.map +1 -0
- package/dist/ai-service/attachments/parse-data-url.js +14 -0
- package/dist/ai-service/attachments/parse-data-url.js.map +1 -0
- package/dist/ai-service/attachments/store.d.ts +96 -0
- package/dist/ai-service/attachments/store.d.ts.map +1 -0
- package/dist/ai-service/attachments/store.js +285 -0
- package/dist/ai-service/attachments/store.js.map +1 -0
- package/dist/ai-service/attachments/text-upload-artifacts.d.ts +37 -0
- package/dist/ai-service/attachments/text-upload-artifacts.d.ts.map +1 -0
- package/dist/ai-service/attachments/text-upload-artifacts.js +231 -0
- package/dist/ai-service/attachments/text-upload-artifacts.js.map +1 -0
- package/dist/ai-service/attachments/uploaded-content-part.d.ts +23 -0
- package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -0
- package/dist/ai-service/attachments/uploaded-content-part.js +137 -0
- package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -0
- package/dist/ai-service/chat/chat-push-metrics.d.ts +13 -0
- package/dist/ai-service/chat/chat-push-metrics.d.ts.map +1 -0
- package/dist/ai-service/chat/chat-push-metrics.js +68 -0
- package/dist/ai-service/chat/chat-push-metrics.js.map +1 -0
- package/dist/ai-service/chat/chat-session-store-metrics.d.ts +13 -0
- package/dist/ai-service/chat/chat-session-store-metrics.d.ts.map +1 -0
- package/dist/ai-service/chat/chat-session-store-metrics.js +72 -0
- package/dist/ai-service/chat/chat-session-store-metrics.js.map +1 -0
- package/dist/ai-service/chat/chat-session-store.d.ts +170 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -0
- package/dist/ai-service/chat/chat-session-store.js +862 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -0
- package/dist/ai-service/chat/extract-history.d.ts +3 -0
- package/dist/ai-service/chat/extract-history.d.ts.map +1 -0
- package/dist/ai-service/chat/extract-history.js +21 -0
- package/dist/ai-service/chat/extract-history.js.map +1 -0
- package/dist/ai-service/chat/transcript-budget.d.ts +106 -0
- package/dist/ai-service/chat/transcript-budget.d.ts.map +1 -0
- package/dist/ai-service/chat/transcript-budget.js +175 -0
- package/dist/ai-service/chat/transcript-budget.js.map +1 -0
- package/dist/ai-service/chat/transcript-metrics.d.ts +33 -0
- package/dist/ai-service/chat/transcript-metrics.d.ts.map +1 -0
- package/dist/ai-service/chat/transcript-metrics.js +169 -0
- package/dist/ai-service/chat/transcript-metrics.js.map +1 -0
- package/dist/ai-service/chat/utils.d.ts +16 -0
- package/dist/ai-service/chat/utils.d.ts.map +1 -0
- package/dist/ai-service/chat/utils.js +98 -0
- package/dist/ai-service/chat/utils.js.map +1 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts +11 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js +45 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts +4 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.js +8 -0
- package/dist/ai-service/checklist/api-migration-origins.js.map +1 -0
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts +108 -0
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -0
- package/dist/ai-service/checklist/persisted-checklist-store.js +511 -0
- package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -0
- package/dist/ai-service/const.d.ts +86 -5
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +92 -5
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/context/app-context.d.ts +78 -0
- package/dist/ai-service/context/app-context.d.ts.map +1 -0
- package/dist/ai-service/context/app-context.js +359 -0
- package/dist/ai-service/context/app-context.js.map +1 -0
- package/dist/ai-service/context-archive-paths.d.ts +11 -0
- package/dist/ai-service/context-archive-paths.d.ts.map +1 -0
- package/dist/ai-service/context-archive-paths.js +35 -0
- package/dist/ai-service/context-archive-paths.js.map +1 -0
- package/dist/ai-service/context-download.d.ts +56 -0
- package/dist/ai-service/context-download.d.ts.map +1 -0
- package/dist/ai-service/context-download.js +372 -0
- package/dist/ai-service/context-download.js.map +1 -0
- package/dist/ai-service/context-flush-scheduler.d.ts +76 -0
- package/dist/ai-service/context-flush-scheduler.d.ts.map +1 -0
- package/dist/ai-service/context-flush-scheduler.js +134 -0
- package/dist/ai-service/context-flush-scheduler.js.map +1 -0
- package/dist/ai-service/context-flush.d.ts +36 -0
- package/dist/ai-service/context-flush.d.ts.map +1 -0
- package/dist/ai-service/context-flush.js +90 -0
- package/dist/ai-service/context-flush.js.map +1 -0
- package/dist/ai-service/context-restore.d.ts +64 -0
- package/dist/ai-service/context-restore.d.ts.map +1 -0
- package/dist/ai-service/context-restore.js +136 -0
- package/dist/ai-service/context-restore.js.map +1 -0
- package/dist/ai-service/context-upload.d.ts +31 -0
- package/dist/ai-service/context-upload.d.ts.map +1 -0
- package/dist/ai-service/context-upload.js +180 -0
- package/dist/ai-service/context-upload.js.map +1 -0
- package/dist/ai-service/dev-database-client.d.ts +169 -0
- package/dist/ai-service/dev-database-client.d.ts.map +1 -0
- package/dist/ai-service/dev-database-client.js +180 -0
- package/dist/ai-service/dev-database-client.js.map +1 -0
- package/dist/ai-service/dev-database-file-sync.d.ts +41 -0
- package/dist/ai-service/dev-database-file-sync.d.ts.map +1 -0
- package/dist/ai-service/dev-database-file-sync.js +29 -0
- package/dist/ai-service/dev-database-file-sync.js.map +1 -0
- package/dist/ai-service/features.d.ts +237 -0
- package/dist/ai-service/features.d.ts.map +1 -0
- package/dist/ai-service/features.js +238 -0
- package/dist/ai-service/features.js.map +1 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts +6 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts.map +1 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js +42 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js.map +1 -0
- package/dist/ai-service/helper-system-ai-attributes.d.ts +19 -0
- package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -0
- package/dist/ai-service/helper-system-ai-attributes.js +17 -0
- package/dist/ai-service/helper-system-ai-attributes.js.map +1 -0
- package/dist/ai-service/index.d.ts +693 -12
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +5021 -79
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integration-validator.d.ts +4 -0
- package/dist/ai-service/integration-validator.d.ts.map +1 -0
- package/dist/ai-service/integration-validator.js +58 -0
- package/dist/ai-service/integration-validator.js.map +1 -0
- package/dist/ai-service/integrations/gron.d.ts +18 -0
- package/dist/ai-service/integrations/gron.d.ts.map +1 -0
- package/dist/ai-service/integrations/gron.js +321 -0
- package/dist/ai-service/integrations/gron.js.map +1 -0
- package/dist/ai-service/integrations/mention-safe-tag-name.d.ts +12 -0
- package/dist/ai-service/integrations/mention-safe-tag-name.d.ts.map +1 -0
- package/dist/ai-service/integrations/mention-safe-tag-name.js +18 -0
- package/dist/ai-service/integrations/mention-safe-tag-name.js.map +1 -0
- package/dist/ai-service/integrations/metadata-binaries.d.ts +28 -0
- package/dist/ai-service/integrations/metadata-binaries.d.ts.map +1 -0
- package/dist/ai-service/integrations/metadata-binaries.js +48 -0
- package/dist/ai-service/integrations/metadata-binaries.js.map +1 -0
- package/dist/ai-service/integrations/metadata-storage/index.d.ts +35 -0
- package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -0
- package/dist/ai-service/integrations/metadata-storage/index.js +2 -0
- package/dist/ai-service/integrations/metadata-storage/index.js.map +1 -0
- package/dist/ai-service/integrations/metadata-storage/local.d.ts +56 -0
- package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -0
- package/dist/ai-service/integrations/metadata-storage/local.js +346 -0
- package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -0
- package/dist/ai-service/integrations/ripgrep-path.d.ts +6 -0
- package/dist/ai-service/integrations/ripgrep-path.d.ts.map +1 -0
- package/dist/ai-service/integrations/ripgrep-path.js +56 -0
- package/dist/ai-service/integrations/ripgrep-path.js.map +1 -0
- package/dist/ai-service/integrations/store.d.ts +142 -0
- package/dist/ai-service/integrations/store.d.ts.map +1 -0
- package/dist/ai-service/integrations/store.js +574 -0
- package/dist/ai-service/integrations/store.js.map +1 -0
- package/dist/ai-service/judge/debug-browser.d.ts +8 -0
- package/dist/ai-service/judge/debug-browser.d.ts.map +1 -0
- package/dist/ai-service/judge/debug-browser.js +79 -0
- package/dist/ai-service/judge/debug-browser.js.map +1 -0
- package/dist/ai-service/judge/index.d.ts +12 -0
- package/dist/ai-service/judge/index.d.ts.map +1 -0
- package/dist/ai-service/judge/index.js +11 -0
- package/dist/ai-service/judge/index.js.map +1 -0
- package/dist/ai-service/judge/integration/playwright-bridge.d.ts +143 -0
- package/dist/ai-service/judge/integration/playwright-bridge.d.ts.map +1 -0
- package/dist/ai-service/judge/integration/playwright-bridge.js +209 -0
- package/dist/ai-service/judge/integration/playwright-bridge.js.map +1 -0
- package/dist/ai-service/judge/judge-eval-http.d.ts +3 -0
- package/dist/ai-service/judge/judge-eval-http.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-eval-http.js +541 -0
- package/dist/ai-service/judge/judge-eval-http.js.map +1 -0
- package/dist/ai-service/judge/judge-eval-service-runner.d.ts +35 -0
- package/dist/ai-service/judge/judge-eval-service-runner.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-eval-service-runner.js +129 -0
- package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -0
- package/dist/ai-service/judge/judge-executor.d.ts +65 -0
- package/dist/ai-service/judge/judge-executor.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-executor.js +335 -0
- package/dist/ai-service/judge/judge-executor.js.map +1 -0
- package/dist/ai-service/judge/judge-service.d.ts +154 -0
- package/dist/ai-service/judge/judge-service.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-service.js +220 -0
- package/dist/ai-service/judge/judge-service.js.map +1 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts +37 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts.map +1 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.js +283 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.js.map +1 -0
- package/dist/ai-service/judge/prompts/system-prompt.d.ts +30 -0
- package/dist/ai-service/judge/prompts/system-prompt.d.ts.map +1 -0
- package/dist/ai-service/judge/prompts/system-prompt.js +212 -0
- package/dist/ai-service/judge/prompts/system-prompt.js.map +1 -0
- package/dist/ai-service/judge/storage/csv-storage.d.ts +99 -0
- package/dist/ai-service/judge/storage/csv-storage.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/csv-storage.js +274 -0
- package/dist/ai-service/judge/storage/csv-storage.js.map +1 -0
- package/dist/ai-service/judge/storage/index.d.ts +9 -0
- package/dist/ai-service/judge/storage/index.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/index.js +7 -0
- package/dist/ai-service/judge/storage/index.js.map +1 -0
- package/dist/ai-service/judge/storage/interface.d.ts +51 -0
- package/dist/ai-service/judge/storage/interface.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/interface.js +8 -0
- package/dist/ai-service/judge/storage/interface.js.map +1 -0
- package/dist/ai-service/judge/storage/types.d.ts +54 -0
- package/dist/ai-service/judge/storage/types.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/types.js +7 -0
- package/dist/ai-service/judge/storage/types.js.map +1 -0
- package/dist/ai-service/judge/tools/index.d.ts +20 -0
- package/dist/ai-service/judge/tools/index.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/index.js +27 -0
- package/dist/ai-service/judge/tools/index.js.map +1 -0
- package/dist/ai-service/judge/tools/playwright-action.d.ts +72 -0
- package/dist/ai-service/judge/tools/playwright-action.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/playwright-action.js +171 -0
- package/dist/ai-service/judge/tools/playwright-action.js.map +1 -0
- package/dist/ai-service/judge/tools/submit-feedback.d.ts +34 -0
- package/dist/ai-service/judge/tools/submit-feedback.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/submit-feedback.js +137 -0
- package/dist/ai-service/judge/tools/submit-feedback.js.map +1 -0
- package/dist/ai-service/judge/types.d.ts +169 -0
- package/dist/ai-service/judge/types.d.ts.map +1 -0
- package/dist/ai-service/judge/types.js +8 -0
- package/dist/ai-service/judge/types.js.map +1 -0
- package/dist/ai-service/knowledge/helpers.d.ts +17 -0
- package/dist/ai-service/knowledge/helpers.d.ts.map +1 -0
- package/dist/ai-service/knowledge/helpers.js +154 -0
- package/dist/ai-service/knowledge/helpers.js.map +1 -0
- package/dist/ai-service/knowledge/knowledge-manager.d.ts +85 -0
- package/dist/ai-service/knowledge/knowledge-manager.d.ts.map +1 -0
- package/dist/ai-service/knowledge/knowledge-manager.js +299 -0
- package/dist/ai-service/knowledge/knowledge-manager.js.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts +20 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.js +77 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.js.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics.d.ts +44 -0
- package/dist/ai-service/knowledge/knowledge-metrics.d.ts.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics.js +217 -0
- package/dist/ai-service/knowledge/knowledge-metrics.js.map +1 -0
- package/dist/ai-service/live-edit-events/bridge.d.ts +21 -0
- package/dist/ai-service/live-edit-events/bridge.d.ts.map +1 -0
- package/dist/ai-service/live-edit-events/bridge.js +52 -0
- package/dist/ai-service/live-edit-events/bridge.js.map +1 -0
- package/dist/ai-service/live-edit-events/forwarder.d.ts +158 -0
- package/dist/ai-service/live-edit-events/forwarder.d.ts.map +1 -0
- package/dist/ai-service/live-edit-events/forwarder.js +403 -0
- package/dist/ai-service/live-edit-events/forwarder.js.map +1 -0
- package/dist/ai-service/llm/chaos-fetch.d.ts +90 -0
- package/dist/ai-service/llm/chaos-fetch.d.ts.map +1 -0
- package/dist/ai-service/llm/chaos-fetch.js +200 -0
- package/dist/ai-service/llm/chaos-fetch.js.map +1 -0
- package/dist/ai-service/llm/clark-stream-telemetry-sink.d.ts +4 -0
- package/dist/ai-service/llm/clark-stream-telemetry-sink.d.ts.map +1 -0
- package/dist/ai-service/llm/clark-stream-telemetry-sink.js +152 -0
- package/dist/ai-service/llm/clark-stream-telemetry-sink.js.map +1 -0
- package/dist/ai-service/llm/client.d.ts +315 -0
- package/dist/ai-service/llm/client.d.ts.map +1 -0
- package/dist/ai-service/llm/client.js +992 -0
- package/dist/ai-service/llm/client.js.map +1 -0
- package/dist/ai-service/llm/context-v2/adapter.d.ts +33 -0
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/adapter.js +103 -0
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -0
- package/dist/ai-service/llm/context-v2/caching.d.ts +40 -0
- package/dist/ai-service/llm/context-v2/caching.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/caching.js +48 -0
- package/dist/ai-service/llm/context-v2/caching.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +100 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js +298 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts +73 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js +9 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +33 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js +137 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compactor.d.ts +34 -0
- package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compactor.js +243 -0
- package/dist/ai-service/llm/context-v2/compactor.js.map +1 -0
- package/dist/ai-service/llm/context-v2/config.d.ts +27 -0
- package/dist/ai-service/llm/context-v2/config.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/config.js +59 -0
- package/dist/ai-service/llm/context-v2/config.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts +215 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.js +207 -0
- package/dist/ai-service/llm/context-v2/context-management.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +150 -0
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context-metrics.js +602 -0
- package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context.d.ts +391 -0
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context.js +1666 -0
- package/dist/ai-service/llm/context-v2/context.js.map +1 -0
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +150 -0
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/conversation-context.js +10 -0
- package/dist/ai-service/llm/context-v2/conversation-context.js.map +1 -0
- package/dist/ai-service/llm/context-v2/index.d.ts +13 -0
- package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/index.js +13 -0
- package/dist/ai-service/llm/context-v2/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/manager.d.ts +188 -0
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/manager.js +629 -0
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/index.d.ts +7 -0
- package/dist/ai-service/llm/context-v2/migrations/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/index.js +7 -0
- package/dist/ai-service/llm/context-v2/migrations/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.d.ts +19 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.js +32 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.d.ts +3 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.js +61 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/types.d.ts +16 -0
- package/dist/ai-service/llm/context-v2/migrations/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/types.js +26 -0
- package/dist/ai-service/llm/context-v2/migrations/types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +25 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +75 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -0
- package/dist/ai-service/llm/context-v2/operation-queue.d.ts +9 -0
- package/dist/ai-service/llm/context-v2/operation-queue.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/operation-queue.js +13 -0
- package/dist/ai-service/llm/context-v2/operation-queue.js.map +1 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +20 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +360 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts +68 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js +377 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js.map +1 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +11 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.js +63 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.js.map +1 -0
- package/dist/ai-service/llm/context-v2/session-capture.d.ts +18 -0
- package/dist/ai-service/llm/context-v2/session-capture.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/session-capture.js +64 -0
- package/dist/ai-service/llm/context-v2/session-capture.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts +83 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js +10 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +59 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js +16 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/index.d.ts +14 -0
- package/dist/ai-service/llm/context-v2/storage/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/index.js +2 -0
- package/dist/ai-service/llm/context-v2/storage/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts +108 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js +267 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/legacy-context-adoption.d.ts +46 -0
- package/dist/ai-service/llm/context-v2/storage/legacy-context-adoption.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/legacy-context-adoption.js +240 -0
- package/dist/ai-service/llm/context-v2/storage/legacy-context-adoption.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/local.d.ts +25 -0
- package/dist/ai-service/llm/context-v2/storage/local.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/local.js +124 -0
- package/dist/ai-service/llm/context-v2/storage/local.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts +49 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js +126 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/types.d.ts +2 -0
- package/dist/ai-service/llm/context-v2/storage/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/types.js +2 -0
- package/dist/ai-service/llm/context-v2/storage/types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts +88 -0
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/token-tracker.js +193 -0
- package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts +10 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.js +124 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.js.map +1 -0
- package/dist/ai-service/llm/context-v2/turns.d.ts +24 -0
- package/dist/ai-service/llm/context-v2/turns.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/turns.js +85 -0
- package/dist/ai-service/llm/context-v2/turns.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types-v1.d.ts +36 -0
- package/dist/ai-service/llm/context-v2/types-v1.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/types-v1.js +3 -0
- package/dist/ai-service/llm/context-v2/types-v1.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types.d.ts +238 -0
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/types.js +609 -0
- package/dist/ai-service/llm/context-v2/types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/uniquify-filenames.d.ts +15 -0
- package/dist/ai-service/llm/context-v2/uniquify-filenames.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/uniquify-filenames.js +194 -0
- package/dist/ai-service/llm/context-v2/uniquify-filenames.js.map +1 -0
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.d.ts +9 -0
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.js +6 -0
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.js.map +1 -0
- package/dist/ai-service/llm/context-v2/utils/index.d.ts +2 -0
- package/dist/ai-service/llm/context-v2/utils/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/utils/index.js +2 -0
- package/dist/ai-service/llm/context-v2/utils/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/well-formed-text.d.ts +24 -0
- package/dist/ai-service/llm/context-v2/well-formed-text.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/well-formed-text.js +73 -0
- package/dist/ai-service/llm/context-v2/well-formed-text.js.map +1 -0
- package/dist/ai-service/llm/error.d.ts +153 -0
- package/dist/ai-service/llm/error.d.ts.map +1 -0
- package/dist/ai-service/llm/error.js +539 -0
- package/dist/ai-service/llm/error.js.map +1 -0
- package/dist/ai-service/llm/impl/clark.d.ts +11 -0
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -0
- package/dist/ai-service/llm/impl/clark.js +22 -0
- package/dist/ai-service/llm/impl/clark.js.map +1 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +67 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js +190 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -0
- package/dist/ai-service/llm/interaction/index.d.ts +4 -0
- package/dist/ai-service/llm/interaction/index.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/index.js +5 -0
- package/dist/ai-service/llm/interaction/index.js.map +1 -0
- package/dist/ai-service/llm/interaction/provider.d.ts +189 -0
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/provider.js +15 -0
- package/dist/ai-service/llm/interaction/provider.js.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts +48 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js +147 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -0
- package/dist/ai-service/llm/provider.d.ts +10 -0
- package/dist/ai-service/llm/provider.d.ts.map +1 -0
- package/dist/ai-service/llm/provider.js +370 -0
- package/dist/ai-service/llm/provider.js.map +1 -0
- package/dist/ai-service/llm/stream/compaction-text-block.d.ts +15 -0
- package/dist/ai-service/llm/stream/compaction-text-block.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/compaction-text-block.js +29 -0
- package/dist/ai-service/llm/stream/compaction-text-block.js.map +1 -0
- package/dist/ai-service/llm/stream/config.d.ts +151 -0
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/config.js +108 -0
- package/dist/ai-service/llm/stream/config.js.map +1 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts +48 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.js +123 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.js.map +1 -0
- package/dist/ai-service/llm/stream/errors.d.ts +62 -0
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/errors.js +139 -0
- package/dist/ai-service/llm/stream/errors.js.map +1 -0
- package/dist/ai-service/llm/stream/event-bus.d.ts +75 -0
- package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/event-bus.js +51 -0
- package/dist/ai-service/llm/stream/event-bus.js.map +1 -0
- package/dist/ai-service/llm/stream/idle-monitor.d.ts +167 -0
- package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/idle-monitor.js +423 -0
- package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -0
- package/dist/ai-service/llm/stream/index.d.ts +51 -0
- package/dist/ai-service/llm/stream/index.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/index.js +48 -0
- package/dist/ai-service/llm/stream/index.js.map +1 -0
- package/dist/ai-service/llm/stream/managed-stream.d.ts +32 -0
- package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/managed-stream.js +219 -0
- package/dist/ai-service/llm/stream/managed-stream.js.map +1 -0
- package/dist/ai-service/llm/stream/observer.d.ts +34 -0
- package/dist/ai-service/llm/stream/observer.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observer.js +2 -0
- package/dist/ai-service/llm/stream/observer.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts +63 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/context.js +235 -0
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/index.d.ts +8 -0
- package/dist/ai-service/llm/stream/observers/index.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/index.js +8 -0
- package/dist/ai-service/llm/stream/observers/index.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +94 -0
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/llmobs.js +796 -0
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/logging.d.ts +74 -0
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/logging.js +509 -0
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts +21 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.js +71 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/step-token-usage.d.ts +15 -0
- package/dist/ai-service/llm/stream/observers/step-token-usage.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/step-token-usage.js +88 -0
- package/dist/ai-service/llm/stream/observers/step-token-usage.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts +19 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.js +112 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.js.map +1 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts +133 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/orchestrator.js +1297 -0
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -0
- package/dist/ai-service/llm/stream/retry-engine.d.ts +89 -0
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/retry-engine.js +367 -0
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -0
- package/dist/ai-service/llm/stream/session.d.ts +94 -0
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/session.js +173 -0
- package/dist/ai-service/llm/stream/session.js.map +1 -0
- package/dist/ai-service/llm/stream/structured-output-chunk.d.ts +16 -0
- package/dist/ai-service/llm/stream/structured-output-chunk.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/structured-output-chunk.js +26 -0
- package/dist/ai-service/llm/stream/structured-output-chunk.js.map +1 -0
- package/dist/ai-service/llm/stream/terminal-reason.d.ts +6 -0
- package/dist/ai-service/llm/stream/terminal-reason.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/terminal-reason.js +83 -0
- package/dist/ai-service/llm/stream/terminal-reason.js.map +1 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts +98 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js +521 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js.map +1 -0
- package/dist/ai-service/llm/stream/types.d.ts +16 -0
- package/dist/ai-service/llm/stream/types.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/types.js +2 -0
- package/dist/ai-service/llm/stream/types.js.map +1 -0
- package/dist/ai-service/llm/stream/wait-state-tracker.d.ts +55 -0
- package/dist/ai-service/llm/stream/wait-state-tracker.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/wait-state-tracker.js +109 -0
- package/dist/ai-service/llm/stream/wait-state-tracker.js.map +1 -0
- package/dist/ai-service/llm/tool-context-integrity.d.ts +25 -0
- package/dist/ai-service/llm/tool-context-integrity.d.ts.map +1 -0
- package/dist/ai-service/llm/tool-context-integrity.js +141 -0
- package/dist/ai-service/llm/tool-context-integrity.js.map +1 -0
- package/dist/ai-service/llm/types.d.ts +44 -0
- package/dist/ai-service/llm/types.d.ts.map +1 -0
- package/dist/ai-service/llm/types.js +2 -0
- package/dist/ai-service/llm/types.js.map +1 -0
- package/dist/ai-service/llm/workflow-metrics.d.ts +14 -0
- package/dist/ai-service/llm/workflow-metrics.d.ts.map +1 -0
- package/dist/ai-service/llm/workflow-metrics.js +19 -0
- package/dist/ai-service/llm/workflow-metrics.js.map +1 -0
- package/dist/ai-service/llmobs/constants.d.ts +5 -0
- package/dist/ai-service/llmobs/constants.d.ts.map +1 -0
- package/dist/ai-service/llmobs/constants.js +5 -0
- package/dist/ai-service/llmobs/constants.js.map +1 -0
- package/dist/ai-service/llmobs/context-registry.d.ts +62 -0
- package/dist/ai-service/llmobs/context-registry.d.ts.map +1 -0
- package/dist/ai-service/llmobs/context-registry.js +115 -0
- package/dist/ai-service/llmobs/context-registry.js.map +1 -0
- package/dist/ai-service/llmobs/helpers.d.ts +5 -0
- package/dist/ai-service/llmobs/helpers.d.ts.map +1 -0
- package/dist/ai-service/llmobs/helpers.js +31 -0
- package/dist/ai-service/llmobs/helpers.js.map +1 -0
- package/dist/ai-service/llmobs/index.d.ts +8 -0
- package/dist/ai-service/llmobs/index.d.ts.map +1 -0
- package/dist/ai-service/llmobs/index.js +7 -0
- package/dist/ai-service/llmobs/index.js.map +1 -0
- package/dist/ai-service/llmobs/otel-exporter.d.ts +178 -0
- package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -0
- package/dist/ai-service/llmobs/otel-exporter.js +660 -0
- package/dist/ai-service/llmobs/otel-exporter.js.map +1 -0
- package/dist/ai-service/llmobs/tracer.d.ts +130 -0
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -0
- package/dist/ai-service/llmobs/tracer.js +532 -0
- package/dist/ai-service/llmobs/tracer.js.map +1 -0
- package/dist/ai-service/llmobs/types.d.ts +71 -0
- package/dist/ai-service/llmobs/types.d.ts.map +1 -0
- package/dist/ai-service/llmobs/types.js +2 -0
- package/dist/ai-service/llmobs/types.js.map +1 -0
- package/dist/ai-service/llmobs/utils.d.ts +15 -0
- package/dist/ai-service/llmobs/utils.d.ts.map +1 -0
- package/dist/ai-service/llmobs/utils.js +82 -0
- package/dist/ai-service/llmobs/utils.js.map +1 -0
- package/dist/ai-service/managed-native-db-availability.d.ts +62 -0
- package/dist/ai-service/managed-native-db-availability.d.ts.map +1 -0
- package/dist/ai-service/managed-native-db-availability.js +37 -0
- package/dist/ai-service/managed-native-db-availability.js.map +1 -0
- package/dist/ai-service/mcp/adapter/index.d.ts +8 -0
- package/dist/ai-service/mcp/adapter/index.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/index.js +10 -0
- package/dist/ai-service/mcp/adapter/index.js.map +1 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts +44 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.js +231 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.js.map +1 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +126 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +365 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts +85 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +1626 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -0
- package/dist/ai-service/mcp/index.d.ts +11 -0
- package/dist/ai-service/mcp/index.d.ts.map +1 -0
- package/dist/ai-service/mcp/index.js +11 -0
- package/dist/ai-service/mcp/index.js.map +1 -0
- package/dist/ai-service/mcp/playwright-server.d.ts +153 -0
- package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -0
- package/dist/ai-service/mcp/playwright-server.js +174 -0
- package/dist/ai-service/mcp/playwright-server.js.map +1 -0
- package/dist/ai-service/mcp/types.d.ts +101 -0
- package/dist/ai-service/mcp/types.d.ts.map +1 -0
- package/dist/ai-service/mcp/types.js +7 -0
- package/dist/ai-service/mcp/types.js.map +1 -0
- package/dist/ai-service/migration-auto-dispatch-readiness.d.ts +19 -0
- package/dist/ai-service/migration-auto-dispatch-readiness.d.ts.map +1 -0
- package/dist/ai-service/migration-auto-dispatch-readiness.js +17 -0
- package/dist/ai-service/migration-auto-dispatch-readiness.js.map +1 -0
- package/dist/ai-service/migration-autodispatch-metrics.d.ts +3 -0
- package/dist/ai-service/migration-autodispatch-metrics.d.ts.map +1 -0
- package/dist/ai-service/migration-autodispatch-metrics.js +52 -0
- package/dist/ai-service/migration-autodispatch-metrics.js.map +1 -0
- package/dist/ai-service/migration-llm-config.d.ts +12 -0
- package/dist/ai-service/migration-llm-config.d.ts.map +1 -0
- package/dist/ai-service/migration-llm-config.js +132 -0
- package/dist/ai-service/migration-llm-config.js.map +1 -0
- package/dist/ai-service/migration-prompt-gating.d.ts +21 -0
- package/dist/ai-service/migration-prompt-gating.d.ts.map +1 -0
- package/dist/ai-service/migration-prompt-gating.js +27 -0
- package/dist/ai-service/migration-prompt-gating.js.map +1 -0
- package/dist/ai-service/migration-session-active.d.ts +14 -0
- package/dist/ai-service/migration-session-active.d.ts.map +1 -0
- package/dist/ai-service/migration-session-active.js +29 -0
- package/dist/ai-service/migration-session-active.js.map +1 -0
- package/dist/ai-service/migration-turns-log.d.ts +36 -0
- package/dist/ai-service/migration-turns-log.d.ts.map +1 -0
- package/dist/ai-service/migration-turns-log.js +88 -0
- package/dist/ai-service/migration-turns-log.js.map +1 -0
- package/dist/ai-service/policy-agent-metrics.d.ts +29 -0
- package/dist/ai-service/policy-agent-metrics.d.ts.map +1 -0
- package/dist/ai-service/policy-agent-metrics.js +141 -0
- package/dist/ai-service/policy-agent-metrics.js.map +1 -0
- package/dist/ai-service/policy-gate-error.d.ts +3 -0
- package/dist/ai-service/policy-gate-error.d.ts.map +1 -0
- package/dist/ai-service/policy-gate-error.js +33 -0
- package/dist/ai-service/policy-gate-error.js.map +1 -0
- package/dist/ai-service/policy-gate-step.d.ts +17 -0
- package/dist/ai-service/policy-gate-step.d.ts.map +1 -0
- package/dist/ai-service/policy-gate-step.js +52 -0
- package/dist/ai-service/policy-gate-step.js.map +1 -0
- package/dist/ai-service/profiler/clark-profiler.d.ts +86 -0
- package/dist/ai-service/profiler/clark-profiler.d.ts.map +1 -0
- package/dist/ai-service/profiler/clark-profiler.js +209 -0
- package/dist/ai-service/profiler/clark-profiler.js.map +1 -0
- package/dist/ai-service/profiler/index.d.ts +4 -0
- package/dist/ai-service/profiler/index.d.ts.map +1 -0
- package/dist/ai-service/profiler/index.js +4 -0
- package/dist/ai-service/profiler/index.js.map +1 -0
- package/dist/ai-service/profiler/perfetto-profiler.d.ts +116 -0
- package/dist/ai-service/profiler/perfetto-profiler.d.ts.map +1 -0
- package/dist/ai-service/profiler/perfetto-profiler.js +240 -0
- package/dist/ai-service/profiler/perfetto-profiler.js.map +1 -0
- package/dist/ai-service/profiler/tool-profiler.d.ts +33 -0
- package/dist/ai-service/profiler/tool-profiler.d.ts.map +1 -0
- package/dist/ai-service/profiler/tool-profiler.js +157 -0
- package/dist/ai-service/profiler/tool-profiler.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts +27 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +97 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/types.d.ts +3 -0
- package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -0
- package/dist/ai-service/prompt-builder-service/types.js +6 -0
- package/dist/ai-service/prompt-builder-service/types.js.map +1 -0
- package/dist/ai-service/prompts/summarize-api-usage.d.ts +18 -0
- package/dist/ai-service/prompts/summarize-api-usage.d.ts.map +1 -0
- package/dist/ai-service/prompts/summarize-api-usage.js +30 -0
- package/dist/ai-service/prompts/summarize-api-usage.js.map +1 -0
- package/dist/ai-service/quota-client.d.ts +31 -0
- package/dist/ai-service/quota-client.d.ts.map +1 -0
- package/dist/ai-service/quota-client.js +72 -0
- package/dist/ai-service/quota-client.js.map +1 -0
- package/dist/ai-service/recording/block-traversal.d.ts +15 -0
- package/dist/ai-service/recording/block-traversal.d.ts.map +1 -0
- package/dist/ai-service/recording/block-traversal.js +104 -0
- package/dist/ai-service/recording/block-traversal.js.map +1 -0
- package/dist/ai-service/recording/index.d.ts +26 -0
- package/dist/ai-service/recording/index.d.ts.map +1 -0
- package/dist/ai-service/recording/index.js +29 -0
- package/dist/ai-service/recording/index.js.map +1 -0
- package/dist/ai-service/recording/recorders/llm-recorder.d.ts +35 -0
- package/dist/ai-service/recording/recorders/llm-recorder.d.ts.map +1 -0
- package/dist/ai-service/recording/recorders/llm-recorder.js +221 -0
- package/dist/ai-service/recording/recorders/llm-recorder.js.map +1 -0
- package/dist/ai-service/recording/recorders/socket-recorder.d.ts +38 -0
- package/dist/ai-service/recording/recorders/socket-recorder.d.ts.map +1 -0
- package/dist/ai-service/recording/recorders/socket-recorder.js +44 -0
- package/dist/ai-service/recording/recorders/socket-recorder.js.map +1 -0
- package/dist/ai-service/recording/recorders/tool-recorder.d.ts +25 -0
- package/dist/ai-service/recording/recorders/tool-recorder.d.ts.map +1 -0
- package/dist/ai-service/recording/recorders/tool-recorder.js +58 -0
- package/dist/ai-service/recording/recorders/tool-recorder.js.map +1 -0
- package/dist/ai-service/recording/recording-manager.d.ts +105 -0
- package/dist/ai-service/recording/recording-manager.d.ts.map +1 -0
- package/dist/ai-service/recording/recording-manager.js +308 -0
- package/dist/ai-service/recording/recording-manager.js.map +1 -0
- package/dist/ai-service/recording/snapshot-manager.d.ts +195 -0
- package/dist/ai-service/recording/snapshot-manager.d.ts.map +1 -0
- package/dist/ai-service/recording/snapshot-manager.js +708 -0
- package/dist/ai-service/recording/snapshot-manager.js.map +1 -0
- package/dist/ai-service/recording/storage/session-recording-storage.d.ts +148 -0
- package/dist/ai-service/recording/storage/session-recording-storage.d.ts.map +1 -0
- package/dist/ai-service/recording/storage/session-recording-storage.js +399 -0
- package/dist/ai-service/recording/storage/session-recording-storage.js.map +1 -0
- package/dist/ai-service/recording/types.d.ts +140 -0
- package/dist/ai-service/recording/types.d.ts.map +1 -0
- package/dist/ai-service/recording/types.js +8 -0
- package/dist/ai-service/recording/types.js.map +1 -0
- package/dist/ai-service/request-deduplicator.d.ts +35 -0
- package/dist/ai-service/request-deduplicator.d.ts.map +1 -0
- package/dist/ai-service/request-deduplicator.js +53 -0
- package/dist/ai-service/request-deduplicator.js.map +1 -0
- package/dist/ai-service/resolve-generation-state-for-ui.d.ts +9 -0
- package/dist/ai-service/resolve-generation-state-for-ui.d.ts.map +1 -0
- package/dist/ai-service/resolve-generation-state-for-ui.js +25 -0
- package/dist/ai-service/resolve-generation-state-for-ui.js.map +1 -0
- package/dist/ai-service/sdk-api-templates.d.ts +2 -0
- package/dist/ai-service/sdk-api-templates.d.ts.map +1 -0
- package/dist/ai-service/sdk-api-templates.js +2 -0
- package/dist/ai-service/sdk-api-templates.js.map +1 -0
- package/dist/ai-service/security/index.d.ts +9 -0
- package/dist/ai-service/security/index.d.ts.map +1 -0
- package/dist/ai-service/security/index.js +9 -0
- package/dist/ai-service/security/index.js.map +1 -0
- package/dist/ai-service/security/safety-classifier.d.ts +83 -0
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -0
- package/dist/ai-service/security/safety-classifier.js +189 -0
- package/dist/ai-service/security/safety-classifier.js.map +1 -0
- package/dist/ai-service/security/secret-scanner-service.d.ts +43 -0
- package/dist/ai-service/security/secret-scanner-service.d.ts.map +1 -0
- package/dist/ai-service/security/secret-scanner-service.js +422 -0
- package/dist/ai-service/security/secret-scanner-service.js.map +1 -0
- package/dist/ai-service/security/secret-scanner.d.ts +161 -0
- package/dist/ai-service/security/secret-scanner.d.ts.map +1 -0
- package/dist/ai-service/security/secret-scanner.js +459 -0
- package/dist/ai-service/security/secret-scanner.js.map +1 -0
- package/dist/ai-service/security/vulnerability-triage.d.ts +90 -0
- package/dist/ai-service/security/vulnerability-triage.d.ts.map +1 -0
- package/dist/ai-service/security/vulnerability-triage.js +113 -0
- package/dist/ai-service/security/vulnerability-triage.js.map +1 -0
- package/dist/ai-service/skills/index.d.ts +38 -0
- package/dist/ai-service/skills/index.d.ts.map +1 -0
- package/dist/ai-service/skills/index.js +104 -0
- package/dist/ai-service/skills/index.js.map +1 -0
- package/dist/ai-service/skills/system/_registry.generated.d.ts +6 -0
- package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/_registry.generated.js +43 -0
- package/dist/ai-service/skills/system/_registry.generated.js.map +1 -0
- package/dist/ai-service/skills/system/common-import-issues/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/common-import-issues/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/common-import-issues/skill.generated.js +93 -0
- package/dist/ai-service/skills/system/common-import-issues/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/materialized.d.ts +7 -0
- package/dist/ai-service/skills/system/materialized.d.ts.map +1 -0
- package/dist/ai-service/skills/system/materialized.js +33 -0
- package/dist/ai-service/skills/system/materialized.js.map +1 -0
- package/dist/ai-service/skills/system/migration-api-verification/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/migration-api-verification/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/migration-api-verification/skill.generated.js +119 -0
- package/dist/ai-service/skills/system/migration-api-verification/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js +274 -0
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/graphql.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-api/references/graphql.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/graphql.generated.js +214 -0
- package/dist/ai-service/skills/system/superblocks-api/references/graphql.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/rest-apis.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-api/references/rest-apis.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/rest-apis.generated.js +276 -0
- package/dist/ai-service/skills/system/superblocks-api/references/rest-apis.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js +412 -0
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.js +891 -0
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js +155 -0
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +756 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js +60 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js +136 -0
- package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +312 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js +124 -0
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/lovable.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/lovable.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/lovable.generated.js +79 -0
- package/dist/ai-service/skills/system/third-party-migration/lovable.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/replit.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/replit.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/replit.generated.js +65 -0
- package/dist/ai-service/skills/system/third-party-migration/replit.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +171 -0
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/v0.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/third-party-migration/v0.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/third-party-migration/v0.generated.js +118 -0
- package/dist/ai-service/skills/system/third-party-migration/v0.generated.js.map +1 -0
- package/dist/ai-service/skills/system/tool-paths.d.ts +3 -0
- package/dist/ai-service/skills/system/tool-paths.d.ts.map +1 -0
- package/dist/ai-service/skills/system/tool-paths.js +16 -0
- package/dist/ai-service/skills/system/tool-paths.js.map +1 -0
- package/dist/ai-service/skills/types.d.ts +69 -0
- package/dist/ai-service/skills/types.d.ts.map +1 -0
- package/dist/ai-service/skills/types.js +121 -0
- package/dist/ai-service/skills/types.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +570 -22
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +408 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/fsm.d.ts +17 -16
- package/dist/ai-service/state-machine/fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/fsm.js +2 -1
- package/dist/ai-service/state-machine/fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts +12 -0
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +1088 -168
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +335 -13
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.d.ts +11 -0
- package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.d.ts.map +1 -0
- package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.js +11 -0
- package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.js.map +1 -0
- package/dist/ai-service/state-machine/handlers/idle.d.ts +2 -2
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +138 -8
- package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +37 -2
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +1225 -136
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/next-steps.d.ts +22 -0
- package/dist/ai-service/state-machine/handlers/next-steps.d.ts.map +1 -0
- package/dist/ai-service/state-machine/handlers/next-steps.js +85 -0
- package/dist/ai-service/state-machine/handlers/next-steps.js.map +1 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts +25 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts.map +1 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js +68 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js.map +1 -0
- package/dist/ai-service/state-machine/handlers/play-dead.d.ts +2 -2
- package/dist/ai-service/state-machine/handlers/play-dead.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/play-dead.js +18 -4
- package/dist/ai-service/state-machine/handlers/play-dead.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts +6 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.js +234 -43
- package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +116 -6
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.d.ts +7 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.js +47 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record.d.ts +33 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record.js +61 -0
- package/dist/ai-service/state-machine/helpers/background-chat-record.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/change-info.d.ts +8 -0
- package/dist/ai-service/state-machine/helpers/change-info.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/change-info.js +100 -0
- package/dist/ai-service/state-machine/helpers/change-info.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/classification.d.ts +5 -0
- package/dist/ai-service/state-machine/helpers/classification.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/classification.js +13 -0
- package/dist/ai-service/state-machine/helpers/classification.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/context-id.d.ts +4 -0
- package/dist/ai-service/state-machine/helpers/context-id.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/context-id.js +18 -0
- package/dist/ai-service/state-machine/helpers/context-id.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts +7 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js +38 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts +27 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js +34 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/peer.d.ts +83 -3
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +342 -4
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts +21 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +71 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/pre-session-metrics.d.ts +38 -0
- package/dist/ai-service/state-machine/helpers/pre-session-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/pre-session-metrics.js +131 -0
- package/dist/ai-service/state-machine/helpers/pre-session-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts +26 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js +128 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.d.ts +28 -0
- package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.js +254 -0
- package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts +59 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.js +168 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +229 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +675 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +271 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.js +630 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/transition.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/transition.js +8 -3
- package/dist/ai-service/state-machine/helpers/transition.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts +8 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js +11 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js.map +1 -0
- package/dist/ai-service/state-machine/mocks.d.ts +3 -3
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +125 -20
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts +89 -0
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -0
- package/dist/ai-service/state-machine/traced-fsm.js +179 -0
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -0
- package/dist/ai-service/tasks/access.d.ts +23 -0
- package/dist/ai-service/tasks/access.d.ts.map +1 -0
- package/dist/ai-service/tasks/access.js +26 -0
- package/dist/ai-service/tasks/access.js.map +1 -0
- package/dist/ai-service/tasks/factory.d.ts +106 -0
- package/dist/ai-service/tasks/factory.d.ts.map +1 -0
- package/dist/ai-service/tasks/factory.js +71 -0
- package/dist/ai-service/tasks/factory.js.map +1 -0
- package/dist/ai-service/tasks/index.d.ts +6 -0
- package/dist/ai-service/tasks/index.d.ts.map +1 -0
- package/dist/ai-service/tasks/index.js +5 -0
- package/dist/ai-service/tasks/index.js.map +1 -0
- package/dist/ai-service/tasks/peer-push.d.ts +81 -0
- package/dist/ai-service/tasks/peer-push.d.ts.map +1 -0
- package/dist/ai-service/tasks/peer-push.js +84 -0
- package/dist/ai-service/tasks/peer-push.js.map +1 -0
- package/dist/ai-service/tasks/poll-loop.d.ts +56 -0
- package/dist/ai-service/tasks/poll-loop.d.ts.map +1 -0
- package/dist/ai-service/tasks/poll-loop.js +73 -0
- package/dist/ai-service/tasks/poll-loop.js.map +1 -0
- package/dist/ai-service/tasks/task-store.d.ts +116 -0
- package/dist/ai-service/tasks/task-store.d.ts.map +1 -0
- package/dist/ai-service/tasks/task-store.js +388 -0
- package/dist/ai-service/tasks/task-store.js.map +1 -0
- package/dist/ai-service/tasks/test-utils.d.ts +24 -0
- package/dist/ai-service/tasks/test-utils.d.ts.map +1 -0
- package/dist/ai-service/tasks/test-utils.js +53 -0
- package/dist/ai-service/tasks/test-utils.js.map +1 -0
- package/dist/ai-service/tasks/types.d.ts +143 -0
- package/dist/ai-service/tasks/types.d.ts.map +1 -0
- package/dist/ai-service/tasks/types.js +6 -0
- package/dist/ai-service/tasks/types.js.map +1 -0
- package/dist/ai-service/template-renderer.d.ts +45 -0
- package/dist/ai-service/template-renderer.d.ts.map +1 -0
- package/dist/ai-service/template-renderer.js +316 -0
- package/dist/ai-service/template-renderer.js.map +1 -0
- package/dist/ai-service/test-utils/dd-trace-helpers.d.ts +25 -0
- package/dist/ai-service/test-utils/dd-trace-helpers.d.ts.map +1 -0
- package/dist/ai-service/test-utils/dd-trace-helpers.js +9 -0
- package/dist/ai-service/test-utils/dd-trace-helpers.js.map +1 -0
- package/dist/ai-service/test-utils/error-mocks.d.ts +69 -0
- package/dist/ai-service/test-utils/error-mocks.d.ts.map +1 -0
- package/dist/ai-service/test-utils/error-mocks.js +334 -0
- package/dist/ai-service/test-utils/error-mocks.js.map +1 -0
- package/dist/ai-service/test-utils/metrics-harness.d.ts +38 -0
- package/dist/ai-service/test-utils/metrics-harness.d.ts.map +1 -0
- package/dist/ai-service/test-utils/metrics-harness.js +67 -0
- package/dist/ai-service/test-utils/metrics-harness.js.map +1 -0
- package/dist/ai-service/test-utils/span-interceptor.d.ts +74 -0
- package/dist/ai-service/test-utils/span-interceptor.d.ts.map +1 -0
- package/dist/ai-service/test-utils/span-interceptor.js +272 -0
- package/dist/ai-service/test-utils/span-interceptor.js.map +1 -0
- package/dist/ai-service/test-utils/tracer-harness.d.ts +8 -0
- package/dist/ai-service/test-utils/tracer-harness.d.ts.map +1 -0
- package/dist/ai-service/test-utils/tracer-harness.js +26 -0
- package/dist/ai-service/test-utils/tracer-harness.js.map +1 -0
- package/dist/ai-service/transform/api-builder/shared.d.ts +10 -2
- package/dist/ai-service/transform/api-builder/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.js +34 -10
- package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +16 -2
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +181 -55
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts +6 -2
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +186 -49
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
- package/dist/ai-service/transform/lucide-dynamic-type-imports/transformer.d.ts +40 -0
- package/dist/ai-service/transform/lucide-dynamic-type-imports/transformer.d.ts.map +1 -0
- package/dist/ai-service/transform/lucide-dynamic-type-imports/transformer.js +118 -0
- package/dist/ai-service/transform/lucide-dynamic-type-imports/transformer.js.map +1 -0
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts +1 -1
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.js +88 -37
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.js.map +1 -1
- package/dist/ai-service/transform/shared.d.ts +9 -2
- package/dist/ai-service/transform/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/shared.js +43 -13
- package/dist/ai-service/transform/shared.js.map +1 -1
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts +1 -1
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js +77 -26
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js.map +1 -1
- package/dist/ai-service/types.d.ts +301 -27
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js +157 -0
- package/dist/ai-service/types.js.map +1 -1
- package/dist/ai-service/util/archive-extractors.d.ts +52 -0
- package/dist/ai-service/util/archive-extractors.d.ts.map +1 -0
- package/dist/ai-service/util/archive-extractors.js +305 -0
- package/dist/ai-service/util/archive-extractors.js.map +1 -0
- package/dist/ai-service/util/call-peer.d.ts +11 -0
- package/dist/ai-service/util/call-peer.d.ts.map +1 -0
- package/dist/ai-service/util/call-peer.js +47 -0
- package/dist/ai-service/util/call-peer.js.map +1 -0
- package/dist/ai-service/util/inference-jwt.d.ts +15 -0
- package/dist/ai-service/util/inference-jwt.d.ts.map +1 -0
- package/dist/ai-service/util/inference-jwt.js +56 -0
- package/dist/ai-service/util/inference-jwt.js.map +1 -0
- package/dist/ai-service/util/llm-config-utils.d.ts +54 -0
- package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -0
- package/dist/ai-service/util/llm-config-utils.js +140 -0
- package/dist/ai-service/util/llm-config-utils.js.map +1 -0
- package/dist/ai-service/util/mode-message.d.ts +7 -0
- package/dist/ai-service/util/mode-message.d.ts.map +1 -0
- package/dist/ai-service/util/mode-message.js +15 -0
- package/dist/ai-service/util/mode-message.js.map +1 -0
- package/dist/ai-service/util/parse-jwt.d.ts +12 -0
- package/dist/ai-service/util/parse-jwt.d.ts.map +1 -0
- package/dist/ai-service/util/parse-jwt.js +30 -0
- package/dist/ai-service/util/parse-jwt.js.map +1 -0
- package/dist/ai-service/util/peer-liveness.d.ts +23 -0
- package/dist/ai-service/util/peer-liveness.d.ts.map +1 -0
- package/dist/ai-service/util/peer-liveness.js +42 -0
- package/dist/ai-service/util/peer-liveness.js.map +1 -0
- package/dist/ai-service/util/rpc-timeout.d.ts +89 -0
- package/dist/ai-service/util/rpc-timeout.d.ts.map +1 -0
- package/dist/ai-service/util/rpc-timeout.js +112 -0
- package/dist/ai-service/util/rpc-timeout.js.map +1 -0
- package/dist/ai-service/util/scoped-token-utils.d.ts +15 -0
- package/dist/ai-service/util/scoped-token-utils.d.ts.map +1 -0
- package/dist/ai-service/util/scoped-token-utils.js +137 -0
- package/dist/ai-service/util/scoped-token-utils.js.map +1 -0
- package/dist/ai-service/util/stop-condition.d.ts +17 -0
- package/dist/ai-service/util/stop-condition.d.ts.map +1 -0
- package/dist/ai-service/util/stop-condition.js +33 -0
- package/dist/ai-service/util/stop-condition.js.map +1 -0
- package/dist/ai-service/util/strip-content.d.ts +2 -0
- package/dist/ai-service/util/strip-content.d.ts.map +1 -0
- package/dist/ai-service/util/strip-content.js +31 -0
- package/dist/ai-service/util/strip-content.js.map +1 -0
- package/dist/ai-service/util/tool-signature.d.ts +13 -0
- package/dist/ai-service/util/tool-signature.d.ts.map +1 -0
- package/dist/ai-service/util/tool-signature.js +38 -0
- package/dist/ai-service/util/tool-signature.js.map +1 -0
- package/dist/binding-extraction/extract-control-block-identifiers.d.ts +1 -2
- package/dist/binding-extraction/extract-control-block-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-control-block-identifiers.js +16 -14
- package/dist/binding-extraction/extract-control-block-identifiers.js.map +1 -1
- package/dist/binding-extraction/extract-embedded-identifiers.d.ts +2 -11
- package/dist/binding-extraction/extract-embedded-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-embedded-identifiers.js +9 -91
- package/dist/binding-extraction/extract-embedded-identifiers.js.map +1 -1
- package/dist/binding-extraction/extract-identifiers.d.ts +16 -3
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +272 -64
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/binding-extraction/index.d.ts +2 -0
- package/dist/binding-extraction/index.d.ts.map +1 -0
- package/dist/binding-extraction/index.js +2 -0
- package/dist/binding-extraction/index.js.map +1 -0
- package/dist/binding-extraction/js-identifiers.d.ts +34 -0
- package/dist/binding-extraction/js-identifiers.d.ts.map +1 -0
- package/dist/binding-extraction/js-identifiers.js +409 -0
- package/dist/binding-extraction/js-identifiers.js.map +1 -0
- package/dist/binding-extraction/python-identifiers.d.ts +30 -0
- package/dist/binding-extraction/python-identifiers.d.ts.map +1 -0
- package/dist/binding-extraction/python-identifiers.js +657 -0
- package/dist/binding-extraction/python-identifiers.js.map +1 -0
- package/dist/binding-extraction/shared.d.ts +0 -203
- package/dist/binding-extraction/shared.d.ts.map +1 -1
- package/dist/binding-extraction/shared.js +1 -42
- package/dist/binding-extraction/shared.js.map +1 -1
- package/dist/binding-extraction/template-strings.d.ts +1 -2
- package/dist/binding-extraction/template-strings.d.ts.map +1 -1
- package/dist/build-errors.d.ts +10 -0
- package/dist/build-errors.d.ts.map +1 -0
- package/dist/build-errors.js +14 -0
- package/dist/build-errors.js.map +1 -0
- package/dist/clark-log-forwarder.d.ts +15 -0
- package/dist/clark-log-forwarder.d.ts.map +1 -0
- package/dist/clark-log-forwarder.js +32 -0
- package/dist/clark-log-forwarder.js.map +1 -0
- package/dist/client-error-overlay.d.ts +11 -0
- package/dist/client-error-overlay.d.ts.map +1 -0
- package/dist/client-error-overlay.js +90 -0
- package/dist/client-error-overlay.js.map +1 -0
- package/dist/codegen.d.ts +3 -25
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +64 -129
- package/dist/codegen.js.map +1 -1
- package/dist/components-manager.d.ts +12 -12
- package/dist/components-manager.d.ts.map +1 -1
- package/dist/components-manager.js +116 -90
- package/dist/components-manager.js.map +1 -1
- package/dist/custom-components.d.ts +1 -1
- package/dist/custom-components.d.ts.map +1 -1
- package/dist/custom-components.js +1 -1
- package/dist/custom-components.js.map +1 -1
- package/dist/dev-server-ws-smoke-client.d.ts +40 -0
- package/dist/dev-server-ws-smoke-client.d.ts.map +1 -0
- package/dist/dev-server-ws-smoke-client.js +316 -0
- package/dist/dev-server-ws-smoke-client.js.map +1 -0
- package/dist/download-filename.d.ts +6 -0
- package/dist/download-filename.d.ts.map +1 -0
- package/dist/download-filename.js +40 -0
- package/dist/download-filename.js.map +1 -0
- package/dist/draft-interface.d.ts +8 -1
- package/dist/draft-interface.d.ts.map +1 -1
- package/dist/early-error-relay.d.ts +31 -0
- package/dist/early-error-relay.d.ts.map +1 -0
- package/dist/early-error-relay.js +88 -0
- package/dist/early-error-relay.js.map +1 -0
- package/dist/ensure-app-provider.d.ts +2 -0
- package/dist/ensure-app-provider.d.ts.map +1 -0
- package/dist/ensure-app-provider.js +209 -0
- package/dist/ensure-app-provider.js.map +1 -0
- package/dist/errors/error-handler.d.ts +3 -13
- package/dist/errors/error-handler.d.ts.map +1 -1
- package/dist/errors/error-handler.js +1 -1
- package/dist/errors/error-handler.js.map +1 -1
- package/dist/extract-api-integrations.d.ts +99 -0
- package/dist/extract-api-integrations.d.ts.map +1 -0
- package/dist/extract-api-integrations.js +597 -0
- package/dist/extract-api-integrations.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts +64 -2
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +1398 -469
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +55 -3
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +118 -5
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/file-system-manager.d.ts +62 -69
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +695 -811
- package/dist/file-system-manager.js.map +1 -1
- package/dist/git-auth-state.d.ts +4 -0
- package/dist/git-auth-state.d.ts.map +1 -0
- package/dist/git-auth-state.js +25 -0
- package/dist/git-auth-state.js.map +1 -0
- package/dist/git-log.d.ts +11 -0
- package/dist/git-log.d.ts.map +1 -0
- package/dist/git-log.js +23 -0
- package/dist/git-log.js.map +1 -0
- package/dist/git-operation-lock.d.ts +22 -0
- package/dist/git-operation-lock.d.ts.map +1 -0
- package/dist/git-operation-lock.js +25 -0
- package/dist/git-operation-lock.js.map +1 -0
- package/dist/git-service/app-layout-guard.d.ts +25 -0
- package/dist/git-service/app-layout-guard.d.ts.map +1 -0
- package/dist/git-service/app-layout-guard.js +66 -0
- package/dist/git-service/app-layout-guard.js.map +1 -0
- package/dist/git-service/azure-devops-workflow.d.ts +6 -0
- package/dist/git-service/azure-devops-workflow.d.ts.map +1 -0
- package/dist/git-service/azure-devops-workflow.js +12 -0
- package/dist/git-service/azure-devops-workflow.js.map +1 -0
- package/dist/git-service/bitbucket-workflow.d.ts +5 -0
- package/dist/git-service/bitbucket-workflow.d.ts.map +1 -0
- package/dist/git-service/bitbucket-workflow.js +12 -0
- package/dist/git-service/bitbucket-workflow.js.map +1 -0
- package/dist/git-service/checkpoint-commit-metrics.d.ts +2 -0
- package/dist/git-service/checkpoint-commit-metrics.d.ts.map +1 -0
- package/dist/git-service/checkpoint-commit-metrics.js +15 -0
- package/dist/git-service/checkpoint-commit-metrics.js.map +1 -0
- package/dist/git-service/checkpoint-committer.d.ts +22 -0
- package/dist/git-service/checkpoint-committer.d.ts.map +1 -0
- package/dist/git-service/checkpoint-committer.js +91 -0
- package/dist/git-service/checkpoint-committer.js.map +1 -0
- package/dist/git-service/commit-live-branch.d.ts +17 -0
- package/dist/git-service/commit-live-branch.d.ts.map +1 -0
- package/dist/git-service/commit-live-branch.js +28 -0
- package/dist/git-service/commit-live-branch.js.map +1 -0
- package/dist/git-service/ensure-workflow-file.d.ts +20 -0
- package/dist/git-service/ensure-workflow-file.d.ts.map +1 -0
- package/dist/git-service/ensure-workflow-file.js +51 -0
- package/dist/git-service/ensure-workflow-file.js.map +1 -0
- package/dist/git-service/errors.d.ts +31 -0
- package/dist/git-service/errors.d.ts.map +1 -0
- package/dist/git-service/errors.js +49 -0
- package/dist/git-service/errors.js.map +1 -0
- package/dist/git-service/github-workflow.d.ts +6 -0
- package/dist/git-service/github-workflow.d.ts.map +1 -0
- package/dist/git-service/github-workflow.js +12 -0
- package/dist/git-service/github-workflow.js.map +1 -0
- package/dist/git-service/gitlab-workflow.d.ts +6 -0
- package/dist/git-service/gitlab-workflow.d.ts.map +1 -0
- package/dist/git-service/gitlab-workflow.js +12 -0
- package/dist/git-service/gitlab-workflow.js.map +1 -0
- package/dist/git-service/index.d.ts +30 -0
- package/dist/git-service/index.d.ts.map +1 -0
- package/dist/git-service/index.js +217 -0
- package/dist/git-service/index.js.map +1 -0
- package/dist/git-service/live-branch.d.ts +11 -0
- package/dist/git-service/live-branch.d.ts.map +1 -0
- package/dist/git-service/live-branch.js +171 -0
- package/dist/git-service/live-branch.js.map +1 -0
- package/dist/git-service/managed-excludes.d.ts +36 -0
- package/dist/git-service/managed-excludes.d.ts.map +1 -0
- package/dist/git-service/managed-excludes.js +124 -0
- package/dist/git-service/managed-excludes.js.map +1 -0
- package/dist/git-service/provider-workflow-files.d.ts +12 -0
- package/dist/git-service/provider-workflow-files.d.ts.map +1 -0
- package/dist/git-service/provider-workflow-files.js +36 -0
- package/dist/git-service/provider-workflow-files.js.map +1 -0
- package/dist/git-service/status-sync.d.ts +18 -0
- package/dist/git-service/status-sync.d.ts.map +1 -0
- package/dist/git-service/status-sync.js +32 -0
- package/dist/git-service/status-sync.js.map +1 -0
- package/dist/ids.d.ts +1 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +3 -0
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/inject-index-vite-plugin.d.ts +21 -0
- package/dist/inject-index-vite-plugin.d.ts.map +1 -0
- package/dist/inject-index-vite-plugin.js +130 -0
- package/dist/inject-index-vite-plugin.js.map +1 -0
- package/dist/injected-index.d.ts +9 -2
- package/dist/injected-index.d.ts.map +1 -1
- package/dist/injected-index.js +153 -9
- package/dist/injected-index.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts +46 -0
- package/dist/lock-service/activity-tracker.d.ts.map +1 -0
- package/dist/lock-service/activity-tracker.js +119 -0
- package/dist/lock-service/activity-tracker.js.map +1 -0
- package/dist/lock-service/index.d.ts +420 -24
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +1209 -131
- package/dist/lock-service/index.js.map +1 -1
- package/dist/migration/get-fullstack-template-dir.d.ts +37 -0
- package/dist/migration/get-fullstack-template-dir.d.ts.map +1 -0
- package/dist/migration/get-fullstack-template-dir.js +99 -0
- package/dist/migration/get-fullstack-template-dir.js.map +1 -0
- package/dist/migration/inline-v2-backup-source-files.d.ts +7 -0
- package/dist/migration/inline-v2-backup-source-files.d.ts.map +1 -0
- package/dist/migration/inline-v2-backup-source-files.js +110 -0
- package/dist/migration/inline-v2-backup-source-files.js.map +1 -0
- package/dist/migration/integration-write-policy.d.ts +24 -0
- package/dist/migration/integration-write-policy.d.ts.map +1 -0
- package/dist/migration/integration-write-policy.js +125 -0
- package/dist/migration/integration-write-policy.js.map +1 -0
- package/dist/migration/mark-api-testing-denied.d.ts +27 -0
- package/dist/migration/mark-api-testing-denied.d.ts.map +1 -0
- package/dist/migration/mark-api-testing-denied.js +80 -0
- package/dist/migration/mark-api-testing-denied.js.map +1 -0
- package/dist/migration/migration-checklist.d.ts +80 -0
- package/dist/migration/migration-checklist.d.ts.map +1 -0
- package/dist/migration/migration-checklist.js +150 -0
- package/dist/migration/migration-checklist.js.map +1 -0
- package/dist/migration/migration-classifier.d.ts +4 -0
- package/dist/migration/migration-classifier.d.ts.map +1 -0
- package/dist/migration/migration-classifier.js +87 -0
- package/dist/migration/migration-classifier.js.map +1 -0
- package/dist/migration/migration-metrics.d.ts +74 -0
- package/dist/migration/migration-metrics.d.ts.map +1 -0
- package/dist/migration/migration-metrics.js +124 -0
- package/dist/migration/migration-metrics.js.map +1 -0
- package/dist/migration/migration-routes.d.ts +47 -0
- package/dist/migration/migration-routes.d.ts.map +1 -0
- package/dist/migration/migration-routes.js +1233 -0
- package/dist/migration/migration-routes.js.map +1 -0
- package/dist/migration/migration-session-reconcile.d.ts +24 -0
- package/dist/migration/migration-session-reconcile.d.ts.map +1 -0
- package/dist/migration/migration-session-reconcile.js +139 -0
- package/dist/migration/migration-session-reconcile.js.map +1 -0
- package/dist/migration/migration-verification.d.ts +288 -0
- package/dist/migration/migration-verification.d.ts.map +1 -0
- package/dist/migration/migration-verification.js +1246 -0
- package/dist/migration/migration-verification.js.map +1 -0
- package/dist/migration/recommended-user-deps.d.ts +40 -0
- package/dist/migration/recommended-user-deps.d.ts.map +1 -0
- package/dist/migration/recommended-user-deps.js +209 -0
- package/dist/migration/recommended-user-deps.js.map +1 -0
- package/dist/migration/resolve-v2-backup-path.d.ts +7 -0
- package/dist/migration/resolve-v2-backup-path.d.ts.map +1 -0
- package/dist/migration/resolve-v2-backup-path.js +35 -0
- package/dist/migration/resolve-v2-backup-path.js.map +1 -0
- package/dist/migration/restructure.d.ts +125 -0
- package/dist/migration/restructure.d.ts.map +1 -0
- package/dist/migration/restructure.js +645 -0
- package/dist/migration/restructure.js.map +1 -0
- package/dist/migration/scan-imports.d.ts +7 -0
- package/dist/migration/scan-imports.d.ts.map +1 -0
- package/dist/migration/scan-imports.js +178 -0
- package/dist/migration/scan-imports.js.map +1 -0
- package/dist/migration/translation-prompt.d.ts +23 -0
- package/dist/migration/translation-prompt.d.ts.map +1 -0
- package/dist/migration/translation-prompt.js +36 -0
- package/dist/migration/translation-prompt.js.map +1 -0
- package/dist/migration/unsupported-integrations.d.ts +11 -0
- package/dist/migration/unsupported-integrations.d.ts.map +1 -0
- package/dist/migration/unsupported-integrations.js +206 -0
- package/dist/migration/unsupported-integrations.js.map +1 -0
- package/dist/migration/yaml-walk.d.ts +18 -0
- package/dist/migration/yaml-walk.d.ts.map +1 -0
- package/dist/migration/yaml-walk.js +45 -0
- package/dist/migration/yaml-walk.js.map +1 -0
- package/dist/migration-templates/app-fullstack/.gitignore +50 -0
- package/dist/migration-templates/app-fullstack/client/App.tsx +17 -0
- package/dist/migration-templates/app-fullstack/client/components/common/sonner.tsx +20 -0
- package/dist/migration-templates/app-fullstack/client/components/hooks/use-active-page.ts +73 -0
- package/dist/migration-templates/app-fullstack/client/components/hooks/use-mobile.ts +21 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +197 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/area-chart.tsx +432 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/aspect-ratio.tsx +45 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +117 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/badge.tsx +143 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/bar-chart.tsx +390 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +259 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +182 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +300 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/card.tsx +129 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/chart.tsx +403 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/checkbox.tsx +97 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/code-block-content.tsx +66 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/date-range-picker.tsx +396 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/dialog.tsx +223 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/dropdown-menu.tsx +284 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +395 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +166 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +162 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/icon.tsx +133 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +68 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +219 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +55 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/line-chart.tsx +380 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/link.tsx +139 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +345 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +192 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/pie-chart.tsx +295 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +162 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +69 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/radar-chart.tsx +386 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/radial-chart.tsx +402 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/scroll-area.tsx +86 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +229 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/separator.tsx +62 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +234 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +974 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/skeleton.tsx +13 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +198 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +95 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/table.tsx +145 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/tabs.tsx +87 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/textarea.tsx +148 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +225 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +150 -0
- package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +175 -0
- package/dist/migration-templates/app-fullstack/client/hooks/useApi.ts +25 -0
- package/dist/migration-templates/app-fullstack/client/hooks/useApiData.ts +10 -0
- package/dist/migration-templates/app-fullstack/client/index.css +131 -0
- package/dist/migration-templates/app-fullstack/client/lib/executeApi.ts +9 -0
- package/dist/migration-templates/app-fullstack/client/lib/utils.ts +6 -0
- package/dist/migration-templates/app-fullstack/client/pages/Home/index.tsx +3 -0
- package/dist/migration-templates/app-fullstack/client/root.tsx +17 -0
- package/dist/migration-templates/app-fullstack/client/router.tsx +48 -0
- package/dist/migration-templates/app-fullstack/client/types/node.d.ts +9 -0
- package/dist/migration-templates/app-fullstack/components.json +21 -0
- package/dist/migration-templates/app-fullstack/css.d.ts +3 -0
- package/dist/migration-templates/app-fullstack/eslint.config.js +113 -0
- package/dist/migration-templates/app-fullstack/package.json +84 -0
- package/dist/migration-templates/app-fullstack/server/.gitkeep +0 -0
- package/dist/migration-templates/app-fullstack/server/apis/index.ts +22 -0
- package/dist/migration-templates/app-fullstack/server/index.ts +2 -0
- package/dist/migration-templates/app-fullstack/tsconfig.client.json +27 -0
- package/dist/migration-templates/app-fullstack/tsconfig.eslint.json +8 -0
- package/dist/migration-templates/app-fullstack/tsconfig.json +25 -0
- package/dist/migration-templates/app-fullstack/tsconfig.server.json +13 -0
- package/dist/migration-templates/app-fullstack/vite.config.ts +17 -0
- package/dist/npm/apply-package-json-substitutions.d.ts +19 -0
- package/dist/npm/apply-package-json-substitutions.d.ts.map +1 -0
- package/dist/npm/apply-package-json-substitutions.js +108 -0
- package/dist/npm/apply-package-json-substitutions.js.map +1 -0
- package/dist/npm/normalize-workspace-protocol-for-npm.d.ts +15 -0
- package/dist/npm/normalize-workspace-protocol-for-npm.d.ts.map +1 -0
- package/dist/npm/normalize-workspace-protocol-for-npm.js +36 -0
- package/dist/npm/normalize-workspace-protocol-for-npm.js.map +1 -0
- package/dist/npm/prepare-package-json-for-cloud-npm.d.ts +8 -0
- package/dist/npm/prepare-package-json-for-cloud-npm.d.ts.map +1 -0
- package/dist/npm/prepare-package-json-for-cloud-npm.js +44 -0
- package/dist/npm/prepare-package-json-for-cloud-npm.js.map +1 -0
- package/dist/npm/rewrite-platform-workspace-deps.d.ts +17 -0
- package/dist/npm/rewrite-platform-workspace-deps.d.ts.map +1 -0
- package/dist/npm/rewrite-platform-workspace-deps.js +37 -0
- package/dist/npm/rewrite-platform-workspace-deps.js.map +1 -0
- package/dist/operations/operation-processor.d.ts +24 -0
- package/dist/operations/operation-processor.d.ts.map +1 -0
- package/dist/operations/operation-processor.js +80 -0
- package/dist/operations/operation-processor.js.map +1 -0
- package/dist/operations/types.d.ts +8 -0
- package/dist/operations/types.d.ts.map +1 -0
- package/dist/operations/types.js +2 -0
- package/dist/operations/types.js.map +1 -0
- package/dist/parsing/bindings.d.ts +1 -1
- package/dist/parsing/bindings.d.ts.map +1 -1
- package/dist/parsing/bindings.js +14 -5
- package/dist/parsing/bindings.js.map +1 -1
- package/dist/parsing/computed/index.d.ts +1 -1
- package/dist/parsing/computed/index.d.ts.map +1 -1
- package/dist/parsing/computed/index.js +1 -1
- package/dist/parsing/computed/index.js.map +1 -1
- package/dist/parsing/computed/to-code-computed.d.ts +2 -1
- package/dist/parsing/computed/to-code-computed.d.ts.map +1 -1
- package/dist/parsing/computed/to-code-computed.js +22 -11
- package/dist/parsing/computed/to-code-computed.js.map +1 -1
- package/dist/parsing/computed/to-value-computed.d.ts +1 -1
- package/dist/parsing/computed/to-value-computed.d.ts.map +1 -1
- package/dist/parsing/computed/to-value-computed.js +19 -7
- package/dist/parsing/computed/to-value-computed.js.map +1 -1
- package/dist/parsing/dim/index.d.ts +1 -1
- package/dist/parsing/dim/index.d.ts.map +1 -1
- package/dist/parsing/dim/index.js +1 -1
- package/dist/parsing/dim/index.js.map +1 -1
- package/dist/parsing/dim/to-value-dimensions.d.ts +2 -1
- package/dist/parsing/dim/to-value-dimensions.d.ts.map +1 -1
- package/dist/parsing/dim/to-value-dimensions.js +4 -3
- package/dist/parsing/dim/to-value-dimensions.js.map +1 -1
- package/dist/parsing/function/index.d.ts +4 -0
- package/dist/parsing/function/index.d.ts.map +1 -0
- package/dist/parsing/function/index.js +7 -0
- package/dist/parsing/function/index.js.map +1 -0
- package/dist/parsing/function/to-code-function.d.ts +2 -0
- package/dist/parsing/function/to-code-function.d.ts.map +1 -0
- package/dist/parsing/function/to-code-function.js +4 -0
- package/dist/parsing/function/to-code-function.js.map +1 -0
- package/dist/parsing/function/to-value-function.d.ts +4 -0
- package/dist/parsing/function/to-value-function.d.ts.map +1 -0
- package/dist/parsing/function/to-value-function.js +33 -0
- package/dist/parsing/function/to-value-function.js.map +1 -0
- package/dist/parsing/ids.d.ts +0 -2
- package/dist/parsing/ids.d.ts.map +1 -1
- package/dist/parsing/ids.js +18 -21
- package/dist/parsing/ids.js.map +1 -1
- package/dist/parsing/imports.d.ts +5 -5
- package/dist/parsing/imports.d.ts.map +1 -1
- package/dist/parsing/imports.js +40 -30
- package/dist/parsing/imports.js.map +1 -1
- package/dist/parsing/index.d.ts +3 -0
- package/dist/parsing/index.d.ts.map +1 -0
- package/dist/parsing/index.js +3 -0
- package/dist/parsing/index.js.map +1 -0
- package/dist/parsing/jsx-utils.d.ts +4 -3
- package/dist/parsing/jsx-utils.d.ts.map +1 -1
- package/dist/parsing/jsx-utils.js +37 -25
- package/dist/parsing/jsx-utils.js.map +1 -1
- package/dist/parsing/jsx.d.ts +25 -11
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +210 -176
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/parsing/page.d.ts +1 -2
- package/dist/parsing/page.d.ts.map +1 -1
- package/dist/parsing/page.js +297 -122
- package/dist/parsing/page.js.map +1 -1
- package/dist/parsing/parse-tsx-module.d.ts +4 -0
- package/dist/parsing/parse-tsx-module.d.ts.map +1 -0
- package/dist/parsing/parse-tsx-module.js +13 -0
- package/dist/parsing/parse-tsx-module.js.map +1 -0
- package/dist/parsing/properties.d.ts +2 -1
- package/dist/parsing/properties.d.ts.map +1 -1
- package/dist/parsing/properties.js +105 -28
- package/dist/parsing/properties.js.map +1 -1
- package/dist/parsing/sdk-registry.d.ts +17 -0
- package/dist/parsing/sdk-registry.d.ts.map +1 -0
- package/dist/parsing/sdk-registry.js +184 -0
- package/dist/parsing/sdk-registry.js.map +1 -0
- package/dist/parsing/template/index.d.ts +1 -1
- package/dist/parsing/template/index.d.ts.map +1 -1
- package/dist/parsing/template/index.js.map +1 -1
- package/dist/parsing/template/to-code-template.d.ts.map +1 -1
- package/dist/parsing/template/to-code-template.js +1 -2
- package/dist/parsing/template/to-code-template.js.map +1 -1
- package/dist/parsing/type-parsing-registry.d.ts +1 -1
- package/dist/parsing/type-parsing-registry.d.ts.map +1 -1
- package/dist/parsing/type-parsing-registry.js +2 -2
- package/dist/parsing/type-parsing-registry.js.map +1 -1
- package/dist/parsing/types.d.ts +3 -2
- package/dist/parsing/types.d.ts.map +1 -1
- package/dist/parsing/util.d.ts +7 -12
- package/dist/parsing/util.d.ts.map +1 -1
- package/dist/parsing/util.js +98 -81
- package/dist/parsing/util.js.map +1 -1
- package/dist/plugin-options.d.ts +67 -5
- package/dist/plugin-options.d.ts.map +1 -1
- package/dist/plugin-options.js +0 -3
- package/dist/plugin-options.js.map +1 -1
- package/dist/policy-gate-callback-mapper.d.ts +26 -0
- package/dist/policy-gate-callback-mapper.d.ts.map +1 -0
- package/dist/policy-gate-callback-mapper.js +58 -0
- package/dist/policy-gate-callback-mapper.js.map +1 -0
- package/dist/policy-gate-run-registry.d.ts +28 -0
- package/dist/policy-gate-run-registry.d.ts.map +1 -0
- package/dist/policy-gate-run-registry.js +40 -0
- package/dist/policy-gate-run-registry.js.map +1 -0
- package/dist/policy-gate-runner.d.ts +36 -0
- package/dist/policy-gate-runner.d.ts.map +1 -0
- package/dist/policy-gate-runner.js +250 -0
- package/dist/policy-gate-runner.js.map +1 -0
- package/dist/refactor/blocks.d.ts +1 -2
- package/dist/refactor/blocks.d.ts.map +1 -1
- package/dist/refactor/blocks.js +3 -70
- package/dist/refactor/blocks.js.map +1 -1
- package/dist/refactor/entities.d.ts +6 -0
- package/dist/refactor/entities.d.ts.map +1 -0
- package/dist/refactor/entities.js +65 -0
- package/dist/refactor/entities.js.map +1 -0
- package/dist/refactor/javascript.d.ts +1 -1
- package/dist/refactor/javascript.d.ts.map +1 -1
- package/dist/refactor/javascript.js +103 -2
- package/dist/refactor/javascript.js.map +1 -1
- package/dist/rename-manager.d.ts +3 -2
- package/dist/rename-manager.d.ts.map +1 -1
- package/dist/rename-manager.js +35 -14
- package/dist/rename-manager.js.map +1 -1
- package/dist/resolver.d.ts +4 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +27 -0
- package/dist/resolver.js.map +1 -0
- package/dist/router-parser-metrics.d.ts +2 -0
- package/dist/router-parser-metrics.d.ts.map +1 -0
- package/dist/router-parser-metrics.js +13 -0
- package/dist/router-parser-metrics.js.map +1 -0
- package/dist/router-parser.d.ts +41 -0
- package/dist/router-parser.d.ts.map +1 -0
- package/dist/router-parser.js +894 -0
- package/dist/router-parser.js.map +1 -0
- package/dist/scan-scope-merge.d.ts +16 -0
- package/dist/scan-scope-merge.d.ts.map +1 -0
- package/dist/scan-scope-merge.js +90 -0
- package/dist/scan-scope-merge.js.map +1 -0
- package/dist/server-rpc/client.d.ts +11 -0
- package/dist/server-rpc/client.d.ts.map +1 -0
- package/dist/server-rpc/client.js +42 -0
- package/dist/server-rpc/client.js.map +1 -0
- package/dist/server-rpc/handlers.d.ts +3 -0
- package/dist/server-rpc/handlers.d.ts.map +1 -0
- package/dist/server-rpc/handlers.js.map +1 -0
- package/dist/server-rpc/index.d.ts +77 -0
- package/dist/server-rpc/index.d.ts.map +1 -0
- package/dist/server-rpc/index.js +344 -0
- package/dist/server-rpc/index.js.map +1 -0
- package/dist/server-rpc/request-abort-context.d.ts +3 -0
- package/dist/server-rpc/request-abort-context.d.ts.map +1 -0
- package/dist/server-rpc/request-abort-context.js +23 -0
- package/dist/server-rpc/request-abort-context.js.map +1 -0
- package/dist/server-rpc/rpc-invalidate-metrics.d.ts +20 -0
- package/dist/server-rpc/rpc-invalidate-metrics.d.ts.map +1 -0
- package/dist/server-rpc/rpc-invalidate-metrics.js +86 -0
- package/dist/server-rpc/rpc-invalidate-metrics.js.map +1 -0
- package/dist/snapshot-routes.d.ts +18 -0
- package/dist/snapshot-routes.d.ts.map +1 -0
- package/dist/snapshot-routes.js +247 -0
- package/dist/snapshot-routes.js.map +1 -0
- package/dist/socket-manager.d.ts +145 -17
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +1730 -82
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts +23 -158
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +78 -877
- package/dist/source-tracker.js.map +1 -1
- package/dist/sync-service/checkpoint-result.d.ts +22 -0
- package/dist/sync-service/checkpoint-result.d.ts.map +1 -0
- package/dist/sync-service/checkpoint-result.js +22 -0
- package/dist/sync-service/checkpoint-result.js.map +1 -0
- package/dist/sync-service/download.d.ts +23 -6
- package/dist/sync-service/download.d.ts.map +1 -1
- package/dist/sync-service/download.js +234 -33
- package/dist/sync-service/download.js.map +1 -1
- package/dist/sync-service/draft-helpers.d.ts +17 -1
- package/dist/sync-service/draft-helpers.d.ts.map +1 -1
- package/dist/sync-service/draft-helpers.js +193 -114
- package/dist/sync-service/draft-helpers.js.map +1 -1
- package/dist/sync-service/draft-reconcile.d.ts +22 -0
- package/dist/sync-service/draft-reconcile.d.ts.map +1 -0
- package/dist/sync-service/draft-reconcile.js +24 -0
- package/dist/sync-service/draft-reconcile.js.map +1 -0
- package/dist/sync-service/draft-state-report-metrics.d.ts +2 -0
- package/dist/sync-service/draft-state-report-metrics.d.ts.map +1 -0
- package/dist/sync-service/draft-state-report-metrics.js +27 -0
- package/dist/sync-service/draft-state-report-metrics.js.map +1 -0
- package/dist/sync-service/hash-cache.d.ts +1 -0
- package/dist/sync-service/hash-cache.d.ts.map +1 -1
- package/dist/sync-service/hash-cache.js +4 -0
- package/dist/sync-service/hash-cache.js.map +1 -1
- package/dist/sync-service/hash-dir-tree.d.ts +1 -1
- package/dist/sync-service/hash-dir-tree.d.ts.map +1 -1
- package/dist/sync-service/hash-dir-tree.js +3 -3
- package/dist/sync-service/hash-dir-tree.js.map +1 -1
- package/dist/sync-service/index.d.ts +250 -20
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +868 -123
- package/dist/sync-service/index.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts +2 -2
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +93 -29
- package/dist/sync-service/list-dir.js.map +1 -1
- package/dist/sync-service/snapshot/take-snapshot.d.ts +1 -1
- package/dist/sync-service/snapshot/take-snapshot.d.ts.map +1 -1
- package/dist/sync-service/snapshot/take-snapshot.js +4 -8
- package/dist/sync-service/snapshot/take-snapshot.js.map +1 -1
- package/dist/sync-service/snapshot/upload-snapshot.d.ts +2 -2
- package/dist/sync-service/snapshot/upload-snapshot.d.ts.map +1 -1
- package/dist/sync-service/snapshot/upload-snapshot.js +21 -1
- package/dist/sync-service/snapshot/upload-snapshot.js.map +1 -1
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +21 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/util/ignore-patterns.d.ts +9 -0
- package/dist/util/ignore-patterns.d.ts.map +1 -0
- package/dist/util/ignore-patterns.js +53 -0
- package/dist/util/ignore-patterns.js.map +1 -0
- package/dist/util/log-sanitizer.d.ts +44 -0
- package/dist/util/log-sanitizer.d.ts.map +1 -0
- package/dist/util/log-sanitizer.js +209 -0
- package/dist/util/log-sanitizer.js.map +1 -0
- package/dist/util/logger.d.ts +58 -17
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +617 -40
- package/dist/util/logger.js.map +1 -1
- package/dist/util/open-api.d.ts +9 -0
- package/dist/util/open-api.d.ts.map +1 -0
- package/dist/util/open-api.js +2 -0
- package/dist/util/open-api.js.map +1 -0
- package/dist/util/operation-queue.d.ts +7 -1
- package/dist/util/operation-queue.d.ts.map +1 -1
- package/dist/util/operation-queue.js +5 -0
- package/dist/util/operation-queue.js.map +1 -1
- package/dist/util/summarize-for-logging.d.ts +14 -0
- package/dist/util/summarize-for-logging.d.ts.map +1 -0
- package/dist/util/summarize-for-logging.js +94 -0
- package/dist/util/summarize-for-logging.js.map +1 -0
- package/dist/util.d.ts +17 -18
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +46 -112
- package/dist/util.js.map +1 -1
- package/dist/virtual-modules.d.ts +5 -0
- package/dist/virtual-modules.d.ts.map +1 -0
- package/dist/virtual-modules.js +5 -0
- package/dist/virtual-modules.js.map +1 -0
- package/dist/vite-plugin-yaml-types.d.ts +15 -0
- package/dist/vite-plugin-yaml-types.d.ts.map +1 -0
- package/dist/vite-plugin-yaml-types.js +187 -0
- package/dist/vite-plugin-yaml-types.js.map +1 -0
- package/package.json +131 -65
- package/dist/ai-service/artifacts/bolt.d.ts +0 -8
- package/dist/ai-service/artifacts/bolt.d.ts.map +0 -1
- package/dist/ai-service/artifacts/bolt.js +0 -34
- package/dist/ai-service/artifacts/bolt.js.map +0 -1
- package/dist/ai-service/eval/template-renderer.d.ts +0 -13
- package/dist/ai-service/eval/template-renderer.d.ts.map +0 -1
- package/dist/ai-service/eval/template-renderer.js +0 -67
- package/dist/ai-service/eval/template-renderer.js.map +0 -1
- package/dist/ai-service/integrations/const.d.ts +0 -41
- package/dist/ai-service/integrations/const.d.ts.map +0 -1
- package/dist/ai-service/integrations/const.js +0 -76
- package/dist/ai-service/integrations/const.js.map +0 -1
- package/dist/ai-service/integrations/from-prompt-context.d.ts +0 -4
- package/dist/ai-service/integrations/from-prompt-context.d.ts.map +0 -1
- package/dist/ai-service/integrations/from-prompt-context.js +0 -56
- package/dist/ai-service/integrations/from-prompt-context.js.map +0 -1
- package/dist/ai-service/integrations/to-sdk-prompt.d.ts +0 -3
- package/dist/ai-service/integrations/to-sdk-prompt.d.ts.map +0 -1
- package/dist/ai-service/integrations/to-sdk-prompt.js +0 -45
- package/dist/ai-service/integrations/to-sdk-prompt.js.map +0 -1
- package/dist/ai-service/integrations/types.d.ts +0 -31
- package/dist/ai-service/integrations/types.d.ts.map +0 -1
- package/dist/ai-service/integrations/types.js.map +0 -1
- package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts +0 -2
- package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts.map +0 -1
- package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.js +0 -386
- package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.js.map +0 -1
- package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts +0 -2
- package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts.map +0 -1
- package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.js +0 -219
- package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.js.map +0 -1
- package/dist/ai-service/prompts/generated/index.d.ts +0 -4
- package/dist/ai-service/prompts/generated/index.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/index.js +0 -6
- package/dist/ai-service/prompts/generated/index.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js +0 -6
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/index.d.ts +0 -17
- package/dist/ai-service/prompts/generated/library-components/index.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-components/index.js +0 -19
- package/dist/ai-service/prompts/generated/library-components/index.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/Dim.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-typedefs/Dim.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/Dim.js +0 -6
- package/dist/ai-service/prompts/generated/library-typedefs/Dim.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts +0 -2
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js +0 -6
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts +0 -3
- package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/library-typedefs/index.js +0 -5
- package/dist/ai-service/prompts/generated/library-typedefs/index.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/index.d.ts +0 -11
- package/dist/ai-service/prompts/generated/subprompts/index.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/index.js +0 -13
- package/dist/ai-service/prompts/generated/subprompts/index.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/system.d.ts +0 -2
- package/dist/ai-service/prompts/generated/subprompts/system.d.ts.map +0 -1
- package/dist/ai-service/prompts/generated/subprompts/system.js +0 -6
- package/dist/ai-service/prompts/generated/subprompts/system.js.map +0 -1
- package/dist/ai-service/prompts/markdown-loader.d.ts +0 -10
- package/dist/ai-service/prompts/markdown-loader.d.ts.map +0 -1
- package/dist/ai-service/prompts/markdown-loader.js +0 -71
- package/dist/ai-service/prompts/markdown-loader.js.map +0 -1
- package/dist/ai-service/prompts/system.d.ts +0 -2
- package/dist/ai-service/prompts/system.d.ts.map +0 -1
- package/dist/ai-service/prompts/system.js +0 -152
- package/dist/ai-service/prompts/system.js.map +0 -1
- package/dist/ai-service/result-buffer/bolt.d.ts +0 -15
- package/dist/ai-service/result-buffer/bolt.d.ts.map +0 -1
- package/dist/ai-service/result-buffer/bolt.js +0 -73
- package/dist/ai-service/result-buffer/bolt.js.map +0 -1
- package/dist/ai-service/result-buffer/shared.d.ts +0 -13
- package/dist/ai-service/result-buffer/shared.d.ts.map +0 -1
- package/dist/ai-service/result-buffer/shared.js +0 -7
- package/dist/ai-service/result-buffer/shared.js.map +0 -1
- package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.d.ts +0 -21
- package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.d.ts.map +0 -1
- package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js +0 -48
- package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js.map +0 -1
- package/dist/binding-extraction/extract-js-identifiers.d.ts +0 -19
- package/dist/binding-extraction/extract-js-identifiers.d.ts.map +0 -1
- package/dist/binding-extraction/extract-js-identifiers.js +0 -161
- package/dist/binding-extraction/extract-js-identifiers.js.map +0 -1
- package/dist/binding-extraction/extract-py-identifiers.d.ts +0 -4
- package/dist/binding-extraction/extract-py-identifiers.d.ts.map +0 -1
- package/dist/binding-extraction/extract-py-identifiers.js +0 -161
- package/dist/binding-extraction/extract-py-identifiers.js.map +0 -1
- package/dist/parsing/entity/index.d.ts +0 -7
- package/dist/parsing/entity/index.d.ts.map +0 -1
- package/dist/parsing/entity/index.js +0 -7
- package/dist/parsing/entity/index.js.map +0 -1
- package/dist/parsing/entity/to-code-entity.d.ts +0 -3
- package/dist/parsing/entity/to-code-entity.d.ts.map +0 -1
- package/dist/parsing/entity/to-code-entity.js +0 -41
- package/dist/parsing/entity/to-code-entity.js.map +0 -1
- package/dist/parsing/entity/to-value-entity.d.ts +0 -8
- package/dist/parsing/entity/to-value-entity.d.ts.map +0 -1
- package/dist/parsing/entity/to-value-entity.js +0 -120
- package/dist/parsing/entity/to-value-entity.js.map +0 -1
- package/dist/parsing/events/index.d.ts +0 -5
- package/dist/parsing/events/index.d.ts.map +0 -1
- package/dist/parsing/events/index.js +0 -7
- package/dist/parsing/events/index.js.map +0 -1
- package/dist/parsing/events/to-code-events.d.ts +0 -3
- package/dist/parsing/events/to-code-events.d.ts.map +0 -1
- package/dist/parsing/events/to-code-events.js +0 -114
- package/dist/parsing/events/to-code-events.js.map +0 -1
- package/dist/parsing/events/to-value-events.d.ts +0 -6
- package/dist/parsing/events/to-value-events.d.ts.map +0 -1
- package/dist/parsing/events/to-value-events.js +0 -221
- package/dist/parsing/events/to-value-events.js.map +0 -1
- package/dist/parsing/scope.d.ts +0 -90
- package/dist/parsing/scope.d.ts.map +0 -1
- package/dist/parsing/scope.js +0 -669
- package/dist/parsing/scope.js.map +0 -1
- package/dist/parsing/theme.d.ts +0 -3
- package/dist/parsing/theme.d.ts.map +0 -1
- package/dist/parsing/theme.js +0 -87
- package/dist/parsing/theme.js.map +0 -1
- package/dist/refactor-jsx.d.ts +0 -28
- package/dist/refactor-jsx.d.ts.map +0 -1
- package/dist/refactor-jsx.js +0 -77
- package/dist/refactor-jsx.js.map +0 -1
- package/dist/routing.d.ts +0 -6
- package/dist/routing.d.ts.map +0 -1
- package/dist/routing.js +0 -76
- package/dist/routing.js.map +0 -1
- package/dist/sb-scope-manager.d.ts +0 -102
- package/dist/sb-scope-manager.d.ts.map +0 -1
- package/dist/sb-scope-manager.js +0 -507
- package/dist/sb-scope-manager.js.map +0 -1
- package/dist/sync-service/server-rpc/client.d.ts +0 -13
- package/dist/sync-service/server-rpc/client.d.ts.map +0 -1
- package/dist/sync-service/server-rpc/client.js +0 -65
- package/dist/sync-service/server-rpc/client.js.map +0 -1
- package/dist/sync-service/server-rpc/handlers.d.ts +0 -3
- package/dist/sync-service/server-rpc/handlers.d.ts.map +0 -1
- package/dist/sync-service/server-rpc/handlers.js.map +0 -1
- package/dist/util/tracing.d.ts +0 -4
- package/dist/util/tracing.d.ts.map +0 -1
- package/dist/util/tracing.js +0 -56
- package/dist/util/tracing.js.map +0 -1
- /package/dist/ai-service/{integrations → agent/subagents/apis}/types.js +0 -0
- /package/dist/{sync-service/server-rpc → server-rpc}/handlers.js +0 -0
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { addTracingToMethods, ConflictError, NotFoundError, } from "@superblocksteam/shared";
|
|
1
|
+
import { addTracingToMethods, ConflictError, NotFoundError, TracedEventEmitter, } from "@superblocksteam/shared";
|
|
2
|
+
import { unwrapResponseDto } from "@superblocksteam/shared";
|
|
4
3
|
import { applyErrorHandling, } from "../errors/error-handler.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { getErrorMeta } from "../util/logger.js";
|
|
5
|
+
import { OperationQueue } from "../util/operation-queue.js";
|
|
6
|
+
import { ActivityTracker } from "./activity-tracker.js";
|
|
7
7
|
const LOCK_HEARTBEAT_INTERVAL_MS = 30 * 1000; // 30 seconds
|
|
8
|
-
const
|
|
8
|
+
const LOCK_BUFFER_MS = 30 * 1000; // 30 seconds
|
|
9
|
+
/**
|
|
10
|
+
* How long a gateway peer's liveness signal counts for before it has to be
|
|
11
|
+
* renewed. A gateway refreshes it on every authorized call and, when it has
|
|
12
|
+
* nothing else to say, from its own heartbeat.
|
|
13
|
+
*
|
|
14
|
+
* A signal that only expired when the socket closed would be no signal at all
|
|
15
|
+
* for the case it exists to cover: a half-open connection that never closes
|
|
16
|
+
* would hold the exclusive per-app-branch lock indefinitely. Comfortably above
|
|
17
|
+
* the gateway's heartbeat interval so ordinary jitter is not mistaken for a
|
|
18
|
+
* dead peer, and far below the windows it defers (startup watchdog, idle
|
|
19
|
+
* reaper) so a genuinely dead one is noticed while they can still act.
|
|
20
|
+
*/
|
|
21
|
+
const GATEWAY_LIVENESS_TTL_MS = 90 * 1000; // 90 seconds
|
|
9
22
|
export var LockServiceStatus;
|
|
10
23
|
(function (LockServiceStatus) {
|
|
11
24
|
/** The lock service is not currently active */
|
|
@@ -28,54 +41,145 @@ export var LockType;
|
|
|
28
41
|
LockType["LOCAL"] = "local";
|
|
29
42
|
LockType["CSB"] = "csb";
|
|
30
43
|
})(LockType || (LockType = {}));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
/**
|
|
45
|
+
* The methods {@link LockService} reports as spans.
|
|
46
|
+
*
|
|
47
|
+
* `addTracingToMethods` matches by string, so an entry naming a method that no
|
|
48
|
+
* longer exists is dropped at runtime rather than failing to compile — tracing
|
|
49
|
+
* disappears and nothing says so. Exported so a test can assert every name here
|
|
50
|
+
* still resolves to a method.
|
|
51
|
+
*/
|
|
52
|
+
export const TRACED_LOCK_SERVICE_METHODS = [
|
|
53
|
+
"acquireLock",
|
|
54
|
+
"releaseLock",
|
|
55
|
+
"relinquishLock",
|
|
56
|
+
"notifyClosedByServer",
|
|
57
|
+
"checkAndUpdateLockIfPossible",
|
|
58
|
+
"ensureLockForWrite",
|
|
59
|
+
"shutdownAndExit",
|
|
60
|
+
"restartInactivityTimer",
|
|
61
|
+
"switchBranch",
|
|
62
|
+
];
|
|
63
|
+
export class LockService extends TracedEventEmitter {
|
|
34
64
|
applicationId;
|
|
35
65
|
branchName;
|
|
36
66
|
lockType;
|
|
37
67
|
heartbeatIntervalMs;
|
|
38
|
-
rpcClient;
|
|
39
68
|
syncCallback;
|
|
69
|
+
waitForGenerationCompleteCallback;
|
|
70
|
+
onGatewayLivenessLapsed;
|
|
71
|
+
onLockConflict;
|
|
40
72
|
_status = LockServiceStatus.IDLE;
|
|
41
73
|
_lockId;
|
|
42
74
|
_heartbeatTimeout;
|
|
43
|
-
|
|
44
|
-
|
|
75
|
+
// Incremented on every heartbeat (re)start and on stop, so an in-flight
|
|
76
|
+
// scheduleNextHeartbeat() chain can detect it was superseded and avoid
|
|
77
|
+
// re-arming after the heartbeat was intentionally stopped.
|
|
78
|
+
_heartbeatGeneration = 0;
|
|
79
|
+
// True only while the heartbeat is stopped because the user went idle
|
|
80
|
+
// (ready for takeover). Distinguishes that case from operational stops
|
|
81
|
+
// (lock release, shutdown, branch switch) so only idle-stops auto-resume.
|
|
82
|
+
_heartbeatStoppedForIdle = false;
|
|
83
|
+
// True from the moment the lock is deliberately given up until one is held
|
|
84
|
+
// again. The durable answer to "did we choose to let this go?", which the
|
|
85
|
+
// status cannot give: `checkAndUpdateLockIfPossible`, `switchBranch` and a
|
|
86
|
+
// failed release all reset it to IDLE, and IDLE is what tells the claim path
|
|
87
|
+
// a lock has never been held. Also the only thing that still remembers by the
|
|
88
|
+
// time a grab left over from before the release fails.
|
|
89
|
+
_lockGivenUp = false;
|
|
90
|
+
_closedByServer = false;
|
|
91
|
+
/**
|
|
92
|
+
* True only while the last-chance sync of a session that is ending is in
|
|
93
|
+
* flight. That write is not gated on still holding the lock — see
|
|
94
|
+
* {@link ensureLockForWrite}.
|
|
95
|
+
*/
|
|
96
|
+
_flushingFinalWork = false;
|
|
97
|
+
/** The evaluation overlapping callers join rather than starting their own. */
|
|
98
|
+
_inFlightLockEvaluation;
|
|
99
|
+
_inactivityTimeout;
|
|
100
|
+
_bufferPeriodTimeout;
|
|
101
|
+
_isRestarting = false;
|
|
45
102
|
_tracer;
|
|
103
|
+
_logger;
|
|
104
|
+
_rpcClient;
|
|
105
|
+
_inactivityThresholdMs;
|
|
106
|
+
_lockBufferMs;
|
|
107
|
+
/** In-flight acquisition kicked off by a client attaching, if any. */
|
|
108
|
+
_clientLockAcquisition;
|
|
109
|
+
_lockOperationQueue = new OperationQueue();
|
|
110
|
+
_activityTracker;
|
|
111
|
+
/** Gateway peer id -> when its liveness was last refreshed. */
|
|
112
|
+
_gatewayLivenessByPeerId = new Map();
|
|
113
|
+
_gatewayLivenessTtlMs;
|
|
114
|
+
_gatewayLivenessSweep;
|
|
46
115
|
constructor(config) {
|
|
47
|
-
super();
|
|
48
|
-
this.authToken = config.authToken;
|
|
49
|
-
this.superblocksBaseUrl = config.superblocksBaseUrl;
|
|
116
|
+
super(config.tracer);
|
|
50
117
|
this.applicationId = config.applicationId;
|
|
51
118
|
this.branchName = config.branchName;
|
|
52
119
|
this.lockType = config.lockType;
|
|
120
|
+
this._inactivityThresholdMs = config.inactivityThresholdMs;
|
|
53
121
|
this.heartbeatIntervalMs =
|
|
54
122
|
config.heartbeatIntervalMs || LOCK_HEARTBEAT_INTERVAL_MS;
|
|
55
|
-
this.
|
|
123
|
+
this._lockBufferMs = config.lockBufferMs || LOCK_BUFFER_MS;
|
|
124
|
+
this._gatewayLivenessTtlMs =
|
|
125
|
+
config.gatewayLivenessTtlMs || GATEWAY_LIVENESS_TTL_MS;
|
|
126
|
+
this._rpcClient = config.rpcClient;
|
|
56
127
|
this._tracer = config.tracer;
|
|
128
|
+
this._logger = config.logger;
|
|
129
|
+
// Initialize activity tracker
|
|
130
|
+
this._activityTracker = new ActivityTracker({
|
|
131
|
+
logger: config.logger,
|
|
132
|
+
inactivityThresholdMs: this._inactivityThresholdMs,
|
|
133
|
+
});
|
|
57
134
|
applyErrorHandling(this, {
|
|
58
135
|
acquireLock: { operation: "acquiring lock" },
|
|
59
136
|
releaseLock: { operation: "releasing lock" },
|
|
60
137
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"shutdownAndExit",
|
|
67
|
-
];
|
|
68
|
-
addTracingToMethods(this, methods, this._tracer);
|
|
138
|
+
addTracingToMethods(this, [...TRACED_LOCK_SERVICE_METHODS], this._tracer);
|
|
139
|
+
void this.restartInactivityTimer();
|
|
140
|
+
}
|
|
141
|
+
getLogger() {
|
|
142
|
+
return this._logger;
|
|
69
143
|
}
|
|
70
144
|
setSyncCallback(callback) {
|
|
71
145
|
this.syncCallback = callback;
|
|
72
146
|
}
|
|
147
|
+
setWaitForGenerationCompleteCallback(callback) {
|
|
148
|
+
this.waitForGenerationCompleteCallback = callback;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Called when a gateway peer's liveness expires without a clean close.
|
|
152
|
+
*
|
|
153
|
+
* Half-open TCP leaves the socket map entry and the headless turn binding
|
|
154
|
+
* in place until something else tears them down. The lock already stops
|
|
155
|
+
* protecting the sandbox here; this hook lets the turn router release the
|
|
156
|
+
* same peer so Clark stops targeting a dead gateway.
|
|
157
|
+
*/
|
|
158
|
+
setOnGatewayLivenessLapsed(callback) {
|
|
159
|
+
this.onGatewayLivenessLapsed = callback;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Called when a client attached and somebody else already holds the lock.
|
|
163
|
+
*
|
|
164
|
+
* What a conflict means is the host's to decide, not this service's: a CLI
|
|
165
|
+
* with a person at it can describe the holder and offer a takeover, a
|
|
166
|
+
* sandbox can only write it down. This is the hook that used to be the
|
|
167
|
+
* `ConflictError` catch around the boot-time acquire.
|
|
168
|
+
*/
|
|
169
|
+
setOnLockConflict(callback) {
|
|
170
|
+
this.onLockConflict = callback;
|
|
171
|
+
}
|
|
73
172
|
get status() {
|
|
74
173
|
return this._status;
|
|
75
174
|
}
|
|
76
175
|
set status(status) {
|
|
77
176
|
if (this._status !== status) {
|
|
78
177
|
this._status = status;
|
|
178
|
+
if (status === LockServiceStatus.LOCKED) {
|
|
179
|
+
// Derived from the transition rather than set by each of the three
|
|
180
|
+
// places that can obtain a lock, so it cannot be forgotten in one.
|
|
181
|
+
this._lockGivenUp = false;
|
|
182
|
+
}
|
|
79
183
|
this.emit("statusChange", status);
|
|
80
184
|
}
|
|
81
185
|
}
|
|
@@ -85,110 +189,565 @@ export class LockService extends EventEmitter {
|
|
|
85
189
|
get lockId() {
|
|
86
190
|
return this._lockId;
|
|
87
191
|
}
|
|
192
|
+
get currentBranchName() {
|
|
193
|
+
return this.branchName;
|
|
194
|
+
}
|
|
88
195
|
get connectedUsers() {
|
|
89
|
-
return
|
|
196
|
+
return this._activityTracker.connectedUsers;
|
|
197
|
+
}
|
|
198
|
+
get isRestarting() {
|
|
199
|
+
return this._isRestarting;
|
|
200
|
+
}
|
|
201
|
+
get wasRecentlyActive() {
|
|
202
|
+
return this._activityTracker.wasRecentlyActive;
|
|
203
|
+
}
|
|
204
|
+
get timeSinceLastActivity() {
|
|
205
|
+
return this._activityTracker.timeSinceLastActivity;
|
|
206
|
+
}
|
|
207
|
+
/** Whether any client — a browser editor or a headless gateway peer — is here. */
|
|
208
|
+
get hasAttachedClient() {
|
|
209
|
+
return (this._activityTracker.connectedUsers.length > 0 ||
|
|
210
|
+
this.hasAttachedGatewayPeer);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* A client attached and this pod has never held the lock: take it for them.
|
|
214
|
+
*
|
|
215
|
+
* The lock is a mutual-exclusion marker between clients, not a capability the
|
|
216
|
+
* pod needs in order to serve — no write path on either side gates on holding
|
|
217
|
+
* it. So it belongs to whoever is attached, and a pod that grabs it at boot
|
|
218
|
+
* only invents a state nobody wants: a lock held on behalf of nobody, which
|
|
219
|
+
* then needs a watchdog to clean up. Claiming it on attach makes that state
|
|
220
|
+
* unreachable instead.
|
|
221
|
+
*
|
|
222
|
+
* Deliberately narrower than {@link reclaimLockForActiveClient}: neither a
|
|
223
|
+
* lock this pod handed back nor one it was refused is taken here. A tab left
|
|
224
|
+
* open reconnects its socket on its own, so an attach is no evidence its user
|
|
225
|
+
* came back, and treating it as evidence would hand the app to somebody who
|
|
226
|
+
* walked away (APPS-4840).
|
|
227
|
+
*/
|
|
228
|
+
claimLockForFirstClient() {
|
|
229
|
+
// `IDLE` on its own does not mean "never held". Several paths reset the
|
|
230
|
+
// status to it after a lock we did hold went away — a heartbeat grab that
|
|
231
|
+
// misses, a branch switch, a failed release — so trusting the status alone
|
|
232
|
+
// would turn a lock we handed back into a claimable one, and a tab that
|
|
233
|
+
// reconnects by itself would take the app back from whoever is using it.
|
|
234
|
+
if (this._lockGivenUp) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
this.acquireLockForAttachedClient([LockServiceStatus.IDLE]);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* The client proved it is still there: take the lock if we do not have it.
|
|
241
|
+
*
|
|
242
|
+
* Driven by editor activity pings and by a gateway peer starting a turn —
|
|
243
|
+
* both are a client doing something, which is the evidence a lock we are not
|
|
244
|
+
* holding needs before it is worth asking for again.
|
|
245
|
+
*
|
|
246
|
+
* That includes a lock we were refused. A refusal is what happened to one
|
|
247
|
+
* attempt, not a mode this pod is stuck in: the other session ends, and the
|
|
248
|
+
* user sitting here still wants to edit. Without this a pod that lost one
|
|
249
|
+
* race could never take the lock again for the rest of its life — and since
|
|
250
|
+
* SABS hands running pods to the next caller, it would go on failing for
|
|
251
|
+
* people who had nothing to do with the race.
|
|
252
|
+
*/
|
|
253
|
+
reclaimLockForActiveClient() {
|
|
254
|
+
// Editors only. A gateway's route to the lock is {@link acquireLockForTurn}
|
|
255
|
+
// — an attached gateway peer is a socket, not a turn, and taking the lock
|
|
256
|
+
// for one would hold write access across the gap between prompts.
|
|
257
|
+
if (this._closedByServer ||
|
|
258
|
+
this._activityTracker.connectedUsers.length === 0) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
this.acquireLockForAttachedClient([
|
|
262
|
+
LockServiceStatus.IDLE,
|
|
263
|
+
LockServiceStatus.LOCK_RELEASED,
|
|
264
|
+
LockServiceStatus.FAILED_TO_ACQUIRE_LOCK,
|
|
265
|
+
]);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Fire-and-forget by design: the sockets, pings and branch switches that ask
|
|
269
|
+
* for this have nothing to do with the answer.
|
|
270
|
+
*
|
|
271
|
+
* What keeps a retry from becoming a stream of 409s is the trigger, not the
|
|
272
|
+
* status: the only thing that asks repeatedly is the editor's activity ping,
|
|
273
|
+
* which the pod acts on solely while the user is genuinely active. A blocked
|
|
274
|
+
* session asks about as often as a held lock heartbeats; one nobody is
|
|
275
|
+
* sitting at goes quiet on its own.
|
|
276
|
+
*/
|
|
277
|
+
acquireLockForAttachedClient(from) {
|
|
278
|
+
if (this._clientLockAcquisition || !this.hasAttachedClient) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
if (!from.includes(this._status)) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// Only the first refusal is news. The host's handler can prompt on stdin,
|
|
285
|
+
// so reporting each retry would be a prompt every ping.
|
|
286
|
+
const alreadyRefused = this._status === LockServiceStatus.FAILED_TO_ACQUIRE_LOCK;
|
|
287
|
+
if (!alreadyRefused) {
|
|
288
|
+
this.getLogger().info(`[lock-service] client attached with no lock held, acquiring (appId=${this.applicationId})`);
|
|
289
|
+
}
|
|
290
|
+
// Track the queued operation immediately so a lock-state evaluation cannot
|
|
291
|
+
// slip in before the queue starts it. `acquireLock` tracks the RPC itself as
|
|
292
|
+
// well, which covers callers that do not use this attach path.
|
|
293
|
+
void this.trackAcquisition(this._lockOperationQueue.enqueue(async () => {
|
|
294
|
+
if (!this.hasAttachedClient || !from.includes(this._status)) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
await this.acquireLock();
|
|
298
|
+
})).catch((error) => alreadyRefused ? undefined : this.reportLockConflict(error));
|
|
90
299
|
}
|
|
91
300
|
/**
|
|
92
|
-
*
|
|
301
|
+
* Record an acquisition so anything that settles can see it.
|
|
302
|
+
*
|
|
303
|
+
* Every source goes through here — a client attaching, an activity ping, a
|
|
304
|
+
* force takeover, the reacquire after a heartbeat grab misses, a branch
|
|
305
|
+
* switch. Tracking only the attach path left the others invisible:
|
|
306
|
+
* `isLockedWhenSettled` would answer "no lock" for one that was an rpc away
|
|
307
|
+
* from landing, and `relinquishLock` would find nothing to release and let
|
|
308
|
+
* the lock land on a pod that had already gone.
|
|
309
|
+
*
|
|
310
|
+
* What is stored is a swallowed copy. Callers of
|
|
311
|
+
* {@link settleClientLockAcquisition} only want the state to have stopped
|
|
312
|
+
* moving; a rejection surfacing as theirs would turn a refused lock into a
|
|
313
|
+
* failed disconnect. The promise handed back keeps its rejection for whoever
|
|
314
|
+
* asked for the lock.
|
|
93
315
|
*/
|
|
94
|
-
|
|
316
|
+
trackAcquisition(acquisition) {
|
|
317
|
+
const tracked = acquisition
|
|
318
|
+
.catch(() => undefined)
|
|
319
|
+
.finally(() => {
|
|
320
|
+
if (this._clientLockAcquisition === tracked) {
|
|
321
|
+
this._clientLockAcquisition = undefined;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
this._clientLockAcquisition = tracked;
|
|
325
|
+
return acquisition;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Wait for an acquisition a client attach kicked off, if one is in flight.
|
|
329
|
+
*
|
|
330
|
+
* Anything that decides what to do about the lock has to do this first, or it
|
|
331
|
+
* decides on a half-known state. While the RPC is out `isLocked` is false and
|
|
332
|
+
* `_lockId` is unset, so a disconnect would "release" nothing and the lock
|
|
333
|
+
* would land moments later with nobody left to hold it for — and a branch
|
|
334
|
+
* switch would move on and leave it attached to the branch it came from.
|
|
335
|
+
*
|
|
336
|
+
* Never rejects: the acquisition's own catch has already handled failure.
|
|
337
|
+
*/
|
|
338
|
+
async settleClientLockAcquisition() {
|
|
339
|
+
await this._clientLockAcquisition;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Whether this pod holds the lock after attach and queued turn operations
|
|
343
|
+
* already in flight have settled. The synchronous getter remains the current
|
|
344
|
+
* state for status reporting.
|
|
345
|
+
*/
|
|
346
|
+
async isLockedWhenSettled() {
|
|
347
|
+
await this.settleClientLockAcquisition();
|
|
348
|
+
return await this._lockOperationQueue.enqueue(async () => this.isLocked);
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Nothing is awaiting the acquisition a client triggers, so this is where a
|
|
352
|
+
* failure stops: swallowing it here is what keeps a conflict from surfacing
|
|
353
|
+
* as an unhandled rejection. `acquireLock` has already logged it and moved
|
|
354
|
+
* the status to `FAILED_TO_ACQUIRE_LOCK`; the host is told separately because
|
|
355
|
+
* only it knows whether there is anyone to tell.
|
|
356
|
+
*/
|
|
357
|
+
async reportLockConflict(error) {
|
|
358
|
+
if (!(error instanceof ConflictError) || !this.onLockConflict) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
try {
|
|
362
|
+
await this.onLockConflict(error);
|
|
363
|
+
}
|
|
364
|
+
catch (handlerError) {
|
|
365
|
+
this.getLogger().warn(`[lock-service] onLockConflict threw; continuing (appId=${this.applicationId})`, getErrorMeta(handlerError));
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Serializes branch changes with lock acquisition and handback. Omitting
|
|
370
|
+
* `reacquireLock` preserves the lock state observed inside that operation.
|
|
371
|
+
*/
|
|
372
|
+
async switchBranch(nextBranchName, options) {
|
|
373
|
+
// Git activation runs off the same socket connect that starts an
|
|
374
|
+
// acquisition, so the switch really can arrive while one is out.
|
|
375
|
+
await this.settleClientLockAcquisition();
|
|
376
|
+
await this._lockOperationQueue.enqueue(() => this.switchBranchNow(nextBranchName, options));
|
|
377
|
+
}
|
|
378
|
+
async switchBranchNow(nextBranchName, options) {
|
|
379
|
+
if (this.branchName === nextBranchName) {
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
const previousBranchName = this.branchName;
|
|
383
|
+
const lockIdBeforeSwitch = this._lockId;
|
|
384
|
+
const reacquireLock = options?.reacquireLock ?? this.isLocked;
|
|
385
|
+
if (reacquireLock && this.isLocked && lockIdBeforeSwitch) {
|
|
386
|
+
this.stopHeartbeat();
|
|
387
|
+
try {
|
|
388
|
+
const lockResponse = await this._rpcClient.call(async (client) => {
|
|
389
|
+
return unwrapResponseDto(client.call.v3.lock.transfer({
|
|
390
|
+
applicationId: this.applicationId,
|
|
391
|
+
fromBranchName: previousBranchName,
|
|
392
|
+
toBranchName: nextBranchName,
|
|
393
|
+
lockId: lockIdBeforeSwitch,
|
|
394
|
+
}));
|
|
395
|
+
});
|
|
396
|
+
const transferredLock = lockResponse.appBranchLock[0];
|
|
397
|
+
if (!transferredLock) {
|
|
398
|
+
throw new Error(`[lock-service] lock transfer returned no lock for branch switch '${previousBranchName}' -> '${nextBranchName}'`);
|
|
399
|
+
}
|
|
400
|
+
this.branchName = nextBranchName;
|
|
401
|
+
this._lockId = transferredLock.lockId;
|
|
402
|
+
this.status = LockServiceStatus.LOCKED;
|
|
403
|
+
this.getLogger().info(`[lock-service] atomically transferred lock branch context from '${previousBranchName}' to '${nextBranchName}'`);
|
|
404
|
+
void this.scheduleNextHeartbeat();
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
// Preserve lock liveness when transfer fails: we still hold the original
|
|
409
|
+
// lock and must resume heartbeat to avoid silent lock expiration.
|
|
410
|
+
if (this.isLocked && this._lockId === lockIdBeforeSwitch) {
|
|
411
|
+
this.getLogger().warn(`[lock-service] lock transfer failed, resuming heartbeat on original lock '${lockIdBeforeSwitch}'`);
|
|
412
|
+
void this.scheduleNextHeartbeat();
|
|
413
|
+
}
|
|
414
|
+
throw error;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (this.isLocked) {
|
|
418
|
+
await this.releaseLock();
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
this.stopHeartbeat();
|
|
422
|
+
this._lockId = undefined;
|
|
423
|
+
if (this.status !== LockServiceStatus.FAILED_TO_ACQUIRE_LOCK) {
|
|
424
|
+
this.status = LockServiceStatus.IDLE;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
this.branchName = nextBranchName;
|
|
428
|
+
this.getLogger().info(`[lock-service] switched branch context from '${previousBranchName}' to '${nextBranchName}'`);
|
|
429
|
+
if (reacquireLock) {
|
|
430
|
+
await this.acquireLock();
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Acquire a lock on the specified application and branch.
|
|
435
|
+
*
|
|
436
|
+
* Not `async`: the body has to start and be registered in the same tick, so
|
|
437
|
+
* a caller that immediately settles sees this acquisition rather than
|
|
438
|
+
* missing it by a microtask.
|
|
439
|
+
*/
|
|
440
|
+
acquireLock() {
|
|
441
|
+
return this.trackAcquisition(this.acquireLockImpl());
|
|
442
|
+
}
|
|
443
|
+
async acquireLockImpl() {
|
|
95
444
|
this.status = LockServiceStatus.ACQUIRING;
|
|
96
|
-
|
|
445
|
+
// Stop any existing heartbeat before acquiring a new lock to prevent duplicate heartbeat loops
|
|
446
|
+
this.stopHeartbeat();
|
|
97
447
|
try {
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
448
|
+
const lockResponse = await this._rpcClient.call(async (client) => {
|
|
449
|
+
return unwrapResponseDto(client.call.v3.lock.acquire({
|
|
450
|
+
applicationId: this.applicationId,
|
|
451
|
+
branchName: this.branchName,
|
|
452
|
+
sessionType: this.lockType,
|
|
453
|
+
}));
|
|
454
|
+
});
|
|
455
|
+
// Currently lock response only returns one lock
|
|
104
456
|
if (lockResponse.appBranchLock[0]) {
|
|
105
457
|
const lock = lockResponse.appBranchLock[0];
|
|
106
458
|
this._lockId = lock.lockId;
|
|
459
|
+
this.getLogger().info(`[lock-service] lock acquired: ${this._lockId}`);
|
|
107
460
|
this.status = LockServiceStatus.LOCKED;
|
|
461
|
+
this._heartbeatStoppedForIdle = false;
|
|
108
462
|
this.emit("lockAcquired", this._lockId);
|
|
109
|
-
this.scheduleNextHeartbeat();
|
|
463
|
+
void this.scheduleNextHeartbeat();
|
|
110
464
|
return;
|
|
111
465
|
}
|
|
466
|
+
// A response carrying no lock is not success. Falling through would leave
|
|
467
|
+
// the status in ACQUIRING, which is what the catch below exists to avoid.
|
|
468
|
+
throw new Error("lock acquire returned no lock");
|
|
112
469
|
}
|
|
113
470
|
catch (error) {
|
|
471
|
+
// Whatever went wrong, this attempt is over and the lock is not held.
|
|
472
|
+
// Leaving ACQUIRING behind would be a lie the retry paths cannot see past:
|
|
473
|
+
// it is in neither the claim nor the reclaim set, so a single transient
|
|
474
|
+
// failure would stop this pod ever taking the lock again.
|
|
475
|
+
this.status = LockServiceStatus.FAILED_TO_ACQUIRE_LOCK;
|
|
114
476
|
if (error instanceof ConflictError) {
|
|
115
|
-
|
|
477
|
+
this.getLogger().error(`[lock-service] ${error.message}`);
|
|
116
478
|
this.emit("statusChange", LockServiceStatus.FAILED_TO_ACQUIRE_LOCK);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
479
|
+
// Deliberately no further teardown. The lock was never held, so there is
|
|
480
|
+
// nothing to release, and the `shutdown` that used to be here only
|
|
481
|
+
// closed the rpc client — leaving a pod bound to its port with no way
|
|
482
|
+
// to reach the server, which is the zombie state. The error goes to the
|
|
483
|
+
// caller, which owns what happens to the process.
|
|
484
|
+
throw error;
|
|
120
485
|
}
|
|
121
486
|
else {
|
|
122
487
|
throw new Error(`${error}. Please try again later.`);
|
|
123
488
|
}
|
|
124
489
|
}
|
|
125
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Take write access for a turn that is about to start.
|
|
493
|
+
*
|
|
494
|
+
* The lock is permission to write for one turn, not a lease on the session: a
|
|
495
|
+
* headless turn takes it on the way in and hands it back when it ends, so the
|
|
496
|
+
* app sits unlocked between prompts and a person can open it in the editor.
|
|
497
|
+
*
|
|
498
|
+
* Deliberately not routed through {@link claimLockForFirstClient} or
|
|
499
|
+
* {@link reclaimLockForActiveClient}. Those weigh up whether a signal is
|
|
500
|
+
* evidence of a client that wants the lock; a turn starting is not evidence
|
|
501
|
+
* of that, it *is* that, so it asks directly and a lock we handed back
|
|
502
|
+
* earlier is taken again without ceremony.
|
|
503
|
+
*
|
|
504
|
+
* Unlike an attach, this is awaited and its failure is the caller's: a turn
|
|
505
|
+
* that cannot write must fail before routing is bound, carrying the server's
|
|
506
|
+
* own reason. Failing does not take the pod down — the lock is per app+branch
|
|
507
|
+
* while a pod is per live edit, so somebody editing in the browser says
|
|
508
|
+
* nothing about whether this pod can serve the turn after them.
|
|
509
|
+
*/
|
|
510
|
+
async acquireLockForTurn() {
|
|
511
|
+
await this.settleClientLockAcquisition();
|
|
512
|
+
await this._lockOperationQueue.enqueue(async () => {
|
|
513
|
+
if (!this.isLocked) {
|
|
514
|
+
await this.acquireLock();
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Hand back the write access a turn took, once that turn has finished.
|
|
520
|
+
*
|
|
521
|
+
* The wait belongs here rather than in the callers. A turn ends in more than
|
|
522
|
+
* one way — the gateway releases it, its socket drops, its liveness lapses —
|
|
523
|
+
* and only the first of those arrives with the generation already complete.
|
|
524
|
+
* The other two reach this while Clark may still be writing, and handing the
|
|
525
|
+
* lock back there gives write access away mid-generation.
|
|
526
|
+
*
|
|
527
|
+
* Before the queue, never inside it, for the reason spelled out on
|
|
528
|
+
* {@link handBackTurnLockWhenGenerationSettles}: that queue serialises the
|
|
529
|
+
* handback, branch switches and the next turn's acquisition, so a wait
|
|
530
|
+
* inside it lets one hung turn stall all of them.
|
|
531
|
+
*
|
|
532
|
+
* `isStillNeeded` is re-read after that wait, because waiting is exactly
|
|
533
|
+
* what makes the caller's decision stale: a replacement gateway can attach
|
|
534
|
+
* and take a turn while the old one's generation is finishing, and releasing
|
|
535
|
+
* then would pull write access out from under it. The caller owns the
|
|
536
|
+
* question — this cannot ask "is a gateway attached?" itself, since the
|
|
537
|
+
* explicit `editor.releaseTurnLock` path runs with one attached by
|
|
538
|
+
* definition.
|
|
539
|
+
*/
|
|
540
|
+
async relinquishLockForTurn(isStillNeeded) {
|
|
541
|
+
await this.waitForGenerationCompleteCallback?.();
|
|
542
|
+
await this._lockOperationQueue.enqueue(async () => {
|
|
543
|
+
if (!this.isLocked ||
|
|
544
|
+
this._activityTracker.connectedUsers.length > 0 ||
|
|
545
|
+
isStillNeeded?.()) {
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
await this.relinquishLockNow(() => this._activityTracker.connectedUsers.length > 0 ||
|
|
549
|
+
(isStillNeeded?.() ?? false));
|
|
550
|
+
});
|
|
551
|
+
}
|
|
126
552
|
/**
|
|
127
553
|
* Release the currently held lock
|
|
128
554
|
*/
|
|
129
555
|
async releaseLock() {
|
|
130
|
-
const logger = getLogger();
|
|
131
556
|
if (this._status !== LockServiceStatus.LOCKED) {
|
|
132
557
|
return false;
|
|
133
558
|
}
|
|
559
|
+
this._lockGivenUp = true;
|
|
134
560
|
this.status = LockServiceStatus.RELEASING;
|
|
135
561
|
this.emit("statusChange", LockServiceStatus.RELEASING);
|
|
562
|
+
// Stop heartbeat immediately and clear local lock id first to prevent any
|
|
563
|
+
// in-flight grab calls from using a stale lock id during branch switching.
|
|
564
|
+
this.stopHeartbeat();
|
|
565
|
+
const lockIdToRelease = this._lockId;
|
|
566
|
+
this._lockId = undefined;
|
|
136
567
|
try {
|
|
568
|
+
if (!lockIdToRelease) {
|
|
569
|
+
this.status = LockServiceStatus.LOCK_RELEASED;
|
|
570
|
+
this.emit("statusChange", LockServiceStatus.LOCK_RELEASED);
|
|
571
|
+
return true;
|
|
572
|
+
}
|
|
137
573
|
// Try to release the lock when this class is destructed
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
574
|
+
await this._rpcClient.call(async (client) => {
|
|
575
|
+
await unwrapResponseDto(client.call.v3.lock.release({
|
|
576
|
+
applicationId: this.applicationId,
|
|
577
|
+
branchName: this.branchName,
|
|
578
|
+
lockId: lockIdToRelease,
|
|
579
|
+
}));
|
|
580
|
+
});
|
|
145
581
|
this.status = LockServiceStatus.LOCK_RELEASED;
|
|
146
582
|
this.emit("statusChange", LockServiceStatus.LOCK_RELEASED);
|
|
147
|
-
|
|
583
|
+
this.getLogger().info("[lock-service] lock released");
|
|
148
584
|
return true;
|
|
149
585
|
}
|
|
150
586
|
catch (error) {
|
|
587
|
+
if (error instanceof NotFoundError) {
|
|
588
|
+
this.status = LockServiceStatus.LOCK_RELEASED;
|
|
589
|
+
this.emit("statusChange", LockServiceStatus.LOCK_RELEASED);
|
|
590
|
+
this.getLogger().warn("[lock-service] lock already released on server");
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
151
593
|
this.status = LockServiceStatus.IDLE;
|
|
152
|
-
|
|
594
|
+
this.getLogger().error("[lock-service] error releasing lock", getErrorMeta(error));
|
|
153
595
|
throw error;
|
|
154
596
|
}
|
|
155
597
|
finally {
|
|
156
598
|
this.stopHeartbeat();
|
|
599
|
+
// Clear any pending buffer or inactivity timeouts since lock is being released
|
|
600
|
+
if (this._bufferPeriodTimeout) {
|
|
601
|
+
clearTimeout(this._bufferPeriodTimeout);
|
|
602
|
+
this._bufferPeriodTimeout = undefined;
|
|
603
|
+
}
|
|
604
|
+
if (this._inactivityTimeout) {
|
|
605
|
+
clearTimeout(this._inactivityTimeout);
|
|
606
|
+
this._inactivityTimeout = undefined;
|
|
607
|
+
}
|
|
157
608
|
}
|
|
158
609
|
}
|
|
159
|
-
async
|
|
160
|
-
const logger = getLogger();
|
|
610
|
+
async grabLockImpl() {
|
|
161
611
|
if (this._lockId) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const response = await unwrapResponseDto(rpcClient.call.v3.lock.grab({
|
|
612
|
+
const lockResponse = await this._rpcClient.call(async (client) => {
|
|
613
|
+
return unwrapResponseDto(client.call.v3.lock.grab({
|
|
165
614
|
applicationId: this.applicationId,
|
|
166
615
|
branchName: this.branchName,
|
|
167
616
|
lockId: this._lockId,
|
|
168
617
|
}));
|
|
618
|
+
});
|
|
619
|
+
return lockResponse;
|
|
620
|
+
}
|
|
621
|
+
return null;
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Inspect lock information for the current application and branch
|
|
625
|
+
*/
|
|
626
|
+
async inspectLock() {
|
|
627
|
+
const lockInfo = await this._rpcClient.call(async (client) => {
|
|
628
|
+
return unwrapResponseDto(client.call.v3.lock.inspect({
|
|
629
|
+
applicationId: this.applicationId,
|
|
630
|
+
branchName: this.branchName,
|
|
631
|
+
}));
|
|
632
|
+
});
|
|
633
|
+
return lockInfo;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* Force takeover of the lock from another user (only allowed when user is inactive)
|
|
637
|
+
*/
|
|
638
|
+
forceTakeover() {
|
|
639
|
+
return this.trackAcquisition(this.forceTakeoverImpl());
|
|
640
|
+
}
|
|
641
|
+
async forceTakeoverImpl() {
|
|
642
|
+
this.status = LockServiceStatus.ACQUIRING;
|
|
643
|
+
try {
|
|
644
|
+
const lockResponse = await this._rpcClient.call(async (client) => {
|
|
645
|
+
return unwrapResponseDto(client.call.v3.lock.forceTake({
|
|
646
|
+
applicationId: this.applicationId,
|
|
647
|
+
branchName: this.branchName,
|
|
648
|
+
sessionType: this.lockType,
|
|
649
|
+
}));
|
|
650
|
+
});
|
|
651
|
+
// Currently lock response only returns one lock
|
|
652
|
+
if (lockResponse.appBranchLock[0]) {
|
|
653
|
+
const lock = lockResponse.appBranchLock[0];
|
|
654
|
+
this._lockId = lock.lockId;
|
|
655
|
+
this.getLogger().info(`[lock-service] lock acquired via force takeover: ${this._lockId}`);
|
|
656
|
+
this.status = LockServiceStatus.LOCKED;
|
|
657
|
+
this.emit("lockAcquired", this._lockId);
|
|
658
|
+
void this.scheduleNextHeartbeat();
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
// As in `acquireLock`: a response carrying no lock is not success.
|
|
662
|
+
// Falling through would leave the status in ACQUIRING, which belongs to
|
|
663
|
+
// neither the claim set nor the reclaim set — so nothing would ever try
|
|
664
|
+
// again and the pod would sit there unable to edit.
|
|
665
|
+
throw new Error("lock force takeover returned no lock");
|
|
666
|
+
}
|
|
667
|
+
catch (error) {
|
|
668
|
+
this.getLogger().error(`[lock-service] ${getErrorMeta(error).error.message}`);
|
|
669
|
+
this.status = LockServiceStatus.FAILED_TO_ACQUIRE_LOCK;
|
|
670
|
+
throw error;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
async checkAndUpdateLockIfPossible() {
|
|
674
|
+
const baseRetryMs = 1000;
|
|
675
|
+
const maxAttempts = 5;
|
|
676
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
677
|
+
try {
|
|
678
|
+
const response = await this.grabLockImpl();
|
|
169
679
|
if (response?.appBranchLock?.[0]) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
680
|
+
const returnedLock = response.appBranchLock[0];
|
|
681
|
+
if (returnedLock.sessionType &&
|
|
682
|
+
returnedLock.sessionType !== this.lockType) {
|
|
683
|
+
this.getLogger().warn(`[lock-service] lock fallback returned mismatched session type (${returnedLock.sessionType}) for expected ${this.lockType}; ignoring fallback lock`);
|
|
684
|
+
throw new NotFoundError("Lock not found");
|
|
685
|
+
}
|
|
686
|
+
if (returnedLock.lockId && returnedLock.lockId !== this._lockId) {
|
|
687
|
+
this.getLogger().info(`[lock-service] lock ID changed from ${this._lockId} to ${returnedLock.lockId} (cross-branch transfer)`);
|
|
688
|
+
this._lockId = returnedLock.lockId;
|
|
689
|
+
}
|
|
690
|
+
this.getLogger().info(`[lock-service] lock is still valid with expiration timestamp: ${returnedLock.expirationTimestamp}`);
|
|
173
691
|
return true;
|
|
174
692
|
}
|
|
175
693
|
}
|
|
176
694
|
catch (error) {
|
|
177
|
-
if (error instanceof
|
|
178
|
-
|
|
179
|
-
this.
|
|
180
|
-
this.
|
|
181
|
-
|
|
695
|
+
if (error instanceof NotFoundError) {
|
|
696
|
+
this.getLogger().warn("[lock-service] lock not found during heartbeat grab, attempting to reacquire before shutdown");
|
|
697
|
+
this.stopHeartbeat();
|
|
698
|
+
this._lockId = undefined;
|
|
699
|
+
this.status = LockServiceStatus.IDLE;
|
|
700
|
+
// Only take it back if we still wanted it, and only for somebody.
|
|
701
|
+
//
|
|
702
|
+
// A grab left over from before a release lands after the lock is
|
|
703
|
+
// already gone on purpose — acquiring fires a heartbeat immediately,
|
|
704
|
+
// so that overlap is the norm on the attach-and-drop path rather than
|
|
705
|
+
// a rare coincidence. Reacquiring there takes back a lock we chose to
|
|
706
|
+
// give up, either for nobody at all or for a tab that has merely
|
|
707
|
+
// reconnected, which is the app being held away from whoever is
|
|
708
|
+
// actually using it (APPS-4840). A released lock is taken back by an
|
|
709
|
+
// activity ping, never from here.
|
|
710
|
+
if (this._lockGivenUp || !this.hasAttachedClient) {
|
|
711
|
+
this.getLogger().info(`[lock-service] lock lost during heartbeat grab with nothing to take it back for, leaving it (appId=${this.applicationId})`);
|
|
712
|
+
return false;
|
|
713
|
+
}
|
|
714
|
+
try {
|
|
715
|
+
await this.acquireLock();
|
|
716
|
+
this.getLogger().info("[lock-service] lock reacquired after heartbeat grab miss");
|
|
717
|
+
return true;
|
|
718
|
+
}
|
|
719
|
+
catch (reacquireError) {
|
|
720
|
+
if (reacquireError instanceof ConflictError) {
|
|
721
|
+
const message = "⚠️ Edit access lost – another user has taken over this branch. Shutting down server.";
|
|
722
|
+
if (process.env.SUPERBLOCKS_VSCODE === "true") {
|
|
723
|
+
this.getLogger().error(`clierr: ${JSON.stringify({ message })}`);
|
|
724
|
+
}
|
|
725
|
+
else {
|
|
726
|
+
this.getLogger().error(message);
|
|
727
|
+
}
|
|
728
|
+
this.emit("statusChange", LockServiceStatus.LOCK_INVALID);
|
|
729
|
+
this.status = LockServiceStatus.LOCK_INVALID;
|
|
730
|
+
await this.shutdownAndExit();
|
|
731
|
+
return false;
|
|
732
|
+
}
|
|
733
|
+
if (attempt < maxAttempts) {
|
|
734
|
+
const delayMs = baseRetryMs * 2 ** (attempt - 1);
|
|
735
|
+
this.getLogger().warn(`[lock-service] lock reacquire attempt ${attempt} failed with error: ${getErrorMeta(reacquireError).error.message}, retrying in ${delayMs}ms...`);
|
|
736
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
737
|
+
continue;
|
|
738
|
+
}
|
|
739
|
+
throw reacquireError;
|
|
740
|
+
}
|
|
182
741
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
this.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
logger.error("[lock-service] error checking and updating lock", getErrorMeta(error));
|
|
742
|
+
if (attempt < maxAttempts) {
|
|
743
|
+
const delayMs = baseRetryMs * 2 ** (attempt - 1);
|
|
744
|
+
this.getLogger().warn(`[lock-service] Attempt ${attempt} failed with error: ${getErrorMeta(error).error.message}, retrying in ${delayMs}ms...`);
|
|
745
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
746
|
+
continue;
|
|
191
747
|
}
|
|
748
|
+
this.getLogger().error("[lock-service] error checking and updating lock", getErrorMeta(error));
|
|
749
|
+
this.status = LockServiceStatus.IDLE;
|
|
750
|
+
this.stopHeartbeat();
|
|
192
751
|
throw error;
|
|
193
752
|
}
|
|
194
753
|
}
|
|
@@ -197,70 +756,309 @@ export class LockService extends EventEmitter {
|
|
|
197
756
|
return false;
|
|
198
757
|
}
|
|
199
758
|
/**
|
|
200
|
-
*
|
|
201
|
-
*
|
|
759
|
+
* Make sure this pod holds the lock a write is about to need.
|
|
760
|
+
*
|
|
761
|
+
* The write is itself the demand for the lock, which is what separates this
|
|
762
|
+
* from the heartbeat's check above. That one asks whether a lock we already
|
|
763
|
+
* hold is still there, and answers for a lock id; this one is asked before a
|
|
764
|
+
* sync, when there may be no lock at all.
|
|
765
|
+
*
|
|
766
|
+
* The distinction is load-bearing at boot. Nothing acquires the lock at
|
|
767
|
+
* startup any more — a client attaching is what claims it — but the dev
|
|
768
|
+
* server still uploads the user's local files before any editor connects.
|
|
769
|
+
* With no lock id {@link checkAndUpdateLockIfPossible} skips the grab
|
|
770
|
+
* entirely and reports false without ever asking the server, so routing that
|
|
771
|
+
* upload through it failed the sync and took the dev server down with it.
|
|
772
|
+
*
|
|
773
|
+
* A lock this session handed back is still not taken back here: a write
|
|
774
|
+
* queued before the handback belongs to the session that ended.
|
|
202
775
|
*/
|
|
203
|
-
async
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
//
|
|
208
|
-
|
|
776
|
+
async ensureLockForWrite() {
|
|
777
|
+
await this.settleClientLockAcquisition();
|
|
778
|
+
if (this._lockId) {
|
|
779
|
+
const held = await this.checkAndUpdateLockIfPossible();
|
|
780
|
+
// The last write of a session that is ending is not gated on still
|
|
781
|
+
// holding the lock. By the time the server closes a session the other
|
|
782
|
+
// one has usually taken the lock already, so the grab above misses and
|
|
783
|
+
// the answer is "no" — which would drop whatever the editor had not
|
|
784
|
+
// synced yet, and make the flush that runs at exactly this moment dead
|
|
785
|
+
// code, since it could never succeed.
|
|
786
|
+
//
|
|
787
|
+
// Writing anyway is safe in the way that matters: the lock is a
|
|
788
|
+
// mutual-exclusion marker between clients, not something the server
|
|
789
|
+
// enforces on writes, and the session being handed to on a local<->cloud
|
|
790
|
+
// switch belongs to the same user whose edits these are.
|
|
791
|
+
return held || this._flushingFinalWork;
|
|
209
792
|
}
|
|
210
|
-
|
|
211
|
-
|
|
793
|
+
if (this._lockGivenUp) {
|
|
794
|
+
this.getLogger().info(`[lock-service] write wants a lock this session handed back, leaving it (appId=${this.applicationId})`);
|
|
795
|
+
return false;
|
|
796
|
+
}
|
|
797
|
+
// Read before the attempt, because a refusal is what moves the status
|
|
798
|
+
// there: only the first one is news.
|
|
799
|
+
const alreadyRefused = this._status === LockServiceStatus.FAILED_TO_ACQUIRE_LOCK;
|
|
800
|
+
try {
|
|
801
|
+
await this.trackAcquisition(this._lockOperationQueue.enqueue(async () => {
|
|
802
|
+
// Re-read inside the queue: an attach or a handback can have landed
|
|
803
|
+
// while this waited its turn.
|
|
804
|
+
if (this._lockId || this._lockGivenUp) {
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
807
|
+
await this.acquireLock();
|
|
808
|
+
}));
|
|
809
|
+
}
|
|
810
|
+
catch (error) {
|
|
811
|
+
// A refusal is the other session's answer, not a failure of this write.
|
|
812
|
+
if (!(error instanceof ConflictError)) {
|
|
813
|
+
throw error;
|
|
814
|
+
}
|
|
815
|
+
// The host is told because only it knows whether there is anyone to
|
|
816
|
+
// tell — and told once. Its handler can prompt on stdin or hand the
|
|
817
|
+
// session to the VS Code extension, so reporting every autosave that
|
|
818
|
+
// runs into the same held lock is a prompt per save.
|
|
819
|
+
if (!alreadyRefused) {
|
|
820
|
+
await this.reportLockConflict(error);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
// Not `false` on the conflict path: that handler can take the lock, as the
|
|
824
|
+
// CLI's does for one whose owner has gone inactive. Whether this write may
|
|
825
|
+
// go ahead is whether the lock is held now, however it was come by.
|
|
826
|
+
//
|
|
827
|
+
// Arming applies to both outcomes for the same reason: a lock taken here
|
|
828
|
+
// was taken for a write, not for a client, and nothing else will ask
|
|
829
|
+
// whether it has gone idle.
|
|
830
|
+
this.ensureIdleEvaluationArmed();
|
|
831
|
+
return this.isLocked;
|
|
832
|
+
}
|
|
833
|
+
/**
|
|
834
|
+
* Flush what this client left behind and hand the lock back.
|
|
835
|
+
*
|
|
836
|
+
* The only way to give the lock up, and the whole of what this service does
|
|
837
|
+
* about a session ending. Whether the process then stops is the caller's
|
|
838
|
+
* business and this cannot tell: the same call serves a tab closing on a
|
|
839
|
+
* sandbox that keeps serving, a `superblocks dev` the user is quitting, and
|
|
840
|
+
* every exit path in `dev()`. So it says nothing about the server's fate —
|
|
841
|
+
* that used to be `shutdown()`'s job, and a lock service asserting a process
|
|
842
|
+
* was exiting is precisely the tangle that made a lock release look like a
|
|
843
|
+
* teardown.
|
|
844
|
+
*
|
|
845
|
+
* Releasing the lock and stopping the dev server used to be one action, so a
|
|
846
|
+
* client going away took the sandbox with it. On the cloud path it did not
|
|
847
|
+
* even stop — it closed the rpc client and returned, leaving a pod still
|
|
848
|
+
* bound to its port with no lock, no heartbeat and nothing behind it: healthy
|
|
849
|
+
* to every probe and unable to do anything. SABS hands such a pod straight
|
|
850
|
+
* back to the next caller, whose requests then go nowhere.
|
|
851
|
+
*
|
|
852
|
+
* Where the pod does stay up, reopening is cheap for the same reason keeping
|
|
853
|
+
* it was worth it: Vite is still running, packages are installed, files are
|
|
854
|
+
* downloaded. A returning editor reacquires through
|
|
855
|
+
* {@link restartInactivityTimer}.
|
|
856
|
+
*/
|
|
857
|
+
async relinquishLock() {
|
|
858
|
+
// Settle first, for the same reason `switchBranch` and `evaluateLockState`
|
|
859
|
+
// do. The attach-time acquisition is awaited by nobody, so an exit can land
|
|
860
|
+
// on top of one: `releaseLock` no-ops while the status is ACQUIRING, the
|
|
861
|
+
// pod leaves having released nothing, and the lock the acquire then lands
|
|
862
|
+
// is held until the server-side TTL - blocking the replacement sandbox,
|
|
863
|
+
// which is the whole reason the exit paths release promptly at all.
|
|
864
|
+
await this.settleClientLockAcquisition();
|
|
865
|
+
await this._lockOperationQueue.enqueue(() => this.relinquishLockNow());
|
|
866
|
+
}
|
|
867
|
+
async relinquishLockNow(shouldRetainLock) {
|
|
868
|
+
await this.flushPendingWork("handing the lock back");
|
|
869
|
+
if (shouldRetainLock?.()) {
|
|
870
|
+
return;
|
|
212
871
|
}
|
|
872
|
+
const released = await this.releaseLock();
|
|
873
|
+
// `releaseLock` answers false without doing anything when there was no lock
|
|
874
|
+
// to give back. Saying "handed back" regardless tells oncall the
|
|
875
|
+
// server-side lock is clear when it may not be, which is the wrong
|
|
876
|
+
// direction to send someone chasing a stuck sandbox.
|
|
877
|
+
this.getLogger().info(released
|
|
878
|
+
? `[lock-service] lock handed back (appId=${this.applicationId})`
|
|
879
|
+
: `[lock-service] no lock to hand back (status=${this._status}, appId=${this.applicationId})`);
|
|
880
|
+
}
|
|
881
|
+
/**
|
|
882
|
+
* The server closed this session: tell the editor, flush, and stop
|
|
883
|
+
* heartbeating — but do not release.
|
|
884
|
+
*
|
|
885
|
+
* The lock is already gone. `/_sb_disconnect` is the server saying it has
|
|
886
|
+
* taken it, typically to hand the app to a session moving the other way
|
|
887
|
+
* across local↔cloud, so releasing from here would give back something that
|
|
888
|
+
* is not ours; on a switch it belongs to whoever is taking over. What is
|
|
889
|
+
* still ours is the heartbeat, which would otherwise keep refreshing a lock
|
|
890
|
+
* the server reassigned.
|
|
891
|
+
*
|
|
892
|
+
* The editor needs both halves of {@link EventMap.closedByServer}: it has to
|
|
893
|
+
* distinguish "the server closed you" from a socket dropping, and a switch
|
|
894
|
+
* from an ending.
|
|
895
|
+
*/
|
|
896
|
+
async notifyClosedByServer({ switchingTo, initiatedByEmail, }) {
|
|
897
|
+
this.emit("closedByServer", { initiatedByEmail, switchingTo });
|
|
898
|
+
this._closedByServer = true;
|
|
899
|
+
// Record that the lock is no longer ours before anything can act on it
|
|
900
|
+
// being missing. This is the same fact `releaseLock` records, arrived at
|
|
901
|
+
// from the other direction — there we gave it up, here it was taken — and
|
|
902
|
+
// the three places that ask are already written against it: a bare attach
|
|
903
|
+
// must not claim, a grab that misses must not reacquire, and a rejected
|
|
904
|
+
// heartbeat must not be read as losing a lock we still wanted.
|
|
905
|
+
//
|
|
906
|
+
// Without it, each of those fights the session taking over on a local↔cloud
|
|
907
|
+
// switch: the reacquire takes the app straight back off them, and the
|
|
908
|
+
// heartbeat path ends this process mid-`/_sb_disconnect`, before the
|
|
909
|
+
// response is sent. Stopping the heartbeat below is not enough on its own
|
|
910
|
+
// — a grab already in flight is not cancelled by clearing a timer.
|
|
911
|
+
this._lockGivenUp = true;
|
|
912
|
+
// Before the flush, not after it. Every refresh from here on is against
|
|
913
|
+
// something we do not hold, and the flush can take as long as the unsynced
|
|
914
|
+
// work does — which is the window one of those refreshes comes back
|
|
915
|
+
// rejected in.
|
|
213
916
|
this.stopHeartbeat();
|
|
214
|
-
|
|
215
|
-
|
|
917
|
+
this.clearGatewayLivenessSweep();
|
|
918
|
+
await this.flushPendingWork("the server closed this session");
|
|
919
|
+
}
|
|
920
|
+
/**
|
|
921
|
+
* Push whatever the editor has not synced yet.
|
|
922
|
+
*
|
|
923
|
+
* Both ways of giving a session up run this first, and neither can be held up
|
|
924
|
+
* by it: the caller is either handing the lock to the next client or on its
|
|
925
|
+
* way out of the process, and a sync that fails is strictly better than one
|
|
926
|
+
* that blocks the handover. An unheld lock means nothing to flush — the files
|
|
927
|
+
* belong to whoever holds it now.
|
|
928
|
+
*/
|
|
929
|
+
async flushPendingWork(reason) {
|
|
930
|
+
if (!this.syncCallback || !this.isLocked) {
|
|
931
|
+
return;
|
|
932
|
+
}
|
|
933
|
+
this.getLogger().info(`[lock-service] performing a final sync before ${reason}`);
|
|
934
|
+
// Tells {@link ensureLockForWrite} that the upload it is about to gate is
|
|
935
|
+
// this flush, which writes on the way out whether or not the lock is still
|
|
936
|
+
// ours.
|
|
937
|
+
this._flushingFinalWork = true;
|
|
938
|
+
try {
|
|
939
|
+
await this.syncCallback();
|
|
940
|
+
}
|
|
941
|
+
catch (error) {
|
|
942
|
+
this.getLogger().error(`[lock-service] sync failed before ${reason}, continuing anyway`, getErrorMeta(error));
|
|
943
|
+
}
|
|
944
|
+
finally {
|
|
945
|
+
this._flushingFinalWork = false;
|
|
216
946
|
}
|
|
217
|
-
await this.closeRpcClient();
|
|
218
|
-
logger.info("[lock-service] shutting down and exiting dev server");
|
|
219
947
|
}
|
|
220
948
|
/**
|
|
221
|
-
*
|
|
949
|
+
* Hand the lock back and end the process.
|
|
950
|
+
*
|
|
951
|
+
* The only method here that ends anything, and it exists for the four callers
|
|
952
|
+
* inside this service that have already decided the pod cannot continue: a
|
|
953
|
+
* heartbeat that failed, a reacquire lost to another user, and the two
|
|
954
|
+
* {@link LockType.LOCAL} disconnect branches, where the dev server is the
|
|
955
|
+
* user's foreground process and they expect their terminal back.
|
|
956
|
+
*
|
|
957
|
+
* Callers outside this service drive {@link relinquishLock} and own their own
|
|
958
|
+
* exit. That is not a style preference: `process.exit` is synchronous, so
|
|
959
|
+
* folding it in here makes everything a caller sequences after it dead code —
|
|
960
|
+
* which is exactly how the fatal-exit paths in `dev()` came to skip their
|
|
961
|
+
* telemetry flush on every pod that had a lock service.
|
|
962
|
+
*
|
|
963
|
+
* The release is best effort and the exit is not. A lock left held TTL-expires
|
|
964
|
+
* in two minutes, the same as any pod that dies; a process that fails to exit
|
|
965
|
+
* is a zombie until something reaps it.
|
|
222
966
|
*/
|
|
223
967
|
async shutdownAndExit() {
|
|
224
|
-
|
|
225
|
-
|
|
968
|
+
try {
|
|
969
|
+
await this.relinquishLock();
|
|
970
|
+
}
|
|
971
|
+
catch (error) {
|
|
972
|
+
this.getLogger().error("[lock-service] failed to hand the lock back, exiting anyway", getErrorMeta(error));
|
|
973
|
+
}
|
|
974
|
+
finally {
|
|
975
|
+
process.exit(1);
|
|
976
|
+
}
|
|
226
977
|
}
|
|
227
978
|
/**
|
|
228
|
-
* Add a connected user to the
|
|
979
|
+
* Add a connected user to the activity tracker.
|
|
229
980
|
*/
|
|
230
981
|
addConnectedPeerIdToUser(userId, peerId) {
|
|
231
|
-
|
|
232
|
-
|
|
982
|
+
this._activityTracker.addConnectedPeerIdToUser(userId, peerId);
|
|
983
|
+
this._isRestarting = false;
|
|
984
|
+
this.claimLockForFirstClient();
|
|
985
|
+
if (this._bufferPeriodTimeout) {
|
|
986
|
+
clearTimeout(this._bufferPeriodTimeout);
|
|
987
|
+
this._bufferPeriodTimeout = undefined;
|
|
988
|
+
this.getLogger().info("[lock-service] user reconnected, cleared pending buffer period timeout");
|
|
233
989
|
}
|
|
234
|
-
|
|
235
|
-
|
|
990
|
+
this.ensureIdleEvaluationArmed();
|
|
991
|
+
}
|
|
992
|
+
/**
|
|
993
|
+
* Make sure something is still due to ask whether this lock is idle.
|
|
994
|
+
*
|
|
995
|
+
* The inactivity timer is one-shot, and the evaluation it fires returns
|
|
996
|
+
* early on a service that has never held a lock without arming another. So
|
|
997
|
+
* any path that ends up holding one for something other than an attached
|
|
998
|
+
* client has to put the question back on the clock, or the lock is refreshed
|
|
999
|
+
* by the heartbeat for a client that never arrives.
|
|
1000
|
+
*/
|
|
1001
|
+
ensureIdleEvaluationArmed() {
|
|
1002
|
+
const alreadyConcludedIdle = this._activityTracker.isReadyForTakeover || this._heartbeatStoppedForIdle;
|
|
1003
|
+
if (this._inactivityTimeout || alreadyConcludedIdle) {
|
|
1004
|
+
return;
|
|
236
1005
|
}
|
|
237
|
-
|
|
238
|
-
|
|
1006
|
+
this.scheduleInactivityEvaluation();
|
|
1007
|
+
}
|
|
1008
|
+
evaluateLockStateInBackground(occasion) {
|
|
1009
|
+
void this.evaluateLockState().catch((error) => {
|
|
1010
|
+
this.getLogger().error(`[lock-service] failed to evaluate lock state after ${occasion} (lockId=${this._lockId}, appId=${this.applicationId})`, getErrorMeta(error));
|
|
1011
|
+
this.ensureIdleEvaluationArmed();
|
|
1012
|
+
});
|
|
239
1013
|
}
|
|
240
1014
|
/**
|
|
241
|
-
* Remove a connected user from the
|
|
1015
|
+
* Remove a connected user from the activity tracker.
|
|
242
1016
|
*/
|
|
243
1017
|
removeConnectedPeerIdFromUser(userId, peerId) {
|
|
244
|
-
|
|
245
|
-
if (this.
|
|
246
|
-
this.
|
|
247
|
-
|
|
248
|
-
}
|
|
249
|
-
if (this._connectedUserPeerIdsMap.get(userId)?.size === 0) {
|
|
250
|
-
this._connectedUserPeerIdsMap.delete(userId);
|
|
251
|
-
logger.debug(`[lock-service] removed connected user ${userId}`);
|
|
1018
|
+
this._activityTracker.removeConnectedPeerIdFromUser(userId, peerId);
|
|
1019
|
+
if (this._activityTracker.isDisconnected) {
|
|
1020
|
+
this.getLogger().info("[lock-service] all users disconnected, evaluating lock state");
|
|
1021
|
+
this.evaluateLockStateInBackground("the last editor disconnected");
|
|
252
1022
|
}
|
|
253
1023
|
}
|
|
254
1024
|
async scheduleNextHeartbeat() {
|
|
255
|
-
const
|
|
1025
|
+
const generation = ++this._heartbeatGeneration;
|
|
256
1026
|
try {
|
|
257
1027
|
if (this._status === LockServiceStatus.LOCKED) {
|
|
258
1028
|
await this.sendHeartbeat();
|
|
259
|
-
|
|
1029
|
+
// If the heartbeat was stopped (e.g. idle takeover) or a newer chain
|
|
1030
|
+
// started while this grab was in flight, do not re-arm — otherwise the
|
|
1031
|
+
// lock would keep refreshing after we intentionally stopped (APPS-4840).
|
|
1032
|
+
if (generation !== this._heartbeatGeneration ||
|
|
1033
|
+
this._status !== LockServiceStatus.LOCKED) {
|
|
1034
|
+
return;
|
|
1035
|
+
}
|
|
1036
|
+
// Clear any existing timeout before scheduling new one to prevent duplicate heartbeat loops
|
|
1037
|
+
if (this._heartbeatTimeout) {
|
|
1038
|
+
clearTimeout(this._heartbeatTimeout);
|
|
1039
|
+
}
|
|
1040
|
+
this._heartbeatTimeout = setTimeout(() => void this.scheduleNextHeartbeat(), this.heartbeatIntervalMs);
|
|
1041
|
+
// This is to avoid the process from staying alive to wait for the heartbeat timeout
|
|
1042
|
+
this._heartbeatTimeout.unref();
|
|
260
1043
|
}
|
|
261
1044
|
}
|
|
262
1045
|
catch (error) {
|
|
263
|
-
|
|
1046
|
+
// If the heartbeat was intentionally stopped for idle takeover while this
|
|
1047
|
+
// grab was in flight, a failure here is moot — don't shut the pod down out
|
|
1048
|
+
// from under a user who may still be connected (the lock just TTL-expires).
|
|
1049
|
+
// A genuine heartbeat failure (not an idle stop) still shuts down as before.
|
|
1050
|
+
//
|
|
1051
|
+
// Same for a lock we handed back on purpose. Acquiring fires a heartbeat
|
|
1052
|
+
// immediately, so on the attach-and-drop path a grab is always still out
|
|
1053
|
+
// when the release lands; reading its failure as "we lost a lock we still
|
|
1054
|
+
// wanted" would take a cloud sandbox down for a lock it had already given
|
|
1055
|
+
// up. Neither the status nor the heartbeat generation can be used to tell
|
|
1056
|
+
// the two apart here — `checkAndUpdateLockIfPossible` resets both while
|
|
1057
|
+
// cleaning up after itself, before the error ever reaches this catch.
|
|
1058
|
+
if (this._heartbeatStoppedForIdle || this._lockGivenUp) {
|
|
1059
|
+
return;
|
|
1060
|
+
}
|
|
1061
|
+
this.getLogger().error("[lock-service] Error sending heartbeat, shutting down", getErrorMeta(error));
|
|
264
1062
|
this.emit("statusChange", LockServiceStatus.LOCK_INVALID);
|
|
265
1063
|
this.status = LockServiceStatus.LOCK_INVALID;
|
|
266
1064
|
clearTimeout(this._heartbeatTimeout);
|
|
@@ -281,44 +1079,324 @@ export class LockService extends EventEmitter {
|
|
|
281
1079
|
* Stop the heartbeat
|
|
282
1080
|
*/
|
|
283
1081
|
stopHeartbeat() {
|
|
284
|
-
|
|
1082
|
+
// Bump the generation so any in-flight scheduleNextHeartbeat() chain bails
|
|
1083
|
+
// out instead of re-arming the heartbeat after we stop.
|
|
1084
|
+
this._heartbeatGeneration++;
|
|
285
1085
|
if (this._heartbeatTimeout) {
|
|
286
1086
|
clearTimeout(this._heartbeatTimeout);
|
|
287
1087
|
this._heartbeatTimeout = undefined;
|
|
288
|
-
|
|
1088
|
+
this.getLogger().info("[lock-service] heartbeat stopped");
|
|
289
1089
|
}
|
|
290
1090
|
}
|
|
291
1091
|
/**
|
|
292
|
-
*
|
|
1092
|
+
* Evaluate if the lock should be released (user disconnected) or marked as ready for takeover (user inactive but connected)
|
|
293
1093
|
*/
|
|
294
|
-
async
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
1094
|
+
async evaluateLockState() {
|
|
1095
|
+
// Single-flight. Several unrelated things ask for an evaluation — a client
|
|
1096
|
+
// disconnecting, the last gateway peer detaching, the inactivity timer —
|
|
1097
|
+
// and the body awaits twice before it decides anything (the acquisition,
|
|
1098
|
+
// then any running generation). The `_bufferPeriodTimeout` guard below is
|
|
1099
|
+
// read before those awaits, so two overlapping callers both saw no timer
|
|
1100
|
+
// and both armed one; the second arming overwrote the first handle, leaving
|
|
1101
|
+
// a timer nothing could cancel. Joining the in-flight evaluation is what
|
|
1102
|
+
// makes the guard mean what it says, and it holds for any await added to
|
|
1103
|
+
// the body later.
|
|
1104
|
+
this._inFlightLockEvaluation ??= this.evaluateLockStateOnce().finally(() => {
|
|
1105
|
+
this._inFlightLockEvaluation = undefined;
|
|
1106
|
+
});
|
|
1107
|
+
return this._inFlightLockEvaluation;
|
|
298
1108
|
}
|
|
299
|
-
async
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
1109
|
+
async evaluateLockStateOnce() {
|
|
1110
|
+
// A client can attach and drop again before its lock arrives — the flaky
|
|
1111
|
+
// connect this whole change is downstream of. Deciding now would find
|
|
1112
|
+
// `isLocked` false, release nothing, and leave the lock to land on an empty
|
|
1113
|
+
// sandbox and heartbeat there for nobody.
|
|
1114
|
+
await this.settleClientLockAcquisition();
|
|
1115
|
+
// Skip if already evaluating lock release (buffer timeout exists)
|
|
1116
|
+
if (this._bufferPeriodTimeout) {
|
|
1117
|
+
this.getLogger().info("[lock-service] lock release already in progress, skipping duplicate evaluation");
|
|
1118
|
+
return;
|
|
1119
|
+
}
|
|
1120
|
+
// Nothing to evaluate before a client has ever claimed the lock. The
|
|
1121
|
+
// inactivity timer is armed from the constructor, so on the cloud path it
|
|
1122
|
+
// now elapses on a warm, unclaimed sandbox — that is an empty sandbox, not
|
|
1123
|
+
// a lock going stale. A client that came and went is DISCONNECTED rather
|
|
1124
|
+
// than untouched, and still needs the release path below.
|
|
1125
|
+
if (this._status === LockServiceStatus.IDLE &&
|
|
1126
|
+
!this._activityTracker.isDisconnected) {
|
|
1127
|
+
return;
|
|
1128
|
+
}
|
|
1129
|
+
// 1. Wait for Clark generation to complete if it's generating
|
|
1130
|
+
if (this.waitForGenerationCompleteCallback) {
|
|
1131
|
+
this.getLogger().info("[lock-service] waiting for Clark generation to complete before evaluating lock state");
|
|
1132
|
+
await this.waitForGenerationCompleteCallback();
|
|
1133
|
+
this.getLogger().info("[lock-service] Clark generation complete");
|
|
1134
|
+
}
|
|
1135
|
+
// A headless turn holds the sandbox on its own: nobody is watching a
|
|
1136
|
+
// gateway build, so idleness measured from editor pings says nothing about
|
|
1137
|
+
// whether the work is still running.
|
|
1138
|
+
if (this.hasAttachedGatewayPeer) {
|
|
1139
|
+
this.getLogger().info(`[lock-service] gateway peer attached, keeping the lock (lockId=${this._lockId}, appId=${this.applicationId})`);
|
|
1140
|
+
return;
|
|
1141
|
+
}
|
|
1142
|
+
// Check if user is still connected AND active, or became active again
|
|
1143
|
+
const shouldAbortRelease = this._activityTracker.connectedUsers.length > 0 &&
|
|
1144
|
+
this._activityTracker.wasRecentlyActive;
|
|
1145
|
+
if (!this._isRestarting && shouldAbortRelease) {
|
|
1146
|
+
this.getLogger().debug("[lock-service] user is still active, not changing lock state");
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
const isUserDisconnected = this._activityTracker.isDisconnected;
|
|
1150
|
+
// Case 1: User is disconnected - release the lock
|
|
1151
|
+
if (isUserDisconnected) {
|
|
1152
|
+
if (this._activityTracker.wasRecentlyActive) {
|
|
1153
|
+
// User was recently active - give buffer period before releasing
|
|
1154
|
+
this.getLogger().debug(`[lock-service] user disconnected but was recently active, waiting for ${this._lockBufferMs}ms buffer period before releasing lock`);
|
|
1155
|
+
this._bufferPeriodTimeout = setTimeout(() => {
|
|
1156
|
+
this.getLogger().debug("[lock-service] buffer period expired, releasing lock");
|
|
1157
|
+
if (this.lockType === LockType.LOCAL) {
|
|
1158
|
+
void this.shutdownAndExit();
|
|
1159
|
+
}
|
|
1160
|
+
else {
|
|
1161
|
+
void this.relinquishLock();
|
|
1162
|
+
}
|
|
1163
|
+
}, this._lockBufferMs);
|
|
1164
|
+
this._bufferPeriodTimeout.unref();
|
|
1165
|
+
}
|
|
1166
|
+
else {
|
|
1167
|
+
// User was NOT recently active - release immediately
|
|
1168
|
+
this.getLogger().debug("[lock-service] user disconnected and was not recently active, releasing lock immediately");
|
|
1169
|
+
if (this.lockType === LockType.LOCAL) {
|
|
1170
|
+
await this.shutdownAndExit();
|
|
1171
|
+
}
|
|
1172
|
+
else {
|
|
1173
|
+
await this.relinquishLock();
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
else {
|
|
1178
|
+
// Case 2: the lock is idle - either a connected client has gone quiet, or
|
|
1179
|
+
// a boot-time force takeover was never claimed by one. Either way, mark
|
|
1180
|
+
// it ready for takeover AND stop the heartbeat. The pod
|
|
1181
|
+
// heartbeat is the ONLY thing refreshing the server-side AppBranchLock;
|
|
1182
|
+
// if we keep heartbeating while nobody is using it, the lock never
|
|
1183
|
+
// TTL-expires and no other user can take over the app (APPS-4840).
|
|
1184
|
+
// Stopping it lets the lock expire so another user can acquire it
|
|
1185
|
+
// normally, without taking a dev server that is serving fine down with
|
|
1186
|
+
// it. restartInactivityTimer() resumes the heartbeat if this user becomes
|
|
1187
|
+
// active again before the lock expires.
|
|
1188
|
+
// The two cases reach the same handling but are very different
|
|
1189
|
+
// incidents, so the line names which one it is. A lock no client ever
|
|
1190
|
+
// claimed is the state the deleted startup watchdog used to report with
|
|
1191
|
+
// its own distinctive line; without a field here, oncall reconstructing a
|
|
1192
|
+
// stuck-lock incident cannot tell "nobody ever attached" from "someone
|
|
1193
|
+
// stepped away", and both read as routine idleness.
|
|
1194
|
+
const reason = this.hasAttachedClient
|
|
1195
|
+
? "connected client went quiet"
|
|
1196
|
+
: "never claimed by a client";
|
|
1197
|
+
this.getLogger().info(`[lock-service] lock idle (${reason}), marking ready for takeover and stopping heartbeat so it can expire (lockId=${this._lockId}, appId=${this.applicationId})`);
|
|
1198
|
+
this._activityTracker.markReadyForTakeover();
|
|
1199
|
+
this._heartbeatStoppedForIdle = true;
|
|
1200
|
+
this.stopHeartbeat();
|
|
305
1201
|
}
|
|
306
1202
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
1203
|
+
/**
|
|
1204
|
+
* Restart the inactivity timer when user activity is detected.
|
|
1205
|
+
* This timer tracks if the user goes inactive (no pings for N minutes).
|
|
1206
|
+
*/
|
|
1207
|
+
async restartInactivityTimer() {
|
|
1208
|
+
// Clear any existing inactivity timer since we have activity
|
|
1209
|
+
if (this._inactivityTimeout) {
|
|
1210
|
+
clearTimeout(this._inactivityTimeout);
|
|
1211
|
+
this._inactivityTimeout = undefined;
|
|
1212
|
+
}
|
|
1213
|
+
// Clear any buffer period timeout since we're receiving activity pings
|
|
1214
|
+
// This prevents shutdown when keep-alive pings continue after a disconnect event
|
|
1215
|
+
if (this._bufferPeriodTimeout) {
|
|
1216
|
+
clearTimeout(this._bufferPeriodTimeout);
|
|
1217
|
+
this._bufferPeriodTimeout = undefined;
|
|
1218
|
+
this.getLogger().info("[lock-service] activity detected, cleared pending buffer period timeout");
|
|
311
1219
|
}
|
|
1220
|
+
// If the heartbeat was stopped because the user went idle (ready for
|
|
1221
|
+
// takeover), they are active again now - resume refreshing the lock so we
|
|
1222
|
+
// keep it (or reacquire it if it already expired). If another user took
|
|
1223
|
+
// over in the meantime, the heartbeat grab will fail and shut us down.
|
|
1224
|
+
// Gating on _heartbeatStoppedForIdle (rather than just a missing timeout)
|
|
1225
|
+
// avoids racing the heartbeat back to life during lock acquisition or a
|
|
1226
|
+
// branch-switch transfer, which stop the heartbeat for their own reasons.
|
|
1227
|
+
if (this._heartbeatStoppedForIdle &&
|
|
1228
|
+
this._status === LockServiceStatus.LOCKED &&
|
|
1229
|
+
this._lockId) {
|
|
1230
|
+
this._heartbeatStoppedForIdle = false;
|
|
1231
|
+
// The user is back, so the lock is no longer up for grabs.
|
|
1232
|
+
this._activityTracker.resetReadyForTakeover();
|
|
1233
|
+
this.getLogger().info(`[lock-service] user active again, resuming lock heartbeat (lockId=${this._lockId}, appId=${this.applicationId})`);
|
|
1234
|
+
void this.scheduleNextHeartbeat();
|
|
1235
|
+
}
|
|
1236
|
+
this.reclaimLockForActiveClient();
|
|
1237
|
+
this.scheduleInactivityEvaluation();
|
|
312
1238
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
this.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
1239
|
+
scheduleInactivityEvaluation() {
|
|
1240
|
+
this._inactivityTimeout = setTimeout(() => {
|
|
1241
|
+
this._inactivityTimeout = undefined;
|
|
1242
|
+
this.getLogger().debug(`[lock-service] No activity for ${this._inactivityThresholdMs}ms, evaluating lock state`);
|
|
1243
|
+
this.evaluateLockStateInBackground("the inactivity deadline");
|
|
1244
|
+
}, this._inactivityThresholdMs);
|
|
1245
|
+
this._inactivityTimeout.unref();
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* Mark the user's activity from UI ping
|
|
1249
|
+
*/
|
|
1250
|
+
markActivity(isUserActive) {
|
|
1251
|
+
this._activityTracker.markActivity(isUserActive);
|
|
1252
|
+
}
|
|
1253
|
+
/**
|
|
1254
|
+
* A gateway peer attached and is driving headless work.
|
|
1255
|
+
*
|
|
1256
|
+
* Gateway peers are deliberately not connected-user presence — they are not
|
|
1257
|
+
* a browser editor and must not keep an editor's lock alive — so they need
|
|
1258
|
+
* their own liveness signal. Without it the inactivity reaper would take the
|
|
1259
|
+
* sandbox out from under a headless build that nobody is watching. Tracked
|
|
1260
|
+
* per peer id so a reattach that closes the socket it replaced does not hand
|
|
1261
|
+
* the sandbox back while its successor is still working.
|
|
1262
|
+
*/
|
|
1263
|
+
markGatewayAttached(peerId) {
|
|
1264
|
+
const isNew = !this._gatewayLivenessByPeerId.has(peerId);
|
|
1265
|
+
// Refreshed on every authorized gateway call, so only the first one is
|
|
1266
|
+
// worth a line — the rest would be per-RPC noise.
|
|
1267
|
+
this._gatewayLivenessByPeerId.set(peerId, Date.now());
|
|
1268
|
+
if (!isNew) {
|
|
1269
|
+
return;
|
|
1270
|
+
}
|
|
1271
|
+
this.getLogger().info(`[lock-service] gateway peer attached (peerId=${peerId}, appId=${this.applicationId})`);
|
|
1272
|
+
this.armGatewayLivenessSweep();
|
|
1273
|
+
// No lock is taken here. A gateway peer being attached says only that a
|
|
1274
|
+
// socket is open; {@link acquireLockForTurn} takes write access when there
|
|
1275
|
+
// is actually a turn to write for, which is what keeps the app openable
|
|
1276
|
+
// between prompts.
|
|
1277
|
+
void this.restartInactivityTimer();
|
|
1278
|
+
}
|
|
1279
|
+
/**
|
|
1280
|
+
* A gateway peer detached. The sandbox stays protected while any other
|
|
1281
|
+
* gateway peer is still attached.
|
|
1282
|
+
*/
|
|
1283
|
+
markGatewayDetached(peerId) {
|
|
1284
|
+
if (!this._gatewayLivenessByPeerId.delete(peerId)) {
|
|
1285
|
+
return;
|
|
320
1286
|
}
|
|
321
|
-
|
|
1287
|
+
this.getLogger().info(`[lock-service] gateway peer detached (peerId=${peerId}, appId=${this.applicationId})`);
|
|
1288
|
+
if (this._gatewayLivenessByPeerId.size !== 0) {
|
|
1289
|
+
return;
|
|
1290
|
+
}
|
|
1291
|
+
this.clearGatewayLivenessSweep();
|
|
1292
|
+
this.handleLastGatewayPeerGone();
|
|
1293
|
+
}
|
|
1294
|
+
/**
|
|
1295
|
+
* The last gateway peer is gone, so no turn is running.
|
|
1296
|
+
*
|
|
1297
|
+
* Write access was taken for the turn, so it goes back now rather than being
|
|
1298
|
+
* left to TTL out — that would leave the app unopenable for up to the lock's
|
|
1299
|
+
* two-minute lifetime after a headless build had already finished. This is
|
|
1300
|
+
* also the backstop for a gateway that dies mid-turn.
|
|
1301
|
+
*
|
|
1302
|
+
* Deliberately not a shutdown: the gateway drops its socket after every turn
|
|
1303
|
+
* and opens a new one for the next prompt, and in between the pod keeps
|
|
1304
|
+
* serving. The next turn takes the lock again through
|
|
1305
|
+
* {@link acquireLockForTurn}. What bounds the pod's life is SABS's live-edit
|
|
1306
|
+
* expiry, not this.
|
|
1307
|
+
*
|
|
1308
|
+
* Only when no editor is attached. An editor disconnect releases on its own
|
|
1309
|
+
* buffer in {@link evaluateLockState}, and a second releaser over the top of
|
|
1310
|
+
* that would race it.
|
|
1311
|
+
*/
|
|
1312
|
+
handleLastGatewayPeerGone() {
|
|
1313
|
+
if (this._activityTracker.connectedUsers.length > 0) {
|
|
1314
|
+
this.evaluateLockStateInBackground("the last gateway peer detached");
|
|
1315
|
+
return;
|
|
1316
|
+
}
|
|
1317
|
+
void this.handBackTurnLockWhenGenerationSettles().catch((error) => {
|
|
1318
|
+
this.getLogger().error(`[lock-service] failed to hand the turn lock back after the last gateway peer detached (lockId=${this._lockId}, appId=${this.applicationId})`, getErrorMeta(error));
|
|
1319
|
+
});
|
|
1320
|
+
}
|
|
1321
|
+
/**
|
|
1322
|
+
* Wait for the turn to finish, then hand its lock back.
|
|
1323
|
+
*
|
|
1324
|
+
* The wait sits outside the lock queue, the way {@link evaluateLockState}
|
|
1325
|
+
* does it. That queue serialises the handback itself, branch switches,
|
|
1326
|
+
* `isLockedWhenSettled` and the next turn's acquisition, so waiting inside
|
|
1327
|
+
* it lets a single hung generation stall all of them — including a graceful
|
|
1328
|
+
* shutdown, which awaits the handback with no timeout of its own.
|
|
1329
|
+
*/
|
|
1330
|
+
async handBackTurnLockWhenGenerationSettles() {
|
|
1331
|
+
await this.waitForGenerationCompleteCallback?.();
|
|
1332
|
+
await this._lockOperationQueue.enqueue(async () => {
|
|
1333
|
+
if (this.hasAttachedGatewayPeer ||
|
|
1334
|
+
this._activityTracker.connectedUsers.length > 0) {
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1337
|
+
if (!this.isLocked) {
|
|
1338
|
+
return;
|
|
1339
|
+
}
|
|
1340
|
+
this.getLogger().info(`[lock-service] no gateway peer left, handing the turn lock back and staying up (lockId=${this._lockId}, appId=${this.applicationId})`);
|
|
1341
|
+
await this.relinquishLockNow(() => this.hasAttachedGatewayPeer ||
|
|
1342
|
+
this._activityTracker.connectedUsers.length > 0);
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1345
|
+
/**
|
|
1346
|
+
* Watches for the last gateway signal lapsing.
|
|
1347
|
+
*
|
|
1348
|
+
* The inactivity reaper a gateway defers fires once and is then only
|
|
1349
|
+
* re-examined when something happens. A silent gateway is the absence of
|
|
1350
|
+
* anything happening, so this is what notices it and puts the lock back up
|
|
1351
|
+
* for evaluation.
|
|
1352
|
+
*/
|
|
1353
|
+
armGatewayLivenessSweep() {
|
|
1354
|
+
if (this._gatewayLivenessSweep) {
|
|
1355
|
+
return;
|
|
1356
|
+
}
|
|
1357
|
+
this._gatewayLivenessSweep = setInterval(() => {
|
|
1358
|
+
if (this.hasAttachedGatewayPeer) {
|
|
1359
|
+
return;
|
|
1360
|
+
}
|
|
1361
|
+
this.clearGatewayLivenessSweep();
|
|
1362
|
+
// A gateway that went silent is a turn that ended without saying so, so
|
|
1363
|
+
// it takes the same route as a clean detach.
|
|
1364
|
+
this.handleLastGatewayPeerGone();
|
|
1365
|
+
}, Math.max(1, Math.floor(this._gatewayLivenessTtlMs / 2)));
|
|
1366
|
+
this._gatewayLivenessSweep.unref?.();
|
|
1367
|
+
}
|
|
1368
|
+
clearGatewayLivenessSweep() {
|
|
1369
|
+
if (!this._gatewayLivenessSweep) {
|
|
1370
|
+
return;
|
|
1371
|
+
}
|
|
1372
|
+
clearInterval(this._gatewayLivenessSweep);
|
|
1373
|
+
this._gatewayLivenessSweep = undefined;
|
|
1374
|
+
}
|
|
1375
|
+
/**
|
|
1376
|
+
* Whether any gateway peer's liveness is still current. Lapsed entries are
|
|
1377
|
+
* dropped as they are found: the socket they belong to may never close, and
|
|
1378
|
+
* the sandbox must become available again either way.
|
|
1379
|
+
*/
|
|
1380
|
+
get hasAttachedGatewayPeer() {
|
|
1381
|
+
const now = Date.now();
|
|
1382
|
+
for (const [peerId, lastSeenAt] of [...this._gatewayLivenessByPeerId]) {
|
|
1383
|
+
if (now - lastSeenAt < this._gatewayLivenessTtlMs) {
|
|
1384
|
+
continue;
|
|
1385
|
+
}
|
|
1386
|
+
this._gatewayLivenessByPeerId.delete(peerId);
|
|
1387
|
+
this.getLogger().warn(`[lock-service] gateway peer liveness lapsed after ${this._gatewayLivenessTtlMs}ms (peerId=${peerId}, appId=${this.applicationId})`);
|
|
1388
|
+
try {
|
|
1389
|
+
this.onGatewayLivenessLapsed?.(peerId);
|
|
1390
|
+
}
|
|
1391
|
+
catch (error) {
|
|
1392
|
+
this.getLogger().warn(`[lock-service] onGatewayLivenessLapsed threw; continuing (peerId=${peerId}, appId=${this.applicationId})`, getErrorMeta(error));
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
return this._gatewayLivenessByPeerId.size > 0;
|
|
1396
|
+
}
|
|
1397
|
+
/** when the dev server is restarting, we will use the 5-minute shutdown timer instead of the instant one */
|
|
1398
|
+
async setIsRestarting() {
|
|
1399
|
+
this._isRestarting = true;
|
|
322
1400
|
}
|
|
323
1401
|
}
|
|
324
1402
|
//# sourceMappingURL=index.js.map
|