@google/gemini-cli-core 0.1.16 → 0.1.17-nightly.250808.60362e03

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 (216) hide show
  1. package/README.md +11 -1
  2. package/dist/google-gemini-cli-core-0.1.17.tgz +0 -0
  3. package/dist/src/config/config.d.ts +24 -4
  4. package/dist/src/config/config.js +71 -12
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/config.test.js +68 -2
  7. package/dist/src/config/config.test.js.map +1 -1
  8. package/dist/src/config/flashFallback.test.js +0 -4
  9. package/dist/src/config/flashFallback.test.js.map +1 -1
  10. package/dist/src/core/client.d.ts +0 -2
  11. package/dist/src/core/client.js +9 -84
  12. package/dist/src/core/client.js.map +1 -1
  13. package/dist/src/core/client.test.js +7 -2
  14. package/dist/src/core/client.test.js.map +1 -1
  15. package/dist/src/core/coreToolScheduler.d.ts +18 -7
  16. package/dist/src/core/coreToolScheduler.js +81 -17
  17. package/dist/src/core/coreToolScheduler.js.map +1 -1
  18. package/dist/src/core/coreToolScheduler.test.js +29 -37
  19. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  20. package/dist/src/core/geminiChat.d.ts +6 -0
  21. package/dist/src/core/geminiChat.js +42 -4
  22. package/dist/src/core/geminiChat.js.map +1 -1
  23. package/dist/src/core/nonInteractiveToolExecutor.js +3 -1
  24. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  25. package/dist/src/core/nonInteractiveToolExecutor.test.js +7 -31
  26. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  27. package/dist/src/core/subagent.d.ts +230 -0
  28. package/dist/src/core/subagent.js +447 -0
  29. package/dist/src/core/subagent.js.map +1 -0
  30. package/dist/src/core/subagent.test.d.ts +6 -0
  31. package/dist/src/core/subagent.test.js +515 -0
  32. package/dist/src/core/subagent.test.js.map +1 -0
  33. package/dist/src/core/turn.js +1 -0
  34. package/dist/src/core/turn.js.map +1 -1
  35. package/dist/src/core/turn.test.js +4 -0
  36. package/dist/src/core/turn.test.js.map +1 -1
  37. package/dist/src/ide/detect-ide.js +6 -3
  38. package/dist/src/ide/detect-ide.js.map +1 -1
  39. package/dist/src/ide/ide-client.d.ts +27 -11
  40. package/dist/src/ide/ide-client.js +163 -61
  41. package/dist/src/ide/ide-client.js.map +1 -1
  42. package/dist/src/ide/ide-installer.d.ts +0 -1
  43. package/dist/src/ide/ide-installer.js +5 -7
  44. package/dist/src/ide/ide-installer.js.map +1 -1
  45. package/dist/src/ide/ide-installer.test.js +1 -24
  46. package/dist/src/ide/ide-installer.test.js.map +1 -1
  47. package/dist/src/ide/ideContext.d.ts +127 -32
  48. package/dist/src/ide/ideContext.js +45 -0
  49. package/dist/src/ide/ideContext.js.map +1 -1
  50. package/dist/src/index.d.ts +1 -0
  51. package/dist/src/index.js +1 -0
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/mcp/oauth-provider.d.ts +1 -0
  54. package/dist/src/mcp/oauth-provider.js +14 -1
  55. package/dist/src/mcp/oauth-provider.js.map +1 -1
  56. package/dist/src/mcp/oauth-provider.test.js +87 -6
  57. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  58. package/dist/src/prompts/prompt-registry.d.ts +8 -0
  59. package/dist/src/prompts/prompt-registry.js +16 -0
  60. package/dist/src/prompts/prompt-registry.js.map +1 -1
  61. package/dist/src/services/shellExecutionService.js +29 -9
  62. package/dist/src/services/shellExecutionService.js.map +1 -1
  63. package/dist/src/services/shellExecutionService.test.js +8 -0
  64. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  65. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  66. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +32 -1
  67. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  68. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
  69. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -0
  70. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  71. package/dist/src/telemetry/constants.d.ts +1 -0
  72. package/dist/src/telemetry/constants.js +1 -0
  73. package/dist/src/telemetry/constants.js.map +1 -1
  74. package/dist/src/telemetry/loggers.d.ts +2 -1
  75. package/dist/src/telemetry/loggers.js +17 -1
  76. package/dist/src/telemetry/loggers.js.map +1 -1
  77. package/dist/src/telemetry/loggers.test.circular.js +7 -2
  78. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  79. package/dist/src/telemetry/loggers.test.js +5 -1
  80. package/dist/src/telemetry/loggers.test.js.map +1 -1
  81. package/dist/src/telemetry/metrics.d.ts +1 -1
  82. package/dist/src/telemetry/metrics.js.map +1 -1
  83. package/dist/src/telemetry/telemetry.test.js +0 -2
  84. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  85. package/dist/src/telemetry/types.d.ts +13 -2
  86. package/dist/src/telemetry/types.js +18 -1
  87. package/dist/src/telemetry/types.js.map +1 -1
  88. package/dist/src/telemetry/uiTelemetry.d.ts +2 -0
  89. package/dist/src/telemetry/uiTelemetry.js +2 -0
  90. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  91. package/dist/src/telemetry/uiTelemetry.test.js +11 -1
  92. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  93. package/dist/src/test-utils/tools.d.ts +23 -0
  94. package/dist/src/test-utils/tools.js +41 -0
  95. package/dist/src/test-utils/tools.js.map +1 -0
  96. package/dist/src/tools/edit.d.ts +5 -33
  97. package/dist/src/tools/edit.js +129 -124
  98. package/dist/src/tools/edit.js.map +1 -1
  99. package/dist/src/tools/edit.test.js +117 -51
  100. package/dist/src/tools/edit.test.js.map +1 -1
  101. package/dist/src/tools/glob.d.ts +3 -10
  102. package/dist/src/tools/glob.js +85 -88
  103. package/dist/src/tools/glob.js.map +1 -1
  104. package/dist/src/tools/glob.test.js +22 -12
  105. package/dist/src/tools/glob.test.js.map +1 -1
  106. package/dist/src/tools/grep.d.ts +3 -35
  107. package/dist/src/tools/grep.js +111 -82
  108. package/dist/src/tools/grep.js.map +1 -1
  109. package/dist/src/tools/grep.test.js +40 -23
  110. package/dist/src/tools/grep.test.js.map +1 -1
  111. package/dist/src/tools/mcp-client.d.ts +11 -1
  112. package/dist/src/tools/mcp-client.js +91 -17
  113. package/dist/src/tools/mcp-client.js.map +1 -1
  114. package/dist/src/tools/mcp-client.test.js +329 -10
  115. package/dist/src/tools/mcp-client.test.js.map +1 -1
  116. package/dist/src/tools/mcp-tool.js +104 -45
  117. package/dist/src/tools/mcp-tool.js.map +1 -1
  118. package/dist/src/tools/mcp-tool.test.js +280 -2
  119. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  120. package/dist/src/tools/memoryTool.d.ts +2 -2
  121. package/dist/src/tools/memoryTool.js +1 -0
  122. package/dist/src/tools/memoryTool.js.map +1 -1
  123. package/dist/src/tools/modifiable-tool.d.ts +9 -6
  124. package/dist/src/tools/modifiable-tool.js +6 -3
  125. package/dist/src/tools/modifiable-tool.js.map +1 -1
  126. package/dist/src/tools/modifiable-tool.test.js +12 -12
  127. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  128. package/dist/src/tools/read-file.d.ts +4 -6
  129. package/dist/src/tools/read-file.js +55 -39
  130. package/dist/src/tools/read-file.js.map +1 -1
  131. package/dist/src/tools/read-file.test.js +132 -134
  132. package/dist/src/tools/read-file.test.js.map +1 -1
  133. package/dist/src/tools/read-many-files.js +84 -34
  134. package/dist/src/tools/read-many-files.js.map +1 -1
  135. package/dist/src/tools/read-many-files.test.js +107 -0
  136. package/dist/src/tools/read-many-files.test.js.map +1 -1
  137. package/dist/src/tools/tool-registry.d.ts +12 -5
  138. package/dist/src/tools/tool-registry.js +28 -11
  139. package/dist/src/tools/tool-registry.js.map +1 -1
  140. package/dist/src/tools/tool-registry.test.js +7 -22
  141. package/dist/src/tools/tool-registry.test.js.map +1 -1
  142. package/dist/src/tools/tools.d.ts +133 -39
  143. package/dist/src/tools/tools.js +180 -10
  144. package/dist/src/tools/tools.js.map +1 -1
  145. package/dist/src/tools/tools.test.d.ts +6 -0
  146. package/dist/src/tools/tools.test.js +117 -0
  147. package/dist/src/tools/tools.test.js.map +1 -0
  148. package/dist/src/tools/write-file.d.ts +2 -2
  149. package/dist/src/tools/write-file.js +17 -2
  150. package/dist/src/tools/write-file.js.map +1 -1
  151. package/dist/src/tools/write-file.test.js +40 -3
  152. package/dist/src/tools/write-file.test.js.map +1 -1
  153. package/dist/src/utils/bfsFileSearch.test.js +28 -56
  154. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  155. package/dist/src/utils/editor.d.ts +1 -1
  156. package/dist/src/utils/editor.js +13 -5
  157. package/dist/src/utils/editor.js.map +1 -1
  158. package/dist/src/utils/editor.test.js +38 -6
  159. package/dist/src/utils/editor.test.js.map +1 -1
  160. package/dist/src/utils/environmentContext.d.ts +21 -0
  161. package/dist/src/utils/environmentContext.js +90 -0
  162. package/dist/src/utils/environmentContext.js.map +1 -0
  163. package/dist/src/utils/environmentContext.test.d.ts +6 -0
  164. package/dist/src/utils/environmentContext.test.js +139 -0
  165. package/dist/src/utils/environmentContext.test.js.map +1 -0
  166. package/dist/src/utils/fileUtils.js +7 -13
  167. package/dist/src/utils/fileUtils.js.map +1 -1
  168. package/dist/src/utils/fileUtils.test.js +18 -4
  169. package/dist/src/utils/fileUtils.test.js.map +1 -1
  170. package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  171. package/dist/src/utils/filesearch/crawlCache.js +57 -0
  172. package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
  173. package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
  174. package/dist/src/utils/filesearch/crawlCache.test.js +103 -0
  175. package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
  176. package/dist/src/utils/filesearch/fileSearch.d.ts +81 -0
  177. package/dist/src/utils/filesearch/fileSearch.js +241 -0
  178. package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
  179. package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
  180. package/dist/src/utils/filesearch/fileSearch.test.js +654 -0
  181. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
  182. package/dist/src/utils/filesearch/ignore.d.ts +35 -0
  183. package/dist/src/utils/filesearch/ignore.js +81 -0
  184. package/dist/src/utils/filesearch/ignore.js.map +1 -0
  185. package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
  186. package/dist/src/utils/filesearch/ignore.test.js +57 -0
  187. package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
  188. package/dist/src/utils/filesearch/result-cache.d.ts +34 -0
  189. package/dist/src/utils/filesearch/result-cache.js +61 -0
  190. package/dist/src/utils/filesearch/result-cache.js.map +1 -0
  191. package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
  192. package/dist/src/utils/filesearch/result-cache.test.js +47 -0
  193. package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
  194. package/dist/src/utils/flashFallback.integration.test.js +0 -2
  195. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  196. package/dist/src/utils/memoryDiscovery.d.ts +1 -1
  197. package/dist/src/utils/memoryDiscovery.js +22 -7
  198. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  199. package/dist/src/utils/memoryDiscovery.test.js +30 -71
  200. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  201. package/dist/src/utils/nextSpeakerChecker.js +2 -2
  202. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  203. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  204. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  205. package/dist/src/utils/paths.d.ts +11 -2
  206. package/dist/src/utils/paths.js +24 -7
  207. package/dist/src/utils/paths.js.map +1 -1
  208. package/dist/src/utils/paths.test.d.ts +6 -0
  209. package/dist/src/utils/paths.test.js +153 -0
  210. package/dist/src/utils/paths.test.js.map +1 -0
  211. package/dist/src/utils/workspaceContext.d.ts +4 -0
  212. package/dist/src/utils/workspaceContext.js +33 -0
  213. package/dist/src/utils/workspaceContext.js.map +1 -1
  214. package/dist/tsconfig.tsbuildinfo +1 -1
  215. package/package.json +6 -1
  216. package/dist/google-gemini-cli-core-0.1.15.tgz +0 -0
