@google/gemini-cli-core 0.1.22 → 0.2.0-preview.1

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 (281) hide show
  1. package/README.md +32 -2
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.d.ts +1 -0
  6. package/dist/src/code_assist/oauth2.js +15 -16
  7. package/dist/src/code_assist/oauth2.js.map +1 -1
  8. package/dist/src/code_assist/oauth2.test.js +53 -3
  9. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  10. package/dist/src/config/config.d.ts +31 -4
  11. package/dist/src/config/config.js +59 -15
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/config.test.js +33 -2
  14. package/dist/src/config/config.test.js.map +1 -1
  15. package/dist/src/config/storage.d.ts +32 -0
  16. package/dist/src/config/storage.js +90 -0
  17. package/dist/src/config/storage.js.map +1 -0
  18. package/dist/src/config/storage.test.js +43 -0
  19. package/dist/src/config/storage.test.js.map +1 -0
  20. package/dist/src/core/client.js +5 -2
  21. package/dist/src/core/client.js.map +1 -1
  22. package/dist/src/core/client.test.js +2 -1
  23. package/dist/src/core/client.test.js.map +1 -1
  24. package/dist/src/core/contentGenerator.js +3 -2
  25. package/dist/src/core/contentGenerator.js.map +1 -1
  26. package/dist/src/core/coreToolScheduler.d.ts +3 -3
  27. package/dist/src/core/coreToolScheduler.js +21 -3
  28. package/dist/src/core/coreToolScheduler.js.map +1 -1
  29. package/dist/src/core/coreToolScheduler.test.js +193 -16
  30. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  31. package/dist/src/core/geminiChat.d.ts +2 -1
  32. package/dist/src/core/geminiChat.js +44 -17
  33. package/dist/src/core/geminiChat.js.map +1 -1
  34. package/dist/src/core/logger.d.ts +3 -1
  35. package/dist/src/core/logger.js +4 -3
  36. package/dist/src/core/logger.js.map +1 -1
  37. package/dist/src/core/logger.test.js +17 -16
  38. package/dist/src/core/logger.test.js.map +1 -1
  39. package/dist/src/core/loggingContentGenerator.d.ts +1 -5
  40. package/dist/src/core/loggingContentGenerator.js +4 -6
  41. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  42. package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
  43. package/dist/src/core/nonInteractiveToolExecutor.js +15 -115
  44. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.test.js +72 -63
  46. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  47. package/dist/src/core/subagent.js +5 -5
  48. package/dist/src/core/subagent.js.map +1 -1
  49. package/dist/src/core/subagent.test.js +3 -3
  50. package/dist/src/core/subagent.test.js.map +1 -1
  51. package/dist/src/core/turn.js +4 -4
  52. package/dist/src/core/turn.js.map +1 -1
  53. package/dist/src/core/turn.test.js +19 -0
  54. package/dist/src/core/turn.test.js.map +1 -1
  55. package/dist/src/generated/git-commit.d.ts +2 -2
  56. package/dist/src/generated/git-commit.js +2 -2
  57. package/dist/src/generated/git-commit.js.map +1 -1
  58. package/dist/src/ide/ide-client.d.ts +8 -2
  59. package/dist/src/ide/ide-client.js +118 -13
  60. package/dist/src/ide/ide-client.js.map +1 -1
  61. package/dist/src/ide/ide-client.test.js +141 -33
  62. package/dist/src/ide/ide-client.test.js.map +1 -1
  63. package/dist/src/ide/ide-installer.js +17 -4
  64. package/dist/src/ide/ide-installer.js.map +1 -1
  65. package/dist/src/ide/ide-installer.test.js +6 -4
  66. package/dist/src/ide/ide-installer.test.js.map +1 -1
  67. package/dist/src/ide/ideContext.d.ts +5 -5
  68. package/dist/src/ide/process-utils.d.ts +10 -5
  69. package/dist/src/ide/process-utils.js +113 -30
  70. package/dist/src/ide/process-utils.js.map +1 -1
  71. package/dist/src/index.d.ts +6 -0
  72. package/dist/src/index.js +6 -0
  73. package/dist/src/index.js.map +1 -1
  74. package/dist/src/mcp/oauth-token-storage.d.ts +0 -2
  75. package/dist/src/mcp/oauth-token-storage.js +2 -5
  76. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  77. package/dist/src/mcp/oauth-token-storage.test.js +1 -0
  78. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  79. package/dist/src/services/chatRecordingService.d.ts +150 -0
  80. package/dist/src/services/chatRecordingService.js +318 -0
  81. package/dist/src/services/chatRecordingService.js.map +1 -0
  82. package/dist/src/services/chatRecordingService.test.js +290 -0
  83. package/dist/src/services/chatRecordingService.test.js.map +1 -0
  84. package/dist/src/services/fileSystemService.d.ts +31 -0
  85. package/dist/src/services/fileSystemService.js +18 -0
  86. package/dist/src/services/fileSystemService.js.map +1 -0
  87. package/dist/src/services/fileSystemService.test.d.ts +6 -0
  88. package/dist/src/services/fileSystemService.test.js +41 -0
  89. package/dist/src/services/fileSystemService.test.js.map +1 -0
  90. package/dist/src/services/gitService.d.ts +3 -1
  91. package/dist/src/services/gitService.js +19 -10
  92. package/dist/src/services/gitService.js.map +1 -1
  93. package/dist/src/services/gitService.test.js +17 -14
  94. package/dist/src/services/gitService.test.js.map +1 -1
  95. package/dist/src/services/shellExecutionService.d.ts +8 -10
  96. package/dist/src/services/shellExecutionService.js +289 -133
  97. package/dist/src/services/shellExecutionService.js.map +1 -1
  98. package/dist/src/services/shellExecutionService.test.js +275 -41
  99. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  100. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +14 -3
  101. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +125 -103
  102. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  103. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +79 -13
  104. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  105. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +10 -1
  106. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +21 -0
  107. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  108. package/dist/src/telemetry/loggers.d.ts +2 -1
  109. package/dist/src/telemetry/loggers.js +12 -3
  110. package/dist/src/telemetry/loggers.js.map +1 -1
  111. package/dist/src/telemetry/loggers.test.js +14 -5
  112. package/dist/src/telemetry/loggers.test.js.map +1 -1
  113. package/dist/src/telemetry/metrics.d.ts +2 -2
  114. package/dist/src/telemetry/metrics.js +6 -2
  115. package/dist/src/telemetry/metrics.js.map +1 -1
  116. package/dist/src/telemetry/sdk.js +3 -3
  117. package/dist/src/telemetry/sdk.js.map +1 -1
  118. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  119. package/dist/src/telemetry/telemetry-utils.js +14 -0
  120. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  121. package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
  122. package/dist/src/telemetry/telemetry-utils.test.js +40 -0
  123. package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
  124. package/dist/src/telemetry/types.d.ts +22 -3
  125. package/dist/src/telemetry/types.js +44 -2
  126. package/dist/src/telemetry/types.js.map +1 -1
  127. package/dist/src/telemetry/uiTelemetry.d.ts +4 -0
  128. package/dist/src/telemetry/uiTelemetry.js +14 -1
  129. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  130. package/dist/src/telemetry/uiTelemetry.test.js +45 -9
  131. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  132. package/dist/src/test-utils/tools.d.ts +8 -2
  133. package/dist/src/test-utils/tools.js +2 -3
  134. package/dist/src/test-utils/tools.js.map +1 -1
  135. package/dist/src/tools/edit.d.ts +1 -1
  136. package/dist/src/tools/edit.js +40 -13
  137. package/dist/src/tools/edit.js.map +1 -1
  138. package/dist/src/tools/edit.test.js +35 -1
  139. package/dist/src/tools/edit.test.js.map +1 -1
  140. package/dist/src/tools/glob.d.ts +1 -1
  141. package/dist/src/tools/glob.js +21 -10
  142. package/dist/src/tools/glob.js.map +1 -1
  143. package/dist/src/tools/glob.test.js +43 -1
  144. package/dist/src/tools/glob.test.js.map +1 -1
  145. package/dist/src/tools/grep.d.ts +1 -1
  146. package/dist/src/tools/grep.js +6 -6
  147. package/dist/src/tools/grep.js.map +1 -1
  148. package/dist/src/tools/grep.test.js +11 -0
  149. package/dist/src/tools/grep.test.js.map +1 -1
  150. package/dist/src/tools/ls.d.ts +1 -1
  151. package/dist/src/tools/ls.js +10 -10
  152. package/dist/src/tools/ls.js.map +1 -1
  153. package/dist/src/tools/ls.test.js +5 -0
  154. package/dist/src/tools/ls.test.js.map +1 -1
  155. package/dist/src/tools/mcp-client-manager.d.ts +38 -0
  156. package/dist/src/tools/mcp-client-manager.js +74 -0
  157. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  158. package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  159. package/dist/src/tools/mcp-client-manager.test.js +39 -0
  160. package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
  161. package/dist/src/tools/mcp-client.d.ts +50 -0
  162. package/dist/src/tools/mcp-client.js +143 -22
  163. package/dist/src/tools/mcp-client.js.map +1 -1
  164. package/dist/src/tools/mcp-client.test.js +83 -302
  165. package/dist/src/tools/mcp-client.test.js.map +1 -1
  166. package/dist/src/tools/mcp-tool.js +12 -2
  167. package/dist/src/tools/mcp-tool.js.map +1 -1
  168. package/dist/src/tools/mcp-tool.test.js +37 -20
  169. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  170. package/dist/src/tools/memoryTool.d.ts +1 -1
  171. package/dist/src/tools/memoryTool.js +8 -8
  172. package/dist/src/tools/memoryTool.js.map +1 -1
  173. package/dist/src/tools/memoryTool.test.js +13 -1
  174. package/dist/src/tools/memoryTool.test.js.map +1 -1
  175. package/dist/src/tools/read-file.d.ts +1 -1
  176. package/dist/src/tools/read-file.js +15 -39
  177. package/dist/src/tools/read-file.js.map +1 -1
  178. package/dist/src/tools/read-file.test.js +13 -2
  179. package/dist/src/tools/read-file.test.js.map +1 -1
  180. package/dist/src/tools/read-many-files.d.ts +0 -1
  181. package/dist/src/tools/read-many-files.js +37 -22
  182. package/dist/src/tools/read-many-files.js.map +1 -1
  183. package/dist/src/tools/read-many-files.test.js +76 -4
  184. package/dist/src/tools/read-many-files.test.js.map +1 -1
  185. package/dist/src/tools/ripGrep.d.ts +46 -0
  186. package/dist/src/tools/ripGrep.js +368 -0
  187. package/dist/src/tools/ripGrep.js.map +1 -0
  188. package/dist/src/tools/ripGrep.test.d.ts +6 -0
  189. package/dist/src/tools/ripGrep.test.js +874 -0
  190. package/dist/src/tools/ripGrep.test.js.map +1 -0
  191. package/dist/src/tools/shell.d.ts +1 -1
  192. package/dist/src/tools/shell.js +12 -26
  193. package/dist/src/tools/shell.js.map +1 -1
  194. package/dist/src/tools/shell.test.js +13 -20
  195. package/dist/src/tools/shell.test.js.map +1 -1
  196. package/dist/src/tools/tool-error.d.ts +16 -1
  197. package/dist/src/tools/tool-error.js +24 -0
  198. package/dist/src/tools/tool-error.js.map +1 -1
  199. package/dist/src/tools/tool-registry.d.ts +5 -0
  200. package/dist/src/tools/tool-registry.js +20 -5
  201. package/dist/src/tools/tool-registry.js.map +1 -1
  202. package/dist/src/tools/tool-registry.test.js +76 -18
  203. package/dist/src/tools/tool-registry.test.js.map +1 -1
  204. package/dist/src/tools/tools.d.ts +4 -6
  205. package/dist/src/tools/tools.js +12 -0
  206. package/dist/src/tools/tools.js.map +1 -1
  207. package/dist/src/tools/tools.test.js +0 -1
  208. package/dist/src/tools/tools.test.js.map +1 -1
  209. package/dist/src/tools/web-fetch.d.ts +1 -1
  210. package/dist/src/tools/web-fetch.js +10 -12
  211. package/dist/src/tools/web-fetch.js.map +1 -1
  212. package/dist/src/tools/web-fetch.test.js +55 -16
  213. package/dist/src/tools/web-fetch.test.js.map +1 -1
  214. package/dist/src/tools/web-search.d.ts +1 -1
  215. package/dist/src/tools/web-search.js +27 -11
  216. package/dist/src/tools/web-search.js.map +1 -1
  217. package/dist/src/tools/web-search.test.js +69 -1
  218. package/dist/src/tools/web-search.test.js.map +1 -1
  219. package/dist/src/tools/write-file.d.ts +1 -1
  220. package/dist/src/tools/write-file.js +14 -11
  221. package/dist/src/tools/write-file.js.map +1 -1
  222. package/dist/src/tools/write-file.test.js +28 -38
  223. package/dist/src/tools/write-file.test.js.map +1 -1
  224. package/dist/src/utils/editCorrector.test.js +1 -0
  225. package/dist/src/utils/editCorrector.test.js.map +1 -1
  226. package/dist/src/utils/editor.js +1 -1
  227. package/dist/src/utils/editor.js.map +1 -1
  228. package/dist/src/utils/editor.test.js +1 -1
  229. package/dist/src/utils/editor.test.js.map +1 -1
  230. package/dist/src/utils/environmentContext.js +2 -2
  231. package/dist/src/utils/environmentContext.js.map +1 -1
  232. package/dist/src/utils/environmentContext.test.js +3 -2
  233. package/dist/src/utils/environmentContext.test.js.map +1 -1
  234. package/dist/src/utils/fileUtils.d.ts +4 -8
  235. package/dist/src/utils/fileUtils.js +17 -20
  236. package/dist/src/utils/fileUtils.js.map +1 -1
  237. package/dist/src/utils/fileUtils.test.js +18 -17
  238. package/dist/src/utils/fileUtils.test.js.map +1 -1
  239. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  240. package/dist/src/utils/filesearch/fileSearch.js +3 -2
  241. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  242. package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
  243. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  244. package/dist/src/utils/getPty.d.ts +19 -0
  245. package/dist/src/utils/getPty.js +23 -0
  246. package/dist/src/utils/getPty.js.map +1 -0
  247. package/dist/src/utils/installationManager.d.ts +16 -0
  248. package/dist/src/utils/installationManager.js +50 -0
  249. package/dist/src/utils/installationManager.js.map +1 -0
  250. package/dist/src/utils/installationManager.test.d.ts +6 -0
  251. package/dist/src/utils/installationManager.test.js +83 -0
  252. package/dist/src/utils/installationManager.test.js.map +1 -0
  253. package/dist/src/utils/language-detection.d.ts +6 -0
  254. package/dist/src/utils/language-detection.js +101 -0
  255. package/dist/src/utils/language-detection.js.map +1 -0
  256. package/dist/src/utils/memoryDiscovery.js +54 -20
  257. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  258. package/dist/src/utils/memoryDiscovery.test.js +37 -0
  259. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  260. package/dist/src/utils/paths.d.ts +0 -17
  261. package/dist/src/utils/paths.js +0 -26
  262. package/dist/src/utils/paths.js.map +1 -1
  263. package/dist/src/utils/userAccountManager.d.ts +20 -0
  264. package/dist/src/utils/userAccountManager.js +114 -0
  265. package/dist/src/utils/userAccountManager.js.map +1 -0
  266. package/dist/src/utils/userAccountManager.test.d.ts +6 -0
  267. package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +98 -28
  268. package/dist/src/utils/userAccountManager.test.js.map +1 -0
  269. package/dist/tsconfig.tsbuildinfo +1 -1
  270. package/package.json +20 -10
  271. package/dist/src/utils/user_account.d.ts +0 -9
  272. package/dist/src/utils/user_account.js +0 -99
  273. package/dist/src/utils/user_account.js.map +0 -1
  274. package/dist/src/utils/user_account.test.js.map +0 -1
  275. package/dist/src/utils/user_id.d.ts +0 -11
  276. package/dist/src/utils/user_id.js +0 -49
  277. package/dist/src/utils/user_id.js.map +0 -1
  278. package/dist/src/utils/user_id.test.js +0 -21
  279. package/dist/src/utils/user_id.test.js.map +0 -1
  280. /package/dist/src/{utils/user_account.test.d.ts → config/storage.test.d.ts} +0 -0
  281. /package/dist/src/{utils/user_id.test.d.ts → services/chatRecordingService.test.d.ts} +0 -0
