@google/gemini-cli-core 0.1.0-development.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 (365) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +156 -0
  3. package/dist/.last_build +0 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +8 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/__mocks__/fs/promises.d.ts +11 -0
  8. package/dist/src/__mocks__/fs/promises.js +17 -0
  9. package/dist/src/__mocks__/fs/promises.js.map +1 -0
  10. package/dist/src/code_assist/codeAssist.d.ts +8 -0
  11. package/dist/src/code_assist/codeAssist.js +19 -0
  12. package/dist/src/code_assist/codeAssist.js.map +1 -0
  13. package/dist/src/code_assist/converter.d.ts +68 -0
  14. package/dist/src/code_assist/converter.js +125 -0
  15. package/dist/src/code_assist/converter.js.map +1 -0
  16. package/dist/src/code_assist/converter.test.d.ts +6 -0
  17. package/dist/src/code_assist/converter.test.js +229 -0
  18. package/dist/src/code_assist/converter.test.js.map +1 -0
  19. package/dist/src/code_assist/oauth2.d.ts +26 -0
  20. package/dist/src/code_assist/oauth2.js +277 -0
  21. package/dist/src/code_assist/oauth2.js.map +1 -0
  22. package/dist/src/code_assist/oauth2.test.d.ts +6 -0
  23. package/dist/src/code_assist/oauth2.test.js +195 -0
  24. package/dist/src/code_assist/oauth2.test.js.map +1 -0
  25. package/dist/src/code_assist/server.d.ts +35 -0
  26. package/dist/src/code_assist/server.js +123 -0
  27. package/dist/src/code_assist/server.js.map +1 -0
  28. package/dist/src/code_assist/server.test.d.ts +6 -0
  29. package/dist/src/code_assist/server.test.js +123 -0
  30. package/dist/src/code_assist/server.test.js.map +1 -0
  31. package/dist/src/code_assist/setup.d.ts +15 -0
  32. package/dist/src/code_assist/setup.js +67 -0
  33. package/dist/src/code_assist/setup.js.map +1 -0
  34. package/dist/src/code_assist/types.d.ts +148 -0
  35. package/dist/src/code_assist/types.js +46 -0
  36. package/dist/src/code_assist/types.js.map +1 -0
  37. package/dist/src/config/config.d.ts +175 -0
  38. package/dist/src/config/config.js +385 -0
  39. package/dist/src/config/config.js.map +1 -0
  40. package/dist/src/config/config.test.d.ts +6 -0
  41. package/dist/src/config/config.test.js +263 -0
  42. package/dist/src/config/config.test.js.map +1 -0
  43. package/dist/src/config/flashFallback.test.d.ts +6 -0
  44. package/dist/src/config/flashFallback.test.js +115 -0
  45. package/dist/src/config/flashFallback.test.js.map +1 -0
  46. package/dist/src/config/models.d.ts +8 -0
  47. package/dist/src/config/models.js +9 -0
  48. package/dist/src/config/models.js.map +1 -0
  49. package/dist/src/core/client.d.ts +39 -0
  50. package/dist/src/core/client.js +386 -0
  51. package/dist/src/core/client.js.map +1 -0
  52. package/dist/src/core/client.test.d.ts +6 -0
  53. package/dist/src/core/client.test.js +630 -0
  54. package/dist/src/core/client.test.js.map +1 -0
  55. package/dist/src/core/contentGenerator.d.ts +29 -0
  56. package/dist/src/core/contentGenerator.js +71 -0
  57. package/dist/src/core/contentGenerator.js.map +1 -0
  58. package/dist/src/core/contentGenerator.test.d.ts +6 -0
  59. package/dist/src/core/contentGenerator.test.js +45 -0
  60. package/dist/src/core/contentGenerator.test.js.map +1 -0
  61. package/dist/src/core/coreToolScheduler.d.ts +104 -0
  62. package/dist/src/core/coreToolScheduler.js +397 -0
  63. package/dist/src/core/coreToolScheduler.js.map +1 -0
  64. package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
  65. package/dist/src/core/coreToolScheduler.test.js +318 -0
  66. package/dist/src/core/coreToolScheduler.test.js.map +1 -0
  67. package/dist/src/core/geminiChat.d.ts +116 -0
  68. package/dist/src/core/geminiChat.js +491 -0
  69. package/dist/src/core/geminiChat.js.map +1 -0
  70. package/dist/src/core/geminiChat.test.d.ts +6 -0
  71. package/dist/src/core/geminiChat.test.js +422 -0
  72. package/dist/src/core/geminiChat.test.js.map +1 -0
  73. package/dist/src/core/geminiRequest.d.ts +13 -0
  74. package/dist/src/core/geminiRequest.js +45 -0
  75. package/dist/src/core/geminiRequest.js.map +1 -0
  76. package/dist/src/core/geminiRequest.test.d.ts +6 -0
  77. package/dist/src/core/geminiRequest.test.js +72 -0
  78. package/dist/src/core/geminiRequest.test.js.map +1 -0
  79. package/dist/src/core/logger.d.ts +35 -0
  80. package/dist/src/core/logger.js +235 -0
  81. package/dist/src/core/logger.js.map +1 -0
  82. package/dist/src/core/logger.test.d.ts +6 -0
  83. package/dist/src/core/logger.test.js +387 -0
  84. package/dist/src/core/logger.test.js.map +1 -0
  85. package/dist/src/core/modelCheck.d.ts +14 -0
  86. package/dist/src/core/modelCheck.js +55 -0
  87. package/dist/src/core/modelCheck.js.map +1 -0
  88. package/dist/src/core/nonInteractiveToolExecutor.d.ts +12 -0
  89. package/dist/src/core/nonInteractiveToolExecutor.js +92 -0
  90. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
  91. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
  92. package/dist/src/core/nonInteractiveToolExecutor.test.js +181 -0
  93. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
  94. package/dist/src/core/prompts.d.ts +12 -0
  95. package/dist/src/core/prompts.js +334 -0
  96. package/dist/src/core/prompts.js.map +1 -0
  97. package/dist/src/core/prompts.test.d.ts +6 -0
  98. package/dist/src/core/prompts.test.js +97 -0
  99. package/dist/src/core/prompts.test.js.map +1 -0
  100. package/dist/src/core/tokenLimits.d.ts +10 -0
  101. package/dist/src/core/tokenLimits.js +27 -0
  102. package/dist/src/core/tokenLimits.js.map +1 -0
  103. package/dist/src/core/turn.d.ts +96 -0
  104. package/dist/src/core/turn.js +125 -0
  105. package/dist/src/core/turn.js.map +1 -0
  106. package/dist/src/core/turn.test.d.ts +6 -0
  107. package/dist/src/core/turn.test.js +236 -0
  108. package/dist/src/core/turn.test.js.map +1 -0
  109. package/dist/src/index.d.ts +46 -0
  110. package/dist/src/index.js +54 -0
  111. package/dist/src/index.js.map +1 -0
  112. package/dist/src/index.test.d.ts +6 -0
  113. package/dist/src/index.test.js +12 -0
  114. package/dist/src/index.test.js.map +1 -0
  115. package/dist/src/services/fileDiscoveryService.d.ts +35 -0
  116. package/dist/src/services/fileDiscoveryService.js +91 -0
  117. package/dist/src/services/fileDiscoveryService.js.map +1 -0
  118. package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
  119. package/dist/src/services/fileDiscoveryService.test.js +102 -0
  120. package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
  121. package/dist/src/services/gitService.d.ts +21 -0
  122. package/dist/src/services/gitService.js +105 -0
  123. package/dist/src/services/gitService.js.map +1 -0
  124. package/dist/src/services/gitService.test.d.ts +6 -0
  125. package/dist/src/services/gitService.test.js +233 -0
  126. package/dist/src/services/gitService.test.js.map +1 -0
  127. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +33 -0
  128. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +364 -0
  129. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
  130. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +43 -0
  131. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +109 -0
  132. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
  133. package/dist/src/telemetry/constants.d.ts +19 -0
  134. package/dist/src/telemetry/constants.js +20 -0
  135. package/dist/src/telemetry/constants.js.map +1 -0
  136. package/dist/src/telemetry/index.d.ts +18 -0
  137. package/dist/src/telemetry/index.js +20 -0
  138. package/dist/src/telemetry/index.js.map +1 -0
  139. package/dist/src/telemetry/loggers.d.ts +13 -0
  140. package/dist/src/telemetry/loggers.js +187 -0
  141. package/dist/src/telemetry/loggers.js.map +1 -0
  142. package/dist/src/telemetry/loggers.test.d.ts +6 -0
  143. package/dist/src/telemetry/loggers.test.js +525 -0
  144. package/dist/src/telemetry/loggers.test.js.map +1 -0
  145. package/dist/src/telemetry/metrics.d.ts +19 -0
  146. package/dist/src/telemetry/metrics.js +144 -0
  147. package/dist/src/telemetry/metrics.js.map +1 -0
  148. package/dist/src/telemetry/metrics.test.d.ts +6 -0
  149. package/dist/src/telemetry/metrics.test.js +162 -0
  150. package/dist/src/telemetry/metrics.test.js.map +1 -0
  151. package/dist/src/telemetry/sdk.d.ts +9 -0
  152. package/dist/src/telemetry/sdk.js +116 -0
  153. package/dist/src/telemetry/sdk.js.map +1 -0
  154. package/dist/src/telemetry/telemetry.test.d.ts +6 -0
  155. package/dist/src/telemetry/telemetry.test.js +50 -0
  156. package/dist/src/telemetry/telemetry.test.js.map +1 -0
  157. package/dist/src/telemetry/types.d.ts +91 -0
  158. package/dist/src/telemetry/types.js +176 -0
  159. package/dist/src/telemetry/types.js.map +1 -0
  160. package/dist/src/telemetry/uiTelemetry.d.ts +67 -0
  161. package/dist/src/telemetry/uiTelemetry.js +131 -0
  162. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  163. package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
  164. package/dist/src/telemetry/uiTelemetry.test.js +411 -0
  165. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
  166. package/dist/src/tools/diffOptions.d.ts +7 -0
  167. package/dist/src/tools/diffOptions.js +10 -0
  168. package/dist/src/tools/diffOptions.js.map +1 -0
  169. package/dist/src/tools/edit.d.ts +84 -0
  170. package/dist/src/tools/edit.js +359 -0
  171. package/dist/src/tools/edit.js.map +1 -0
  172. package/dist/src/tools/edit.test.d.ts +6 -0
  173. package/dist/src/tools/edit.test.js +500 -0
  174. package/dist/src/tools/edit.test.js.map +1 -0
  175. package/dist/src/tools/glob.d.ts +71 -0
  176. package/dist/src/tools/glob.js +215 -0
  177. package/dist/src/tools/glob.js.map +1 -0
  178. package/dist/src/tools/glob.test.d.ts +6 -0
  179. package/dist/src/tools/glob.test.js +293 -0
  180. package/dist/src/tools/glob.test.js.map +1 -0
  181. package/dist/src/tools/grep.d.ts +81 -0
  182. package/dist/src/tools/grep.js +427 -0
  183. package/dist/src/tools/grep.js.map +1 -0
  184. package/dist/src/tools/grep.test.d.ts +6 -0
  185. package/dist/src/tools/grep.test.js +185 -0
  186. package/dist/src/tools/grep.test.js.map +1 -0
  187. package/dist/src/tools/ls.d.ts +94 -0
  188. package/dist/src/tools/ls.js +215 -0
  189. package/dist/src/tools/ls.js.map +1 -0
  190. package/dist/src/tools/mcp-client.d.ts +56 -0
  191. package/dist/src/tools/mcp-client.js +302 -0
  192. package/dist/src/tools/mcp-client.js.map +1 -0
  193. package/dist/src/tools/mcp-client.test.d.ts +6 -0
  194. package/dist/src/tools/mcp-client.test.js +608 -0
  195. package/dist/src/tools/mcp-client.test.js.map +1 -0
  196. package/dist/src/tools/mcp-tool.d.ts +23 -0
  197. package/dist/src/tools/mcp-tool.js +119 -0
  198. package/dist/src/tools/mcp-tool.js.map +1 -0
  199. package/dist/src/tools/mcp-tool.test.d.ts +6 -0
  200. package/dist/src/tools/mcp-tool.test.js +173 -0
  201. package/dist/src/tools/mcp-tool.test.js.map +1 -0
  202. package/dist/src/tools/memoryTool.d.ts +28 -0
  203. package/dist/src/tools/memoryTool.js +171 -0
  204. package/dist/src/tools/memoryTool.js.map +1 -0
  205. package/dist/src/tools/memoryTool.test.d.ts +6 -0
  206. package/dist/src/tools/memoryTool.test.js +181 -0
  207. package/dist/src/tools/memoryTool.test.js.map +1 -0
  208. package/dist/src/tools/modifiable-tool.d.ts +29 -0
  209. package/dist/src/tools/modifiable-tool.js +85 -0
  210. package/dist/src/tools/modifiable-tool.js.map +1 -0
  211. package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
  212. package/dist/src/tools/modifiable-tool.test.js +204 -0
  213. package/dist/src/tools/modifiable-tool.test.js.map +1 -0
  214. package/dist/src/tools/read-file.d.ts +36 -0
  215. package/dist/src/tools/read-file.js +103 -0
  216. package/dist/src/tools/read-file.js.map +1 -0
  217. package/dist/src/tools/read-file.test.d.ts +6 -0
  218. package/dist/src/tools/read-file.test.js +180 -0
  219. package/dist/src/tools/read-file.test.js.map +1 -0
  220. package/dist/src/tools/read-many-files.d.ts +65 -0
  221. package/dist/src/tools/read-many-files.js +344 -0
  222. package/dist/src/tools/read-many-files.js.map +1 -0
  223. package/dist/src/tools/read-many-files.test.d.ts +6 -0
  224. package/dist/src/tools/read-many-files.test.js +300 -0
  225. package/dist/src/tools/read-many-files.test.js.map +1 -0
  226. package/dist/src/tools/shell.d.ts +43 -0
  227. package/dist/src/tools/shell.js +421 -0
  228. package/dist/src/tools/shell.js.map +1 -0
  229. package/dist/src/tools/shell.test.d.ts +6 -0
  230. package/dist/src/tools/shell.test.js +321 -0
  231. package/dist/src/tools/shell.test.js.map +1 -0
  232. package/dist/src/tools/tool-registry.d.ts +67 -0
  233. package/dist/src/tools/tool-registry.js +326 -0
  234. package/dist/src/tools/tool-registry.js.map +1 -0
  235. package/dist/src/tools/tool-registry.test.d.ts +6 -0
  236. package/dist/src/tools/tool-registry.test.js +353 -0
  237. package/dist/src/tools/tool-registry.test.js.map +1 -0
  238. package/dist/src/tools/tools.d.ts +179 -0
  239. package/dist/src/tools/tools.js +88 -0
  240. package/dist/src/tools/tools.js.map +1 -0
  241. package/dist/src/tools/web-fetch.d.ts +29 -0
  242. package/dist/src/tools/web-fetch.js +240 -0
  243. package/dist/src/tools/web-fetch.js.map +1 -0
  244. package/dist/src/tools/web-fetch.test.d.ts +6 -0
  245. package/dist/src/tools/web-fetch.test.js +70 -0
  246. package/dist/src/tools/web-fetch.test.js.map +1 -0
  247. package/dist/src/tools/web-search.d.ts +49 -0
  248. package/dist/src/tools/web-search.js +119 -0
  249. package/dist/src/tools/web-search.js.map +1 -0
  250. package/dist/src/tools/write-file.d.ts +50 -0
  251. package/dist/src/tools/write-file.js +261 -0
  252. package/dist/src/tools/write-file.js.map +1 -0
  253. package/dist/src/tools/write-file.test.d.ts +6 -0
  254. package/dist/src/tools/write-file.test.js +413 -0
  255. package/dist/src/tools/write-file.test.js.map +1 -0
  256. package/dist/src/utils/LruCache.d.ts +13 -0
  257. package/dist/src/utils/LruCache.js +38 -0
  258. package/dist/src/utils/LruCache.js.map +1 -0
  259. package/dist/src/utils/bfsFileSearch.d.ts +22 -0
  260. package/dist/src/utils/bfsFileSearch.js +62 -0
  261. package/dist/src/utils/bfsFileSearch.js.map +1 -0
  262. package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
  263. package/dist/src/utils/bfsFileSearch.test.js +129 -0
  264. package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
  265. package/dist/src/utils/editCorrector.d.ts +53 -0
  266. package/dist/src/utils/editCorrector.js +546 -0
  267. package/dist/src/utils/editCorrector.js.map +1 -0
  268. package/dist/src/utils/editCorrector.test.d.ts +6 -0
  269. package/dist/src/utils/editCorrector.test.js +560 -0
  270. package/dist/src/utils/editCorrector.test.js.map +1 -0
  271. package/dist/src/utils/editor.d.ts +28 -0
  272. package/dist/src/utils/editor.js +163 -0
  273. package/dist/src/utils/editor.js.map +1 -0
  274. package/dist/src/utils/editor.test.d.ts +6 -0
  275. package/dist/src/utils/editor.test.js +293 -0
  276. package/dist/src/utils/editor.test.js.map +1 -0
  277. package/dist/src/utils/errorReporting.d.ts +14 -0
  278. package/dist/src/utils/errorReporting.js +88 -0
  279. package/dist/src/utils/errorReporting.js.map +1 -0
  280. package/dist/src/utils/errorReporting.test.d.ts +6 -0
  281. package/dist/src/utils/errorReporting.test.js +124 -0
  282. package/dist/src/utils/errorReporting.test.js.map +1 -0
  283. package/dist/src/utils/errors.d.ts +14 -0
  284. package/dist/src/utils/errors.js +54 -0
  285. package/dist/src/utils/errors.js.map +1 -0
  286. package/dist/src/utils/fetch.d.ts +11 -0
  287. package/dist/src/utils/fetch.js +51 -0
  288. package/dist/src/utils/fetch.js.map +1 -0
  289. package/dist/src/utils/fileUtils.d.ts +49 -0
  290. package/dist/src/utils/fileUtils.js +284 -0
  291. package/dist/src/utils/fileUtils.js.map +1 -0
  292. package/dist/src/utils/fileUtils.test.d.ts +6 -0
  293. package/dist/src/utils/fileUtils.test.js +321 -0
  294. package/dist/src/utils/fileUtils.test.js.map +1 -0
  295. package/dist/src/utils/flashFallback.integration.test.d.ts +6 -0
  296. package/dist/src/utils/flashFallback.integration.test.js +112 -0
  297. package/dist/src/utils/flashFallback.integration.test.js.map +1 -0
  298. package/dist/src/utils/generateContentResponseUtilities.d.ts +14 -0
  299. package/dist/src/utils/generateContentResponseUtilities.js +92 -0
  300. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  301. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
  302. package/dist/src/utils/generateContentResponseUtilities.test.js +273 -0
  303. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
  304. package/dist/src/utils/getFolderStructure.d.ts +30 -0
  305. package/dist/src/utils/getFolderStructure.js +247 -0
  306. package/dist/src/utils/getFolderStructure.js.map +1 -0
  307. package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
  308. package/dist/src/utils/getFolderStructure.test.js +300 -0
  309. package/dist/src/utils/getFolderStructure.test.js.map +1 -0
  310. package/dist/src/utils/gitIgnoreParser.d.ts +20 -0
  311. package/dist/src/utils/gitIgnoreParser.js +64 -0
  312. package/dist/src/utils/gitIgnoreParser.js.map +1 -0
  313. package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
  314. package/dist/src/utils/gitIgnoreParser.test.js +145 -0
  315. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
  316. package/dist/src/utils/gitUtils.d.ts +17 -0
  317. package/dist/src/utils/gitUtils.js +61 -0
  318. package/dist/src/utils/gitUtils.js.map +1 -0
  319. package/dist/src/utils/memoryDiscovery.d.ts +14 -0
  320. package/dist/src/utils/memoryDiscovery.js +219 -0
  321. package/dist/src/utils/memoryDiscovery.js.map +1 -0
  322. package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
  323. package/dist/src/utils/memoryDiscovery.test.js +432 -0
  324. package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
  325. package/dist/src/utils/memoryImportProcessor.d.ts +35 -0
  326. package/dist/src/utils/memoryImportProcessor.js +141 -0
  327. package/dist/src/utils/memoryImportProcessor.js.map +1 -0
  328. package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
  329. package/dist/src/utils/memoryImportProcessor.test.js +170 -0
  330. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
  331. package/dist/src/utils/messageInspectors.d.ts +8 -0
  332. package/dist/src/utils/messageInspectors.js +16 -0
  333. package/dist/src/utils/messageInspectors.js.map +1 -0
  334. package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  335. package/dist/src/utils/nextSpeakerChecker.js +111 -0
  336. package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
  337. package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
  338. package/dist/src/utils/nextSpeakerChecker.test.js +152 -0
  339. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
  340. package/dist/src/utils/paths.d.ts +47 -0
  341. package/dist/src/utils/paths.js +136 -0
  342. package/dist/src/utils/paths.js.map +1 -0
  343. package/dist/src/utils/retry.d.ts +21 -0
  344. package/dist/src/utils/retry.js +220 -0
  345. package/dist/src/utils/retry.js.map +1 -0
  346. package/dist/src/utils/retry.test.d.ts +6 -0
  347. package/dist/src/utils/retry.test.js +322 -0
  348. package/dist/src/utils/retry.test.js.map +1 -0
  349. package/dist/src/utils/schemaValidator.d.ts +17 -0
  350. package/dist/src/utils/schemaValidator.js +50 -0
  351. package/dist/src/utils/schemaValidator.js.map +1 -0
  352. package/dist/src/utils/session.d.ts +6 -0
  353. package/dist/src/utils/session.js +8 -0
  354. package/dist/src/utils/session.js.map +1 -0
  355. package/dist/src/utils/testUtils.d.ts +29 -0
  356. package/dist/src/utils/testUtils.js +70 -0
  357. package/dist/src/utils/testUtils.js.map +1 -0
  358. package/dist/src/utils/user_id.d.ts +17 -0
  359. package/dist/src/utils/user_id.js +70 -0
  360. package/dist/src/utils/user_id.js.map +1 -0
  361. package/dist/src/utils/user_id.test.d.ts +6 -0
  362. package/dist/src/utils/user_id.test.js +42 -0
  363. package/dist/src/utils/user_id.test.js.map +1 -0
  364. package/dist/tsconfig.tsbuildinfo +1 -0
  365. package/package.json +60 -0