@@ -49,7 +49,7 @@ describe('loadServerHierarchicalMemory', () => {
49
49
  await fsPromises.rm(testRootDir, { recursive: true, force: true });
50
50
  });
51
51
  it('should return empty memory and count if no context files are found', async () => {
52
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
52
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
53
53
  expect(result).toEqual({
54
54
  memoryContent: '',
55
55
  fileCount: 0,
@@ -57,11 +57,9 @@ describe('loadServerHierarchicalMemory', () => {
57
57
  });
58
58
  it('should load only the global context file if present and others are not (default filename)', async () => {
59
59
  const defaultContextFile = await createTestFile(path.join(homedir, GEMINI_CONFIG_DIR, DEFAULT_CONTEXT_FILENAME), 'default context content');
60
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
60
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
61
61
  expect(result).toEqual({
62
- memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---
63
- default context content
64
- --- End of Context from: ${path.relative(cwd, defaultContextFile)} ---`,
62
+ memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---\ndefault context content\n--- End of Context from: ${path.relative(cwd, defaultContextFile)} ---`,
65
63
  fileCount: 1,
66
64
  });
67
65
  });
@@ -69,11 +67,9 @@ default context content
69
67
  const customFilename = 'CUSTOM_AGENTS.md';
70
68
  setGeminiMdFilename(customFilename);
71
69
  const customContextFile = await createTestFile(path.join(homedir, GEMINI_CONFIG_DIR, customFilename), 'custom context content');
72
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
70
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
73
71
  expect(result).toEqual({
74
- memoryContent: `--- Context from: ${path.relative(cwd, customContextFile)} ---
75
- custom context content
76
- --- End of Context from: ${path.relative(cwd, customContextFile)} ---`,
72
+ memoryContent: `--- Context from: ${path.relative(cwd, customContextFile)} ---\ncustom context content\n--- End of Context from: ${path.relative(cwd, customContextFile)} ---`,
77
73
  fileCount: 1,
78
74
  });
79
75
  });
@@ -82,15 +78,9 @@ custom context content
82
78
  setGeminiMdFilename(customFilename);
83
79
  const projectContextFile = await createTestFile(path.join(projectRoot, customFilename), 'project context content');
84
80
  const cwdContextFile = await createTestFile(path.join(cwd, customFilename), 'cwd context content');
85
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
81
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
86
82
  expect(result).toEqual({
87
- memoryContent: `--- Context from: ${path.relative(cwd, projectContextFile)} ---
88
- project context content
89
- --- End of Context from: ${path.relative(cwd, projectContextFile)} ---
90
-
91
- --- Context from: ${path.relative(cwd, cwdContextFile)} ---
92
- cwd context content
93
- --- End of Context from: ${path.relative(cwd, cwdContextFile)} ---`,
83
+ memoryContent: `--- Context from: ${path.relative(cwd, projectContextFile)} ---\nproject context content\n--- End of Context from: ${path.relative(cwd, projectContextFile)} ---\n\n--- Context from: ${path.relative(cwd, cwdContextFile)} ---\ncwd context content\n--- End of Context from: ${path.relative(cwd, cwdContextFile)} ---`,
94
84
  fileCount: 2,
95
85
  });
96
86
  });