@@ -4,11 +4,10 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { HttpsProxyAgent } from 'https-proxy-agent';
7
- import { EndSessionEvent, } from '../types.js';
8
7
  import { EventMetadataKey } from './event-metadata-key.js';
8
+ import { InstallationManager } from '../../utils/installationManager.js';
9
+ import { UserAccountManager } from '../../utils/userAccountManager.js';
9
10
  import { safeJsonStringify } from '../../utils/safeJsonStringify.js';
10
- import { getCachedGoogleAccount, getLifetimeGoogleAccounts, } from '../../utils/user_account.js';
11
- import { getInstallationId } from '../../utils/user_id.js';
12
11
  import { FixedDeque } from 'mnemonist';
13
12
  import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js';
14
13
  import { DetectedIde, detectIde } from '../../ide/detect-ide.js';
@@ -17,6 +16,7 @@ export var EventNames;
17
16
  EventNames["START_SESSION"] = "start_session";
18
17
  EventNames["NEW_PROMPT"] = "new_prompt";
19
18
  EventNames["TOOL_CALL"] = "tool_call";
19
+ EventNames["FILE_OPERATION"] = "file_operation";
20
20
  EventNames["API_REQUEST"] = "api_request";
21
21
  EventNames["API_RESPONSE"] = "api_response";
