@google/gemini-cli-core 0.1.13 → 0.1.15-nightly.250731.0c6f7884

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 (304) hide show
  1. package/README.md +50 -1
  2. package/dist/google-gemini-cli-core-0.1.15.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.js +2 -2
  4. package/dist/src/code_assist/codeAssist.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.js +9 -2
  6. package/dist/src/code_assist/oauth2.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.test.js +99 -7
  8. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  9. package/dist/src/code_assist/server.d.ts +4 -6
  10. package/dist/src/code_assist/server.js +4 -69
  11. package/dist/src/code_assist/server.js.map +1 -1
  12. package/dist/src/code_assist/setup.d.ts +6 -1
  13. package/dist/src/code_assist/setup.js +4 -1
  14. package/dist/src/code_assist/setup.js.map +1 -1
  15. package/dist/src/code_assist/setup.test.js +4 -1
  16. package/dist/src/code_assist/setup.test.js.map +1 -1
  17. package/dist/src/code_assist/types.d.ts +2 -2
  18. package/dist/src/config/config.d.ts +43 -11
  19. package/dist/src/config/config.js +79 -27
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +34 -23
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/flashFallback.test.js +24 -48
  24. package/dist/src/config/flashFallback.test.js.map +1 -1
  25. package/dist/src/config/models.d.ts +1 -0
  26. package/dist/src/config/models.js +1 -0
  27. package/dist/src/config/models.js.map +1 -1
  28. package/dist/src/core/client.d.ts +5 -2
  29. package/dist/src/core/client.js +64 -22
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/client.test.js +199 -2
  32. package/dist/src/core/client.test.js.map +1 -1
  33. package/dist/src/core/contentGenerator.d.ts +1 -1
  34. package/dist/src/core/contentGenerator.js +1 -1
  35. package/dist/src/core/contentGenerator.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.d.ts +1 -3
  37. package/dist/src/core/coreToolScheduler.js +1 -3
  38. package/dist/src/core/coreToolScheduler.js.map +1 -1
  39. package/dist/src/core/coreToolScheduler.test.js +76 -1
  40. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  41. package/dist/src/core/geminiChat.d.ts +4 -3
  42. package/dist/src/core/geminiChat.js +9 -11
  43. package/dist/src/core/geminiChat.js.map +1 -1
  44. package/dist/src/core/geminiRequest.js +2 -37
  45. package/dist/src/core/geminiRequest.js.map +1 -1
  46. package/dist/src/core/logger.d.ts +1 -0
  47. package/dist/src/core/logger.js +24 -4
  48. package/dist/src/core/logger.js.map +1 -1
  49. package/dist/src/core/logger.test.js +61 -10
  50. package/dist/src/core/logger.test.js.map +1 -1
  51. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -5
  52. package/dist/src/core/prompts.js +43 -19
  53. package/dist/src/core/prompts.js.map +1 -1
  54. package/dist/src/core/prompts.test.js +121 -4
  55. package/dist/src/core/prompts.test.js.map +1 -1
  56. package/dist/src/core/tokenLimits.js +1 -0
  57. package/dist/src/core/tokenLimits.js.map +1 -1
  58. package/dist/src/core/turn.d.ts +7 -2
  59. package/dist/src/core/turn.js +9 -0
  60. package/dist/src/core/turn.js.map +1 -1
  61. package/dist/src/core/turn.test.js +129 -0
  62. package/dist/src/core/turn.test.js.map +1 -1
  63. package/dist/src/ide/detect-ide.d.ts +10 -0
  64. package/dist/src/ide/detect-ide.js +24 -0
  65. package/dist/src/ide/detect-ide.js.map +1 -0
  66. package/dist/src/ide/ide-client.d.ts +40 -0
  67. package/dist/src/ide/ide-client.js +152 -0
  68. package/dist/src/ide/ide-client.js.map +1 -0
  69. package/dist/src/ide/ide-installer.d.ts +15 -0
  70. package/dist/src/ide/ide-installer.js +111 -0
  71. package/dist/src/ide/ide-installer.js.map +1 -0
  72. package/dist/src/ide/ide-installer.test.js +78 -0
  73. package/dist/src/ide/ide-installer.test.js.map +1 -0
  74. package/dist/src/ide/ideContext.d.ts +279 -0
  75. package/dist/src/ide/ideContext.js +102 -0
  76. package/dist/src/ide/ideContext.js.map +1 -0
  77. package/dist/src/ide/ideContext.test.js +265 -0
  78. package/dist/src/ide/ideContext.test.js.map +1 -0
  79. package/dist/src/index.d.ts +11 -1
  80. package/dist/src/index.js +14 -1
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/mcp/google-auth-provider.d.ts +23 -0
  83. package/dist/src/mcp/google-auth-provider.js +63 -0
  84. package/dist/src/mcp/google-auth-provider.js.map +1 -0
  85. package/dist/src/mcp/google-auth-provider.test.d.ts +6 -0
  86. package/dist/src/mcp/google-auth-provider.test.js +54 -0
  87. package/dist/src/mcp/google-auth-provider.test.js.map +1 -0
  88. package/dist/src/mcp/oauth-provider.d.ts +5 -1
  89. package/dist/src/mcp/oauth-provider.js +36 -11
  90. package/dist/src/mcp/oauth-provider.js.map +1 -1
  91. package/dist/src/mcp/oauth-provider.test.js +2 -2
  92. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  93. package/dist/src/mcp/oauth-token-storage.d.ts +3 -1
  94. package/dist/src/mcp/oauth-token-storage.js +3 -1
  95. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  96. package/dist/src/mcp/oauth-utils.js +2 -2
  97. package/dist/src/mcp/oauth-utils.js.map +1 -1
  98. package/dist/src/mcp/oauth-utils.test.js +1 -1
  99. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  100. package/dist/src/prompts/mcp-prompts.d.ts +8 -0
  101. package/dist/src/prompts/mcp-prompts.js +13 -0
  102. package/dist/src/prompts/mcp-prompts.js.map +1 -0
  103. package/dist/src/prompts/prompt-registry.d.ts +26 -0
  104. package/dist/src/prompts/prompt-registry.js +47 -0
  105. package/dist/src/prompts/prompt-registry.js.map +1 -0
  106. package/dist/src/services/fileDiscoveryService.test.js +101 -60
  107. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  108. package/dist/src/services/gitService.test.js +67 -86
  109. package/dist/src/services/gitService.test.js.map +1 -1
  110. package/dist/src/services/loopDetectionService.d.ts +51 -5
  111. package/dist/src/services/loopDetectionService.js +140 -36
  112. package/dist/src/services/loopDetectionService.js.map +1 -1
  113. package/dist/src/services/loopDetectionService.test.js +105 -99
  114. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  115. package/dist/src/services/shellExecutionService.d.ts +70 -0
  116. package/dist/src/services/shellExecutionService.js +152 -0
  117. package/dist/src/services/shellExecutionService.js.map +1 -0
  118. package/dist/src/services/shellExecutionService.test.d.ts +6 -0
  119. package/dist/src/services/shellExecutionService.test.js +258 -0
  120. package/dist/src/services/shellExecutionService.test.js.map +1 -0
  121. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -1
  122. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +75 -33
  123. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  124. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +3 -1
  125. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +7 -0
  126. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  127. package/dist/src/telemetry/constants.d.ts +2 -0
  128. package/dist/src/telemetry/constants.js +2 -0
  129. package/dist/src/telemetry/constants.js.map +1 -1
  130. package/dist/src/telemetry/file-exporters.d.ts +28 -0
  131. package/dist/src/telemetry/file-exporters.js +62 -0
  132. package/dist/src/telemetry/file-exporters.js.map +1 -0
  133. package/dist/src/telemetry/index.d.ts +2 -2
  134. package/dist/src/telemetry/index.js +2 -2
  135. package/dist/src/telemetry/index.js.map +1 -1
  136. package/dist/src/telemetry/loggers.d.ts +3 -1
  137. package/dist/src/telemetry/loggers.js +33 -1
  138. package/dist/src/telemetry/loggers.js.map +1 -1
  139. package/dist/src/telemetry/sdk.js +17 -6
  140. package/dist/src/telemetry/sdk.js.map +1 -1
  141. package/dist/src/telemetry/telemetry.test.js +2 -0
  142. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  143. package/dist/src/telemetry/types.d.ts +16 -2
  144. package/dist/src/telemetry/types.js +25 -1
  145. package/dist/src/telemetry/types.js.map +1 -1
  146. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  147. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  148. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  149. package/dist/src/tools/edit.js +14 -7
  150. package/dist/src/tools/edit.js.map +1 -1
  151. package/dist/src/tools/edit.test.js +37 -1
  152. package/dist/src/tools/edit.test.js.map +1 -1
  153. package/dist/src/tools/glob.js +53 -17
  154. package/dist/src/tools/glob.js.map +1 -1
  155. package/dist/src/tools/glob.test.js +32 -6
  156. package/dist/src/tools/glob.test.js.map +1 -1
  157. package/dist/src/tools/grep.d.ts +1 -1
  158. package/dist/src/tools/grep.js +81 -29
  159. package/dist/src/tools/grep.js.map +1 -1
  160. package/dist/src/tools/grep.test.js +77 -10
  161. package/dist/src/tools/grep.test.js.map +1 -1
  162. package/dist/src/tools/ls.d.ts +5 -2
  163. package/dist/src/tools/ls.js +43 -13
  164. package/dist/src/tools/ls.js.map +1 -1
  165. package/dist/src/tools/ls.test.d.ts +6 -0
  166. package/dist/src/tools/ls.test.js +356 -0
  167. package/dist/src/tools/ls.test.js.map +1 -0
  168. package/dist/src/tools/mcp-client.d.ts +31 -3
  169. package/dist/src/tools/mcp-client.js +467 -38
  170. package/dist/src/tools/mcp-client.js.map +1 -1
  171. package/dist/src/tools/mcp-client.test.js +99 -7
  172. package/dist/src/tools/mcp-client.test.js.map +1 -1
  173. package/dist/src/tools/mcp-tool.js +1 -1
  174. package/dist/src/tools/mcp-tool.js.map +1 -1
  175. package/dist/src/tools/mcp-tool.test.js +34 -0
  176. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  177. package/dist/src/tools/memoryTool.d.ts +17 -2
  178. package/dist/src/tools/memoryTool.js +130 -13
  179. package/dist/src/tools/memoryTool.js.map +1 -1
  180. package/dist/src/tools/memoryTool.test.js +88 -3
  181. package/dist/src/tools/memoryTool.test.js.map +1 -1
  182. package/dist/src/tools/modifiable-tool.test.js +51 -62
  183. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  184. package/dist/src/tools/read-file.js +8 -6
  185. package/dist/src/tools/read-file.js.map +1 -1
  186. package/dist/src/tools/read-file.test.js +125 -68
  187. package/dist/src/tools/read-file.test.js.map +1 -1
  188. package/dist/src/tools/read-many-files.d.ts +5 -3
  189. package/dist/src/tools/read-many-files.js +83 -33
  190. package/dist/src/tools/read-many-files.js.map +1 -1
  191. package/dist/src/tools/read-many-files.test.js +40 -4
  192. package/dist/src/tools/read-many-files.test.js.map +1 -1
  193. package/dist/src/tools/shell.d.ts +3 -23
  194. package/dist/src/tools/shell.js +173 -300
  195. package/dist/src/tools/shell.js.map +1 -1
  196. package/dist/src/tools/shell.test.js +278 -384
  197. package/dist/src/tools/shell.test.js.map +1 -1
  198. package/dist/src/tools/tool-registry.d.ts +13 -1
  199. package/dist/src/tools/tool-registry.js +46 -2
  200. package/dist/src/tools/tool-registry.js.map +1 -1
  201. package/dist/src/tools/tool-registry.test.js +13 -5
  202. package/dist/src/tools/tool-registry.test.js.map +1 -1
  203. package/dist/src/tools/write-file.js +5 -3
  204. package/dist/src/tools/write-file.js.map +1 -1
  205. package/dist/src/tools/write-file.test.js +36 -2
  206. package/dist/src/tools/write-file.test.js.map +1 -1
  207. package/dist/src/utils/bfsFileSearch.d.ts +2 -0
  208. package/dist/src/utils/bfsFileSearch.js +51 -24
  209. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  210. package/dist/src/utils/bfsFileSearch.test.js +163 -103
  211. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  212. package/dist/src/utils/editCorrector.js +4 -4
  213. package/dist/src/utils/editCorrector.js.map +1 -1
  214. package/dist/src/utils/editCorrector.test.js +1 -1
  215. package/dist/src/utils/editor.js +16 -10
  216. package/dist/src/utils/editor.js.map +1 -1
  217. package/dist/src/utils/editor.test.js +128 -28
  218. package/dist/src/utils/editor.test.js.map +1 -1
  219. package/dist/src/utils/errorReporting.d.ts +1 -1
  220. package/dist/src/utils/errorReporting.js +2 -2
  221. package/dist/src/utils/errorReporting.js.map +1 -1
  222. package/dist/src/utils/errorReporting.test.js +44 -38
  223. package/dist/src/utils/errorReporting.test.js.map +1 -1
  224. package/dist/src/utils/fileUtils.d.ts +4 -4
  225. package/dist/src/utils/fileUtils.js +31 -15
  226. package/dist/src/utils/fileUtils.js.map +1 -1
  227. package/dist/src/utils/fileUtils.test.js +37 -37
  228. package/dist/src/utils/fileUtils.test.js.map +1 -1
  229. package/dist/src/utils/flashFallback.integration.test.js +8 -0
  230. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  231. package/dist/src/utils/formatters.d.ts +6 -0
  232. package/dist/src/utils/formatters.js +16 -0
  233. package/dist/src/utils/formatters.js.map +1 -0
  234. package/dist/src/utils/getFolderStructure.d.ts +3 -2
  235. package/dist/src/utils/getFolderStructure.js +27 -28
  236. package/dist/src/utils/getFolderStructure.js.map +1 -1
  237. package/dist/src/utils/getFolderStructure.test.js +169 -187
  238. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  239. package/dist/src/utils/gitIgnoreParser.js +4 -7
  240. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  241. package/dist/src/utils/gitIgnoreParser.test.js +70 -61
  242. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  243. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  244. package/dist/src/utils/memoryDiscovery.js +11 -5
  245. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  246. package/dist/src/utils/memoryDiscovery.test.js +160 -371
  247. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  248. package/dist/src/utils/nextSpeakerChecker.js +2 -2
  249. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  250. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  251. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  252. package/dist/src/utils/partUtils.d.ts +14 -0
  253. package/dist/src/utils/partUtils.js +65 -0
  254. package/dist/src/utils/partUtils.js.map +1 -0
  255. package/dist/src/utils/partUtils.test.d.ts +6 -0
  256. package/dist/src/utils/partUtils.test.js +130 -0
  257. package/dist/src/utils/partUtils.test.js.map +1 -0
  258. package/dist/src/utils/paths.d.ts +11 -0
  259. package/dist/src/utils/paths.js +17 -1
  260. package/dist/src/utils/paths.js.map +1 -1
  261. package/dist/src/utils/quotaErrorDetection.js +0 -2
  262. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  263. package/dist/src/utils/retry.d.ts +3 -0
  264. package/dist/src/utils/retry.js +1 -1
  265. package/dist/src/utils/retry.js.map +1 -1
  266. package/dist/src/utils/retry.test.js.map +1 -1
  267. package/dist/src/utils/schemaValidator.d.ts +1 -1
  268. package/dist/src/utils/schemaValidator.js +6 -3
  269. package/dist/src/utils/schemaValidator.js.map +1 -1
  270. package/dist/src/utils/shell-utils.d.ts +78 -0
  271. package/dist/src/utils/shell-utils.js +306 -0
  272. package/dist/src/utils/shell-utils.js.map +1 -0
  273. package/dist/src/utils/shell-utils.test.d.ts +6 -0
  274. package/dist/src/utils/shell-utils.test.js +200 -0
  275. package/dist/src/utils/shell-utils.test.js.map +1 -0
  276. package/dist/src/utils/summarizer.js +1 -30
  277. package/dist/src/utils/summarizer.js.map +1 -1
  278. package/dist/src/utils/systemEncoding.d.ts +40 -0
  279. package/dist/src/utils/systemEncoding.js +149 -0
  280. package/dist/src/utils/systemEncoding.js.map +1 -0
  281. package/dist/src/utils/systemEncoding.test.d.ts +6 -0
  282. package/dist/src/utils/systemEncoding.test.js +368 -0
  283. package/dist/src/utils/systemEncoding.test.js.map +1 -0
  284. package/dist/src/utils/textUtils.d.ts +13 -0
  285. package/dist/src/utils/textUtils.js +28 -0
  286. package/dist/src/utils/textUtils.js.map +1 -0
  287. package/dist/src/utils/workspaceContext.d.ts +47 -0
  288. package/dist/src/utils/workspaceContext.js +106 -0
  289. package/dist/src/utils/workspaceContext.js.map +1 -0
  290. package/dist/src/utils/workspaceContext.test.d.ts +6 -0
  291. package/dist/src/utils/workspaceContext.test.js +209 -0
  292. package/dist/src/utils/workspaceContext.test.js.map +1 -0
  293. package/dist/tsconfig.tsbuildinfo +1 -1
  294. package/package.json +2 -1
  295. package/dist/google-gemini-cli-core-0.1.12.tgz +0 -0
  296. package/dist/src/core/geminiRequest.test.js +0 -72
  297. package/dist/src/core/geminiRequest.test.js.map +0 -1
  298. package/dist/src/services/ideContext.d.ts +0 -126
  299. package/dist/src/services/ideContext.js +0 -98
  300. package/dist/src/services/ideContext.js.map +0 -1
  301. package/dist/src/services/ideContext.test.js +0 -111
  302. package/dist/src/services/ideContext.test.js.map +0 -1
  303. /package/dist/src/{core/geminiRequest.test.d.ts → ide/ide-installer.test.d.ts} +0 -0
  304. /package/dist/src/{services → ide}/ideContext.test.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/gemini-cli-core",