@@ -99,45 +89,27 @@ cwd context content
99
89
  setGeminiMdFilename(customFilename);
100
90
  await createTestFile(path.join(cwd, 'subdir', customFilename), 'Subdir custom memory');
101
91
  await createTestFile(path.join(cwd, customFilename), 'CWD custom memory');
102
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
92
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
103
93
  expect(result).toEqual({
104
- memoryContent: `--- Context from: ${customFilename} ---
105
- CWD custom memory
106
- --- End of Context from: ${customFilename} ---
107
-
108
- --- Context from: ${path.join('subdir', customFilename)} ---
109
- Subdir custom memory
110
- --- End of Context from: ${path.join('subdir', customFilename)} ---`,
94
+ memoryContent: `--- Context from: ${customFilename} ---\nCWD custom memory\n--- End of Context from: ${customFilename} ---\n\n--- Context from: ${path.join('subdir', customFilename)} ---\nSubdir custom memory\n--- End of Context from: ${path.join('subdir', customFilename)} ---`,
111
95
  fileCount: 2,
112
96
  });
113
97
  });
114
98
  it('should load ORIGINAL_GEMINI_MD_FILENAME files by upward traversal from CWD to project root', async () => {
115
99
  const projectRootGeminiFile = await createTestFile(path.join(projectRoot, DEFAULT_CONTEXT_FILENAME), 'Project root memory');
116
100
  const srcGeminiFile = await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'Src directory memory');
117
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
101
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
118
102
  expect(result).toEqual({
119
- memoryContent: `--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
120
- Project root memory
121
- --- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
122
-
123
- --- Context from: ${path.relative(cwd, srcGeminiFile)} ---
124
- Src directory memory
125
- --- End of Context from: ${path.relative(cwd, srcGeminiFile)} ---`,
103
+ memoryContent: `--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\nProject root memory\n--- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, srcGeminiFile)} ---\nSrc directory memory\n--- End of Context from: ${path.relative(cwd, srcGeminiFile)} ---`,
126
104
  fileCount: 2,
127
105
  });
128
106
  });
