@machina.ai/cell-cli-core 1.0.21-rc4 → 1.2.2-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +24 -11
- package/dist/src/code_assist/codeAssist.d.ts +4 -3
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +36 -4
- 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 +29 -24
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +65 -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 -11
- package/dist/src/config/config.js +113 -29
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +103 -5
- 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 +17 -9
- package/dist/src/core/client.js +76 -19
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +366 -84
- 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 +365 -72
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +18 -14
- package/dist/src/core/geminiChat.js +223 -156
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +862 -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 +3 -1
- 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 +114 -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 +125 -87
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +31 -26
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +24 -7
- package/dist/src/core/turn.js +41 -11
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +157 -1
- 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 +11 -7
- package/dist/src/ide/ide-client.js +127 -29
- 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/process-utils.d.ts +14 -6
- package/dist/src/ide/process-utils.js +136 -34
- 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 +11 -2
- package/dist/src/index.js +10 -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 +2 -2
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +1 -1
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +5 -27
- package/dist/src/mcp/oauth-token-storage.js +2 -5
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +7 -6
- 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/types.d.ts +34 -0
- package/dist/src/mcp/token-storage/types.js +7 -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 +2 -2
- package/dist/src/services/chatRecordingService.js +6 -3
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +10 -8
- 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 +2 -2
- package/dist/src/services/loopDetectionService.js +9 -3
- 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 +16 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +140 -9
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +84 -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 +26 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +62 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +8 -0
- package/dist/src/telemetry/constants.js +8 -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 +105 -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 +69 -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 +52 -6
- package/dist/src/telemetry/types.js +87 -2
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
- package/dist/src/telemetry/uiTelemetry.js +1 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +16 -12
- 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/edit.d.ts +6 -5
- package/dist/src/tools/edit.js +36 -17
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +45 -8
- 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 +38 -33
- 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 -3
- package/dist/src/tools/mcp-tool.js +21 -7
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +49 -6
- 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 +60 -7
- 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 +26 -24
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +33 -24
- 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 +397 -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 +9 -7
- 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 +10 -7
- 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 +28 -7
- 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 +13 -13
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +9 -5
- 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 +155 -75
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +293 -1
- 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.js +3 -3
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +3 -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/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.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 +8 -1
- 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 +25 -12
- 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":"ide-installer.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,aAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"ide-installer.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,47 +5,107 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
7
|
import { getIdeInstaller } from './ide-installer.js';
|
|
8
|
-
import * as child_process from 'child_process';
|
|
9
|
-
import * as fs from 'fs';
|
|
10
|
-
import * as os from 'os';
|
|
8
|
+
import * as child_process from 'node:child_process';
|
|
9
|
+
import * as fs from 'node:fs';
|
|
10
|
+
import * as os from 'node:os';
|
|
11
|
+
import * as path from 'node:path';
|
|
11
12
|
import { DetectedIde } from './detect-ide.js';
|
|
12
13
|
vi.mock('child_process');
|
|
13
14
|
vi.mock('fs');
|
|
14
15
|
vi.mock('os');
|
|
15
16
|
describe('ide-installer', () => {
|
|
17
|
+
const HOME_DIR = '/home/user';
|
|
16
18
|
beforeEach(() => {
|
|
17
|
-
vi.spyOn(os, 'homedir').mockReturnValue(
|
|
19
|
+
vi.spyOn(os, 'homedir').mockReturnValue(HOME_DIR);
|
|
18
20
|
});
|
|
19
21
|
afterEach(() => {
|
|
20
22
|
vi.restoreAllMocks();
|
|
21
23
|
});
|
|
22
24
|
describe('getIdeInstaller', () => {
|
|
23
|
-
it('
|
|
24
|
-
const installer = getIdeInstaller(
|
|
25
|
+
it.each([{ ide: DetectedIde.VSCode }, { ide: DetectedIde.FirebaseStudio }])('returns a VsCodeInstaller for "$ide"', ({ ide }) => {
|
|
26
|
+
const installer = getIdeInstaller(ide);
|
|
25
27
|
expect(installer).not.toBeNull();
|
|
26
|
-
|
|
27
|
-
expect(installer).toBeInstanceOf(Object);
|
|
28
|
+
expect(installer?.install).toEqual(expect.any(Function));
|
|
28
29
|
});
|
|
29
30
|
});
|
|
30
31
|
describe('VsCodeInstaller', () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
installer = getIdeInstaller(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
32
|
+
function setup({ ide = DetectedIde.VSCode, existsResult = false, execSync = () => '', platform = 'linux', } = {}) {
|
|
33
|
+
vi.spyOn(child_process, 'execSync').mockImplementation(execSync);
|
|
34
|
+
vi.spyOn(fs, 'existsSync').mockReturnValue(existsResult);
|
|
35
|
+
const installer = getIdeInstaller(ide, platform);
|
|
36
|
+
return { installer };
|
|
37
|
+
}
|
|
38
38
|
describe('install', () => {
|
|
39
|
-
it(
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
it.each([
|
|
40
|
+
{
|
|
41
|
+
platform: 'win32',
|
|
42
|
+
expectedLookupPaths: [
|
|
43
|
+
path.join('C:\\Program Files', 'Microsoft VS Code/bin/code.cmd'),
|
|
44
|
+
path.join(HOME_DIR, '/AppData/Local/Programs/Microsoft VS Code/bin/code.cmd'),
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
platform: 'darwin',
|
|
49
|
+
expectedLookupPaths: [
|
|
50
|
+
'/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code',
|
|
51
|
+
path.join(HOME_DIR, 'Library/Application Support/Code/bin/code'),
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
platform: 'linux',
|
|
56
|
+
expectedLookupPaths: ['/usr/share/code/bin/code'],
|
|
57
|
+
},
|
|
58
|
+
])('identifies the path to code cli on platform: $platform', async ({ platform, expectedLookupPaths }) => {
|
|
59
|
+
const { installer } = setup({
|
|
60
|
+
platform,
|
|
61
|
+
execSync: () => {
|
|
62
|
+
throw new Error('Command not found'); // `code` is not in PATH
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
await installer.install();
|
|
66
|
+
for (const [idx, path] of expectedLookupPaths.entries()) {
|
|
67
|
+
expect(fs.existsSync).toHaveBeenNthCalledWith(idx + 1, path);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
it('installs the extension using code cli', async () => {
|
|
71
|
+
const { installer } = setup({
|
|
72
|
+
platform: 'linux',
|
|
73
|
+
});
|
|
74
|
+
await installer.install();
|
|
75
|
+
expect(child_process.execSync).toHaveBeenCalledWith('"code" --install-extension nova-solutions.cell-cli-vscode-ide-companion --force', { stdio: 'pipe' });
|
|
76
|
+
});
|
|
77
|
+
it.each([
|
|
78
|
+
{
|
|
79
|
+
ide: DetectedIde.VSCode,
|
|
80
|
+
expectedMessage: 'VS Code companion extension was installed successfully',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
ide: DetectedIde.FirebaseStudio,
|
|
84
|
+
expectedMessage: 'Firebase Studio companion extension was installed successfully',
|
|
85
|
+
},
|
|
86
|
+
])('returns that the cli was installed successfully', async ({ ide, expectedMessage }) => {
|
|
87
|
+
const { installer } = setup({ ide });
|
|
88
|
+
const result = await installer.install();
|
|
89
|
+
expect(result.success).toBe(true);
|
|
90
|
+
expect(result.message).toContain(expectedMessage);
|
|
91
|
+
});
|
|
92
|
+
it.each([
|
|
93
|
+
{ ide: DetectedIde.VSCode, expectedErr: 'VS Code CLI not found' },
|
|
94
|
+
{
|
|
95
|
+
ide: DetectedIde.FirebaseStudio,
|
|
96
|
+
expectedErr: 'Firebase Studio CLI not found',
|
|
97
|
+
},
|
|
98
|
+
])('should return a failure message if $ide is not installed', async ({ ide, expectedErr }) => {
|
|
99
|
+
const { installer } = setup({
|
|
100
|
+
ide,
|
|
101
|
+
execSync: () => {
|
|
102
|
+
throw new Error('Command not found');
|
|
103
|
+
},
|
|
104
|
+
existsResult: false,
|
|
42
105
|
});
|
|
43
|
-
vi.spyOn(fs, 'existsSync').mockReturnValue(false);
|
|
44
|
-
// Re-create the installer so it re-runs findVsCodeCommand
|
|
45
|
-
installer = getIdeInstaller(DetectedIde.VSCode);
|
|
46
106
|
const result = await installer.install();
|
|
47
107
|
expect(result.success).toBe(false);
|
|
48
|
-
expect(result.message).toContain(
|
|
108
|
+
expect(result.message).toContain(expectedErr);
|
|
49
109
|
});
|
|
50
110
|
});
|
|
51
111
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-installer.test.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"ide-installer.test.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,19 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* Traverses up the process tree
|
|
8
|
-
* This is useful for identifying the main application process that spawned the current script,
|
|
9
|
-
* such as the main VS Code window process.
|
|
7
|
+
* Traverses up the process tree to find the process ID and command of the IDE.
|
|
10
8
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* This function uses different strategies depending on the operating system
|
|
10
|
+
* to identify the main application process (e.g., the main VS Code window
|
|
11
|
+
* process).
|
|
12
|
+
*
|
|
13
|
+
* If the IDE process cannot be reliably identified, it will return the
|
|
14
|
+
* top-level ancestor process ID and command as a fallback.
|
|
15
|
+
*
|
|
16
|
+
* @returns A promise that resolves to the PID and command of the IDE process.
|
|
17
|
+
* @throws Will throw an error if the underlying shell commands fail.
|
|
13
18
|
*/
|
|
14
|
-
export declare function
|
|
19
|
+
export declare function getIdeProcessInfo(): Promise<{
|
|
20
|
+
pid: number;
|
|
21
|
+
command: string;
|
|
22
|
+
}>;
|
|
@@ -3,55 +3,157 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { exec } from 'child_process';
|
|
7
|
-
import { promisify } from 'util';
|
|
8
|
-
import os from 'os';
|
|
6
|
+
import { exec } from 'node:child_process';
|
|
7
|
+
import { promisify } from 'node:util';
|
|
8
|
+
import os from 'node:os';
|
|
9
|
+
import path from 'node:path';
|
|
9
10
|
const execAsync = promisify(exec);
|
|
11
|
+
const MAX_TRAVERSAL_DEPTH = 32;
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
12
|
-
* This is useful for identifying the main application process that spawned the current script,
|
|
13
|
-
* such as the main VS Code window process.
|
|
13
|
+
* Fetches the parent process ID, name, and command for a given process ID.
|
|
14
14
|
*
|
|
15
|
-
* @
|
|
16
|
-
* @
|
|
15
|
+
* @param pid The process ID to inspect.
|
|
16
|
+
* @returns A promise that resolves to the parent's PID, name, and command.
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
async function getProcessInfo(pid) {
|
|
19
19
|
const platform = os.platform();
|
|
20
|
+
if (platform === 'win32') {
|
|
21
|
+
const powershellCommand = [
|
|
22
|
+
'$p = Get-CimInstance Win32_Process',
|
|
23
|
+
`-Filter 'ProcessId=${pid}'`,
|
|
24
|
+
'-ErrorAction SilentlyContinue;',
|
|
25
|
+
'if ($p) {',
|
|
26
|
+
'@{Name=$p.Name;ParentProcessId=$p.ParentProcessId;CommandLine=$p.CommandLine}',
|
|
27
|
+
'| ConvertTo-Json',
|
|
28
|
+
'}',
|
|
29
|
+
].join(' ');
|
|
30
|
+
const { stdout } = await execAsync(`powershell "${powershellCommand}"`);
|
|
31
|
+
const output = stdout.trim();
|
|
32
|
+
if (!output)
|
|
33
|
+
return { parentPid: 0, name: '', command: '' };
|
|
34
|
+
const { Name = '', ParentProcessId = 0, CommandLine = '', } = JSON.parse(output);
|
|
35
|
+
return { parentPid: ParentProcessId, name: Name, command: CommandLine };
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const command = `ps -o ppid=,command= -p ${pid}`;
|
|
39
|
+
const { stdout } = await execAsync(command);
|
|
40
|
+
const trimmedStdout = stdout.trim();
|
|
41
|
+
const ppidString = trimmedStdout.split(/\s+/)[0];
|
|
42
|
+
const parentPid = parseInt(ppidString, 10);
|
|
43
|
+
const fullCommand = trimmedStdout.substring(ppidString.length).trim();
|
|
44
|
+
const processName = path.basename(fullCommand.split(' ')[0]);
|
|
45
|
+
return {
|
|
46
|
+
parentPid: isNaN(parentPid) ? 1 : parentPid,
|
|
47
|
+
name: processName,
|
|
48
|
+
command: fullCommand,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Finds the IDE process info on Unix-like systems.
|
|
54
|
+
*
|
|
55
|
+
* The strategy is to find the shell process that spawned the CLI, and then
|
|
56
|
+
* find that shell's parent process (the IDE). To get the true IDE process,
|
|
57
|
+
* we traverse one level higher to get the grandparent.
|
|
58
|
+
*
|
|
59
|
+
* @returns A promise that resolves to the PID and command of the IDE process.
|
|
60
|
+
*/
|
|
61
|
+
async function getIdeProcessInfoForUnix() {
|
|
62
|
+
const shells = ['zsh', 'bash', 'sh', 'tcsh', 'csh', 'ksh', 'fish', 'dash'];
|
|
20
63
|
let currentPid = process.pid;
|
|
21
|
-
// Loop upwards through the process tree, with a depth limit to prevent infinite loops.
|
|
22
|
-
const MAX_TRAVERSAL_DEPTH = 32;
|
|
23
64
|
for (let i = 0; i < MAX_TRAVERSAL_DEPTH; i++) {
|
|
24
|
-
let parentPid;
|
|
25
65
|
try {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
66
|
+
const { parentPid, name } = await getProcessInfo(currentPid);
|
|
67
|
+
const isShell = shells.some((shell) => name === shell);
|
|
68
|
+
if (isShell) {
|
|
69
|
+
// The direct parent of the shell is often a utility process (e.g. VS
|
|
70
|
+
// Code's `ptyhost` process). To get the true IDE process, we need to
|
|
71
|
+
// traverse one level higher to get the grandparent.
|
|
72
|
+
let idePid = parentPid;
|
|
73
|
+
try {
|
|
74
|
+
const { parentPid: grandParentPid } = await getProcessInfo(parentPid);
|
|
75
|
+
if (grandParentPid > 1) {
|
|
76
|
+
idePid = grandParentPid;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore if getting grandparent fails, we'll just use the parent pid.
|
|
81
|
+
}
|
|
82
|
+
const { command } = await getProcessInfo(idePid);
|
|
83
|
+
return { pid: idePid, command };
|
|
32
84
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const command = `ps -o ppid= -p ${currentPid}`;
|
|
36
|
-
const { stdout } = await execAsync(command);
|
|
37
|
-
const ppid = parseInt(stdout.trim(), 10);
|
|
38
|
-
parentPid = isNaN(ppid) ? 1 : ppid; // Top of the tree is 1
|
|
85
|
+
if (parentPid <= 1) {
|
|
86
|
+
break; // Reached the root
|
|
39
87
|
}
|
|
88
|
+
currentPid = parentPid;
|
|
40
89
|
}
|
|
41
|
-
catch
|
|
42
|
-
//
|
|
43
|
-
// We'll break the loop and return the last valid PID we found.
|
|
90
|
+
catch {
|
|
91
|
+
// Process in chain died
|
|
44
92
|
break;
|
|
45
93
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
94
|
+
}
|
|
95
|
+
const { command } = await getProcessInfo(currentPid);
|
|
96
|
+
return { pid: currentPid, command };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Finds the IDE process info on Windows.
|
|
100
|
+
*
|
|
101
|
+
* The strategy is to find the great-grandchild of the root process.
|
|
102
|
+
*
|
|
103
|
+
* @returns A promise that resolves to the PID and command of the IDE process.
|
|
104
|
+
*/
|
|
105
|
+
async function getIdeProcessInfoForWindows() {
|
|
106
|
+
let currentPid = process.pid;
|
|
107
|
+
let previousPid = process.pid;
|
|
108
|
+
for (let i = 0; i < MAX_TRAVERSAL_DEPTH; i++) {
|
|
109
|
+
try {
|
|
110
|
+
const { parentPid } = await getProcessInfo(currentPid);
|
|
111
|
+
if (parentPid > 0) {
|
|
112
|
+
try {
|
|
113
|
+
const { parentPid: grandParentPid } = await getProcessInfo(parentPid);
|
|
114
|
+
if (grandParentPid === 0) {
|
|
115
|
+
// We've found the grandchild of the root (`currentPid`). The IDE
|
|
116
|
+
// process is its child, which we've stored in `previousPid`.
|
|
117
|
+
const { command } = await getProcessInfo(previousPid);
|
|
118
|
+
return { pid: previousPid, command };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// getting grandparent failed, proceed
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (parentPid <= 0) {
|
|
126
|
+
break; // Reached the root
|
|
127
|
+
}
|
|
128
|
+
previousPid = currentPid;
|
|
129
|
+
currentPid = parentPid;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Process in chain died
|
|
50
133
|
break;
|
|
51
134
|
}
|
|
52
|
-
// Move one level up the tree for the next iteration.
|
|
53
|
-
currentPid = parentPid;
|
|
54
135
|
}
|
|
55
|
-
|
|
136
|
+
const { command } = await getProcessInfo(currentPid);
|
|
137
|
+
return { pid: currentPid, command };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Traverses up the process tree to find the process ID and command of the IDE.
|
|
141
|
+
*
|
|
142
|
+
* This function uses different strategies depending on the operating system
|
|
143
|
+
* to identify the main application process (e.g., the main VS Code window
|
|
144
|
+
* process).
|
|
145
|
+
*
|
|
146
|
+
* If the IDE process cannot be reliably identified, it will return the
|
|
147
|
+
* top-level ancestor process ID and command as a fallback.
|
|
148
|
+
*
|
|
149
|
+
* @returns A promise that resolves to the PID and command of the IDE process.
|
|
150
|
+
* @throws Will throw an error if the underlying shell commands fail.
|
|
151
|
+
*/
|
|
152
|
+
export async function getIdeProcessInfo() {
|
|
153
|
+
const platform = os.platform();
|
|
154
|
+
if (platform === 'win32') {
|
|
155
|
+
return getIdeProcessInfoForWindows();
|
|
156
|
+
}
|
|
157
|
+
return getIdeProcessInfoForUnix();
|
|
56
158
|
}
|
|
57
159
|
//# sourceMappingURL=process-utils.js.map
|
|
@@ -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,12 @@ 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';
|
|
39
43
|
export * from './services/fileDiscoveryService.js';
|
|
40
44
|
export * from './services/gitService.js';
|
|
41
45
|
export * from './services/chatRecordingService.js';
|
|
@@ -43,7 +47,8 @@ export * from './services/fileSystemService.js';
|
|
|
43
47
|
export * from './ide/ide-client.js';
|
|
44
48
|
export * from './ide/ideContext.js';
|
|
45
49
|
export * from './ide/ide-installer.js';
|
|
46
|
-
export { getIdeInfo, DetectedIde
|
|
50
|
+
export { getIdeInfo, DetectedIde } from './ide/detect-ide.js';
|
|
51
|
+
export { type IdeInfo } from './ide/detect-ide.js';
|
|
47
52
|
export * from './ide/constants.js';
|
|
48
53
|
export * from './services/shellExecutionService.js';
|
|
49
54
|
export * from './tools/tools.js';
|
|
@@ -53,6 +58,7 @@ export * from './prompts/mcp-prompts.js';
|
|
|
53
58
|
export * from './tools/read-file.js';
|
|
54
59
|
export * from './tools/ls.js';
|
|
55
60
|
export * from './tools/grep.js';
|
|
61
|
+
export * from './tools/ripGrep.js';
|
|
56
62
|
export * from './tools/glob.js';
|
|
57
63
|
export * from './tools/edit.js';
|
|
58
64
|
export * from './tools/write-file.js';
|
|
@@ -64,10 +70,13 @@ export * from './tools/read-many-files.js';
|
|
|
64
70
|
export * from './tools/mcp-client.js';
|
|
65
71
|
export * from './tools/mcp-tool.js';
|
|
66
72
|
export { MCPOAuthProvider } from './mcp/oauth-provider.js';
|
|
67
|
-
export {
|
|
73
|
+
export type { OAuthToken, OAuthCredentials, } from './mcp/token-storage/types.js';
|
|
74
|
+
export { MCPOAuthTokenStorage } from './mcp/oauth-token-storage.js';
|
|
68
75
|
export type { MCPOAuthConfig } from './mcp/oauth-provider.js';
|
|
69
76
|
export type { OAuthAuthorizationServerMetadata, OAuthProtectedResourceMetadata, } from './mcp/oauth-utils.js';
|
|
70
77
|
export { OAuthUtils } from './mcp/oauth-utils.js';
|
|
71
78
|
export * from './telemetry/index.js';
|
|
72
79
|
export { sessionId } from './utils/session.js';
|
|
73
80
|
export * from './utils/browser.js';
|
|
81
|
+
export { Storage } from './config/storage.js';
|
|
82
|
+
export * from './test-utils/index.js';
|