@google/gemini-cli-core 0.1.22 → 0.3.0-nightly.20250821.653267a6

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.
Files changed (237) hide show
  1. package/README.md +32 -2
  2. package/dist/src/code_assist/oauth2.d.ts +1 -0
  3. package/dist/src/code_assist/oauth2.js +15 -16
  4. package/dist/src/code_assist/oauth2.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.test.js +53 -3
  6. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  7. package/dist/src/config/config.d.ts +21 -4
  8. package/dist/src/config/config.js +35 -14
  9. package/dist/src/config/config.js.map +1 -1
  10. package/dist/src/config/config.test.js +3 -2
  11. package/dist/src/config/config.test.js.map +1 -1
  12. package/dist/src/config/storage.d.ts +32 -0
  13. package/dist/src/config/storage.js +90 -0
  14. package/dist/src/config/storage.js.map +1 -0
  15. package/dist/src/config/storage.test.js +43 -0
  16. package/dist/src/config/storage.test.js.map +1 -0
  17. package/dist/src/core/client.js +5 -2
  18. package/dist/src/core/client.js.map +1 -1
  19. package/dist/src/core/client.test.js +2 -1
  20. package/dist/src/core/client.test.js.map +1 -1
  21. package/dist/src/core/contentGenerator.js +3 -2
  22. package/dist/src/core/contentGenerator.js.map +1 -1
  23. package/dist/src/core/coreToolScheduler.d.ts +2 -1
  24. package/dist/src/core/coreToolScheduler.js +20 -2
  25. package/dist/src/core/coreToolScheduler.js.map +1 -1
  26. package/dist/src/core/coreToolScheduler.test.js +190 -12
  27. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  28. package/dist/src/core/geminiChat.js +1 -1
  29. package/dist/src/core/geminiChat.js.map +1 -1
  30. package/dist/src/core/logger.d.ts +3 -1
  31. package/dist/src/core/logger.js +4 -3
  32. package/dist/src/core/logger.js.map +1 -1
  33. package/dist/src/core/logger.test.js +17 -16
  34. package/dist/src/core/logger.test.js.map +1 -1
  35. package/dist/src/core/loggingContentGenerator.d.ts +1 -5
  36. package/dist/src/core/loggingContentGenerator.js +4 -6
  37. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  38. package/dist/src/core/nonInteractiveToolExecutor.d.ts +2 -2
  39. package/dist/src/core/nonInteractiveToolExecutor.js +10 -2
  40. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  41. package/dist/src/core/nonInteractiveToolExecutor.test.js +17 -11
  42. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  43. package/dist/src/core/subagent.js +5 -5
  44. package/dist/src/core/subagent.js.map +1 -1
  45. package/dist/src/core/subagent.test.js +3 -3
  46. package/dist/src/core/subagent.test.js.map +1 -1
  47. package/dist/src/generated/git-commit.d.ts +2 -2
  48. package/dist/src/generated/git-commit.js +2 -2
  49. package/dist/src/generated/git-commit.js.map +1 -1
  50. package/dist/src/ide/ide-client.d.ts +5 -1
  51. package/dist/src/ide/ide-client.js +48 -8
  52. package/dist/src/ide/ide-client.js.map +1 -1
  53. package/dist/src/ide/ide-installer.js +17 -4
  54. package/dist/src/ide/ide-installer.js.map +1 -1
  55. package/dist/src/ide/ide-installer.test.js +6 -4
  56. package/dist/src/ide/ide-installer.test.js.map +1 -1
  57. package/dist/src/ide/ideContext.d.ts +5 -5
  58. package/dist/src/ide/process-utils.d.ts +10 -5
  59. package/dist/src/ide/process-utils.js +113 -30
  60. package/dist/src/ide/process-utils.js.map +1 -1
  61. package/dist/src/index.d.ts +4 -0
  62. package/dist/src/index.js +4 -0
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/mcp/oauth-token-storage.d.ts +0 -2
  65. package/dist/src/mcp/oauth-token-storage.js +2 -5
  66. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  67. package/dist/src/mcp/oauth-token-storage.test.js +1 -0
  68. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  69. package/dist/src/services/chatRecordingService.d.ts +150 -0
  70. package/dist/src/services/chatRecordingService.js +318 -0
  71. package/dist/src/services/chatRecordingService.js.map +1 -0
  72. package/dist/src/services/chatRecordingService.test.js +290 -0
  73. package/dist/src/services/chatRecordingService.test.js.map +1 -0
  74. package/dist/src/services/fileSystemService.d.ts +31 -0
  75. package/dist/src/services/fileSystemService.js +18 -0
  76. package/dist/src/services/fileSystemService.js.map +1 -0
  77. package/dist/src/services/fileSystemService.test.d.ts +6 -0
  78. package/dist/src/services/fileSystemService.test.js +41 -0
  79. package/dist/src/services/fileSystemService.test.js.map +1 -0
  80. package/dist/src/services/gitService.d.ts +3 -1
  81. package/dist/src/services/gitService.js +4 -5
  82. package/dist/src/services/gitService.js.map +1 -1
  83. package/dist/src/services/gitService.test.js +17 -14
  84. package/dist/src/services/gitService.test.js.map +1 -1
  85. package/dist/src/services/shellExecutionService.d.ts +8 -10
  86. package/dist/src/services/shellExecutionService.js +289 -133
  87. package/dist/src/services/shellExecutionService.js.map +1 -1
  88. package/dist/src/services/shellExecutionService.test.js +275 -41
  89. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  90. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +12 -3
  91. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +73 -103
  92. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  93. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +79 -13
  94. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  95. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  96. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +8 -0
  97. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  98. package/dist/src/telemetry/loggers.js +5 -2
  99. package/dist/src/telemetry/loggers.js.map +1 -1
  100. package/dist/src/telemetry/loggers.test.js +14 -5
  101. package/dist/src/telemetry/loggers.test.js.map +1 -1
  102. package/dist/src/telemetry/metrics.d.ts +1 -1
  103. package/dist/src/telemetry/metrics.js +2 -1
  104. package/dist/src/telemetry/metrics.js.map +1 -1
  105. package/dist/src/telemetry/sdk.js +3 -3
  106. package/dist/src/telemetry/sdk.js.map +1 -1
  107. package/dist/src/telemetry/types.d.ts +6 -1
  108. package/dist/src/telemetry/types.js +22 -1
  109. package/dist/src/telemetry/types.js.map +1 -1
  110. package/dist/src/telemetry/uiTelemetry.d.ts +4 -0
  111. package/dist/src/telemetry/uiTelemetry.js +14 -1
  112. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  113. package/dist/src/telemetry/uiTelemetry.test.js +45 -9
  114. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  115. package/dist/src/test-utils/tools.d.ts +8 -2
  116. package/dist/src/test-utils/tools.js +2 -3
  117. package/dist/src/test-utils/tools.js.map +1 -1
  118. package/dist/src/tools/edit.d.ts +1 -1
  119. package/dist/src/tools/edit.js +15 -9
  120. package/dist/src/tools/edit.js.map +1 -1
  121. package/dist/src/tools/edit.test.js +11 -1
  122. package/dist/src/tools/edit.test.js.map +1 -1
  123. package/dist/src/tools/glob.d.ts +1 -1
  124. package/dist/src/tools/glob.js +8 -8
  125. package/dist/src/tools/glob.js.map +1 -1
  126. package/dist/src/tools/glob.test.js +20 -0
  127. package/dist/src/tools/glob.test.js.map +1 -1
  128. package/dist/src/tools/grep.d.ts +1 -1
  129. package/dist/src/tools/grep.js +1 -6
  130. package/dist/src/tools/grep.js.map +1 -1
  131. package/dist/src/tools/ls.d.ts +1 -1
  132. package/dist/src/tools/ls.js +1 -6
  133. package/dist/src/tools/ls.js.map +1 -1
  134. package/dist/src/tools/ls.test.js +1 -0
  135. package/dist/src/tools/ls.test.js.map +1 -1
  136. package/dist/src/tools/mcp-client-manager.d.ts +38 -0
  137. package/dist/src/tools/mcp-client-manager.js +74 -0
  138. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  139. package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  140. package/dist/src/tools/mcp-client-manager.test.js +39 -0
  141. package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
  142. package/dist/src/tools/mcp-client.d.ts +43 -0
  143. package/dist/src/tools/mcp-client.js +117 -1
  144. package/dist/src/tools/mcp-client.js.map +1 -1
  145. package/dist/src/tools/mcp-client.test.js +58 -302
  146. package/dist/src/tools/mcp-client.test.js.map +1 -1
  147. package/dist/src/tools/mcp-tool.js +2 -1
  148. package/dist/src/tools/mcp-tool.js.map +1 -1
  149. package/dist/src/tools/mcp-tool.test.js +25 -17
  150. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  151. package/dist/src/tools/memoryTool.d.ts +1 -1
  152. package/dist/src/tools/memoryTool.js +3 -8
  153. package/dist/src/tools/memoryTool.js.map +1 -1
  154. package/dist/src/tools/memoryTool.test.js +11 -1
  155. package/dist/src/tools/memoryTool.test.js.map +1 -1
  156. package/dist/src/tools/read-file.d.ts +1 -1
  157. package/dist/src/tools/read-file.js +7 -37
  158. package/dist/src/tools/read-file.js.map +1 -1
  159. package/dist/src/tools/read-file.test.js +9 -1
  160. package/dist/src/tools/read-file.test.js.map +1 -1
  161. package/dist/src/tools/read-many-files.d.ts +0 -1
  162. package/dist/src/tools/read-many-files.js +16 -11
  163. package/dist/src/tools/read-many-files.js.map +1 -1
  164. package/dist/src/tools/read-many-files.test.js +34 -0
  165. package/dist/src/tools/read-many-files.test.js.map +1 -1
  166. package/dist/src/tools/shell.d.ts +1 -1
  167. package/dist/src/tools/shell.js +10 -24
  168. package/dist/src/tools/shell.js.map +1 -1
  169. package/dist/src/tools/shell.test.js +11 -19
  170. package/dist/src/tools/shell.test.js.map +1 -1
  171. package/dist/src/tools/tool-registry.d.ts +5 -0
  172. package/dist/src/tools/tool-registry.js +15 -5
  173. package/dist/src/tools/tool-registry.js.map +1 -1
  174. package/dist/src/tools/tool-registry.test.js +18 -21
  175. package/dist/src/tools/tool-registry.test.js.map +1 -1
  176. package/dist/src/tools/tools.d.ts +4 -6
  177. package/dist/src/tools/tools.js +12 -0
  178. package/dist/src/tools/tools.js.map +1 -1
  179. package/dist/src/tools/tools.test.js +0 -1
  180. package/dist/src/tools/tools.test.js.map +1 -1
  181. package/dist/src/tools/web-fetch.d.ts +1 -1
  182. package/dist/src/tools/web-fetch.js +1 -6
  183. package/dist/src/tools/web-fetch.js.map +1 -1
  184. package/dist/src/tools/web-search.d.ts +1 -1
  185. package/dist/src/tools/web-search.js +1 -6
  186. package/dist/src/tools/web-search.js.map +1 -1
  187. package/dist/src/tools/write-file.d.ts +1 -1
  188. package/dist/src/tools/write-file.js +7 -8
  189. package/dist/src/tools/write-file.js.map +1 -1
  190. package/dist/src/tools/write-file.test.js +25 -38
  191. package/dist/src/tools/write-file.test.js.map +1 -1
  192. package/dist/src/utils/editCorrector.test.js +1 -0
  193. package/dist/src/utils/editCorrector.test.js.map +1 -1
  194. package/dist/src/utils/environmentContext.js +2 -2
  195. package/dist/src/utils/environmentContext.js.map +1 -1
  196. package/dist/src/utils/environmentContext.test.js +3 -2
  197. package/dist/src/utils/environmentContext.test.js.map +1 -1
  198. package/dist/src/utils/fileUtils.d.ts +4 -8
  199. package/dist/src/utils/fileUtils.js +17 -20
  200. package/dist/src/utils/fileUtils.js.map +1 -1
  201. package/dist/src/utils/fileUtils.test.js +18 -17
  202. package/dist/src/utils/fileUtils.test.js.map +1 -1
  203. package/dist/src/utils/filesearch/fileSearch.js +2 -1
  204. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  205. package/dist/src/utils/filesearch/fileSearch.test.js +22 -0
  206. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  207. package/dist/src/utils/getPty.d.ts +19 -0
  208. package/dist/src/utils/getPty.js +23 -0
  209. package/dist/src/utils/getPty.js.map +1 -0
  210. package/dist/src/utils/installationManager.d.ts +16 -0
  211. package/dist/src/utils/installationManager.js +50 -0
  212. package/dist/src/utils/installationManager.js.map +1 -0
  213. package/dist/src/utils/installationManager.test.d.ts +6 -0
  214. package/dist/src/utils/installationManager.test.js +83 -0
  215. package/dist/src/utils/installationManager.test.js.map +1 -0
  216. package/dist/src/utils/paths.d.ts +0 -17
  217. package/dist/src/utils/paths.js +0 -26
  218. package/dist/src/utils/paths.js.map +1 -1
  219. package/dist/src/utils/userAccountManager.d.ts +20 -0
  220. package/dist/src/utils/userAccountManager.js +114 -0
  221. package/dist/src/utils/userAccountManager.js.map +1 -0
  222. package/dist/src/utils/userAccountManager.test.d.ts +6 -0
  223. package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +98 -28
  224. package/dist/src/utils/userAccountManager.test.js.map +1 -0
  225. package/dist/tsconfig.tsbuildinfo +1 -1
  226. package/package.json +20 -10
  227. package/dist/src/utils/user_account.d.ts +0 -9
  228. package/dist/src/utils/user_account.js +0 -99
  229. package/dist/src/utils/user_account.js.map +0 -1
  230. package/dist/src/utils/user_account.test.js.map +0 -1
  231. package/dist/src/utils/user_id.d.ts +0 -11
  232. package/dist/src/utils/user_id.js +0 -49
  233. package/dist/src/utils/user_id.js.map +0 -1
  234. package/dist/src/utils/user_id.test.js +0 -21
  235. package/dist/src/utils/user_id.test.js.map +0 -1
  236. /package/dist/src/{utils/user_account.test.d.ts → config/storage.test.d.ts} +0 -0
  237. /package/dist/src/{utils/user_id.test.d.ts → services/chatRecordingService.test.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import fs from 'fs/promises';
7
+ /**
8
+ * Standard file system implementation
9
+ */
10
+ export class StandardFileSystemService {
11
+ async readTextFile(filePath) {
12
+ return fs.readFile(filePath, 'utf-8');
13
+ }
14
+ async writeTextFile(filePath, content) {
15
+ await fs.writeFile(filePath, content, 'utf-8');
16
+ }
17
+ }
18
+ //# sourceMappingURL=fileSystemService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSystemService.js","sourceRoot":"","sources":["../../../src/services/fileSystemService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAuB7B;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,OAAe;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import fs from 'fs/promises';
8
+ import { StandardFileSystemService } from './fileSystemService.js';
9
+ vi.mock('fs/promises');
10
+ describe('StandardFileSystemService', () => {
11
+ let fileSystem;
12
+ beforeEach(() => {
13
+ vi.resetAllMocks();
14
+ fileSystem = new StandardFileSystemService();
15
+ });
16
+ afterEach(() => {
17
+ vi.restoreAllMocks();
18
+ });
19
+ describe('readTextFile', () => {
20
+ it('should read file content using fs', async () => {
21
+ const testContent = 'Hello, World!';
22
+ vi.mocked(fs.readFile).mockResolvedValue(testContent);
23
+ const result = await fileSystem.readTextFile('/test/file.txt');
24
+ expect(fs.readFile).toHaveBeenCalledWith('/test/file.txt', 'utf-8');
25
+ expect(result).toBe(testContent);
26
+ });
27
+ it('should propagate fs.readFile errors', async () => {
28
+ const error = new Error('ENOENT: File not found');
29
+ vi.mocked(fs.readFile).mockRejectedValue(error);
30
+ await expect(fileSystem.readTextFile('/test/file.txt')).rejects.toThrow('ENOENT: File not found');
31
+ });
32
+ });
33
+ describe('writeTextFile', () => {
34
+ it('should write file content using fs', async () => {
35
+ vi.mocked(fs.writeFile).mockResolvedValue();
36
+ await fileSystem.writeTextFile('/test/file.txt', 'Hello, World!');
37
+ expect(fs.writeFile).toHaveBeenCalledWith('/test/file.txt', 'Hello, World!', 'utf-8');
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=fileSystemService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSystemService.test.js","sourceRoot":"","sources":["../../../src/services/fileSystemService.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEvB,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,UAAqC,CAAC;IAE1C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,WAAW,GAAG,eAAe,CAAC;YACpC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAEtD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAE/D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEhD,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACrE,wBAAwB,CACzB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,CAAC;YAE5C,MAAM,UAAU,CAAC,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAElE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACvC,gBAAgB,EAChB,eAAe,EACf,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -3,9 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Storage } from '../config/storage.js';
6
7
  export declare class GitService {
7
8
  private projectRoot;
8
- constructor(projectRoot: string);
9
+ private storage;
10
+ constructor(projectRoot: string, storage: Storage);
9
11
  private getHistoryDir;
10
12
  initialize(): Promise<void>;
11
13
  verifyGitAvailability(): Promise<boolean>;
@@ -5,19 +5,18 @@
5
5
  */
6
6
  import * as fs from 'fs/promises';
7
7
  import * as path from 'path';
8
- import * as os from 'os';
9
8
  import { isNodeError } from '../utils/errors.js';
10
9
  import { exec } from 'node:child_process';
11
10
  import { simpleGit, CheckRepoActions } from 'simple-git';
12
- import { getProjectHash, GEMINI_DIR } from '../utils/paths.js';
13
11
  export class GitService {
14
12
  projectRoot;
15
- constructor(projectRoot) {
13
+ storage;
14
+ constructor(projectRoot, storage) {
16
15
  this.projectRoot = path.resolve(projectRoot);
16
+ this.storage = storage;
17
17
  }
18
18
  getHistoryDir() {
19
- const hash = getProjectHash(this.projectRoot);
20
- return path.join(os.homedir(), GEMINI_DIR, 'history', hash);
19
+ return this.storage.getHistoryDir();
21
20
  }
22
21
  async initialize() {
23
22
  const gitAvailable = await this.verifyGitAvailability();
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../../src/services/gitService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../../src/services/gitService.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
7
  import { GitService } from './gitService.js';
8
+ import { Storage } from '../config/storage.js';
8
9
  import * as path from 'path';
9
10
  import * as fs from 'fs/promises';
10
11
  import * as os from 'os';
@@ -48,6 +49,7 @@ describe('GitService', () => {
48
49
  let projectRoot;
49
50
  let homedir;
50
51
  let hash;
52
+ let storage;
51
53
  beforeEach(async () => {
52
54
  testRootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'git-service-test-'));
53
55
  projectRoot = path.join(testRootDir, 'project');
@@ -89,6 +91,7 @@ describe('GitService', () => {
89
91
  hoistedMockCommit.mockResolvedValue({
90
92
  commit: 'initial',
91
93
  });
94
+ storage = new Storage(projectRoot);
92
95
  });
93
96
  afterEach(async () => {
94
97
  vi.restoreAllMocks();
@@ -96,12 +99,12 @@ describe('GitService', () => {
96
99
  });
97
100
  describe('constructor', () => {
98
101
  it('should successfully create an instance', () => {
99
- expect(() => new GitService(projectRoot)).not.toThrow();
102
+ expect(() => new GitService(projectRoot, storage)).not.toThrow();
100
103
  });
101
104
  });
102
105
  describe('verifyGitAvailability', () => {
103
106
  it('should resolve true if git --version command succeeds', async () => {
104
- const service = new GitService(projectRoot);
107
+ const service = new GitService(projectRoot, storage);
105
108
  await expect(service.verifyGitAvailability()).resolves.toBe(true);
106
109
  });
107
110
  it('should resolve false if git --version command fails', async () => {
@@ -109,7 +112,7 @@ describe('GitService', () => {
109
112
  callback(new Error('git not found'));
110
113
  return {};
111
114
  });
112
- const service = new GitService(projectRoot);
115
+ const service = new GitService(projectRoot, storage);
113
116
  await expect(service.verifyGitAvailability()).resolves.toBe(false);
114
117
  });
115
118
  });
@@ -119,11 +122,11 @@ describe('GitService', () => {
119
122
  callback(new Error('git not found'));
120
123
  return {};
121
124
  });
122
- const service = new GitService(projectRoot);
125
+ const service = new GitService(projectRoot, storage);
123
126
  await expect(service.initialize()).rejects.toThrow('Checkpointing is enabled, but Git is not installed. Please install Git or disable checkpointing to continue.');
124
127
  });
125
128
  it('should call setupShadowGitRepository if Git is available', async () => {
126
- const service = new GitService(projectRoot);
129
+ const service = new GitService(projectRoot, storage);
127
130
  const setupSpy = vi
128
131
  .spyOn(service, 'setupShadowGitRepository')
129
132
  .mockResolvedValue(undefined);
@@ -139,13 +142,13 @@ describe('GitService', () => {
139
142
  gitConfigPath = path.join(repoDir, '.gitconfig');
140
143
  });
141
144
  it('should create history and repository directories', async () => {
142
- const service = new GitService(projectRoot);
145
+ const service = new GitService(projectRoot, storage);
143
146
  await service.setupShadowGitRepository();
144
147
  const stats = await fs.stat(repoDir);
145
148
  expect(stats.isDirectory()).toBe(true);
146
149
  });
147
150
  it('should create a .gitconfig file with the correct content', async () => {
148
- const service = new GitService(projectRoot);
151
+ const service = new GitService(projectRoot, storage);
149
152
  await service.setupShadowGitRepository();
150
153
  const expectedConfigContent = '[user]\n name = Gemini CLI\n email = gemini-cli@google.com\n[commit]\n gpgsign = false\n';
151
154
  const actualConfigContent = await fs.readFile(gitConfigPath, 'utf-8');
@@ -153,14 +156,14 @@ describe('GitService', () => {
153
156
  });
154
157
  it('should initialize git repo in historyDir if not already initialized', async () => {
155
158
  hoistedMockCheckIsRepo.mockResolvedValue(false);
156
- const service = new GitService(projectRoot);
159
+ const service = new GitService(projectRoot, storage);
157
160
  await service.setupShadowGitRepository();
158
161
  expect(hoistedMockSimpleGit).toHaveBeenCalledWith(repoDir);
159
162
  expect(hoistedMockInit).toHaveBeenCalled();
160
163
  });
161
164
  it('should not initialize git repo if already initialized', async () => {
162
165
  hoistedMockCheckIsRepo.mockResolvedValue(true);
163
- const service = new GitService(projectRoot);
166
+ const service = new GitService(projectRoot, storage);
164
167
  await service.setupShadowGitRepository();
165
168
  expect(hoistedMockInit).not.toHaveBeenCalled();
166
169
  });
@@ -168,14 +171,14 @@ describe('GitService', () => {
168
171
  const gitignoreContent = 'node_modules/\n.env';
169
172
  const visibleGitIgnorePath = path.join(projectRoot, '.gitignore');
170
173
  await fs.writeFile(visibleGitIgnorePath, gitignoreContent);
171
- const service = new GitService(projectRoot);
174
+ const service = new GitService(projectRoot, storage);
172
175
  await service.setupShadowGitRepository();
173
176
  const hiddenGitIgnorePath = path.join(repoDir, '.gitignore');
174
177
  const copiedContent = await fs.readFile(hiddenGitIgnorePath, 'utf-8');
175
178
  expect(copiedContent).toBe(gitignoreContent);
176
179
  });
177
180
  it('should not create a .gitignore in shadow repo if project .gitignore does not exist', async () => {
178
- const service = new GitService(projectRoot);
181
+ const service = new GitService(projectRoot, storage);
179
182
  await service.setupShadowGitRepository();
180
183
  const hiddenGitIgnorePath = path.join(repoDir, '.gitignore');
181
184
  // An empty string is written if the file doesn't exist.
@@ -186,13 +189,13 @@ describe('GitService', () => {
186
189
  const visibleGitIgnorePath = path.join(projectRoot, '.gitignore');
187
190
  // Create a directory instead of a file to cause a read error
188
191
  await fs.mkdir(visibleGitIgnorePath);
189
- const service = new GitService(projectRoot);
192
+ const service = new GitService(projectRoot, storage);
190
193
  // EISDIR is the expected error code on Unix-like systems
191
194
  await expect(service.setupShadowGitRepository()).rejects.toThrow(/EISDIR: illegal operation on a directory, read|EBUSY: resource busy or locked, read/);
192
195
  });
193
196
  it('should make an initial commit if no commits exist in history repo', async () => {
194
197
  hoistedMockCheckIsRepo.mockResolvedValue(false);
195
- const service = new GitService(projectRoot);
198
+ const service = new GitService(projectRoot, storage);
196
199
  await service.setupShadowGitRepository();
197
200
  expect(hoistedMockCommit).toHaveBeenCalledWith('Initial commit', {
198
201
  '--allow-empty': null,
@@ -200,7 +203,7 @@ describe('GitService', () => {
200
203
  });
201
204
  it('should not make an initial commit if commits already exist', async () => {
202
205
  hoistedMockCheckIsRepo.mockResolvedValue(true);
203
- const service = new GitService(projectRoot);
206
+ const service = new GitService(projectRoot, storage);
204
207
  await service.setupShadowGitRepository();
205
208
  expect(hoistedMockCommit).not.toHaveBeenCalled();
206
209
  });
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../../src/services/gitService.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../../src/services/gitService.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAClD,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE,eAAe;CACtB,CAAC,CAAC,CAAC;AAEJ,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,oBAAoB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,MAAM,sBAAsB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,SAAS,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,cAAc;QACnB,GAAG,EAAE,cAAc;QACnB,MAAM,EAAE,iBAAiB;QACzB,GAAG,EAAE,cAAc;KACpB,CAAC,CAAC;IACH,gBAAgB,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;CACnD,CAAC,CAAC,CAAC;AAEJ,MAAM,0BAA0B,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7D,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,eAAe,EAAE,0BAA0B;CAC5C,CAAC,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,cAAc,EAAa,CAAC;IACjD,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,kBAAkB;KAC5B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAmB,CAAC;IACxB,IAAI,OAAe,CAAC;IACpB,IAAI,IAAY,CAAC;IACjB,IAAI,OAAgB,CAAC;IAErB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC5E,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAEnC,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YACvD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,eAAe;YACrB,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,cAAc;YACnB,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC,CAAC;QACJ,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,eAAe;YACrB,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,cAAc;YACnB,MAAM,EAAE,iBAAiB;YACzB,GAAG,EAAE,cAAc;SACpB,CAAC,CAAC,CAAC;QACJ,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7C,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACrC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC5C,iBAAiB,CAAC,iBAAiB,CAAC;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACvD,QAAQ,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBACrC,OAAO,EAAkB,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACvD,QAAQ,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBACrC,OAAO,EAAkB,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAChD,8GAA8G,CAC/G,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,EAAE;iBAChB,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC;iBAC1C,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEhC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,OAAe,CAAC;QACpB,IAAI,aAAqB,CAAC;QAE1B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1D,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YAEzC,MAAM,qBAAqB,GACzB,6FAA6F,CAAC;YAChG,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;YAC/C,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YAEzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;YAClG,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YAEzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7D,wDAAwD;YACxD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC/F,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAClE,6DAA6D;YAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAErC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,yDAAyD;YACzD,MAAM,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9D,qFAAqF,CACtF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE;gBAC/D,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -7,22 +7,20 @@
7
7
  export interface ShellExecutionResult {
8
8
  /** The raw, unprocessed output buffer. */
9
9
  rawOutput: Buffer;
10
- /** The combined, decoded stdout and stderr as a string. */
10
+ /** The combined, decoded output as a string. */
11
11
  output: string;
12
- /** The decoded stdout as a string. */
13
- stdout: string;
14
- /** The decoded stderr as a string. */
15
- stderr: string;
16
12
  /** The process exit code, or null if terminated by a signal. */
17
13
  exitCode: number | null;
18
14
  /** The signal that terminated the process, if any. */
19
- signal: NodeJS.Signals | null;
15
+ signal: number | null;
20
16
  /** An error object if the process failed to spawn. */
21
17
  error: Error | null;
22
18
  /** A boolean indicating if the command was aborted by the user. */
23
19
  aborted: boolean;
24
20
  /** The process ID of the spawned shell. */
25
21
  pid: number | undefined;
22
+ /** The method used to execute the shell command. */
23
+ executionMethod: 'lydell-node-pty' | 'node-pty' | 'child_process' | 'none';
26
24
  }
27
25
  /** A handle for an ongoing shell execution. */
28
26
  export interface ShellExecutionHandle {
@@ -37,8 +35,6 @@ export interface ShellExecutionHandle {
37
35
  export type ShellOutputEvent = {
38
36
  /** The event contains a chunk of output data. */
39
37
  type: 'data';
40
- /** The stream from which the data originated. */
41
- stream: 'stdout' | 'stderr';
42
38
  /** The decoded string chunk. */
43
39
  chunk: string;
44
40
  } | {
@@ -57,7 +53,7 @@ export type ShellOutputEvent = {
57
53
  */
58
54
  export declare class ShellExecutionService {
59
55
  /**
60
- * Executes a shell command using `spawn`, capturing all output and lifecycle events.
56
+ * Executes a shell command using `node-pty`, capturing all output and lifecycle events.
61
57
  *
62
58
  * @param commandToExecute The exact command string to run.
63
59
  * @param cwd The working directory to execute the command in.
@@ -66,5 +62,7 @@ export declare class ShellExecutionService {
66
62
  * @returns An object containing the process ID (pid) and a promise that
67
63
  * resolves with the complete execution result.
68
64
  */
69
- static execute(commandToExecute: string, cwd: string, onOutputEvent: (event: ShellOutputEvent) => void, abortSignal: AbortSignal): ShellExecutionHandle;
65
+ static execute(commandToExecute: string, cwd: string, onOutputEvent: (event: ShellOutputEvent) => void, abortSignal: AbortSignal, shouldUseNodePty: boolean, terminalColumns?: number, terminalRows?: number): Promise<ShellExecutionHandle>;
66
+ private static childProcessFallback;
67
+ private static executeWithPty;
70
68
  }