@superblocksteam/vite-plugin-file-sync 2.0.162 → 2.0.163-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/agent/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +18 -7
- package/dist/ai-service/agent/middleware.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +43 -29
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +25 -0
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js +15 -0
- package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +4 -2
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.d.ts +18 -0
- package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.js +61 -0
- package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.js.map +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +21 -8
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts +87 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.js +453 -82
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.d.ts +1 -0
- package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.js +18 -2
- package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.d.ts +11 -0
- package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js +62 -14
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +2 -1
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +2 -1
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts +1 -0
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js +7 -2
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools/read-file-metrics.d.ts +30 -0
- package/dist/ai-service/agent/tools/read-file-metrics.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/read-file-metrics.js +158 -0
- package/dist/ai-service/agent/tools/read-file-metrics.js.map +1 -0
- package/dist/ai-service/agent/tools/subagent-isolation.d.ts +27 -0
- package/dist/ai-service/agent/tools/subagent-isolation.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/subagent-isolation.js +57 -0
- package/dist/ai-service/agent/tools/subagent-isolation.js.map +1 -0
- package/dist/ai-service/agent/tools.d.ts +4 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +51 -5
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/download-attachments.js +1 -0
- package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +14 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +2 -2
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +2 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -1
- package/dist/ai-service/app-interface/filesystem/draft-manager.js +3 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -1
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts +2 -1
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts.map +1 -1
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js +13 -11
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js.map +1 -1
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -1
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +1 -1
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +18 -9
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +92 -112
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-interface/typecheck-output-parser.d.ts +9 -0
- package/dist/ai-service/app-interface/typecheck-output-parser.d.ts.map +1 -0
- package/dist/ai-service/app-interface/typecheck-output-parser.js +21 -0
- package/dist/ai-service/app-interface/typecheck-output-parser.js.map +1 -0
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts +5 -0
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -1
- package/dist/ai-service/app-interface/vulnerability-gate.js +9 -2
- package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -1
- package/dist/ai-service/app-layout.d.ts +13 -0
- package/dist/ai-service/app-layout.d.ts.map +1 -0
- package/dist/ai-service/app-layout.js +25 -0
- package/dist/ai-service/app-layout.js.map +1 -0
- package/dist/ai-service/app-skills/manager.d.ts +2 -0
- package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
- package/dist/ai-service/app-skills/manager.js +13 -6
- package/dist/ai-service/app-skills/manager.js.map +1 -1
- package/dist/ai-service/attachment-label-metrics.d.ts +5 -0
- package/dist/ai-service/attachment-label-metrics.d.ts.map +1 -0
- package/dist/ai-service/attachment-label-metrics.js +26 -0
- package/dist/ai-service/attachment-label-metrics.js.map +1 -0
- package/dist/ai-service/attachment-upload.d.ts.map +1 -1
- package/dist/ai-service/attachment-upload.js +6 -1
- package/dist/ai-service/attachment-upload.js.map +1 -1
- package/dist/ai-service/attachments/validate-prompt-attachments.d.ts +7 -0
- package/dist/ai-service/attachments/validate-prompt-attachments.d.ts.map +1 -0
- package/dist/ai-service/attachments/validate-prompt-attachments.js +96 -0
- package/dist/ai-service/attachments/validate-prompt-attachments.js.map +1 -0
- package/dist/ai-service/chat/chat-push-metrics.d.ts +17 -0
- package/dist/ai-service/chat/chat-push-metrics.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-push-metrics.js +45 -0
- package/dist/ai-service/chat/chat-push-metrics.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +51 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +181 -4
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/features.d.ts +32 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +32 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/helper-system-ai-attributes.d.ts +1 -1
- package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -1
- package/dist/ai-service/helper-system-ai-attributes.js.map +1 -1
- package/dist/ai-service/index.d.ts +19 -4
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +177 -23
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +9 -0
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +13 -43
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +2 -0
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.js +6 -0
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +3 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.js +3 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +8 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/server-side.js +8 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compactor.d.ts +2 -0
- package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/compactor.js +4 -1
- package/dist/ai-service/llm/context-v2/compactor.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-component-partition.d.ts +24 -0
- package/dist/ai-service/llm/context-v2/context-component-partition.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context-component-partition.js +222 -0
- package/dist/ai-service/llm/context-v2/context-component-partition.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts +7 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context-management.js +4 -0
- package/dist/ai-service/llm/context-v2/context-management.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +9 -0
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.js +40 -2
- package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts +116 -4
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +276 -64
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +18 -0
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/file-read-ledger.d.ts +218 -0
- package/dist/ai-service/llm/context-v2/file-read-ledger.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/file-read-ledger.js +275 -0
- package/dist/ai-service/llm/context-v2/file-read-ledger.js.map +1 -0
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +1 -0
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +8 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +53 -4
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -1
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts +2 -0
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/token-tracker.js +4 -0
- package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -1
- package/dist/ai-service/llm/context-v2/tool-schema-tokens.d.ts +22 -0
- package/dist/ai-service/llm/context-v2/tool-schema-tokens.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/tool-schema-tokens.js +36 -0
- package/dist/ai-service/llm/context-v2/tool-schema-tokens.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types.d.ts +8 -0
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js +48 -0
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +2 -0
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +1 -0
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/retry-exhaustion-reason.d.ts +2 -0
- package/dist/ai-service/llm/retry-exhaustion-reason.d.ts.map +1 -0
- package/dist/ai-service/llm/retry-exhaustion-reason.js +2 -0
- package/dist/ai-service/llm/retry-exhaustion-reason.js.map +1 -0
- package/dist/ai-service/llm/stream/config.d.ts +1 -1
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/errors.d.ts +6 -7
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/errors.js +7 -1
- package/dist/ai-service/llm/stream/errors.js.map +1 -1
- package/dist/ai-service/llm/stream/event-bus.d.ts +9 -1
- package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/event-bus.js.map +1 -1
- package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.js +13 -0
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +14 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +91 -7
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.d.ts +3 -1
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js +73 -52
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/retry-notification.js +16 -9
- package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +5 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +103 -12
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts +3 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +9 -0
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/llm/stream/session.d.ts +8 -1
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/session.js +19 -0
- package/dist/ai-service/llm/stream/session.js.map +1 -1
- package/dist/ai-service/llm/stream/types.d.ts +13 -0
- package/dist/ai-service/llm/stream/types.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/wait-state-tracker.d.ts +5 -14
- package/dist/ai-service/llm/stream/wait-state-tracker.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/wait-state-tracker.js +25 -0
- package/dist/ai-service/llm/stream/wait-state-tracker.js.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +8 -8
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
- package/dist/ai-service/migration-llm-config.d.ts.map +1 -1
- package/dist/ai-service/migration-llm-config.js +2 -11
- package/dist/ai-service/migration-llm-config.js.map +1 -1
- package/dist/ai-service/policy-gate-remediation-usage.d.ts +2 -0
- package/dist/ai-service/policy-gate-remediation-usage.d.ts.map +1 -0
- package/dist/ai-service/policy-gate-remediation-usage.js +56 -0
- package/dist/ai-service/policy-gate-remediation-usage.js.map +1 -0
- package/dist/ai-service/prompts/summarize-destructive-migration.d.ts +12 -0
- package/dist/ai-service/prompts/summarize-destructive-migration.d.ts.map +1 -0
- package/dist/ai-service/prompts/summarize-destructive-migration.js +37 -0
- package/dist/ai-service/prompts/summarize-destructive-migration.js.map +1 -0
- package/dist/ai-service/recording/storage/session-recording-storage.js +2 -2
- package/dist/ai-service/recording/storage/session-recording-storage.js.map +1 -1
- package/dist/ai-service/security/secret-scanner-service.d.ts.map +1 -1
- package/dist/ai-service/security/secret-scanner-service.js +88 -23
- package/dist/ai-service/security/secret-scanner-service.js.map +1 -1
- package/dist/ai-service/skills/index.d.ts +0 -7
- package/dist/ai-service/skills/index.d.ts.map +1 -1
- package/dist/ai-service/skills/index.js +0 -9
- package/dist/ai-service/skills/index.js.map +1 -1
- package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/_registry.generated.js +4 -0
- package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
- package/dist/ai-service/skills/system/resolve.d.ts +2 -0
- package/dist/ai-service/skills/system/resolve.d.ts.map +1 -0
- package/dist/ai-service/skills/system/resolve.js +32 -0
- package/dist/ai-service/skills/system/resolve.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.js +9 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.d.ts +2 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.d.ts.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.js +11 -0
- package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +16 -24
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +11 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +8 -1
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +21 -0
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +32 -9
- package/dist/ai-service/state-machine/handlers/llm-generating.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 +21 -2
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +11 -2
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.js +105 -18
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts +3 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +52 -13
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/tasks/peer-push.d.ts +3 -0
- package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
- package/dist/ai-service/tasks/peer-push.js +33 -0
- package/dist/ai-service/tasks/peer-push.js.map +1 -1
- package/dist/ai-service/util/call-peer.d.ts +2 -0
- package/dist/ai-service/util/call-peer.d.ts.map +1 -1
- package/dist/ai-service/util/call-peer.js +17 -4
- package/dist/ai-service/util/call-peer.js.map +1 -1
- package/dist/ai-service/util/line-ranges.d.ts +21 -0
- package/dist/ai-service/util/line-ranges.d.ts.map +1 -0
- package/dist/ai-service/util/line-ranges.js +36 -0
- package/dist/ai-service/util/line-ranges.js.map +1 -0
- package/dist/ai-service/util/peer-liveness.d.ts +1 -0
- package/dist/ai-service/util/peer-liveness.d.ts.map +1 -1
- package/dist/ai-service/util/peer-liveness.js +2 -0
- package/dist/ai-service/util/peer-liveness.js.map +1 -1
- package/dist/dev-server-ws-smoke-client.d.ts.map +1 -1
- package/dist/dev-server-ws-smoke-client.js +7 -0
- package/dist/dev-server-ws-smoke-client.js.map +1 -1
- package/dist/draft-interface.d.ts +8 -0
- package/dist/draft-interface.d.ts.map +1 -1
- package/dist/early-error-relay.d.ts +2 -0
- package/dist/early-error-relay.d.ts.map +1 -1
- package/dist/early-error-relay.js +7 -3
- package/dist/early-error-relay.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +43 -15
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +2 -2
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +3 -3
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/git-service/errors.d.ts +9 -0
- package/dist/git-service/errors.d.ts.map +1 -1
- package/dist/git-service/errors.js +15 -0
- package/dist/git-service/errors.js.map +1 -1
- package/dist/git-service/index.d.ts +2 -2
- package/dist/git-service/index.d.ts.map +1 -1
- package/dist/git-service/index.js +2 -2
- package/dist/git-service/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts +5 -0
- package/dist/lock-service/activity-tracker.d.ts.map +1 -1
- package/dist/lock-service/activity-tracker.js +10 -0
- package/dist/lock-service/activity-tracker.js.map +1 -1
- package/dist/lock-service/index.d.ts +69 -4
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +139 -29
- package/dist/lock-service/index.js.map +1 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +9 -65
- package/dist/migration-templates/app-fullstack/client/components/ui/area-chart.tsx +36 -156
- package/dist/migration-templates/app-fullstack/client/components/ui/aspect-ratio.tsx +1 -5
- package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +4 -18
- package/dist/migration-templates/app-fullstack/client/components/ui/badge.tsx +6 -29
- package/dist/migration-templates/app-fullstack/client/components/ui/bar-chart.tsx +41 -167
- package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +1 -4
- package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +5 -64
- package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +6 -42
- package/dist/migration-templates/app-fullstack/client/components/ui/card.tsx +1 -4
- package/dist/migration-templates/app-fullstack/client/components/ui/checkbox.tsx +4 -29
- package/dist/migration-templates/app-fullstack/client/components/ui/date-range-picker.tsx +13 -154
- package/dist/migration-templates/app-fullstack/client/components/ui/dialog.tsx +7 -34
- package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +12 -95
- package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +12 -73
- package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +10 -66
- package/dist/migration-templates/app-fullstack/client/components/ui/icon.tsx +3 -16
- package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +4 -16
- package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +18 -159
- package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +1 -4
- package/dist/migration-templates/app-fullstack/client/components/ui/line-chart.tsx +32 -148
- package/dist/migration-templates/app-fullstack/client/components/ui/link.tsx +4 -24
- package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +3 -24
- package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +4 -24
- package/dist/migration-templates/app-fullstack/client/components/ui/pie-chart.tsx +28 -142
- package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +9 -61
- package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +2 -11
- package/dist/migration-templates/app-fullstack/client/components/ui/radar-chart.tsx +37 -171
- package/dist/migration-templates/app-fullstack/client/components/ui/radial-chart.tsx +50 -202
- package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +5 -35
- package/dist/migration-templates/app-fullstack/client/components/ui/separator.tsx +1 -8
- package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +7 -40
- package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +3 -35
- package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +11 -95
- package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +5 -32
- package/dist/migration-templates/app-fullstack/client/components/ui/textarea.tsx +13 -90
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +11 -75
- package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +8 -70
- package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +9 -62
- package/dist/parsing/imports.d.ts +22 -0
- package/dist/parsing/imports.d.ts.map +1 -1
- package/dist/parsing/imports.js +71 -0
- package/dist/parsing/imports.js.map +1 -1
- package/dist/reconnect-guard-plugin.d.ts +53 -0
- package/dist/reconnect-guard-plugin.d.ts.map +1 -0
- package/dist/reconnect-guard-plugin.js +203 -0
- package/dist/reconnect-guard-plugin.js.map +1 -0
- package/dist/resolver.d.ts +2 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +4 -6
- package/dist/resolver.js.map +1 -1
- package/dist/router-parser-metrics.d.ts +2 -1
- package/dist/router-parser-metrics.d.ts.map +1 -1
- package/dist/router-parser-metrics.js.map +1 -1
- package/dist/router-parser.d.ts +10 -1
- package/dist/router-parser.d.ts.map +1 -1
- package/dist/router-parser.js +306 -69
- package/dist/router-parser.js.map +1 -1
- package/dist/scan-scope-merge-metrics.d.ts +2 -0
- package/dist/scan-scope-merge-metrics.d.ts.map +1 -0
- package/dist/scan-scope-merge-metrics.js +18 -0
- package/dist/scan-scope-merge-metrics.js.map +1 -0
- package/dist/scan-scope-merge.d.ts +2 -2
- package/dist/scan-scope-merge.d.ts.map +1 -1
- package/dist/scan-scope-merge.js +64 -14
- package/dist/scan-scope-merge.js.map +1 -1
- package/dist/server-rpc/index.d.ts.map +1 -1
- package/dist/server-rpc/index.js +12 -2
- package/dist/server-rpc/index.js.map +1 -1
- package/dist/socket-manager.d.ts +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +276 -15
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/download.js +2 -2
- package/dist/sync-service/download.js.map +1 -1
- package/dist/sync-service/index.d.ts +95 -22
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +402 -56
- package/dist/sync-service/index.js.map +1 -1
- package/dist/sync-service/page-reference-guard.d.ts +17 -0
- package/dist/sync-service/page-reference-guard.d.ts.map +1 -0
- package/dist/sync-service/page-reference-guard.js +170 -0
- package/dist/sync-service/page-reference-guard.js.map +1 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +16 -2
- package/dist/util.js.map +1 -1
- package/package.json +15 -14
package/dist/ai-service/index.js
CHANGED
|
@@ -31,6 +31,7 @@ import { NpmPackageLookup } from "./app-interface/npm-package-lookup.js";
|
|
|
31
31
|
import { NpmRegistryClient, createDiskRegistryPolicyStore, } from "./app-interface/npm-registry.js";
|
|
32
32
|
import { AppShell } from "./app-interface/shell.js";
|
|
33
33
|
import { AppSkillsManager } from "./app-skills/manager.js";
|
|
34
|
+
import { recordAttachmentLabelTruncated } from "./attachment-label-metrics.js";
|
|
34
35
|
import { parseDataUrl } from "./attachments/parse-data-url.js";
|
|
35
36
|
import { isUploadedAttachment, toUploadedAttachmentContentPart, } from "./attachments/uploaded-content-part.js";
|
|
36
37
|
import { ChatSessionStore } from "./chat/chat-session-store.js";
|
|
@@ -71,9 +72,11 @@ import { isMigrationSessionActive } from "./migration-session-active.js";
|
|
|
71
72
|
import { hasSettledNormalMigrationTurn, recordMigrationTurnDispatched, recordMigrationTurnSettled, } from "./migration-turns-log.js";
|
|
72
73
|
import { recordPolicyAgentExecution, } from "./policy-agent-metrics.js";
|
|
73
74
|
import { classifyPolicyGateError } from "./policy-gate-error.js";
|
|
75
|
+
import { buildPolicyGateRemediationUsageMetadata } from "./policy-gate-remediation-usage.js";
|
|
74
76
|
import { policyGateStreamPartToAgentStep } from "./policy-gate-step.js";
|
|
75
77
|
import { ClarkProfiler } from "./profiler/clark-profiler.js";
|
|
76
78
|
import { buildSummarizeApiUsagePrompt } from "./prompts/summarize-api-usage.js";
|
|
79
|
+
import { buildSummarizeDestructiveMigrationPrompt } from "./prompts/summarize-destructive-migration.js";
|
|
77
80
|
import { checkAiQuota } from "./quota-client.js";
|
|
78
81
|
import { RecordingManager, createRecordingFetch } from "./recording/index.js";
|
|
79
82
|
import { RequestDeduplicator } from "./request-deduplicator.js";
|
|
@@ -141,6 +144,18 @@ export { isSdkApiTemplate } from "./sdk-api-templates.js";
|
|
|
141
144
|
export function buildLastKnownPolicyStore(opts) {
|
|
142
145
|
return createDiskRegistryPolicyStore(opts);
|
|
143
146
|
}
|
|
147
|
+
// A label + one-sentence insight only needs the head of a file.
|
|
148
|
+
const LABEL_ATTACHMENT_TRUNCATION_CHARS = 50_000;
|
|
149
|
+
// Back off one char if the cut point falls inside a UTF-16 surrogate pair,
|
|
150
|
+
// so we never emit a lone unpaired surrogate to the model.
|
|
151
|
+
function truncateTextForLabeling(content, maxChars) {
|
|
152
|
+
let end = maxChars;
|
|
153
|
+
const code = content.charCodeAt(end - 1);
|
|
154
|
+
if (code >= 0xd800 && code <= 0xdbff) {
|
|
155
|
+
end -= 1;
|
|
156
|
+
}
|
|
157
|
+
return content.slice(0, end);
|
|
158
|
+
}
|
|
144
159
|
const MAX_POLICY_GATE_STREAM_ERRORS = 5;
|
|
145
160
|
const MAX_POLICY_GATE_STREAM_ERROR_ARRAY_LENGTH = 10;
|
|
146
161
|
const MAX_POLICY_GATE_STREAM_ERROR_FIELD_LENGTH = 500;
|
|
@@ -599,9 +614,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
599
614
|
/**
|
|
600
615
|
* Updates the JWT in Clark context.
|
|
601
616
|
*
|
|
602
|
-
* A token that expires before the one already installed is ignored, because
|
|
603
|
-
* primes can arrive out of order.
|
|
604
|
-
*
|
|
605
617
|
* @returns whether the pod ended up holding a usable token. A rejected token
|
|
606
618
|
* used to look exactly like one that landed, and like one that was never
|
|
607
619
|
* sent at all, which is why a run could die holding a credential nobody
|
|
@@ -613,11 +625,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
613
625
|
getLogger().warn(`[ai-service] Rejected an inference JWT (present: ${jwtDetails.present}, hasFederatedToken: ${jwtDetails.hasFederatedToken}, scope: ${jwtDetails.scope ?? "none"})`);
|
|
614
626
|
return false;
|
|
615
627
|
}
|
|
616
|
-
// Whichever prime finishes last wins. Two overlapping browser
|
|
617
|
-
// connections can therefore leave the pod holding a token one refresh
|
|
618
|
-
// generation old, which the next refresh repairs because primes on a
|
|
619
|
-
// single connection run one at a time and newest-last. Deciding which
|
|
620
|
-
// connection owns the pod is ENG-6236.
|
|
621
628
|
getLogger().info("[ai-service] Accepted a new inference JWT");
|
|
622
629
|
this.clark.updateContext({ jwt });
|
|
623
630
|
const llmConfig = this.lastMigrationTurnCredentials?.llmConfig ??
|
|
@@ -1573,6 +1580,7 @@ export class AiService extends TracedEventEmitter {
|
|
|
1573
1580
|
}
|
|
1574
1581
|
buildContextManagementForCurrentClark(llmConfig) {
|
|
1575
1582
|
return selectContextManagementStrategy({
|
|
1583
|
+
coreModel: llmConfig?.coreModel,
|
|
1576
1584
|
serverContextManagementEnabled: llmConfig?.serverContextManagement?.enabled,
|
|
1577
1585
|
thresholds: llmConfig?.serverContextManagement,
|
|
1578
1586
|
summarizeModel: () => createLLMProvider(this.getLLMProviderSettings(llmConfig), () => this.getProviderInferenceAuthToken(), llmConfig, () => this.getLlmAiAttributes(this.clark), this.clark.context.traceHeaders).modelForTask("summarizeMessages"),
|
|
@@ -2331,10 +2339,15 @@ export class AiService extends TracedEventEmitter {
|
|
|
2331
2339
|
outcomeDedupeKey: resolvePromptRequestDedupeKey(request),
|
|
2332
2340
|
coreModel: request.llmConfig?.coreModel,
|
|
2333
2341
|
});
|
|
2342
|
+
const requestUsageMetadata = request.importSource
|
|
2343
|
+
? {
|
|
2344
|
+
origin: CLARK_USAGE_ORIGIN.app_migration,
|
|
2345
|
+
source: request.importSource,
|
|
2346
|
+
surface: "app",
|
|
2347
|
+
}
|
|
2348
|
+
: buildPolicyGateRemediationUsageMetadata(request.policyGateRemediation);
|
|
2334
2349
|
const generateStreakEligible = resolvePromptMetricLabels({
|
|
2335
|
-
usageMetadata:
|
|
2336
|
-
? { origin: CLARK_USAGE_ORIGIN.app_migration }
|
|
2337
|
-
: undefined,
|
|
2350
|
+
usageMetadata: requestUsageMetadata,
|
|
2338
2351
|
}).streakEligible;
|
|
2339
2352
|
// The id is now recorded. If anything below throws before generation is
|
|
2340
2353
|
// actually kicked off (the `transitionTo` USER_SENT_PROMPT), evict it so a
|
|
@@ -2372,17 +2385,10 @@ export class AiService extends TracedEventEmitter {
|
|
|
2372
2385
|
baseCommitId,
|
|
2373
2386
|
isInterruptAbort: undefined,
|
|
2374
2387
|
userInitiatedPromptAbort: undefined,
|
|
2375
|
-
//
|
|
2376
|
-
//
|
|
2377
|
-
//
|
|
2378
|
-
|
|
2379
|
-
usageMetadata: request.importSource
|
|
2380
|
-
? {
|
|
2381
|
-
origin: CLARK_USAGE_ORIGIN.app_migration,
|
|
2382
|
-
source: request.importSource,
|
|
2383
|
-
surface: "app",
|
|
2384
|
-
}
|
|
2385
|
-
: undefined,
|
|
2388
|
+
// Explicit per-turn attribution replaces the default in-app Clark
|
|
2389
|
+
// metadata. Both migration and policy remediation still use the app
|
|
2390
|
+
// surface, while the origin and IDs make their spend queryable.
|
|
2391
|
+
usageMetadata: requestUsageMetadata,
|
|
2386
2392
|
useMockGeneration: request.mockGeneration ?? false,
|
|
2387
2393
|
planContext: mergePlanContexts(context.planContext, request.planContext),
|
|
2388
2394
|
browserContext: request.browserContext,
|
|
@@ -2678,6 +2684,96 @@ export class AiService extends TracedEventEmitter {
|
|
|
2678
2684
|
});
|
|
2679
2685
|
}
|
|
2680
2686
|
}
|
|
2687
|
+
async handleAiSummarizeDestructiveMigration(request) {
|
|
2688
|
+
if (this.clark.state === ClarkStateNames.Dead) {
|
|
2689
|
+
throw new Error("Service is unavailable");
|
|
2690
|
+
}
|
|
2691
|
+
const peer = this.clark.context.peer;
|
|
2692
|
+
try {
|
|
2693
|
+
const wantedFiles = [
|
|
2694
|
+
...new Set(request.findings.map((finding) => finding.fileName)),
|
|
2695
|
+
];
|
|
2696
|
+
const migrationFiles = {};
|
|
2697
|
+
if (wantedFiles.length > 0) {
|
|
2698
|
+
let sqlPaths = [];
|
|
2699
|
+
try {
|
|
2700
|
+
sqlPaths = await this.appShell.listFiles(["**/*.sql"]);
|
|
2701
|
+
}
|
|
2702
|
+
catch {
|
|
2703
|
+
sqlPaths = [];
|
|
2704
|
+
}
|
|
2705
|
+
for (const fileName of wantedFiles) {
|
|
2706
|
+
const match = sqlPaths.find((sqlPath) => sqlPath === fileName || sqlPath.endsWith(`/${fileName}`));
|
|
2707
|
+
if (match === undefined) {
|
|
2708
|
+
continue;
|
|
2709
|
+
}
|
|
2710
|
+
try {
|
|
2711
|
+
migrationFiles[fileName] = await this.appShell.readFile(match);
|
|
2712
|
+
}
|
|
2713
|
+
catch {
|
|
2714
|
+
// The excerpt on the finding is enough when the file cannot be read.
|
|
2715
|
+
}
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
const prompt = buildSummarizeDestructiveMigrationPrompt({
|
|
2719
|
+
findings: request.findings,
|
|
2720
|
+
migrationFiles: Object.keys(migrationFiles).length > 0 ? migrationFiles : undefined,
|
|
2721
|
+
scanUnavailable: request.scanUnavailable,
|
|
2722
|
+
});
|
|
2723
|
+
const llmConfig = request.llmConfig
|
|
2724
|
+
? {
|
|
2725
|
+
...request.llmConfig,
|
|
2726
|
+
interleavedThinking: false,
|
|
2727
|
+
thinkingEnabled: false,
|
|
2728
|
+
}
|
|
2729
|
+
: undefined;
|
|
2730
|
+
const { providerOptions, headers } = processLLMConfig(llmConfig, 2000, `AI Summarize Destructive Migration`);
|
|
2731
|
+
const llmProviderSettings = this.getLLMProviderSettings(llmConfig);
|
|
2732
|
+
const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => helperSystemAiAttributes({
|
|
2733
|
+
applicationId: this.config.applicationId,
|
|
2734
|
+
sessionId: this.sessionId,
|
|
2735
|
+
triggerType: AiSystemTriggerType.DESTRUCTIVE_MIGRATION_SUMMARY,
|
|
2736
|
+
}));
|
|
2737
|
+
const { model, providerConfig } = llmProvider.modelForTask("explain");
|
|
2738
|
+
await traceLLM("handleAiSummarizeDestructiveMigration", model.modelId, model.provider, async () => {
|
|
2739
|
+
try {
|
|
2740
|
+
const streamResult = await this.llmClient.streamText({
|
|
2741
|
+
model,
|
|
2742
|
+
user: { role: "user", content: prompt },
|
|
2743
|
+
providerOptions,
|
|
2744
|
+
headers,
|
|
2745
|
+
providerConfig,
|
|
2746
|
+
enableFallback: llmConfig?.unifiedProviderEnabled ?? false,
|
|
2747
|
+
});
|
|
2748
|
+
for await (const chunk of streamResult.textStream) {
|
|
2749
|
+
if (chunk) {
|
|
2750
|
+
await peer.call.aiPushDestructiveMigrationSummary({
|
|
2751
|
+
summaryKey: request.summaryKey,
|
|
2752
|
+
delta: chunk,
|
|
2753
|
+
});
|
|
2754
|
+
}
|
|
2755
|
+
}
|
|
2756
|
+
await peer.call.aiPushDestructiveMigrationSummary({
|
|
2757
|
+
summaryKey: request.summaryKey,
|
|
2758
|
+
isComplete: true,
|
|
2759
|
+
});
|
|
2760
|
+
}
|
|
2761
|
+
catch (error) {
|
|
2762
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
2763
|
+
getLogger().error(`[ai-service] streamText error for destructive migration summary: ${errorMsg}`);
|
|
2764
|
+
throw error;
|
|
2765
|
+
}
|
|
2766
|
+
}, {}, llmobs);
|
|
2767
|
+
}
|
|
2768
|
+
catch (error) {
|
|
2769
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
2770
|
+
getLogger().error(`[ai-service] Error summarizing destructive migrations: ${errorMessage}`, getErrorMeta(error));
|
|
2771
|
+
await peer.call.aiPushDestructiveMigrationSummary({
|
|
2772
|
+
summaryKey: request.summaryKey,
|
|
2773
|
+
error: "Failed to generate destructive migration summary",
|
|
2774
|
+
});
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2681
2777
|
async handleAiLabelAttachment(request) {
|
|
2682
2778
|
const logger = getLogger();
|
|
2683
2779
|
const startTime = Date.now();
|
|
@@ -2824,9 +2920,20 @@ export class AiService extends TracedEventEmitter {
|
|
|
2824
2920
|
.replace(/'/g, "'")
|
|
2825
2921
|
.replace(/</g, "<")
|
|
2826
2922
|
.replace(/>/g, ">");
|
|
2923
|
+
// Cap content sent for labeling only; the model never sees the rest.
|
|
2924
|
+
const isTruncated = normalizedTextAttachment.content.length >
|
|
2925
|
+
LABEL_ATTACHMENT_TRUNCATION_CHARS;
|
|
2926
|
+
const content = isTruncated
|
|
2927
|
+
? truncateTextForLabeling(normalizedTextAttachment.content, LABEL_ATTACHMENT_TRUNCATION_CHARS) + "\n...[truncated]"
|
|
2928
|
+
: normalizedTextAttachment.content;
|
|
2929
|
+
if (isTruncated) {
|
|
2930
|
+
recordAttachmentLabelTruncated({
|
|
2931
|
+
mimeType: normalizedTextAttachment.mimeType,
|
|
2932
|
+
});
|
|
2933
|
+
}
|
|
2827
2934
|
return {
|
|
2828
2935
|
type: "text",
|
|
2829
|
-
text: `<${normalizedTextAttachment.tagName}_file name="${sanitizedFileName}" mimeType="${sanitizedMimeType}">\n${
|
|
2936
|
+
text: `<${normalizedTextAttachment.tagName}_file name="${sanitizedFileName}" mimeType="${sanitizedMimeType}">\n${content}\n</${normalizedTextAttachment.tagName}_file>`,
|
|
2830
2937
|
};
|
|
2831
2938
|
}
|
|
2832
2939
|
throw new Error(`Unsupported attachment type: ${attachment.type}`);
|
|
@@ -3811,6 +3918,13 @@ export class AiService extends TracedEventEmitter {
|
|
|
3811
3918
|
if (this.taskStore) {
|
|
3812
3919
|
this.pendingTaskResyncPeerIds.add(peerId);
|
|
3813
3920
|
}
|
|
3921
|
+
// 4. Close out tool calls the transcript still reports as running but
|
|
3922
|
+
// that no process is executing (ENG-6785). Does not gate the connect
|
|
3923
|
+
// handshake: the peer is already bound, and the reconcile is several
|
|
3924
|
+
// RPCs long. Reconnect `getMessages({ force })` joins this promise so
|
|
3925
|
+
// the open tab's history reload includes the repair. A failed load or
|
|
3926
|
+
// push retries on a later bind.
|
|
3927
|
+
void this.chatSessionStore.reconcileAbandonedToolCalls();
|
|
3814
3928
|
this.tryAutoDispatchMigrationTurnIfReady();
|
|
3815
3929
|
}
|
|
3816
3930
|
/**
|
|
@@ -3939,6 +4053,46 @@ export class AiService extends TracedEventEmitter {
|
|
|
3939
4053
|
}
|
|
3940
4054
|
this.clearPeerConnection();
|
|
3941
4055
|
}
|
|
4056
|
+
/**
|
|
4057
|
+
* A lifecycle transition failed after potentially replacing the transport.
|
|
4058
|
+
* The socket manager no longer has a trustworthy owner to disconnect by ID.
|
|
4059
|
+
* Drop the actual binding even if context disposal fails; the caller must
|
|
4060
|
+
* retry this cleanup successfully before allowing another editor to bind.
|
|
4061
|
+
*/
|
|
4062
|
+
resetEditorConnection() {
|
|
4063
|
+
try {
|
|
4064
|
+
const contextId = this.getContextId();
|
|
4065
|
+
if (contextId)
|
|
4066
|
+
this.contextManagerV2.clearContext(contextId);
|
|
4067
|
+
}
|
|
4068
|
+
finally {
|
|
4069
|
+
this.pendingTaskResyncPeerIds.clear();
|
|
4070
|
+
this.authenticatedPeerUserId = undefined;
|
|
4071
|
+
this.authenticatedPeerId = undefined;
|
|
4072
|
+
this.clearPeerConnection();
|
|
4073
|
+
this.stablePeer.closeAndRejectPendingRequests();
|
|
4074
|
+
}
|
|
4075
|
+
}
|
|
4076
|
+
/**
|
|
4077
|
+
* The bound editor's transport is gone, but a reconnect for the same peer
|
|
4078
|
+
* is already open and on its way to proving its authorization. The
|
|
4079
|
+
* conversation stays: only the socket is dropped, so calls made in the
|
|
4080
|
+
* meantime queue on the StablePeer and flush when that reconnect binds,
|
|
4081
|
+
* instead of being written into a dead connection. The peer identity is
|
|
4082
|
+
* kept, so the full teardown in `handleUserDisconnected` still recognizes
|
|
4083
|
+
* the peer when the last socket for it closes.
|
|
4084
|
+
*/
|
|
4085
|
+
detachPeerTransport(peerId) {
|
|
4086
|
+
if (this.stablePeer.peerId !== peerId) {
|
|
4087
|
+
this.getLogger().debug("[ai-service] Ignored detach for a different peer", {
|
|
4088
|
+
"peer.id": peerId,
|
|
4089
|
+
"peer.bound_id": this.stablePeer.peerId,
|
|
4090
|
+
});
|
|
4091
|
+
return;
|
|
4092
|
+
}
|
|
4093
|
+
this.getLogger().info(`[ai-service] Editor transport detached while peer ${peerId} reconnects`);
|
|
4094
|
+
this.stablePeer.detachTransport();
|
|
4095
|
+
}
|
|
3942
4096
|
clearPeerConnection() {
|
|
3943
4097
|
this.getLogger().info(`[ai-service] Clearing peer connection`);
|
|
3944
4098
|
// The StablePeer reference on `clark.context.peer` stays — we only mark
|