@@ -0,0 +1,364 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Buffer } from 'buffer';
7
+ import * as https from 'https';
8
+ import { EndSessionEvent, } from '../types.js';
9
+ import { EventMetadataKey } from './event-metadata-key.js';
10
+ import { getInstallationId } from '../../utils/user_id.js';
11
+ import { getGoogleAccountId } from '../../utils/user_id.js';
12
+ const start_session_event_name = 'start_session';
13
+ const new_prompt_event_name = 'new_prompt';
14
+ const tool_call_event_name = 'tool_call';
15
+ const api_request_event_name = 'api_request';
16
+ const api_response_event_name = 'api_response';
17
+ const api_error_event_name = 'api_error';
18
+ const end_session_event_name = 'end_session';
19
+ // Singleton class for batch posting log events to Clearcut. When a new event comes in, the elapsed time
20
+ // is checked and events are flushed to Clearcut if at least a minute has passed since the last flush.
21
+ export class ClearcutLogger {
22
+ static instance;
23
+ config;
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Clearcut expects this format.
25
+ events = [];
26
+ last_flush_time = Date.now();
27
+ flush_interval_ms = 1000 * 60; // Wait at least a minute before flushing events.
28
+ constructor(config) {
29
+ this.config = config;
30
+ }
31
+ static getInstance(config) {
32
+ if (config === undefined || !config?.getUsageStatisticsEnabled())
33
+ return undefined;
34
+ if (!ClearcutLogger.instance) {
35
+ ClearcutLogger.instance = new ClearcutLogger(config);
36
+ }
37
+ return ClearcutLogger.instance;
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Clearcut expects this format.
40
+ enqueueLogEvent(event) {
41
+ this.events.push([
42
+ {
43
+ event_time_ms: Date.now(),
44
+ source_extension_json: JSON.stringify(event),
45
+ },
46
+ ]);
47
+ }
48
+ createLogEvent(name, data) {
49
+ return {
50
+ console_type: 'GEMINI_CLI',
51
+ application: 102,
52
+ event_name: name,
53
+ client_install_id: getInstallationId(),
54
+ event_metadata: [data],
55
+ };
56
+ }
57
+ flushIfNeeded() {
58
+ if (Date.now() - this.last_flush_time < this.flush_interval_ms) {
59
+ return;
60
+ }
61
+ // Fire and forget - don't await
62
+ this.flushToClearcut().catch((error) => {
63
+ console.debug('Error flushing to Clearcut:', error);
64
+ });
65
+ }
66
+ async flushToClearcut() {
67
+ if (this.config?.getDebugMode()) {
68
+ console.log('Flushing log events to Clearcut.');
69
+ }
70
+ const eventsToSend = [...this.events];
71
+ this.events.length = 0;
72
+ const googleAccountId = await getGoogleAccountId();
73
+ return new Promise((resolve, reject) => {
74
+ const request = [
75
+ {
76
+ log_source_name: 'CONCORD',
77
+ request_time_ms: Date.now(),
78
+ log_event: eventsToSend,
79
+ // Add UserInfo with the raw Gaia ID
80
+ user_info: googleAccountId
81
+ ? {
82
+ UserID: googleAccountId,
83
+ }
84
+ : undefined,
85
+ },
86
+ ];
87
+ const body = JSON.stringify(request);
88
+ const options = {
89
+ hostname: 'play.googleapis.com',
90
+ path: '/log',
91
+ method: 'POST',
92
+ headers: { 'Content-Length': Buffer.byteLength(body) },
93
+ };
94
+ const bufs = [];
95
+ const req = https.request(options, (res) => {
96
+ res.on('data', (buf) => bufs.push(buf));
97
+ res.on('end', () => {
98
+ resolve(Buffer.concat(bufs));
99
+ });
100
+ });
101
+ req.on('error', (e) => {
102
+ if (this.config?.getDebugMode()) {
103
+ console.log('Clearcut POST request error: ', e);
104
+ }
105
+ // Add the events back to the front of the queue to be retried.
106
+ this.events.unshift(...eventsToSend);
107
+ reject(e);
108
+ });
109
+ req.end(body);
110
+ })
111
+ .then((buf) => {
112
+ try {
113
+ this.last_flush_time = Date.now();
114
+ return this.decodeLogResponse(buf) || {};
115
+ }
116
+ catch (error) {
117
+ console.error('Error flushing log events:', error);
118
+ return {};
119
+ }
120
+ })
121
+ .catch((error) => {
122
+ // Handle all errors to prevent unhandled promise rejections
123
+ console.error('Error flushing log events:', error);
124
+ // Return empty response to maintain the Promise<LogResponse> contract
125
+ return {};
126
+ });
127
+ }
128
+ // Visible for testing. Decodes protobuf-encoded response from Clearcut server.
129
+ decodeLogResponse(buf) {
130
+ // TODO(obrienowen): return specific errors to facilitate debugging.
131
+ if (buf.length < 1) {
132
+ return undefined;
133
+ }
134
+ // The first byte of the buffer is `field<<3 | type`. We're looking for field
135
+ // 1, with type varint, represented by type=0. If the first byte isn't 8, that
136
+ // means field 1 is missing or the message is corrupted. Either way, we return
137
+ // undefined.
138
+ if (buf.readUInt8(0) !== 8) {
139
+ return undefined;
140
+ }
141
+ let ms = BigInt(0);
142
+ let cont = true;
143
+ // In each byte, the most significant bit is the continuation bit. If it's
144
+ // set, we keep going. The lowest 7 bits, are data bits. They are concatenated
145
+ // in reverse order to form the final number.
146
+ for (let i = 1; cont && i < buf.length; i++) {
147
+ const byte = buf.readUInt8(i);
148
+ ms |= BigInt(byte & 0x7f) << BigInt(7 * (i - 1));
149
+ cont = (byte & 0x80) !== 0;
150
+ }
151
+ if (cont) {
152
+ // We have fallen off the buffer without seeing a terminating byte. The
153
+ // message is corrupted.
154
+ return undefined;
155
+ }
156
+ const returnVal = {
157
+ nextRequestWaitMs: Number(ms),
158
+ };
159
+ return returnVal;
160
+ }
161
+ logStartSessionEvent(event) {
162
+ const data = [
163
+ {
164
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MODEL,
165
+ value: event.model,
166
+ },
167
+ {
168
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_EMBEDDING_MODEL,
169
+ value: event.embedding_model,
170
+ },
171
+ {
172
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_SANDBOX,
173
+ value: event.sandbox_enabled.toString(),
174
+ },
175
+ {
176
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_CORE_TOOLS,
177
+ value: event.core_tools_enabled,
178
+ },
179
+ {
180
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_APPROVAL_MODE,
181
+ value: event.approval_mode,
182
+ },
183
+ {
184
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_API_KEY_ENABLED,
185
+ value: event.api_key_enabled.toString(),
186
+ },
187
+ {
188
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED,
189
+ value: event.vertex_ai_enabled.toString(),
190
+ },
191
+ {
192
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED,
193
+ value: event.debug_enabled.toString(),
194
+ },
195
+ {
196
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED,
197
+ value: event.vertex_ai_enabled.toString(),
198
+ },
199
+ {
200
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_SERVERS,
201
+ value: event.mcp_servers,
202
+ },
203
+ {
204
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED,
205
+ value: event.vertex_ai_enabled.toString(),
206
+ },
207
+ {
208
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED,
209
+ value: event.telemetry_enabled.toString(),
210
+ },
211
+ {
212
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED,
213
+ value: event.telemetry_log_user_prompts_enabled.toString(),
214
+ },
215
+ ];
216
+ this.enqueueLogEvent(this.createLogEvent(start_session_event_name, data));
217
+ // Flush start event immediately
218
+ this.flushToClearcut().catch((error) => {
219
+ console.debug('Error flushing start session event to Clearcut:', error);
220
+ });
221
+ }
222
+ logNewPromptEvent(event) {
223
+ const data = [
224
+ {
225
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_USER_PROMPT_LENGTH,
226
+ value: JSON.stringify(event.prompt_length),
227
+ },
228
+ ];
229
+ this.enqueueLogEvent(this.createLogEvent(new_prompt_event_name, data));
230
+ this.flushToClearcut().catch((error) => {
231
+ console.debug('Error flushing to Clearcut:', error);
232
+ });
233
+ }
234
+ logToolCallEvent(event) {
235
+ const data = [
236
+ {
237
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
238
+ value: JSON.stringify(event.function_name),
239
+ },
240
+ {
241
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_DECISION,
242
+ value: JSON.stringify(event.decision),
243
+ },
244
+ {
245
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_SUCCESS,
246
+ value: JSON.stringify(event.success),
247
+ },
248
+ {
249
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_DURATION_MS,
250
+ value: JSON.stringify(event.duration_ms),
251
+ },
252
+ {
253
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_ERROR_MESSAGE,
254
+ value: JSON.stringify(event.error),
255
+ },
256
+ {
257
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_ERROR_TYPE,
258
+ value: JSON.stringify(event.error_type),
259
+ },
260
+ ];
261
+ this.enqueueLogEvent(this.createLogEvent(tool_call_event_name, data));
262
+ this.flushToClearcut().catch((error) => {
263
+ console.debug('Error flushing to Clearcut:', error);
264
+ });
265
+ }
266
+ logApiRequestEvent(event) {
267
+ const data = [
268
+ {
269
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_REQUEST_MODEL,
270
+ value: JSON.stringify(event.model),
271
+ },
272
+ ];
273
+ this.enqueueLogEvent(this.createLogEvent(api_request_event_name, data));
274
+ this.flushToClearcut().catch((error) => {
275
+ console.debug('Error flushing to Clearcut:', error);
276
+ });
277
+ }
278
+ logApiResponseEvent(event) {
279
+ const data = [
280
+ {
281
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_MODEL,
282
+ value: JSON.stringify(event.model),
283
+ },
284
+ {
285
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_STATUS_CODE,
286
+ value: JSON.stringify(event.status_code),
287
+ },
288
+ {
289
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_DURATION_MS,
290
+ value: JSON.stringify(event.duration_ms),
291
+ },
292
+ {
293
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_MESSAGE,
294
+ value: JSON.stringify(event.error),
295
+ },
296
+ {
297
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT,
298
+ value: JSON.stringify(event.input_token_count),
299
+ },
300
+ {
301
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_OUTPUT_TOKEN_COUNT,
302
+ value: JSON.stringify(event.output_token_count),
303
+ },
304
+ {
305
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_CACHED_TOKEN_COUNT,
306
+ value: JSON.stringify(event.cached_content_token_count),
307
+ },
308
+ {
309
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_THINKING_TOKEN_COUNT,
310
+ value: JSON.stringify(event.thoughts_token_count),
311
+ },
312
+ {
313
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_TOOL_TOKEN_COUNT,
314
+ value: JSON.stringify(event.tool_token_count),
315
+ },
316
+ ];
317
+ this.enqueueLogEvent(this.createLogEvent(api_response_event_name, data));
318
+ this.flushToClearcut().catch((error) => {
319
+ console.debug('Error flushing to Clearcut:', error);
320
+ });
321
+ }
322
+ logApiErrorEvent(event) {
323
+ const data = [
324
+ {
325
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_MODEL,
326
+ value: JSON.stringify(event.model),
327
+ },
328
+ {
329
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_TYPE,
330
+ value: JSON.stringify(event.error_type),
331
+ },
332
+ {
333
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_STATUS_CODE,
334
+ value: JSON.stringify(event.status_code),
335
+ },
336
+ {
337
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_DURATION_MS,
338
+ value: JSON.stringify(event.duration_ms),
339
+ },
340
+ ];
341
+ this.enqueueLogEvent(this.createLogEvent(api_error_event_name, data));
342
+ this.flushToClearcut().catch((error) => {
343
+ console.debug('Error flushing to Clearcut:', error);
344
+ });
345
+ }
346
+ logEndSessionEvent(event) {
347
+ const data = [
348
+ {
349
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_END_SESSION_ID,
350
+ value: event?.session_id?.toString() ?? '',
351
+ },
352
+ ];
353
+ this.enqueueLogEvent(this.createLogEvent(end_session_event_name, data));
354
+ // Flush immediately on session end.
355
+ this.flushToClearcut().catch((error) => {
356
+ console.debug('Error flushing to Clearcut:', error);
357
+ });
358
+ }
359
+ shutdown() {
360
+ const event = new EndSessionEvent(this.config);
361
+ this.logEndSessionEvent(event);
362
+ }
363
+ }
364
+ //# sourceMappingURL=clearcut-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearcut-logger.js","sourceRoot":"","sources":["../../../../src/telemetry/clearcut-logger/clearcut-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare enum EventMetadataKey {
7
+ GEMINI_CLI_KEY_UNKNOWN = 0,
8
+ GEMINI_CLI_START_SESSION_MODEL = 1,
9
+ GEMINI_CLI_START_SESSION_EMBEDDING_MODEL = 2,
10
+ GEMINI_CLI_START_SESSION_SANDBOX = 3,
11
+ GEMINI_CLI_START_SESSION_CORE_TOOLS = 4,
12
+ GEMINI_CLI_START_SESSION_APPROVAL_MODE = 5,
13
+ GEMINI_CLI_START_SESSION_API_KEY_ENABLED = 6,
14
+ GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED = 7,
15
+ GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED = 8,
16
+ GEMINI_CLI_START_SESSION_MCP_SERVERS = 9,
17
+ GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED = 10,
18
+ GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED = 11,
19
+ GEMINI_CLI_START_SESSION_RESPECT_GITIGNORE = 12,
20
+ GEMINI_CLI_USER_PROMPT_LENGTH = 13,
21
+ GEMINI_CLI_TOOL_CALL_NAME = 14,
22
+ GEMINI_CLI_TOOL_CALL_DECISION = 15,
23
+ GEMINI_CLI_TOOL_CALL_SUCCESS = 16,
24
+ GEMINI_CLI_TOOL_CALL_DURATION_MS = 17,
25
+ GEMINI_CLI_TOOL_ERROR_MESSAGE = 18,
26
+ GEMINI_CLI_TOOL_CALL_ERROR_TYPE = 19,
27
+ GEMINI_CLI_API_REQUEST_MODEL = 20,
28
+ GEMINI_CLI_API_RESPONSE_MODEL = 21,
29
+ GEMINI_CLI_API_RESPONSE_STATUS_CODE = 22,
30
+ GEMINI_CLI_API_RESPONSE_DURATION_MS = 23,
31
+ GEMINI_CLI_API_ERROR_MESSAGE = 24,
32
+ GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT = 25,
33
+ GEMINI_CLI_API_RESPONSE_OUTPUT_TOKEN_COUNT = 26,
34
+ GEMINI_CLI_API_RESPONSE_CACHED_TOKEN_COUNT = 27,
35
+ GEMINI_CLI_API_RESPONSE_THINKING_TOKEN_COUNT = 28,
36
+ GEMINI_CLI_API_RESPONSE_TOOL_TOKEN_COUNT = 29,
37
+ GEMINI_CLI_API_ERROR_MODEL = 30,
38
+ GEMINI_CLI_API_ERROR_TYPE = 31,
39
+ GEMINI_CLI_API_ERROR_STATUS_CODE = 32,
40
+ GEMINI_CLI_API_ERROR_DURATION_MS = 33,
41
+ GEMINI_CLI_END_SESSION_ID = 34
42
+ }
43
+ export declare function getEventMetadataKey(keyName: string): EventMetadataKey | undefined;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ // Defines valid event metadata keys for Clearcut logging.
7
+ export var EventMetadataKey;
8
+ (function (EventMetadataKey) {
9
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_KEY_UNKNOWN"] = 0] = "GEMINI_CLI_KEY_UNKNOWN";
10
+ // ==========================================================================
11
+ // Start Session Event Keys
12
+ // ===========================================================================
13
+ // Logs the model id used in the session.
14
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_MODEL"] = 1] = "GEMINI_CLI_START_SESSION_MODEL";
15
+ // Logs the embedding model id used in the session.
16
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_EMBEDDING_MODEL"] = 2] = "GEMINI_CLI_START_SESSION_EMBEDDING_MODEL";
17
+ // Logs the sandbox that was used in the session.
18
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_SANDBOX"] = 3] = "GEMINI_CLI_START_SESSION_SANDBOX";
19
+ // Logs the core tools that were enabled in the session.
20
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_CORE_TOOLS"] = 4] = "GEMINI_CLI_START_SESSION_CORE_TOOLS";
21
+ // Logs the approval mode that was used in the session.
22
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_APPROVAL_MODE"] = 5] = "GEMINI_CLI_START_SESSION_APPROVAL_MODE";
23
+ // Logs whether an API key was used in the session.
24
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_API_KEY_ENABLED"] = 6] = "GEMINI_CLI_START_SESSION_API_KEY_ENABLED";
25
+ // Logs whether the Vertex API was used in the session.
26
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED"] = 7] = "GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED";
27
+ // Logs whether debug mode was enabled in the session.
28
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED"] = 8] = "GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED";
29
+ // Logs the MCP servers that were enabled in the session.
30
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_MCP_SERVERS"] = 9] = "GEMINI_CLI_START_SESSION_MCP_SERVERS";
31
+ // Logs whether user-collected telemetry was enabled in the session.
32
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED"] = 10] = "GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED";
33
+ // Logs whether prompt collection was enabled for user-collected telemetry.
34
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED"] = 11] = "GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED";
35
+ // Logs whether the session was configured to respect gitignore files.
36
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_START_SESSION_RESPECT_GITIGNORE"] = 12] = "GEMINI_CLI_START_SESSION_RESPECT_GITIGNORE";
37
+ // ==========================================================================
38
+ // User Prompt Event Keys
39
+ // ===========================================================================
40
+ // Logs the length of the prompt.
41
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_USER_PROMPT_LENGTH"] = 13] = "GEMINI_CLI_USER_PROMPT_LENGTH";
42
+ // ==========================================================================
43
+ // Tool Call Event Keys
44
+ // ===========================================================================
45
+ // Logs the function name.
46
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_CALL_NAME"] = 14] = "GEMINI_CLI_TOOL_CALL_NAME";
47
+ // Logs the user's decision about how to handle the tool call.
48
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_CALL_DECISION"] = 15] = "GEMINI_CLI_TOOL_CALL_DECISION";
49
+ // Logs whether the tool call succeeded.
50
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_CALL_SUCCESS"] = 16] = "GEMINI_CLI_TOOL_CALL_SUCCESS";
51
+ // Logs the tool call duration in milliseconds.
52
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_CALL_DURATION_MS"] = 17] = "GEMINI_CLI_TOOL_CALL_DURATION_MS";
53
+ // Logs the tool call error message, if any.
54
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_ERROR_MESSAGE"] = 18] = "GEMINI_CLI_TOOL_ERROR_MESSAGE";
55
+ // Logs the tool call error type, if any.
56
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_TOOL_CALL_ERROR_TYPE"] = 19] = "GEMINI_CLI_TOOL_CALL_ERROR_TYPE";
57
+ // ==========================================================================
58
+ // GenAI API Request Event Keys
59
+ // ===========================================================================
60
+ // Logs the model id of the request.
61
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_REQUEST_MODEL"] = 20] = "GEMINI_CLI_API_REQUEST_MODEL";
62
+ // ==========================================================================
63
+ // GenAI API Response Event Keys
64
+ // ===========================================================================
65
+ // Logs the model id of the API call.
66
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_MODEL"] = 21] = "GEMINI_CLI_API_RESPONSE_MODEL";
67
+ // Logs the status code of the response.
68
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_STATUS_CODE"] = 22] = "GEMINI_CLI_API_RESPONSE_STATUS_CODE";
69
+ // Logs the duration of the API call in milliseconds.
70
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_DURATION_MS"] = 23] = "GEMINI_CLI_API_RESPONSE_DURATION_MS";
71
+ // Logs the error message of the API call, if any.
72
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_ERROR_MESSAGE"] = 24] = "GEMINI_CLI_API_ERROR_MESSAGE";
73
+ // Logs the input token count of the API call.
74
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT"] = 25] = "GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT";
75
+ // Logs the output token count of the API call.
76
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_OUTPUT_TOKEN_COUNT"] = 26] = "GEMINI_CLI_API_RESPONSE_OUTPUT_TOKEN_COUNT";
77
+ // Logs the cached token count of the API call.
78
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_CACHED_TOKEN_COUNT"] = 27] = "GEMINI_CLI_API_RESPONSE_CACHED_TOKEN_COUNT";
79
+ // Logs the thinking token count of the API call.
80
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_THINKING_TOKEN_COUNT"] = 28] = "GEMINI_CLI_API_RESPONSE_THINKING_TOKEN_COUNT";
81
+ // Logs the tool use token count of the API call.
82
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_RESPONSE_TOOL_TOKEN_COUNT"] = 29] = "GEMINI_CLI_API_RESPONSE_TOOL_TOKEN_COUNT";
83
+ // ==========================================================================
84
+ // GenAI API Error Event Keys
85
+ // ===========================================================================
86
+ // Logs the model id of the API call.
87
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_ERROR_MODEL"] = 30] = "GEMINI_CLI_API_ERROR_MODEL";
88
+ // Logs the error type.
89
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_ERROR_TYPE"] = 31] = "GEMINI_CLI_API_ERROR_TYPE";
90
+ // Logs the status code of the error response.
91
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_ERROR_STATUS_CODE"] = 32] = "GEMINI_CLI_API_ERROR_STATUS_CODE";
92
+ // Logs the duration of the API call in milliseconds.
93
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_API_ERROR_DURATION_MS"] = 33] = "GEMINI_CLI_API_ERROR_DURATION_MS";
94
+ // ==========================================================================
95
+ // End Session Event Keys
96
+ // ===========================================================================
97
+ // Logs the end of a session.
98
+ EventMetadataKey[EventMetadataKey["GEMINI_CLI_END_SESSION_ID"] = 34] = "GEMINI_CLI_END_SESSION_ID";
99
+ })(EventMetadataKey || (EventMetadataKey = {}));
100
+ export function getEventMetadataKey(keyName) {
101
+ // Access the enum member by its string name
102
+ const key = EventMetadataKey[keyName];
103
+ // Check if the result is a valid enum member (not undefined and is a number)
104
+ if (typeof key === 'number') {
105
+ return key;
106
+ }
107
+ return undefined;
108
+ }
109
+ //# sourceMappingURL=event-metadata-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-metadata-key.js","sourceRoot":"","sources":["../../../../src/telemetry/clearcut-logger/event-metadata-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0DAA0D;AAC1D,MAAM,CAAN,IAAY,gBAoIX;AApID,WAAY,gBAAgB;IAC1B,2FAA0B,CAAA;IAE1B,6EAA6E;IAC7E,2BAA2B;IAC3B,8EAA8E;IAE9E,yCAAyC;IACzC,2GAAkC,CAAA;IAElC,mDAAmD;IACnD,+HAA4C,CAAA;IAE5C,iDAAiD;IACjD,+GAAoC,CAAA;IAEpC,wDAAwD;IACxD,qHAAuC,CAAA;IAEvC,uDAAuD;IACvD,2HAA0C,CAAA;IAE1C,mDAAmD;IACnD,+HAA4C,CAAA;IAE5C,uDAAuD;IACvD,qIAA+C,CAAA;IAE/C,sDAAsD;IACtD,qIAA+C,CAAA;IAE/C,yDAAyD;IACzD,uHAAwC,CAAA;IAExC,oEAAoE;IACpE,oIAA+C,CAAA;IAE/C,2EAA2E;IAC3E,sKAAgE,CAAA;IAEhE,sEAAsE;IACtE,oIAA+C,CAAA;IAE/C,6EAA6E;IAC7E,yBAAyB;IACzB,8EAA8E;IAE9E,iCAAiC;IACjC,0GAAkC,CAAA;IAElC,6EAA6E;IAC7E,uBAAuB;IACvB,8EAA8E;IAE9E,0BAA0B;IAC1B,kGAA8B,CAAA;IAE9B,8DAA8D;IAC9D,0GAAkC,CAAA;IAElC,wCAAwC;IACxC,wGAAiC,CAAA;IAEjC,+CAA+C;IAC/C,gHAAqC,CAAA;IAErC,4CAA4C;IAC5C,0GAAkC,CAAA;IAElC,yCAAyC;IACzC,8GAAoC,CAAA;IAEpC,6EAA6E;IAC7E,+BAA+B;IAC/B,8EAA8E;IAE9E,oCAAoC;IACpC,wGAAiC,CAAA;IAEjC,6EAA6E;IAC7E,gCAAgC;IAChC,8EAA8E;IAE9E,qCAAqC;IACrC,0GAAkC,CAAA;IAElC,wCAAwC;IACxC,sHAAwC,CAAA;IAExC,qDAAqD;IACrD,sHAAwC,CAAA;IAExC,kDAAkD;IAClD,wGAAiC,CAAA;IAEjC,8CAA8C;IAC9C,kIAA8C,CAAA;IAE9C,+CAA+C;IAC/C,oIAA+C,CAAA;IAE/C,+CAA+C;IAC/C,oIAA+C,CAAA;IAE/C,iDAAiD;IACjD,wIAAiD,CAAA;IAEjD,iDAAiD;IACjD,gIAA6C,CAAA;IAE7C,6EAA6E;IAC7E,6BAA6B;IAC7B,8EAA8E;IAE9E,qCAAqC;IACrC,oGAA+B,CAAA;IAE/B,uBAAuB;IACvB,kGAA8B,CAAA;IAE9B,8CAA8C;IAC9C,gHAAqC,CAAA;IAErC,qDAAqD;IACrD,gHAAqC,CAAA;IAErC,6EAA6E;IAC7E,yBAAyB;IACzB,8EAA8E;IAE9E,6BAA6B;IAC7B,kGAA8B,CAAA;AAChC,CAAC,EApIW,gBAAgB,KAAhB,gBAAgB,QAoI3B;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAe;IAEf,4CAA4C;IAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAwC,CAAC,CAAC;IAEvE,6EAA6E;IAC7E,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const SERVICE_NAME = "gemini-cli";
7
+ export declare const EVENT_USER_PROMPT = "gemini_cli.user_prompt";
8
+ export declare const EVENT_TOOL_CALL = "gemini_cli.tool_call";
9
+ export declare const EVENT_API_REQUEST = "gemini_cli.api_request";
10
+ export declare const EVENT_API_ERROR = "gemini_cli.api_error";
11
+ export declare const EVENT_API_RESPONSE = "gemini_cli.api_response";
12
+ export declare const EVENT_CLI_CONFIG = "gemini_cli.config";
13
+ export declare const METRIC_TOOL_CALL_COUNT = "gemini_cli.tool.call.count";
14
+ export declare const METRIC_TOOL_CALL_LATENCY = "gemini_cli.tool.call.latency";
15
+ export declare const METRIC_API_REQUEST_COUNT = "gemini_cli.api.request.count";
16
+ export declare const METRIC_API_REQUEST_LATENCY = "gemini_cli.api.request.latency";
17
+ export declare const METRIC_TOKEN_USAGE = "gemini_cli.token.usage";
18
+ export declare const METRIC_SESSION_COUNT = "gemini_cli.session.count";
19
+ export declare const METRIC_FILE_OPERATION_COUNT = "gemini_cli.file.operation.count";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export const SERVICE_NAME = 'gemini-cli';
7
+ export const EVENT_USER_PROMPT = 'gemini_cli.user_prompt';
8
+ export const EVENT_TOOL_CALL = 'gemini_cli.tool_call';
9
+ export const EVENT_API_REQUEST = 'gemini_cli.api_request';
10
+ export const EVENT_API_ERROR = 'gemini_cli.api_error';
11
+ export const EVENT_API_RESPONSE = 'gemini_cli.api_response';
12
+ export const EVENT_CLI_CONFIG = 'gemini_cli.config';
13
+ export const METRIC_TOOL_CALL_COUNT = 'gemini_cli.tool.call.count';
14
+ export const METRIC_TOOL_CALL_LATENCY = 'gemini_cli.tool.call.latency';
15
+ export const METRIC_API_REQUEST_COUNT = 'gemini_cli.api.request.count';
16
+ export const METRIC_API_REQUEST_LATENCY = 'gemini_cli.api.request.latency';
17
+ export const METRIC_TOKEN_USAGE = 'gemini_cli.token.usage';
18
+ export const METRIC_SESSION_COUNT = 'gemini_cli.session.count';
19
+ export const METRIC_FILE_OPERATION_COUNT = 'gemini_cli.file.operation.count';
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/telemetry/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG,iCAAiC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare enum TelemetryTarget {
7
+ GCP = "gcp",
8
+ LOCAL = "local"
9
+ }
10
+ declare const DEFAULT_TELEMETRY_TARGET = TelemetryTarget.LOCAL;
11
+ declare const DEFAULT_OTLP_ENDPOINT = "http://localhost:4317";
12
+ export { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT };
13
+ export { initializeTelemetry, shutdownTelemetry, isTelemetrySdkInitialized, } from './sdk.js';
14
+ export { logCliConfiguration, logUserPrompt, logToolCall, logApiRequest, logApiError, logApiResponse, } from './loggers.js';
15
+ export { StartSessionEvent, EndSessionEvent, UserPromptEvent, ToolCallEvent, ApiRequestEvent, ApiErrorEvent, ApiResponseEvent, TelemetryEvent, } from './types.js';
16
+ export { SpanStatusCode, ValueType } from '@opentelemetry/api';
17
+ export { SemanticAttributes } from '@opentelemetry/semantic-conventions';
18
+ export * from './uiTelemetry.js';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export var TelemetryTarget;
7
+ (function (TelemetryTarget) {
8
+ TelemetryTarget["GCP"] = "gcp";
9
+ TelemetryTarget["LOCAL"] = "local";
10
+ })(TelemetryTarget || (TelemetryTarget = {}));
11
+ const DEFAULT_TELEMETRY_TARGET = TelemetryTarget.LOCAL;
12
+ const DEFAULT_OTLP_ENDPOINT = 'http://localhost:4317';
13
+ export { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT };
14
+ export { initializeTelemetry, shutdownTelemetry, isTelemetrySdkInitialized, } from './sdk.js';
15
+ export { logCliConfiguration, logUserPrompt, logToolCall, logApiRequest, logApiError, logApiResponse, } from './loggers.js';
16
+ export { StartSessionEvent, EndSessionEvent, UserPromptEvent, ToolCallEvent, ApiRequestEvent, ApiErrorEvent, ApiResponseEvent, } from './types.js';
17
+ export { SpanStatusCode, ValueType } from '@opentelemetry/api';
18
+ export { SemanticAttributes } from '@opentelemetry/semantic-conventions';
19
+ export * from './uiTelemetry.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,wBAAwB,GAAG,eAAe,CAAC,KAAK,CAAC;AACvD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Config } from '../config/config.js';
7
+ import { ApiErrorEvent, ApiRequestEvent, ApiResponseEvent, StartSessionEvent, ToolCallEvent, UserPromptEvent } from './types.js';
8
+ export declare function logCliConfiguration(config: Config, event: StartSessionEvent): void;
9
+ export declare function logUserPrompt(config: Config, event: UserPromptEvent): void;
10
+ export declare function logToolCall(config: Config, event: ToolCallEvent): void;
11
+ export declare function logApiRequest(config: Config, event: ApiRequestEvent): void;
12
+ export declare function logApiError(config: Config, event: ApiErrorEvent): void;
13
+ export declare function logApiResponse(config: Config, event: ApiResponseEvent): void;