@vybestack/llxprt-code-core 0.1.12
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/.last_build +0 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__mocks__/fs/promises.d.ts +11 -0
- package/dist/src/__mocks__/fs/promises.js +17 -0
- package/dist/src/__mocks__/fs/promises.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +9 -0
- package/dist/src/code_assist/codeAssist.js +19 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +68 -0
- package/dist/src/code_assist/converter.js +125 -0
- package/dist/src/code_assist/converter.js.map +1 -0
- package/dist/src/code_assist/converter.test.d.ts +6 -0
- package/dist/src/code_assist/converter.test.js +229 -0
- package/dist/src/code_assist/converter.test.js.map +1 -0
- package/dist/src/code_assist/oauth2.d.ts +20 -0
- package/dist/src/code_assist/oauth2.js +339 -0
- package/dist/src/code_assist/oauth2.js.map +1 -0
- package/dist/src/code_assist/oauth2.test.d.ts +6 -0
- package/dist/src/code_assist/oauth2.test.js +249 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -0
- package/dist/src/code_assist/server.d.ts +39 -0
- package/dist/src/code_assist/server.js +191 -0
- package/dist/src/code_assist/server.js.map +1 -0
- package/dist/src/code_assist/server.test.d.ts +6 -0
- package/dist/src/code_assist/server.test.js +123 -0
- package/dist/src/code_assist/server.test.js.map +1 -0
- package/dist/src/code_assist/setup.d.ts +15 -0
- package/dist/src/code_assist/setup.js +67 -0
- package/dist/src/code_assist/setup.js.map +1 -0
- package/dist/src/code_assist/setup.test.d.ts +6 -0
- package/dist/src/code_assist/setup.test.js +62 -0
- package/dist/src/code_assist/setup.test.js.map +1 -0
- package/dist/src/code_assist/types.d.ts +148 -0
- package/dist/src/code_assist/types.js +46 -0
- package/dist/src/code_assist/types.js.map +1 -0
- package/dist/src/config/config.d.ts +212 -0
- package/dist/src/config/config.js +454 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/config.test.d.ts +6 -0
- package/dist/src/config/config.test.js +291 -0
- package/dist/src/config/config.test.js.map +1 -0
- package/dist/src/config/flashFallback.test.d.ts +6 -0
- package/dist/src/config/flashFallback.test.js +115 -0
- package/dist/src/config/flashFallback.test.js.map +1 -0
- package/dist/src/config/models.d.ts +8 -0
- package/dist/src/config/models.js +9 -0
- package/dist/src/config/models.js.map +1 -0
- package/dist/src/core/client.d.ts +59 -0
- package/dist/src/core/client.js +503 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/client.test.d.ts +6 -0
- package/dist/src/core/client.test.js +1006 -0
- package/dist/src/core/client.test.js.map +1 -0
- package/dist/src/core/contentGenerator.d.ts +36 -0
- package/dist/src/core/contentGenerator.js +79 -0
- package/dist/src/core/contentGenerator.js.map +1 -0
- package/dist/src/core/contentGenerator.test.d.ts +6 -0
- package/dist/src/core/contentGenerator.test.js +92 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +104 -0
- package/dist/src/core/coreToolScheduler.js +413 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
- package/dist/src/core/coreToolScheduler.test.js +347 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -0
- package/dist/src/core/geminiChat.d.ts +116 -0
- package/dist/src/core/geminiChat.js +513 -0
- package/dist/src/core/geminiChat.js.map +1 -0
- package/dist/src/core/geminiChat.test.d.ts +6 -0
- package/dist/src/core/geminiChat.test.js +424 -0
- package/dist/src/core/geminiChat.test.js.map +1 -0
- package/dist/src/core/geminiRequest.d.ts +13 -0
- package/dist/src/core/geminiRequest.js +45 -0
- package/dist/src/core/geminiRequest.js.map +1 -0
- package/dist/src/core/geminiRequest.test.d.ts +6 -0
- package/dist/src/core/geminiRequest.test.js +72 -0
- package/dist/src/core/geminiRequest.test.js.map +1 -0
- package/dist/src/core/logger.d.ts +38 -0
- package/dist/src/core/logger.js +237 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/logger.test.d.ts +6 -0
- package/dist/src/core/logger.test.js +387 -0
- package/dist/src/core/logger.test.js.map +1 -0
- package/dist/src/core/modelCheck.d.ts +14 -0
- package/dist/src/core/modelCheck.js +55 -0
- package/dist/src/core/modelCheck.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +12 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +93 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js +180 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +12 -0
- package/dist/src/core/prompts.js +418 -0
- package/dist/src/core/prompts.js.map +1 -0
- package/dist/src/core/prompts.test.d.ts +6 -0
- package/dist/src/core/prompts.test.js +97 -0
- package/dist/src/core/prompts.test.js.map +1 -0
- package/dist/src/core/tokenLimits.d.ts +10 -0
- package/dist/src/core/tokenLimits.js +75 -0
- package/dist/src/core/tokenLimits.js.map +1 -0
- package/dist/src/core/tokenLimits.test.d.ts +6 -0
- package/dist/src/core/tokenLimits.test.js +66 -0
- package/dist/src/core/tokenLimits.test.js.map +1 -0
- package/dist/src/core/turn.d.ts +116 -0
- package/dist/src/core/turn.js +131 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/core/turn.test.d.ts +6 -0
- package/dist/src/core/turn.test.js +237 -0
- package/dist/src/core/turn.test.js.map +1 -0
- package/dist/src/index.d.ts +57 -0
- package/dist/src/index.js +64 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.test.d.ts +6 -0
- package/dist/src/index.test.js +12 -0
- package/dist/src/index.test.js.map +1 -0
- package/dist/src/providers/ProviderContentGenerator.d.ts +21 -0
- package/dist/src/providers/ProviderContentGenerator.js +52 -0
- package/dist/src/providers/ProviderContentGenerator.js.map +1 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.d.ts +68 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +549 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +1 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +6 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +253 -0
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +1 -0
- package/dist/src/providers/types.d.ts +82 -0
- package/dist/src/providers/types.js +7 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.d.ts +35 -0
- package/dist/src/services/fileDiscoveryService.js +91 -0
- package/dist/src/services/fileDiscoveryService.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
- package/dist/src/services/fileDiscoveryService.test.js +102 -0
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
- package/dist/src/services/gitService.d.ts +21 -0
- package/dist/src/services/gitService.js +102 -0
- package/dist/src/services/gitService.js.map +1 -0
- package/dist/src/services/gitService.test.d.ts +6 -0
- package/dist/src/services/gitService.test.js +246 -0
- package/dist/src/services/gitService.test.js.map +1 -0
- package/dist/src/services/ideContext.d.ts +124 -0
- package/dist/src/services/ideContext.js +90 -0
- package/dist/src/services/ideContext.js.map +1 -0
- package/dist/src/services/ideContext.test.d.ts +6 -0
- package/dist/src/services/ideContext.test.js +101 -0
- package/dist/src/services/ideContext.test.js.map +1 -0
- package/dist/src/services/loopDetectionService.d.ts +35 -0
- package/dist/src/services/loopDetectionService.js +117 -0
- package/dist/src/services/loopDetectionService.js.map +1 -0
- package/dist/src/services/loopDetectionService.test.d.ts +6 -0
- package/dist/src/services/loopDetectionService.test.js +232 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +35 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +424 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +47 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +123 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +20 -0
- package/dist/src/telemetry/constants.js +21 -0
- package/dist/src/telemetry/constants.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +18 -0
- package/dist/src/telemetry/index.js +20 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
- package/dist/src/telemetry/integration.test.circular.js +53 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +15 -0
- package/dist/src/telemetry/loggers.js +229 -0
- package/dist/src/telemetry/loggers.js.map +1 -0
- package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.circular.js +100 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.test.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.js +558 -0
- package/dist/src/telemetry/loggers.test.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +19 -0
- package/dist/src/telemetry/metrics.js +144 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/telemetry/metrics.test.d.ts +6 -0
- package/dist/src/telemetry/metrics.test.js +162 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -0
- package/dist/src/telemetry/sdk.d.ts +9 -0
- package/dist/src/telemetry/sdk.js +120 -0
- package/dist/src/telemetry/sdk.js.map +1 -0
- package/dist/src/telemetry/telemetry.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry.test.js +52 -0
- package/dist/src/telemetry/telemetry.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +115 -0
- package/dist/src/telemetry/types.js +217 -0
- package/dist/src/telemetry/types.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.d.ts +67 -0
- package/dist/src/telemetry/uiTelemetry.js +131 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
- package/dist/src/telemetry/uiTelemetry.test.js +412 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +7 -0
- package/dist/src/tools/diffOptions.js +10 -0
- package/dist/src/tools/diffOptions.js.map +1 -0
- package/dist/src/tools/edit.d.ts +73 -0
- package/dist/src/tools/edit.js +343 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/edit.test.d.ts +6 -0
- package/dist/src/tools/edit.test.js +500 -0
- package/dist/src/tools/edit.test.js.map +1 -0
- package/dist/src/tools/glob.d.ts +58 -0
- package/dist/src/tools/glob.js +193 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/glob.test.d.ts +6 -0
- package/dist/src/tools/glob.test.js +294 -0
- package/dist/src/tools/glob.test.js.map +1 -0
- package/dist/src/tools/grep.d.ts +78 -0
- package/dist/src/tools/grep.js +422 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/grep.test.d.ts +6 -0
- package/dist/src/tools/grep.test.js +188 -0
- package/dist/src/tools/grep.test.js.map +1 -0
- package/dist/src/tools/ls.d.ts +83 -0
- package/dist/src/tools/ls.js +194 -0
- package/dist/src/tools/ls.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +112 -0
- package/dist/src/tools/mcp-client.js +332 -0
- package/dist/src/tools/mcp-client.js.map +1 -0
- package/dist/src/tools/mcp-client.test.d.ts +6 -0
- package/dist/src/tools/mcp-client.test.js +227 -0
- package/dist/src/tools/mcp-client.test.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +23 -0
- package/dist/src/tools/mcp-tool.js +119 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/mcp-tool.test.d.ts +6 -0
- package/dist/src/tools/mcp-tool.test.js +173 -0
- package/dist/src/tools/mcp-tool.test.js.map +1 -0
- package/dist/src/tools/memoryTool.d.ts +28 -0
- package/dist/src/tools/memoryTool.js +172 -0
- package/dist/src/tools/memoryTool.js.map +1 -0
- package/dist/src/tools/memoryTool.test.d.ts +6 -0
- package/dist/src/tools/memoryTool.test.js +181 -0
- package/dist/src/tools/memoryTool.test.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +29 -0
- package/dist/src/tools/modifiable-tool.js +85 -0
- package/dist/src/tools/modifiable-tool.js.map +1 -0
- package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
- package/dist/src/tools/modifiable-tool.test.js +204 -0
- package/dist/src/tools/modifiable-tool.test.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +35 -0
- package/dist/src/tools/read-file.js +106 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/read-file.test.d.ts +6 -0
- package/dist/src/tools/read-file.test.js +181 -0
- package/dist/src/tools/read-file.test.js.map +1 -0
- package/dist/src/tools/read-many-files.d.ts +59 -0
- package/dist/src/tools/read-many-files.js +321 -0
- package/dist/src/tools/read-many-files.js.map +1 -0
- package/dist/src/tools/read-many-files.test.d.ts +6 -0
- package/dist/src/tools/read-many-files.test.js +312 -0
- package/dist/src/tools/read-many-files.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +43 -0
- package/dist/src/tools/shell.js +435 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/shell.test.d.ts +6 -0
- package/dist/src/tools/shell.test.js +407 -0
- package/dist/src/tools/shell.test.js.map +1 -0
- package/dist/src/tools/todo-read.d.ts +15 -0
- package/dist/src/tools/todo-read.js +66 -0
- package/dist/src/tools/todo-read.js.map +1 -0
- package/dist/src/tools/todo-read.test.d.ts +6 -0
- package/dist/src/tools/todo-read.test.js +158 -0
- package/dist/src/tools/todo-read.test.js.map +1 -0
- package/dist/src/tools/todo-schemas.d.ts +43 -0
- package/dist/src/tools/todo-schemas.js +16 -0
- package/dist/src/tools/todo-schemas.js.map +1 -0
- package/dist/src/tools/todo-schemas.test.d.ts +6 -0
- package/dist/src/tools/todo-schemas.test.js +152 -0
- package/dist/src/tools/todo-schemas.test.js.map +1 -0
- package/dist/src/tools/todo-store.d.ts +15 -0
- package/dist/src/tools/todo-store.js +59 -0
- package/dist/src/tools/todo-store.js.map +1 -0
- package/dist/src/tools/todo-store.test.d.ts +6 -0
- package/dist/src/tools/todo-store.test.js +175 -0
- package/dist/src/tools/todo-store.test.js.map +1 -0
- package/dist/src/tools/todo-write.d.ts +17 -0
- package/dist/src/tools/todo-write.js +98 -0
- package/dist/src/tools/todo-write.js.map +1 -0
- package/dist/src/tools/todo-write.test.d.ts +6 -0
- package/dist/src/tools/todo-write.test.js +208 -0
- package/dist/src/tools/todo-write.test.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +67 -0
- package/dist/src/tools/tool-registry.js +326 -0
- package/dist/src/tools/tool-registry.js.map +1 -0
- package/dist/src/tools/tool-registry.test.d.ts +6 -0
- package/dist/src/tools/tool-registry.test.js +398 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -0
- package/dist/src/tools/tools.d.ts +184 -0
- package/dist/src/tools/tools.js +88 -0
- package/dist/src/tools/tools.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +29 -0
- package/dist/src/tools/web-fetch.js +243 -0
- package/dist/src/tools/web-fetch.js.map +1 -0
- package/dist/src/tools/web-fetch.test.d.ts +6 -0
- package/dist/src/tools/web-fetch.test.js +70 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +49 -0
- package/dist/src/tools/web-search.js +120 -0
- package/dist/src/tools/web-search.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +42 -0
- package/dist/src/tools/write-file.js +248 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/tools/write-file.test.d.ts +6 -0
- package/dist/src/tools/write-file.test.js +413 -0
- package/dist/src/tools/write-file.test.js.map +1 -0
- package/dist/src/utils/LruCache.d.ts +13 -0
- package/dist/src/utils/LruCache.js +38 -0
- package/dist/src/utils/LruCache.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +22 -0
- package/dist/src/utils/bfsFileSearch.js +62 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
- package/dist/src/utils/bfsFileSearch.test.js +129 -0
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +53 -0
- package/dist/src/utils/editCorrector.js +546 -0
- package/dist/src/utils/editCorrector.js.map +1 -0
- package/dist/src/utils/editCorrector.test.d.ts +6 -0
- package/dist/src/utils/editCorrector.test.js +564 -0
- package/dist/src/utils/editCorrector.test.js.map +1 -0
- package/dist/src/utils/editor.d.ts +28 -0
- package/dist/src/utils/editor.js +163 -0
- package/dist/src/utils/editor.js.map +1 -0
- package/dist/src/utils/editor.test.d.ts +6 -0
- package/dist/src/utils/editor.test.js +293 -0
- package/dist/src/utils/editor.test.js.map +1 -0
- package/dist/src/utils/errorReporting.d.ts +14 -0
- package/dist/src/utils/errorReporting.js +88 -0
- package/dist/src/utils/errorReporting.js.map +1 -0
- package/dist/src/utils/errorReporting.test.d.ts +6 -0
- package/dist/src/utils/errorReporting.test.js +124 -0
- package/dist/src/utils/errorReporting.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +14 -0
- package/dist/src/utils/errors.js +54 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +11 -0
- package/dist/src/utils/fetch.js +51 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +49 -0
- package/dist/src/utils/fileUtils.js +286 -0
- package/dist/src/utils/fileUtils.js.map +1 -0
- package/dist/src/utils/fileUtils.test.d.ts +6 -0
- package/dist/src/utils/fileUtils.test.js +321 -0
- package/dist/src/utils/fileUtils.test.js.map +1 -0
- package/dist/src/utils/flashFallback.integration.test.d.ts +6 -0
- package/dist/src/utils/flashFallback.integration.test.js +112 -0
- package/dist/src/utils/flashFallback.integration.test.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.d.ts +14 -0
- package/dist/src/utils/generateContentResponseUtilities.js +92 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js +273 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
- package/dist/src/utils/getFolderStructure.d.ts +30 -0
- package/dist/src/utils/getFolderStructure.js +247 -0
- package/dist/src/utils/getFolderStructure.js.map +1 -0
- package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
- package/dist/src/utils/getFolderStructure.test.js +298 -0
- package/dist/src/utils/getFolderStructure.test.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +20 -0
- package/dist/src/utils/gitIgnoreParser.js +64 -0
- package/dist/src/utils/gitIgnoreParser.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
- package/dist/src/utils/gitIgnoreParser.test.js +145 -0
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +17 -0
- package/dist/src/utils/gitUtils.js +61 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +14 -0
- package/dist/src/utils/memoryDiscovery.js +219 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
- package/dist/src/utils/memoryDiscovery.test.js +432 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.d.ts +35 -0
- package/dist/src/utils/memoryImportProcessor.js +141 -0
- package/dist/src/utils/memoryImportProcessor.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
- package/dist/src/utils/memoryImportProcessor.test.js +170 -0
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
- package/dist/src/utils/messageInspectors.d.ts +8 -0
- package/dist/src/utils/messageInspectors.js +16 -0
- package/dist/src/utils/messageInspectors.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
- package/dist/src/utils/nextSpeakerChecker.js +113 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
- package/dist/src/utils/nextSpeakerChecker.test.js +168 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +49 -0
- package/dist/src/utils/paths.js +145 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.d.ts +22 -0
- package/dist/src/utils/quotaErrorDetection.js +67 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -0
- package/dist/src/utils/retry.d.ts +21 -0
- package/dist/src/utils/retry.js +276 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/retry.test.d.ts +6 -0
- package/dist/src/utils/retry.test.js +322 -0
- package/dist/src/utils/retry.test.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.d.ts +13 -0
- package/dist/src/utils/safeJsonStringify.js +25 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.test.d.ts +6 -0
- package/dist/src/utils/safeJsonStringify.test.js +61 -0
- package/dist/src/utils/safeJsonStringify.test.js.map +1 -0
- package/dist/src/utils/schemaValidator.d.ts +23 -0
- package/dist/src/utils/schemaValidator.js +142 -0
- package/dist/src/utils/schemaValidator.js.map +1 -0
- package/dist/src/utils/schemaValidator.test.d.ts +6 -0
- package/dist/src/utils/schemaValidator.test.js +146 -0
- package/dist/src/utils/schemaValidator.test.js.map +1 -0
- package/dist/src/utils/session.d.ts +6 -0
- package/dist/src/utils/session.js +8 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/summarizer.d.ts +25 -0
- package/dist/src/utils/summarizer.js +80 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/summarizer.test.d.ts +6 -0
- package/dist/src/utils/summarizer.test.js +131 -0
- package/dist/src/utils/summarizer.test.js.map +1 -0
- package/dist/src/utils/testUtils.d.ts +29 -0
- package/dist/src/utils/testUtils.js +70 -0
- package/dist/src/utils/testUtils.js.map +1 -0
- package/dist/src/utils/user_account.d.ts +9 -0
- package/dist/src/utils/user_account.js +99 -0
- package/dist/src/utils/user_account.js.map +1 -0
- package/dist/src/utils/user_account.test.d.ts +6 -0
- package/dist/src/utils/user_account.test.js +153 -0
- package/dist/src/utils/user_account.test.js.map +1 -0
- package/dist/src/utils/user_id.d.ts +11 -0
- package/dist/src/utils/user_id.js +49 -0
- package/dist/src/utils/user_id.js.map +1 -0
- package/dist/src/utils/user_id.test.d.ts +6 -0
- package/dist/src/utils/user_id.test.js +21 -0
- package/dist/src/utils/user_id.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vybestack-llxprt-code-core-0.1.12.tgz +0 -0
- package/package.json +62 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
+
import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
|
|
8
|
+
import { ToolRegistry, sanitizeParameters, } from './tool-registry.js';
|
|
9
|
+
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
10
|
+
import { Config, ApprovalMode } from '../config/config.js';
|
|
11
|
+
import { BaseTool } from './tools.js';
|
|
12
|
+
import { mcpToTool, Type, } from '@google/genai';
|
|
13
|
+
import { spawn } from 'node:child_process';
|
|
14
|
+
// Use vi.hoisted to define the mock function so it can be used in the vi.mock factory
|
|
15
|
+
const mockDiscoverMcpTools = vi.hoisted(() => vi.fn());
|
|
16
|
+
// Mock ./mcp-client.js to control its behavior within tool-registry tests
|
|
17
|
+
vi.mock('./mcp-client.js', () => ({
|
|
18
|
+
discoverMcpTools: mockDiscoverMcpTools,
|
|
19
|
+
}));
|
|
20
|
+
// Mock node:child_process
|
|
21
|
+
vi.mock('node:child_process', async () => {
|
|
22
|
+
const actual = await vi.importActual('node:child_process');
|
|
23
|
+
return {
|
|
24
|
+
...actual,
|
|
25
|
+
execSync: vi.fn(),
|
|
26
|
+
spawn: vi.fn(),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
// Mock MCP SDK Client and Transports
|
|
30
|
+
const mockMcpClientConnect = vi.fn();
|
|
31
|
+
const mockMcpClientOnError = vi.fn();
|
|
32
|
+
const mockStdioTransportClose = vi.fn();
|
|
33
|
+
const mockSseTransportClose = vi.fn();
|
|
34
|
+
vi.mock('@modelcontextprotocol/sdk/client/index.js', () => {
|
|
35
|
+
const MockClient = vi.fn().mockImplementation(() => ({
|
|
36
|
+
connect: mockMcpClientConnect,
|
|
37
|
+
set onerror(handler) {
|
|
38
|
+
mockMcpClientOnError(handler);
|
|
39
|
+
},
|
|
40
|
+
}));
|
|
41
|
+
return { Client: MockClient };
|
|
42
|
+
});
|
|
43
|
+
vi.mock('@modelcontextprotocol/sdk/client/stdio.js', () => {
|
|
44
|
+
const MockStdioClientTransport = vi.fn().mockImplementation(() => ({
|
|
45
|
+
stderr: {
|
|
46
|
+
on: vi.fn(),
|
|
47
|
+
},
|
|
48
|
+
close: mockStdioTransportClose,
|
|
49
|
+
}));
|
|
50
|
+
return { StdioClientTransport: MockStdioClientTransport };
|
|
51
|
+
});
|
|
52
|
+
vi.mock('@modelcontextprotocol/sdk/client/sse.js', () => {
|
|
53
|
+
const MockSSEClientTransport = vi.fn().mockImplementation(() => ({
|
|
54
|
+
close: mockSseTransportClose,
|
|
55
|
+
}));
|
|
56
|
+
return { SSEClientTransport: MockSSEClientTransport };
|
|
57
|
+
});
|
|
58
|
+
// Mock @google/genai mcpToTool
|
|
59
|
+
vi.mock('@google/genai', async () => {
|
|
60
|
+
const actualGenai = await vi.importActual('@google/genai');
|
|
61
|
+
return {
|
|
62
|
+
...actualGenai,
|
|
63
|
+
mcpToTool: vi.fn().mockImplementation(() => ({
|
|
64
|
+
tool: vi.fn().mockResolvedValue({ functionDeclarations: [] }),
|
|
65
|
+
callTool: vi.fn(),
|
|
66
|
+
})),
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
// Helper to create a mock CallableTool for specific test needs
|
|
70
|
+
const createMockCallableTool = (toolDeclarations) => ({
|
|
71
|
+
tool: vi.fn().mockResolvedValue({ functionDeclarations: toolDeclarations }),
|
|
72
|
+
callTool: vi.fn(),
|
|
73
|
+
});
|
|
74
|
+
class MockTool extends BaseTool {
|
|
75
|
+
constructor(name = 'mock-tool', description = 'A mock tool') {
|
|
76
|
+
super(name, name, description, {
|
|
77
|
+
type: Type.OBJECT,
|
|
78
|
+
properties: {
|
|
79
|
+
param: { type: Type.STRING },
|
|
80
|
+
},
|
|
81
|
+
required: ['param'],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async execute(params) {
|
|
85
|
+
return {
|
|
86
|
+
llmContent: `Executed with ${params.param}`,
|
|
87
|
+
returnDisplay: `Executed with ${params.param}`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const baseConfigParams = {
|
|
92
|
+
cwd: '/tmp',
|
|
93
|
+
model: 'test-model',
|
|
94
|
+
embeddingModel: 'test-embedding-model',
|
|
95
|
+
sandbox: undefined,
|
|
96
|
+
targetDir: '/test/dir',
|
|
97
|
+
debugMode: false,
|
|
98
|
+
userMemory: '',
|
|
99
|
+
llxprtMdFileCount: 0,
|
|
100
|
+
approvalMode: ApprovalMode.DEFAULT,
|
|
101
|
+
sessionId: 'test-session-id',
|
|
102
|
+
};
|
|
103
|
+
describe('ToolRegistry', () => {
|
|
104
|
+
let config;
|
|
105
|
+
let toolRegistry;
|
|
106
|
+
let mockConfigGetToolDiscoveryCommand;
|
|
107
|
+
beforeEach(() => {
|
|
108
|
+
config = new Config(baseConfigParams);
|
|
109
|
+
toolRegistry = new ToolRegistry(config);
|
|
110
|
+
vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
111
|
+
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
112
|
+
vi.spyOn(console, 'debug').mockImplementation(() => { });
|
|
113
|
+
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
114
|
+
mockMcpClientConnect.mockReset().mockResolvedValue(undefined);
|
|
115
|
+
mockStdioTransportClose.mockReset();
|
|
116
|
+
mockSseTransportClose.mockReset();
|
|
117
|
+
vi.mocked(mcpToTool).mockClear();
|
|
118
|
+
vi.mocked(mcpToTool).mockReturnValue(createMockCallableTool([]));
|
|
119
|
+
mockConfigGetToolDiscoveryCommand = vi.spyOn(config, 'getToolDiscoveryCommand');
|
|
120
|
+
vi.spyOn(config, 'getMcpServers');
|
|
121
|
+
vi.spyOn(config, 'getMcpServerCommand');
|
|
122
|
+
mockDiscoverMcpTools.mockReset().mockResolvedValue(undefined);
|
|
123
|
+
});
|
|
124
|
+
afterEach(() => {
|
|
125
|
+
vi.restoreAllMocks();
|
|
126
|
+
});
|
|
127
|
+
describe('registerTool', () => {
|
|
128
|
+
it('should register a new tool', () => {
|
|
129
|
+
const tool = new MockTool();
|
|
130
|
+
toolRegistry.registerTool(tool);
|
|
131
|
+
expect(toolRegistry.getTool('mock-tool')).toBe(tool);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('getToolsByServer', () => {
|
|
135
|
+
it('should return an empty array if no tools match the server name', () => {
|
|
136
|
+
toolRegistry.registerTool(new MockTool());
|
|
137
|
+
expect(toolRegistry.getToolsByServer('any-mcp-server')).toEqual([]);
|
|
138
|
+
});
|
|
139
|
+
it('should return only tools matching the server name', async () => {
|
|
140
|
+
const server1Name = 'mcp-server-uno';
|
|
141
|
+
const server2Name = 'mcp-server-dos';
|
|
142
|
+
const mockCallable = {};
|
|
143
|
+
const mcpTool1 = new DiscoveredMCPTool(mockCallable, server1Name, 'server1Name__tool-on-server1', 'd1', {}, 'tool-on-server1');
|
|
144
|
+
const mcpTool2 = new DiscoveredMCPTool(mockCallable, server2Name, 'server2Name__tool-on-server2', 'd2', {}, 'tool-on-server2');
|
|
145
|
+
const nonMcpTool = new MockTool('regular-tool');
|
|
146
|
+
toolRegistry.registerTool(mcpTool1);
|
|
147
|
+
toolRegistry.registerTool(mcpTool2);
|
|
148
|
+
toolRegistry.registerTool(nonMcpTool);
|
|
149
|
+
const toolsFromServer1 = toolRegistry.getToolsByServer(server1Name);
|
|
150
|
+
expect(toolsFromServer1).toHaveLength(1);
|
|
151
|
+
expect(toolsFromServer1[0].name).toBe(mcpTool1.name);
|
|
152
|
+
const toolsFromServer2 = toolRegistry.getToolsByServer(server2Name);
|
|
153
|
+
expect(toolsFromServer2).toHaveLength(1);
|
|
154
|
+
expect(toolsFromServer2[0].name).toBe(mcpTool2.name);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('discoverTools', () => {
|
|
158
|
+
it('should sanitize tool parameters during discovery from command', async () => {
|
|
159
|
+
const discoveryCommand = 'my-discovery-command';
|
|
160
|
+
mockConfigGetToolDiscoveryCommand.mockReturnValue(discoveryCommand);
|
|
161
|
+
const unsanitizedToolDeclaration = {
|
|
162
|
+
name: 'tool-with-bad-format',
|
|
163
|
+
description: 'A tool with an invalid format property',
|
|
164
|
+
parameters: {
|
|
165
|
+
type: Type.OBJECT,
|
|
166
|
+
properties: {
|
|
167
|
+
some_string: {
|
|
168
|
+
type: Type.STRING,
|
|
169
|
+
format: 'uuid', // This is an unsupported format
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
const mockSpawn = vi.mocked(spawn);
|
|
175
|
+
const mockChildProcess = {
|
|
176
|
+
stdout: { on: vi.fn() },
|
|
177
|
+
stderr: { on: vi.fn() },
|
|
178
|
+
on: vi.fn(),
|
|
179
|
+
};
|
|
180
|
+
mockSpawn.mockReturnValue(mockChildProcess);
|
|
181
|
+
// Simulate stdout data
|
|
182
|
+
mockChildProcess.stdout.on.mockImplementation((event, callback) => {
|
|
183
|
+
if (event === 'data') {
|
|
184
|
+
callback(Buffer.from(JSON.stringify([
|
|
185
|
+
{ function_declarations: [unsanitizedToolDeclaration] },
|
|
186
|
+
])));
|
|
187
|
+
}
|
|
188
|
+
return mockChildProcess;
|
|
189
|
+
});
|
|
190
|
+
// Simulate process close
|
|
191
|
+
mockChildProcess.on.mockImplementation((event, callback) => {
|
|
192
|
+
if (event === 'close') {
|
|
193
|
+
callback(0);
|
|
194
|
+
}
|
|
195
|
+
return mockChildProcess;
|
|
196
|
+
});
|
|
197
|
+
await toolRegistry.discoverTools();
|
|
198
|
+
const discoveredTool = toolRegistry.getTool('tool-with-bad-format');
|
|
199
|
+
expect(discoveredTool).toBeDefined();
|
|
200
|
+
const registeredParams = discoveredTool.schema
|
|
201
|
+
.parameters;
|
|
202
|
+
expect(registeredParams.properties?.['some_string']).toBeDefined();
|
|
203
|
+
expect(registeredParams.properties?.['some_string']).toHaveProperty('format', undefined);
|
|
204
|
+
});
|
|
205
|
+
it('should discover tools using MCP servers defined in getMcpServers', async () => {
|
|
206
|
+
mockConfigGetToolDiscoveryCommand.mockReturnValue(undefined);
|
|
207
|
+
vi.spyOn(config, 'getMcpServerCommand').mockReturnValue(undefined);
|
|
208
|
+
const mcpServerConfigVal = {
|
|
209
|
+
'my-mcp-server': {
|
|
210
|
+
command: 'mcp-server-cmd',
|
|
211
|
+
args: ['--port', '1234'],
|
|
212
|
+
trust: true,
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
vi.spyOn(config, 'getMcpServers').mockReturnValue(mcpServerConfigVal);
|
|
216
|
+
await toolRegistry.discoverTools();
|
|
217
|
+
expect(mockDiscoverMcpTools).toHaveBeenCalledWith(mcpServerConfigVal, undefined, toolRegistry, false);
|
|
218
|
+
});
|
|
219
|
+
it('should discover tools using MCP servers defined in getMcpServers', async () => {
|
|
220
|
+
mockConfigGetToolDiscoveryCommand.mockReturnValue(undefined);
|
|
221
|
+
vi.spyOn(config, 'getMcpServerCommand').mockReturnValue(undefined);
|
|
222
|
+
const mcpServerConfigVal = {
|
|
223
|
+
'my-mcp-server': {
|
|
224
|
+
command: 'mcp-server-cmd',
|
|
225
|
+
args: ['--port', '1234'],
|
|
226
|
+
trust: true,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
vi.spyOn(config, 'getMcpServers').mockReturnValue(mcpServerConfigVal);
|
|
230
|
+
await toolRegistry.discoverTools();
|
|
231
|
+
expect(mockDiscoverMcpTools).toHaveBeenCalledWith(mcpServerConfigVal, undefined, toolRegistry, false);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
describe('sanitizeParameters', () => {
|
|
236
|
+
it('should remove default when anyOf is present', () => {
|
|
237
|
+
const schema = {
|
|
238
|
+
anyOf: [{ type: Type.STRING }, { type: Type.NUMBER }],
|
|
239
|
+
default: 'hello',
|
|
240
|
+
};
|
|
241
|
+
sanitizeParameters(schema);
|
|
242
|
+
expect(schema.default).toBeUndefined();
|
|
243
|
+
});
|
|
244
|
+
it('should recursively sanitize items in anyOf', () => {
|
|
245
|
+
const schema = {
|
|
246
|
+
anyOf: [
|
|
247
|
+
{
|
|
248
|
+
anyOf: [{ type: Type.STRING }],
|
|
249
|
+
default: 'world',
|
|
250
|
+
},
|
|
251
|
+
{ type: Type.NUMBER },
|
|
252
|
+
],
|
|
253
|
+
};
|
|
254
|
+
sanitizeParameters(schema);
|
|
255
|
+
expect(schema.anyOf[0].default).toBeUndefined();
|
|
256
|
+
});
|
|
257
|
+
it('should recursively sanitize items in items', () => {
|
|
258
|
+
const schema = {
|
|
259
|
+
items: {
|
|
260
|
+
anyOf: [{ type: Type.STRING }],
|
|
261
|
+
default: 'world',
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
sanitizeParameters(schema);
|
|
265
|
+
expect(schema.items.default).toBeUndefined();
|
|
266
|
+
});
|
|
267
|
+
it('should recursively sanitize items in properties', () => {
|
|
268
|
+
const schema = {
|
|
269
|
+
properties: {
|
|
270
|
+
prop1: {
|
|
271
|
+
anyOf: [{ type: Type.STRING }],
|
|
272
|
+
default: 'world',
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
sanitizeParameters(schema);
|
|
277
|
+
expect(schema.properties.prop1.default).toBeUndefined();
|
|
278
|
+
});
|
|
279
|
+
it('should handle complex nested schemas', () => {
|
|
280
|
+
const schema = {
|
|
281
|
+
properties: {
|
|
282
|
+
prop1: {
|
|
283
|
+
items: {
|
|
284
|
+
anyOf: [{ type: Type.STRING }],
|
|
285
|
+
default: 'world',
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
prop2: {
|
|
289
|
+
anyOf: [
|
|
290
|
+
{
|
|
291
|
+
properties: {
|
|
292
|
+
nestedProp: {
|
|
293
|
+
anyOf: [{ type: Type.NUMBER }],
|
|
294
|
+
default: 123,
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
sanitizeParameters(schema);
|
|
303
|
+
expect(schema.properties.prop1.items.default).toBeUndefined();
|
|
304
|
+
const nestedProp = schema.properties.prop2.anyOf[0].properties.nestedProp;
|
|
305
|
+
expect(nestedProp?.default).toBeUndefined();
|
|
306
|
+
});
|
|
307
|
+
it('should remove unsupported format from a simple string property', () => {
|
|
308
|
+
const schema = {
|
|
309
|
+
type: Type.OBJECT,
|
|
310
|
+
properties: {
|
|
311
|
+
name: { type: Type.STRING },
|
|
312
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
sanitizeParameters(schema);
|
|
316
|
+
expect(schema.properties?.['id']).toHaveProperty('format', undefined);
|
|
317
|
+
expect(schema.properties?.['name']).not.toHaveProperty('format');
|
|
318
|
+
});
|
|
319
|
+
it('should NOT remove supported format values', () => {
|
|
320
|
+
const schema = {
|
|
321
|
+
type: Type.OBJECT,
|
|
322
|
+
properties: {
|
|
323
|
+
date: { type: Type.STRING, format: 'date-time' },
|
|
324
|
+
role: {
|
|
325
|
+
type: Type.STRING,
|
|
326
|
+
format: 'enum',
|
|
327
|
+
enum: ['admin', 'user'],
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
const originalSchema = JSON.parse(JSON.stringify(schema));
|
|
332
|
+
sanitizeParameters(schema);
|
|
333
|
+
expect(schema).toEqual(originalSchema);
|
|
334
|
+
});
|
|
335
|
+
it('should handle arrays of objects', () => {
|
|
336
|
+
const schema = {
|
|
337
|
+
type: Type.OBJECT,
|
|
338
|
+
properties: {
|
|
339
|
+
items: {
|
|
340
|
+
type: Type.ARRAY,
|
|
341
|
+
items: {
|
|
342
|
+
type: Type.OBJECT,
|
|
343
|
+
properties: {
|
|
344
|
+
itemId: { type: Type.STRING, format: 'uuid' },
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
sanitizeParameters(schema);
|
|
351
|
+
expect(schema.properties?.['items']?.items?.properties?.['itemId']).toHaveProperty('format', undefined);
|
|
352
|
+
});
|
|
353
|
+
it('should handle schemas with no properties to sanitize', () => {
|
|
354
|
+
const schema = {
|
|
355
|
+
type: Type.OBJECT,
|
|
356
|
+
properties: {
|
|
357
|
+
count: { type: Type.NUMBER },
|
|
358
|
+
isActive: { type: Type.BOOLEAN },
|
|
359
|
+
},
|
|
360
|
+
};
|
|
361
|
+
const originalSchema = JSON.parse(JSON.stringify(schema));
|
|
362
|
+
sanitizeParameters(schema);
|
|
363
|
+
expect(schema).toEqual(originalSchema);
|
|
364
|
+
});
|
|
365
|
+
it('should not crash on an empty or undefined schema', () => {
|
|
366
|
+
expect(() => sanitizeParameters({})).not.toThrow();
|
|
367
|
+
expect(() => sanitizeParameters(undefined)).not.toThrow();
|
|
368
|
+
});
|
|
369
|
+
it('should handle complex nested schemas with cycles', () => {
|
|
370
|
+
const userNode = {
|
|
371
|
+
type: Type.OBJECT,
|
|
372
|
+
properties: {
|
|
373
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
374
|
+
name: { type: Type.STRING },
|
|
375
|
+
manager: {
|
|
376
|
+
type: Type.OBJECT,
|
|
377
|
+
properties: {
|
|
378
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
};
|
|
383
|
+
userNode.properties.reports = {
|
|
384
|
+
type: Type.ARRAY,
|
|
385
|
+
items: userNode,
|
|
386
|
+
};
|
|
387
|
+
const schema = {
|
|
388
|
+
type: Type.OBJECT,
|
|
389
|
+
properties: {
|
|
390
|
+
ceo: userNode,
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
expect(() => sanitizeParameters(schema)).not.toThrow();
|
|
394
|
+
expect(schema.properties?.['ceo']?.properties?.['id']).toHaveProperty('format', undefined);
|
|
395
|
+
expect(schema.properties?.['ceo']?.properties?.['manager']?.properties?.['id']).toHaveProperty('format', undefined);
|
|
396
|
+
});
|
|
397
|
+
});
|
|
398
|
+
//# sourceMappingURL=tool-registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.test.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FunctionDeclaration, PartListUnion, Schema } from '@google/genai';
|
|
7
|
+
/**
|
|
8
|
+
* Interface representing the base Tool functionality
|
|
9
|
+
*/
|
|
10
|
+
export interface Tool<TParams = unknown, TResult extends ToolResult = ToolResult> {
|
|
11
|
+
/**
|
|
12
|
+
* The internal name of the tool (used for API calls)
|
|
13
|
+
*/
|
|
14
|
+
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* The user-friendly display name of the tool
|
|
17
|
+
*/
|
|
18
|
+
displayName: string;
|
|
19
|
+
/**
|
|
20
|
+
* Description of what the tool does
|
|
21
|
+
*/
|
|
22
|
+
description: string;
|
|
23
|
+
/**
|
|
24
|
+
* Function declaration schema from @google/genai
|
|
25
|
+
*/
|
|
26
|
+
schema: FunctionDeclaration;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the tool's output should be rendered as markdown
|
|
29
|
+
*/
|
|
30
|
+
isOutputMarkdown: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether the tool supports live (streaming) output
|
|
33
|
+
*/
|
|
34
|
+
canUpdateOutput: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Validates the parameters for the tool
|
|
37
|
+
* Should be called from both `shouldConfirmExecute` and `execute`
|
|
38
|
+
* `shouldConfirmExecute` should return false immediately if invalid
|
|
39
|
+
* @param params Parameters to validate
|
|
40
|
+
* @returns An error message string if invalid, null otherwise
|
|
41
|
+
*/
|
|
42
|
+
validateToolParams(params: TParams): string | null;
|
|
43
|
+
/**
|
|
44
|
+
* Gets a pre-execution description of the tool operation
|
|
45
|
+
* @param params Parameters for the tool execution
|
|
46
|
+
* @returns A markdown string describing what the tool will do
|
|
47
|
+
* Optional for backward compatibility
|
|
48
|
+
*/
|
|
49
|
+
getDescription(params: TParams): string;
|
|
50
|
+
/**
|
|
51
|
+
* Determines if the tool should prompt for confirmation before execution
|
|
52
|
+
* @param params Parameters for the tool execution
|
|
53
|
+
* @returns Whether execute should be confirmed.
|
|
54
|
+
*/
|
|
55
|
+
shouldConfirmExecute(params: TParams, abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
56
|
+
/**
|
|
57
|
+
* Executes the tool with the given parameters
|
|
58
|
+
* @param params Parameters for the tool execution
|
|
59
|
+
* @returns Result of the tool execution
|
|
60
|
+
*/
|
|
61
|
+
execute(params: TParams, signal: AbortSignal, updateOutput?: (output: string) => void): Promise<TResult>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Base implementation for tools with common functionality
|
|
65
|
+
*/
|
|
66
|
+
export declare abstract class BaseTool<TParams = unknown, TResult extends ToolResult = ToolResult> implements Tool<TParams, TResult> {
|
|
67
|
+
readonly name: string;
|
|
68
|
+
readonly displayName: string;
|
|
69
|
+
readonly description: string;
|
|
70
|
+
readonly parameterSchema: Schema;
|
|
71
|
+
readonly isOutputMarkdown: boolean;
|
|
72
|
+
readonly canUpdateOutput: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a new instance of BaseTool
|
|
75
|
+
* @param name Internal name of the tool (used for API calls)
|
|
76
|
+
* @param displayName User-friendly display name of the tool
|
|
77
|
+
* @param description Description of what the tool does
|
|
78
|
+
* @param isOutputMarkdown Whether the tool's output should be rendered as markdown
|
|
79
|
+
* @param canUpdateOutput Whether the tool supports live (streaming) output
|
|
80
|
+
* @param parameterSchema JSON Schema defining the parameters
|
|
81
|
+
*/
|
|
82
|
+
constructor(name: string, displayName: string, description: string, parameterSchema: Schema, isOutputMarkdown?: boolean, canUpdateOutput?: boolean);
|
|
83
|
+
/**
|
|
84
|
+
* Function declaration schema computed from name, description, and parameterSchema
|
|
85
|
+
*/
|
|
86
|
+
get schema(): FunctionDeclaration;
|
|
87
|
+
/**
|
|
88
|
+
* Validates the parameters for the tool
|
|
89
|
+
* This is a placeholder implementation and should be overridden
|
|
90
|
+
* Should be called from both `shouldConfirmExecute` and `execute`
|
|
91
|
+
* `shouldConfirmExecute` should return false immediately if invalid
|
|
92
|
+
* @param params Parameters to validate
|
|
93
|
+
* @returns An error message string if invalid, null otherwise
|
|
94
|
+
*/
|
|
95
|
+
validateToolParams(params: TParams): string | null;
|
|
96
|
+
/**
|
|
97
|
+
* Gets a pre-execution description of the tool operation
|
|
98
|
+
* Default implementation that should be overridden by derived classes
|
|
99
|
+
* @param params Parameters for the tool execution
|
|
100
|
+
* @returns A markdown string describing what the tool will do
|
|
101
|
+
*/
|
|
102
|
+
getDescription(params: TParams): string;
|
|
103
|
+
/**
|
|
104
|
+
* Determines if the tool should prompt for confirmation before execution
|
|
105
|
+
* @param params Parameters for the tool execution
|
|
106
|
+
* @returns Whether or not execute should be confirmed by the user.
|
|
107
|
+
*/
|
|
108
|
+
shouldConfirmExecute(params: TParams, abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
|
|
109
|
+
/**
|
|
110
|
+
* Abstract method to execute the tool with the given parameters
|
|
111
|
+
* Must be implemented by derived classes
|
|
112
|
+
* @param params Parameters for the tool execution
|
|
113
|
+
* @param signal AbortSignal for tool cancellation
|
|
114
|
+
* @returns Result of the tool execution
|
|
115
|
+
*/
|
|
116
|
+
abstract execute(params: TParams, signal: AbortSignal, updateOutput?: (output: string) => void): Promise<TResult>;
|
|
117
|
+
}
|
|
118
|
+
export interface ToolResult {
|
|
119
|
+
/**
|
|
120
|
+
* A short, one-line summary of the tool's action and result.
|
|
121
|
+
* e.g., "Read 5 files", "Wrote 256 bytes to foo.txt"
|
|
122
|
+
*/
|
|
123
|
+
summary?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Content meant to be included in LLM history.
|
|
126
|
+
* This should represent the factual outcome of the tool execution.
|
|
127
|
+
*/
|
|
128
|
+
llmContent: PartListUnion;
|
|
129
|
+
/**
|
|
130
|
+
* Markdown string for user display.
|
|
131
|
+
* This provides a user-friendly summary or visualization of the result.
|
|
132
|
+
* NOTE: This might also be considered UI-specific and could potentially be
|
|
133
|
+
* removed or modified in a further refactor if the server becomes purely API-driven.
|
|
134
|
+
* For now, we keep it as the core logic in ReadFileTool currently produces it.
|
|
135
|
+
*/
|
|
136
|
+
returnDisplay: ToolResultDisplay;
|
|
137
|
+
}
|
|
138
|
+
export type ToolResultDisplay = string | FileDiff;
|
|
139
|
+
export interface FileDiff {
|
|
140
|
+
fileDiff: string;
|
|
141
|
+
fileName: string;
|
|
142
|
+
}
|
|
143
|
+
export interface ToolEditConfirmationDetails {
|
|
144
|
+
type: 'edit';
|
|
145
|
+
title: string;
|
|
146
|
+
onConfirm: (outcome: ToolConfirmationOutcome, payload?: ToolConfirmationPayload) => Promise<void>;
|
|
147
|
+
fileName: string;
|
|
148
|
+
fileDiff: string;
|
|
149
|
+
isModifying?: boolean;
|
|
150
|
+
}
|
|
151
|
+
export interface ToolConfirmationPayload {
|
|
152
|
+
newContent: string;
|
|
153
|
+
}
|
|
154
|
+
export interface ToolExecuteConfirmationDetails {
|
|
155
|
+
type: 'exec';
|
|
156
|
+
title: string;
|
|
157
|
+
onConfirm: (outcome: ToolConfirmationOutcome) => Promise<void>;
|
|
158
|
+
command: string;
|
|
159
|
+
rootCommand: string;
|
|
160
|
+
}
|
|
161
|
+
export interface ToolMcpConfirmationDetails {
|
|
162
|
+
type: 'mcp';
|
|
163
|
+
title: string;
|
|
164
|
+
serverName: string;
|
|
165
|
+
toolName: string;
|
|
166
|
+
toolDisplayName: string;
|
|
167
|
+
onConfirm: (outcome: ToolConfirmationOutcome) => Promise<void>;
|
|
168
|
+
}
|
|
169
|
+
export interface ToolInfoConfirmationDetails {
|
|
170
|
+
type: 'info';
|
|
171
|
+
title: string;
|
|
172
|
+
onConfirm: (outcome: ToolConfirmationOutcome) => Promise<void>;
|
|
173
|
+
prompt: string;
|
|
174
|
+
urls?: string[];
|
|
175
|
+
}
|
|
176
|
+
export type ToolCallConfirmationDetails = ToolEditConfirmationDetails | ToolExecuteConfirmationDetails | ToolMcpConfirmationDetails | ToolInfoConfirmationDetails;
|
|
177
|
+
export declare enum ToolConfirmationOutcome {
|
|
178
|
+
ProceedOnce = "proceed_once",
|
|
179
|
+
ProceedAlways = "proceed_always",
|
|
180
|
+
ProceedAlwaysServer = "proceed_always_server",
|
|
181
|
+
ProceedAlwaysTool = "proceed_always_tool",
|
|
182
|
+
ModifyWithEditor = "modify_with_editor",
|
|
183
|
+
Cancel = "cancel"
|
|
184
|
+
}
|