129
107
  it('should load ORIGINAL_GEMINI_MD_FILENAME files by downward traversal from CWD', async () => {
130
108
  await createTestFile(path.join(cwd, 'subdir', DEFAULT_CONTEXT_FILENAME), 'Subdir memory');
131
109
  await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'CWD memory');
132
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
110
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
133
111
  expect(result).toEqual({
134
- memoryContent: `--- Context from: ${DEFAULT_CONTEXT_FILENAME} ---
135
- CWD memory
136
- --- End of Context from: ${DEFAULT_CONTEXT_FILENAME} ---
137
-
138
- --- Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---
139
- Subdir memory
140
- --- End of Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---`,
112
+ memoryContent: `--- Context from: ${DEFAULT_CONTEXT_FILENAME} ---\nCWD memory\n--- End of Context from: ${DEFAULT_CONTEXT_FILENAME} ---\n\n--- Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---\nSubdir memory\n--- End of Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---`,
141
113
  fileCount: 2,
142
114
  });
143
115
  });
@@ -147,27 +119,9 @@ Subdir memory
147
119
  const projectRootGeminiFile = await createTestFile(path.join(projectRoot, DEFAULT_CONTEXT_FILENAME), 'Project root memory');
148
120
  const cwdGeminiFile = await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'CWD memory');
149
121
  const subDirGeminiFile = await createTestFile(path.join(cwd, 'sub', DEFAULT_CONTEXT_FILENAME), 'Subdir memory');
150
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
122
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
151
123
  expect(result).toEqual({
152
- memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---
153
- default context content
154
- --- End of Context from: ${path.relative(cwd, defaultContextFile)} ---
155
-
156
- --- Context from: ${path.relative(cwd, rootGeminiFile)} ---
157
- Project parent memory
158
- --- End of Context from: ${path.relative(cwd, rootGeminiFile)} ---
159
-
160
- --- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
161
- Project root memory
162
- --- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
163
-
164
- --- Context from: ${path.relative(cwd, cwdGeminiFile)} ---
165
- CWD memory
166
- --- End of Context from: ${path.relative(cwd, cwdGeminiFile)} ---
167
-
168
- --- Context from: ${path.relative(cwd, subDirGeminiFile)} ---
169
- Subdir memory
170
- --- End of Context from: ${path.relative(cwd, subDirGeminiFile)} ---`,
124
+ memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---\ndefault context content\n--- End of Context from: ${path.relative(cwd, defaultContextFile)} ---\n\n--- Context from: ${path.relative(cwd, rootGeminiFile)} ---\nProject parent memory\n--- End of Context from: ${path.relative(cwd, rootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\nProject root memory\n--- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, cwdGeminiFile)} ---\nCWD memory\n--- End of Context from: ${path.relative(cwd, cwdGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, subDirGeminiFile)} ---\nSubdir memory\n--- End of Context from: ${path.relative(cwd, subDirGeminiFile)} ---`,
171
125
  fileCount: 5,
172
126
  });
173
127
  });
@@ -176,14 +130,12 @@ Subdir memory
176
130
  await createTestFile(path.join(projectRoot, '.gitignore'), 'node_modules');
177
131
  await createTestFile(path.join(cwd, 'node_modules', DEFAULT_CONTEXT_FILENAME), 'Ignored memory');
178
132
  const regularSubDirGeminiFile = await createTestFile(path.join(cwd, 'my_code', DEFAULT_CONTEXT_FILENAME), 'My code memory');
179
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot), [], 'tree', {
133
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot), [], 'tree', {
180
134
  respectGitIgnore: true,
181
135
  respectGeminiIgnore: true,
182
136
  }, 200);