22
22
  EventNames["API_ERROR"] = "api_error";
@@ -76,6 +76,10 @@ const MAX_RETRY_EVENTS = 100;
76
76
  export class ClearcutLogger {
77
77
  static instance;
78
78
  config;
79
+ sessionData = [];
80
+ promptId = '';
81
+ installationManager;
82
+ userAccountManager;
79
83
  /**
80
84
  * Queue of pending events that need to be flushed to the server. New events
81
85
  * are added to this queue and then flushed on demand (via `flushToClearcut`)
@@ -97,6 +101,9 @@ export class ClearcutLogger {
97
101
  constructor(config) {
98
102
  this.config = config;
99
103
  this.events = new FixedDeque(Array, MAX_EVENTS);
104
+ this.promptId = config?.getSessionId() ?? '';
105
+ this.installationManager = new InstallationManager();
106
+ this.userAccountManager = new UserAccountManager();
100
107
  }
101
108
  static getInstance(config) {
102
109
  if (config === undefined || !config?.getUsageStatisticsEnabled())
@@ -135,8 +142,12 @@ export class ClearcutLogger {
135
142
  }
136
143
  }
137
144
  createLogEvent(eventName, data = []) {
138
- const email = getCachedGoogleAccount();
139
- data = addDefaultFields(data);
145
+ const email = this.userAccountManager.getCachedGoogleAccount();
146
+ if (eventName !== EventNames.START_SESSION) {
147
+ data.push(...this.sessionData);
148
+ }
149
+ const totalAccounts = this.userAccountManager.getLifetimeGoogleAccounts();
150
+ data = this.addDefaultFields(data, totalAccounts);
140
151
  const logEvent = {
141
152
  console_type: 'GEMINI_CLI',
142
153
  application: 102, // GEMINI_CLI
@@ -148,7 +159,7 @@ export class ClearcutLogger {
148
159
  logEvent.client_email = email;
149
160
  }
150
161
  else {
151
- logEvent.client_install_id = getInstallationId();
162
+ logEvent.client_install_id = this.installationManager.getInstallationId();
152
163
  }
153
164
  return logEvent;
154
165
  }
@@ -233,10 +244,6 @@ export class ClearcutLogger {
233
244
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MODEL,
234
245
  value: event.model,
235
246
  },
236
- {
237
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
238
- value: this.config?.getSessionId() ?? '',
239
- },
240
247
  {
241
248
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_EMBEDDING_MODEL,
242
249
  value: event.embedding_model,
@@ -286,14 +293,21 @@ export class ClearcutLogger {
286
293
  value: event.telemetry_log_user_prompts_enabled.toString(),
287
294
  },
288
295
  {
289
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_VERSION,
290
- value: CLI_VERSION,
296
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_SERVERS_COUNT,
297
+ value: event.mcp_servers_count
298
+ ? event.mcp_servers_count.toString()
299
+ : '',
291
300
  },
292
301
  {
293
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_GIT_COMMIT_HASH,
294
- value: GIT_COMMIT_INFO,
302
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_TOOLS_COUNT,
303
+ value: event.mcp_tools_count?.toString() ?? '',
304
+ },
305
+ {
306
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_TOOLS,
307
+ value: event.mcp_tools ? event.mcp_tools : '',
295
308
  },
296
309
  ];
310
+ this.sessionData = data;
297
311
  // Flush start event immediately
298
312
  this.enqueueLogEvent(this.createLogEvent(EventNames.START_SESSION, data));
299
313
  this.flushToClearcut().catch((error) => {
@@ -301,23 +315,12 @@ export class ClearcutLogger {
301
315
  });
302
316
  }
303
317
  logNewPromptEvent(event) {
318
+ this.promptId = event.prompt_id;
304
319
  const data = [
305
320
  {
306
321
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_USER_PROMPT_LENGTH,
307
322
  value: JSON.stringify(event.prompt_length),
308
323
  },
309
- {
310
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
311
- value: this.config?.getSessionId() ?? '',
312
- },
313
- {
314
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
315
- value: JSON.stringify(event.prompt_id),
316
- },
317
- {
318
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
319
- value: JSON.stringify(event.auth_type),
320
- },
321
324
  ];
322
325
  this.enqueueLogEvent(this.createLogEvent(EventNames.NEW_PROMPT, data));
323
326
  this.flushIfNeeded();
@@ -328,10 +331,6 @@ export class ClearcutLogger {
328
331
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
329
332
  value: JSON.stringify(event.function_name),
330
333
  },
331
- {
332
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
333
- value: JSON.stringify(event.prompt_id),
334
- },
335
334
  {
336
335
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_DECISION,
337
336
  value: JSON.stringify(event.decision),
@@ -352,6 +351,10 @@ export class ClearcutLogger {
352
351
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_ERROR_TYPE,
353
352
  value: JSON.stringify(event.error_type),
354
353
  },
354
+ {
355
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_TYPE,
356
+ value: JSON.stringify(event.tool_type),
357
+ },
355
358
  ];
356
359
  if (event.metadata) {
357
360
  const metadataMapping = {
@@ -373,16 +376,61 @@ export class ClearcutLogger {
373
376
  this.enqueueLogEvent(logEvent);
374
377
  this.flushIfNeeded();
375
378
  }
379
+ logFileOperationEvent(event) {
380
+ const data = [
381
+ {
382
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
383
+ value: JSON.stringify(event.tool_name),
384
+ },
385
+ {
386
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_FILE_OPERATION_TYPE,
387
+ value: JSON.stringify(event.operation),
388
+ },
389
+ {
390
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_FILE_OPERATION_LINES,
391
+ value: JSON.stringify(event.lines),
392
+ },
393
+ {
394
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_FILE_OPERATION_MIMETYPE,
395
+ value: JSON.stringify(event.mimetype),
396
+ },
397
+ {
398
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_FILE_OPERATION_EXTENSION,
399
+ value: JSON.stringify(event.extension),
400
+ },
401
+ ];
402
+ if (event.programming_language) {
403
+ data.push({
404
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROGRAMMING_LANGUAGE,
405
+ value: event.programming_language,
406
+ });
407
+ }
408
+ if (event.diff_stat) {
409
+ const metadataMapping = {
410
+ ai_added_lines: EventMetadataKey.GEMINI_CLI_AI_ADDED_LINES,
411
+ ai_removed_lines: EventMetadataKey.GEMINI_CLI_AI_REMOVED_LINES,
412
+ user_added_lines: EventMetadataKey.GEMINI_CLI_USER_ADDED_LINES,
413
+ user_removed_lines: EventMetadataKey.GEMINI_CLI_USER_REMOVED_LINES,
414
+ };
415
+ for (const [key, gemini_cli_key] of Object.entries(metadataMapping)) {
416
+ if (event.diff_stat[key] !== undefined) {
417
+ data.push({
418
+ gemini_cli_key,
419
+ value: JSON.stringify(event.diff_stat[key]),
420
+ });
421
+ }
422
+ }
423
+ }
424
+ const logEvent = this.createLogEvent(EventNames.FILE_OPERATION, data);
425
+ this.enqueueLogEvent(logEvent);
426
+ this.flushIfNeeded();
427
+ }
376
428
  logApiRequestEvent(event) {
377
429
  const data = [
378
430
  {
379
431
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_REQUEST_MODEL,
380
432
  value: JSON.stringify(event.model),
381
433
  },
382
- {
383
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
384
- value: JSON.stringify(event.prompt_id),
385
- },
386
434
  ];
387
435
  this.enqueueLogEvent(this.createLogEvent(EventNames.API_REQUEST, data));
388
436
  this.flushIfNeeded();
@@ -393,10 +441,6 @@ export class ClearcutLogger {
393
441
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_MODEL,
394
442
  value: JSON.stringify(event.model),
395
443
  },
396
- {
397
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
398
- value: JSON.stringify(event.prompt_id),
399
- },
400
444
  {
401
445
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_STATUS_CODE,
402
446
  value: JSON.stringify(event.status_code),
@@ -429,10 +473,6 @@ export class ClearcutLogger {
429
473
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_TOOL_TOKEN_COUNT,
430
474
  value: JSON.stringify(event.tool_token_count),
431
475
  },
432
- {
433
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
434
- value: JSON.stringify(event.auth_type),
435
- },
436
476
  ];
437
477
  this.enqueueLogEvent(this.createLogEvent(EventNames.API_RESPONSE, data));
438
478
  this.flushIfNeeded();
@@ -443,10 +483,6 @@ export class ClearcutLogger {
443
483
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_MODEL,
444
484
  value: JSON.stringify(event.model),
445
485
  },
446
- {
447
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
448
- value: JSON.stringify(event.prompt_id),
449
- },
450
486
  {
451
487
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_TYPE,
452
488
  value: JSON.stringify(event.error_type),
@@ -459,10 +495,6 @@ export class ClearcutLogger {
459
495
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_DURATION_MS,
460
496
  value: JSON.stringify(event.duration_ms),
461
497
  },
462
- {
463
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
464
- value: JSON.stringify(event.auth_type),
465
- },
466
498
  ];
467
499
  this.enqueueLogEvent(this.createLogEvent(EventNames.API_ERROR, data));
468
500
  this.flushIfNeeded();
@@ -480,28 +512,14 @@ export class ClearcutLogger {
480
512
  ];
481
513
  this.enqueueLogEvent(this.createLogEvent(EventNames.CHAT_COMPRESSION, data));
482
514
  }
483
- logFlashFallbackEvent(event) {
484
- const data = [
485
- {
486
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
487
- value: JSON.stringify(event.auth_type),
488
- },
489
- {
490
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
491
- value: this.config?.getSessionId() ?? '',
492
- },
493
- ];
494
- this.enqueueLogEvent(this.createLogEvent(EventNames.FLASH_FALLBACK, data));
515
+ logFlashFallbackEvent() {
516
+ this.enqueueLogEvent(this.createLogEvent(EventNames.FLASH_FALLBACK, []));
495
517
  this.flushToClearcut().catch((error) => {
496
518
  console.debug('Error flushing to Clearcut:', error);
497
519
  });
498
520
  }
499
521
  logLoopDetectedEvent(event) {
500
522
  const data = [
501
- {
502
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
503
- value: JSON.stringify(event.prompt_id),
504
- },
505
523
  {
506
524
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_LOOP_DETECTED_TYPE,
507
525
  value: JSON.stringify(event.loop_type),
@@ -512,10 +530,6 @@ export class ClearcutLogger {
512
530
  }
513
531
  logNextSpeakerCheck(event) {
514
532
  const data = [
515
- {
516
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
517
- value: JSON.stringify(event.prompt_id),
518
- },
519
533
  {
520
534
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_RESPONSE_FINISH_REASON,
521
535
  value: JSON.stringify(event.finish_reason),
@@ -524,10 +538,6 @@ export class ClearcutLogger {
524
538
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_NEXT_SPEAKER_CHECK_RESULT,
525
539
  value: JSON.stringify(event.result),
526
540
  },
527
- {
528
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
529
- value: this.config?.getSessionId() ?? '',
530
- },
531
541
  ];
532
542
  this.enqueueLogEvent(this.createLogEvent(EventNames.NEXT_SPEAKER_CHECK, data));
533
543
  this.flushIfNeeded();
@@ -588,19 +598,51 @@ export class ClearcutLogger {
588
598
  this.enqueueLogEvent(this.createLogEvent(EventNames.KITTY_SEQUENCE_OVERFLOW, data));
589
599
  this.flushIfNeeded();
590
600
  }
591
- logEndSessionEvent(event) {
592
- const data = [
593
- {
594
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
595
- value: event?.session_id?.toString() ?? '',
596
- },
597
- ];
601
+ logEndSessionEvent() {
598
602
  // Flush immediately on session end.
599
- this.enqueueLogEvent(this.createLogEvent(EventNames.END_SESSION, data));
603
+ this.enqueueLogEvent(this.createLogEvent(EventNames.END_SESSION, []));
600
604
  this.flushToClearcut().catch((error) => {
601
605
  console.debug('Error flushing to Clearcut:', error);
602
606
  });
603
607
  }
608
+ /**
609
+ * Adds default fields to data, and returns a new data array. This fields
610
+ * should exist on all log events.
611
+ */
612
+ addDefaultFields(data, totalAccounts) {
613
+ const surface = determineSurface();
614
+ const defaultLogMetadata = [
615
+ {
616
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
617
+ value: this.config?.getSessionId() ?? '',
618
+ },
619
+ {
620
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
621
+ value: JSON.stringify(this.config?.getContentGeneratorConfig()?.authType),
622
+ },
623
+ {
624
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_GOOGLE_ACCOUNTS_COUNT,
625
+ value: `${totalAccounts}`,
626
+ },
627
+ {
628
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
629
+ value: surface,
630
+ },
631
+ {
632
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_VERSION,
633
+ value: CLI_VERSION,
634
+ },
635
+ {
636
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_GIT_COMMIT_HASH,
637
+ value: GIT_COMMIT_INFO,
638
+ },
639
+ {
640
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
641
+ value: this.promptId,
642
+ },
643
+ ];
644
+ return [...data, ...defaultLogMetadata];
645
+ }
604
646
  getProxyAgent() {
605
647
  const proxyUrl = this.config?.getProxy();
606
648
  if (!proxyUrl)
@@ -615,8 +657,7 @@ export class ClearcutLogger {
615
657
  }
616
658
  }
617
659
  shutdown() {
618
- const event = new EndSessionEvent(this.config);
619
- this.logEndSessionEvent(event);
660
+ this.logEndSessionEvent();
620
661
  }
621
662
  requeueFailedEvents(eventsToSend) {
622
663
  // Add the events back to the front of the queue to be retried, but limit retry queue size
@@ -650,25 +691,6 @@ export class ClearcutLogger {
650
691
  }
651
692
  }
652
693
  }
