@machina.ai/cell-cli-core 1.0.21-rc4 → 1.4.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/package.json +25 -11
- 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 +3 -1
- package/dist/src/code_assist/converter.js +37 -5
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +83 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +2 -1
- package/dist/src/code_assist/oauth2.js +85 -49
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +317 -15
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +5 -5
- package/dist/src/code_assist/server.js +1 -1
- package/dist/src/code_assist/server.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/config/config.d.ts +53 -15
- package/dist/src/config/config.js +127 -47
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +151 -6
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -0
- package/dist/src/config/models.js +2 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/storage.d.ts +32 -0
- package/dist/src/config/storage.js +90 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/config/storage.test.js +43 -0
- package/dist/src/config/storage.test.js.map +1 -0
- package/dist/src/core/client.d.ts +21 -11
- package/dist/src/core/client.js +83 -26
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +398 -88
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +6 -6
- package/dist/src/core/contentGenerator.js +4 -3
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +14 -5
- package/dist/src/core/coreToolScheduler.js +120 -49
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +383 -72
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +48 -15
- package/dist/src/core/geminiChat.js +327 -154
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1041 -257
- 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 +19 -18
- 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 +11 -9
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
- package/dist/src/core/nonInteractiveToolExecutor.js +15 -123
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +116 -90
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +8 -7
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +21 -21
- 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 +126 -89
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +51 -35
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +33 -8
- package/dist/src/core/turn.js +59 -14
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +349 -90
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ide/constants.d.ts +1 -1
- package/dist/src/ide/constants.js +1 -1
- package/dist/src/ide/constants.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +8 -3
- package/dist/src/ide/detect-ide.js +29 -11
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +96 -52
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +18 -9
- package/dist/src/ide/ide-client.js +151 -33
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +147 -25
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +1 -1
- package/dist/src/ide/ide-installer.js +31 -22
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +82 -22
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +12 -0
- package/dist/src/ide/ideContext.js +1 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +13 -6
- package/dist/src/ide/process-utils.js +142 -35
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.js +158 -0
- package/dist/src/ide/process-utils.test.js.map +1 -0
- package/dist/src/index.d.ts +12 -2
- package/dist/src/index.js +11 -1
- 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 +13 -13
- package/dist/src/mcp/oauth-provider.js +32 -31
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +75 -36
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +9 -31
- package/dist/src/mcp/oauth-token-storage.js +10 -13
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +30 -27
- 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 +41 -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/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/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/prompts/mcp-prompts.d.ts +2 -2
- package/dist/src/prompts/prompt-registry.d.ts +1 -1
- package/dist/src/services/chatRecordingService.d.ts +6 -13
- package/dist/src/services/chatRecordingService.js +31 -19
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +64 -25
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.js +1 -1
- 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.js +1 -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 +21 -12
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +22 -19
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +3 -2
- package/dist/src/services/loopDetectionService.js +28 -4
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +23 -1
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +8 -10
- package/dist/src/services/shellExecutionService.js +292 -135
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +277 -42
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +18 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +171 -11
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +103 -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 +31 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +75 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +9 -0
- package/dist/src/telemetry/constants.js +9 -0
- 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/index.d.ts +5 -2
- package/dist/src/telemetry/index.js +3 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +8 -2
- package/dist/src/telemetry/loggers.js +130 -2
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +105 -9
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +15 -4
- package/dist/src/telemetry/metrics.js +46 -8
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +5 -25
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +3 -3
- package/dist/src/telemetry/sdk.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 +61 -6
- package/dist/src/telemetry/types.js +105 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
- package/dist/src/telemetry/uiTelemetry.js +5 -5
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +20 -16
- 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 +41 -0
- package/dist/src/test-utils/mock-tool.js +51 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
- package/dist/src/test-utils/tools.d.ts +3 -2
- package/dist/src/test-utils/tools.js.map +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 +47 -36
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +77 -12
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +3 -2
- package/dist/src/tools/glob.js +17 -6
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +29 -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 +12 -7
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +7 -2
- 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 +30 -5
- 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 -11
- package/dist/src/tools/mcp-client.js +67 -57
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +29 -4
- 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 +21 -11
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +49 -12
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +4 -3
- package/dist/src/tools/memoryTool.js +15 -38
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +24 -12
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- 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 +12 -34
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +9 -6
- 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 +35 -58
- 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 +47 -0
- package/dist/src/tools/ripGrep.js +368 -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 +874 -0
- package/dist/src/tools/ripGrep.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +3 -2
- package/dist/src/tools/shell.js +30 -25
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +34 -25
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +73 -0
- package/dist/src/tools/smart-edit.js +607 -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 +405 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +17 -1
- package/dist/src/tools/tool-error.js +26 -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 +19 -7
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +86 -3
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +15 -9
- package/dist/src/tools/tools.js +12 -0
- 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 +14 -14
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +14 -14
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.d.ts +2 -2
- package/dist/src/utils/bfsFileSearch.js +2 -2
- 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 +2 -2
- package/dist/src/utils/editCorrector.js +1 -1
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +3 -3
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.js +2 -2
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +2 -2
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +2 -2
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +1 -1
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/errorReporting.d.ts +1 -1
- package/dist/src/utils/errors.d.ts +19 -0
- package/dist/src/utils/errors.js +32 -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 +23 -12
- package/dist/src/utils/fileUtils.js +160 -79
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +314 -21
- 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/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 +2 -2
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +13 -13
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/getPty.d.ts +19 -0
- package/dist/src/utils/getPty.js +23 -0
- package/dist/src/utils/getPty.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
- package/dist/src/utils/gitIgnoreParser.js +104 -13
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +69 -3
- 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/ide-trust.d.ts +10 -0
- package/dist/src/utils/ide-trust.js +14 -0
- package/dist/src/utils/ide-trust.js.map +1 -0
- 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 +25 -0
- package/dist/src/utils/llm-edit-fixer.js +112 -0
- package/dist/src/utils/llm-edit-fixer.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 +76 -20
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +2 -2
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +2 -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 +2 -2
- package/dist/src/utils/nextSpeakerChecker.test.js +33 -0
- 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 +1 -18
- package/dist/src/utils/paths.js +3 -29
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
- package/dist/src/utils/retry.test.js +4 -1
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +4 -0
- package/dist/src/utils/schemaValidator.js.map +1 -1
- 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 +1 -1
- package/dist/src/utils/shell-utils.js +23 -29
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +7 -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/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 +27 -13
- 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/user_account.test.d.ts → config/storage.test.d.ts} +0 -0
- /package/dist/src/{utils/user_id.test.d.ts → ide/process-utils.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, afterEach, beforeEach, } from 'vitest';
|
|
7
|
+
import { getIdeProcessInfo } from './process-utils.js';
|
|
8
|
+
import os from 'node:os';
|
|
9
|
+
const mockedExec = vi.hoisted(() => vi.fn());
|
|
10
|
+
vi.mock('node:util', () => ({
|
|
11
|
+
promisify: vi.fn().mockReturnValue(mockedExec),
|
|
12
|
+
}));
|
|
13
|
+
vi.mock('node:os', () => ({
|
|
14
|
+
default: {
|
|
15
|
+
platform: vi.fn(),
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
describe('getIdeProcessInfo', () => {
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
Object.defineProperty(process, 'pid', { value: 1000, configurable: true });
|
|
21
|
+
mockedExec.mockReset();
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
vi.restoreAllMocks();
|
|
25
|
+
});
|
|
26
|
+
describe('on Unix', () => {
|
|
27
|
+
it('should traverse up to find the shell and return grandparent process info', async () => {
|
|
28
|
+
os.platform.mockReturnValue('linux');
|
|
29
|
+
// process (1000) -> shell (800) -> IDE (700)
|
|
30
|
+
mockedExec
|
|
31
|
+
.mockResolvedValueOnce({ stdout: '800 /bin/bash' }) // pid 1000 -> ppid 800 (shell)
|
|
32
|
+
.mockResolvedValueOnce({ stdout: '700 /usr/lib/vscode/code' }) // pid 800 -> ppid 700 (IDE)
|
|
33
|
+
.mockResolvedValueOnce({ stdout: '700 /usr/lib/vscode/code' }); // get command for pid 700
|
|
34
|
+
const result = await getIdeProcessInfo();
|
|
35
|
+
expect(result).toEqual({ pid: 700, command: '/usr/lib/vscode/code' });
|
|
36
|
+
});
|
|
37
|
+
it('should return parent process info if grandparent lookup fails', async () => {
|
|
38
|
+
os.platform.mockReturnValue('linux');
|
|
39
|
+
mockedExec
|
|
40
|
+
.mockResolvedValueOnce({ stdout: '800 /bin/bash' }) // pid 1000 -> ppid 800 (shell)
|
|
41
|
+
.mockRejectedValueOnce(new Error('ps failed')) // lookup for ppid of 800 fails
|
|
42
|
+
.mockResolvedValueOnce({ stdout: '800 /bin/bash' }); // get command for pid 800
|
|
43
|
+
const result = await getIdeProcessInfo();
|
|
44
|
+
expect(result).toEqual({ pid: 800, command: '/bin/bash' });
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('on Windows', () => {
|
|
48
|
+
it('should traverse up and find the great-grandchild of the root process', async () => {
|
|
49
|
+
os.platform.mockReturnValue('win32');
|
|
50
|
+
const processInfoMap = new Map([
|
|
51
|
+
[
|
|
52
|
+
1000,
|
|
53
|
+
{
|
|
54
|
+
stdout: '{"Name":"node.exe","ParentProcessId":900,"CommandLine":"node.exe"}',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
900,
|
|
59
|
+
{
|
|
60
|
+
stdout: '{"Name":"powershell.exe","ParentProcessId":800,"CommandLine":"powershell.exe"}',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
800,
|
|
65
|
+
{
|
|
66
|
+
stdout: '{"Name":"code.exe","ParentProcessId":700,"CommandLine":"code.exe"}',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
[
|
|
70
|
+
700,
|
|
71
|
+
{
|
|
72
|
+
stdout: '{"Name":"wininit.exe","ParentProcessId":0,"CommandLine":"wininit.exe"}',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
]);
|
|
76
|
+
mockedExec.mockImplementation((command) => {
|
|
77
|
+
const pidMatch = command.match(/ProcessId=(\d+)/);
|
|
78
|
+
if (pidMatch) {
|
|
79
|
+
const pid = parseInt(pidMatch[1], 10);
|
|
80
|
+
return Promise.resolve(processInfoMap.get(pid));
|
|
81
|
+
}
|
|
82
|
+
return Promise.reject(new Error('Invalid command for mock'));
|
|
83
|
+
});
|
|
84
|
+
const result = await getIdeProcessInfo();
|
|
85
|
+
expect(result).toEqual({ pid: 900, command: 'powershell.exe' });
|
|
86
|
+
});
|
|
87
|
+
it('should handle non-existent process gracefully', async () => {
|
|
88
|
+
os.platform.mockReturnValue('win32');
|
|
89
|
+
mockedExec
|
|
90
|
+
.mockResolvedValueOnce({ stdout: '' }) // Non-existent PID returns empty due to -ErrorAction SilentlyContinue
|
|
91
|
+
.mockResolvedValueOnce({
|
|
92
|
+
stdout: '{"Name":"fallback.exe","ParentProcessId":0,"CommandLine":"fallback.exe"}',
|
|
93
|
+
}); // Fallback call
|
|
94
|
+
const result = await getIdeProcessInfo();
|
|
95
|
+
expect(result).toEqual({ pid: 1000, command: 'fallback.exe' });
|
|
96
|
+
});
|
|
97
|
+
it('should handle malformed JSON output gracefully', async () => {
|
|
98
|
+
os.platform.mockReturnValue('win32');
|
|
99
|
+
mockedExec
|
|
100
|
+
.mockResolvedValueOnce({ stdout: '{"invalid":json}' }) // Malformed JSON
|
|
101
|
+
.mockResolvedValueOnce({
|
|
102
|
+
stdout: '{"Name":"fallback.exe","ParentProcessId":0,"CommandLine":"fallback.exe"}',
|
|
103
|
+
}); // Fallback call
|
|
104
|
+
const result = await getIdeProcessInfo();
|
|
105
|
+
expect(result).toEqual({ pid: 1000, command: 'fallback.exe' });
|
|
106
|
+
});
|
|
107
|
+
it('should handle PowerShell errors without crashing the process chain', async () => {
|
|
108
|
+
os.platform.mockReturnValue('win32');
|
|
109
|
+
const processInfoMap = new Map([
|
|
110
|
+
[1000, { stdout: '' }], // First process doesn't exist (empty due to -ErrorAction)
|
|
111
|
+
[
|
|
112
|
+
1001,
|
|
113
|
+
{
|
|
114
|
+
stdout: '{"Name":"parent.exe","ParentProcessId":800,"CommandLine":"parent.exe"}',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
800,
|
|
119
|
+
{
|
|
120
|
+
stdout: '{"Name":"ide.exe","ParentProcessId":0,"CommandLine":"ide.exe"}',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
]);
|
|
124
|
+
// Mock the process.pid to test traversal with missing processes
|
|
125
|
+
Object.defineProperty(process, 'pid', {
|
|
126
|
+
value: 1001,
|
|
127
|
+
configurable: true,
|
|
128
|
+
});
|
|
129
|
+
mockedExec.mockImplementation((command) => {
|
|
130
|
+
const pidMatch = command.match(/ProcessId=(\d+)/);
|
|
131
|
+
if (pidMatch) {
|
|
132
|
+
const pid = parseInt(pidMatch[1], 10);
|
|
133
|
+
return Promise.resolve(processInfoMap.get(pid) || { stdout: '' });
|
|
134
|
+
}
|
|
135
|
+
return Promise.reject(new Error('Invalid command for mock'));
|
|
136
|
+
});
|
|
137
|
+
const result = await getIdeProcessInfo();
|
|
138
|
+
// Should return the current process command since traversal continues despite missing processes
|
|
139
|
+
expect(result).toEqual({ pid: 1001, command: 'parent.exe' });
|
|
140
|
+
// Reset process.pid
|
|
141
|
+
Object.defineProperty(process, 'pid', {
|
|
142
|
+
value: 1000,
|
|
143
|
+
configurable: true,
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
it('should handle partial JSON data with defaults', async () => {
|
|
147
|
+
os.platform.mockReturnValue('win32');
|
|
148
|
+
mockedExec
|
|
149
|
+
.mockResolvedValueOnce({ stdout: '{"Name":"partial.exe"}' }) // Missing ParentProcessId, defaults to 0
|
|
150
|
+
.mockResolvedValueOnce({
|
|
151
|
+
stdout: '{"Name":"root.exe","ParentProcessId":0,"CommandLine":"root.exe"}',
|
|
152
|
+
}); // Get grandparent info
|
|
153
|
+
const result = await getIdeProcessInfo();
|
|
154
|
+
expect(result).toEqual({ pid: 1000, command: 'root.exe' });
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=process-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.test.js","sourceRoot":"","sources":["../../../src/ide/process-utils.test.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -34,8 +34,13 @@ export * from './utils/shell-utils.js';
|
|
|
34
34
|
export * from './utils/systemEncoding.js';
|
|
35
35
|
export * from './utils/textUtils.js';
|
|
36
36
|
export * from './utils/formatters.js';
|
|
37
|
+
export * from './utils/generateContentResponseUtilities.js';
|
|
37
38
|
export * from './utils/filesearch/fileSearch.js';
|
|
38
39
|
export * from './utils/errorParsing.js';
|
|
40
|
+
export * from './utils/workspaceContext.js';
|
|
41
|
+
export * from './utils/ignorePatterns.js';
|
|
42
|
+
export * from './utils/partUtils.js';
|
|
43
|
+
export * from './utils/ide-trust.js';
|
|
39
44
|
export * from './services/fileDiscoveryService.js';
|
|
40
45
|
export * from './services/gitService.js';
|
|
41
46
|
export * from './services/chatRecordingService.js';
|
|
@@ -43,7 +48,8 @@ export * from './services/fileSystemService.js';
|
|
|
43
48
|
export * from './ide/ide-client.js';
|
|
44
49
|
export * from './ide/ideContext.js';
|
|
45
50
|
export * from './ide/ide-installer.js';
|
|
46
|
-
export { getIdeInfo, DetectedIde
|
|
51
|
+
export { getIdeInfo, DetectedIde } from './ide/detect-ide.js';
|
|
52
|
+
export { type IdeInfo } from './ide/detect-ide.js';
|
|
47
53
|
export * from './ide/constants.js';
|
|
48
54
|
export * from './services/shellExecutionService.js';
|
|
49
55
|
export * from './tools/tools.js';
|
|
@@ -53,6 +59,7 @@ export * from './prompts/mcp-prompts.js';
|
|
|
53
59
|
export * from './tools/read-file.js';
|
|
54
60
|
export * from './tools/ls.js';
|
|
55
61
|
export * from './tools/grep.js';
|
|
62
|
+
export * from './tools/ripGrep.js';
|
|
56
63
|
export * from './tools/glob.js';
|
|
57
64
|
export * from './tools/edit.js';
|
|
58
65
|
export * from './tools/write-file.js';
|
|
@@ -64,10 +71,13 @@ export * from './tools/read-many-files.js';
|
|
|
64
71
|
export * from './tools/mcp-client.js';
|
|
65
72
|
export * from './tools/mcp-tool.js';
|
|
66
73
|
export { MCPOAuthProvider } from './mcp/oauth-provider.js';
|
|
67
|
-
export {
|
|
74
|
+
export type { OAuthToken, OAuthCredentials, } from './mcp/token-storage/types.js';
|
|
75
|
+
export { MCPOAuthTokenStorage } from './mcp/oauth-token-storage.js';
|
|
68
76
|
export type { MCPOAuthConfig } from './mcp/oauth-provider.js';
|
|
69
77
|
export type { OAuthAuthorizationServerMetadata, OAuthProtectedResourceMetadata, } from './mcp/oauth-utils.js';
|
|
70
78
|
export { OAuthUtils } from './mcp/oauth-utils.js';
|
|
71
79
|
export * from './telemetry/index.js';
|
|
72
80
|
export { sessionId } from './utils/session.js';
|
|
73
81
|
export * from './utils/browser.js';
|
|
82
|
+
export { Storage } from './config/storage.js';
|
|
83
|
+
export * from './test-utils/index.js';
|
package/dist/src/index.js
CHANGED
|
@@ -37,8 +37,13 @@ export * from './utils/shell-utils.js';
|
|
|
37
37
|
export * from './utils/systemEncoding.js';
|
|
38
38
|
export * from './utils/textUtils.js';
|
|
39
39
|
export * from './utils/formatters.js';
|
|
40
|
+
export * from './utils/generateContentResponseUtilities.js';
|
|
40
41
|
export * from './utils/filesearch/fileSearch.js';
|
|
41
42
|
export * from './utils/errorParsing.js';
|
|
43
|
+
export * from './utils/workspaceContext.js';
|
|
44
|
+
export * from './utils/ignorePatterns.js';
|
|
45
|
+
export * from './utils/partUtils.js';
|
|
46
|
+
export * from './utils/ide-trust.js';
|
|
42
47
|
// Export services
|
|
43
48
|
export * from './services/fileDiscoveryService.js';
|
|
44
49
|
export * from './services/gitService.js';
|
|
@@ -49,6 +54,7 @@ export * from './ide/ide-client.js';
|
|
|
49
54
|
export * from './ide/ideContext.js';
|
|
50
55
|
export * from './ide/ide-installer.js';
|
|
51
56
|
export { getIdeInfo, DetectedIde } from './ide/detect-ide.js';
|
|
57
|
+
export {} from './ide/detect-ide.js';
|
|
52
58
|
export * from './ide/constants.js';
|
|
53
59
|
// Export Shell Execution Service
|
|
54
60
|
export * from './services/shellExecutionService.js';
|
|
@@ -62,6 +68,7 @@ export * from './prompts/mcp-prompts.js';
|
|
|
62
68
|
export * from './tools/read-file.js';
|
|
63
69
|
export * from './tools/ls.js';
|
|
64
70
|
export * from './tools/grep.js';
|
|
71
|
+
export * from './tools/ripGrep.js';
|
|
65
72
|
export * from './tools/glob.js';
|
|
66
73
|
export * from './tools/edit.js';
|
|
67
74
|
export * from './tools/write-file.js';
|
|
@@ -74,10 +81,13 @@ export * from './tools/mcp-client.js';
|
|
|
74
81
|
export * from './tools/mcp-tool.js';
|
|
75
82
|
// MCP OAuth
|
|
76
83
|
export { MCPOAuthProvider } from './mcp/oauth-provider.js';
|
|
77
|
-
export { MCPOAuthTokenStorage
|
|
84
|
+
export { MCPOAuthTokenStorage } from './mcp/oauth-token-storage.js';
|
|
78
85
|
export { OAuthUtils } from './mcp/oauth-utils.js';
|
|
79
86
|
// Export telemetry functions
|
|
80
87
|
export * from './telemetry/index.js';
|
|
81
88
|
export { sessionId } from './utils/session.js';
|
|
82
89
|
export * from './utils/browser.js';
|
|
90
|
+
export { Storage } from './config/storage.js';
|
|
91
|
+
// Export test utils
|
|
92
|
+
export * from './test-utils/index.js';
|
|
83
93
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,cAAc,oBAAoB,CAAC;AAEnC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
7
|
-
import { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
8
|
-
import { MCPServerConfig } from '../config/config.js';
|
|
6
|
+
import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
7
|
+
import type { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
8
|
+
import type { MCPServerConfig } from '../config/config.js';
|
|
9
9
|
export declare class GoogleCredentialProvider implements OAuthClientProvider {
|
|
10
10
|
private readonly config?;
|
|
11
11
|
private readonly auth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-auth-provider.test.js","sourceRoot":"","sources":["../../../src/mcp/google-auth-provider.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"google-auth-provider.test.js","sourceRoot":"","sources":["../../../src/mcp/google-auth-provider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import type { OAuthToken } from './token-storage/types.js';
|
|
7
|
+
import { MCPOAuthTokenStorage } from './oauth-token-storage.js';
|
|
7
8
|
/**
|
|
8
9
|
* OAuth configuration for an MCP server.
|
|
9
10
|
*/
|
|
@@ -66,9 +67,8 @@ export interface OAuthClientRegistrationResponse {
|
|
|
66
67
|
* Provider for handling OAuth authentication for MCP servers.
|
|
67
68
|
*/
|
|
68
69
|
export declare class MCPOAuthProvider {
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
private static readonly HTTP_OK;
|
|
70
|
+
private readonly tokenStorage;
|
|
71
|
+
constructor(tokenStorage?: MCPOAuthTokenStorage);
|
|
72
72
|
/**
|
|
73
73
|
* Register a client dynamically with the OAuth server.
|
|
74
74
|
*
|
|
@@ -76,27 +76,27 @@ export declare class MCPOAuthProvider {
|
|
|
76
76
|
* @param config OAuth configuration
|
|
77
77
|
* @returns The registered client information
|
|
78
78
|
*/
|
|
79
|
-
private
|
|
79
|
+
private registerClient;
|
|
80
80
|
/**
|
|
81
81
|
* Discover OAuth configuration from an MCP server URL.
|
|
82
82
|
*
|
|
83
83
|
* @param mcpServerUrl The MCP server URL
|
|
84
84
|
* @returns OAuth configuration if discovered, null otherwise
|
|
85
85
|
*/
|
|
86
|
-
private
|
|
86
|
+
private discoverOAuthFromMCPServer;
|
|
87
87
|
/**
|
|
88
88
|
* Generate PKCE parameters for OAuth flow.
|
|
89
89
|
*
|
|
90
90
|
* @returns PKCE parameters including code verifier, challenge, and state
|
|
91
91
|
*/
|
|
92
|
-
private
|
|
92
|
+
private generatePKCEParams;
|
|
93
93
|
/**
|
|
94
94
|
* Start a local HTTP server to handle OAuth callback.
|
|
95
95
|
*
|
|
96
96
|
* @param expectedState The state parameter to validate
|
|
97
97
|
* @returns Promise that resolves with the authorization code
|
|
98
98
|
*/
|
|
99
|
-
private
|
|
99
|
+
private startCallbackServer;
|
|
100
100
|
/**
|
|
101
101
|
* Build the authorization URL with PKCE parameters.
|
|
102
102
|
*
|
|
@@ -105,7 +105,7 @@ export declare class MCPOAuthProvider {
|
|
|
105
105
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
106
106
|
* @returns The authorization URL
|
|
107
107
|
*/
|
|
108
|
-
private
|
|
108
|
+
private buildAuthorizationUrl;
|
|
109
109
|
/**
|
|
110
110
|
* Exchange authorization code for tokens.
|
|
111
111
|
*
|
|
@@ -115,7 +115,7 @@ export declare class MCPOAuthProvider {
|
|
|
115
115
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
116
116
|
* @returns The token response
|
|
117
117
|
*/
|
|
118
|
-
private
|
|
118
|
+
private exchangeCodeForToken;
|
|
119
119
|
/**
|
|
120
120
|
* Refresh an access token using a refresh token.
|
|
121
121
|
*
|
|
@@ -125,7 +125,7 @@ export declare class MCPOAuthProvider {
|
|
|
125
125
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
126
126
|
* @returns The new token response
|
|
127
127
|
*/
|
|
128
|
-
|
|
128
|
+
refreshAccessToken(config: MCPOAuthConfig, refreshToken: string, tokenUrl: string, mcpServerUrl?: string): Promise<OAuthTokenResponse>;
|
|
129
129
|
/**
|
|
130
130
|
* Perform the full OAuth authorization code flow with PKCE.
|
|
131
131
|
*
|
|
@@ -134,7 +134,7 @@ export declare class MCPOAuthProvider {
|
|
|
134
134
|
* @param mcpServerUrl Optional MCP server URL for OAuth discovery
|
|
135
135
|
* @returns The obtained OAuth token
|
|
136
136
|
*/
|
|
137
|
-
|
|
137
|
+
authenticate(serverName: string, config: MCPOAuthConfig, mcpServerUrl?: string): Promise<OAuthToken>;
|
|
138
138
|
/**
|
|
139
139
|
* Get a valid access token for an MCP server, refreshing if necessary.
|
|
140
140
|
*
|
|
@@ -142,5 +142,5 @@ export declare class MCPOAuthProvider {
|
|
|
142
142
|
* @param config OAuth configuration
|
|
143
143
|
* @returns A valid access token or null if not authenticated
|
|
144
144
|
*/
|
|
145
|
-
|
|
145
|
+
getValidToken(serverName: string, config: MCPOAuthConfig): Promise<string | null>;
|
|
146
146
|
}
|
|
@@ -10,13 +10,17 @@ import { openBrowserSecurely } from '../utils/secure-browser-launcher.js';
|
|
|
10
10
|
import { MCPOAuthTokenStorage } from './oauth-token-storage.js';
|
|
11
11
|
import { getErrorMessage } from '../utils/errors.js';
|
|
12
12
|
import { OAuthUtils } from './oauth-utils.js';
|
|
13
|
+
const REDIRECT_PORT = 7777;
|
|
14
|
+
const REDIRECT_PATH = '/oauth/callback';
|
|
15
|
+
const HTTP_OK = 200;
|
|
13
16
|
/**
|
|
14
17
|
* Provider for handling OAuth authentication for MCP servers.
|
|
15
18
|
*/
|
|
16
19
|
export class MCPOAuthProvider {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
tokenStorage;
|
|
21
|
+
constructor(tokenStorage = new MCPOAuthTokenStorage()) {
|
|
22
|
+
this.tokenStorage = tokenStorage;
|
|
23
|
+
}
|
|
20
24
|
/**
|
|
21
25
|
* Register a client dynamically with the OAuth server.
|
|
22
26
|
*
|
|
@@ -24,9 +28,8 @@ export class MCPOAuthProvider {
|
|
|
24
28
|
* @param config OAuth configuration
|
|
25
29
|
* @returns The registered client information
|
|
26
30
|
*/
|
|
27
|
-
|
|
28
|
-
const redirectUri = config.redirectUri ||
|
|
29
|
-
`http://localhost:${this.REDIRECT_PORT}${this.REDIRECT_PATH}`;
|
|
31
|
+
async registerClient(registrationUrl, config) {
|
|
32
|
+
const redirectUri = config.redirectUri || `http://localhost:${REDIRECT_PORT}${REDIRECT_PATH}`;
|
|
30
33
|
const registrationRequest = {
|
|
31
34
|
client_name: 'Gemini CLI MCP Client',
|
|
32
35
|
redirect_uris: [redirectUri],
|
|
@@ -55,7 +58,7 @@ export class MCPOAuthProvider {
|
|
|
55
58
|
* @param mcpServerUrl The MCP server URL
|
|
56
59
|
* @returns OAuth configuration if discovered, null otherwise
|
|
57
60
|
*/
|
|
58
|
-
|
|
61
|
+
async discoverOAuthFromMCPServer(mcpServerUrl) {
|
|
59
62
|
// Use the full URL with path preserved for OAuth discovery
|
|
60
63
|
return OAuthUtils.discoverOAuthConfig(mcpServerUrl);
|
|
61
64
|
}
|
|
@@ -64,7 +67,7 @@ export class MCPOAuthProvider {
|
|
|
64
67
|
*
|
|
65
68
|
* @returns PKCE parameters including code verifier, challenge, and state
|
|
66
69
|
*/
|
|
67
|
-
|
|
70
|
+
generatePKCEParams() {
|
|
68
71
|
// Generate code verifier (43-128 characters)
|
|
69
72
|
const codeVerifier = crypto.randomBytes(32).toString('base64url');
|
|
70
73
|
// Generate code challenge using SHA256
|
|
@@ -82,12 +85,12 @@ export class MCPOAuthProvider {
|
|
|
82
85
|
* @param expectedState The state parameter to validate
|
|
83
86
|
* @returns Promise that resolves with the authorization code
|
|
84
87
|
*/
|
|
85
|
-
|
|
88
|
+
async startCallbackServer(expectedState) {
|
|
86
89
|
return new Promise((resolve, reject) => {
|
|
87
90
|
const server = http.createServer(async (req, res) => {
|
|
88
91
|
try {
|
|
89
|
-
const url = new URL(req.url, `http://localhost:${
|
|
90
|
-
if (url.pathname !==
|
|
92
|
+
const url = new URL(req.url, `http://localhost:${REDIRECT_PORT}`);
|
|
93
|
+
if (url.pathname !== REDIRECT_PATH) {
|
|
91
94
|
res.writeHead(404);
|
|
92
95
|
res.end('Not found');
|
|
93
96
|
return;
|
|
@@ -96,7 +99,7 @@ export class MCPOAuthProvider {
|
|
|
96
99
|
const state = url.searchParams.get('state');
|
|
97
100
|
const error = url.searchParams.get('error');
|
|
98
101
|
if (error) {
|
|
99
|
-
res.writeHead(
|
|
102
|
+
res.writeHead(HTTP_OK, { 'Content-Type': 'text/html' });
|
|
100
103
|
res.end(`
|
|
101
104
|
<html>
|
|
102
105
|
<body>
|
|
@@ -124,7 +127,7 @@ export class MCPOAuthProvider {
|
|
|
124
127
|
return;
|
|
125
128
|
}
|
|
126
129
|
// Send success response to browser
|
|
127
|
-
res.writeHead(
|
|
130
|
+
res.writeHead(HTTP_OK, { 'Content-Type': 'text/html' });
|
|
128
131
|
res.end(`
|
|
129
132
|
<html>
|
|
130
133
|
<body>
|
|
@@ -143,8 +146,8 @@ export class MCPOAuthProvider {
|
|
|
143
146
|
}
|
|
144
147
|
});
|
|
145
148
|
server.on('error', reject);
|
|
146
|
-
server.listen(
|
|
147
|
-
console.log(`OAuth callback server listening on port ${
|
|
149
|
+
server.listen(REDIRECT_PORT, () => {
|
|
150
|
+
console.log(`OAuth callback server listening on port ${REDIRECT_PORT}`);
|
|
148
151
|
});
|
|
149
152
|
// Timeout after 5 minutes
|
|
150
153
|
setTimeout(() => {
|
|
@@ -161,9 +164,8 @@ export class MCPOAuthProvider {
|
|
|
161
164
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
162
165
|
* @returns The authorization URL
|
|
163
166
|
*/
|
|
164
|
-
|
|
165
|
-
const redirectUri = config.redirectUri ||
|
|
166
|
-
`http://localhost:${this.REDIRECT_PORT}${this.REDIRECT_PATH}`;
|
|
167
|
+
buildAuthorizationUrl(config, pkceParams, mcpServerUrl) {
|
|
168
|
+
const redirectUri = config.redirectUri || `http://localhost:${REDIRECT_PORT}${REDIRECT_PATH}`;
|
|
167
169
|
const params = new URLSearchParams({
|
|
168
170
|
client_id: config.clientId,
|
|
169
171
|
response_type: 'code',
|
|
@@ -203,9 +205,8 @@ export class MCPOAuthProvider {
|
|
|
203
205
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
204
206
|
* @returns The token response
|
|
205
207
|
*/
|
|
206
|
-
|
|
207
|
-
const redirectUri = config.redirectUri ||
|
|
208
|
-
`http://localhost:${this.REDIRECT_PORT}${this.REDIRECT_PATH}`;
|
|
208
|
+
async exchangeCodeForToken(config, code, codeVerifier, mcpServerUrl) {
|
|
209
|
+
const redirectUri = config.redirectUri || `http://localhost:${REDIRECT_PORT}${REDIRECT_PATH}`;
|
|
209
210
|
const params = new URLSearchParams({
|
|
210
211
|
grant_type: 'authorization_code',
|
|
211
212
|
code,
|
|
@@ -300,7 +301,7 @@ export class MCPOAuthProvider {
|
|
|
300
301
|
* @param mcpServerUrl The MCP server URL to use as the resource parameter
|
|
301
302
|
* @returns The new token response
|
|
302
303
|
*/
|
|
303
|
-
|
|
304
|
+
async refreshAccessToken(config, refreshToken, tokenUrl, mcpServerUrl) {
|
|
304
305
|
const params = new URLSearchParams({
|
|
305
306
|
grant_type: 'refresh_token',
|
|
306
307
|
refresh_token: refreshToken,
|
|
@@ -394,7 +395,7 @@ export class MCPOAuthProvider {
|
|
|
394
395
|
* @param mcpServerUrl Optional MCP server URL for OAuth discovery
|
|
395
396
|
* @returns The obtained OAuth token
|
|
396
397
|
*/
|
|
397
|
-
|
|
398
|
+
async authenticate(serverName, config, mcpServerUrl) {
|
|
398
399
|
// If no authorization URL is provided, try to discover OAuth configuration
|
|
399
400
|
if (!config.authorizationUrl && mcpServerUrl) {
|
|
400
401
|
console.log('No authorization URL provided, attempting OAuth discovery...');
|
|
@@ -530,10 +531,10 @@ export class MCPOAuthProvider {
|
|
|
530
531
|
}
|
|
531
532
|
// Save token
|
|
532
533
|
try {
|
|
533
|
-
await
|
|
534
|
+
await this.tokenStorage.saveToken(serverName, token, config.clientId, config.tokenUrl, mcpServerUrl);
|
|
534
535
|
console.log('Authentication successful! Token saved.');
|
|
535
536
|
// Verify token was saved
|
|
536
|
-
const savedToken = await
|
|
537
|
+
const savedToken = await this.tokenStorage.getToken(serverName);
|
|
537
538
|
if (savedToken && savedToken.token && savedToken.token.accessToken) {
|
|
538
539
|
const tokenPreview = savedToken.token.accessToken.length > 20
|
|
539
540
|
? `${savedToken.token.accessToken.substring(0, 20)}...`
|
|
@@ -557,17 +558,17 @@ export class MCPOAuthProvider {
|
|
|
557
558
|
* @param config OAuth configuration
|
|
558
559
|
* @returns A valid access token or null if not authenticated
|
|
559
560
|
*/
|
|
560
|
-
|
|
561
|
+
async getValidToken(serverName, config) {
|
|
561
562
|
console.debug(`Getting valid token for server: ${serverName}`);
|
|
562
|
-
const credentials = await
|
|
563
|
+
const credentials = await this.tokenStorage.getToken(serverName);
|
|
563
564
|
if (!credentials) {
|
|
564
565
|
console.debug(`No credentials found for server: ${serverName}`);
|
|
565
566
|
return null;
|
|
566
567
|
}
|
|
567
568
|
const { token } = credentials;
|
|
568
|
-
console.debug(`Found token for server: ${serverName}, expired: ${
|
|
569
|
+
console.debug(`Found token for server: ${serverName}, expired: ${this.tokenStorage.isTokenExpired(token)}`);
|
|
569
570
|
// Check if token is expired
|
|
570
|
-
if (!
|
|
571
|
+
if (!this.tokenStorage.isTokenExpired(token)) {
|
|
571
572
|
console.debug(`Returning valid token for server: ${serverName}`);
|
|
572
573
|
return token.accessToken;
|
|
573
574
|
}
|
|
@@ -586,13 +587,13 @@ export class MCPOAuthProvider {
|
|
|
586
587
|
if (newTokenResponse.expires_in) {
|
|
587
588
|
newToken.expiresAt = Date.now() + newTokenResponse.expires_in * 1000;
|
|
588
589
|
}
|
|
589
|
-
await
|
|
590
|
+
await this.tokenStorage.saveToken(serverName, newToken, config.clientId, credentials.tokenUrl, credentials.mcpServerUrl);
|
|
590
591
|
return newToken.accessToken;
|
|
591
592
|
}
|
|
592
593
|
catch (error) {
|
|
593
594
|
console.error(`Failed to refresh token: ${getErrorMessage(error)}`);
|
|
594
595
|
// Remove invalid token
|
|
595
|
-
await
|
|
596
|
+
await this.tokenStorage.removeToken(serverName);
|
|
596
597
|
}
|
|
597
598
|
}
|
|
598
599
|
return null;
|