183
137
  expect(result).toEqual({
184
- memoryContent: `--- Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---
185
- My code memory
186
- --- End of Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---`,
138
+ memoryContent: `--- Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---\nMy code memory\n--- End of Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---`,
187
139
  fileCount: 1,
188
140
  });
189
141
  });
@@ -195,14 +147,14 @@ My code memory
195
147
  await createEmptyDir(path.join(cwd, `deep_dir_${i}`));
196
148
  }
197
149
  // Pass the custom limit directly to the function
198
- await loadServerHierarchicalMemory(cwd, true, new FileDiscoveryService(projectRoot), [], 'tree', // importFormat
150
+ await loadServerHierarchicalMemory(cwd, [], true, new FileDiscoveryService(projectRoot), [], 'tree', // importFormat
199
151
  {
200
152
  respectGitIgnore: true,
201
153
  respectGeminiIgnore: true,
202
154
  }, 50);
203
155
  expect(consoleDebugSpy).toHaveBeenCalledWith(expect.stringContaining('[DEBUG] [BfsFileSearch]'), expect.stringContaining('Scanning [50/50]:'));
204
156
  vi.mocked(console.debug).mockRestore();
205
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
157
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
206
158
  expect(result).toEqual({
207
159
  memoryContent: '',
208
160
  fileCount: 0,
@@ -210,11 +162,18 @@ My code memory
210
162
  });
211
163
  it('should load extension context file paths', async () => {
212
164
  const extensionFilePath = await createTestFile(path.join(testRootDir, 'extensions/ext1/GEMINI.md'), 'Extension memory content');
213
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot), [extensionFilePath]);
165
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot), [extensionFilePath]);
214
166
  expect(result).toEqual({
215
- memoryContent: `--- Context from: ${path.relative(cwd, extensionFilePath)} ---
216
- Extension memory content
217
- --- End of Context from: ${path.relative(cwd, extensionFilePath)} ---`,
167
+ memoryContent: `--- Context from: ${path.relative(cwd, extensionFilePath)} ---\nExtension memory content\n--- End of Context from: ${path.relative(cwd, extensionFilePath)} ---`,
168
+ fileCount: 1,
169
+ });
170
+ });
171
+ it('should load memory from included directories', async () => {
172
+ const includedDir = await createEmptyDir(path.join(testRootDir, 'included'));
173
+ const includedFile = await createTestFile(path.join(includedDir, DEFAULT_CONTEXT_FILENAME), 'included directory memory');
174
+ const result = await loadServerHierarchicalMemory(cwd, [includedDir], false, new FileDiscoveryService(projectRoot));
175
+ expect(result).toEqual({
176
+ memoryContent: `--- Context from: ${path.relative(cwd, includedFile)} ---\nincluded directory memory\n--- End of Context from: ${path.relative(cwd, includedFile)} ---`,
218
177
  fileCount: 1,
219
178
  });
220
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"memoryDiscovery.test.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryDiscovery.test.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Type } from '@google/genai';
7
- import { DEFAULT_GEMINI_FLASH_LITE_MODEL } from '../config/models.js';
7
+ import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
8
8
  import { isFunctionResponse } from './messageInspectors.js';
9
9
  const CHECK_PROMPT = `Analyze *only* the content and structure of your immediately preceding response (your last turn in the conversation history). Based *strictly* on that response, determine who should logically speak next: the 'user' or the 'model' (you).
10
10
  **Decision Rules (apply in order):**
@@ -76,7 +76,7 @@ export async function checkNextSpeaker(chat, geminiClient, abortSignal) {
76
76
  { role: 'user', parts: [{ text: CHECK_PROMPT }] },
77
77
  ];
78
78
  try {
79
- const parsedResponse = (await geminiClient.generateJson(contents, RESPONSE_SCHEMA, abortSignal, DEFAULT_GEMINI_FLASH_LITE_MODEL));
79
+ const parsedResponse = (await geminiClient.generateJson(contents, RESPONSE_SCHEMA, abortSignal, DEFAULT_GEMINI_FLASH_MODEL));
80
80
  if (parsedResponse &&
81
81
  parsedResponse.next_speaker &&
82
82
  ['user', 'model'].includes(parsedResponse.next_speaker)) {
@@ -1 +1 @@
1
- {"version":3,"file":"nextSpeakerChecker.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextSpeakerChecker.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { DEFAULT_GEMINI_FLASH_LITE_MODEL } from '../config/models.js';
7
+ import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
8
8
  import { GeminiClient } from '../core/client.js';
9
9
  import { Config } from '../config/config.js';
10
10
  import { checkNextSpeaker } from './nextSpeakerChecker.js';
@@ -162,7 +162,7 @@ describe('checkNextSpeaker', () => {
162
162
  expect(mockGeminiClient.generateJson).toHaveBeenCalled();
163
163
  const generateJsonCall = mockGeminiClient.generateJson.mock
164
164
  .calls[0];
165
- expect(generateJsonCall[3]).toBe(DEFAULT_GEMINI_FLASH_LITE_MODEL);
165
+ expect(generateJsonCall[3]).toBe(DEFAULT_GEMINI_FLASH_MODEL);
166
166
  });
167
167
  });
168
168
  //# sourceMappingURL=nextSpeakerChecker.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nextSpeakerChecker.test.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAQ,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,2CAA2C;AAC3C,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7B,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,kBAAkB,GAAG;IACzB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;IACxB,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC9B,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;CACP,CAAC;AAEvB,MAAM,uBAAuB,GAAG;IAC9B,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;IAC/D,sGAAsG;CAC7E,CAAC;AAE5B,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAClC,MAAM,WAAW,GACf,MAAM,EAAE,CAAC,YAAY,CAAiC,eAAe,CAAC,CAAC;IACzE,OAAO;QACL,GAAG,WAAW;QACd,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAAE,qDAAqD;QACxG,6EAA6E;QAC7E,uEAAuE;KACxE,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,YAAwB,CAAC;IAC7B,IAAI,gBAA8B,CAAC;IACnC,IAAI,UAAgB,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IAEjD,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,kBAAkB,GAAG,IAAI,UAAU,CACvC,cAAc,EACd,YAAY,EACZ,KAAK,EACL,GAAG,EACH,KAAK,EACL,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QAEF,gBAAgB,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAExD,wDAAwD;QACxD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1D,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC;QAEhE,sFAAsF;QACtF,YAAY,GAAG,IAAI,UAAU,CAC3B,kBAAkB,EAClB,kBAAkB,EAAE,8EAA8E;QAClG,EAAE,EACF,EAAE,CACH,CAAC;QAEF,qCAAqC;QACrC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACrD,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QAClE,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;SAChC,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACrF,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,EAAE;SACpD,CAAC,CAAC;QAChB,MAAM,eAAe,GAAwB;YAC3C,SAAS,EAAE,oCAAoC;YAC/C,YAAY,EAAE,OAAO;SACtB,CAAC;QACD,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAChF,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,EAAE;SACtD,CAAC,CAAC;QAChB,MAAM,eAAe,GAAwB;YAC3C,SAAS,EAAE,yBAAyB;YACpC,YAAY,EAAE,MAAM;SACrB,CAAC;QACD,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QAClF,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE;SAChD,CAAC,CAAC;QAChB,MAAM,eAAe,GAAwB;YAC3C,SAAS,EAAE,8CAA8C;YACzD,YAAY,EAAE,MAAM;SACrB,CAAC;QACD,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,cAAc,GAAG,EAAE;aACtB,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;aACtB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/B,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE;SAC9C,CAAC,CAAC;QACf,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CACvD,IAAI,KAAK,CAAC,WAAW,CAAC,CACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1B,cAAc,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC1G,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE;SAC9C,CAAC,CAAC;QACf,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC;YACxD,SAAS,EAAE,qBAAqB;SACC,CAAC,CAAC,CAAC,8CAA8C;QAEpF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAChG,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE;SAC9C,CAAC,CAAC;QACf,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC;YACxD,SAAS,EAAE,8CAA8C;YACzD,YAAY,EAAE,GAAG,EAAE,eAAe;SACD,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC3G,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE;SAC9C,CAAC,CAAC;QACf,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC;YACxD,SAAS,EAAE,8CAA8C;YACzD,YAAY,EAAE,SAAS,EAAE,qBAAqB;SACb,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACvE,YAAY,CAAC,UAAmB,CAAC,eAAe,CAAC;YAChD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE;SAC9C,CAAC,CAAC;QAChB,MAAM,eAAe,GAAwB;YAC3C,SAAS,EAAE,8CAA8C;YACzD,YAAY,EAAE,MAAM;SACrB,CAAC;QACD,gBAAgB,CAAC,YAAqB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE3E,MAAM,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAEpE,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACzD,MAAM,gBAAgB,GAAI,gBAAgB,CAAC,YAAqB,CAAC,IAAI;aAClE,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"nextSpeakerChecker.test.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.test.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@
5
5
  */
6
6
  export declare const GEMINI_DIR = ".gemini";
7
7
  export declare const GOOGLE_ACCOUNTS_FILENAME = "google_accounts.json";
8
+ /**
9
+ * Special characters that need to be escaped in file paths for shell compatibility.
10
+ * Includes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
11
+ * asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
12
+ */
13
+ export declare const SHELL_SPECIAL_CHARS: RegExp;
8
14
  /**
9
15
  * Replaces the home directory with a tilde.
10
16
  * @param path - The path to tildeify.
@@ -27,11 +33,14 @@ export declare function shortenPath(filePath: string, maxLen?: number): string;
27
33
  */
28
34
  export declare function makeRelative(targetPath: string, rootDirectory: string): string;
29
35
  /**
30
- * Escapes spaces in a file path.
36
+ * Escapes special characters in a file path like macOS terminal does.
37
+ * Escapes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
38
+ * asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
31
39
  */
32
40
  export declare function escapePath(filePath: string): string;
33
41
  /**
34
- * Unescapes spaces in a file path.
42
+ * Unescapes special characters in a file path.
43
+ * Removes backslash escaping from shell metacharacters.
35
44
  */
36
45
  export declare function unescapePath(filePath: string): string;
37
46
  /**
@@ -10,6 +10,12 @@ export const GEMINI_DIR = '.gemini';
10
10
  export const GOOGLE_ACCOUNTS_FILENAME = 'google_accounts.json';
11
11
  const TMP_DIR_NAME = 'tmp';
12
12
  const COMMANDS_DIR_NAME = 'commands';
13
+ /**
14
+ * Special characters that need to be escaped in file paths for shell compatibility.
15
+ * Includes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
16
+ * asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
17
+ */
18
+ export const SHELL_SPECIAL_CHARS = /[ \t()[\]{};|*?$`'"#&<>!~]/;
13
19
  /**
14
20
  * Replaces the home directory with a tilde.
15
21
  * @param path - The path to tildeify.
@@ -97,26 +103,37 @@ export function makeRelative(targetPath, rootDirectory) {
97
103
  return relativePath || '.';
98
104
  }
99
105
  /**
100
- * Escapes spaces in a file path.
106
+ * Escapes special characters in a file path like macOS terminal does.
107
+ * Escapes: spaces, parentheses, brackets, braces, semicolons, ampersands, pipes,
108
+ * asterisks, question marks, dollar signs, backticks, quotes, hash, and other shell metacharacters.
101
109
  */
102
110
  export function escapePath(filePath) {
103
111
  let result = '';
104
112
  for (let i = 0; i < filePath.length; i++) {
105
- // Only escape spaces that are not already escaped.
106
- if (filePath[i] === ' ' && (i === 0 || filePath[i - 1] !== '\\')) {
107
- result += '\\ ';
113
+ const char = filePath[i];
114
+ // Count consecutive backslashes before this character
115
+ let backslashCount = 0;
116
+ for (let j = i - 1; j >= 0 && filePath[j] === '\\'; j--) {
117
+ backslashCount++;
118
+ }
119
+ // Character is already escaped if there's an odd number of backslashes before it
120
+ const isAlreadyEscaped = backslashCount % 2 === 1;
121
+ // Only escape if not already escaped
122
+ if (!isAlreadyEscaped && SHELL_SPECIAL_CHARS.test(char)) {
123
+ result += '\\' + char;
108
124
  }
109
125
  else {
110
- result += filePath[i];
126
+ result += char;
111
127
  }
112
128
  }
113
129
  return result;
114
130
  }
115
131
  /**
116
- * Unescapes spaces in a file path.
132
+ * Unescapes special characters in a file path.
133
+ * Removes backslash escaping from shell metacharacters.
117
134
  */
118
135
  export function unescapePath(filePath) {
119
- return filePath.replace(/\\ /g, ' ');
136
+ return filePath.replace(new RegExp(`\\\\([${SHELL_SPECIAL_CHARS.source.slice(1, -1)}])`, 'g'), '$1');
120
137
  }
121
138
  /**
122
139
  * Generates a unique hash for a project based on its root path.
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
@@ -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,153 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { escapePath, unescapePath } from './paths.js';
8
+ describe('escapePath', () => {
9
+ it('should escape spaces', () => {
10
+ expect(escapePath('my file.txt')).toBe('my\\ file.txt');
11
+ });
12
+ it('should escape tabs', () => {
13
+ expect(escapePath('file\twith\ttabs.txt')).toBe('file\\\twith\\\ttabs.txt');
14
+ });
15
+ it('should escape parentheses', () => {
16
+ expect(escapePath('file(1).txt')).toBe('file\\(1\\).txt');
17
+ });
18
+ it('should escape square brackets', () => {
19
+ expect(escapePath('file[backup].txt')).toBe('file\\[backup\\].txt');
20
+ });
21
+ it('should escape curly braces', () => {
22
+ expect(escapePath('file{temp}.txt')).toBe('file\\{temp\\}.txt');
23
+ });
24
+ it('should escape semicolons', () => {
25
+ expect(escapePath('file;name.txt')).toBe('file\\;name.txt');
26
+ });
27
+ it('should escape ampersands', () => {
28
+ expect(escapePath('file&name.txt')).toBe('file\\&name.txt');
29
+ });
30
+ it('should escape pipes', () => {
31
+ expect(escapePath('file|name.txt')).toBe('file\\|name.txt');
32
+ });
33
+ it('should escape asterisks', () => {
34
+ expect(escapePath('file*.txt')).toBe('file\\*.txt');
35
+ });
36
+ it('should escape question marks', () => {
37
+ expect(escapePath('file?.txt')).toBe('file\\?.txt');
38
+ });
39
+ it('should escape dollar signs', () => {
40
+ expect(escapePath('file$name.txt')).toBe('file\\$name.txt');
41
+ });
42
+ it('should escape backticks', () => {
43
+ expect(escapePath('file`name.txt')).toBe('file\\`name.txt');
44
+ });
45
+ it('should escape single quotes', () => {
46
+ expect(escapePath("file'name.txt")).toBe("file\\'name.txt");
47
+ });
48
+ it('should escape double quotes', () => {
49
+ expect(escapePath('file"name.txt')).toBe('file\\"name.txt');
50
+ });
51
+ it('should escape hash symbols', () => {
52
+ expect(escapePath('file#name.txt')).toBe('file\\#name.txt');
53
+ });
54
+ it('should escape exclamation marks', () => {
55
+ expect(escapePath('file!name.txt')).toBe('file\\!name.txt');
56
+ });
57
+ it('should escape tildes', () => {
58
+ expect(escapePath('file~name.txt')).toBe('file\\~name.txt');
59
+ });
60
+ it('should escape less than and greater than signs', () => {
61
+ expect(escapePath('file<name>.txt')).toBe('file\\<name\\>.txt');
62
+ });
63
+ it('should handle multiple special characters', () => {
64
+ expect(escapePath('my file (backup) [v1.2].txt')).toBe('my\\ file\\ \\(backup\\)\\ \\[v1.2\\].txt');
65
+ });
66
+ it('should not double-escape already escaped characters', () => {
67
+ expect(escapePath('my\\ file.txt')).toBe('my\\ file.txt');
68
+ expect(escapePath('file\\(name\\).txt')).toBe('file\\(name\\).txt');
69
+ });
70
+ it('should handle escaped backslashes correctly', () => {
71
+ // Double backslash (escaped backslash) followed by space should escape the space
72
+ expect(escapePath('path\\\\ file.txt')).toBe('path\\\\\\ file.txt');
73
+ // Triple backslash (escaped backslash + escaping backslash) followed by space should not double-escape
74
+ expect(escapePath('path\\\\\\ file.txt')).toBe('path\\\\\\ file.txt');
75
+ // Quadruple backslash (two escaped backslashes) followed by space should escape the space
76
+ expect(escapePath('path\\\\\\\\ file.txt')).toBe('path\\\\\\\\\\ file.txt');
77
+ });
78
+ it('should handle complex escaped backslash scenarios', () => {
79
+ // Escaped backslash before special character that needs escaping
80
+ expect(escapePath('file\\\\(test).txt')).toBe('file\\\\\\(test\\).txt');
81
+ // Multiple escaped backslashes
82
+ expect(escapePath('path\\\\\\\\with space.txt')).toBe('path\\\\\\\\with\\ space.txt');
83
+ });
84
+ it('should handle paths without special characters', () => {
85
+ expect(escapePath('normalfile.txt')).toBe('normalfile.txt');
86
+ expect(escapePath('path/to/normalfile.txt')).toBe('path/to/normalfile.txt');
87
+ });
88
+ it('should handle complex real-world examples', () => {
89
+ expect(escapePath('My Documents/Project (2024)/file [backup].txt')).toBe('My\\ Documents/Project\\ \\(2024\\)/file\\ \\[backup\\].txt');
90
+ expect(escapePath('file with $special &chars!.txt')).toBe('file\\ with\\ \\$special\\ \\&chars\\!.txt');
91
+ });
92
+ it('should handle empty strings', () => {
93
+ expect(escapePath('')).toBe('');
94
+ });
95
+ it('should handle paths with only special characters', () => {
96
+ expect(escapePath(' ()[]{};&|*?$`\'"#!~<>')).toBe('\\ \\(\\)\\[\\]\\{\\}\\;\\&\\|\\*\\?\\$\\`\\\'\\"\\#\\!\\~\\<\\>');
97
+ });
98
+ });
99
+ describe('unescapePath', () => {
100
+ it('should unescape spaces', () => {
101
+ expect(unescapePath('my\\ file.txt')).toBe('my file.txt');
102
+ });
103
+ it('should unescape tabs', () => {
104
+ expect(unescapePath('file\\\twith\\\ttabs.txt')).toBe('file\twith\ttabs.txt');
105
+ });
106
+ it('should unescape parentheses', () => {
107
+ expect(unescapePath('file\\(1\\).txt')).toBe('file(1).txt');
108
+ });
109
+ it('should unescape square brackets', () => {
110
+ expect(unescapePath('file\\[backup\\].txt')).toBe('file[backup].txt');
111
+ });
112
+ it('should unescape curly braces', () => {
113
+ expect(unescapePath('file\\{temp\\}.txt')).toBe('file{temp}.txt');
114
+ });
115
+ it('should unescape multiple special characters', () => {
116
+ expect(unescapePath('my\\ file\\ \\(backup\\)\\ \\[v1.2\\].txt')).toBe('my file (backup) [v1.2].txt');
117
+ });
118
+ it('should handle paths without escaped characters', () => {
119
+ expect(unescapePath('normalfile.txt')).toBe('normalfile.txt');
120
+ expect(unescapePath('path/to/normalfile.txt')).toBe('path/to/normalfile.txt');
121
+ });
122
+ it('should handle all special characters', () => {
123
+ expect(unescapePath('\\ \\(\\)\\[\\]\\{\\}\\;\\&\\|\\*\\?\\$\\`\\\'\\"\\#\\!\\~\\<\\>')).toBe(' ()[]{};&|*?$`\'"#!~<>');
124
+ });
125
+ it('should be the inverse of escapePath', () => {
126
+ const testCases = [
127
+ 'my file.txt',
128
+ 'file(1).txt',
129
+ 'file[backup].txt',
130
+ 'My Documents/Project (2024)/file [backup].txt',
131
+ 'file with $special &chars!.txt',
132
+ ' ()[]{};&|*?$`\'"#!~<>',
133
+ 'file\twith\ttabs.txt',
134
+ ];
135
+ testCases.forEach((testCase) => {
136
+ expect(unescapePath(escapePath(testCase))).toBe(testCase);
137
+ });
138
+ });
139
+ it('should handle empty strings', () => {
140
+ expect(unescapePath('')).toBe('');
141
+ });
142
+ it('should not affect backslashes not followed by special characters', () => {
143
+ expect(unescapePath('file\\name.txt')).toBe('file\\name.txt');
144
+ expect(unescapePath('path\\to\\file.txt')).toBe('path\\to\\file.txt');
145
+ });
146
+ it('should handle escaped backslashes in unescaping', () => {
147
+ // Should correctly unescape when there are escaped backslashes
148
+ expect(unescapePath('path\\\\\\ file.txt')).toBe('path\\\\ file.txt');
149
+ expect(unescapePath('path\\\\\\\\\\ file.txt')).toBe('path\\\\\\\\ file.txt');
150
+ expect(unescapePath('file\\\\\\(test\\).txt')).toBe('file\\\\(test).txt');
151
+ });
152
+ });
153
+ //# sourceMappingURL=paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../src/utils/paths.test.ts"],"names":[],"mappings":"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"}