@machina.ai/cell-cli-core 1.0.21-rc4 → 1.4.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/package.json +25 -11
- package/dist/src/code_assist/codeAssist.d.ts +6 -3
- package/dist/src/code_assist/codeAssist.js +12 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +3 -1
- package/dist/src/code_assist/converter.js +37 -5
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +83 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +2 -1
- package/dist/src/code_assist/oauth2.js +85 -49
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +317 -15
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +5 -5
- package/dist/src/code_assist/server.js +1 -1
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +1 -1
- package/dist/src/code_assist/setup.js +1 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/config/config.d.ts +53 -15
- package/dist/src/config/config.js +127 -47
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +151 -6
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -0
- package/dist/src/config/models.js +2 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/storage.d.ts +32 -0
- package/dist/src/config/storage.js +90 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/config/storage.test.js +43 -0
- package/dist/src/config/storage.test.js.map +1 -0
- package/dist/src/core/client.d.ts +21 -11
- package/dist/src/core/client.js +83 -26
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +398 -88
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +6 -6
- package/dist/src/core/contentGenerator.js +4 -3
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +14 -5
- package/dist/src/core/coreToolScheduler.js +120 -49
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +383 -72
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +48 -15
- package/dist/src/core/geminiChat.js +327 -154
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1041 -257
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiRequest.js +1 -0
- package/dist/src/core/geminiRequest.js.map +1 -1
- package/dist/src/core/logger.d.ts +4 -2
- package/dist/src/core/logger.js +4 -3
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +19 -18
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +3 -3
- package/dist/src/core/loggingContentGenerator.js +11 -9
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
- package/dist/src/core/nonInteractiveToolExecutor.js +15 -123
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +116 -90
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +8 -7
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +21 -21
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/subagent.d.ts +24 -18
- package/dist/src/core/subagent.js +126 -89
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +51 -35
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +33 -8
- package/dist/src/core/turn.js +59 -14
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +349 -90
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ide/constants.d.ts +1 -1
- package/dist/src/ide/constants.js +1 -1
- package/dist/src/ide/constants.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +8 -3
- package/dist/src/ide/detect-ide.js +29 -11
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +96 -52
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +18 -9
- package/dist/src/ide/ide-client.js +151 -33
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +147 -25
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +1 -1
- package/dist/src/ide/ide-installer.js +31 -22
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +82 -22
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +12 -0
- package/dist/src/ide/ideContext.js +1 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +13 -6
- package/dist/src/ide/process-utils.js +142 -35
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.js +158 -0
- package/dist/src/ide/process-utils.test.js.map +1 -0
- package/dist/src/index.d.ts +12 -2
- package/dist/src/index.js +11 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.d.ts +3 -3
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +13 -13
- package/dist/src/mcp/oauth-provider.js +32 -31
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +75 -36
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +9 -31
- package/dist/src/mcp/oauth-token-storage.js +10 -13
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +30 -27
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +9 -1
- package/dist/src/mcp/oauth-utils.js +41 -27
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +41 -1
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
- package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js +235 -0
- package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js +254 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +38 -0
- package/dist/src/mcp/token-storage/types.js +11 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +2 -2
- package/dist/src/prompts/prompt-registry.d.ts +1 -1
- package/dist/src/services/chatRecordingService.d.ts +6 -13
- package/dist/src/services/chatRecordingService.js +31 -19
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +64 -25
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.js +1 -1
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +3 -3
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/fileSystemService.js +1 -1
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/fileSystemService.test.js +1 -1
- package/dist/src/services/fileSystemService.test.js.map +1 -1
- package/dist/src/services/gitService.d.ts +3 -1
- package/dist/src/services/gitService.js +21 -12
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +22 -19
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +3 -2
- package/dist/src/services/loopDetectionService.js +28 -4
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +23 -1
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +8 -10
- package/dist/src/services/shellExecutionService.js +292 -135
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +277 -42
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +18 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +171 -11
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +103 -11
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +31 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +75 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +9 -0
- package/dist/src/telemetry/constants.js +9 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/file-exporters.d.ts +5 -4
- package/dist/src/telemetry/file-exporters.js +1 -1
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +5 -2
- package/dist/src/telemetry/index.js +3 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +8 -2
- package/dist/src/telemetry/loggers.js +130 -2
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +105 -9
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +15 -4
- package/dist/src/telemetry/metrics.js +46 -8
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +5 -25
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +3 -3
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.js +14 -0
- package/dist/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.test.js +40 -0
- package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +61 -6
- package/dist/src/telemetry/types.js +105 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
- package/dist/src/telemetry/uiTelemetry.js +5 -5
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +20 -16
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +2 -1
- package/dist/src/test-utils/config.js.map +1 -1
- package/dist/src/test-utils/index.d.ts +6 -0
- package/dist/src/test-utils/index.js +7 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/mock-tool.d.ts +41 -0
- package/dist/src/test-utils/mock-tool.js +51 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
- package/dist/src/test-utils/tools.d.ts +3 -2
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +1 -1
- package/dist/src/tools/diffOptions.js +21 -13
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.js +58 -22
- package/dist/src/tools/diffOptions.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +6 -5
- package/dist/src/tools/edit.js +47 -36
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +77 -12
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +3 -2
- package/dist/src/tools/glob.js +17 -6
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +29 -4
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -2
- package/dist/src/tools/grep.js +35 -15
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +26 -3
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -2
- package/dist/src/tools/ls.js +12 -7
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +7 -2
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +8 -6
- package/dist/src/tools/mcp-client-manager.js +30 -5
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +20 -1
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +18 -11
- package/dist/src/tools/mcp-client.js +67 -57
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +29 -4
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +6 -4
- package/dist/src/tools/mcp-tool.js +21 -11
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +49 -12
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +4 -3
- package/dist/src/tools/memoryTool.js +15 -38
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +24 -12
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.d.ts +2 -2
- package/dist/src/tools/modifiable-tool.js +3 -3
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +4 -4
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +3 -2
- package/dist/src/tools/read-file.js +12 -34
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +9 -6
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +3 -2
- package/dist/src/tools/read-many-files.js +35 -58
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +64 -11
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +47 -0
- package/dist/src/tools/ripGrep.js +368 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/ripGrep.test.d.ts +6 -0
- package/dist/src/tools/ripGrep.test.js +874 -0
- package/dist/src/tools/ripGrep.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +3 -2
- package/dist/src/tools/shell.js +30 -25
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +34 -25
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +73 -0
- package/dist/src/tools/smart-edit.js +607 -0
- package/dist/src/tools/smart-edit.js.map +1 -0
- package/dist/src/tools/smart-edit.test.d.ts +6 -0
- package/dist/src/tools/smart-edit.test.js +405 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +17 -1
- package/dist/src/tools/tool-error.js +26 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +10 -4
- package/dist/src/tools/tool-registry.js +19 -7
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +86 -3
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +15 -9
- package/dist/src/tools/tools.js +12 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +1 -2
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +3 -2
- package/dist/src/tools/web-fetch.js +14 -10
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +55 -16
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +4 -3
- package/dist/src/tools/web-search.js +31 -8
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +69 -1
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -3
- package/dist/src/tools/write-file.js +14 -14
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +14 -14
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.d.ts +2 -2
- package/dist/src/utils/bfsFileSearch.js +2 -2
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +3 -3
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/editCorrector.d.ts +2 -2
- package/dist/src/utils/editCorrector.js +1 -1
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +3 -3
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.js +2 -2
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +2 -2
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +2 -2
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +1 -1
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/errorReporting.d.ts +1 -1
- package/dist/src/utils/errors.d.ts +19 -0
- package/dist/src/utils/errors.js +32 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fetch.js +1 -1
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +23 -12
- package/dist/src/utils/fileUtils.js +160 -79
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +314 -21
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +2 -2
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +14 -9
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
- package/dist/src/utils/generateContentResponseUtilities.js +1 -13
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.d.ts +2 -2
- package/dist/src/utils/getFolderStructure.js +2 -2
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +13 -13
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/getPty.d.ts +19 -0
- package/dist/src/utils/getPty.js +23 -0
- package/dist/src/utils/getPty.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
- package/dist/src/utils/gitIgnoreParser.js +104 -13
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +69 -3
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -2
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/ide-trust.d.ts +10 -0
- package/dist/src/utils/ide-trust.js +14 -0
- package/dist/src/utils/ide-trust.js.map +1 -0
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
- package/dist/src/utils/ignorePatterns.test.js +250 -0
- package/dist/src/utils/ignorePatterns.test.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +50 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/installationManager.test.d.ts +6 -0
- package/dist/src/utils/installationManager.test.js +83 -0
- package/dist/src/utils/installationManager.test.js.map +1 -0
- package/dist/src/utils/language-detection.d.ts +6 -0
- package/dist/src/utils/language-detection.js +101 -0
- package/dist/src/utils/language-detection.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.d.ts +25 -0
- package/dist/src/utils/llm-edit-fixer.js +112 -0
- package/dist/src/utils/llm-edit-fixer.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +7 -6
- package/dist/src/utils/memoryDiscovery.js +68 -33
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +76 -20
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +2 -2
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +2 -141
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/messageInspectors.d.ts +1 -1
- package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
- package/dist/src/utils/nextSpeakerChecker.test.js +33 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/partUtils.d.ts +22 -1
- package/dist/src/utils/partUtils.js +68 -0
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/partUtils.test.js +112 -1
- package/dist/src/utils/partUtils.test.js.map +1 -1
- package/dist/src/utils/pathReader.d.ts +17 -0
- package/dist/src/utils/pathReader.js +92 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/pathReader.test.d.ts +6 -0
- package/dist/src/utils/pathReader.test.js +363 -0
- package/dist/src/utils/pathReader.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +1 -18
- package/dist/src/utils/paths.js +3 -29
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
- package/dist/src/utils/retry.test.js +4 -1
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +4 -0
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/session.js +1 -1
- package/dist/src/utils/session.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +1 -1
- package/dist/src/utils/shell-utils.js +23 -29
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +7 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +2 -2
- package/dist/src/utils/summarizer.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +2 -2
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/systemEncoding.test.js +2 -2
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +19 -0
- package/dist/src/utils/tool-utils.js +58 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/tool-utils.test.d.ts +6 -0
- package/dist/src/utils/tool-utils.test.js +61 -0
- package/dist/src/utils/tool-utils.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +114 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/userAccountManager.test.d.ts +6 -0
- package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +33 -30
- package/dist/src/utils/userAccountManager.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.js +13 -7
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +41 -16
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -13
- package/dist/src/utils/user_account.d.ts +0 -9
- package/dist/src/utils/user_account.js +0 -109
- package/dist/src/utils/user_account.js.map +0 -1
- package/dist/src/utils/user_account.test.js.map +0 -1
- package/dist/src/utils/user_id.d.ts +0 -11
- package/dist/src/utils/user_id.js +0 -49
- package/dist/src/utils/user_id.js.map +0 -1
- package/dist/src/utils/user_id.test.js +0 -21
- package/dist/src/utils/user_id.test.js.map +0 -1
- /package/dist/src/{utils/user_account.test.d.ts → config/storage.test.d.ts} +0 -0
- /package/dist/src/{utils/user_id.test.d.ts → ide/process-utils.test.d.ts} +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { promises as fs } from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { glob } from 'glob';
|
|
9
|
+
import { processSingleFileContent } from './fileUtils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Reads the content of a file or recursively expands a directory from
|
|
12
|
+
* within the workspace, returning content suitable for LLM input.
|
|
13
|
+
*
|
|
14
|
+
* @param pathStr The path to read (can be absolute or relative).
|
|
15
|
+
* @param config The application configuration, providing workspace context and services.
|
|
16
|
+
* @returns A promise that resolves to an array of PartUnion (string | Part).
|
|
17
|
+
* @throws An error if the path is not found or is outside the workspace.
|
|
18
|
+
*/
|
|
19
|
+
export async function readPathFromWorkspace(pathStr, config) {
|
|
20
|
+
const workspace = config.getWorkspaceContext();
|
|
21
|
+
const fileService = config.getFileService();
|
|
22
|
+
let absolutePath = null;
|
|
23
|
+
if (path.isAbsolute(pathStr)) {
|
|
24
|
+
if (!workspace.isPathWithinWorkspace(pathStr)) {
|
|
25
|
+
throw new Error(`Absolute path is outside of the allowed workspace: ${pathStr}`);
|
|
26
|
+
}
|
|
27
|
+
absolutePath = pathStr;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Prioritized search for relative paths.
|
|
31
|
+
const searchDirs = workspace.getDirectories();
|
|
32
|
+
for (const dir of searchDirs) {
|
|
33
|
+
const potentialPath = path.resolve(dir, pathStr);
|
|
34
|
+
try {
|
|
35
|
+
await fs.access(potentialPath);
|
|
36
|
+
absolutePath = potentialPath;
|
|
37
|
+
break; // Found the first match.
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Not found, continue to the next directory.
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (!absolutePath) {
|
|
45
|
+
throw new Error(`Path not found in workspace: ${pathStr}`);
|
|
46
|
+
}
|
|
47
|
+
const stats = await fs.stat(absolutePath);
|
|
48
|
+
if (stats.isDirectory()) {
|
|
49
|
+
const allParts = [];
|
|
50
|
+
allParts.push({
|
|
51
|
+
text: `--- Start of content for directory: ${pathStr} ---\n`,
|
|
52
|
+
});
|
|
53
|
+
// Use glob to recursively find all files within the directory.
|
|
54
|
+
const files = await glob('**/*', {
|
|
55
|
+
cwd: absolutePath,
|
|
56
|
+
nodir: true, // We only want files
|
|
57
|
+
dot: true, // Include dotfiles
|
|
58
|
+
absolute: true,
|
|
59
|
+
});
|
|
60
|
+
const relativeFiles = files.map((p) => path.relative(config.getTargetDir(), p));
|
|
61
|
+
const filteredFiles = fileService.filterFiles(relativeFiles, {
|
|
62
|
+
respectGitIgnore: true,
|
|
63
|
+
respectGeminiIgnore: true,
|
|
64
|
+
});
|
|
65
|
+
const finalFiles = filteredFiles.map((p) => path.resolve(config.getTargetDir(), p));
|
|
66
|
+
for (const filePath of finalFiles) {
|
|
67
|
+
const relativePathForDisplay = path.relative(absolutePath, filePath);
|
|
68
|
+
allParts.push({ text: `--- ${relativePathForDisplay} ---\n` });
|
|
69
|
+
const result = await processSingleFileContent(filePath, config.getTargetDir(), config.getFileSystemService());
|
|
70
|
+
allParts.push(result.llmContent);
|
|
71
|
+
allParts.push({ text: '\n' }); // Add a newline for separation
|
|
72
|
+
}
|
|
73
|
+
allParts.push({ text: `--- End of content for directory: ${pathStr} ---` });
|
|
74
|
+
return allParts;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// It's a single file, check if it's ignored.
|
|
78
|
+
const relativePath = path.relative(config.getTargetDir(), absolutePath);
|
|
79
|
+
const filtered = fileService.filterFiles([relativePath], {
|
|
80
|
+
respectGitIgnore: true,
|
|
81
|
+
respectGeminiIgnore: true,
|
|
82
|
+
});
|
|
83
|
+
if (filtered.length === 0) {
|
|
84
|
+
// File is ignored, return empty array to silently skip.
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
// It's a single file, process it directly.
|
|
88
|
+
const result = await processSingleFileContent(absolutePath, config.getTargetDir(), config.getFileSystemService());
|
|
89
|
+
return [result.llmContent];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=pathReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathReader.js","sourceRoot":"","sources":["../../../src/utils/pathReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, afterEach, vi } from 'vitest';
|
|
7
|
+
import mock from 'mock-fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import { WorkspaceContext } from './workspaceContext.js';
|
|
10
|
+
import { readPathFromWorkspace } from './pathReader.js';
|
|
11
|
+
import { StandardFileSystemService } from '../services/fileSystemService.js';
|
|
12
|
+
// --- Helper for creating a mock Config object ---
|
|
13
|
+
// We use the actual implementations of WorkspaceContext and FileSystemService
|
|
14
|
+
// to test the integration against mock-fs.
|
|
15
|
+
const createMockConfig = (cwd, otherDirs = [], mockFileService) => {
|
|
16
|
+
const workspace = new WorkspaceContext(cwd, otherDirs);
|
|
17
|
+
const fileSystemService = new StandardFileSystemService();
|
|
18
|
+
return {
|
|
19
|
+
getWorkspaceContext: () => workspace,
|
|
20
|
+
// TargetDir is used by processSingleFileContent to generate relative paths in errors/output
|
|
21
|
+
getTargetDir: () => cwd,
|
|
22
|
+
getFileSystemService: () => fileSystemService,
|
|
23
|
+
getFileService: () => mockFileService,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
describe('readPathFromWorkspace', () => {
|
|
27
|
+
const CWD = path.resolve('/test/cwd');
|
|
28
|
+
const OTHER_DIR = path.resolve('/test/other');
|
|
29
|
+
const OUTSIDE_DIR = path.resolve('/test/outside');
|
|
30
|
+
afterEach(() => {
|
|
31
|
+
mock.restore();
|
|
32
|
+
vi.resetAllMocks();
|
|
33
|
+
});
|
|
34
|
+
it('should read a text file from the CWD', async () => {
|
|
35
|
+
mock({
|
|
36
|
+
[CWD]: {
|
|
37
|
+
'file.txt': 'hello from cwd',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const mockFileService = {
|
|
41
|
+
filterFiles: vi.fn((files) => files),
|
|
42
|
+
};
|
|
43
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
44
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
45
|
+
// Expect [string] for text content
|
|
46
|
+
expect(result).toEqual(['hello from cwd']);
|
|
47
|
+
expect(mockFileService.filterFiles).toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
it('should read a file from a secondary workspace directory', async () => {
|
|
50
|
+
mock({
|
|
51
|
+
[CWD]: {},
|
|
52
|
+
[OTHER_DIR]: {
|
|
53
|
+
'file.txt': 'hello from other dir',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const mockFileService = {
|
|
57
|
+
filterFiles: vi.fn((files) => files),
|
|
58
|
+
};
|
|
59
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
60
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
61
|
+
expect(result).toEqual(['hello from other dir']);
|
|
62
|
+
});
|
|
63
|
+
it('should prioritize CWD when file exists in both CWD and secondary dir', async () => {
|
|
64
|
+
mock({
|
|
65
|
+
[CWD]: {
|
|
66
|
+
'file.txt': 'hello from cwd',
|
|
67
|
+
},
|
|
68
|
+
[OTHER_DIR]: {
|
|
69
|
+
'file.txt': 'hello from other dir',
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
const mockFileService = {
|
|
73
|
+
filterFiles: vi.fn((files) => files),
|
|
74
|
+
};
|
|
75
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
76
|
+
const result = await readPathFromWorkspace('file.txt', config);
|
|
77
|
+
expect(result).toEqual(['hello from cwd']);
|
|
78
|
+
});
|
|
79
|
+
it('should read an image file and return it as inlineData (Part object)', async () => {
|
|
80
|
+
// Use a real PNG header for robustness
|
|
81
|
+
const imageData = Buffer.from([
|
|
82
|
+
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
|
|
83
|
+
]);
|
|
84
|
+
mock({
|
|
85
|
+
[CWD]: {
|
|
86
|
+
'image.png': imageData,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
const mockFileService = {
|
|
90
|
+
filterFiles: vi.fn((files) => files),
|
|
91
|
+
};
|
|
92
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
93
|
+
const result = await readPathFromWorkspace('image.png', config);
|
|
94
|
+
// Expect [Part] for image content
|
|
95
|
+
expect(result).toEqual([
|
|
96
|
+
{
|
|
97
|
+
inlineData: {
|
|
98
|
+
mimeType: 'image/png',
|
|
99
|
+
data: imageData.toString('base64'),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
104
|
+
it('should read a generic binary file and return an info string', async () => {
|
|
105
|
+
// Data that is clearly binary (null bytes)
|
|
106
|
+
const binaryData = Buffer.from([0x00, 0x01, 0x02, 0x03]);
|
|
107
|
+
mock({
|
|
108
|
+
[CWD]: {
|
|
109
|
+
'data.bin': binaryData,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const mockFileService = {
|
|
113
|
+
filterFiles: vi.fn((files) => files),
|
|
114
|
+
};
|
|
115
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
116
|
+
const result = await readPathFromWorkspace('data.bin', config);
|
|
117
|
+
// Expect [string] containing the skip message from fileUtils
|
|
118
|
+
expect(result).toEqual(['Cannot display content of binary file: data.bin']);
|
|
119
|
+
});
|
|
120
|
+
it('should read a file from an absolute path if within workspace', async () => {
|
|
121
|
+
const absPath = path.join(OTHER_DIR, 'abs.txt');
|
|
122
|
+
mock({
|
|
123
|
+
[CWD]: {},
|
|
124
|
+
[OTHER_DIR]: {
|
|
125
|
+
'abs.txt': 'absolute content',
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const mockFileService = {
|
|
129
|
+
filterFiles: vi.fn((files) => files),
|
|
130
|
+
};
|
|
131
|
+
const config = createMockConfig(CWD, [OTHER_DIR], mockFileService);
|
|
132
|
+
const result = await readPathFromWorkspace(absPath, config);
|
|
133
|
+
expect(result).toEqual(['absolute content']);
|
|
134
|
+
});
|
|
135
|
+
describe('Directory Expansion', () => {
|
|
136
|
+
it('should expand a directory and read the content of its files', async () => {
|
|
137
|
+
mock({
|
|
138
|
+
[CWD]: {
|
|
139
|
+
'my-dir': {
|
|
140
|
+
'file1.txt': 'content of file 1',
|
|
141
|
+
'file2.md': 'content of file 2',
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const mockFileService = {
|
|
146
|
+
filterFiles: vi.fn((files) => files),
|
|
147
|
+
};
|
|
148
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
149
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
150
|
+
// Convert to a single string for easier, order-independent checking
|
|
151
|
+
const resultText = result
|
|
152
|
+
.map((p) => {
|
|
153
|
+
if (typeof p === 'string')
|
|
154
|
+
return p;
|
|
155
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
156
|
+
return p.text;
|
|
157
|
+
// This part is important for handling binary/image data which isn't just text
|
|
158
|
+
if (typeof p === 'object' && p && 'inlineData' in p)
|
|
159
|
+
return '';
|
|
160
|
+
return p;
|
|
161
|
+
})
|
|
162
|
+
.join('');
|
|
163
|
+
expect(resultText).toContain('--- Start of content for directory: my-dir ---');
|
|
164
|
+
expect(resultText).toContain('--- file1.txt ---');
|
|
165
|
+
expect(resultText).toContain('content of file 1');
|
|
166
|
+
expect(resultText).toContain('--- file2.md ---');
|
|
167
|
+
expect(resultText).toContain('content of file 2');
|
|
168
|
+
expect(resultText).toContain('--- End of content for directory: my-dir ---');
|
|
169
|
+
});
|
|
170
|
+
it('should recursively expand a directory and read all nested files', async () => {
|
|
171
|
+
mock({
|
|
172
|
+
[CWD]: {
|
|
173
|
+
'my-dir': {
|
|
174
|
+
'file1.txt': 'content of file 1',
|
|
175
|
+
'sub-dir': {
|
|
176
|
+
'nested.txt': 'nested content',
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
const mockFileService = {
|
|
182
|
+
filterFiles: vi.fn((files) => files),
|
|
183
|
+
};
|
|
184
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
185
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
186
|
+
const resultText = result
|
|
187
|
+
.map((p) => {
|
|
188
|
+
if (typeof p === 'string')
|
|
189
|
+
return p;
|
|
190
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
191
|
+
return p.text;
|
|
192
|
+
return '';
|
|
193
|
+
})
|
|
194
|
+
.join('');
|
|
195
|
+
expect(resultText).toContain('content of file 1');
|
|
196
|
+
expect(resultText).toContain('nested content');
|
|
197
|
+
expect(resultText).toContain(`--- ${path.join('sub-dir', 'nested.txt')} ---`);
|
|
198
|
+
});
|
|
199
|
+
it('should handle mixed content and include files from subdirectories', async () => {
|
|
200
|
+
const imageData = Buffer.from([
|
|
201
|
+
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
|
|
202
|
+
]);
|
|
203
|
+
mock({
|
|
204
|
+
[CWD]: {
|
|
205
|
+
'mixed-dir': {
|
|
206
|
+
'info.txt': 'some text',
|
|
207
|
+
'photo.png': imageData,
|
|
208
|
+
'sub-dir': {
|
|
209
|
+
'nested.txt': 'this should be included',
|
|
210
|
+
},
|
|
211
|
+
'empty-sub-dir': {},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
const mockFileService = {
|
|
216
|
+
filterFiles: vi.fn((files) => files),
|
|
217
|
+
};
|
|
218
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
219
|
+
const result = await readPathFromWorkspace('mixed-dir', config);
|
|
220
|
+
// Check for the text part
|
|
221
|
+
const textContent = result
|
|
222
|
+
.map((p) => {
|
|
223
|
+
if (typeof p === 'string')
|
|
224
|
+
return p;
|
|
225
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
226
|
+
return p.text;
|
|
227
|
+
return ''; // Ignore non-text parts for this assertion
|
|
228
|
+
})
|
|
229
|
+
.join('');
|
|
230
|
+
expect(textContent).toContain('some text');
|
|
231
|
+
expect(textContent).toContain('this should be included');
|
|
232
|
+
// Check for the image part
|
|
233
|
+
const imagePart = result.find((p) => typeof p === 'object' && 'inlineData' in p);
|
|
234
|
+
expect(imagePart).toEqual({
|
|
235
|
+
inlineData: {
|
|
236
|
+
mimeType: 'image/png',
|
|
237
|
+
data: imageData.toString('base64'),
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
it('should handle an empty directory', async () => {
|
|
242
|
+
mock({
|
|
243
|
+
[CWD]: {
|
|
244
|
+
'empty-dir': {},
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
const mockFileService = {
|
|
248
|
+
filterFiles: vi.fn((files) => files),
|
|
249
|
+
};
|
|
250
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
251
|
+
const result = await readPathFromWorkspace('empty-dir', config);
|
|
252
|
+
expect(result).toEqual([
|
|
253
|
+
{ text: '--- Start of content for directory: empty-dir ---\n' },
|
|
254
|
+
{ text: '--- End of content for directory: empty-dir ---' },
|
|
255
|
+
]);
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
describe('File Ignoring', () => {
|
|
259
|
+
it('should return an empty array for an ignored file', async () => {
|
|
260
|
+
mock({
|
|
261
|
+
[CWD]: {
|
|
262
|
+
'ignored.txt': 'ignored content',
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
const mockFileService = {
|
|
266
|
+
filterFiles: vi.fn(() => []), // Simulate the file being filtered out
|
|
267
|
+
};
|
|
268
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
269
|
+
const result = await readPathFromWorkspace('ignored.txt', config);
|
|
270
|
+
expect(result).toEqual([]);
|
|
271
|
+
expect(mockFileService.filterFiles).toHaveBeenCalledWith(['ignored.txt'], {
|
|
272
|
+
respectGitIgnore: true,
|
|
273
|
+
respectGeminiIgnore: true,
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
it('should not read ignored files when expanding a directory', async () => {
|
|
277
|
+
mock({
|
|
278
|
+
[CWD]: {
|
|
279
|
+
'my-dir': {
|
|
280
|
+
'not-ignored.txt': 'visible',
|
|
281
|
+
'ignored.log': 'invisible',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
const mockFileService = {
|
|
286
|
+
filterFiles: vi.fn((files) => files.filter((f) => !f.endsWith('ignored.log'))),
|
|
287
|
+
};
|
|
288
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
289
|
+
const result = await readPathFromWorkspace('my-dir', config);
|
|
290
|
+
const resultText = result
|
|
291
|
+
.map((p) => {
|
|
292
|
+
if (typeof p === 'string')
|
|
293
|
+
return p;
|
|
294
|
+
if (typeof p === 'object' && p && 'text' in p)
|
|
295
|
+
return p.text;
|
|
296
|
+
return '';
|
|
297
|
+
})
|
|
298
|
+
.join('');
|
|
299
|
+
expect(resultText).toContain('visible');
|
|
300
|
+
expect(resultText).not.toContain('invisible');
|
|
301
|
+
expect(mockFileService.filterFiles).toHaveBeenCalled();
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
it('should throw an error for an absolute path outside the workspace', async () => {
|
|
305
|
+
const absPath = path.join(OUTSIDE_DIR, 'secret.txt');
|
|
306
|
+
mock({
|
|
307
|
+
[CWD]: {},
|
|
308
|
+
[OUTSIDE_DIR]: {
|
|
309
|
+
'secret.txt': 'secrets',
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
// OUTSIDE_DIR is not added to the config's workspace
|
|
313
|
+
const config = createMockConfig(CWD);
|
|
314
|
+
await expect(readPathFromWorkspace(absPath, config)).rejects.toThrow(`Absolute path is outside of the allowed workspace: ${absPath}`);
|
|
315
|
+
});
|
|
316
|
+
it('should throw an error if a relative path is not found anywhere', async () => {
|
|
317
|
+
mock({
|
|
318
|
+
[CWD]: {},
|
|
319
|
+
[OTHER_DIR]: {},
|
|
320
|
+
});
|
|
321
|
+
const config = createMockConfig(CWD, [OTHER_DIR]);
|
|
322
|
+
await expect(readPathFromWorkspace('not-found.txt', config)).rejects.toThrow('Path not found in workspace: not-found.txt');
|
|
323
|
+
});
|
|
324
|
+
// mock-fs permission simulation is unreliable on Windows.
|
|
325
|
+
it.skipIf(process.platform === 'win32')('should return an error string if reading a file with no permissions', async () => {
|
|
326
|
+
mock({
|
|
327
|
+
[CWD]: {
|
|
328
|
+
'unreadable.txt': mock.file({
|
|
329
|
+
content: 'you cannot read me',
|
|
330
|
+
mode: 0o222, // Write-only
|
|
331
|
+
}),
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
const mockFileService = {
|
|
335
|
+
filterFiles: vi.fn((files) => files),
|
|
336
|
+
};
|
|
337
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
338
|
+
// processSingleFileContent catches the error and returns an error string.
|
|
339
|
+
const result = await readPathFromWorkspace('unreadable.txt', config);
|
|
340
|
+
const textResult = result[0];
|
|
341
|
+
// processSingleFileContent formats errors using the relative path from the target dir (CWD).
|
|
342
|
+
expect(textResult).toContain('Error reading file unreadable.txt');
|
|
343
|
+
expect(textResult).toMatch(/(EACCES|permission denied)/i);
|
|
344
|
+
});
|
|
345
|
+
it('should return an error string for files exceeding the size limit', async () => {
|
|
346
|
+
// Mock a file slightly larger than the 20MB limit defined in fileUtils.ts
|
|
347
|
+
const largeContent = 'a'.repeat(21 * 1024 * 1024); // 21MB
|
|
348
|
+
mock({
|
|
349
|
+
[CWD]: {
|
|
350
|
+
'large.txt': largeContent,
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
const mockFileService = {
|
|
354
|
+
filterFiles: vi.fn((files) => files),
|
|
355
|
+
};
|
|
356
|
+
const config = createMockConfig(CWD, [], mockFileService);
|
|
357
|
+
const result = await readPathFromWorkspace('large.txt', config);
|
|
358
|
+
const textResult = result[0];
|
|
359
|
+
// The error message comes directly from processSingleFileContent
|
|
360
|
+
expect(textResult).toBe('File size exceeds the 20MB limit.');
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
//# sourceMappingURL=pathReader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathReader.test.js","sourceRoot":"","sources":["../../../src/utils/pathReader.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
|
-
export declare const
|
|
6
|
+
export declare const CELL_DIR = ".cell-cli";
|
|
7
7
|
export declare const GOOGLE_ACCOUNTS_FILENAME = "google_accounts.json";
|
|
8
8
|
/**
|
|
9
9
|
* Special characters that need to be escaped in file paths for shell compatibility.
|
|
@@ -49,23 +49,6 @@ export declare function unescapePath(filePath: string): string;
|
|
|
49
49
|
* @returns A SHA256 hash of the project root path.
|
|
50
50
|
*/
|
|
51
51
|
export declare function getProjectHash(projectRoot: string): string;
|
|
52
|
-
/**
|
|
53
|
-
* Generates a unique temporary directory path for a project.
|
|
54
|
-
* @param projectRoot The absolute path to the project's root directory.
|
|
55
|
-
* @returns The path to the project's temporary directory.
|
|
56
|
-
*/
|
|
57
|
-
export declare function getProjectTempDir(projectRoot: string): string;
|
|
58
|
-
/**
|
|
59
|
-
* Returns the absolute path to the user-level commands directory.
|
|
60
|
-
* @returns The path to the user's commands directory.
|
|
61
|
-
*/
|
|
62
|
-
export declare function getUserCommandsDir(): string;
|
|
63
|
-
/**
|
|
64
|
-
* Returns the absolute path to the project-level commands directory.
|
|
65
|
-
* @param projectRoot The absolute path to the project's root directory.
|
|
66
|
-
* @returns The path to the project's commands directory.
|
|
67
|
-
*/
|
|
68
|
-
export declare function getProjectCommandsDir(projectRoot: string): string;
|
|
69
52
|
/**
|
|
70
53
|
* Checks if a path is a subpath of another path.
|
|
71
54
|
* @param parentPath The parent path.
|
package/dist/src/utils/paths.js
CHANGED
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import path from 'node:path';
|
|
7
|
-
import os from 'os';
|
|
8
|
-
import * as crypto from 'crypto';
|
|
9
|
-
export const
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import * as crypto from 'node:crypto';
|
|
9
|
+
export const CELL_DIR = '.cell-cli';
|
|
10
10
|
export const GOOGLE_ACCOUNTS_FILENAME = 'google_accounts.json';
|
|
11
|
-
const TMP_DIR_NAME = 'tmp';
|
|
12
|
-
const COMMANDS_DIR_NAME = 'commands';
|
|
13
11
|
/**
|
|
14
12
|
* Special characters that need to be escaped in file paths for shell compatibility.
|
|
15
13
|
* Includes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
|
|
@@ -143,30 +141,6 @@ export function unescapePath(filePath) {
|
|
|
143
141
|
export function getProjectHash(projectRoot) {
|
|
144
142
|
return crypto.createHash('sha256').update(projectRoot).digest('hex');
|
|
145
143
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Generates a unique temporary directory path for a project.
|
|
148
|
-
* @param projectRoot The absolute path to the project's root directory.
|
|
149
|
-
* @returns The path to the project's temporary directory.
|
|
150
|
-
*/
|
|
151
|
-
export function getProjectTempDir(projectRoot) {
|
|
152
|
-
const hash = getProjectHash(projectRoot);
|
|
153
|
-
return path.join(os.homedir(), GEMINI_DIR, TMP_DIR_NAME, hash);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Returns the absolute path to the user-level commands directory.
|
|
157
|
-
* @returns The path to the user's commands directory.
|
|
158
|
-
*/
|
|
159
|
-
export function getUserCommandsDir() {
|
|
160
|
-
return path.join(os.homedir(), GEMINI_DIR, COMMANDS_DIR_NAME);
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Returns the absolute path to the project-level commands directory.
|
|
164
|
-
* @param projectRoot The absolute path to the project's root directory.
|
|
165
|
-
* @returns The path to the project's commands directory.
|
|
166
|
-
*/
|
|
167
|
-
export function getProjectCommandsDir(projectRoot) {
|
|
168
|
-
return path.join(projectRoot, GEMINI_DIR, COMMANDS_DIR_NAME);
|
|
169
|
-
}
|
|
170
144
|
/**
|
|
171
145
|
* Checks if a path is a subpath of another path.
|
|
172
146
|
* @param parentPath The parent path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,7 @@ describe('retryWithBackoff', () => {
|
|
|
67
67
|
// 2. IMPORTANT: Attach the rejection expectation to the promise *immediately*.
|
|
68
68
|
// This ensures a 'catch' handler is present before the promise can reject.
|
|
69
69
|
// The result is a new promise that resolves when the assertion is met.
|
|
70
|
+
// eslint-disable-next-line vitest/valid-expect
|
|
70
71
|
const assertionPromise = expect(promise).rejects.toThrow('Simulated error attempt 3');
|
|
71
72
|
// 3. Now, advance the timers. This will trigger the retries and the
|
|
72
73
|
// eventual rejection. The handler attached in step 2 will catch it.
|
|
@@ -99,7 +100,7 @@ describe('retryWithBackoff', () => {
|
|
|
99
100
|
initialDelayMs: 10,
|
|
100
101
|
});
|
|
101
102
|
// Attach the rejection expectation *before* running timers
|
|
102
|
-
const assertionPromise = expect(promise).rejects.toThrow('Too Many Requests');
|
|
103
|
+
const assertionPromise = expect(promise).rejects.toThrow('Too Many Requests'); // eslint-disable-line vitest/valid-expect
|
|
103
104
|
// Run timers to trigger retries and eventual rejection
|
|
104
105
|
await vi.runAllTimersAsync();
|
|
105
106
|
// Await the assertion
|
|
@@ -153,6 +154,7 @@ describe('retryWithBackoff', () => {
|
|
|
153
154
|
// We expect rejections as mockFn fails 5 times
|
|
154
155
|
const promise1 = runRetry();
|
|
155
156
|
// Attach the rejection expectation *before* running timers
|
|
157
|
+
// eslint-disable-next-line vitest/valid-expect
|
|
156
158
|
const assertionPromise1 = expect(promise1).rejects.toThrow();
|
|
157
159
|
await vi.runAllTimersAsync(); // Advance for the delay in the first runRetry
|
|
158
160
|
await assertionPromise1;
|
|
@@ -162,6 +164,7 @@ describe('retryWithBackoff', () => {
|
|
|
162
164
|
mockFn = createFailingFunction(5); // Re-initialize with 5 failures
|
|
163
165
|
const promise2 = runRetry();
|
|
164
166
|
// Attach the rejection expectation *before* running timers
|
|
167
|
+
// eslint-disable-next-line vitest/valid-expect
|
|
165
168
|
const assertionPromise2 = expect(promise2).rejects.toThrow();
|
|
166
169
|
await vi.runAllTimersAsync(); // Advance for the delay in the second runRetry
|
|
167
170
|
await assertionPromise2;
|