@office-ai/aioncli-core 0.2.2 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +10 -3
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/src/agents/codebase-investigator.d.ts +11 -0
- package/dist/src/agents/codebase-investigator.js +73 -0
- package/dist/src/agents/codebase-investigator.js.map +1 -0
- package/dist/src/agents/executor.d.ts +88 -0
- package/dist/src/agents/executor.js +417 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/executor.test.js +419 -0
- package/dist/src/agents/executor.test.js.map +1 -0
- package/dist/src/agents/invocation.d.ts +43 -0
- package/dist/src/agents/invocation.js +100 -0
- package/dist/src/agents/invocation.js.map +1 -0
- package/dist/src/agents/invocation.test.js +206 -0
- package/dist/src/agents/invocation.test.js.map +1 -0
- package/dist/src/agents/registry.d.ts +35 -0
- package/dist/src/agents/registry.js +58 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/agents/registry.test.js +146 -0
- package/dist/src/agents/registry.test.js.map +1 -0
- package/dist/src/agents/schema-utils.d.ts +39 -0
- package/dist/src/agents/schema-utils.js +57 -0
- package/dist/src/agents/schema-utils.js.map +1 -0
- package/dist/src/agents/schema-utils.test.d.ts +6 -0
- package/dist/src/agents/schema-utils.test.js +144 -0
- package/dist/src/agents/schema-utils.test.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.d.ts +36 -0
- package/dist/src/agents/subagent-tool-wrapper.js +47 -0
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
- package/dist/src/agents/subagent-tool-wrapper.test.js +105 -0
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +116 -0
- package/dist/src/agents/types.js +17 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/agents/utils.d.ts +15 -0
- package/dist/src/agents/utils.js +29 -0
- package/dist/src/agents/utils.js.map +1 -0
- package/dist/src/agents/utils.test.d.ts +6 -0
- package/dist/src/agents/utils.test.js +87 -0
- package/dist/src/agents/utils.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +6 -3
- package/dist/src/code_assist/codeAssist.js +12 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +4 -1
- package/dist/src/code_assist/converter.js +38 -5
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +93 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
- package/dist/src/code_assist/oauth-credential-storage.js +109 -0
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
- package/dist/src/code_assist/oauth-credential-storage.test.d.ts +6 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js +136 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
- package/dist/src/code_assist/oauth2.d.ts +1 -1
- package/dist/src/code_assist/oauth2.js +107 -48
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +735 -343
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +4 -4
- package/dist/src/code_assist/server.js +25 -2
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +25 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +1 -1
- package/dist/src/code_assist/setup.js +1 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +17 -2
- package/dist/src/config/config.d.ts +121 -25
- package/dist/src/config/config.js +298 -87
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +370 -131
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/constants.d.ts +11 -0
- package/dist/src/config/constants.js +16 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/models.d.ts +16 -0
- package/dist/src/config/models.js +29 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.d.ts +6 -0
- package/dist/src/config/models.test.js +55 -0
- package/dist/src/config/models.test.js.map +1 -0
- package/dist/src/config/storage.d.ts +34 -0
- package/dist/src/config/storage.js +95 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/config/storage.test.d.ts +6 -0
- package/dist/src/config/storage.test.js +47 -0
- package/dist/src/config/storage.test.js.map +1 -0
- package/dist/src/confirmation-bus/index.d.ts +7 -0
- package/dist/src/confirmation-bus/index.js +8 -0
- package/dist/src/confirmation-bus/index.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.d.ts +17 -0
- package/dist/src/confirmation-bus/message-bus.js +81 -0
- package/dist/src/confirmation-bus/message-bus.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
- package/dist/src/confirmation-bus/message-bus.test.js +164 -0
- package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
- package/dist/src/confirmation-bus/types.d.ts +38 -0
- package/dist/src/confirmation-bus/types.js +15 -0
- package/dist/src/confirmation-bus/types.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +54 -0
- package/dist/src/core/baseLlmClient.js +190 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/baseLlmClient.test.d.ts +6 -0
- package/dist/src/core/baseLlmClient.test.js +316 -0
- package/dist/src/core/baseLlmClient.test.js.map +1 -0
- package/dist/src/core/client.d.ts +28 -28
- package/dist/src/core/client.js +187 -333
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +745 -500
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +4 -4
- package/dist/src/core/contentGenerator.js +6 -7
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -3
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +20 -7
- package/dist/src/core/coreToolScheduler.js +216 -53
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +564 -88
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +54 -43
- package/dist/src/core/geminiChat.js +298 -280
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1255 -321
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiRequest.js +1 -0
- package/dist/src/core/geminiRequest.js.map +1 -1
- package/dist/src/core/logger.d.ts +4 -2
- package/dist/src/core/logger.js +4 -3
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +17 -16
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +3 -3
- package/dist/src/core/loggingContentGenerator.js +15 -16
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
- package/dist/src/core/nonInteractiveToolExecutor.js +14 -122
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +158 -78
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.d.ts +4 -3
- package/dist/src/core/openaiContentGenerator.js +21 -14
- package/dist/src/core/openaiContentGenerator.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.test.js +1 -0
- package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
- package/dist/src/core/prompts.d.ts +5 -0
- package/dist/src/core/prompts.js +66 -44
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +130 -1
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/subagent.d.ts +24 -18
- package/dist/src/core/subagent.js +125 -90
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +59 -44
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +37 -13
- package/dist/src/core/turn.js +63 -28
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +359 -100
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/fallback/handler.d.ts +7 -0
- package/dist/src/fallback/handler.js +129 -0
- package/dist/src/fallback/handler.js.map +1 -0
- package/dist/src/fallback/handler.test.d.ts +6 -0
- package/dist/src/fallback/handler.test.js +130 -0
- package/dist/src/fallback/handler.test.js.map +1 -0
- package/dist/src/fallback/types.d.ts +14 -0
- package/dist/src/fallback/types.js +7 -0
- package/dist/src/fallback/types.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/ide/constants.d.ts +3 -0
- package/dist/src/ide/constants.js +3 -0
- package/dist/src/ide/constants.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +48 -12
- package/dist/src/ide/detect-ide.js +47 -66
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +79 -52
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +69 -23
- package/dist/src/ide/ide-client.js +372 -78
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +375 -30
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +2 -2
- package/dist/src/ide/ide-installer.js +37 -24
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +104 -26
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +35 -365
- package/dist/src/ide/ideContext.js +60 -106
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/ideContext.test.js +152 -24
- package/dist/src/ide/ideContext.test.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +7 -5
- package/dist/src/ide/process-utils.js +81 -50
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.d.ts +6 -0
- package/dist/src/ide/process-utils.test.js +158 -0
- package/dist/src/ide/process-utils.test.js.map +1 -0
- package/dist/src/ide/types.d.ts +486 -0
- package/dist/src/ide/types.js +138 -0
- package/dist/src/ide/types.js.map +1 -0
- package/dist/src/index.d.ts +20 -2
- package/dist/src/index.js +20 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.d.ts +3 -3
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +17 -13
- package/dist/src/mcp/oauth-provider.js +81 -69
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +212 -37
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +14 -32
- package/dist/src/mcp/oauth-token-storage.js +54 -25
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +256 -162
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +9 -1
- package/dist/src/mcp/oauth-utils.js +42 -27
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +41 -1
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
- package/dist/src/mcp/sa-impersonation-provider.js +130 -0
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
- package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
- package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
- package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
- package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js +235 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/index.d.ts +11 -0
- package/dist/src/mcp/token-storage/index.js +12 -0
- package/dist/src/mcp/token-storage/index.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js +254 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +38 -0
- package/dist/src/mcp/token-storage/types.js +11 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/output/json-formatter.d.ts +11 -0
- package/dist/src/output/json-formatter.js +30 -0
- package/dist/src/output/json-formatter.js.map +1 -0
- package/dist/src/output/json-formatter.test.d.ts +6 -0
- package/dist/src/output/json-formatter.test.js +266 -0
- package/dist/src/output/json-formatter.test.js.map +1 -0
- package/dist/src/output/types.d.ts +20 -0
- package/dist/src/output/types.js +11 -0
- package/dist/src/output/types.js.map +1 -0
- package/dist/src/policy/index.d.ts +7 -0
- package/dist/src/policy/index.js +8 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/policy-engine.d.ts +30 -0
- package/dist/src/policy/policy-engine.js +92 -0
- package/dist/src/policy/policy-engine.js.map +1 -0
- package/dist/src/policy/policy-engine.test.d.ts +6 -0
- package/dist/src/policy/policy-engine.test.js +515 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -0
- package/dist/src/policy/stable-stringify.d.ts +58 -0
- package/dist/src/policy/stable-stringify.js +122 -0
- package/dist/src/policy/stable-stringify.js.map +1 -0
- package/dist/src/policy/types.d.ts +47 -0
- package/dist/src/policy/types.js +12 -0
- package/dist/src/policy/types.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +2 -2
- package/dist/src/prompts/prompt-registry.d.ts +1 -1
- package/dist/src/routing/modelRouterService.d.ts +23 -0
- package/dist/src/routing/modelRouterService.js +70 -0
- package/dist/src/routing/modelRouterService.js.map +1 -0
- package/dist/src/routing/modelRouterService.test.d.ts +6 -0
- package/dist/src/routing/modelRouterService.test.js +98 -0
- package/dist/src/routing/modelRouterService.test.js.map +1 -0
- package/dist/src/routing/routingStrategy.d.ts +62 -0
- package/dist/src/routing/routingStrategy.js +7 -0
- package/dist/src/routing/routingStrategy.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/classifierStrategy.js +173 -0
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
- package/dist/src/routing/strategies/compositeStrategy.js +68 -0
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
- package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
- package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/defaultStrategy.js +20 -0
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
- package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
- package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.js +55 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
- package/dist/src/routing/strategies/overrideStrategy.js +28 -0
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/overrideStrategy.test.js +42 -0
- package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
- package/dist/src/services/chatRecordingService.d.ts +8 -14
- package/dist/src/services/chatRecordingService.js +33 -21
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +69 -25
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +10 -0
- package/dist/src/services/fileDiscoveryService.js +32 -18
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +3 -3
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/fileSystemService.d.ts +9 -0
- package/dist/src/services/fileSystemService.js +12 -1
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/fileSystemService.test.js +1 -1
- package/dist/src/services/fileSystemService.test.js.map +1 -1
- package/dist/src/services/gitService.d.ts +3 -1
- package/dist/src/services/gitService.js +30 -24
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +30 -37
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +8 -2
- package/dist/src/services/loopDetectionService.js +64 -24
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +64 -13
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +36 -2
- package/dist/src/services/shellExecutionService.js +238 -47
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +197 -58
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/activity-detector.d.ts +41 -0
- package/dist/src/telemetry/activity-detector.js +61 -0
- package/dist/src/telemetry/activity-detector.js.map +1 -0
- package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
- package/dist/src/telemetry/activity-detector.test.js +136 -0
- package/dist/src/telemetry/activity-detector.test.js.map +1 -0
- package/dist/src/telemetry/activity-types.d.ts +19 -0
- package/dist/src/telemetry/activity-types.js +21 -0
- package/dist/src/telemetry/activity-types.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +34 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +322 -15
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +321 -11
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +51 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +124 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +31 -0
- package/dist/src/telemetry/config.js +76 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/config.test.d.ts +6 -0
- package/dist/src/telemetry/config.test.js +124 -0
- package/dist/src/telemetry/config.test.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +17 -7
- package/dist/src/telemetry/constants.js +18 -7
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/file-exporters.d.ts +5 -4
- package/dist/src/telemetry/file-exporters.js +1 -1
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
- package/dist/src/telemetry/gcp-exporters.js +117 -0
- package/dist/src/telemetry/gcp-exporters.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
- package/dist/src/telemetry/gcp-exporters.test.js +318 -0
- package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
- package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
- package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +12 -2
- package/dist/src/telemetry/index.js +16 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +17 -2
- package/dist/src/telemetry/loggers.js +316 -14
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +3 -3
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +452 -48
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +323 -12
- package/dist/src/telemetry/metrics.js +464 -83
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +583 -38
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/rate-limiter.d.ts +48 -0
- package/dist/src/telemetry/rate-limiter.js +100 -0
- package/dist/src/telemetry/rate-limiter.js.map +1 -0
- package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
- package/dist/src/telemetry/rate-limiter.test.js +207 -0
- package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +20 -2
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +108 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.js +14 -0
- package/dist/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.test.js +40 -0
- package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +136 -8
- package/dist/src/telemetry/types.js +233 -11
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +3 -3
- package/dist/src/telemetry/uiTelemetry.js +7 -8
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +33 -29
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +2 -1
- package/dist/src/test-utils/config.js.map +1 -1
- package/dist/src/test-utils/index.d.ts +6 -0
- package/dist/src/test-utils/index.js +7 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/mock-tool.d.ts +66 -0
- package/dist/src/test-utils/{tools.js → mock-tool.js} +45 -29
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
- package/dist/src/tools/diffOptions.d.ts +1 -1
- package/dist/src/tools/diffOptions.js +21 -13
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.js +58 -22
- package/dist/src/tools/diffOptions.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +6 -5
- package/dist/src/tools/edit.js +58 -40
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +192 -16
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +7 -2
- package/dist/src/tools/glob.js +42 -23
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +80 -4
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -2
- package/dist/src/tools/grep.js +35 -15
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +26 -3
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -2
- package/dist/src/tools/ls.js +31 -39
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +145 -280
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +8 -6
- package/dist/src/tools/mcp-client-manager.js +13 -4
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +20 -1
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +18 -21
- package/dist/src/tools/mcp-client.js +87 -120
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +32 -152
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +6 -4
- package/dist/src/tools/mcp-tool.js +51 -13
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +166 -12
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +3 -2
- package/dist/src/tools/memoryTool.js +14 -37
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +16 -4
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
- package/dist/src/tools/message-bus-integration.test.js +183 -0
- package/dist/src/tools/message-bus-integration.test.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +2 -2
- package/dist/src/tools/modifiable-tool.js +3 -3
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +4 -4
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +3 -2
- package/dist/src/tools/read-file.js +33 -43
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +39 -7
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +3 -2
- package/dist/src/tools/read-many-files.js +52 -107
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +64 -11
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +55 -0
- package/dist/src/tools/ripGrep.js +393 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/ripGrep.test.d.ts +6 -0
- package/dist/src/tools/ripGrep.test.js +976 -0
- package/dist/src/tools/ripGrep.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +13 -2
- package/dist/src/tools/shell.js +42 -32
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +57 -75
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +91 -0
- package/dist/src/tools/smart-edit.js +702 -0
- package/dist/src/tools/smart-edit.js.map +1 -0
- package/dist/src/tools/smart-edit.test.d.ts +6 -0
- package/dist/src/tools/smart-edit.test.js +542 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +18 -1
- package/dist/src/tools/tool-error.js +27 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +10 -4
- package/dist/src/tools/tool-registry.js +20 -7
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +93 -10
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +33 -16
- package/dist/src/tools/tools.js +115 -5
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +1 -2
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +3 -2
- package/dist/src/tools/web-fetch.js +14 -10
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +55 -16
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +4 -3
- package/dist/src/tools/web-search.js +31 -8
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +69 -1
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -3
- package/dist/src/tools/write-file.js +17 -18
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +108 -24
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +25 -0
- package/dist/src/tools/write-todos.js +150 -0
- package/dist/src/tools/write-todos.js.map +1 -0
- package/dist/src/tools/write-todos.test.d.ts +6 -0
- package/dist/src/tools/write-todos.test.js +89 -0
- package/dist/src/tools/write-todos.test.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +2 -2
- package/dist/src/utils/bfsFileSearch.js +13 -7
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +3 -3
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/editCorrector.d.ts +9 -8
- package/dist/src/utils/editCorrector.js +62 -19
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +33 -82
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.js +32 -45
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +62 -76
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +2 -2
- package/dist/src/utils/errorParsing.js +2 -2
- package/dist/src/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/errorParsing.test.js +7 -7
- package/dist/src/utils/errorParsing.test.js.map +1 -1
- package/dist/src/utils/errorReporting.d.ts +1 -1
- package/dist/src/utils/errors.d.ts +25 -0
- package/dist/src/utils/errors.js +42 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fetch.js +1 -1
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +24 -12
- package/dist/src/utils/fileUtils.js +170 -79
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +347 -29
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +2 -2
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +14 -9
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/flashFallback.test.d.ts +6 -0
- package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +33 -29
- package/dist/src/utils/flashFallback.test.js.map +1 -0
- package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
- package/dist/src/utils/geminiIgnoreParser.js +61 -0
- package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
- package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
- package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
- package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
- package/dist/src/utils/generateContentResponseUtilities.js +1 -13
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.d.ts +2 -2
- package/dist/src/utils/getFolderStructure.js +3 -3
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +4 -4
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +3 -7
- package/dist/src/utils/gitIgnoreParser.js +126 -35
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +69 -38
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -2
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
- package/dist/src/utils/ignorePatterns.test.js +250 -0
- package/dist/src/utils/ignorePatterns.test.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +50 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/installationManager.test.d.ts +6 -0
- package/dist/src/utils/installationManager.test.js +83 -0
- package/dist/src/utils/installationManager.test.js.map +1 -0
- package/dist/src/utils/language-detection.d.ts +6 -0
- package/dist/src/utils/language-detection.js +101 -0
- package/dist/src/utils/language-detection.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
- package/dist/src/utils/llm-edit-fixer.js +131 -0
- package/dist/src/utils/llm-edit-fixer.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
- package/dist/src/utils/llm-edit-fixer.test.js +186 -0
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +7 -6
- package/dist/src/utils/memoryDiscovery.js +68 -33
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +88 -26
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +15 -22
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +16 -141
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/messageInspectors.d.ts +1 -1
- package/dist/src/utils/nextSpeakerChecker.d.ts +3 -3
- package/dist/src/utils/nextSpeakerChecker.js +8 -2
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +75 -64
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/partUtils.d.ts +22 -1
- package/dist/src/utils/partUtils.js +68 -0
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/partUtils.test.js +112 -1
- package/dist/src/utils/partUtils.test.js.map +1 -1
- package/dist/src/utils/pathReader.d.ts +17 -0
- package/dist/src/utils/pathReader.js +92 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/pathReader.test.d.ts +6 -0
- package/dist/src/utils/pathReader.test.js +363 -0
- package/dist/src/utils/pathReader.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +0 -17
- package/dist/src/utils/paths.js +2 -28
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/promptIdContext.d.ts +7 -0
- package/dist/src/utils/promptIdContext.js +8 -0
- package/dist/src/utils/promptIdContext.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
- package/dist/src/utils/retry.d.ts +3 -1
- package/dist/src/utils/retry.js +60 -5
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +35 -3
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +15 -1
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/schemaValidator.test.d.ts +6 -0
- package/dist/src/utils/schemaValidator.test.js +113 -0
- package/dist/src/utils/schemaValidator.test.js.map +1 -0
- package/dist/src/utils/session.js +1 -1
- package/dist/src/utils/session.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +6 -1
- package/dist/src/utils/shell-utils.js +51 -30
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +9 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +2 -2
- package/dist/src/utils/summarizer.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +2 -2
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/systemEncoding.test.js +2 -2
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +25 -0
- package/dist/src/utils/terminalSerializer.js +432 -0
- package/dist/src/utils/terminalSerializer.js.map +1 -0
- package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
- package/dist/src/utils/terminalSerializer.test.js +176 -0
- package/dist/src/utils/terminalSerializer.test.js.map +1 -0
- package/dist/src/utils/textUtils.d.ts +5 -0
- package/dist/src/utils/textUtils.js +14 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.d.ts +6 -0
- package/dist/src/utils/textUtils.test.js +59 -0
- package/dist/src/utils/textUtils.test.js.map +1 -0
- package/dist/src/utils/thoughtUtils.d.ts +21 -0
- package/dist/src/utils/thoughtUtils.js +39 -0
- package/dist/src/utils/thoughtUtils.js.map +1 -0
- package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
- package/dist/src/utils/thoughtUtils.test.js +78 -0
- package/dist/src/utils/thoughtUtils.test.js.map +1 -0
- package/dist/src/utils/tool-utils.d.ts +19 -0
- package/dist/src/utils/tool-utils.js +58 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/tool-utils.test.d.ts +6 -0
- package/dist/src/utils/tool-utils.test.js +61 -0
- package/dist/src/utils/tool-utils.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +114 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/userAccountManager.test.d.ts +6 -0
- package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +33 -30
- package/dist/src/utils/userAccountManager.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.js +13 -7
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +41 -16
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -9
- 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
- package/dist/src/test-utils/tools.d.ts +0 -44
- package/dist/src/test-utils/tools.js.map +0 -1
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- package/dist/src/utils/user_account.d.ts +0 -9
- package/dist/src/utils/user_account.js +0 -109
- package/dist/src/utils/user_account.js.map +0 -1
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.d.ts +0 -11
- package/dist/src/utils/user_id.js +0 -49
- package/dist/src/utils/user_id.js.map +0 -1
- package/dist/src/utils/user_id.test.js +0 -21
- package/dist/src/utils/user_id.test.js.map +0 -1
- /package/dist/src/{utils/flashFallback.integration.test.d.ts → agents/executor.test.d.ts} +0 -0
- /package/dist/src/{utils/user_account.test.d.ts → agents/invocation.test.d.ts} +0 -0
- /package/dist/src/{utils/user_id.test.d.ts → agents/registry.test.d.ts} +0 -0
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { MCPServerConfig } from '../config/config.js';
|
|
7
|
-
import { ToolRegistry } from './tool-registry.js';
|
|
8
|
-
import { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
6
|
+
import type { Config, MCPServerConfig } from '../config/config.js';
|
|
7
|
+
import type { ToolRegistry } from './tool-registry.js';
|
|
8
|
+
import type { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
9
9
|
import { MCPDiscoveryState } from './mcp-client.js';
|
|
10
|
-
import {
|
|
10
|
+
import type { EventEmitter } from 'node:events';
|
|
11
|
+
import type { WorkspaceContext } from '../utils/workspaceContext.js';
|
|
11
12
|
/**
|
|
12
13
|
* Manages the lifecycle of multiple MCP clients, including local child processes.
|
|
13
14
|
* This class is responsible for starting, stopping, and discovering tools from
|
|
@@ -22,13 +23,14 @@ export declare class McpClientManager {
|
|
|
22
23
|
private readonly debugMode;
|
|
23
24
|
private readonly workspaceContext;
|
|
24
25
|
private discoveryState;
|
|
25
|
-
|
|
26
|
+
private readonly eventEmitter?;
|
|
27
|
+
constructor(mcpServers: Record<string, MCPServerConfig>, mcpServerCommand: string | undefined, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext, eventEmitter?: EventEmitter);
|
|
26
28
|
/**
|
|
27
29
|
* Initiates the tool discovery process for all configured MCP servers.
|
|
28
30
|
* It connects to each server, discovers its available tools, and registers
|
|
29
31
|
* them with the `ToolRegistry`.
|
|
30
32
|
*/
|
|
31
|
-
discoverAllMcpTools(): Promise<void>;
|
|
33
|
+
discoverAllMcpTools(cliConfig: Config): Promise<void>;
|
|
32
34
|
/**
|
|
33
35
|
* Stops all running local MCP servers and closes all client connections.
|
|
34
36
|
* This is the cleanup method to be called on application exit.
|
|
@@ -19,31 +19,40 @@ export class McpClientManager {
|
|
|
19
19
|
debugMode;
|
|
20
20
|
workspaceContext;
|
|
21
21
|
discoveryState = MCPDiscoveryState.NOT_STARTED;
|
|
22
|
-
|
|
22
|
+
eventEmitter;
|
|
23
|
+
constructor(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext, eventEmitter) {
|
|
23
24
|
this.mcpServers = mcpServers;
|
|
24
25
|
this.mcpServerCommand = mcpServerCommand;
|
|
25
26
|
this.toolRegistry = toolRegistry;
|
|
26
27
|
this.promptRegistry = promptRegistry;
|
|
27
28
|
this.debugMode = debugMode;
|
|
28
29
|
this.workspaceContext = workspaceContext;
|
|
30
|
+
this.eventEmitter = eventEmitter;
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
31
33
|
* Initiates the tool discovery process for all configured MCP servers.
|
|
32
34
|
* It connects to each server, discovers its available tools, and registers
|
|
33
35
|
* them with the `ToolRegistry`.
|
|
34
36
|
*/
|
|
35
|
-
async discoverAllMcpTools() {
|
|
37
|
+
async discoverAllMcpTools(cliConfig) {
|
|
38
|
+
if (!cliConfig.isTrustedFolder()) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
36
41
|
await this.stop();
|
|
37
|
-
this.discoveryState = MCPDiscoveryState.IN_PROGRESS;
|
|
38
42
|
const servers = populateMcpServerCommand(this.mcpServers, this.mcpServerCommand);
|
|
43
|
+
this.discoveryState = MCPDiscoveryState.IN_PROGRESS;
|
|
44
|
+
this.eventEmitter?.emit('mcp-client-update', this.clients);
|
|
39
45
|
const discoveryPromises = Object.entries(servers).map(async ([name, config]) => {
|
|
40
46
|
const client = new McpClient(name, config, this.toolRegistry, this.promptRegistry, this.workspaceContext, this.debugMode);
|
|
41
47
|
this.clients.set(name, client);
|
|
48
|
+
this.eventEmitter?.emit('mcp-client-update', this.clients);
|
|
42
49
|
try {
|
|
43
50
|
await client.connect();
|
|
44
|
-
await client.discover();
|
|
51
|
+
await client.discover(cliConfig);
|
|
52
|
+
this.eventEmitter?.emit('mcp-client-update', this.clients);
|
|
45
53
|
}
|
|
46
54
|
catch (error) {
|
|
55
|
+
this.eventEmitter?.emit('mcp-client-update', this.clients);
|
|
47
56
|
// Log the error but don't let a single failed server stop the others
|
|
48
57
|
console.error(`Error during discovery for server '${name}': ${getErrorMessage(error)}`);
|
|
49
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACnB,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IACnC,UAAU,CAAkC;IAC5C,gBAAgB,CAAqB;IACrC,YAAY,CAAe;IAC3B,cAAc,CAAiB;IAC/B,SAAS,CAAU;IACnB,gBAAgB,CAAmB;IAC5C,cAAc,GAAsB,iBAAiB,CAAC,WAAW,CAAC;IACzD,YAAY,CAAgB;IAE7C,YACE,UAA2C,EAC3C,gBAAoC,EACpC,YAA0B,EAC1B,cAA8B,EAC9B,SAAkB,EAClB,gBAAkC,EAClC,YAA2B;QAE3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,wBAAwB,CACtC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,CACtB,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC;QAEpD,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CACnD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,IAAI,EACJ,MAAM,EACN,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,CACf,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE/B,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3D,qEAAqE;gBACrE,OAAO,CAAC,KAAK,CACX,sCAAsC,IAAI,MAAM,eAAe,CAC7D,KAAK,CACN,EAAE,CACJ,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAClE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -31,9 +31,28 @@ describe('McpClientManager', () => {
|
|
|
31
31
|
const manager = new McpClientManager({
|
|
32
32
|
'test-server': {},
|
|
33
33
|
}, '', {}, {}, false, {});
|
|
34
|
-
await manager.discoverAllMcpTools(
|
|
34
|
+
await manager.discoverAllMcpTools({
|
|
35
|
+
isTrustedFolder: () => true,
|
|
36
|
+
});
|
|
35
37
|
expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
|
|
36
38
|
expect(mockedMcpClient.discover).toHaveBeenCalledOnce();
|
|
37
39
|
});
|
|
40
|
+
it('should not discover tools if folder is not trusted', async () => {
|
|
41
|
+
const mockedMcpClient = {
|
|
42
|
+
connect: vi.fn(),
|
|
43
|
+
discover: vi.fn(),
|
|
44
|
+
disconnect: vi.fn(),
|
|
45
|
+
getStatus: vi.fn(),
|
|
46
|
+
};
|
|
47
|
+
vi.mocked(McpClient).mockReturnValue(mockedMcpClient);
|
|
48
|
+
const manager = new McpClientManager({
|
|
49
|
+
'test-server': {},
|
|
50
|
+
}, '', {}, {}, false, {});
|
|
51
|
+
await manager.discoverAllMcpTools({
|
|
52
|
+
isTrustedFolder: () => false,
|
|
53
|
+
});
|
|
54
|
+
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
55
|
+
expect(mockedMcpClient.discover).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
38
57
|
});
|
|
39
58
|
//# sourceMappingURL=mcp-client-manager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-manager.test.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.test.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM5C,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAChE,OAAO;QACL,GAAG,cAAc;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;QAClB,wBAAwB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,aAAa,EAAE,EAAE;SAClB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;SACnB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAClC,eAAuC,CACxC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC;YACE,aAAa,EAAE,EAAE;SAClB,EACD,EAAE,EACF,EAAkB,EAClB,EAAoB,EACpB,KAAK,EACL,EAAsB,CACvB,CAAC;QACF,MAAM,OAAO,CAAC,mBAAmB,CAAC;YAChC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;SACP,CAAC,CAAC;QACxB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACvD,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;SACnB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAClC,eAAuC,CACxC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC;YACE,aAAa,EAAE,EAAE;SAClB,EACD,EAAE,EACF,EAAkB,EAClB,EAAoB,EACpB,KAAK,EACL,EAAsB,CACvB,CAAC;QACF,MAAM,OAAO,CAAC,mBAAmB,CAAC;YAChC,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK;SACR,CAAC,CAAC;QACxB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvD,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
7
|
-
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
8
|
-
import {
|
|
9
|
-
import { MCPServerConfig } from '../config/config.js';
|
|
7
|
+
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
8
|
+
import type { GetPromptResult, Prompt } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import type { Config, MCPServerConfig } from '../config/config.js';
|
|
10
10
|
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
11
|
-
import { FunctionDeclaration } from '@google/genai';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import type { FunctionDeclaration } from '@google/genai';
|
|
12
|
+
import type { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
13
|
+
import type { WorkspaceContext } from '../utils/workspaceContext.js';
|
|
14
|
+
import type { ToolRegistry } from './tool-registry.js';
|
|
15
15
|
export declare const MCP_DEFAULT_TIMEOUT_MSEC: number;
|
|
16
16
|
export type DiscoveredMCPPrompt = Prompt & {
|
|
17
17
|
serverName: string;
|
|
@@ -64,7 +64,7 @@ export declare class McpClient {
|
|
|
64
64
|
/**
|
|
65
65
|
* Discovers tools and prompts from the MCP server.
|
|
66
66
|
*/
|
|
67
|
-
discover(): Promise<void>;
|
|
67
|
+
discover(cliConfig: Config): Promise<void>;
|
|
68
68
|
/**
|
|
69
69
|
* Disconnects from the MCP server.
|
|
70
70
|
*/
|
|
@@ -120,7 +120,7 @@ export declare function getMCPDiscoveryState(): MCPDiscoveryState;
|
|
|
120
120
|
* @param toolRegistry The central registry where discovered tools will be registered.
|
|
121
121
|
* @returns A promise that resolves when the discovery process has been attempted for all servers.
|
|
122
122
|
*/
|
|
123
|
-
export declare function discoverMcpTools(mcpServers: Record<string, MCPServerConfig>, mcpServerCommand: string | undefined, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext): Promise<void>;
|
|
123
|
+
export declare function discoverMcpTools(mcpServers: Record<string, MCPServerConfig>, mcpServerCommand: string | undefined, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext, cliConfig: Config): Promise<void>;
|
|
124
124
|
/** Visible for Testing */
|
|
125
125
|
export declare function populateMcpServerCommand(mcpServers: Record<string, MCPServerConfig>, mcpServerCommand: string | undefined): Record<string, MCPServerConfig>;
|
|
126
126
|
/**
|
|
@@ -133,17 +133,7 @@ export declare function populateMcpServerCommand(mcpServers: Record<string, MCPS
|
|
|
133
133
|
* @param toolRegistry The registry to register discovered tools with
|
|
134
134
|
* @returns Promise that resolves when discovery is complete
|
|
135
135
|
*/
|
|
136
|
-
export declare function connectAndDiscover(mcpServerName: string, mcpServerConfig: MCPServerConfig, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext): Promise<void>;
|
|
137
|
-
/**
|
|
138
|
-
* Recursively validates that a JSON schema and all its nested properties and
|
|
139
|
-
* items have a `type` defined.
|
|
140
|
-
*
|
|
141
|
-
* @param schema The JSON schema to validate.
|
|
142
|
-
* @returns `true` if the schema is valid, `false` otherwise.
|
|
143
|
-
*
|
|
144
|
-
* @visiblefortesting
|
|
145
|
-
*/
|
|
146
|
-
export declare function hasValidTypes(schema: unknown): boolean;
|
|
136
|
+
export declare function connectAndDiscover(mcpServerName: string, mcpServerConfig: MCPServerConfig, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext, cliConfig: Config): Promise<void>;
|
|
147
137
|
/**
|
|
148
138
|
* Discovers and sanitizes tools from a connected MCP client.
|
|
149
139
|
* It retrieves function declarations from the client, filters out disabled tools,
|
|
@@ -155,7 +145,7 @@ export declare function hasValidTypes(schema: unknown): boolean;
|
|
|
155
145
|
* @returns A promise that resolves to an array of discovered and enabled tools.
|
|
156
146
|
* @throws An error if no enabled tools are found or if the server provides invalid function declarations.
|
|
157
147
|
*/
|
|
158
|
-
export declare function discoverTools(mcpServerName: string, mcpServerConfig: MCPServerConfig, mcpClient: Client): Promise<DiscoveredMCPTool[]>;
|
|
148
|
+
export declare function discoverTools(mcpServerName: string, mcpServerConfig: MCPServerConfig, mcpClient: Client, cliConfig: Config): Promise<DiscoveredMCPTool[]>;
|
|
159
149
|
/**
|
|
160
150
|
* Discovers and logs prompts from a connected MCP client.
|
|
161
151
|
* It retrieves prompt declarations from the client and logs their names.
|
|
@@ -174,6 +164,13 @@ export declare function discoverPrompts(mcpServerName: string, mcpClient: Client
|
|
|
174
164
|
* @returns A promise that resolves to the result of the prompt invocation.
|
|
175
165
|
*/
|
|
176
166
|
export declare function invokeMcpPrompt(mcpServerName: string, mcpClient: Client, promptName: string, promptParams: Record<string, unknown>): Promise<GetPromptResult>;
|
|
167
|
+
/**
|
|
168
|
+
* @visiblefortesting
|
|
169
|
+
* Checks if the MCP server configuration has a network transport URL (SSE or HTTP).
|
|
170
|
+
* @param config The MCP server configuration.
|
|
171
|
+
* @returns True if a `url` or `httpUrl` is present, false otherwise.
|
|
172
|
+
*/
|
|
173
|
+
export declare function hasNetworkTransport(config: MCPServerConfig): boolean;
|
|
177
174
|
/**
|
|
178
175
|
* Creates and connects an MCP client to a server based on the provided configuration.
|
|
179
176
|
* It determines the appropriate transport (Stdio, SSE, or Streamable HTTP) and
|
|
@@ -4,21 +4,22 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
7
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
7
8
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { ListPromptsResultSchema, GetPromptResultSchema, ListRootsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
10
|
+
import { GetPromptResultSchema, ListPromptsResultSchema, ListRootsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
11
11
|
import { parse } from 'shell-quote';
|
|
12
12
|
import { AuthProviderType } from '../config/config.js';
|
|
13
13
|
import { GoogleCredentialProvider } from '../mcp/google-auth-provider.js';
|
|
14
|
+
import { ServiceAccountImpersonationProvider } from '../mcp/sa-impersonation-provider.js';
|
|
14
15
|
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
15
16
|
import { mcpToTool } from '@google/genai';
|
|
17
|
+
import { basename } from 'node:path';
|
|
18
|
+
import { pathToFileURL } from 'node:url';
|
|
16
19
|
import { MCPOAuthProvider } from '../mcp/oauth-provider.js';
|
|
17
|
-
import { OAuthUtils } from '../mcp/oauth-utils.js';
|
|
18
20
|
import { MCPOAuthTokenStorage } from '../mcp/oauth-token-storage.js';
|
|
21
|
+
import { OAuthUtils } from '../mcp/oauth-utils.js';
|
|
19
22
|
import { getErrorMessage } from '../utils/errors.js';
|
|
20
|
-
import { basename } from 'node:path';
|
|
21
|
-
import { pathToFileURL } from 'node:url';
|
|
22
23
|
export const MCP_DEFAULT_TIMEOUT_MSEC = 10 * 60 * 1000; // default to 10 minutes
|
|
23
24
|
/**
|
|
24
25
|
* Enum representing the connection status of an MCP server
|
|
@@ -116,12 +117,12 @@ export class McpClient {
|
|
|
116
117
|
/**
|
|
117
118
|
* Discovers tools and prompts from the MCP server.
|
|
118
119
|
*/
|
|
119
|
-
async discover() {
|
|
120
|
+
async discover(cliConfig) {
|
|
120
121
|
if (this.status !== MCPServerStatus.CONNECTED) {
|
|
121
122
|
throw new Error('Client is not connected.');
|
|
122
123
|
}
|
|
123
124
|
const prompts = await this.discoverPrompts();
|
|
124
|
-
const tools = await this.discoverTools();
|
|
125
|
+
const tools = await this.discoverTools(cliConfig);
|
|
125
126
|
if (prompts.length === 0 && tools.length === 0) {
|
|
126
127
|
throw new Error('No prompts or tools found on the server.');
|
|
127
128
|
}
|
|
@@ -153,8 +154,8 @@ export class McpClient {
|
|
|
153
154
|
async createTransport() {
|
|
154
155
|
return createTransport(this.serverName, this.serverConfig, this.debugMode);
|
|
155
156
|
}
|
|
156
|
-
async discoverTools() {
|
|
157
|
-
return discoverTools(this.serverName, this.serverConfig, this.client);
|
|
157
|
+
async discoverTools(cliConfig) {
|
|
158
|
+
return discoverTools(this.serverName, this.serverConfig, this.client, cliConfig);
|
|
158
159
|
}
|
|
159
160
|
async discoverPrompts() {
|
|
160
161
|
return discoverPrompts(this.serverName, this.client, this.promptRegistry);
|
|
@@ -256,16 +257,10 @@ async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthentic
|
|
|
256
257
|
if (resourceMetadataUri) {
|
|
257
258
|
oauthConfig = await OAuthUtils.discoverOAuthConfig(resourceMetadataUri);
|
|
258
259
|
}
|
|
259
|
-
else if (mcpServerConfig
|
|
260
|
-
// Fallback: try to discover OAuth config from the base URL
|
|
261
|
-
const
|
|
262
|
-
const baseUrl = `${
|
|
263
|
-
oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
|
|
264
|
-
}
|
|
265
|
-
else if (mcpServerConfig.httpUrl) {
|
|
266
|
-
// Fallback: try to discover OAuth config from the base URL for HTTP
|
|
267
|
-
const httpUrl = new URL(mcpServerConfig.httpUrl);
|
|
268
|
-
const baseUrl = `${httpUrl.protocol}//${httpUrl.host}`;
|
|
260
|
+
else if (hasNetworkTransport(mcpServerConfig)) {
|
|
261
|
+
// Fallback: try to discover OAuth config from the base URL
|
|
262
|
+
const serverUrl = new URL(mcpServerConfig.httpUrl || mcpServerConfig.url);
|
|
263
|
+
const baseUrl = `${serverUrl.protocol}//${serverUrl.host}`;
|
|
269
264
|
oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
|
|
270
265
|
}
|
|
271
266
|
if (!oauthConfig) {
|
|
@@ -284,7 +279,8 @@ async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthentic
|
|
|
284
279
|
// Pass the server URL for proper discovery
|
|
285
280
|
const serverUrl = mcpServerConfig.httpUrl || mcpServerConfig.url;
|
|
286
281
|
console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
|
|
287
|
-
|
|
282
|
+
const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
|
|
283
|
+
await authProvider.authenticate(mcpServerName, oauthAuthConfig, serverUrl);
|
|
288
284
|
console.log(`OAuth authentication successful for server '${mcpServerName}'`);
|
|
289
285
|
return true;
|
|
290
286
|
}
|
|
@@ -343,11 +339,11 @@ async function createTransportWithOAuth(mcpServerName, mcpServerConfig, accessTo
|
|
|
343
339
|
* @param toolRegistry The central registry where discovered tools will be registered.
|
|
344
340
|
* @returns A promise that resolves when the discovery process has been attempted for all servers.
|
|
345
341
|
*/
|
|
346
|
-
export async function discoverMcpTools(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext) {
|
|
342
|
+
export async function discoverMcpTools(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig) {
|
|
347
343
|
mcpDiscoveryState = MCPDiscoveryState.IN_PROGRESS;
|
|
348
344
|
try {
|
|
349
345
|
mcpServers = populateMcpServerCommand(mcpServers, mcpServerCommand);
|
|
350
|
-
const discoveryPromises = Object.entries(mcpServers).map(([mcpServerName, mcpServerConfig]) => connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext));
|
|
346
|
+
const discoveryPromises = Object.entries(mcpServers).map(([mcpServerName, mcpServerConfig]) => connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig));
|
|
351
347
|
await Promise.all(discoveryPromises);
|
|
352
348
|
}
|
|
353
349
|
finally {
|
|
@@ -380,7 +376,7 @@ export function populateMcpServerCommand(mcpServers, mcpServerCommand) {
|
|
|
380
376
|
* @param toolRegistry The registry to register discovered tools with
|
|
381
377
|
* @returns Promise that resolves when discovery is complete
|
|
382
378
|
*/
|
|
383
|
-
export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext) {
|
|
379
|
+
export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig) {
|
|
384
380
|
updateMCPServerStatus(mcpServerName, MCPServerStatus.CONNECTING);
|
|
385
381
|
let mcpClient;
|
|
386
382
|
try {
|
|
@@ -391,7 +387,7 @@ export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolReg
|
|
|
391
387
|
};
|
|
392
388
|
// Attempt to discover both prompts and tools
|
|
393
389
|
const prompts = await discoverPrompts(mcpServerName, mcpClient, promptRegistry);
|
|
394
|
-
const tools = await discoverTools(mcpServerName, mcpServerConfig, mcpClient);
|
|
390
|
+
const tools = await discoverTools(mcpServerName, mcpServerConfig, mcpClient, cliConfig);
|
|
395
391
|
// If we have neither prompts nor tools, it's a failed discovery
|
|
396
392
|
if (prompts.length === 0 && tools.length === 0) {
|
|
397
393
|
throw new Error('No prompts or tools found on the server.');
|
|
@@ -411,59 +407,6 @@ export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolReg
|
|
|
411
407
|
updateMCPServerStatus(mcpServerName, MCPServerStatus.DISCONNECTED);
|
|
412
408
|
}
|
|
413
409
|
}
|
|
414
|
-
/**
|
|
415
|
-
* Recursively validates that a JSON schema and all its nested properties and
|
|
416
|
-
* items have a `type` defined.
|
|
417
|
-
*
|
|
418
|
-
* @param schema The JSON schema to validate.
|
|
419
|
-
* @returns `true` if the schema is valid, `false` otherwise.
|
|
420
|
-
*
|
|
421
|
-
* @visiblefortesting
|
|
422
|
-
*/
|
|
423
|
-
export function hasValidTypes(schema) {
|
|
424
|
-
if (typeof schema !== 'object' || schema === null) {
|
|
425
|
-
// Not a schema object we can validate, or not a schema at all.
|
|
426
|
-
// Treat as valid as it has no properties to be invalid.
|
|
427
|
-
return true;
|
|
428
|
-
}
|
|
429
|
-
const s = schema;
|
|
430
|
-
if (!s['type']) {
|
|
431
|
-
// These keywords contain an array of schemas that should be validated.
|
|
432
|
-
//
|
|
433
|
-
// If no top level type was given, then they must each have a type.
|
|
434
|
-
let hasSubSchema = false;
|
|
435
|
-
const schemaArrayKeywords = ['anyOf', 'allOf', 'oneOf'];
|
|
436
|
-
for (const keyword of schemaArrayKeywords) {
|
|
437
|
-
const subSchemas = s[keyword];
|
|
438
|
-
if (Array.isArray(subSchemas)) {
|
|
439
|
-
hasSubSchema = true;
|
|
440
|
-
for (const subSchema of subSchemas) {
|
|
441
|
-
if (!hasValidTypes(subSchema)) {
|
|
442
|
-
return false;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
// If the node itself is missing a type and had no subschemas, then it isn't valid.
|
|
448
|
-
if (!hasSubSchema)
|
|
449
|
-
return false;
|
|
450
|
-
}
|
|
451
|
-
if (s['type'] === 'object' && s['properties']) {
|
|
452
|
-
if (typeof s['properties'] === 'object' && s['properties'] !== null) {
|
|
453
|
-
for (const prop of Object.values(s['properties'])) {
|
|
454
|
-
if (!hasValidTypes(prop)) {
|
|
455
|
-
return false;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
if (s['type'] === 'array' && s['items']) {
|
|
461
|
-
if (!hasValidTypes(s['items'])) {
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
return true;
|
|
466
|
-
}
|
|
467
410
|
/**
|
|
468
411
|
* Discovers and sanitizes tools from a connected MCP client.
|
|
469
412
|
* It retrieves function declarations from the client, filters out disabled tools,
|
|
@@ -475,9 +418,11 @@ export function hasValidTypes(schema) {
|
|
|
475
418
|
* @returns A promise that resolves to an array of discovered and enabled tools.
|
|
476
419
|
* @throws An error if no enabled tools are found or if the server provides invalid function declarations.
|
|
477
420
|
*/
|
|
478
|
-
export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient) {
|
|
421
|
+
export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient, cliConfig) {
|
|
479
422
|
try {
|
|
480
|
-
const mcpCallableTool = mcpToTool(mcpClient
|
|
423
|
+
const mcpCallableTool = mcpToTool(mcpClient, {
|
|
424
|
+
timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
|
|
425
|
+
});
|
|
481
426
|
const tool = await mcpCallableTool.tool();
|
|
482
427
|
if (!Array.isArray(tool.functionDeclarations)) {
|
|
483
428
|
// This is a valid case for a prompt-only server
|
|
@@ -489,13 +434,7 @@ export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient) {
|
|
|
489
434
|
if (!isEnabled(funcDecl, mcpServerName, mcpServerConfig)) {
|
|
490
435
|
continue;
|
|
491
436
|
}
|
|
492
|
-
|
|
493
|
-
console.warn(`Skipping tool '${funcDecl.name}' from MCP server '${mcpServerName}' ` +
|
|
494
|
-
`because it has missing types in its parameter schema. Please file an ` +
|
|
495
|
-
`issue with the owner of the MCP server.`);
|
|
496
|
-
continue;
|
|
497
|
-
}
|
|
498
|
-
discoveredTools.push(new DiscoveredMCPTool(mcpCallableTool, mcpServerName, funcDecl.name, funcDecl.description ?? '', funcDecl.parametersJsonSchema ?? { type: 'object', properties: {} }, mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC, mcpServerConfig.trust));
|
|
437
|
+
discoveredTools.push(new DiscoveredMCPTool(mcpCallableTool, mcpServerName, funcDecl.name, funcDecl.description ?? '', funcDecl.parametersJsonSchema ?? { type: 'object', properties: {} }, mcpServerConfig.trust, undefined, cliConfig));
|
|
499
438
|
}
|
|
500
439
|
catch (error) {
|
|
501
440
|
console.error(`Error discovering tool: '${funcDecl.name}' from MCP server '${mcpServerName}': ${error.message}`);
|
|
@@ -571,6 +510,15 @@ export async function invokeMcpPrompt(mcpServerName, mcpClient, promptName, prom
|
|
|
571
510
|
throw error;
|
|
572
511
|
}
|
|
573
512
|
}
|
|
513
|
+
/**
|
|
514
|
+
* @visiblefortesting
|
|
515
|
+
* Checks if the MCP server configuration has a network transport URL (SSE or HTTP).
|
|
516
|
+
* @param config The MCP server configuration.
|
|
517
|
+
* @returns True if a `url` or `httpUrl` is present, false otherwise.
|
|
518
|
+
*/
|
|
519
|
+
export function hasNetworkTransport(config) {
|
|
520
|
+
return !!(config.url || config.httpUrl);
|
|
521
|
+
}
|
|
574
522
|
/**
|
|
575
523
|
* Creates and connects an MCP client to a server based on the provided configuration.
|
|
576
524
|
* It determines the appropriate transport (Stdio, SSE, or Streamable HTTP) and
|
|
@@ -627,17 +575,6 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
627
575
|
unlistenDirectories?.();
|
|
628
576
|
unlistenDirectories = undefined;
|
|
629
577
|
};
|
|
630
|
-
// patch Client.callTool to use request timeout as genai McpCallTool.callTool does not do it
|
|
631
|
-
// TODO: remove this hack once GenAI SDK does callTool with request options
|
|
632
|
-
if ('callTool' in mcpClient) {
|
|
633
|
-
const origCallTool = mcpClient.callTool.bind(mcpClient);
|
|
634
|
-
mcpClient.callTool = function (params, resultSchema, options) {
|
|
635
|
-
return origCallTool(params, resultSchema, {
|
|
636
|
-
...options,
|
|
637
|
-
timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
|
|
638
|
-
});
|
|
639
|
-
};
|
|
640
|
-
}
|
|
641
578
|
try {
|
|
642
579
|
const transport = await createTransport(mcpServerName, mcpServerConfig, debugMode);
|
|
643
580
|
try {
|
|
@@ -654,17 +591,18 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
654
591
|
catch (error) {
|
|
655
592
|
// Check if this is a 401 error that might indicate OAuth is required
|
|
656
593
|
const errorString = String(error);
|
|
657
|
-
if (errorString.includes('401') &&
|
|
658
|
-
(mcpServerConfig.httpUrl || mcpServerConfig.url)) {
|
|
594
|
+
if (errorString.includes('401') && hasNetworkTransport(mcpServerConfig)) {
|
|
659
595
|
mcpServerRequiresOAuth.set(mcpServerName, true);
|
|
660
596
|
// Only trigger automatic OAuth discovery for HTTP servers or when OAuth is explicitly configured
|
|
661
597
|
// For SSE servers, we should not trigger new OAuth flows automatically
|
|
662
598
|
const shouldTriggerOAuth = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
|
|
663
599
|
if (!shouldTriggerOAuth) {
|
|
664
600
|
// For SSE servers without explicit OAuth config, if a token was found but rejected, report it accurately.
|
|
665
|
-
const
|
|
601
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
602
|
+
const credentials = await tokenStorage.getCredentials(mcpServerName);
|
|
666
603
|
if (credentials) {
|
|
667
|
-
const
|
|
604
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
605
|
+
const hasStoredTokens = await authProvider.getValidToken(mcpServerName, {
|
|
668
606
|
// Pass client ID if available
|
|
669
607
|
clientId: credentials.clientId,
|
|
670
608
|
});
|
|
@@ -683,13 +621,16 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
683
621
|
// Try to extract www-authenticate header from the error
|
|
684
622
|
let wwwAuthenticate = extractWWWAuthenticateHeader(errorString);
|
|
685
623
|
// If we didn't get the header from the error string, try to get it from the server
|
|
686
|
-
if (!wwwAuthenticate && mcpServerConfig
|
|
624
|
+
if (!wwwAuthenticate && hasNetworkTransport(mcpServerConfig)) {
|
|
687
625
|
console.log(`No www-authenticate header in error, trying to fetch it from server...`);
|
|
688
626
|
try {
|
|
689
|
-
const
|
|
627
|
+
const urlToFetch = mcpServerConfig.httpUrl || mcpServerConfig.url;
|
|
628
|
+
const response = await fetch(urlToFetch, {
|
|
690
629
|
method: 'HEAD',
|
|
691
630
|
headers: {
|
|
692
|
-
Accept:
|
|
631
|
+
Accept: mcpServerConfig.httpUrl
|
|
632
|
+
? 'application/json'
|
|
633
|
+
: 'text/event-stream',
|
|
693
634
|
},
|
|
694
635
|
signal: AbortSignal.timeout(5000),
|
|
695
636
|
});
|
|
@@ -713,9 +654,11 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
713
654
|
console.log(`Retrying connection to '${mcpServerName}' with OAuth token...`);
|
|
714
655
|
// Get the valid token - we need to create a proper OAuth config
|
|
715
656
|
// The token should already be available from the authentication process
|
|
716
|
-
const
|
|
657
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
658
|
+
const credentials = await tokenStorage.getCredentials(mcpServerName);
|
|
717
659
|
if (credentials) {
|
|
718
|
-
const
|
|
660
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
661
|
+
const accessToken = await authProvider.getValidToken(mcpServerName, {
|
|
719
662
|
// Pass client ID if available
|
|
720
663
|
clientId: credentials.clientId,
|
|
721
664
|
});
|
|
@@ -761,9 +704,11 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
761
704
|
// For SSE servers, we should not trigger new OAuth flows automatically
|
|
762
705
|
const shouldTryDiscovery = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
|
|
763
706
|
if (!shouldTryDiscovery) {
|
|
764
|
-
const
|
|
707
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
708
|
+
const credentials = await tokenStorage.getCredentials(mcpServerName);
|
|
765
709
|
if (credentials) {
|
|
766
|
-
const
|
|
710
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
711
|
+
const hasStoredTokens = await authProvider.getValidToken(mcpServerName, {
|
|
767
712
|
// Pass client ID if available
|
|
768
713
|
clientId: credentials.clientId,
|
|
769
714
|
});
|
|
@@ -779,11 +724,11 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
779
724
|
throw new Error(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
|
|
780
725
|
`Please authenticate using: /mcp auth ${mcpServerName}`);
|
|
781
726
|
}
|
|
782
|
-
// For SSE servers, try to discover OAuth configuration from the base URL
|
|
727
|
+
// For SSE/HTTP servers, try to discover OAuth configuration from the base URL
|
|
783
728
|
console.log(`🔍 Attempting OAuth discovery for '${mcpServerName}'...`);
|
|
784
|
-
if (mcpServerConfig
|
|
785
|
-
const
|
|
786
|
-
const baseUrl = `${
|
|
729
|
+
if (hasNetworkTransport(mcpServerConfig)) {
|
|
730
|
+
const serverUrl = new URL(mcpServerConfig.httpUrl || mcpServerConfig.url);
|
|
731
|
+
const baseUrl = `${serverUrl.protocol}//${serverUrl.host}`;
|
|
787
732
|
try {
|
|
788
733
|
// Try to discover OAuth configuration from the base URL
|
|
789
734
|
const oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
|
|
@@ -798,13 +743,16 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
798
743
|
};
|
|
799
744
|
// Perform OAuth authentication
|
|
800
745
|
// Pass the server URL for proper discovery
|
|
801
|
-
const
|
|
746
|
+
const authServerUrl = mcpServerConfig.httpUrl || mcpServerConfig.url;
|
|
802
747
|
console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
|
|
803
|
-
|
|
748
|
+
const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
|
|
749
|
+
await authProvider.authenticate(mcpServerName, oauthAuthConfig, authServerUrl);
|
|
804
750
|
// Retry connection with OAuth token
|
|
805
|
-
const
|
|
751
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
752
|
+
const credentials = await tokenStorage.getCredentials(mcpServerName);
|
|
806
753
|
if (credentials) {
|
|
807
|
-
const
|
|
754
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
755
|
+
const accessToken = await authProvider.getValidToken(mcpServerName, {
|
|
808
756
|
// Pass client ID if available
|
|
809
757
|
clientId: credentials.clientId,
|
|
810
758
|
});
|
|
@@ -877,6 +825,21 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
|
|
|
877
825
|
}
|
|
878
826
|
/** Visible for Testing */
|
|
879
827
|
export async function createTransport(mcpServerName, mcpServerConfig, debugMode) {
|
|
828
|
+
if (mcpServerConfig.authProviderType ===
|
|
829
|
+
AuthProviderType.SERVICE_ACCOUNT_IMPERSONATION) {
|
|
830
|
+
const provider = new ServiceAccountImpersonationProvider(mcpServerConfig);
|
|
831
|
+
const transportOptions = {
|
|
832
|
+
authProvider: provider,
|
|
833
|
+
};
|
|
834
|
+
if (mcpServerConfig.httpUrl) {
|
|
835
|
+
return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), transportOptions);
|
|
836
|
+
}
|
|
837
|
+
else if (mcpServerConfig.url) {
|
|
838
|
+
// Default to SSE if only url is provided
|
|
839
|
+
return new SSEClientTransport(new URL(mcpServerConfig.url), transportOptions);
|
|
840
|
+
}
|
|
841
|
+
throw new Error('No URL configured for ServiceAccountImpersonation MCP Server');
|
|
842
|
+
}
|
|
880
843
|
if (mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS) {
|
|
881
844
|
const provider = new GoogleCredentialProvider(mcpServerConfig);
|
|
882
845
|
const transportOptions = {
|
|
@@ -894,7 +857,9 @@ export async function createTransport(mcpServerName, mcpServerConfig, debugMode)
|
|
|
894
857
|
let accessToken = null;
|
|
895
858
|
let hasOAuthConfig = mcpServerConfig.oauth?.enabled;
|
|
896
859
|
if (hasOAuthConfig && mcpServerConfig.oauth) {
|
|
897
|
-
|
|
860
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
861
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
862
|
+
accessToken = await authProvider.getValidToken(mcpServerName, mcpServerConfig.oauth);
|
|
898
863
|
if (!accessToken) {
|
|
899
864
|
console.error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
|
|
900
865
|
`Please authenticate using the /mcp auth command.`);
|
|
@@ -904,9 +869,11 @@ export async function createTransport(mcpServerName, mcpServerConfig, debugMode)
|
|
|
904
869
|
}
|
|
905
870
|
else {
|
|
906
871
|
// Check if we have stored OAuth tokens for this server (from previous authentication)
|
|
907
|
-
const
|
|
872
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
873
|
+
const credentials = await tokenStorage.getCredentials(mcpServerName);
|
|
908
874
|
if (credentials) {
|
|
909
|
-
|
|
875
|
+
const authProvider = new MCPOAuthProvider(tokenStorage);
|
|
876
|
+
accessToken = await authProvider.getValidToken(mcpServerName, {
|
|
910
877
|
// Pass client ID if available
|
|
911
878
|
clientId: credentials.clientId,
|
|
912
879
|
});
|