653
- /**
654
- * Adds default fields to data, and returns a new data array. This fields
655
- * should exist on all log events.
656
- */
657
- function addDefaultFields(data) {
658
- const totalAccounts = getLifetimeGoogleAccounts();
659
- const surface = determineSurface();
660
- const defaultLogMetadata = [
661
- {
662
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_GOOGLE_ACCOUNTS_COUNT,
663
- value: `${totalAccounts}`,
664
- },
665
- {
666
- gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
667
- value: surface,
668
- },
669
- ];
670
- return [...data, ...defaultLogMetadata];
671
- }
672
694
  export const TEST_ONLY = {
673
695
  MAX_RETRY_EVENTS,
674
696
  MAX_EVENTS,
@@ -1 +1 @@
1
- {"version":3,"file":"clearcut-logger.js","sourceRoot":"","sources":["../../../../src/telemetry/clearcut-logger/clearcut-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clearcut-logger.js","sourceRoot":"","sources":["../../../../src/telemetry/clearcut-logger/clearcut-logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAiBpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,6CAA+B,CAAA;IAC/B,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,+CAAiC,CAAA;IACjC,yCAA2B,CAAA;IAC3B,2CAA6B,CAAA;IAC7B,qCAAuB,CAAA;IACvB,yCAA2B,CAAA;IAC3B,+CAAiC,CAAA;IACjC,6CAA+B,CAAA;IAC/B,uDAAyC,CAAA;IACzC,6CAA+B,CAAA;IAC/B,iEAAmD,CAAA;IACnD,+CAAiC,CAAA;IACjC,iEAAmD,CAAA;IACnD,mDAAqC,CAAA;AACvC,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AA+BD;;;;;;;;GAQG;AACH,SAAS,gBAAgB;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,SAAS,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,0DAA0D,CAAC;AAEhF;;GAEG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;GAEG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,wGAAwG;AACxG,sGAAsG;AACtG,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,QAAQ,CAAiB;IAChC,MAAM,CAAU;IAChB,WAAW,GAAiB,EAAE,CAAC;IAC/B,QAAQ,GAAW,EAAE,CAAC;IACb,mBAAmB,CAAsB;IACzC,kBAAkB,CAAqB;IAExD;;;OAGG;IACc,MAAM,CAA8B;IAErD;;OAEG;IACK,aAAa,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3C;;;OAGG;IACK,QAAQ,GAAY,KAAK,CAAC;IAElC;;OAEG;IACK,YAAY,GAAY,KAAK,CAAC;IAEtC,YAAoB,MAAc;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAkB,KAAK,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACrD,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAe;QAChC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,yBAAyB,EAAE;YAC9D,OAAO,SAAS,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,cAAc,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,aAAa;QAClB,uFAAuF;QACvF,cAAc,CAAC,QAAQ,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,KAAe;QAC7B,IAAI,CAAC;YACH,mEAAmE;YACnE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC;YAErD,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,sCAAsC;YAC7D,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf;oBACE,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;oBACzB,qBAAqB,EAAE,iBAAiB,CAAC,KAAK,CAAC;iBAChD;aACF,CAAC,CAAC;YAEH,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CACX,yEAAyE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAC7F,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CAAC,SAAqB,EAAE,OAAqB,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QAE/D,IAAI,SAAS,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;QAE1E,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAa;YACzB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,GAAG,EAAE,aAAa;YAC/B,UAAU,EAAE,SAAmB;YAC/B,cAAc,EAAE,CAAC,IAAI,CAAC;SACvB,CAAC;QAEF,iHAAiH;QACjH,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;QAC5E,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,iBAAiB,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CACX,mEAAmE,CACpE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAuB,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,OAAO,GAAiB;YAC5B;gBACE,eAAe,EAAE,SAAS;gBAC1B,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE;gBAC3B,SAAS,EAAE,YAAY;aACxB;SACF,CAAC;QAEF,IAAI,MAAM,GAAgB,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;gBACzC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBAChC,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,GAAG;oBACP,GAAG,MAAM;oBACT,iBAAiB;iBAClB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CACX,mCAAmC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAC7E,CAAC;gBACJ,CAAC;gBAED,mCAAmC;gBACnC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAU,CAAC,CAAC;YAC1D,CAAC;YAED,mCAAmC;YACnC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,+DAA+D;QAC/D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,oCAAoC;YACpC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB,CAAC,KAAwB;QAC3C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,8BAA8B;gBAC/D,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,wCAAwC;gBAC3D,KAAK,EAAE,KAAK,CAAC,eAAe;aAC7B;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE;aACxC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,KAAK,CAAC,kBAAkB;aAChC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,sCAAsC;gBACvE,KAAK,EAAE,KAAK,CAAC,aAAa;aAC3B;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,wCAAwC;gBAC3D,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE;aACxC;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,2CAA2C;gBAC9D,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;aAC1C;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,2CAA2C;gBAC9D,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;aACtC;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,2CAA2C;gBAC9D,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;aAC1C;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,oCAAoC;gBACrE,KAAK,EAAE,KAAK,CAAC,WAAW;aACzB;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,2CAA2C;gBAC9D,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;aAC1C;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,0CAA0C;gBAC7D,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;aAC1C;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,2DAA2D;gBAC9E,KAAK,EAAE,KAAK,CAAC,kCAAkC,CAAC,QAAQ,EAAE;aAC3D;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,0CAA0C;gBAC7D,KAAK,EAAE,KAAK,CAAC,iBAAiB;oBAC5B,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;oBACpC,CAAC,CAAC,EAAE;aACP;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,wCAAwC;gBAC3D,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC/C;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,kCAAkC;gBACnE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;aAC9C;SACF,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,gCAAgC;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,KAAsB;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QAChC,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;aAC3C;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB,CAAC,KAAoB;QACnC,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,yBAAyB;gBAC1D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;aAC3C;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;aACtC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,4BAA4B;gBAC7D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;aACrC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;aACzC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,+BAA+B;gBAChE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;aACxC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,oBAAoB;gBACrD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC;SACF,CAAC;QAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,eAAe,GAAwC;gBAC3D,cAAc,EAAE,gBAAgB,CAAC,yBAAyB;gBAC1D,gBAAgB,EAAE,gBAAgB,CAAC,2BAA2B;gBAC9D,gBAAgB,EAAE,gBAAgB,CAAC,2BAA2B;gBAC9D,kBAAkB,EAAE,gBAAgB,CAAC,6BAA6B;aACnE,CAAC;YAEF,KAAK,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBACtC,IAAI,CAAC,IAAI,CAAC;wBACR,cAAc;wBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;qBAC3C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,qBAAqB,CAAC,KAAyB;QAC7C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,yBAAyB;gBAC1D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,8BAA8B;gBAC/D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,+BAA+B;gBAChE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,kCAAkC;gBACnE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;aACtC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC;SACF,CAAC;QAEF,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC;gBACR,cAAc,EAAE,gBAAgB,CAAC,+BAA+B;gBAChE,KAAK,EAAE,KAAK,CAAC,oBAAoB;aAClC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,eAAe,GAAwC;gBAC3D,cAAc,EAAE,gBAAgB,CAAC,yBAAyB;gBAC1D,gBAAgB,EAAE,gBAAgB,CAAC,2BAA2B;gBAC9D,gBAAgB,EAAE,gBAAgB,CAAC,2BAA2B;gBAC9D,kBAAkB,EAAE,gBAAgB,CAAC,6BAA6B;aACnE,CAAC;YAEF,KAAK,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpE,IACE,KAAK,CAAC,SAAS,CAAC,GAAmC,CAAC,KAAK,SAAS,EAClE,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC;wBACR,cAAc;wBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CACnB,KAAK,CAAC,SAAS,CAAC,GAAmC,CAAC,CACrD;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,kBAAkB,CAAC,KAAsB;QACvC,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,4BAA4B;gBAC7D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;aACzC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;aACzC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,4BAA4B;gBAC7D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,yCAAyC;gBAC5D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;aAC/C;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,0CAA0C;gBAC7D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;aAChD;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,0CAA0C;gBAC7D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC;aACxD;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,4CAA4C;gBAC/D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;aAClD;YACD;gBACE,cAAc,EACZ,gBAAgB,CAAC,wCAAwC;gBAC3D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;aAC9C;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB,CAAC,KAAoB;QACnC,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,0BAA0B;gBAC3D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,yBAAyB;gBAC1D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;aACxC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;aACzC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;aACzC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,uBAAuB,CAAC,KAA2B;QACjD,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,oCAAoC;gBACrE,KAAK,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE;aAChC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE;aAC/B;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,KAAwB;QAC3C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,KAA4B;QAC9C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,iCAAiC;gBAClE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;aAC3C;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,oCAAoC;gBACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;aACpC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,CACzD,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,oBAAoB,CAAC,KAAwB;QAC3C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,6BAA6B;gBAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;aACrC;SACF,CAAC;QAEF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC;gBACR,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC;gBACR,cAAc,EAAE,gBAAgB,CAAC,+BAA+B;gBAChE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,6BAA6B,CAAC,KAAiC;QAC7D,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EACZ,gBAAgB,CAAC,wCAAwC;gBAC3D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACnC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAC9D,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,qBAAqB,CAAC,KAAyB;QAC7C,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,8BAA8B;gBAC/D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC;aAC7C;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,6BAA6B,CAAC,KAAiC;QAC7D,MAAM,IAAI,GAAiB;YACzB;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE;aACxC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,mCAAmC;gBACpE,KAAK,EAAE,KAAK,CAAC,kBAAkB;aAChC;SACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAC9D,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,kBAAkB;QAChB,oCAAoC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAkB,EAAE,aAAqB;QACxD,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAEnC,MAAM,kBAAkB,GAAiB;YACvC;gBACE,cAAc,EAAE,gBAAgB,CAAC,qBAAqB;gBACtD,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE;aACzC;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,oBAAoB;gBACrD,KAAK,EAAE,IAAI,CAAC,SAAS,CACnB,IAAI,CAAC,MAAM,EAAE,yBAAyB,EAAE,EAAE,QAAQ,CACnD;aACF;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,gCAAgC;gBACjE,KAAK,EAAE,GAAG,aAAa,EAAE;aAC1B;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,kBAAkB;gBACnD,KAAK,EAAE,OAAO;aACf;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,kBAAkB;gBACnD,KAAK,EAAE,WAAW;aACnB;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,0BAA0B;gBAC3D,KAAK,EAAE,eAAe;aACvB;YACD;gBACE,cAAc,EAAE,gBAAgB,CAAC,oBAAoB;gBACrD,KAAK,EAAE,IAAI,CAAC,QAAQ;aACrB;SACF,CAAC;QACF,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,wFAAwF;QACxF,+CAA+C;QAC/C,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,mBAAmB,CAAC,YAA+B;QACzD,0FAA0F;QAC1F,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mCAAmC;QAEhG,yCAAyC;QACzC,IAAI,YAAY,CAAC,MAAM,GAAG,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAC1E,OAAO,CAAC,IAAI,CACV,4BACE,YAAY,CAAC,MAAM,GAAG,gBACxB,mDACE,YAAY,CAAC,MACf,cAAc,gBAAgB,EAAE,CACjC,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE1E,IAAI,kBAAkB,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CACX,oDAAoD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CACxE,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CACzC,aAAa,CAAC,MAAM,GAAG,kBAAkB,CAC1C,CAAC;QAEF,gEAAgE;QAChE,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,+BAA+B;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CACX,6BAA6B,kBAAkB,kCAAkC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,gBAAgB;IAChB,UAAU;CACX,CAAC"}
@@ -6,13 +6,15 @@
6
6
  import 'vitest';
7
7
  import { vi, describe, it, expect, afterEach, beforeAll, afterAll, } from 'vitest';
8
8
  import { ClearcutLogger, EventNames, TEST_ONLY, } from './clearcut-logger.js';
9
- import * as userAccount from '../../utils/user_account.js';
10
- import * as userId from '../../utils/user_id.js';
9
+ import { AuthType, } from '../../core/contentGenerator.js';
11
10
  import { EventMetadataKey } from './event-metadata-key.js';
12
11
  import { makeFakeConfig } from '../../test-utils/config.js';
13
12
  import { http, HttpResponse } from 'msw';
14
13
  import { server } from '../../mocks/msw.js';
15
- import { makeChatCompressionEvent } from '../types.js';
14
+ import { UserPromptEvent, makeChatCompressionEvent } from '../types.js';
15
+ import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js';
16
+ import { UserAccountManager } from '../../utils/userAccountManager.js';
17
+ import { InstallationManager } from '../../utils/installationManager.js';
16
18
  expect.extend({
17
19
  toHaveEventName(received, name) {
18
20
  const { isNot } = this;
@@ -35,10 +37,10 @@ expect.extend({
35
37
  };
36
38
  },
37
39
  });
38
- vi.mock('../../utils/user_account');
39
- vi.mock('../../utils/user_id');
40
- const mockUserAccount = vi.mocked(userAccount);
41
- const mockUserId = vi.mocked(userId);
40
+ vi.mock('../../utils/userAccountManager.js');
41
+ vi.mock('../../utils/installationManager.js');
42
+ const mockUserAccount = vi.mocked(UserAccountManager.prototype);
43
+ const mockInstallMgr = vi.mocked(InstallationManager.prototype);
42
44
  // TODO(richieforeman): Consider moving this to test setup globally.
43
45
  beforeAll(() => {
44
46
  server.listen({});
@@ -61,7 +63,7 @@ describe('ClearcutLogger', () => {
61
63
  afterEach(() => {
62
64
  vi.unstubAllEnvs();
63
65
  });
64
- function setup({ config = {}, lifetimeGoogleAccounts = 1, cachedGoogleAccount = 'test@google.com', installationId = 'test-installation-id', } = {}) {
66
+ function setup({ config = {}, lifetimeGoogleAccounts = 1, cachedGoogleAccount = 'test@google.com', } = {}) {
65
67
  server.resetHandlers(http.post(CLEARCUT_URL, () => HttpResponse.text(EXAMPLE_RESPONSE)));
66
68
  vi.useFakeTimers();
67
69
  vi.setSystemTime(MOCK_DATE);
@@ -71,7 +73,9 @@ describe('ClearcutLogger', () => {
71
73
  ClearcutLogger.clearInstance();
72
74
  mockUserAccount.getCachedGoogleAccount.mockReturnValue(cachedGoogleAccount);
73
75
  mockUserAccount.getLifetimeGoogleAccounts.mockReturnValue(lifetimeGoogleAccounts);
74
- mockUserId.getInstallationId.mockReturnValue(installationId);
76
+ mockInstallMgr.getInstallationId = vi
77
+ .fn()
78
+ .mockReturnValue('test-installation-id');
75
79
  const logger = ClearcutLogger.getInstance(loggerConfig);
76
80
  return { logger, loggerConfig };
77
81
  }
@@ -110,17 +114,79 @@ describe('ClearcutLogger', () => {
110
114
  lifetimeGoogleAccounts: 9001,
111
115
  });
112
116
  const event = logger?.createLogEvent(EventNames.API_ERROR, []);
113
- expect(event?.event_metadata[0][0]).toEqual({
117
+ expect(event?.event_metadata[0]).toContainEqual({
114
118
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_GOOGLE_ACCOUNTS_COUNT,
115
119
  value: '9001',
116
120
  });
117
121
  });
122
+ it('logs the current surface from a github action', () => {
123
+ const { logger } = setup({});
124
+ vi.stubEnv('GITHUB_SHA', '8675309');
125
+ const event = logger?.createLogEvent(EventNames.CHAT_COMPRESSION, []);
126
+ expect(event?.event_metadata[0]).toContainEqual({
127
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
128
+ value: 'GitHub',
129
+ });
130
+ });
131
+ it('logs default metadata', () => {
132
+ // Define expected values
133
+ const session_id = 'my-session-id';
134
+ const auth_type = AuthType.USE_GEMINI;
135
+ const google_accounts = 123;
136
+ const surface = 'ide-1234';
137
+ const cli_version = CLI_VERSION;
138
+ const git_commit_hash = GIT_COMMIT_INFO;
139
+ const prompt_id = 'my-prompt-123';
140
+ // Setup logger with expected values
141
+ const { logger, loggerConfig } = setup({
142
+ lifetimeGoogleAccounts: google_accounts,
143
+ config: { sessionId: session_id },
144
+ });
145
+ vi.spyOn(loggerConfig, 'getContentGeneratorConfig').mockReturnValue({
146
+ authType: auth_type,
147
+ });
148
+ logger?.logNewPromptEvent(new UserPromptEvent(1, prompt_id)); // prompt_id == session_id before this
149
+ vi.stubEnv('SURFACE', surface);
150
+ // Create log event
151
+ const event = logger?.createLogEvent(EventNames.API_ERROR, []);
152
+ // Ensure expected values exist
153
+ expect(event?.event_metadata[0]).toEqual(expect.arrayContaining([
154
+ {
155
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID,
156
+ value: session_id,
157
+ },
158
+ {
159
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE,
160
+ value: JSON.stringify(auth_type),
161
+ },
162
+ {
163
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_GOOGLE_ACCOUNTS_COUNT,
164
+ value: `${google_accounts}`,
165
+ },
166
+ {
167
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
168
+ value: surface,
169
+ },
170
+ {
171
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_VERSION,
172
+ value: cli_version,
173
+ },
174
+ {
175
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_GIT_COMMIT_HASH,
176
+ value: git_commit_hash,
177
+ },
178
+ {
179
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID,
180
+ value: prompt_id,
181
+ },
182
+ ]));
183
+ });
118
184
  it('logs the current surface', () => {
119
185
  const { logger } = setup({});
120
186
  vi.stubEnv('TERM_PROGRAM', 'vscode');
121
187
  vi.stubEnv('SURFACE', 'ide-1234');
122
188
  const event = logger?.createLogEvent(EventNames.API_ERROR, []);
123
- expect(event?.event_metadata[0][1]).toEqual({
189
+ expect(event?.event_metadata[0]).toContainEqual({
124
190
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
125
191
  value: 'ide-1234',
126
192
  });
@@ -161,14 +227,14 @@ describe('ClearcutLogger', () => {
161
227
  },
162
228
  expectedValue: 'cloudshell',
163
229
  },
164
- ])('logs the current surface for as $expectedValue, preempting vscode detection', ({ env, expectedValue }) => {
230
+ ])('logs the current surface as $expectedValue, preempting vscode detection', ({ env, expectedValue }) => {
165
231
  const { logger } = setup({});
166
232
  for (const [key, value] of Object.entries(env)) {
167
233
  vi.stubEnv(key, value);
168
234
  }
169
235
  vi.stubEnv('TERM_PROGRAM', 'vscode');
170
236
  const event = logger?.createLogEvent(EventNames.API_ERROR, []);
171
- expect(event?.event_metadata[0][1]).toEqual({
237
+ expect(event?.event_metadata[0][3]).toEqual({
172
238
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
173
239
  value: expectedValue,
174
240
  });