@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
|
@@ -1,41 +1,257 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createTwoFilesPatch } from "diff";
|
|
1
3
|
import z from "zod";
|
|
2
4
|
import { recordAppKnowledgeReadIfApplicable } from "../../knowledge/knowledge-metrics-emitters.js";
|
|
3
|
-
import { SKILL_PATH_PREFIXES, SkillLayer } from "../../skills/types.js";
|
|
5
|
+
import { isSkillPath, SKILL_PATH_PREFIXES, SkillLayer, } from "../../skills/types.js";
|
|
6
|
+
import { normalizeRanges } from "../../util/line-ranges.js";
|
|
4
7
|
import { createToolFactory, ToolCategory, ToolExecutionError, } from "../tools2/types.js";
|
|
8
|
+
import { classifyReadFilePath, recordBuildReadFile, } from "./read-file-metrics.js";
|
|
5
9
|
const MAX_LIMIT_READ_FILES = 25000;
|
|
10
|
+
const DEFAULT_PAGE_CHARS = 10000;
|
|
11
|
+
const DEFAULT_PAGE_LINES = 300;
|
|
12
|
+
const SKILL_FULL_READ_CHARS = 40000;
|
|
6
13
|
const ERROR_PREFIX = "Failed to read file:";
|
|
14
|
+
const ALREADY_READ_MESSAGE = `This skill file has already been read in this session and is still in context. You do not need to read it again.`;
|
|
15
|
+
function isReadFileContent(output) {
|
|
16
|
+
return (typeof output === "object" &&
|
|
17
|
+
output !== null &&
|
|
18
|
+
output.kind === "content");
|
|
19
|
+
}
|
|
20
|
+
export function renderReadFileOutput(output) {
|
|
21
|
+
if (!isReadFileContent(output)) {
|
|
22
|
+
return typeof output === "string" ? output : String(output);
|
|
23
|
+
}
|
|
24
|
+
const parts = [];
|
|
25
|
+
if (output.nextStart !== undefined) {
|
|
26
|
+
const remaining = output.totalLines - output.nextStart + 1;
|
|
27
|
+
parts.push(`<truncated nextStart="${output.nextStart}" remaining="${remaining}"/>`);
|
|
28
|
+
}
|
|
29
|
+
parts.push(...output.ranges.map((range) => `<content range="${range.start}-${range.end}" lines="${range.end - range.start + 1}">\n${range.content}\n</content>`));
|
|
30
|
+
return `<file totalLines="${output.totalLines}">\n${parts.join("\n")}\n</file>`;
|
|
31
|
+
}
|
|
7
32
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 1-indexed inclusive ranges in ascending order.
|
|
33
|
+
* Marks a stub returned instead of content the model can already see. Shared
|
|
34
|
+
* with the eval assertions so the two cannot drift.
|
|
11
35
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
export const BUILD_READ_FILE_STUB_MARKER = 'status="already-in-context"';
|
|
37
|
+
/**
|
|
38
|
+
* Inclusive 1-indexed end line of a page starting at `startLine`. Stops at
|
|
39
|
+
* `maxLines` or before the joined body would exceed `maxChars`. Always includes
|
|
40
|
+
* the first line even when that line alone is over `maxChars`.
|
|
41
|
+
*/
|
|
42
|
+
function selectPageEnd(lines, startLine, maxChars, maxLines) {
|
|
43
|
+
const startIdx = startLine - 1;
|
|
44
|
+
const firstLine = lines[startIdx];
|
|
45
|
+
if (firstLine === undefined) {
|
|
46
|
+
return startLine - 1;
|
|
47
|
+
}
|
|
48
|
+
let endLine = startLine;
|
|
49
|
+
let charCount = firstLine.length;
|
|
50
|
+
const maxEnd = Math.min(lines.length, startIdx + maxLines);
|
|
51
|
+
for (let i = startIdx + 1; i < maxEnd; i++) {
|
|
52
|
+
const nextLine = lines[i];
|
|
53
|
+
if (nextLine === undefined) {
|
|
54
|
+
break;
|
|
26
55
|
}
|
|
27
|
-
|
|
56
|
+
const nextCount = charCount + 1 + nextLine.length;
|
|
57
|
+
if (nextCount > maxChars) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
charCount = nextCount;
|
|
61
|
+
endLine = i + 1;
|
|
62
|
+
}
|
|
63
|
+
return endLine;
|
|
64
|
+
}
|
|
65
|
+
function sliceBody(lines, startLine, endLine) {
|
|
66
|
+
return lines.slice(startLine - 1, endLine).join("\n");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Splitting on newlines yields a trailing empty element when the file ends in
|
|
70
|
+
* a newline. Drop that phantom line so a 300-line POSIX file is not reported
|
|
71
|
+
* as 301.
|
|
72
|
+
*/
|
|
73
|
+
function splitFileLines(fileContent) {
|
|
74
|
+
const lines = fileContent.split("\n");
|
|
75
|
+
if (lines.length > 1 && lines[lines.length - 1] === "") {
|
|
76
|
+
lines.pop();
|
|
77
|
+
}
|
|
78
|
+
return lines;
|
|
79
|
+
}
|
|
80
|
+
function buildLeadingBlock(lines, totalLines, endLine, paged) {
|
|
81
|
+
const complete = endLine === totalLines;
|
|
82
|
+
return {
|
|
83
|
+
kind: "content",
|
|
84
|
+
totalLines,
|
|
85
|
+
ranges: [{ start: 1, end: endLine, content: sliceBody(lines, 1, endLine) }],
|
|
86
|
+
complete,
|
|
87
|
+
...(paged && !complete ? { nextStart: endLine + 1 } : {}),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* First delivered line that blows the cap even when returned on its own. The
|
|
92
|
+
* probe reproduces the shape a single-line result would really have so the
|
|
93
|
+
* answer does not drift from what the caller would get if it retried.
|
|
94
|
+
*/
|
|
95
|
+
function findUnsplittableLine(result, lines) {
|
|
96
|
+
for (const range of result.ranges) {
|
|
97
|
+
for (let line = range.start; line <= range.end; line++) {
|
|
98
|
+
const alone = {
|
|
99
|
+
kind: "content",
|
|
100
|
+
totalLines: result.totalLines,
|
|
101
|
+
ranges: [{ start: line, end: line, content: lines[line - 1] ?? "" }],
|
|
102
|
+
complete: line === 1 && result.totalLines === 1,
|
|
103
|
+
...(line < result.totalLines ? { nextStart: line + 1 } : {}),
|
|
104
|
+
};
|
|
105
|
+
if (renderReadFileOutput(alone).length > MAX_LIMIT_READ_FILES) {
|
|
106
|
+
return line;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The rendered size is the only budget the model sees, so every construction
|
|
114
|
+
* path checks it here. `fallbackMessage` carries the path-specific advice, but
|
|
115
|
+
* a line that cannot fit on its own is named instead: "use smaller ranges"
|
|
116
|
+
* sends the agent bisecting toward a range it can never satisfy.
|
|
117
|
+
*/
|
|
118
|
+
function enforceRenderedCap(result, lines, fallbackMessage) {
|
|
119
|
+
if (renderReadFileOutput(result).length <= MAX_LIMIT_READ_FILES) {
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
const unsplittable = findUnsplittableLine(result, lines);
|
|
123
|
+
throw new ToolExecutionError(unsplittable === undefined
|
|
124
|
+
? fallbackMessage
|
|
125
|
+
: `Line ${unsplittable} of this file is ${lines[unsplittable - 1]?.length ?? 0} characters, which alone exceeds the ${MAX_LIMIT_READ_FILES}-character result limit. That line cannot be returned; request ranges that exclude it.`, { toolName: "", input: {}, context: {}, severity: "warn" });
|
|
126
|
+
}
|
|
127
|
+
function buildDefaultPage(lines, totalLines) {
|
|
128
|
+
let endLine = selectPageEnd(lines, 1, DEFAULT_PAGE_CHARS, DEFAULT_PAGE_LINES);
|
|
129
|
+
let result = buildLeadingBlock(lines, totalLines, endLine, true);
|
|
130
|
+
while (renderReadFileOutput(result).length > MAX_LIMIT_READ_FILES &&
|
|
131
|
+
endLine > 1) {
|
|
132
|
+
endLine -= 1;
|
|
133
|
+
result = buildLeadingBlock(lines, totalLines, endLine, true);
|
|
134
|
+
}
|
|
135
|
+
// Only reachable once the page is down to a single line, so telling the
|
|
136
|
+
// caller to use ranges would just route it into the ranged-read cap.
|
|
137
|
+
return enforceRenderedCap(result, lines, `The first line of this file cannot be returned within the ${MAX_LIMIT_READ_FILES}-character result limit.`);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Clark is told to read app knowledge at `skills/app/*`; the virtual skill
|
|
141
|
+
* prefix for the same files is `.superblocks/skills/app/`. Treat both as
|
|
142
|
+
* user-authored skill paths so they get the 25k one-shot, not the 10k page.
|
|
143
|
+
*/
|
|
144
|
+
function isUserAuthoredSkillPath(filePath) {
|
|
145
|
+
if (filePath.startsWith(SKILL_PATH_PREFIXES[SkillLayer.SYSTEM])) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return isSkillPath(filePath) || filePath.startsWith("skills/app/");
|
|
149
|
+
}
|
|
150
|
+
function buildFullRead(lines, totalLines, enforceCap) {
|
|
151
|
+
const result = buildLeadingBlock(lines, totalLines, totalLines, false);
|
|
152
|
+
if (!enforceCap) {
|
|
153
|
+
return result;
|
|
28
154
|
}
|
|
29
|
-
return
|
|
155
|
+
return enforceRenderedCap(result, lines, `The file is too large to read all at once. Please read it in parts by specifying line ranges.`);
|
|
30
156
|
}
|
|
31
|
-
|
|
157
|
+
/**
|
|
158
|
+
* Structured like the content envelope because models re-read partly just to
|
|
159
|
+
* relearn line numbers. The closing instruction is the model-visible half of
|
|
160
|
+
* the ledger's auto-bypass: asking again serves the bytes.
|
|
161
|
+
*/
|
|
162
|
+
function buildAlreadyInContextStub(filePath, totalLines, servedRanges) {
|
|
163
|
+
const served = servedRanges
|
|
164
|
+
.map((range) => `${range.start}-${range.end}`)
|
|
165
|
+
.join(",");
|
|
166
|
+
return (`<file path="${filePath}" lines="${totalLines}" ${BUILD_READ_FILE_STUB_MARKER} served="${served}"/>\n` +
|
|
167
|
+
`This file's current content is unchanged from the copy already in your context.\n` +
|
|
168
|
+
`Call this tool again for the same path if you cannot see it.`);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Matches only the complete, single-range envelope `renderReadFileOutput`
|
|
172
|
+
* writes for a full read (`result.complete === true`, no `<truncated>`
|
|
173
|
+
* prefix) - not a ranged/paged read, and not a previous diff or stub, both of
|
|
174
|
+
* which have a different shape. This is what keeps diff re-injection from
|
|
175
|
+
* chaining: a read served as a diff cannot itself become the base of a later
|
|
176
|
+
* diff, because its own output no longer matches this pattern. The next
|
|
177
|
+
* change after a diff-served read falls back to a full serve, which becomes
|
|
178
|
+
* a valid base again.
|
|
179
|
+
*/
|
|
180
|
+
const FULL_READ_ENVELOPE_PATTERN = /^<file totalLines="\d+">\n<content range="1-\d+" lines="\d+">\n([\s\S]*)\n<\/content>\n<\/file>$/;
|
|
181
|
+
function extractFullReadContent(output) {
|
|
182
|
+
return FULL_READ_ENVELOPE_PATTERN.exec(output)?.[1];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Only diff-reinject when the delta is meaningfully cheaper than just serving
|
|
186
|
+
* the current content again. A near-total rewrite must not regress to a diff
|
|
187
|
+
* larger than the file it stands in for.
|
|
188
|
+
*/
|
|
189
|
+
const DIFF_SIZE_GUARD_RATIO = 0.6;
|
|
190
|
+
/** Opening tag of a diff re-injection, for the paths that have to spot one. */
|
|
191
|
+
const DIFF_OUTPUT_PREFIX = "<file-diff";
|
|
192
|
+
function isDiffReinjectionOutput(output) {
|
|
193
|
+
return typeof output === "string" && output.startsWith(DIFF_OUTPUT_PREFIX);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Builds a diff-based re-injection output when the file changed since a
|
|
197
|
+
* still-live full read, and it is worth serving over the full new content.
|
|
198
|
+
* Returns undefined whenever any precondition fails, so the caller always has
|
|
199
|
+
* a safe, correct fallback: serve `fullOutput` as if this were never tried.
|
|
200
|
+
*/
|
|
201
|
+
function buildDiffReinjectionOutput(input) {
|
|
202
|
+
const { fileReadTracker, isFullRead, evaluation, filePath, fileContent } = input;
|
|
203
|
+
if (!isFullRead ||
|
|
204
|
+
!fileReadTracker?.diffReinjectionEnabled ||
|
|
205
|
+
evaluation?.decision !== "serve" ||
|
|
206
|
+
evaluation.reason !== "content_changed" ||
|
|
207
|
+
!evaluation.previousFullReadToolCallId) {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
const previousOutput = fileReadTracker.getPreviousReadText(evaluation.previousFullReadToolCallId);
|
|
211
|
+
const previousContent = previousOutput !== undefined
|
|
212
|
+
? extractFullReadContent(previousOutput)
|
|
213
|
+
: undefined;
|
|
214
|
+
if (previousContent === undefined) {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
const patch = createTwoFilesPatch(filePath, filePath, previousContent, fileContent);
|
|
218
|
+
const output = `<file-diff path="${filePath}" from-read="${evaluation.previousFullReadToolCallId}">\n` +
|
|
219
|
+
`${patch}` +
|
|
220
|
+
`</file-diff>\n` +
|
|
221
|
+
`Diff since your last full read of this file. Combine with that content for the current file, or call again for the full file.`;
|
|
222
|
+
if (output.length >= input.fullOutput.length * DIFF_SIZE_GUARD_RATIO) {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
return { output, baseToolCallId: evaluation.previousFullReadToolCallId };
|
|
226
|
+
}
|
|
227
|
+
export const buildReadFileToolFactory = createToolFactory("build_readFile", ({ services, skillReadTracker, fileReadTracker, defaultReadMode = "page", }) => {
|
|
228
|
+
const pages = defaultReadMode === "page";
|
|
229
|
+
// Only promise the stub when this session will actually return one. At the
|
|
230
|
+
// default `off`, and under `observe`, the tool always serves content.
|
|
231
|
+
const dedupeEnforced = fileReadTracker !== undefined && !fileReadTracker.observeOnly;
|
|
32
232
|
return {
|
|
33
233
|
category: ToolCategory.FILE,
|
|
34
|
-
description:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
234
|
+
description: pages
|
|
235
|
+
? `
|
|
236
|
+
Read content from a file in the application.
|
|
237
|
+
- When ranges are omitted, return the first page: up to ${DEFAULT_PAGE_LINES} lines or ${DEFAULT_PAGE_CHARS} characters of file body, whichever is first.
|
|
238
|
+
- If the last returned line is not the last file line, the result leads with <truncated nextStart="N" remaining="M"/>, including ranged reads that were delivered in full. Resume with ranges starting at N. If there is no <truncated> element, this result reached the end of the file.
|
|
239
|
+
- File bytes are only inside <content>. <file totalLines="N"> is the full file length. Compare content range attributes to totalLines to see which lines this result actually holds.
|
|
240
|
+
- Org, user, integration, and app skill files that wrap under ${MAX_LIMIT_READ_FILES} characters are returned in full.
|
|
241
|
+
- System skill files under ${SKILL_FULL_READ_CHARS} characters are returned in full.
|
|
242
|
+
- Explicit ranges are returned as requested. Multiple ranges are allowed. The wrapped result must stay under ${MAX_LIMIT_READ_FILES} characters; oversized ranges error instead of truncating.${dedupeEnforced
|
|
243
|
+
? `
|
|
244
|
+
- If you have already read a file in this session and it has not changed, this tool returns a short stub instead of the content.`
|
|
245
|
+
: ""}
|
|
246
|
+
`
|
|
247
|
+
: `
|
|
248
|
+
Read content from a file in the application.
|
|
249
|
+
- When ranges are omitted, the entire file is returned. Results over ${MAX_LIMIT_READ_FILES} characters error instead of truncating; read those files in parts by specifying line ranges.
|
|
250
|
+
- File bytes are only inside <content>. <file totalLines="N"> is the full file length. If a ranged read's last line is not the last file line, it leads with <truncated nextStart remaining/>.
|
|
251
|
+
- Explicit ranges are returned as requested. Multiple ranges are allowed.${dedupeEnforced
|
|
252
|
+
? `
|
|
253
|
+
- If you have already read a file in this session and it has not changed, this tool returns a short stub instead of the content.`
|
|
254
|
+
: ""}
|
|
39
255
|
`,
|
|
40
256
|
inputSchema: z.object({
|
|
41
257
|
filePath: z.string().describe("Path to the file to read"),
|
|
@@ -53,59 +269,188 @@ export const buildReadFileToolFactory = createToolFactory("build_readFile", ({ s
|
|
|
53
269
|
.describe("Ending line number (1-indexed, inclusive)"),
|
|
54
270
|
}))
|
|
55
271
|
.optional()
|
|
56
|
-
.describe(
|
|
272
|
+
.describe(pages
|
|
273
|
+
? `Optional 1-indexed inclusive line ranges. If omitted, the first page is returned (${DEFAULT_PAGE_LINES} lines or ${DEFAULT_PAGE_CHARS} characters, whichever is first) unless this is a skill file under ${MAX_LIMIT_READ_FILES} characters or a system skill under ${SKILL_FULL_READ_CHARS} characters.`
|
|
274
|
+
: "Optional 1-indexed inclusive line ranges. If omitted, the entire file is returned."),
|
|
57
275
|
}),
|
|
58
|
-
execute: async ({ filePath, ranges }) => {
|
|
59
|
-
let fileContent;
|
|
60
|
-
let lines;
|
|
61
|
-
let totalLines;
|
|
62
|
-
// Deduplicate full reads of system skill files that are already in context
|
|
276
|
+
execute: async ({ filePath, ranges }, { toolCallId }) => {
|
|
63
277
|
const isSystemSkill = filePath.startsWith(SKILL_PATH_PREFIXES[SkillLayer.SYSTEM]);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
278
|
+
const unranged = !ranges || ranges.length === 0;
|
|
279
|
+
// Deduplicate full reads of system skill files that are already in
|
|
280
|
+
// context. Predates the read ledger and stays until the ledger is at
|
|
281
|
+
// 100%: it also drives `protected`, not just dedupe.
|
|
282
|
+
if (isSystemSkill && unranged && skillReadTracker?.hasRead(filePath)) {
|
|
283
|
+
return ALREADY_READ_MESSAGE;
|
|
68
284
|
}
|
|
69
285
|
try {
|
|
70
|
-
fileContent = await services.appShell.readFile(filePath);
|
|
71
|
-
lines = fileContent
|
|
72
|
-
totalLines = lines.length;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const output = `<file lines="${totalLines}">\n<content range="1-${totalLines}" lines="${totalLines}">\n${fileContent}\n</content>\n</file>`;
|
|
77
|
-
if (output.length > MAX_LIMIT_READ_FILES) {
|
|
78
|
-
throw new ToolExecutionError(`The file is too large to read all at once. Please read it in parts by specifying line ranges.`, { toolName: "", input: {}, context: {}, severity: "warn" });
|
|
79
|
-
}
|
|
80
|
-
if (isSystemSkill) {
|
|
81
|
-
skillReadTracker?.markRead(filePath);
|
|
286
|
+
const fileContent = await services.appShell.readFile(filePath);
|
|
287
|
+
const lines = splitFileLines(fileContent);
|
|
288
|
+
const totalLines = lines.length;
|
|
289
|
+
const emit = (decision, reason, charsServed, charsSuppressed) => {
|
|
290
|
+
if (!fileReadTracker) {
|
|
291
|
+
return;
|
|
82
292
|
}
|
|
83
|
-
|
|
84
|
-
|
|
293
|
+
recordBuildReadFile({
|
|
294
|
+
charsServed,
|
|
295
|
+
charsSuppressed,
|
|
296
|
+
decision,
|
|
297
|
+
ledgerEntries: fileReadTracker.ledgerSize(),
|
|
298
|
+
pathClass: classifyReadFilePath(filePath),
|
|
299
|
+
reason,
|
|
300
|
+
requestKind: unranged ? "full" : "ranged",
|
|
301
|
+
});
|
|
302
|
+
};
|
|
303
|
+
let result;
|
|
304
|
+
// Ranged-read cap enforcement is deferred past the ledger check
|
|
305
|
+
// below (see the `capMessage` use), so a request the ledger already
|
|
306
|
+
// covers dedupes into a stub instead of erroring on size. The
|
|
307
|
+
// unranged branch already enforces its own cap during
|
|
308
|
+
// construction: paging self-limits well under the cap, and the
|
|
309
|
+
// security-scan agent's uncapped full-read carve-out has no
|
|
310
|
+
// `fileReadTracker` wired in, so there is nothing to defer there.
|
|
311
|
+
let capMessage;
|
|
312
|
+
if (unranged) {
|
|
313
|
+
const skillCarveOut = isSystemSkill && fileContent.length <= SKILL_FULL_READ_CHARS;
|
|
314
|
+
result = (() => {
|
|
315
|
+
if (skillCarveOut || !pages) {
|
|
316
|
+
return buildFullRead(lines, totalLines, !skillCarveOut);
|
|
317
|
+
}
|
|
318
|
+
if (isUserAuthoredSkillPath(filePath)) {
|
|
319
|
+
const full = buildLeadingBlock(lines, totalLines, totalLines, false);
|
|
320
|
+
if (renderReadFileOutput(full).length <= MAX_LIMIT_READ_FILES) {
|
|
321
|
+
return full;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return buildDefaultPage(lines, totalLines);
|
|
325
|
+
})();
|
|
85
326
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
327
|
+
else {
|
|
328
|
+
const contentRanges = normalizeRanges(ranges, totalLines).map((range) => ({
|
|
329
|
+
start: range.start,
|
|
330
|
+
end: range.end,
|
|
331
|
+
content: sliceBody(lines, range.start, range.end),
|
|
332
|
+
}));
|
|
333
|
+
if (contentRanges.length === 0) {
|
|
334
|
+
// Counted so the redundancy rate's denominator stays complete. A
|
|
335
|
+
// request that fails definitionally did not dedupe, so `served`
|
|
336
|
+
// with no characters is the honest label.
|
|
337
|
+
emit("served", "range_not_covered", 0, 0);
|
|
338
|
+
throw new ToolExecutionError("No valid line ranges were provided or all ranges were invalid.", { toolName: "", input: {}, context: {}, severity: "warn" });
|
|
339
|
+
}
|
|
340
|
+
const first = contentRanges[0];
|
|
341
|
+
const lastEnd = Math.max(...contentRanges.map((range) => range.end));
|
|
342
|
+
result = {
|
|
343
|
+
kind: "content",
|
|
344
|
+
totalLines,
|
|
345
|
+
ranges: contentRanges,
|
|
346
|
+
complete: contentRanges.length === 1 &&
|
|
347
|
+
first !== undefined &&
|
|
348
|
+
first.start === 1 &&
|
|
349
|
+
first.end === totalLines,
|
|
350
|
+
...(lastEnd < totalLines ? { nextStart: lastEnd + 1 } : {}),
|
|
93
351
|
};
|
|
352
|
+
capMessage = `The total content across all specified ranges exceeds the ${MAX_LIMIT_READ_FILES}-character limit. Please reduce the number of ranges or the size of each range.`;
|
|
353
|
+
}
|
|
354
|
+
// Freshness is exact and free: the whole file is already in hand,
|
|
355
|
+
// so a hash comparison answers "did this change" with no
|
|
356
|
+
// invalidation plumbing. Only paid for when the ledger is on.
|
|
357
|
+
// `result.ranges` is ground truth for what this call would serve,
|
|
358
|
+
// whether that came from an explicit range or a computed page, so
|
|
359
|
+
// the ledger is always asked about the real coverage rather than
|
|
360
|
+
// assuming an unranged request means the whole file.
|
|
361
|
+
const requestedForLedger = result.ranges.map((range) => ({ start: range.start, end: range.end }));
|
|
362
|
+
const contentHash = fileReadTracker
|
|
363
|
+
? createHash("sha256").update(fileContent).digest("hex")
|
|
364
|
+
: "";
|
|
365
|
+
const evaluation = fileReadTracker?.evaluate({
|
|
366
|
+
filePath,
|
|
367
|
+
contentHash,
|
|
368
|
+
totalLines,
|
|
369
|
+
requested: requestedForLedger,
|
|
94
370
|
});
|
|
95
|
-
if (
|
|
96
|
-
|
|
371
|
+
if (fileReadTracker && evaluation?.decision === "dedupe") {
|
|
372
|
+
// Both modes take the same bookkeeping so `observe` measures what
|
|
373
|
+
// `enforce` would really do: without the stub count, the
|
|
374
|
+
// auto-bypass ceiling never applies and the counterfactual reads
|
|
375
|
+
// high. Neither mode records a contribution - `enforce` puts no
|
|
376
|
+
// new bytes in context, and `observe` must not either, or a
|
|
377
|
+
// re-read would keep appending ids nothing can prune.
|
|
378
|
+
fileReadTracker.recordStub(filePath, requestedForLedger);
|
|
379
|
+
// Still fires on the dedupe path: this is a knowledge-USAGE
|
|
380
|
+
// metric, so dropping it here would silently deflate app-knowledge
|
|
381
|
+
// adoption dashboards.
|
|
382
|
+
recordAppKnowledgeReadIfApplicable(filePath);
|
|
383
|
+
if (!fileReadTracker.observeOnly) {
|
|
384
|
+
emit("deduped", "stub", 0, renderReadFileOutput(result).length);
|
|
385
|
+
return buildAlreadyInContextStub(filePath, totalLines, evaluation.coverage);
|
|
386
|
+
}
|
|
387
|
+
// observe serves the real content below, so it still owes the cap
|
|
388
|
+
// the `off` path would have applied - but the counterfactual is
|
|
389
|
+
// recorded first. An oversize request the ledger already covers is
|
|
390
|
+
// the single largest saving `enforce` makes, and emitting after the
|
|
391
|
+
// throw would drop exactly that data point, biasing the rollout
|
|
392
|
+
// gate against its own best case.
|
|
393
|
+
const rendered = renderReadFileOutput(result);
|
|
394
|
+
const overCap = rendered.length > MAX_LIMIT_READ_FILES;
|
|
395
|
+
emit("would_dedupe", "stub", overCap ? 0 : rendered.length, rendered.length);
|
|
396
|
+
if (capMessage) {
|
|
397
|
+
enforceRenderedCap(result, lines, capMessage);
|
|
398
|
+
}
|
|
399
|
+
if (unranged && isSystemSkill && result.complete) {
|
|
400
|
+
skillReadTracker?.markRead(filePath);
|
|
401
|
+
}
|
|
402
|
+
return result;
|
|
403
|
+
}
|
|
404
|
+
const fullOutput = renderReadFileOutput(result);
|
|
405
|
+
if (capMessage) {
|
|
406
|
+
// Counted before the throw, for the same reason the observe branch
|
|
407
|
+
// is: a request that dies on the cap is still a request, and
|
|
408
|
+
// dropping it silently shrinks the denominator every rate on this
|
|
409
|
+
// metric is computed against.
|
|
410
|
+
if (fullOutput.length > MAX_LIMIT_READ_FILES) {
|
|
411
|
+
emit("served", evaluation?.decision === "serve"
|
|
412
|
+
? evaluation.reason
|
|
413
|
+
: "no_context", 0, 0);
|
|
414
|
+
}
|
|
415
|
+
enforceRenderedCap(result, lines, capMessage);
|
|
97
416
|
}
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (output.length > MAX_LIMIT_READ_FILES) {
|
|
105
|
-
throw new ToolExecutionError(`The total content across all specified ranges exceeds the 25k character limit. Please reduce the number of ranges or the size of each range.`, { toolName: "", input: {}, context: {}, severity: "warn" });
|
|
417
|
+
// `unranged` matters: the legacy skill dedupe only ever armed on a
|
|
418
|
+
// whole-file request with no ranges. A ranged read that happens to
|
|
419
|
+
// span the file must not arm it, or `off` stops reproducing prior
|
|
420
|
+
// behavior - this call is not gated on the ledger being on.
|
|
421
|
+
if (unranged && isSystemSkill && result.complete) {
|
|
422
|
+
skillReadTracker?.markRead(filePath);
|
|
106
423
|
}
|
|
107
424
|
recordAppKnowledgeReadIfApplicable(filePath);
|
|
108
|
-
|
|
425
|
+
// Decided before recording, because what gets recorded depends on
|
|
426
|
+
// it: a diff covers the new content only in combination with the
|
|
427
|
+
// read it was built on.
|
|
428
|
+
const reinjection = buildDiffReinjectionOutput({
|
|
429
|
+
evaluation,
|
|
430
|
+
fileContent,
|
|
431
|
+
fileReadTracker,
|
|
432
|
+
filePath,
|
|
433
|
+
fullOutput,
|
|
434
|
+
isFullRead: result.complete,
|
|
435
|
+
});
|
|
436
|
+
fileReadTracker?.recordServed({
|
|
437
|
+
filePath,
|
|
438
|
+
contentHash,
|
|
439
|
+
totalLines,
|
|
440
|
+
served: requestedForLedger,
|
|
441
|
+
toolCallId,
|
|
442
|
+
...(reinjection
|
|
443
|
+
? { requiresToolCallIds: [reinjection.baseToolCallId] }
|
|
444
|
+
: {}),
|
|
445
|
+
});
|
|
446
|
+
if (evaluation?.decision === "serve") {
|
|
447
|
+
if (reinjection !== undefined) {
|
|
448
|
+
emit("served_diff", evaluation.reason, reinjection.output.length, fullOutput.length - reinjection.output.length);
|
|
449
|
+
return reinjection.output;
|
|
450
|
+
}
|
|
451
|
+
emit("served", evaluation.reason, fullOutput.length, 0);
|
|
452
|
+
}
|
|
453
|
+
return result;
|
|
109
454
|
}
|
|
110
455
|
catch (error) {
|
|
111
456
|
if (!(error instanceof Error)) {
|
|
@@ -120,27 +465,53 @@ export const buildReadFileToolFactory = createToolFactory("build_readFile", ({ s
|
|
|
120
465
|
}
|
|
121
466
|
},
|
|
122
467
|
readOnly: true,
|
|
468
|
+
toModelOutput: ({ output }) => ({
|
|
469
|
+
type: "text",
|
|
470
|
+
value: renderReadFileOutput(output),
|
|
471
|
+
}),
|
|
472
|
+
/**
|
|
473
|
+
* `execute` already holds its own rendered output under
|
|
474
|
+
* MAX_LIMIT_READ_FILES on every path except the deliberate system-skill
|
|
475
|
+
* carve-out. The limiter would instead measure `safeJsonStringify` of the
|
|
476
|
+
* structured result, whose escaping the model never sees, so let the
|
|
477
|
+
* tool's accounting win and leave the limiter to the bare-string cases.
|
|
478
|
+
*
|
|
479
|
+
* A diff is exempt for the same reason plus a sharper one: the ledger has
|
|
480
|
+
* already recorded the new content as covered by the time the limiter
|
|
481
|
+
* runs, so truncating the diff here would leave the ledger claiming
|
|
482
|
+
* coverage for bytes the model never received, and the next unchanged
|
|
483
|
+
* read would stub it. The diff carries its own bound instead - it is only
|
|
484
|
+
* served when it comes in under a fraction of the full result.
|
|
485
|
+
*/
|
|
486
|
+
skipOutputLimit: (output) => isReadFileContent(output) || isDiffReinjectionOutput(output),
|
|
123
487
|
getSummary: (input, output) => {
|
|
124
|
-
// Check if this is a system skill file (protected from compaction)
|
|
125
488
|
const isSystemSkill = input.filePath.startsWith(SKILL_PATH_PREFIXES[SkillLayer.SYSTEM]);
|
|
126
|
-
//
|
|
127
|
-
if (
|
|
128
|
-
|
|
489
|
+
// Protecting a stub costs real tokens for nothing.
|
|
490
|
+
if (typeof output === "string" &&
|
|
491
|
+
output.startsWith("<file path=") &&
|
|
492
|
+
output.includes(BUILD_READ_FILE_STUB_MARKER)) {
|
|
493
|
+
return { output: "already in context", protected: false };
|
|
129
494
|
}
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
495
|
+
// A diff is derived from a prior read that is still live elsewhere in
|
|
496
|
+
// context; the prior read already carries whatever protection it
|
|
497
|
+
// needs, so the diff itself does not need its own.
|
|
498
|
+
if (isDiffReinjectionOutput(output)) {
|
|
499
|
+
return { output: "diff", protected: false };
|
|
500
|
+
}
|
|
501
|
+
if (!isReadFileContent(output)) {
|
|
136
502
|
return { output: "full read", protected: isSystemSkill };
|
|
137
503
|
}
|
|
138
|
-
if (ranges.length ===
|
|
139
|
-
return { output:
|
|
504
|
+
if ((!input.ranges || input.ranges.length === 0) && output.complete) {
|
|
505
|
+
return { output: "full read", protected: isSystemSkill };
|
|
140
506
|
}
|
|
507
|
+
const rangeText = output.ranges
|
|
508
|
+
.map((range) => `${range.start}-${range.end}`)
|
|
509
|
+
.join(", ");
|
|
510
|
+
// A read that stops short of the file is a candidate for compaction
|
|
511
|
+
// however it was requested; pinning half a skill helps nobody.
|
|
141
512
|
return {
|
|
142
|
-
output: `lines ${
|
|
143
|
-
protected: isSystemSkill,
|
|
513
|
+
output: rangeText ? `lines ${rangeText}` : "partial read",
|
|
514
|
+
protected: isSystemSkill && output.complete,
|
|
144
515
|
};
|
|
145
516
|
},
|
|
146
517
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-read-file.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-read-file.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-file.ts"],"names":[],"mappings":"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"}
|