@superblocksteam/vite-plugin-file-sync 2.0.76 → 2.0.77-next.0
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 +14 -0
- package/dist/ai-service/agent/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +45 -0
- 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 +66 -5
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.js +11 -5
- package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js +15 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +3 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +12 -3
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +6 -0
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +99 -3
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.js +85 -23
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +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 +26 -45
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
- package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.js +8 -2
- package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +3 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.js +58 -6
- package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.js +27 -196
- package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.js +12 -22
- package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +3 -0
- package/dist/ai-service/agent/tools/build-finalize.js.map +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 +15 -0
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-list-files.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-list-files.js +6 -14
- package/dist/ai-service/agent/tools/build-list-files.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.js +9 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.js +8 -25
- package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts +10 -4
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.js +75 -77
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.js +5 -0
- package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.js +3 -50
- package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.js +8 -0
- package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.js +7 -17
- package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts +10 -0
- package/dist/ai-service/agent/tools/clear-error-cache.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js +38 -0
- package/dist/ai-service/agent/tools/clear-error-cache.js.map +1 -0
- package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/get-console-logs.js +6 -0
- package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.js +4 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +1 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +1 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.js +56 -9
- package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js +10 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/run-code.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/run-code.js +9 -0
- package/dist/ai-service/agent/tools/integrations/run-code.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +29 -6
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts +15 -0
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +30 -0
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.js +10 -8
- package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/end-test-run.js +5 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +24 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/glob.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/glob.js +25 -85
- package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +9 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +22 -5
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.js +4 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts +8 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.js +102 -83
- package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.d.ts +5 -2
- package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.js +24 -12
- package/dist/ai-service/agent/tools2/tools/read.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 +13 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +6 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/write.d.ts +4 -1
- package/dist/ai-service/agent/tools2/tools/write.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/write.js +9 -4
- package/dist/ai-service/agent/tools2/tools/write.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +25 -0
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/app-interface/constants.d.ts +77 -0
- package/dist/ai-service/app-interface/constants.d.ts.map +1 -0
- package/dist/ai-service/app-interface/constants.js +128 -0
- package/dist/ai-service/app-interface/constants.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +87 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js +91 -0
- package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts +35 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js +236 -0
- package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts +5 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.js +5 -0
- package/dist/ai-service/app-interface/filesystem/handlers/index.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts +12 -0
- package/dist/ai-service/app-interface/filesystem/index.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/index.js +11 -0
- package/dist/ai-service/app-interface/filesystem/index.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts +71 -0
- package/dist/ai-service/app-interface/filesystem/validation.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/validation.js +170 -0
- package/dist/ai-service/app-interface/filesystem/validation.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +108 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +157 -0
- package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts +126 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts.map +1 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js +9 -0
- package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js.map +1 -0
- package/dist/ai-service/app-interface/linter.d.ts +4 -1
- package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
- package/dist/ai-service/app-interface/linter.js +10 -6
- package/dist/ai-service/app-interface/linter.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +205 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +474 -14
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +9 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/const.d.ts +0 -3
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +1 -52
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/features.d.ts +12 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +13 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +1 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +27 -24
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +0 -2
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +4 -15
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/judge/judge-executor.d.ts.map +1 -1
- package/dist/ai-service/judge/judge-executor.js +4 -0
- package/dist/ai-service/judge/judge-executor.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +21 -4
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +132 -12
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +4 -1
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +27 -5
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/internal-types.d.ts +5 -0
- package/dist/ai-service/llm/context/internal-types.d.ts.map +1 -1
- package/dist/ai-service/llm/context/internal-types.js +5 -0
- package/dist/ai-service/llm/context/internal-types.js.map +1 -1
- package/dist/ai-service/llm/context/levels/l1.d.ts +4 -3
- package/dist/ai-service/llm/context/levels/l1.d.ts.map +1 -1
- package/dist/ai-service/llm/context/levels/l1.js +9 -8
- package/dist/ai-service/llm/context/levels/l1.js.map +1 -1
- package/dist/ai-service/llm/context/serialization.d.ts +8 -0
- package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/content-compaction.d.ts +7 -5
- package/dist/ai-service/llm/context/utils/content-compaction.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/content-compaction.js +27 -6
- package/dist/ai-service/llm/context/utils/content-compaction.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +1 -0
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +29 -3
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/stream/config.d.ts +18 -6
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js +18 -5
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/errors.js +7 -4
- package/dist/ai-service/llm/stream/errors.js.map +1 -1
- package/dist/ai-service/llm/stream/index.d.ts +5 -3
- package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/index.js +4 -2
- package/dist/ai-service/llm/stream/index.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +5 -11
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts +18 -5
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +75 -21
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +8 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +108 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +360 -133
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
- package/dist/ai-service/security/index.d.ts +8 -0
- package/dist/ai-service/security/index.d.ts.map +1 -0
- package/dist/ai-service/security/index.js +8 -0
- package/dist/ai-service/security/index.js.map +1 -0
- package/dist/ai-service/security/safety-classifier.d.ts +103 -0
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -0
- package/dist/ai-service/security/safety-classifier.js +178 -0
- package/dist/ai-service/security/safety-classifier.js.map +1 -0
- package/dist/ai-service/security/secret-scanner.d.ts +145 -0
- package/dist/ai-service/security/secret-scanner.d.ts.map +1 -0
- package/dist/ai-service/security/secret-scanner.js +344 -0
- package/dist/ai-service/security/secret-scanner.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +2 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +32 -9
- 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 +17 -6
- 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 +29 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +4 -1
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.js +2 -2
- package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +1 -0
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +1 -2
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/types.d.ts +6 -5
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/components-manager.d.ts.map +1 -1
- package/dist/components-manager.js +17 -12
- package/dist/components-manager.js.map +1 -1
- package/dist/ensure-app-provider.d.ts +2 -0
- package/dist/ensure-app-provider.d.ts.map +1 -0
- package/dist/ensure-app-provider.js +209 -0
- package/dist/ensure-app-provider.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +22 -12
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts +0 -6
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +119 -144
- package/dist/file-system-manager.js.map +1 -1
- package/dist/parsing/util.d.ts.map +1 -1
- package/dist/parsing/util.js +5 -1
- package/dist/parsing/util.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +5 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts +4 -0
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +15 -8
- package/dist/source-tracker.js.map +1 -1
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +13 -8
- package/dist/sync-service/index.js.map +1 -1
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +16 -0
- package/dist/util/logger.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +4 -2
- package/dist/util.js.map +1 -1
- package/package.json +10 -16
- package/dist/ai-service/agent/tools/apis/api-source.d.ts +0 -24
- package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/apis/api-source.js +0 -108
- package/dist/ai-service/agent/tools/apis/api-source.js.map +0 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts +0 -7
- package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +0 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js +0 -26
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret scanning utilities using TruffleHog.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for scanning content for leaked credentials and secrets.
|
|
5
|
+
* Uses TruffleHog CLI under the hood for detection and verification.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Result from TruffleHog secret detection.
|
|
9
|
+
*/
|
|
10
|
+
export interface SecretFinding {
|
|
11
|
+
/** The type of detector that found the secret (e.g., "AWS", "Stripe", "GitHub") */
|
|
12
|
+
detectorType: string;
|
|
13
|
+
/** The name of the detector */
|
|
14
|
+
detectorName: string;
|
|
15
|
+
/** Whether the secret was verified as active */
|
|
16
|
+
verified: boolean;
|
|
17
|
+
/** The raw secret value (may be redacted) */
|
|
18
|
+
raw: string;
|
|
19
|
+
/** Redacted version of the secret */
|
|
20
|
+
redacted: string;
|
|
21
|
+
/** Line number where the secret was found (if available) */
|
|
22
|
+
line?: number;
|
|
23
|
+
/** Additional metadata about the secret */
|
|
24
|
+
extraData?: Record<string, unknown>;
|
|
25
|
+
/** Source metadata */
|
|
26
|
+
sourceMetadata?: {
|
|
27
|
+
file?: string;
|
|
28
|
+
line?: number;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for secret scanning.
|
|
33
|
+
*/
|
|
34
|
+
export interface SecretScanOptions {
|
|
35
|
+
/** Timeout in milliseconds (default: 5000) */
|
|
36
|
+
timeout?: number;
|
|
37
|
+
/** Only return verified (confirmed active) secrets (default: false - returns all findings) */
|
|
38
|
+
verifiedOnly?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of a secret scan operation.
|
|
42
|
+
*/
|
|
43
|
+
export interface SecretScanResult {
|
|
44
|
+
/** Whether the scan completed successfully */
|
|
45
|
+
success: boolean;
|
|
46
|
+
/** List of detected secrets */
|
|
47
|
+
findings: SecretFinding[];
|
|
48
|
+
/** Error message if scan failed */
|
|
49
|
+
error?: string;
|
|
50
|
+
/** Whether any verified secrets were found */
|
|
51
|
+
hasVerifiedSecrets: boolean;
|
|
52
|
+
/** Whether any secrets (verified or not) were found */
|
|
53
|
+
hasSecrets: boolean;
|
|
54
|
+
/** The original content with secrets replaced by redacted versions */
|
|
55
|
+
redactedContent: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Redacts secrets in content by replacing raw values with redacted versions.
|
|
59
|
+
*
|
|
60
|
+
* Replaces each detected secret's raw value with its redacted form.
|
|
61
|
+
* Secrets are processed longest-first to handle overlapping matches correctly.
|
|
62
|
+
*
|
|
63
|
+
* @param content - The original content containing secrets
|
|
64
|
+
* @param findings - Array of secret findings from TruffleHog
|
|
65
|
+
* @returns Content with all detected secrets redacted
|
|
66
|
+
*/
|
|
67
|
+
export declare function redactSecrets(content: string, findings: SecretFinding[]): string;
|
|
68
|
+
/**
|
|
69
|
+
* Scans text content for secrets using TruffleHog.
|
|
70
|
+
*
|
|
71
|
+
* This function pipes content directly to TruffleHog's stdin command
|
|
72
|
+
* and returns any detected secrets.
|
|
73
|
+
*
|
|
74
|
+
* @param content - The text content to scan for secrets
|
|
75
|
+
* @param options - Scan configuration options
|
|
76
|
+
* @returns Promise resolving to scan results with any findings
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const result = await scanContentForSecrets(userPrompt);
|
|
81
|
+
* if (result.hasVerifiedSecrets) {
|
|
82
|
+
* console.log("Verified secrets found:", result.findings.filter(f => f.verified));
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function scanContentForSecrets(content: string, options?: SecretScanOptions): Promise<SecretScanResult>;
|
|
87
|
+
/**
|
|
88
|
+
* Checks if TruffleHog is available on the system.
|
|
89
|
+
*
|
|
90
|
+
* @returns Promise resolving to true if TruffleHog is installed and accessible
|
|
91
|
+
*/
|
|
92
|
+
export declare function isTrufflehogAvailable(): Promise<boolean>;
|
|
93
|
+
/**
|
|
94
|
+
* A reusable secret redactor that can perform fast synchronous redaction.
|
|
95
|
+
*
|
|
96
|
+
* Use this when you need to redact secrets from multiple pieces of content
|
|
97
|
+
* using the same set of findings (e.g., redacting LLM responses based on
|
|
98
|
+
* secrets found in the input prompt).
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Scan input once
|
|
103
|
+
* const result = await scanContentForSecrets(userPrompt);
|
|
104
|
+
* const redactor = new SecretRedactor(result.findings);
|
|
105
|
+
*
|
|
106
|
+
* // Redact multiple outputs synchronously
|
|
107
|
+
* const safeResponse = redactor.redact(llmResponse);
|
|
108
|
+
* const safeToolOutput = redactor.redact(toolResult);
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare class SecretRedactor {
|
|
112
|
+
private sortedFindings;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a new SecretRedactor with the given findings.
|
|
115
|
+
*
|
|
116
|
+
* @param findings - Secret findings to use for redaction
|
|
117
|
+
*/
|
|
118
|
+
constructor(findings: SecretFinding[]);
|
|
119
|
+
/**
|
|
120
|
+
* Redacts secrets from the given content synchronously.
|
|
121
|
+
*
|
|
122
|
+
* @param content - The content to redact secrets from
|
|
123
|
+
* @returns Content with secrets replaced by redacted versions
|
|
124
|
+
*/
|
|
125
|
+
redact(content: string): string;
|
|
126
|
+
/**
|
|
127
|
+
* Redacts secrets from any value (string, object, or array).
|
|
128
|
+
*
|
|
129
|
+
* Recursively processes objects and arrays, redacting any string values.
|
|
130
|
+
*
|
|
131
|
+
* @param value - The value to redact secrets from
|
|
132
|
+
* @returns Value with secrets redacted from all string content
|
|
133
|
+
*/
|
|
134
|
+
redactDeep(value: unknown): unknown;
|
|
135
|
+
/**
|
|
136
|
+
* Returns true if this redactor has any findings to redact.
|
|
137
|
+
*/
|
|
138
|
+
hasFindings(): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Returns the number of findings this redactor has.
|
|
141
|
+
*/
|
|
142
|
+
get findingCount(): number;
|
|
143
|
+
}
|
|
144
|
+
export declare function formatSecretFindings(findings: SecretFinding[]): string;
|
|
145
|
+
//# sourceMappingURL=secret-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-scanner.d.ts","sourceRoot":"","sources":["../../../src/ai-service/security/secret-scanner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,sBAAsB;IACtB,cAAc,CAAC,EAAE;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EAAE,GACxB,MAAM,CAoBR;AAyDD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA8B3B;AAqFD;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAmB9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAkB;IAExC;;;;OAIG;gBACS,QAAQ,EAAE,aAAa,EAAE;IAOrC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAc/B;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAiBnC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAmBtE"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret scanning utilities using TruffleHog.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for scanning content for leaked credentials and secrets.
|
|
5
|
+
* Uses TruffleHog CLI under the hood for detection and verification.
|
|
6
|
+
*/
|
|
7
|
+
import { spawn, execSync } from "node:child_process";
|
|
8
|
+
import { getErrorMeta, getPrefixedLogger } from "../../util/logger.js";
|
|
9
|
+
/**
|
|
10
|
+
* Detects if trufflehog is running via a Nix wrapper that already adds --no-update.
|
|
11
|
+
* The Nix wrapper is a bash script that adds --no-update before forwarding args.
|
|
12
|
+
*/
|
|
13
|
+
function isNixWrappedTrufflehog() {
|
|
14
|
+
try {
|
|
15
|
+
const trufflehogPath = execSync("which trufflehog", {
|
|
16
|
+
encoding: "utf-8",
|
|
17
|
+
}).trim();
|
|
18
|
+
return trufflehogPath.includes("/nix/store/");
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Cache the result since it won't change during runtime
|
|
25
|
+
let _isNixWrapped;
|
|
26
|
+
function shouldSkipNoUpdateFlag() {
|
|
27
|
+
if (_isNixWrapped === undefined) {
|
|
28
|
+
_isNixWrapped = isNixWrappedTrufflehog();
|
|
29
|
+
}
|
|
30
|
+
return _isNixWrapped;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Redacts secrets in content by replacing raw values with redacted versions.
|
|
34
|
+
*
|
|
35
|
+
* Replaces each detected secret's raw value with its redacted form.
|
|
36
|
+
* Secrets are processed longest-first to handle overlapping matches correctly.
|
|
37
|
+
*
|
|
38
|
+
* @param content - The original content containing secrets
|
|
39
|
+
* @param findings - Array of secret findings from TruffleHog
|
|
40
|
+
* @returns Content with all detected secrets redacted
|
|
41
|
+
*/
|
|
42
|
+
export function redactSecrets(content, findings) {
|
|
43
|
+
if (findings.length === 0) {
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
let redacted = content;
|
|
47
|
+
// Sort findings by raw length (longest first) to handle overlapping secrets
|
|
48
|
+
const sortedFindings = [...findings].sort((a, b) => b.raw.length - a.raw.length);
|
|
49
|
+
for (const finding of sortedFindings) {
|
|
50
|
+
if (finding.raw && finding.redacted) {
|
|
51
|
+
// Use global replacement to catch all occurrences
|
|
52
|
+
redacted = redacted.split(finding.raw).join(finding.redacted);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return redacted;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parses TruffleHog JSON output into SecretFinding objects.
|
|
59
|
+
*
|
|
60
|
+
* @param jsonLine - Single line of JSON output from TruffleHog
|
|
61
|
+
* @returns Parsed SecretFinding or null if parsing fails
|
|
62
|
+
*/
|
|
63
|
+
function parseTrufflehogResult(jsonLine) {
|
|
64
|
+
try {
|
|
65
|
+
const result = JSON.parse(jsonLine);
|
|
66
|
+
const raw = result.Raw ?? "";
|
|
67
|
+
// Generate a sensible redacted value if TruffleHog doesn't provide one
|
|
68
|
+
// (custom regex detectors often return empty Redacted field)
|
|
69
|
+
const redacted = result.Redacted || generateRedactedValue(raw);
|
|
70
|
+
return {
|
|
71
|
+
detectorType: result.DetectorType?.toString() ?? "unknown",
|
|
72
|
+
detectorName: result.DetectorName ?? "unknown",
|
|
73
|
+
verified: result.Verified ?? false,
|
|
74
|
+
raw,
|
|
75
|
+
redacted,
|
|
76
|
+
line: result.SourceMetadata?.Data?.Filesystem?.line,
|
|
77
|
+
extraData: result.ExtraData,
|
|
78
|
+
sourceMetadata: {
|
|
79
|
+
file: result.SourceMetadata?.Data?.Filesystem?.file,
|
|
80
|
+
line: result.SourceMetadata?.Data?.Filesystem?.line,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Generates a redacted version of a secret value.
|
|
90
|
+
*
|
|
91
|
+
* Preserves a prefix for recognizable patterns (like sk_live_, ghp_, AKIA)
|
|
92
|
+
* and replaces the rest with asterisks.
|
|
93
|
+
*
|
|
94
|
+
* @param raw - The raw secret value
|
|
95
|
+
* @returns A redacted version with preserved prefix and masked suffix
|
|
96
|
+
*/
|
|
97
|
+
function generateRedactedValue(raw) {
|
|
98
|
+
if (!raw || raw.length <= 4) {
|
|
99
|
+
return "[REDACTED]";
|
|
100
|
+
}
|
|
101
|
+
// For short secrets, just show first 2 chars
|
|
102
|
+
if (raw.length <= 8) {
|
|
103
|
+
return raw.slice(0, 2) + "****";
|
|
104
|
+
}
|
|
105
|
+
// For longer secrets, preserve recognizable prefixes
|
|
106
|
+
const prefixLength = Math.min(8, Math.floor(raw.length / 3));
|
|
107
|
+
return raw.slice(0, prefixLength) + "****";
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Scans text content for secrets using TruffleHog.
|
|
111
|
+
*
|
|
112
|
+
* This function pipes content directly to TruffleHog's stdin command
|
|
113
|
+
* and returns any detected secrets.
|
|
114
|
+
*
|
|
115
|
+
* @param content - The text content to scan for secrets
|
|
116
|
+
* @param options - Scan configuration options
|
|
117
|
+
* @returns Promise resolving to scan results with any findings
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const result = await scanContentForSecrets(userPrompt);
|
|
122
|
+
* if (result.hasVerifiedSecrets) {
|
|
123
|
+
* console.log("Verified secrets found:", result.findings.filter(f => f.verified));
|
|
124
|
+
* }
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export async function scanContentForSecrets(content, options = {}) {
|
|
128
|
+
const { timeout = 5000, verifiedOnly = false } = options;
|
|
129
|
+
const logger = getPrefixedLogger("[secret-scan]");
|
|
130
|
+
try {
|
|
131
|
+
const findings = await runTrufflehog(content, timeout, verifiedOnly);
|
|
132
|
+
logger.debug(`TruffleHog scan completed: found ${findings.length} potential secrets`);
|
|
133
|
+
const redactedContent = redactSecrets(content, findings);
|
|
134
|
+
return {
|
|
135
|
+
success: true,
|
|
136
|
+
findings,
|
|
137
|
+
hasVerifiedSecrets: findings.some((f) => f.verified),
|
|
138
|
+
hasSecrets: findings.length > 0,
|
|
139
|
+
redactedContent,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
logger.error("error during operation: ", getErrorMeta(error));
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
findings: [],
|
|
147
|
+
error: error instanceof Error ? error.message : String(error),
|
|
148
|
+
hasVerifiedSecrets: false,
|
|
149
|
+
hasSecrets: false,
|
|
150
|
+
redactedContent: content, // Return original content on error
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Runs TruffleHog CLI using stdin and returns parsed findings.
|
|
156
|
+
*
|
|
157
|
+
* Uses TruffleHog's built-in detectors for common secret types (Stripe, GitHub,
|
|
158
|
+
* AWS, private keys, etc.) without custom configuration.
|
|
159
|
+
*
|
|
160
|
+
* @param content - Content to scan for secrets (piped to stdin)
|
|
161
|
+
* @param timeout - Timeout in milliseconds
|
|
162
|
+
* @param verifiedOnly - Whether to only return verified secrets
|
|
163
|
+
* @returns Promise resolving to array of SecretFinding objects
|
|
164
|
+
*/
|
|
165
|
+
async function runTrufflehog(content, timeout, verifiedOnly) {
|
|
166
|
+
return new Promise((resolve, reject) => {
|
|
167
|
+
const args = ["stdin", "--json"];
|
|
168
|
+
if (!shouldSkipNoUpdateFlag()) {
|
|
169
|
+
args.push("--no-update");
|
|
170
|
+
}
|
|
171
|
+
if (verifiedOnly) {
|
|
172
|
+
args.push("--results=verified");
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
args.push("--results=verified,unknown,unverified");
|
|
176
|
+
}
|
|
177
|
+
const proc = spawn("trufflehog", args, {
|
|
178
|
+
timeout,
|
|
179
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
180
|
+
});
|
|
181
|
+
const findings = [];
|
|
182
|
+
let stdout = "";
|
|
183
|
+
let stderr = "";
|
|
184
|
+
proc.stdout.on("data", (data) => {
|
|
185
|
+
stdout += data.toString();
|
|
186
|
+
});
|
|
187
|
+
proc.stderr.on("data", (data) => {
|
|
188
|
+
stderr += data.toString();
|
|
189
|
+
});
|
|
190
|
+
proc.on("close", (code) => {
|
|
191
|
+
// TruffleHog returns 0 for no secrets, 183 for secrets found
|
|
192
|
+
if (code === 0 || code === 183) {
|
|
193
|
+
// Parse each line of JSON output
|
|
194
|
+
const lines = stdout.split("\n").filter((line) => line.trim());
|
|
195
|
+
for (const line of lines) {
|
|
196
|
+
const finding = parseTrufflehogResult(line);
|
|
197
|
+
if (finding) {
|
|
198
|
+
findings.push(finding);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
resolve(findings);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
reject(new Error(`TruffleHog exited with code ${code}: ${stderr || stdout}`));
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
proc.on("error", (error) => {
|
|
208
|
+
if (error.message.includes("ENOENT")) {
|
|
209
|
+
reject(new Error("TruffleHog is not installed. Please install it: https://github.com/trufflesecurity/trufflehog"));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
reject(error);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
// Write content to stdin and close the stream
|
|
216
|
+
proc.stdin.write(content);
|
|
217
|
+
proc.stdin.end();
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Checks if TruffleHog is available on the system.
|
|
222
|
+
*
|
|
223
|
+
* @returns Promise resolving to true if TruffleHog is installed and accessible
|
|
224
|
+
*/
|
|
225
|
+
export async function isTrufflehogAvailable() {
|
|
226
|
+
return new Promise((resolve) => {
|
|
227
|
+
const args = ["--version"];
|
|
228
|
+
if (!shouldSkipNoUpdateFlag()) {
|
|
229
|
+
args.push("--no-update");
|
|
230
|
+
}
|
|
231
|
+
const proc = spawn("trufflehog", args, {
|
|
232
|
+
timeout: 5000,
|
|
233
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
234
|
+
});
|
|
235
|
+
proc.on("close", (code) => {
|
|
236
|
+
resolve(code === 0);
|
|
237
|
+
});
|
|
238
|
+
proc.on("error", () => {
|
|
239
|
+
resolve(false);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* A reusable secret redactor that can perform fast synchronous redaction.
|
|
245
|
+
*
|
|
246
|
+
* Use this when you need to redact secrets from multiple pieces of content
|
|
247
|
+
* using the same set of findings (e.g., redacting LLM responses based on
|
|
248
|
+
* secrets found in the input prompt).
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* // Scan input once
|
|
253
|
+
* const result = await scanContentForSecrets(userPrompt);
|
|
254
|
+
* const redactor = new SecretRedactor(result.findings);
|
|
255
|
+
*
|
|
256
|
+
* // Redact multiple outputs synchronously
|
|
257
|
+
* const safeResponse = redactor.redact(llmResponse);
|
|
258
|
+
* const safeToolOutput = redactor.redact(toolResult);
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
export class SecretRedactor {
|
|
262
|
+
sortedFindings;
|
|
263
|
+
/**
|
|
264
|
+
* Creates a new SecretRedactor with the given findings.
|
|
265
|
+
*
|
|
266
|
+
* @param findings - Secret findings to use for redaction
|
|
267
|
+
*/
|
|
268
|
+
constructor(findings) {
|
|
269
|
+
// Sort findings by raw length (longest first) to handle overlapping secrets
|
|
270
|
+
this.sortedFindings = [...findings].sort((a, b) => b.raw.length - a.raw.length);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Redacts secrets from the given content synchronously.
|
|
274
|
+
*
|
|
275
|
+
* @param content - The content to redact secrets from
|
|
276
|
+
* @returns Content with secrets replaced by redacted versions
|
|
277
|
+
*/
|
|
278
|
+
redact(content) {
|
|
279
|
+
if (this.sortedFindings.length === 0 || !content) {
|
|
280
|
+
return content;
|
|
281
|
+
}
|
|
282
|
+
let redacted = content;
|
|
283
|
+
for (const finding of this.sortedFindings) {
|
|
284
|
+
if (finding.raw && finding.redacted) {
|
|
285
|
+
redacted = redacted.split(finding.raw).join(finding.redacted);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return redacted;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Redacts secrets from any value (string, object, or array).
|
|
292
|
+
*
|
|
293
|
+
* Recursively processes objects and arrays, redacting any string values.
|
|
294
|
+
*
|
|
295
|
+
* @param value - The value to redact secrets from
|
|
296
|
+
* @returns Value with secrets redacted from all string content
|
|
297
|
+
*/
|
|
298
|
+
redactDeep(value) {
|
|
299
|
+
if (typeof value === "string") {
|
|
300
|
+
return this.redact(value);
|
|
301
|
+
}
|
|
302
|
+
if (Array.isArray(value)) {
|
|
303
|
+
return value.map((item) => this.redactDeep(item));
|
|
304
|
+
}
|
|
305
|
+
if (value !== null && typeof value === "object") {
|
|
306
|
+
const result = {};
|
|
307
|
+
for (const [key, val] of Object.entries(value)) {
|
|
308
|
+
result[key] = this.redactDeep(val);
|
|
309
|
+
}
|
|
310
|
+
return result;
|
|
311
|
+
}
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Returns true if this redactor has any findings to redact.
|
|
316
|
+
*/
|
|
317
|
+
hasFindings() {
|
|
318
|
+
return this.sortedFindings.length > 0;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Returns the number of findings this redactor has.
|
|
322
|
+
*/
|
|
323
|
+
get findingCount() {
|
|
324
|
+
return this.sortedFindings.length;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
export function formatSecretFindings(findings) {
|
|
328
|
+
if (findings.length === 0) {
|
|
329
|
+
return "No secrets detected.";
|
|
330
|
+
}
|
|
331
|
+
const lines = [`Found ${findings.length} potential secret(s):\n`];
|
|
332
|
+
for (const finding of findings) {
|
|
333
|
+
const status = finding.verified ? "✓ VERIFIED" : "? unverified";
|
|
334
|
+
lines.push(` [${status}] ${finding.detectorName}`);
|
|
335
|
+
lines.push(` Type: ${finding.detectorType}`);
|
|
336
|
+
lines.push(` Value: ${finding.redacted}`);
|
|
337
|
+
if (finding.sourceMetadata?.line) {
|
|
338
|
+
lines.push(` Line: ${finding.sourceMetadata.line}`);
|
|
339
|
+
}
|
|
340
|
+
lines.push("");
|
|
341
|
+
}
|
|
342
|
+
return lines.join("\n");
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=secret-scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-scanner.js","sourceRoot":"","sources":["../../../src/ai-service/security/secret-scanner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,QAAQ,CAAC,kBAAkB,EAAE;YAClD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,IAAI,aAAkC,CAAC;AACvC,SAAS,sBAAsB;IAC7B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAuDD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,QAAyB;IAEzB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,CAAC;IAEvB,4EAA4E;IAC5E,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpC,kDAAkD;YAClD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,GAAG,GAAW,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QACrC,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,SAAS;YAC1D,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS;YAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;YAClC,GAAG;YACH,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;YACnD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE;gBACd,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;gBACnD,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;aACpD;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,6CAA6C;IAC7C,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAe,EACf,UAA6B,EAAE;IAE/B,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CACV,oCAAoC,QAAQ,CAAC,MAAM,oBAAoB,CACxE,CAAC;QACF,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC/B,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,kBAAkB,EAAE,KAAK;YACzB,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,OAAO,EAAE,mCAAmC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,aAAa,CAC1B,OAAe,EACf,OAAe,EACf,YAAqB;IAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE;YACrC,OAAO;YACP,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,6DAA6D;YAC7D,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC/B,iCAAiC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,OAAO,EAAE,CAAC;wBACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,CACJ,IAAI,KAAK,CAAC,+BAA+B,IAAI,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC,CACtE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,+FAA+F,CAChG,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE;YACrC,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,cAAc;IACjB,cAAc,CAAkB;IAExC;;;;OAIG;IACH,YAAY,QAAyB;QACnC,4EAA4E;QAC5E,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAe;QACpB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,QAAQ,GAAG,OAAO,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACpC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,KAAc;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAyB;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,SAAS,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;IAE5E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -360,8 +360,9 @@ export type ClarkStateHandlerParams = AiServiceConfig & {
|
|
|
360
360
|
*
|
|
361
361
|
* Extends StreamTextOptions with Clark-specific middleware configuration.
|
|
362
362
|
* Only `user` message is required - all other options have smart defaults.
|
|
363
|
+
* providerConfig and enableFallback are populated from Clark's context.llmConfig.
|
|
363
364
|
*/
|
|
364
|
-
export interface ClarkStreamTextOptions<TOOLS extends Record<string, Tool>> extends Omit<LLMClientStreamTextOptions<TOOLS>, "model"> {
|
|
365
|
+
export interface ClarkStreamTextOptions<TOOLS extends Record<string, Tool>> extends Omit<LLMClientStreamTextOptions<TOOLS>, "model" | "providerConfig"> {
|
|
365
366
|
/** Language model to use. Defaults to services.llmProvider.modelForClassification("broad_edit"). */
|
|
366
367
|
model?: LanguageModelV2;
|
|
367
368
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clark-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/clark-fsm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"clark-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/clark-fsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,7 +193,7 @@ export class Clark extends TracedFSM {
|
|
|
193
193
|
* ```
|
|
194
194
|
*/
|
|
195
195
|
async streamText(services, options) {
|
|
196
|
-
const { model: providedModel, context: contextConfig, logging: loggingConfig, ...streamOptions } = options;
|
|
196
|
+
const { model: providedModel, context: contextConfig, logging: loggingConfig, enableFallback: enableFallbackOverride, ...streamOptions } = options;
|
|
197
197
|
const model = providedModel ??
|
|
198
198
|
services.llmProvider.modelForClassification("broad_edit");
|
|
199
199
|
const { thinkingEnabled, thinkingBudgetTokens, headers, providerOptions } = processLLMConfig(this.context.llmConfig);
|
|
@@ -226,13 +226,25 @@ export class Clark extends TracedFSM {
|
|
|
226
226
|
startTime: new Date().toISOString(),
|
|
227
227
|
endTime: "",
|
|
228
228
|
};
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
229
|
+
if (!this.context.llmConfig?.provider) {
|
|
230
|
+
throw new Error("llmConfig.provider is required. This should be set from the ui.clark-ai.llm-provider feature flag.");
|
|
231
|
+
}
|
|
232
|
+
if (!this.context.llmConfig?.coreModel) {
|
|
233
|
+
throw new Error("llmConfig.coreModel is required. This should be set from the superblocks.ai.core-model.name feature flag.");
|
|
234
|
+
}
|
|
235
|
+
const providerConfig = {
|
|
236
|
+
provider: this.context.llmConfig.provider,
|
|
237
|
+
model: this.context.llmConfig.coreModel,
|
|
238
|
+
};
|
|
239
|
+
// normally we want to just use the config that is already set, but we should allow
|
|
240
|
+
// for overrides (e.g. for tools that need to disable fallback, because retrying is
|
|
241
|
+
// handled at the tool level)
|
|
242
|
+
let enableFallback = this.context.llmConfig.unifiedProviderEnabled ?? false;
|
|
243
|
+
if (enableFallbackOverride !== undefined) {
|
|
244
|
+
enableFallback = enableFallbackOverride;
|
|
245
|
+
}
|
|
246
|
+
const fallbackStrategy = this.context.llmConfig.fallbackStrategy;
|
|
247
|
+
this.logger.info(`[ai-service] fallbackStrategy from llmConfig: ${fallbackStrategy ?? "undefined"}`);
|
|
236
248
|
return await services.llmClient.streamText({
|
|
237
249
|
...streamOptions,
|
|
238
250
|
model,
|
|
@@ -262,8 +274,19 @@ export class Clark extends TracedFSM {
|
|
|
262
274
|
context,
|
|
263
275
|
logging,
|
|
264
276
|
retry: streamOptions.retry,
|
|
265
|
-
|
|
277
|
+
providerConfig,
|
|
278
|
+
enableFallback,
|
|
279
|
+
fallbackStrategy,
|
|
266
280
|
peer: this.context.peer,
|
|
281
|
+
safety: {
|
|
282
|
+
classification: {
|
|
283
|
+
enabled: services.features.safetyClassificationEnabled ?? false,
|
|
284
|
+
model: services.llmProvider.modelForTask("fast"),
|
|
285
|
+
},
|
|
286
|
+
secretRedaction: {
|
|
287
|
+
enabled: services.features.secretRedactionEnabled ?? false,
|
|
288
|
+
},
|
|
289
|
+
},
|
|
267
290
|
}, this.logger, this.tracer);
|
|
268
291
|
}
|
|
269
292
|
pushContextUsed(usage) {
|