@machina.ai/cell-cli-core 1.6.1-rc2 → 1.10.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 +4 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/agents/codebase-investigator.d.ts +46 -0
- package/dist/src/agents/codebase-investigator.js +135 -0
- package/dist/src/agents/codebase-investigator.js.map +1 -0
- package/dist/src/agents/executor.d.ts +92 -0
- package/dist/src/agents/executor.js +579 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/executor.test.d.ts +6 -0
- package/dist/src/agents/executor.test.js +680 -0
- package/dist/src/agents/executor.test.js.map +1 -0
- package/dist/src/agents/invocation.d.ts +46 -0
- package/dist/src/agents/invocation.js +102 -0
- package/dist/src/agents/invocation.js.map +1 -0
- package/dist/src/agents/invocation.test.d.ts +6 -0
- package/dist/src/agents/invocation.test.js +215 -0
- package/dist/src/agents/invocation.test.js.map +1 -0
- package/dist/src/agents/registry.d.ts +36 -0
- package/dist/src/agents/registry.js +81 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/agents/registry.test.d.ts +6 -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 +38 -0
- package/dist/src/agents/subagent-tool-wrapper.js +48 -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 +112 -0
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +145 -0
- package/dist/src/agents/types.js +18 -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/oauth-credential-storage.js +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.test.js +1 -1
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +14 -13
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +4 -2
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +61 -15
- package/dist/src/config/config.js +132 -28
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +67 -3
- 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/storage.d.ts +0 -1
- package/dist/src/config/storage.js +2 -2
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +7 -6
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +4 -0
- package/dist/src/core/baseLlmClient.js +24 -23
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +76 -13
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.d.ts +6 -3
- package/dist/src/core/client.js +103 -64
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +470 -118
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +3 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +12 -12
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +260 -23
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +11 -14
- package/dist/src/core/geminiChat.js +80 -124
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +316 -239
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/logger.test.js +16 -16
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -2
- package/dist/src/core/nonInteractiveToolExecutor.js +2 -2
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +19 -19
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.d.ts +2 -1
- package/dist/src/core/prompts.js +53 -111
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +83 -29
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/subagent.js +1 -1
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +38 -12
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +15 -6
- package/dist/src/core/turn.js +14 -13
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +14 -2
- 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/detect-ide.d.ts +45 -14
- package/dist/src/ide/detect-ide.js +32 -69
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +40 -46
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +4 -4
- package/dist/src/ide/ide-client.js +33 -32
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +12 -25
- 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 +8 -10
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +33 -14
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/process-utils.js +85 -75
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.js +83 -90
- package/dist/src/ide/process-utils.test.js.map +1 -1
- package/dist/src/index.d.ts +7 -2
- package/dist/src/index.js +7 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +4 -1
- package/dist/src/mcp/oauth-provider.js +31 -25
- package/dist/src/mcp/oauth-provider.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/file-token-storage.js +2 -1
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.test.js +4 -3
- package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
- package/dist/src/policy/policy-engine.js +11 -2
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +45 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/routing/strategies/compositeStrategy.js +4 -3
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +3 -2
- package/dist/src/services/chatRecordingService.js +3 -2
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/fileSystemService.d.ts +9 -0
- package/dist/src/services/fileSystemService.js +11 -0
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +3 -0
- package/dist/src/services/shellExecutionService.js +165 -49
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +74 -5
- 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 +18 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +257 -108
- 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 +258 -33
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +118 -100
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +146 -103
- 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 +74 -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 +0 -34
- package/dist/src/telemetry/constants.js +0 -34
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +9 -3
- package/dist/src/telemetry/index.js +19 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +10 -2
- package/dist/src/telemetry/loggers.js +206 -273
- 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 +316 -13
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/memory-monitor.d.ts +149 -0
- package/dist/src/telemetry/memory-monitor.js +335 -0
- package/dist/src/telemetry/memory-monitor.js.map +1 -0
- package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
- package/dist/src/telemetry/memory-monitor.test.js +472 -0
- package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +436 -11
- package/dist/src/telemetry/metrics.js +600 -110
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +898 -16
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.js +1 -1
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +13 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
- package/dist/src/telemetry/telemetryAttributes.js +18 -0
- package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +168 -5
- package/dist/src/telemetry/types.js +696 -34
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
- package/dist/src/telemetry/uiTelemetry.js +3 -4
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +14 -14
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/mock-tool.d.ts +28 -3
- package/dist/src/test-utils/mock-tool.js +71 -1
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/tools/glob.js +4 -2
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/ls.js +1 -1
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +5 -14
- package/dist/src/tools/mcp-client.js +51 -98
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +175 -157
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +1 -1
- package/dist/src/tools/memoryTool.js +1 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +9 -8
- 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/shell.js +60 -4
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +2 -1
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +1 -1
- package/dist/src/tools/smart-edit.js +116 -12
- package/dist/src/tools/smart-edit.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js +91 -29
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +22 -0
- package/dist/src/tools/tool-error.js +28 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +9 -0
- package/dist/src/tools/tool-names.js +18 -0
- package/dist/src/tools/tool-names.js.map +1 -0
- package/dist/src/tools/tool-registry.test.js +10 -10
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +11 -3
- package/dist/src/tools/tools.js +94 -3
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +7 -0
- package/dist/src/tools/web-fetch.js +42 -10
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +127 -8
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.js +2 -1
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.js +2 -1
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +25 -0
- package/dist/src/tools/write-todos.js +151 -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 +1 -1
- package/dist/src/utils/editCorrector.js +2 -2
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.js +1 -0
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +1 -0
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/flashFallback.test.js +2 -2
- package/dist/src/utils/flashFallback.test.js.map +1 -1
- package/dist/src/utils/formatters.d.ts +1 -0
- package/dist/src/utils/formatters.js +2 -1
- package/dist/src/utils/formatters.js.map +1 -1
- package/dist/src/utils/formatters.test.d.ts +6 -0
- package/dist/src/utils/formatters.test.js +26 -0
- package/dist/src/utils/formatters.test.js.map +1 -0
- package/dist/src/utils/getFolderStructure.d.ts +1 -1
- package/dist/src/utils/getFolderStructure.js +1 -1
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +7 -6
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/installationManager.test.js +2 -1
- package/dist/src/utils/installationManager.test.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.js +14 -4
- package/dist/src/utils/llm-edit-fixer.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.test.js +81 -0
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.d.ts +2 -1
- package/dist/src/utils/memoryDiscovery.js +3 -2
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +99 -21
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +13 -20
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +14 -0
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/pathCorrector.d.ts +25 -0
- package/dist/src/utils/pathCorrector.js +33 -0
- package/dist/src/utils/pathCorrector.js.map +1 -0
- package/dist/src/utils/pathCorrector.test.d.ts +6 -0
- package/dist/src/utils/pathCorrector.test.js +83 -0
- package/dist/src/utils/pathCorrector.test.js.map +1 -0
- package/dist/src/utils/retry.d.ts +4 -1
- package/dist/src/utils/retry.js +40 -17
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +104 -31
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +11 -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/shell-utils.d.ts +1 -0
- package/dist/src/utils/shell-utils.js +6 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +5 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +1 -4
- package/dist/src/utils/terminalSerializer.js +3 -3
- package/dist/src/utils/terminalSerializer.js.map +1 -1
- 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.js +2 -2
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/dist/src/utils/tool-utils.test.js +8 -0
- package/dist/src/utils/tool-utils.test.js.map +1 -1
- package/dist/src/utils/userAccountManager.test.js +2 -1
- package/dist/src/utils/userAccountManager.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/test-utils/tools.d.ts +0 -45
- package/dist/src/test-utils/tools.js +0 -105
- package/dist/src/test-utils/tools.js.map +0 -1
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
|
|
7
7
|
// Do not edit this file manually.
|
|
8
|
-
export const GIT_COMMIT_INFO = '
|
|
9
|
-
export const CLI_VERSION = '1.
|
|
8
|
+
export const GIT_COMMIT_INFO = 'bfcb2c946';
|
|
9
|
+
export const CLI_VERSION = '1.10.0-rc1';
|
|
10
10
|
//# sourceMappingURL=git-commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC"}
|
|
@@ -3,23 +3,54 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export declare
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
export declare const IDE_DEFINITIONS: {
|
|
7
|
+
readonly devin: {
|
|
8
|
+
readonly name: "devin";
|
|
9
|
+
readonly displayName: "Devin";
|
|
10
|
+
};
|
|
11
|
+
readonly replit: {
|
|
12
|
+
readonly name: "replit";
|
|
13
|
+
readonly displayName: "Replit";
|
|
14
|
+
};
|
|
15
|
+
readonly cursor: {
|
|
16
|
+
readonly name: "cursor";
|
|
17
|
+
readonly displayName: "Cursor";
|
|
18
|
+
};
|
|
19
|
+
readonly cloudshell: {
|
|
20
|
+
readonly name: "cloudshell";
|
|
21
|
+
readonly displayName: "Cloud Shell";
|
|
22
|
+
};
|
|
23
|
+
readonly codespaces: {
|
|
24
|
+
readonly name: "codespaces";
|
|
25
|
+
readonly displayName: "GitHub Codespaces";
|
|
26
|
+
};
|
|
27
|
+
readonly firebasestudio: {
|
|
28
|
+
readonly name: "firebasestudio";
|
|
29
|
+
readonly displayName: "Firebase Studio";
|
|
30
|
+
};
|
|
31
|
+
readonly trae: {
|
|
32
|
+
readonly name: "trae";
|
|
33
|
+
readonly displayName: "Trae";
|
|
34
|
+
};
|
|
35
|
+
readonly vscode: {
|
|
36
|
+
readonly name: "vscode";
|
|
37
|
+
readonly displayName: "VS Code";
|
|
38
|
+
};
|
|
39
|
+
readonly vscodefork: {
|
|
40
|
+
readonly name: "vscodefork";
|
|
41
|
+
readonly displayName: "IDE";
|
|
42
|
+
};
|
|
43
|
+
};
|
|
17
44
|
export interface IdeInfo {
|
|
45
|
+
name: string;
|
|
18
46
|
displayName: string;
|
|
19
47
|
}
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function detectIdeFromEnv():
|
|
48
|
+
export declare function isCloudShell(): boolean;
|
|
49
|
+
export declare function detectIdeFromEnv(): IdeInfo;
|
|
22
50
|
export declare function detectIde(ideProcessInfo: {
|
|
23
51
|
pid: number;
|
|
24
52
|
command: string;
|
|
25
|
-
}
|
|
53
|
+
}, ideInfoFromFile?: {
|
|
54
|
+
name?: string;
|
|
55
|
+
displayName?: string;
|
|
56
|
+
}): IdeInfo | undefined;
|
|
@@ -3,97 +3,60 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
switch (ide) {
|
|
20
|
-
case DetectedIde.Devin:
|
|
21
|
-
return {
|
|
22
|
-
displayName: 'Devin',
|
|
23
|
-
};
|
|
24
|
-
case DetectedIde.Replit:
|
|
25
|
-
return {
|
|
26
|
-
displayName: 'Replit',
|
|
27
|
-
};
|
|
28
|
-
case DetectedIde.Cursor:
|
|
29
|
-
return {
|
|
30
|
-
displayName: 'Cursor',
|
|
31
|
-
};
|
|
32
|
-
case DetectedIde.CloudShell:
|
|
33
|
-
return {
|
|
34
|
-
displayName: 'Cloud Shell',
|
|
35
|
-
};
|
|
36
|
-
case DetectedIde.Codespaces:
|
|
37
|
-
return {
|
|
38
|
-
displayName: 'GitHub Codespaces',
|
|
39
|
-
};
|
|
40
|
-
case DetectedIde.FirebaseStudio:
|
|
41
|
-
return {
|
|
42
|
-
displayName: 'Firebase Studio',
|
|
43
|
-
};
|
|
44
|
-
case DetectedIde.Trae:
|
|
45
|
-
return {
|
|
46
|
-
displayName: 'Trae',
|
|
47
|
-
};
|
|
48
|
-
case DetectedIde.VSCode:
|
|
49
|
-
return {
|
|
50
|
-
displayName: 'VS Code',
|
|
51
|
-
};
|
|
52
|
-
case DetectedIde.VSCodeFork:
|
|
53
|
-
return {
|
|
54
|
-
displayName: 'IDE',
|
|
55
|
-
};
|
|
56
|
-
default: {
|
|
57
|
-
// This ensures that if a new IDE is added to the enum, we get a compile-time error.
|
|
58
|
-
const exhaustiveCheck = ide;
|
|
59
|
-
return exhaustiveCheck;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
6
|
+
export const IDE_DEFINITIONS = {
|
|
7
|
+
devin: { name: 'devin', displayName: 'Devin' },
|
|
8
|
+
replit: { name: 'replit', displayName: 'Replit' },
|
|
9
|
+
cursor: { name: 'cursor', displayName: 'Cursor' },
|
|
10
|
+
cloudshell: { name: 'cloudshell', displayName: 'Cloud Shell' },
|
|
11
|
+
codespaces: { name: 'codespaces', displayName: 'GitHub Codespaces' },
|
|
12
|
+
firebasestudio: { name: 'firebasestudio', displayName: 'Firebase Studio' },
|
|
13
|
+
trae: { name: 'trae', displayName: 'Trae' },
|
|
14
|
+
vscode: { name: 'vscode', displayName: 'VS Code' },
|
|
15
|
+
vscodefork: { name: 'vscodefork', displayName: 'IDE' },
|
|
16
|
+
};
|
|
17
|
+
export function isCloudShell() {
|
|
18
|
+
return !!(process.env['EDITOR_IN_CLOUD_SHELL'] || process.env['CLOUD_SHELL']);
|
|
62
19
|
}
|
|
63
20
|
export function detectIdeFromEnv() {
|
|
64
21
|
if (process.env['__COG_BASHRC_SOURCED']) {
|
|
65
|
-
return
|
|
22
|
+
return IDE_DEFINITIONS.devin;
|
|
66
23
|
}
|
|
67
24
|
if (process.env['REPLIT_USER']) {
|
|
68
|
-
return
|
|
25
|
+
return IDE_DEFINITIONS.replit;
|
|
69
26
|
}
|
|
70
27
|
if (process.env['CURSOR_TRACE_ID']) {
|
|
71
|
-
return
|
|
28
|
+
return IDE_DEFINITIONS.cursor;
|
|
72
29
|
}
|
|
73
30
|
if (process.env['CODESPACES']) {
|
|
74
|
-
return
|
|
31
|
+
return IDE_DEFINITIONS.codespaces;
|
|
75
32
|
}
|
|
76
|
-
if (
|
|
77
|
-
return
|
|
33
|
+
if (isCloudShell()) {
|
|
34
|
+
return IDE_DEFINITIONS.cloudshell;
|
|
78
35
|
}
|
|
79
36
|
if (process.env['TERM_PRODUCT'] === 'Trae') {
|
|
80
|
-
return
|
|
37
|
+
return IDE_DEFINITIONS.trae;
|
|
81
38
|
}
|
|
82
39
|
if (process.env['MONOSPACE_ENV']) {
|
|
83
|
-
return
|
|
40
|
+
return IDE_DEFINITIONS.firebasestudio;
|
|
84
41
|
}
|
|
85
|
-
return
|
|
42
|
+
return IDE_DEFINITIONS.vscode;
|
|
86
43
|
}
|
|
87
44
|
function verifyVSCode(ide, ideProcessInfo) {
|
|
88
|
-
if (ide !==
|
|
45
|
+
if (ide.name !== IDE_DEFINITIONS.vscode.name) {
|
|
89
46
|
return ide;
|
|
90
47
|
}
|
|
91
48
|
if (ideProcessInfo.command.toLowerCase().includes('code')) {
|
|
92
|
-
return
|
|
49
|
+
return IDE_DEFINITIONS.vscode;
|
|
93
50
|
}
|
|
94
|
-
return
|
|
51
|
+
return IDE_DEFINITIONS.vscodefork;
|
|
95
52
|
}
|
|
96
|
-
export function detectIde(ideProcessInfo) {
|
|
53
|
+
export function detectIde(ideProcessInfo, ideInfoFromFile) {
|
|
54
|
+
if (ideInfoFromFile?.name && ideInfoFromFile.displayName) {
|
|
55
|
+
return {
|
|
56
|
+
name: ideInfoFromFile.name,
|
|
57
|
+
displayName: ideInfoFromFile.displayName,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
97
60
|
// Only VSCode-based integrations are currently supported.
|
|
98
61
|
if (process.env['TERM_PROGRAM'] !== 'vscode') {
|
|
99
62
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-ide.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,
|
|
1
|
+
{"version":3,"file":"detect-ide.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
7
|
-
import { detectIde,
|
|
7
|
+
import { detectIde, IDE_DEFINITIONS } from './detect-ide.js';
|
|
8
8
|
describe('detectIde', () => {
|
|
9
9
|
const ideProcessInfo = { pid: 123, command: 'some/path/to/code' };
|
|
10
10
|
const ideProcessInfoNoCode = { pid: 123, command: 'some/path/to/fork' };
|
|
11
11
|
afterEach(() => {
|
|
12
12
|
vi.unstubAllEnvs();
|
|
13
|
+
// Clear Cursor-specific environment variables that might interfere with tests
|
|
14
|
+
delete process.env['CURSOR_TRACE_ID'];
|
|
13
15
|
});
|
|
14
16
|
it('should return undefined if TERM_PROGRAM is not vscode', () => {
|
|
15
17
|
vi.stubEnv('TERM_PROGRAM', '');
|
|
@@ -18,92 +20,84 @@ describe('detectIde', () => {
|
|
|
18
20
|
it('should detect Devin', () => {
|
|
19
21
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
20
22
|
vi.stubEnv('__COG_BASHRC_SOURCED', '1');
|
|
21
|
-
expect(detectIde(ideProcessInfo)).toBe(
|
|
23
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.devin);
|
|
22
24
|
});
|
|
23
25
|
it('should detect Replit', () => {
|
|
24
26
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
25
27
|
vi.stubEnv('REPLIT_USER', 'testuser');
|
|
26
|
-
expect(detectIde(ideProcessInfo)).toBe(
|
|
28
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.replit);
|
|
27
29
|
});
|
|
28
30
|
it('should detect Cursor', () => {
|
|
29
31
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
30
32
|
vi.stubEnv('CURSOR_TRACE_ID', 'some-id');
|
|
31
|
-
expect(detectIde(ideProcessInfo)).toBe(
|
|
33
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cursor);
|
|
32
34
|
});
|
|
33
35
|
it('should detect Codespaces', () => {
|
|
34
36
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
35
37
|
vi.stubEnv('CODESPACES', 'true');
|
|
36
|
-
|
|
38
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
39
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.codespaces);
|
|
37
40
|
});
|
|
38
41
|
it('should detect Cloud Shell via EDITOR_IN_CLOUD_SHELL', () => {
|
|
39
42
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
40
43
|
vi.stubEnv('EDITOR_IN_CLOUD_SHELL', 'true');
|
|
41
|
-
|
|
44
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
45
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
|
|
42
46
|
});
|
|
43
47
|
it('should detect Cloud Shell via CLOUD_SHELL', () => {
|
|
44
48
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
45
49
|
vi.stubEnv('CLOUD_SHELL', 'true');
|
|
46
|
-
|
|
50
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
51
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
|
|
47
52
|
});
|
|
48
53
|
it('should detect Trae', () => {
|
|
49
54
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
50
55
|
vi.stubEnv('TERM_PRODUCT', 'Trae');
|
|
51
|
-
|
|
56
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
57
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.trae);
|
|
52
58
|
});
|
|
53
59
|
it('should detect Firebase Studio via MONOSPACE_ENV', () => {
|
|
54
60
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
55
61
|
vi.stubEnv('MONOSPACE_ENV', 'true');
|
|
56
|
-
|
|
62
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
63
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.firebasestudio);
|
|
57
64
|
});
|
|
58
65
|
it('should detect VSCode when no other IDE is detected and command includes "code"', () => {
|
|
59
66
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
60
67
|
vi.stubEnv('MONOSPACE_ENV', '');
|
|
61
|
-
|
|
68
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
69
|
+
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.vscode);
|
|
62
70
|
});
|
|
63
71
|
it('should detect VSCodeFork when no other IDE is detected and command does not include "code"', () => {
|
|
64
72
|
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
65
73
|
vi.stubEnv('MONOSPACE_ENV', '');
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
it('should prioritize other IDEs over VSCode detection', () => {
|
|
69
|
-
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
70
|
-
vi.stubEnv('REPLIT_USER', 'testuser');
|
|
71
|
-
expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Replit);
|
|
74
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
75
|
+
expect(detectIde(ideProcessInfoNoCode)).toBe(IDE_DEFINITIONS.vscodefork);
|
|
72
76
|
});
|
|
73
77
|
});
|
|
74
|
-
describe('
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
it('should return correct info for Replit', () => {
|
|
79
|
-
expect(getIdeInfo(DetectedIde.Replit)).toEqual({ displayName: 'Replit' });
|
|
80
|
-
});
|
|
81
|
-
it('should return correct info for Cursor', () => {
|
|
82
|
-
expect(getIdeInfo(DetectedIde.Cursor)).toEqual({ displayName: 'Cursor' });
|
|
83
|
-
});
|
|
84
|
-
it('should return correct info for CloudShell', () => {
|
|
85
|
-
expect(getIdeInfo(DetectedIde.CloudShell)).toEqual({
|
|
86
|
-
displayName: 'Cloud Shell',
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
it('should return correct info for Codespaces', () => {
|
|
90
|
-
expect(getIdeInfo(DetectedIde.Codespaces)).toEqual({
|
|
91
|
-
displayName: 'GitHub Codespaces',
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
it('should return correct info for FirebaseStudio', () => {
|
|
95
|
-
expect(getIdeInfo(DetectedIde.FirebaseStudio)).toEqual({
|
|
96
|
-
displayName: 'Firebase Studio',
|
|
97
|
-
});
|
|
78
|
+
describe('detectIde with ideInfoFromFile', () => {
|
|
79
|
+
const ideProcessInfo = { pid: 123, command: 'some/path/to/code' };
|
|
80
|
+
afterEach(() => {
|
|
81
|
+
vi.unstubAllEnvs();
|
|
98
82
|
});
|
|
99
|
-
it('should
|
|
100
|
-
|
|
83
|
+
it('should use the name and displayName from the file', () => {
|
|
84
|
+
const ideInfoFromFile = {
|
|
85
|
+
name: 'custom-ide',
|
|
86
|
+
displayName: 'Custom IDE',
|
|
87
|
+
};
|
|
88
|
+
expect(detectIde(ideProcessInfo, ideInfoFromFile)).toEqual(ideInfoFromFile);
|
|
101
89
|
});
|
|
102
|
-
it('should
|
|
103
|
-
|
|
90
|
+
it('should fall back to env detection if name is missing', () => {
|
|
91
|
+
const ideInfoFromFile = { displayName: 'Custom IDE' };
|
|
92
|
+
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
93
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
94
|
+
expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(IDE_DEFINITIONS.vscode);
|
|
104
95
|
});
|
|
105
|
-
it('should
|
|
106
|
-
|
|
96
|
+
it('should fall back to env detection if displayName is missing', () => {
|
|
97
|
+
const ideInfoFromFile = { name: 'custom-ide' };
|
|
98
|
+
vi.stubEnv('TERM_PROGRAM', 'vscode');
|
|
99
|
+
vi.stubEnv('CURSOR_TRACE_ID', '');
|
|
100
|
+
expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(IDE_DEFINITIONS.vscode);
|
|
107
101
|
});
|
|
108
102
|
});
|
|
109
103
|
//# sourceMappingURL=detect-ide.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-ide.test.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"detect-ide.test.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { type
|
|
6
|
+
import { type IdeInfo } from '../ide/detect-ide.js';
|
|
7
7
|
export type DiffUpdateResult = {
|
|
8
8
|
status: 'accepted';
|
|
9
9
|
content?: string;
|
|
@@ -28,8 +28,8 @@ export declare class IdeClient {
|
|
|
28
28
|
private client;
|
|
29
29
|
private state;
|
|
30
30
|
private currentIde;
|
|
31
|
-
private currentIdeDisplayName;
|
|
32
31
|
private ideProcessInfo;
|
|
32
|
+
private connectionConfig;
|
|
33
33
|
private authToken;
|
|
34
34
|
private diffResponses;
|
|
35
35
|
private statusListeners;
|
|
@@ -90,13 +90,13 @@ export declare class IdeClient {
|
|
|
90
90
|
}): Promise<string | undefined>;
|
|
91
91
|
resolveDiffFromCli(filePath: string, outcome: 'accepted' | 'rejected'): Promise<void>;
|
|
92
92
|
disconnect(): Promise<void>;
|
|
93
|
-
getCurrentIde():
|
|
93
|
+
getCurrentIde(): IdeInfo | undefined;
|
|
94
94
|
getConnectionStatus(): IDEConnectionState;
|
|
95
95
|
getDetectedIdeDisplayName(): string | undefined;
|
|
96
96
|
isDiffingEnabled(): boolean;
|
|
97
97
|
private discoverTools;
|
|
98
98
|
private setState;
|
|
99
|
-
static validateWorkspacePath(ideWorkspacePath: string | undefined,
|
|
99
|
+
static validateWorkspacePath(ideWorkspacePath: string | undefined, cwd: string): {
|
|
100
100
|
isValid: boolean;
|
|
101
101
|
error?: string;
|
|
102
102
|
};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from 'node:fs';
|
|
7
7
|
import { isSubpath } from '../utils/paths.js';
|
|
8
|
-
import { detectIde
|
|
8
|
+
import { detectIde } from '../ide/detect-ide.js';
|
|
9
9
|
import { ideContextStore } from './ideContext.js';
|
|
10
10
|
import { IdeContextNotificationSchema, IdeDiffAcceptedNotificationSchema, IdeDiffClosedNotificationSchema, IdeDiffRejectedNotificationSchema, } from './types.js';
|
|
11
11
|
import { getIdeProcessInfo } from './process-utils.js';
|
|
@@ -51,8 +51,8 @@ export class IdeClient {
|
|
|
51
51
|
details: 'IDE integration is currently disabled. To enable it, run /ide enable.',
|
|
52
52
|
};
|
|
53
53
|
currentIde;
|
|
54
|
-
currentIdeDisplayName;
|
|
55
54
|
ideProcessInfo;
|
|
55
|
+
connectionConfig;
|
|
56
56
|
authToken;
|
|
57
57
|
diffResponses = new Map();
|
|
58
58
|
statusListeners = new Set();
|
|
@@ -70,10 +70,8 @@ export class IdeClient {
|
|
|
70
70
|
IdeClient.instancePromise = (async () => {
|
|
71
71
|
const client = new IdeClient();
|
|
72
72
|
client.ideProcessInfo = await getIdeProcessInfo();
|
|
73
|
-
client.
|
|
74
|
-
|
|
75
|
-
client.currentIdeDisplayName = getIdeInfo(client.currentIde).displayName;
|
|
76
|
-
}
|
|
73
|
+
client.connectionConfig = await client.getConnectionConfigFromFile();
|
|
74
|
+
client.currentIde = detectIde(client.ideProcessInfo, client.connectionConfig?.ideInfo);
|
|
77
75
|
return client;
|
|
78
76
|
})();
|
|
79
77
|
}
|
|
@@ -92,31 +90,31 @@ export class IdeClient {
|
|
|
92
90
|
this.trustChangeListeners.delete(listener);
|
|
93
91
|
}
|
|
94
92
|
async connect() {
|
|
95
|
-
if (!this.currentIde
|
|
93
|
+
if (!this.currentIde) {
|
|
96
94
|
this.setState(IDEConnectionStatus.Disconnected, `IDE integration is not supported in your current environment. To use this feature, run Gemini CLI in one of these supported IDEs: VS Code or VS Code forks`, false);
|
|
97
95
|
return;
|
|
98
96
|
}
|
|
99
97
|
this.setState(IDEConnectionStatus.Connecting);
|
|
100
|
-
|
|
101
|
-
if (
|
|
102
|
-
this.authToken =
|
|
98
|
+
this.connectionConfig = await this.getConnectionConfigFromFile();
|
|
99
|
+
if (this.connectionConfig?.authToken) {
|
|
100
|
+
this.authToken = this.connectionConfig.authToken;
|
|
103
101
|
}
|
|
104
|
-
const workspacePath =
|
|
102
|
+
const workspacePath = this.connectionConfig?.workspacePath ??
|
|
105
103
|
process.env['CELL_CLI_IDE_WORKSPACE_PATH'];
|
|
106
|
-
const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath,
|
|
104
|
+
const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath, process.cwd());
|
|
107
105
|
if (!isValid) {
|
|
108
106
|
this.setState(IDEConnectionStatus.Disconnected, error, true);
|
|
109
107
|
return;
|
|
110
108
|
}
|
|
111
|
-
if (
|
|
112
|
-
if (
|
|
113
|
-
const connected = await this.establishHttpConnection(
|
|
109
|
+
if (this.connectionConfig) {
|
|
110
|
+
if (this.connectionConfig.port) {
|
|
111
|
+
const connected = await this.establishHttpConnection(this.connectionConfig.port);
|
|
114
112
|
if (connected) {
|
|
115
113
|
return;
|
|
116
114
|
}
|
|
117
115
|
}
|
|
118
|
-
if (
|
|
119
|
-
const connected = await this.establishStdioConnection(
|
|
116
|
+
if (this.connectionConfig.stdio) {
|
|
117
|
+
const connected = await this.establishStdioConnection(this.connectionConfig.stdio);
|
|
120
118
|
if (connected) {
|
|
121
119
|
return;
|
|
122
120
|
}
|
|
@@ -136,7 +134,7 @@ export class IdeClient {
|
|
|
136
134
|
return;
|
|
137
135
|
}
|
|
138
136
|
}
|
|
139
|
-
this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension in ${this.
|
|
137
|
+
this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension in ${this.currentIde.displayName}. Please ensure the extension is running. To install the extension, run /ide install.`, true);
|
|
140
138
|
}
|
|
141
139
|
/**
|
|
142
140
|
* Opens a diff view in the IDE, allowing the user to review and accept or
|
|
@@ -302,7 +300,7 @@ export class IdeClient {
|
|
|
302
300
|
return this.state;
|
|
303
301
|
}
|
|
304
302
|
getDetectedIdeDisplayName() {
|
|
305
|
-
return this.
|
|
303
|
+
return this.currentIde?.displayName;
|
|
306
304
|
}
|
|
307
305
|
isDiffingEnabled() {
|
|
308
306
|
return (!!this.client &&
|
|
@@ -364,17 +362,17 @@ export class IdeClient {
|
|
|
364
362
|
ideContextStore.clear();
|
|
365
363
|
}
|
|
366
364
|
}
|
|
367
|
-
static validateWorkspacePath(ideWorkspacePath,
|
|
365
|
+
static validateWorkspacePath(ideWorkspacePath, cwd) {
|
|
368
366
|
if (ideWorkspacePath === undefined) {
|
|
369
367
|
return {
|
|
370
368
|
isValid: false,
|
|
371
|
-
error: `Failed to connect to IDE companion extension
|
|
369
|
+
error: `Failed to connect to IDE companion extension. Please ensure the extension is running. To install the extension, run /ide install.`,
|
|
372
370
|
};
|
|
373
371
|
}
|
|
374
372
|
if (ideWorkspacePath === '') {
|
|
375
373
|
return {
|
|
376
374
|
isValid: false,
|
|
377
|
-
error: `To use this feature, please open a workspace folder in
|
|
375
|
+
error: `To use this feature, please open a workspace folder in your IDE and try again.`,
|
|
378
376
|
};
|
|
379
377
|
}
|
|
380
378
|
const ideWorkspacePaths = ideWorkspacePath.split(path.delimiter);
|
|
@@ -386,7 +384,7 @@ export class IdeClient {
|
|
|
386
384
|
if (!isWithinWorkspace) {
|
|
387
385
|
return {
|
|
388
386
|
isValid: false,
|
|
389
|
-
error: `Directory mismatch. Gemini CLI is running in a different location than the open workspace in
|
|
387
|
+
error: `Directory mismatch. Gemini CLI is running in a different location than the open workspace in the IDE. Please run the CLI from one of the following directories: ${ideWorkspacePaths.join(', ')}`,
|
|
390
388
|
};
|
|
391
389
|
}
|
|
392
390
|
return { isValid: true };
|
|
@@ -399,11 +397,11 @@ export class IdeClient {
|
|
|
399
397
|
return port;
|
|
400
398
|
}
|
|
401
399
|
getStdioConfigFromEnv() {
|
|
402
|
-
const command = process.env['
|
|
400
|
+
const command = process.env['CELL_CLI_IDE_SERVER_STDIO_COMMAND'];
|
|
403
401
|
if (!command) {
|
|
404
402
|
return undefined;
|
|
405
403
|
}
|
|
406
|
-
const argsStr = process.env['
|
|
404
|
+
const argsStr = process.env['CELL_CLI_IDE_SERVER_STDIO_ARGS'];
|
|
407
405
|
let args = [];
|
|
408
406
|
if (argsStr) {
|
|
409
407
|
try {
|
|
@@ -412,11 +410,11 @@ export class IdeClient {
|
|
|
412
410
|
args = parsedArgs;
|
|
413
411
|
}
|
|
414
412
|
else {
|
|
415
|
-
logger.error('
|
|
413
|
+
logger.error('CELL_CLI_IDE_SERVER_STDIO_ARGS must be a JSON array string.');
|
|
416
414
|
}
|
|
417
415
|
}
|
|
418
416
|
catch (e) {
|
|
419
|
-
logger.error('Failed to parse
|
|
417
|
+
logger.error('Failed to parse CELL_CLI_IDE_SERVER_STDIO_ARGS:', e);
|
|
420
418
|
}
|
|
421
419
|
}
|
|
422
420
|
return { command, args };
|
|
@@ -446,6 +444,9 @@ export class IdeClient {
|
|
|
446
444
|
logger.debug('Failed to read IDE connection directory:', e);
|
|
447
445
|
return undefined;
|
|
448
446
|
}
|
|
447
|
+
if (!portFiles) {
|
|
448
|
+
return undefined;
|
|
449
|
+
}
|
|
449
450
|
const fileRegex = new RegExp(`^cell-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`);
|
|
450
451
|
const matchingFiles = portFiles
|
|
451
452
|
.filter((file) => fileRegex.test(file))
|
|
@@ -474,7 +475,7 @@ export class IdeClient {
|
|
|
474
475
|
if (!content) {
|
|
475
476
|
return false;
|
|
476
477
|
}
|
|
477
|
-
const { isValid } = IdeClient.validateWorkspacePath(content.workspacePath,
|
|
478
|
+
const { isValid } = IdeClient.validateWorkspacePath(content.workspacePath, process.cwd());
|
|
478
479
|
return isValid;
|
|
479
480
|
});
|
|
480
481
|
if (validWorkspaces.length === 0) {
|
|
@@ -493,10 +494,10 @@ export class IdeClient {
|
|
|
493
494
|
return validWorkspaces[0];
|
|
494
495
|
}
|
|
495
496
|
createProxyAwareFetch() {
|
|
496
|
-
// ignore proxy for '
|
|
497
|
+
// ignore proxy for '127.0.0.1' by deafult to allow connecting to the ide mcp server
|
|
497
498
|
const existingNoProxy = process.env['NO_PROXY'] || '';
|
|
498
499
|
const agent = new EnvHttpProxyAgent({
|
|
499
|
-
noProxy: [existingNoProxy, '
|
|
500
|
+
noProxy: [existingNoProxy, '127.0.0.1'].filter(Boolean).join(','),
|
|
500
501
|
});
|
|
501
502
|
const undiciPromise = import('undici');
|
|
502
503
|
return async (url, init) => {
|
|
@@ -510,7 +511,7 @@ export class IdeClient {
|
|
|
510
511
|
return new Response(response.body, {
|
|
511
512
|
status: response.status,
|
|
512
513
|
statusText: response.statusText,
|
|
513
|
-
headers: response.headers,
|
|
514
|
+
headers: [...response.headers.entries()],
|
|
514
515
|
});
|
|
515
516
|
};
|
|
516
517
|
}
|
|
@@ -639,6 +640,6 @@ export class IdeClient {
|
|
|
639
640
|
}
|
|
640
641
|
function getIdeServerHost() {
|
|
641
642
|
const isInContainer = fs.existsSync('/.dockerenv') || fs.existsSync('/run/.containerenv');
|
|
642
|
-
return isInContainer ? 'host.docker.internal' : '
|
|
643
|
+
return isInContainer ? 'host.docker.internal' : '127.0.0.1';
|
|
643
644
|
}
|
|
644
645
|
//# sourceMappingURL=ide-client.js.map
|