3
- "version": "0.1.13",
3
+ "version": "0.1.15-nightly.250731.0c6f7884",
4
4
  "description": "Gemini CLI Core",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,6 +31,7 @@
31
31
  "@types/glob": "^8.1.0",
32
32
  "@types/html-to-text": "^9.0.4",
33
33
  "ajv": "^8.17.1",
34
+ "chardet": "^2.1.0",
34
35
  "diff": "^7.0.0",
35
36
  "dotenv": "^17.1.0",
36
37
  "glob": "^10.4.5",
@@ -1,72 +0,0 @@
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 { partListUnionToString } from './geminiRequest.js';
8
- describe('partListUnionToString', () => {
9
- it('should return the string value if the input is a string', () => {
10
- const result = partListUnionToString('hello');
11
- expect(result).toBe('hello');
12
- });
13
- it('should return a concatenated string if the input is an array of strings', () => {
14
- const result = partListUnionToString(['hello', ' ', 'world']);
15
- expect(result).toBe('hello world');
16
- });
17
- it('should handle videoMetadata', () => {
18
- const part = { videoMetadata: {} };
19
- const result = partListUnionToString(part);
20
- expect(result).toBe('[Video Metadata]');
21
- });
22
- it('should handle thought', () => {
23
- const part = { thought: true };
24
- const result = partListUnionToString(part);
25
- expect(result).toBe('[Thought: true]');
26
- });
27
- it('should handle codeExecutionResult', () => {
28
- const part = { codeExecutionResult: {} };
29
- const result = partListUnionToString(part);
30
- expect(result).toBe('[Code Execution Result]');
31
- });
32
- it('should handle executableCode', () => {
33
- const part = { executableCode: {} };
34
- const result = partListUnionToString(part);
35
- expect(result).toBe('[Executable Code]');
36
- });
37
- it('should handle fileData', () => {
38
- const part = {
39
- fileData: { mimeType: 'text/plain', fileUri: 'file.txt' },
40
- };
41
- const result = partListUnionToString(part);
42
- expect(result).toBe('[File Data]');
43
- });
44
- it('should handle functionCall', () => {
45
- const part = { functionCall: { name: 'myFunction' } };
46
- const result = partListUnionToString(part);
47
- expect(result).toBe('[Function Call: myFunction]');
48
- });
49
- it('should handle functionResponse', () => {
50
- const part = {
51
- functionResponse: { name: 'myFunction', response: {} },
52
- };
53
- const result = partListUnionToString(part);
54
- expect(result).toBe('[Function Response: myFunction]');
55
- });
56
- it('should handle inlineData', () => {
57
- const part = { inlineData: { mimeType: 'image/png', data: '...' } };
58
- const result = partListUnionToString(part);
59
- expect(result).toBe('<image/png>');
60
- });
61
- it('should handle text', () => {
62
- const part = { text: 'hello' };
63
- const result = partListUnionToString(part);
64
- expect(result).toBe('hello');
65
- });
66
- it('should return an empty string for an unknown part type', () => {
67
- const part = {};
68
- const result = partListUnionToString(part);
69
- expect(result).toBe('');
70
- });
71
- });
72
- //# sourceMappingURL=geminiRequest.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geminiRequest.test.js","sourceRoot":"","sources":["../../../src/core/geminiRequest.test.ts"],"names":[],"mappings":"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"}
@@ -1,126 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { z } from 'zod';
7
- /**
8
- * The reserved server name for the IDE's MCP server.
9
- */
10
- export declare const IDE_SERVER_NAME = "_ide_server";
11
- /**
12
- * Zod schema for validating a cursor position.
13
- */
14
- export declare const CursorSchema: z.ZodObject<{
15
- line: z.ZodNumber;
16
- character: z.ZodNumber;
17
- }, "strip", z.ZodTypeAny, {
18
- line: number;
19
- character: number;
20
- }, {
21
- line: number;
22
- character: number;
23
- }>;
24
- export type Cursor = z.infer<typeof CursorSchema>;
25
- /**
26
- * Zod schema for validating an active file context from the IDE.
27
- */
28
- export declare const ActiveFileSchema: z.ZodObject<{
29
- filePath: z.ZodString;
30
- cursor: z.ZodOptional<z.ZodObject<{
31
- line: z.ZodNumber;
32
- character: z.ZodNumber;
33
- }, "strip", z.ZodTypeAny, {
34
- line: number;
35
- character: number;
36
- }, {
37
- line: number;
38
- character: number;
39
- }>>;
40
- }, "strip", z.ZodTypeAny, {
41
- filePath: string;
42
- cursor?: {
43
- line: number;
44
- character: number;
45
- } | undefined;
46
- }, {
47
- filePath: string;
48
- cursor?: {
49
- line: number;
50
- character: number;
51
- } | undefined;
52
- }>;
53
- export type ActiveFile = z.infer<typeof ActiveFileSchema>;
54
- /**
55
- * Zod schema for validating the 'ide/activeFileChanged' notification from the IDE.
56
- */
57
- export declare const ActiveFileNotificationSchema: z.ZodObject<{
58
- method: z.ZodLiteral<"ide/activeFileChanged">;
59
- params: z.ZodObject<{
60
- filePath: z.ZodString;
61
- cursor: z.ZodOptional<z.ZodObject<{
62
- line: z.ZodNumber;
63
- character: z.ZodNumber;
64
- }, "strip", z.ZodTypeAny, {
65
- line: number;
66
- character: number;
67
- }, {
68
- line: number;
69
- character: number;
70
- }>>;
71
- }, "strip", z.ZodTypeAny, {
72
- filePath: string;
73
- cursor?: {
74
- line: number;
75
- character: number;
76
- } | undefined;
77
- }, {
78
- filePath: string;
79
- cursor?: {
80
- line: number;
81
- character: number;
82
- } | undefined;
83
- }>;
84
- }, "strip", z.ZodTypeAny, {
85
- method: "ide/activeFileChanged";
86
- params: {
87
- filePath: string;
88
- cursor?: {
89
- line: number;
90
- character: number;
91
- } | undefined;
92
- };
93
- }, {
94
- method: "ide/activeFileChanged";
95
- params: {
96
- filePath: string;
97
- cursor?: {
98
- line: number;
99
- character: number;
100
- } | undefined;
101
- };
102
- }>;
103
- type ActiveFileSubscriber = (activeFile: ActiveFile | undefined) => void;
104
- /**
105
- * Creates a new store for managing the IDE's active file context.
106
- * This factory function encapsulates the state and logic, allowing for the creation
107
- * of isolated instances, which is particularly useful for testing.
108
- *
109
- * @returns An object with methods to interact with the active file context.
110
- */
111
- export declare function createIdeContextStore(): {
112
- setActiveFileContext: (newActiveFile: ActiveFile) => void;
113
- getActiveFileContext: () => ActiveFile | undefined;
114
- subscribeToActiveFile: (subscriber: ActiveFileSubscriber) => () => void;
115
- clearActiveFileContext: () => void;
116
- };
117
- /**
118
- * The default, shared instance of the IDE context store for the application.
119
- */
120
- export declare const ideContext: {
121
- setActiveFileContext: (newActiveFile: ActiveFile) => void;
122
- getActiveFileContext: () => ActiveFile | undefined;
123
- subscribeToActiveFile: (subscriber: ActiveFileSubscriber) => () => void;
124
- clearActiveFileContext: () => void;
125
- };
126
- export {};
@@ -1,98 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { z } from 'zod';
7
- /**
8
- * The reserved server name for the IDE's MCP server.
9
- */
10
- export const IDE_SERVER_NAME = '_ide_server';
11
- /**
12
- * Zod schema for validating a cursor position.
13
- */
14
- export const CursorSchema = z.object({
15
- line: z.number(),
16
- character: z.number(),
17
- });
18
- /**
19
- * Zod schema for validating an active file context from the IDE.
20
- */
21
- export const ActiveFileSchema = z.object({
22
- filePath: z.string(),
23
- cursor: CursorSchema.optional(),
24
- });
25
- /**
26
- * Zod schema for validating the 'ide/activeFileChanged' notification from the IDE.
27
- */
28
- export const ActiveFileNotificationSchema = z.object({
29
- method: z.literal('ide/activeFileChanged'),
30
- params: ActiveFileSchema,
31
- });
32
- /**
33
- * Creates a new store for managing the IDE's active file context.
34
- * This factory function encapsulates the state and logic, allowing for the creation
35
- * of isolated instances, which is particularly useful for testing.
36
- *
37
- * @returns An object with methods to interact with the active file context.
38
- */
39
- export function createIdeContextStore() {
40
- let activeFileContext = undefined;
41
- const subscribers = new Set();
42
- /**
43
- * Notifies all registered subscribers about the current active file context.
44
- */
45
- function notifySubscribers() {
46
- for (const subscriber of subscribers) {
47
- subscriber(activeFileContext);
48
- }
49
- }
50
- /**
51
- * Sets the active file context and notifies all registered subscribers of the change.
52
- * @param newActiveFile The new active file context from the IDE.
53
- */
54
- function setActiveFileContext(newActiveFile) {
55
- activeFileContext = newActiveFile;
56
- notifySubscribers();
57
- }
58
- /**
59
- * Clears the active file context and notifies all registered subscribers of the change.
60
- */
61
- function clearActiveFileContext() {
62
- activeFileContext = undefined;
63
- notifySubscribers();
64
- }
65
- /**
66
- * Retrieves the current active file context.
67
- * @returns The `ActiveFile` object if a file is active, otherwise `undefined`.
68
- */
69
- function getActiveFileContext() {
70
- return activeFileContext;
71
- }
72
- /**
73
- * Subscribes to changes in the active file context.
74
- *
75
- * When the active file context changes, the provided `subscriber` function will be called.
76
- * Note: The subscriber is not called with the current value upon subscription.
77
- *
78
- * @param subscriber The function to be called when the active file context changes.
79
- * @returns A function that, when called, will unsubscribe the provided subscriber.
80
- */
81
- function subscribeToActiveFile(subscriber) {
82
- subscribers.add(subscriber);
83
- return () => {
84
- subscribers.delete(subscriber);
85
- };
86
- }
87
- return {
88
- setActiveFileContext,
89
- getActiveFileContext,
90
- subscribeToActiveFile,
91
- clearActiveFileContext,
92
- };
93
- }
94
- /**
95
- * The default, shared instance of the IDE context store for the application.
96
- */
97
- export const ideContext = createIdeContextStore();
98
- //# sourceMappingURL=ideContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ideContext.js","sourceRoot":"","sources":["../../../src/services/ideContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAC1C,MAAM,EAAE,gBAAgB;CACzB,CAAC,CAAC;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,iBAAiB,GAA2B,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEpD;;OAEG;IACH,SAAS,iBAAiB;QACxB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,oBAAoB,CAAC,aAAyB;QACrD,iBAAiB,GAAG,aAAa,CAAC;QAClC,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,sBAAsB;QAC7B,iBAAiB,GAAG,SAAS,CAAC;QAC9B,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,SAAS,oBAAoB;QAC3B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,qBAAqB,CAAC,UAAgC;QAC7D,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,sBAAsB;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC"}
@@ -1,111 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, beforeEach, vi } from 'vitest';
7
- import { createIdeContextStore } from './ideContext.js';
8
- describe('ideContext - Active File', () => {
9
- let ideContext;
10
- beforeEach(() => {
11
- // Create a fresh, isolated instance for each test
12
- ideContext = createIdeContextStore();
13
- });
14
- it('should return undefined initially for active file context', () => {
15
- expect(ideContext.getActiveFileContext()).toBeUndefined();
16
- });
17
- it('should set and retrieve the active file context', () => {
18
- const testFile = {
19
- filePath: '/path/to/test/file.ts',
20
- cursor: { line: 5, character: 10 },
21
- };
22
- ideContext.setActiveFileContext(testFile);
23
- const activeFile = ideContext.getActiveFileContext();
24
- expect(activeFile).toEqual(testFile);
25
- });
26
- it('should update the active file context when called multiple times', () => {
27
- const firstFile = {
28
- filePath: '/path/to/first.js',
29
- cursor: { line: 1, character: 1 },
30
- };
31
- ideContext.setActiveFileContext(firstFile);
32
- const secondFile = {
33
- filePath: '/path/to/second.py',
34
- cursor: { line: 20, character: 30 },
35
- };
36
- ideContext.setActiveFileContext(secondFile);
37
- const activeFile = ideContext.getActiveFileContext();
38
- expect(activeFile).toEqual(secondFile);
39
- });
40
- it('should handle empty string for file path', () => {
41
- const testFile = {
42
- filePath: '',
43
- cursor: { line: 0, character: 0 },
44
- };
45
- ideContext.setActiveFileContext(testFile);
46
- expect(ideContext.getActiveFileContext()).toEqual(testFile);
47
- });
48
- it('should notify subscribers when active file context changes', () => {
49
- const subscriber1 = vi.fn();
50
- const subscriber2 = vi.fn();
51
- ideContext.subscribeToActiveFile(subscriber1);
52
- ideContext.subscribeToActiveFile(subscriber2);
53
- const testFile = {
54
- filePath: '/path/to/subscribed.ts',
55
- cursor: { line: 15, character: 25 },
56
- };
57
- ideContext.setActiveFileContext(testFile);
58
- expect(subscriber1).toHaveBeenCalledTimes(1);
59
- expect(subscriber1).toHaveBeenCalledWith(testFile);
60
- expect(subscriber2).toHaveBeenCalledTimes(1);
61
- expect(subscriber2).toHaveBeenCalledWith(testFile);
62
- // Test with another update
63
- const newFile = {
64
- filePath: '/path/to/new.js',
65
- cursor: { line: 1, character: 1 },
66
- };
67
- ideContext.setActiveFileContext(newFile);
68
- expect(subscriber1).toHaveBeenCalledTimes(2);
69
- expect(subscriber1).toHaveBeenCalledWith(newFile);
70
- expect(subscriber2).toHaveBeenCalledTimes(2);
71
- expect(subscriber2).toHaveBeenCalledWith(newFile);
72
- });
73
- it('should stop notifying a subscriber after unsubscribe', () => {
74
- const subscriber1 = vi.fn();
75
- const subscriber2 = vi.fn();
76
- const unsubscribe1 = ideContext.subscribeToActiveFile(subscriber1);
77
- ideContext.subscribeToActiveFile(subscriber2);
78
- ideContext.setActiveFileContext({
79
- filePath: '/path/to/file1.txt',
80
- cursor: { line: 1, character: 1 },
81
- });
82
- expect(subscriber1).toHaveBeenCalledTimes(1);
83
- expect(subscriber2).toHaveBeenCalledTimes(1);
84
- unsubscribe1();
85
- ideContext.setActiveFileContext({
86
- filePath: '/path/to/file2.txt',
87
- cursor: { line: 2, character: 2 },
88
- });
89
- expect(subscriber1).toHaveBeenCalledTimes(1); // Should not be called again
90
- expect(subscriber2).toHaveBeenCalledTimes(2);
91
- });
92
- it('should allow the cursor to be optional', () => {
93
- const testFile = {
94
- filePath: '/path/to/test/file.ts',
95
- };
96
- ideContext.setActiveFileContext(testFile);
97
- const activeFile = ideContext.getActiveFileContext();
98
- expect(activeFile).toEqual(testFile);
99
- });
100
- it('should clear the active file context', () => {
101
- const testFile = {
102
- filePath: '/path/to/test/file.ts',
103
- cursor: { line: 5, character: 10 },
104
- };
105
- ideContext.setActiveFileContext(testFile);
106
- expect(ideContext.getActiveFileContext()).toEqual(testFile);
107
- ideContext.clearActiveFileContext();
108
- expect(ideContext.getActiveFileContext()).toBeUndefined();
109
- });
110
- });
111
- //# sourceMappingURL=ideContext.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ideContext.test.js","sourceRoot":"","sources":["../../../src/services/ideContext.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,UAAoD,CAAC;IAEzD,UAAU,CAAC,GAAG,EAAE;QACd,kDAAkD;QAClD,UAAU,GAAG,qBAAqB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;SACnC,CAAC;QAEF,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClC,CAAC;QACF,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,oBAAoB;YAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;SACpC,CAAC;QACF,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClC,CAAC;QACF,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE5B,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC9C,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;SACpC,CAAC;QACF,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEnD,2BAA2B;QAC3B,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,iBAAiB;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClC,CAAC;QACF,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACnE,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAE9C,UAAU,CAAC,oBAAoB,CAAC;YAC9B,QAAQ,EAAE,oBAAoB;YAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE7C,YAAY,EAAE,CAAC;QAEf,UAAU,CAAC,oBAAoB,CAAC;YAC9B,QAAQ,EAAE,oBAAoB;YAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;QAC3E,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,uBAAuB;SAClC,CAAC;QAEF,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;SACnC,CAAC;QAEF,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5D,UAAU,CAAC,sBAAsB,EAAE,CAAC;QAEpC,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
File without changes