@machina.ai/cell-cli-core 1.0.17-rc1 → 1.0.21-rc1
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/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json +9 -2
- package/dist/src/code_assist/converter.d.ts +4 -2
- package/dist/src/code_assist/converter.js +2 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +48 -1
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -0
- package/dist/src/code_assist/oauth2.js +38 -21
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +51 -8
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.js +1 -1
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +4 -1
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +48 -17
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +114 -8
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/config/config.d.ts +41 -11
- package/dist/src/config/config.js +85 -27
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +117 -3
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/flashFallback.test.js +0 -4
- package/dist/src/config/flashFallback.test.js.map +1 -1
- package/dist/src/core/client.d.ts +12 -16
- package/dist/src/core/client.js +218 -135
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +636 -37
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +23 -21
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +30 -126
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +23 -8
- package/dist/src/core/coreToolScheduler.js +179 -64
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +250 -97
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +7 -6
- package/dist/src/core/geminiChat.js +43 -43
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/logger.d.ts +23 -1
- package/dist/src/core/logger.js +115 -11
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +112 -17
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +25 -0
- package/dist/src/core/loggingContentGenerator.js +95 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +28 -1
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +85 -62
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +4 -4
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/subagent.d.ts +230 -0
- package/dist/src/core/subagent.js +447 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagent.test.d.ts +6 -0
- package/dist/src/core/subagent.test.js +515 -0
- package/dist/src/core/subagent.test.js.map +1 -0
- package/dist/src/core/turn.js +1 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +4 -0
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/ide/constants.d.ts +6 -0
- package/dist/src/ide/constants.js +7 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +12 -2
- package/dist/src/ide/detect-ide.js +64 -5
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.d.ts +6 -0
- package/dist/src/ide/detect-ide.test.js +65 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +34 -11
- package/dist/src/ide/ide-client.js +230 -62
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.d.ts +6 -0
- package/dist/src/ide/ide-client.test.js +43 -0
- package/dist/src/ide/ide-client.test.js.map +1 -0
- package/dist/src/ide/ide-installer.js +23 -34
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +6 -8
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +97 -2
- package/dist/src/ide/ideContext.js +45 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +14 -0
- package/dist/src/ide/process-utils.js +57 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.js +7 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.js +9 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.test.js +45 -10
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +1 -1
- package/dist/src/mcp/oauth-provider.js +185 -59
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +134 -62
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +3 -1
- package/dist/src/mcp/oauth-utils.js +50 -12
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +17 -2
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mocks/msw.d.ts +6 -0
- package/dist/src/mocks/msw.js +8 -0
- package/dist/src/mocks/msw.js.map +1 -0
- package/dist/src/prompts/prompt-registry.d.ts +8 -0
- package/dist/src/prompts/prompt-registry.js +16 -0
- package/dist/src/prompts/prompt-registry.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +150 -0
- package/dist/src/services/chatRecordingService.js +318 -0
- package/dist/src/services/chatRecordingService.js.map +1 -0
- package/dist/src/services/chatRecordingService.test.d.ts +6 -0
- package/dist/src/services/chatRecordingService.test.js +288 -0
- package/dist/src/services/chatRecordingService.test.js.map +1 -0
- package/dist/src/services/fileSystemService.d.ts +31 -0
- package/dist/src/services/fileSystemService.js +18 -0
- package/dist/src/services/fileSystemService.js.map +1 -0
- package/dist/src/services/fileSystemService.test.d.ts +6 -0
- package/dist/src/services/fileSystemService.test.js +41 -0
- package/dist/src/services/fileSystemService.test.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +19 -16
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +191 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +29 -9
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +21 -3
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +78 -9
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +316 -205
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +17 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +342 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +14 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +32 -9
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +2 -0
- package/dist/src/telemetry/constants.js +2 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/integration.test.circular.js +1 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +4 -1
- package/dist/src/telemetry/loggers.js +55 -6
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +7 -2
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +43 -8
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +7 -2
- package/dist/src/telemetry/metrics.js +26 -6
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +81 -1
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +77 -41
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.d.ts +6 -0
- package/dist/src/telemetry/sdk.test.js +82 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -0
- package/dist/src/telemetry/telemetry.test.js +2 -4
- package/dist/src/telemetry/telemetry.test.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +55 -21
- package/dist/src/telemetry/types.js +83 -43
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +8 -1
- package/dist/src/telemetry/uiTelemetry.js +17 -2
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +57 -10
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +16 -0
- package/dist/src/test-utils/config.js +32 -0
- package/dist/src/test-utils/config.js.map +1 -0
- package/dist/src/test-utils/tools.d.ts +44 -0
- package/dist/src/test-utils/tools.js +105 -0
- package/dist/src/test-utils/tools.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +119 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +10 -34
- package/dist/src/tools/edit.js +152 -136
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +125 -51
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +4 -11
- package/dist/src/tools/glob.js +87 -91
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +42 -12
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +4 -36
- package/dist/src/tools/grep.js +107 -84
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +40 -23
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.d.ts +4 -23
- package/dist/src/tools/ls.js +77 -79
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +62 -34
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +38 -0
- package/dist/src/tools/mcp-client-manager.js +74 -0
- package/dist/src/tools/mcp-client-manager.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
- package/dist/src/tools/mcp-client-manager.test.js +39 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +57 -3
- package/dist/src/tools/mcp-client.js +235 -10
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +234 -87
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +6 -13
- package/dist/src/tools/mcp-tool.js +62 -34
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +118 -59
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +10 -14
- package/dist/src/tools/memoryTool.js +123 -121
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +38 -18
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.d.ts +9 -6
- package/dist/src/tools/modifiable-tool.js +6 -3
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +12 -12
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +4 -6
- package/dist/src/tools/read-file.js +95 -50
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +199 -129
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +3 -5
- package/dist/src/tools/read-many-files.js +204 -138
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +197 -33
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +4 -6
- package/dist/src/tools/shell.js +112 -102
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +55 -28
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +5 -0
- package/dist/src/tools/tool-error.js +5 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +25 -22
- package/dist/src/tools/tool-registry.js +100 -116
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +29 -212
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +137 -92
- package/dist/src/tools/tools.js +188 -61
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.d.ts +6 -0
- package/dist/src/tools/tools.test.js +206 -0
- package/dist/src/tools/tools.test.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +4 -7
- package/dist/src/tools/web-fetch.js +58 -64
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +8 -4
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +4 -5
- package/dist/src/tools/web-search.js +47 -51
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.d.ts +6 -0
- package/dist/src/tools/web-search.test.js +139 -0
- package/dist/src/tools/web-search.test.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +20 -11
- package/dist/src/tools/write-file.js +197 -142
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +156 -96
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +28 -56
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/browser.js +4 -3
- package/dist/src/utils/browser.js.map +1 -1
- package/dist/src/utils/editCorrector.js +21 -22
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.d.ts +1 -1
- package/dist/src/utils/editor.js +14 -6
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +48 -16
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +21 -0
- package/dist/src/utils/environmentContext.js +90 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/environmentContext.test.d.ts +6 -0
- package/dist/src/utils/environmentContext.test.js +140 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -0
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +93 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/errorParsing.test.d.ts +6 -0
- package/dist/src/utils/errorParsing.test.js +172 -0
- package/dist/src/utils/errorParsing.test.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +9 -1
- package/dist/src/utils/fileUtils.js +18 -15
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +24 -22
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
- package/dist/src/utils/filesearch/crawlCache.js +57 -0
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawlCache.test.js +103 -0
- package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawler.test.js +468 -0
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +37 -0
- package/dist/src/utils/filesearch/fileSearch.js +186 -0
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
- package/dist/src/utils/filesearch/fileSearch.test.js +552 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.d.ts +42 -0
- package/dist/src/utils/filesearch/ignore.js +106 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
- package/dist/src/utils/filesearch/ignore.test.js +144 -0
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
- package/dist/src/utils/filesearch/result-cache.js +59 -0
- package/dist/src/utils/filesearch/result-cache.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/result-cache.test.js +46 -0
- package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
- package/dist/src/utils/flashFallback.integration.test.js +0 -2
- package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +7 -4
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +3 -2
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +3 -7
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +17 -20
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +5 -6
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/paths.d.ts +7 -0
- package/dist/src/utils/paths.js +15 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +74 -2
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +1 -8
- package/dist/src/utils/schemaValidator.js +1 -32
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/secure-browser-launcher.js +4 -3
- package/dist/src/utils/secure-browser-launcher.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +39 -0
- package/dist/src/utils/shell-utils.js +72 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +132 -4
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +1 -1
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/systemEncoding.test.js +23 -23
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/user_account.js +58 -48
- package/dist/src/utils/user_account.js.map +1 -1
- package/dist/src/utils/user_account.test.js +76 -9
- package/dist/src/utils/user_account.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +22 -7
- package/dist/src/utils/workspaceContext.js +81 -55
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +221 -137
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/dist/src/core/modelCheck.d.ts +0 -14
- package/dist/src/core/modelCheck.js +0 -62
- package/dist/src/core/modelCheck.js.map +0 -1
|
@@ -3,136 +3,165 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { FunctionDeclaration, PartListUnion
|
|
6
|
+
import { FunctionDeclaration, PartListUnion } from '@google/genai';
|
|
7
7
|
import { ToolErrorType } from './tool-error.js';
|
|
8
|
+
import { DiffUpdateResult } from '../ide/ideContext.js';
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
+
* Represents a validated and ready-to-execute tool call.
|
|
11
|
+
* An instance of this is created by a `ToolBuilder`.
|
|
10
12
|
*/
|
|
11
|
-
export interface
|
|
13
|
+
export interface ToolInvocation<TParams extends object, TResult extends ToolResult> {
|
|
12
14
|
/**
|
|
13
|
-
* The
|
|
15
|
+
* The validated parameters for this specific invocation.
|
|
14
16
|
*/
|
|
15
|
-
|
|
17
|
+
params: TParams;
|
|
16
18
|
/**
|
|
17
|
-
*
|
|
19
|
+
* Gets a pre-execution description of the tool operation.
|
|
20
|
+
* @returns A markdown string describing what the tool will do.
|
|
18
21
|
*/
|
|
19
|
-
|
|
22
|
+
getDescription(): string;
|
|
20
23
|
/**
|
|
21
|
-
*
|
|
24
|
+
* Determines what file system paths the tool will affect.
|
|
25
|
+
* @returns A list of such paths.
|
|
22
26
|
*/
|
|
23
|
-
|
|
27
|
+
toolLocations(): ToolLocation[];
|
|
24
28
|
/**
|
|
25
|
-
*
|
|
29
|
+
* Determines if the tool should prompt for confirmation before execution.
|
|
30
|
+
* @returns Confirmation details or false if no confirmation is needed.
|
|
26
31
|
*/
|
|
27
|
-
|
|
32
|
+
shouldConfirmExecute(abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
28
33
|
/**
|
|
29
|
-
*
|
|
34
|
+
* Executes the tool with the validated parameters.
|
|
35
|
+
* @param signal AbortSignal for tool cancellation.
|
|
36
|
+
* @param updateOutput Optional callback to stream output.
|
|
37
|
+
* @returns Result of the tool execution.
|
|
30
38
|
*/
|
|
31
|
-
|
|
39
|
+
execute(signal: AbortSignal, updateOutput?: (output: string) => void): Promise<TResult>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A convenience base class for ToolInvocation.
|
|
43
|
+
*/
|
|
44
|
+
export declare abstract class BaseToolInvocation<TParams extends object, TResult extends ToolResult> implements ToolInvocation<TParams, TResult> {
|
|
45
|
+
readonly params: TParams;
|
|
46
|
+
constructor(params: TParams);
|
|
47
|
+
abstract getDescription(): string;
|
|
48
|
+
toolLocations(): ToolLocation[];
|
|
49
|
+
shouldConfirmExecute(_abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
50
|
+
abstract execute(signal: AbortSignal, updateOutput?: (output: string) => void): Promise<TResult>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A type alias for a tool invocation where the specific parameter and result types are not known.
|
|
54
|
+
*/
|
|
55
|
+
export type AnyToolInvocation = ToolInvocation<object, ToolResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Interface for a tool builder that validates parameters and creates invocations.
|
|
58
|
+
*/
|
|
59
|
+
export interface ToolBuilder<TParams extends object, TResult extends ToolResult> {
|
|
32
60
|
/**
|
|
33
|
-
*
|
|
61
|
+
* The internal name of the tool (used for API calls).
|
|
34
62
|
*/
|
|
35
|
-
|
|
63
|
+
name: string;
|
|
36
64
|
/**
|
|
37
|
-
*
|
|
65
|
+
* The user-friendly display name of the tool.
|
|
38
66
|
*/
|
|
39
|
-
|
|
67
|
+
displayName: string;
|
|
40
68
|
/**
|
|
41
|
-
*
|
|
42
|
-
* Should be called from both `shouldConfirmExecute` and `execute`
|
|
43
|
-
* `shouldConfirmExecute` should return false immediately if invalid
|
|
44
|
-
* @param params Parameters to validate
|
|
45
|
-
* @returns An error message string if invalid, null otherwise
|
|
69
|
+
* Description of what the tool does.
|
|
46
70
|
*/
|
|
47
|
-
|
|
71
|
+
description: string;
|
|
48
72
|
/**
|
|
49
|
-
*
|
|
50
|
-
* @param params Parameters for the tool execution
|
|
51
|
-
* @returns A markdown string describing what the tool will do
|
|
52
|
-
* Optional for backward compatibility
|
|
73
|
+
* The kind of tool for categorization and permissions
|
|
53
74
|
*/
|
|
54
|
-
|
|
75
|
+
kind: Kind;
|
|
55
76
|
/**
|
|
56
|
-
*
|
|
57
|
-
* @param params Parameters for the tool execution
|
|
58
|
-
* @returns A list of such paths
|
|
77
|
+
* Function declaration schema from @google/genai.
|
|
59
78
|
*/
|
|
60
|
-
|
|
79
|
+
schema: FunctionDeclaration;
|
|
61
80
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @param params Parameters for the tool execution
|
|
64
|
-
* @returns Whether execute should be confirmed.
|
|
81
|
+
* Whether the tool's output should be rendered as markdown.
|
|
65
82
|
*/
|
|
66
|
-
|
|
83
|
+
isOutputMarkdown: boolean;
|
|
67
84
|
/**
|
|
68
|
-
*
|
|
69
|
-
* @param params Parameters for the tool execution
|
|
70
|
-
* @returns Result of the tool execution
|
|
85
|
+
* Whether the tool supports live (streaming) output.
|
|
71
86
|
*/
|
|
72
|
-
|
|
87
|
+
canUpdateOutput: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Validates raw parameters and builds a ready-to-execute invocation.
|
|
90
|
+
* @param params The raw, untrusted parameters from the model.
|
|
91
|
+
* @returns A valid `ToolInvocation` if successful. Throws an error if validation fails.
|
|
92
|
+
*/
|
|
93
|
+
build(params: TParams): ToolInvocation<TParams, TResult>;
|
|
73
94
|
}
|
|
74
95
|
/**
|
|
75
|
-
*
|
|
96
|
+
* New base class for tools that separates validation from execution.
|
|
97
|
+
* New tools should extend this class.
|
|
76
98
|
*/
|
|
77
|
-
export declare abstract class
|
|
99
|
+
export declare abstract class DeclarativeTool<TParams extends object, TResult extends ToolResult> implements ToolBuilder<TParams, TResult> {
|
|
78
100
|
readonly name: string;
|
|
79
101
|
readonly displayName: string;
|
|
80
102
|
readonly description: string;
|
|
81
|
-
readonly
|
|
82
|
-
readonly parameterSchema:
|
|
103
|
+
readonly kind: Kind;
|
|
104
|
+
readonly parameterSchema: unknown;
|
|
83
105
|
readonly isOutputMarkdown: boolean;
|
|
84
106
|
readonly canUpdateOutput: boolean;
|
|
85
|
-
|
|
86
|
-
* Creates a new instance of BaseTool
|
|
87
|
-
* @param name Internal name of the tool (used for API calls)
|
|
88
|
-
* @param displayName User-friendly display name of the tool
|
|
89
|
-
* @param description Description of what the tool does
|
|
90
|
-
* @param isOutputMarkdown Whether the tool's output should be rendered as markdown
|
|
91
|
-
* @param canUpdateOutput Whether the tool supports live (streaming) output
|
|
92
|
-
* @param parameterSchema Open API 3.0 Schema defining the parameters
|
|
93
|
-
*/
|
|
94
|
-
constructor(name: string, displayName: string, description: string, icon: Icon, parameterSchema: Schema, isOutputMarkdown?: boolean, canUpdateOutput?: boolean);
|
|
95
|
-
/**
|
|
96
|
-
* Function declaration schema computed from name, description, and parameterSchema
|
|
97
|
-
*/
|
|
107
|
+
constructor(name: string, displayName: string, description: string, kind: Kind, parameterSchema: unknown, isOutputMarkdown?: boolean, canUpdateOutput?: boolean);
|
|
98
108
|
get schema(): FunctionDeclaration;
|
|
99
109
|
/**
|
|
100
|
-
* Validates the
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* @
|
|
105
|
-
* @returns An error message string if invalid, null otherwise
|
|
110
|
+
* Validates the raw tool parameters.
|
|
111
|
+
* Subclasses should override this to add custom validation logic
|
|
112
|
+
* beyond the JSON schema check.
|
|
113
|
+
* @param params The raw parameters from the model.
|
|
114
|
+
* @returns An error message string if invalid, null otherwise.
|
|
106
115
|
*/
|
|
107
|
-
validateToolParams(
|
|
116
|
+
validateToolParams(_params: TParams): string | null;
|
|
108
117
|
/**
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* @
|
|
118
|
+
* The core of the new pattern. It validates parameters and, if successful,
|
|
119
|
+
* returns a `ToolInvocation` object that encapsulates the logic for the
|
|
120
|
+
* specific, validated call.
|
|
121
|
+
* @param params The raw, untrusted parameters from the model.
|
|
122
|
+
* @returns A `ToolInvocation` instance.
|
|
113
123
|
*/
|
|
114
|
-
|
|
124
|
+
abstract build(params: TParams): ToolInvocation<TParams, TResult>;
|
|
115
125
|
/**
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* @
|
|
126
|
+
* A convenience method that builds and executes the tool in one step.
|
|
127
|
+
* Throws an error if validation fails.
|
|
128
|
+
* @param params The raw, untrusted parameters from the model.
|
|
129
|
+
* @param signal AbortSignal for tool cancellation.
|
|
130
|
+
* @param updateOutput Optional callback to stream output.
|
|
131
|
+
* @returns The result of the tool execution.
|
|
119
132
|
*/
|
|
120
|
-
|
|
133
|
+
buildAndExecute(params: TParams, signal: AbortSignal, updateOutput?: (output: string) => void): Promise<TResult>;
|
|
121
134
|
/**
|
|
122
|
-
*
|
|
123
|
-
* @param params
|
|
124
|
-
* @returns A
|
|
135
|
+
* Similar to `build` but never throws.
|
|
136
|
+
* @param params The raw, untrusted parameters from the model.
|
|
137
|
+
* @returns A `ToolInvocation` instance.
|
|
125
138
|
*/
|
|
126
|
-
|
|
139
|
+
private silentBuild;
|
|
127
140
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* @param params
|
|
131
|
-
* @
|
|
132
|
-
* @returns
|
|
141
|
+
* A convenience method that builds and executes the tool in one step.
|
|
142
|
+
* Never throws.
|
|
143
|
+
* @param params The raw, untrusted parameters from the model.
|
|
144
|
+
* @params abortSignal a signal to abort.
|
|
145
|
+
* @returns The result of the tool execution.
|
|
133
146
|
*/
|
|
134
|
-
|
|
147
|
+
validateBuildAndExecute(params: TParams, abortSignal: AbortSignal): Promise<ToolResult>;
|
|
135
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* New base class for declarative tools that separates validation from execution.
|
|
151
|
+
* New tools should extend this class, which provides a `build` method that
|
|
152
|
+
* validates parameters before deferring to a `createInvocation` method for
|
|
153
|
+
* the final `ToolInvocation` object instantiation.
|
|
154
|
+
*/
|
|
155
|
+
export declare abstract class BaseDeclarativeTool<TParams extends object, TResult extends ToolResult> extends DeclarativeTool<TParams, TResult> {
|
|
156
|
+
build(params: TParams): ToolInvocation<TParams, TResult>;
|
|
157
|
+
validateToolParams(params: TParams): string | null;
|
|
158
|
+
protected validateToolParamValues(_params: TParams): string | null;
|
|
159
|
+
protected abstract createInvocation(params: TParams): ToolInvocation<TParams, TResult>;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* A type alias for a declarative tool where the specific parameter and result types are not known.
|
|
163
|
+
*/
|
|
164
|
+
export type AnyDeclarativeTool = DeclarativeTool<object, ToolResult>;
|
|
136
165
|
export interface ToolResult {
|
|
137
166
|
/**
|
|
138
167
|
* A short, one-line summary of the tool's action and result.
|
|
@@ -160,22 +189,37 @@ export interface ToolResult {
|
|
|
160
189
|
type?: ToolErrorType;
|
|
161
190
|
};
|
|
162
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Detects cycles in a JSON schemas due to `$ref`s.
|
|
194
|
+
* @param schema The root of the JSON schema.
|
|
195
|
+
* @returns `true` if a cycle is detected, `false` otherwise.
|
|
196
|
+
*/
|
|
197
|
+
export declare function hasCycleInSchema(schema: object): boolean;
|
|
163
198
|
export type ToolResultDisplay = string | FileDiff;
|
|
164
199
|
export interface FileDiff {
|
|
165
200
|
fileDiff: string;
|
|
166
201
|
fileName: string;
|
|
167
202
|
originalContent: string | null;
|
|
168
203
|
newContent: string;
|
|
204
|
+
diffStat?: DiffStat;
|
|
205
|
+
}
|
|
206
|
+
export interface DiffStat {
|
|
207
|
+
ai_removed_lines: number;
|
|
208
|
+
ai_added_lines: number;
|
|
209
|
+
user_added_lines: number;
|
|
210
|
+
user_removed_lines: number;
|
|
169
211
|
}
|
|
170
212
|
export interface ToolEditConfirmationDetails {
|
|
171
213
|
type: 'edit';
|
|
172
214
|
title: string;
|
|
173
215
|
onConfirm: (outcome: ToolConfirmationOutcome, payload?: ToolConfirmationPayload) => Promise<void>;
|
|
174
216
|
fileName: string;
|
|
217
|
+
filePath: string;
|
|
175
218
|
fileDiff: string;
|
|
176
219
|
originalContent: string | null;
|
|
177
220
|
newContent: string;
|
|
178
221
|
isModifying?: boolean;
|
|
222
|
+
ideConfirmation?: Promise<DiffUpdateResult>;
|
|
179
223
|
}
|
|
180
224
|
export interface ToolConfirmationPayload {
|
|
181
225
|
newContent: string;
|
|
@@ -211,15 +255,16 @@ export declare enum ToolConfirmationOutcome {
|
|
|
211
255
|
ModifyWithEditor = "modify_with_editor",
|
|
212
256
|
Cancel = "cancel"
|
|
213
257
|
}
|
|
214
|
-
export declare enum
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
258
|
+
export declare enum Kind {
|
|
259
|
+
Read = "read",
|
|
260
|
+
Edit = "edit",
|
|
261
|
+
Delete = "delete",
|
|
262
|
+
Move = "move",
|
|
263
|
+
Search = "search",
|
|
264
|
+
Execute = "execute",
|
|
265
|
+
Think = "think",
|
|
266
|
+
Fetch = "fetch",
|
|
267
|
+
Other = "other"
|
|
223
268
|
}
|
|
224
269
|
export interface ToolLocation {
|
|
225
270
|
path: string;
|
package/dist/src/tools/tools.js
CHANGED
|
@@ -3,90 +3,216 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { ToolErrorType } from './tool-error.js';
|
|
7
|
+
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* A convenience base class for ToolInvocation.
|
|
8
10
|
*/
|
|
9
|
-
export class
|
|
11
|
+
export class BaseToolInvocation {
|
|
12
|
+
params;
|
|
13
|
+
constructor(params) {
|
|
14
|
+
this.params = params;
|
|
15
|
+
}
|
|
16
|
+
toolLocations() {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
shouldConfirmExecute(_abortSignal) {
|
|
20
|
+
return Promise.resolve(false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* New base class for tools that separates validation from execution.
|
|
25
|
+
* New tools should extend this class.
|
|
26
|
+
*/
|
|
27
|
+
export class DeclarativeTool {
|
|
10
28
|
name;
|
|
11
29
|
displayName;
|
|
12
30
|
description;
|
|
13
|
-
|
|
31
|
+
kind;
|
|
14
32
|
parameterSchema;
|
|
15
33
|
isOutputMarkdown;
|
|
16
34
|
canUpdateOutput;
|
|
17
|
-
|
|
18
|
-
* Creates a new instance of BaseTool
|
|
19
|
-
* @param name Internal name of the tool (used for API calls)
|
|
20
|
-
* @param displayName User-friendly display name of the tool
|
|
21
|
-
* @param description Description of what the tool does
|
|
22
|
-
* @param isOutputMarkdown Whether the tool's output should be rendered as markdown
|
|
23
|
-
* @param canUpdateOutput Whether the tool supports live (streaming) output
|
|
24
|
-
* @param parameterSchema Open API 3.0 Schema defining the parameters
|
|
25
|
-
*/
|
|
26
|
-
constructor(name, displayName, description, icon, parameterSchema, isOutputMarkdown = true, canUpdateOutput = false) {
|
|
35
|
+
constructor(name, displayName, description, kind, parameterSchema, isOutputMarkdown = true, canUpdateOutput = false) {
|
|
27
36
|
this.name = name;
|
|
28
37
|
this.displayName = displayName;
|
|
29
38
|
this.description = description;
|
|
30
|
-
this.
|
|
39
|
+
this.kind = kind;
|
|
31
40
|
this.parameterSchema = parameterSchema;
|
|
32
41
|
this.isOutputMarkdown = isOutputMarkdown;
|
|
33
42
|
this.canUpdateOutput = canUpdateOutput;
|
|
34
43
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Function declaration schema computed from name, description, and parameterSchema
|
|
37
|
-
*/
|
|
38
44
|
get schema() {
|
|
39
45
|
return {
|
|
40
46
|
name: this.name,
|
|
41
47
|
description: this.description,
|
|
42
|
-
|
|
48
|
+
parametersJsonSchema: this.parameterSchema,
|
|
43
49
|
};
|
|
44
50
|
}
|
|
45
51
|
/**
|
|
46
|
-
* Validates the
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @
|
|
51
|
-
* @returns An error message string if invalid, null otherwise
|
|
52
|
+
* Validates the raw tool parameters.
|
|
53
|
+
* Subclasses should override this to add custom validation logic
|
|
54
|
+
* beyond the JSON schema check.
|
|
55
|
+
* @param params The raw parameters from the model.
|
|
56
|
+
* @returns An error message string if invalid, null otherwise.
|
|
52
57
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// Implementation would typically use a JSON Schema validator
|
|
56
|
-
// This is a placeholder that should be implemented by derived classes
|
|
58
|
+
validateToolParams(_params) {
|
|
59
|
+
// Base implementation can be extended by subclasses.
|
|
57
60
|
return null;
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @param params
|
|
63
|
-
* @
|
|
63
|
+
* A convenience method that builds and executes the tool in one step.
|
|
64
|
+
* Throws an error if validation fails.
|
|
65
|
+
* @param params The raw, untrusted parameters from the model.
|
|
66
|
+
* @param signal AbortSignal for tool cancellation.
|
|
67
|
+
* @param updateOutput Optional callback to stream output.
|
|
68
|
+
* @returns The result of the tool execution.
|
|
64
69
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
async buildAndExecute(params, signal, updateOutput) {
|
|
71
|
+
const invocation = this.build(params);
|
|
72
|
+
return invocation.execute(signal, updateOutput);
|
|
67
73
|
}
|
|
68
74
|
/**
|
|
69
|
-
*
|
|
70
|
-
* @param params
|
|
71
|
-
* @returns
|
|
75
|
+
* Similar to `build` but never throws.
|
|
76
|
+
* @param params The raw, untrusted parameters from the model.
|
|
77
|
+
* @returns A `ToolInvocation` instance.
|
|
72
78
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
silentBuild(params) {
|
|
80
|
+
try {
|
|
81
|
+
return this.build(params);
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
if (e instanceof Error) {
|
|
85
|
+
return e;
|
|
86
|
+
}
|
|
87
|
+
return new Error(String(e));
|
|
88
|
+
}
|
|
79
89
|
}
|
|
80
90
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* @
|
|
91
|
+
* A convenience method that builds and executes the tool in one step.
|
|
92
|
+
* Never throws.
|
|
93
|
+
* @param params The raw, untrusted parameters from the model.
|
|
94
|
+
* @params abortSignal a signal to abort.
|
|
95
|
+
* @returns The result of the tool execution.
|
|
84
96
|
*/
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
async validateBuildAndExecute(params, abortSignal) {
|
|
98
|
+
const invocationOrError = this.silentBuild(params);
|
|
99
|
+
if (invocationOrError instanceof Error) {
|
|
100
|
+
const errorMessage = invocationOrError.message;
|
|
101
|
+
return {
|
|
102
|
+
llmContent: `Error: Invalid parameters provided. Reason: ${errorMessage}`,
|
|
103
|
+
returnDisplay: errorMessage,
|
|
104
|
+
error: {
|
|
105
|
+
message: errorMessage,
|
|
106
|
+
type: ToolErrorType.INVALID_TOOL_PARAMS,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
return await invocationOrError.execute(abortSignal);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
115
|
+
return {
|
|
116
|
+
llmContent: `Error: Tool call execution failed. Reason: ${errorMessage}`,
|
|
117
|
+
returnDisplay: errorMessage,
|
|
118
|
+
error: {
|
|
119
|
+
message: errorMessage,
|
|
120
|
+
type: ToolErrorType.EXECUTION_FAILED,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* New base class for declarative tools that separates validation from execution.
|
|
128
|
+
* New tools should extend this class, which provides a `build` method that
|
|
129
|
+
* validates parameters before deferring to a `createInvocation` method for
|
|
130
|
+
* the final `ToolInvocation` object instantiation.
|
|
131
|
+
*/
|
|
132
|
+
export class BaseDeclarativeTool extends DeclarativeTool {
|
|
133
|
+
build(params) {
|
|
134
|
+
const validationError = this.validateToolParams(params);
|
|
135
|
+
if (validationError) {
|
|
136
|
+
throw new Error(validationError);
|
|
137
|
+
}
|
|
138
|
+
return this.createInvocation(params);
|
|
139
|
+
}
|
|
140
|
+
validateToolParams(params) {
|
|
141
|
+
const errors = SchemaValidator.validate(this.schema.parametersJsonSchema, params);
|
|
142
|
+
if (errors) {
|
|
143
|
+
return errors;
|
|
144
|
+
}
|
|
145
|
+
return this.validateToolParamValues(params);
|
|
146
|
+
}
|
|
147
|
+
validateToolParamValues(_params) {
|
|
148
|
+
// Base implementation can be extended by subclasses.
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Detects cycles in a JSON schemas due to `$ref`s.
|
|
154
|
+
* @param schema The root of the JSON schema.
|
|
155
|
+
* @returns `true` if a cycle is detected, `false` otherwise.
|
|
156
|
+
*/
|
|
157
|
+
export function hasCycleInSchema(schema) {
|
|
158
|
+
function resolveRef(ref) {
|
|
159
|
+
if (!ref.startsWith('#/')) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const path = ref.substring(2).split('/');
|
|
163
|
+
let current = schema;
|
|
164
|
+
for (const segment of path) {
|
|
165
|
+
if (typeof current !== 'object' ||
|
|
166
|
+
current === null ||
|
|
167
|
+
!Object.prototype.hasOwnProperty.call(current, segment)) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
current = current[segment];
|
|
171
|
+
}
|
|
172
|
+
return current;
|
|
173
|
+
}
|
|
174
|
+
function traverse(node, visitedRefs, pathRefs) {
|
|
175
|
+
if (typeof node !== 'object' || node === null) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
if (Array.isArray(node)) {
|
|
179
|
+
for (const item of node) {
|
|
180
|
+
if (traverse(item, visitedRefs, pathRefs)) {
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
if ('$ref' in node && typeof node.$ref === 'string') {
|
|
187
|
+
const ref = node.$ref;
|
|
188
|
+
if (ref === '#/' || pathRefs.has(ref)) {
|
|
189
|
+
// A ref to just '#/' is always a cycle.
|
|
190
|
+
return true; // Cycle detected!
|
|
191
|
+
}
|
|
192
|
+
if (visitedRefs.has(ref)) {
|
|
193
|
+
return false; // Bail early, we have checked this ref before.
|
|
194
|
+
}
|
|
195
|
+
const resolvedNode = resolveRef(ref);
|
|
196
|
+
if (resolvedNode) {
|
|
197
|
+
// Add it to both visited and the current path
|
|
198
|
+
visitedRefs.add(ref);
|
|
199
|
+
pathRefs.add(ref);
|
|
200
|
+
const hasCycle = traverse(resolvedNode, visitedRefs, pathRefs);
|
|
201
|
+
pathRefs.delete(ref); // Backtrack, leaving it in visited
|
|
202
|
+
return hasCycle;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Crawl all the properties of node
|
|
206
|
+
for (const key in node) {
|
|
207
|
+
if (Object.prototype.hasOwnProperty.call(node, key)) {
|
|
208
|
+
if (traverse(node[key], visitedRefs, pathRefs)) {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return false;
|
|
89
214
|
}
|
|
215
|
+
return traverse(schema, new Set(), new Set());
|
|
90
216
|
}
|
|
91
217
|
export var ToolConfirmationOutcome;
|
|
92
218
|
(function (ToolConfirmationOutcome) {
|
|
@@ -97,15 +223,16 @@ export var ToolConfirmationOutcome;
|
|
|
97
223
|
ToolConfirmationOutcome["ModifyWithEditor"] = "modify_with_editor";
|
|
98
224
|
ToolConfirmationOutcome["Cancel"] = "cancel";
|
|
99
225
|
})(ToolConfirmationOutcome || (ToolConfirmationOutcome = {}));
|
|
100
|
-
export var
|
|
101
|
-
(function (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
226
|
+
export var Kind;
|
|
227
|
+
(function (Kind) {
|
|
228
|
+
Kind["Read"] = "read";
|
|
229
|
+
Kind["Edit"] = "edit";
|
|
230
|
+
Kind["Delete"] = "delete";
|
|
231
|
+
Kind["Move"] = "move";
|
|
232
|
+
Kind["Search"] = "search";
|
|
233
|
+
Kind["Execute"] = "execute";
|
|
234
|
+
Kind["Think"] = "think";
|
|
235
|
+
Kind["Fetch"] = "fetch";
|
|
236
|
+
Kind["Other"] = "other";
|
|
237
|
+
})(Kind || (Kind = {}));
|
|
111
238
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"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"}
|