@machina.ai/cell-cli-core 1.8.2-rc1 → 1.11.0-rc1

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 (381) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +5 -3
  5. package/dist/src/agents/codebase-investigator.d.ts +36 -1
  6. package/dist/src/agents/codebase-investigator.js +93 -34
  7. package/dist/src/agents/codebase-investigator.js.map +1 -1
  8. package/dist/src/agents/executor.d.ts +15 -11
  9. package/dist/src/agents/executor.js +271 -115
  10. package/dist/src/agents/executor.js.map +1 -1
  11. package/dist/src/agents/executor.test.js +508 -242
  12. package/dist/src/agents/executor.test.js.map +1 -1
  13. package/dist/src/agents/invocation.d.ts +5 -2
  14. package/dist/src/agents/invocation.js +4 -2
  15. package/dist/src/agents/invocation.js.map +1 -1
  16. package/dist/src/agents/invocation.test.js +9 -0
  17. package/dist/src/agents/invocation.test.js.map +1 -1
  18. package/dist/src/agents/registry.d.ts +2 -1
  19. package/dist/src/agents/registry.js +28 -4
  20. package/dist/src/agents/registry.js.map +1 -1
  21. package/dist/src/agents/subagent-tool-wrapper.d.ts +3 -1
  22. package/dist/src/agents/subagent-tool-wrapper.js +4 -3
  23. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  24. package/dist/src/agents/subagent-tool-wrapper.test.js +8 -1
  25. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  26. package/dist/src/agents/types.d.ts +35 -6
  27. package/dist/src/agents/types.js +1 -0
  28. package/dist/src/agents/types.js.map +1 -1
  29. package/dist/src/code_assist/converter.d.ts +1 -0
  30. package/dist/src/code_assist/converter.js +1 -0
  31. package/dist/src/code_assist/converter.js.map +1 -1
  32. package/dist/src/code_assist/converter.test.js +19 -0
  33. package/dist/src/code_assist/converter.test.js.map +1 -1
  34. package/dist/src/code_assist/oauth-credential-storage.js +1 -1
  35. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  36. package/dist/src/code_assist/oauth-credential-storage.test.js +1 -1
  37. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  38. package/dist/src/code_assist/oauth2.js +13 -12
  39. package/dist/src/code_assist/oauth2.js.map +1 -1
  40. package/dist/src/code_assist/oauth2.test.js +14 -13
  41. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  42. package/dist/src/code_assist/setup.js +4 -2
  43. package/dist/src/code_assist/setup.js.map +1 -1
  44. package/dist/src/config/config.d.ts +58 -18
  45. package/dist/src/config/config.js +125 -36
  46. package/dist/src/config/config.js.map +1 -1
  47. package/dist/src/config/config.test.js +125 -18
  48. package/dist/src/config/config.test.js.map +1 -1
  49. package/dist/src/config/storage.d.ts +0 -1
  50. package/dist/src/config/storage.js +2 -2
  51. package/dist/src/config/storage.js.map +1 -1
  52. package/dist/src/config/storage.test.js +7 -6
  53. package/dist/src/config/storage.test.js.map +1 -1
  54. package/dist/src/confirmation-bus/message-bus.d.ts +2 -1
  55. package/dist/src/confirmation-bus/message-bus.js +7 -1
  56. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  57. package/dist/src/confirmation-bus/types.d.ts +12 -2
  58. package/dist/src/confirmation-bus/types.js +1 -0
  59. package/dist/src/confirmation-bus/types.js.map +1 -1
  60. package/dist/src/core/client.d.ts +3 -1
  61. package/dist/src/core/client.js +70 -19
  62. package/dist/src/core/client.js.map +1 -1
  63. package/dist/src/core/client.test.js +199 -25
  64. package/dist/src/core/client.test.js.map +1 -1
  65. package/dist/src/core/contentGenerator.js +3 -1
  66. package/dist/src/core/contentGenerator.js.map +1 -1
  67. package/dist/src/core/coreToolScheduler.d.ts +7 -0
  68. package/dist/src/core/coreToolScheduler.js +58 -22
  69. package/dist/src/core/coreToolScheduler.js.map +1 -1
  70. package/dist/src/core/coreToolScheduler.test.js +351 -3
  71. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  72. package/dist/src/core/geminiChat.d.ts +7 -11
  73. package/dist/src/core/geminiChat.js +33 -70
  74. package/dist/src/core/geminiChat.js.map +1 -1
  75. package/dist/src/core/geminiChat.test.js +93 -228
  76. package/dist/src/core/geminiChat.test.js.map +1 -1
  77. package/dist/src/core/logger.js +11 -10
  78. package/dist/src/core/logger.js.map +1 -1
  79. package/dist/src/core/logger.test.js +2 -2
  80. package/dist/src/core/logger.test.js.map +1 -1
  81. package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -2
  82. package/dist/src/core/nonInteractiveToolExecutor.js +2 -2
  83. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  84. package/dist/src/core/nonInteractiveToolExecutor.test.js +11 -8
  85. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  86. package/dist/src/core/prompts.d.ts +2 -1
  87. package/dist/src/core/prompts.js +58 -123
  88. package/dist/src/core/prompts.js.map +1 -1
  89. package/dist/src/core/prompts.test.js +83 -29
  90. package/dist/src/core/prompts.test.js.map +1 -1
  91. package/dist/src/core/turn.d.ts +16 -2
  92. package/dist/src/core/turn.js +15 -2
  93. package/dist/src/core/turn.js.map +1 -1
  94. package/dist/src/core/turn.test.js +62 -2
  95. package/dist/src/core/turn.test.js.map +1 -1
  96. package/dist/src/generated/git-commit.d.ts +2 -2
  97. package/dist/src/generated/git-commit.js +2 -2
  98. package/dist/src/generated/git-commit.js.map +1 -1
  99. package/dist/src/ide/detect-ide.test.js +11 -0
  100. package/dist/src/ide/detect-ide.test.js.map +1 -1
  101. package/dist/src/ide/ide-client.js +5 -4
  102. package/dist/src/ide/ide-client.js.map +1 -1
  103. package/dist/src/ide/ide-client.test.js +4 -4
  104. package/dist/src/ide/ide-installer.js +1 -1
  105. package/dist/src/ide/ide-installer.js.map +1 -1
  106. package/dist/src/ide/ide-installer.test.js +13 -1
  107. package/dist/src/ide/ide-installer.test.js.map +1 -1
  108. package/dist/src/ide/process-utils.js +85 -75
  109. package/dist/src/ide/process-utils.js.map +1 -1
  110. package/dist/src/ide/process-utils.test.js +83 -90
  111. package/dist/src/ide/process-utils.test.js.map +1 -1
  112. package/dist/src/index.d.ts +6 -0
  113. package/dist/src/index.js +6 -0
  114. package/dist/src/index.js.map +1 -1
  115. package/dist/src/mcp/oauth-provider.js +21 -20
  116. package/dist/src/mcp/oauth-provider.js.map +1 -1
  117. package/dist/src/mcp/oauth-utils.js +9 -8
  118. package/dist/src/mcp/oauth-utils.js.map +1 -1
  119. package/dist/src/mcp/oauth-utils.test.js +13 -2
  120. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  121. package/dist/src/mcp/token-storage/file-token-storage.js +2 -1
  122. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  123. package/dist/src/mcp/token-storage/file-token-storage.test.js +4 -3
  124. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
  125. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  126. package/dist/src/output/stream-json-formatter.js +52 -0
  127. package/dist/src/output/stream-json-formatter.js.map +1 -0
  128. package/dist/src/output/stream-json-formatter.test.js +479 -0
  129. package/dist/src/output/stream-json-formatter.test.js.map +1 -0
  130. package/dist/src/output/types.d.ts +63 -1
  131. package/dist/src/output/types.js +11 -0
  132. package/dist/src/output/types.js.map +1 -1
  133. package/dist/src/prompts/prompt-registry.js +2 -1
  134. package/dist/src/prompts/prompt-registry.js.map +1 -1
  135. package/dist/src/routing/strategies/classifierStrategy.js +3 -2
  136. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  137. package/dist/src/services/chatRecordingService.d.ts +2 -1
  138. package/dist/src/services/chatRecordingService.js +2 -1
  139. package/dist/src/services/chatRecordingService.js.map +1 -1
  140. package/dist/src/services/loopDetectionService.js +3 -2
  141. package/dist/src/services/loopDetectionService.js.map +1 -1
  142. package/dist/src/services/shellExecutionService.d.ts +1 -0
  143. package/dist/src/services/shellExecutionService.js +177 -91
  144. package/dist/src/services/shellExecutionService.js.map +1 -1
  145. package/dist/src/services/shellExecutionService.test.js +113 -12
  146. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  147. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  148. package/dist/src/telemetry/activity-monitor.js +209 -0
  149. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  150. package/dist/src/telemetry/activity-monitor.test.d.ts +6 -0
  151. package/dist/src/telemetry/activity-monitor.test.js +248 -0
  152. package/dist/src/telemetry/activity-monitor.test.js.map +1 -0
  153. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +15 -2
  154. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +154 -31
  155. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  156. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +84 -15
  157. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  158. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +16 -3
  159. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +38 -5
  160. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  161. package/dist/src/telemetry/constants.d.ts +0 -28
  162. package/dist/src/telemetry/constants.js +0 -29
  163. package/dist/src/telemetry/constants.js.map +1 -1
  164. package/dist/src/telemetry/index.d.ts +6 -3
  165. package/dist/src/telemetry/index.js +12 -4
  166. package/dist/src/telemetry/index.js.map +1 -1
  167. package/dist/src/telemetry/loggers.d.ts +8 -2
  168. package/dist/src/telemetry/loggers.js +165 -299
  169. package/dist/src/telemetry/loggers.js.map +1 -1
  170. package/dist/src/telemetry/loggers.test.js +213 -21
  171. package/dist/src/telemetry/loggers.test.js.map +1 -1
  172. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  173. package/dist/src/telemetry/memory-monitor.js +335 -0
  174. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  175. package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
  176. package/dist/src/telemetry/memory-monitor.test.js +472 -0
  177. package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
  178. package/dist/src/telemetry/metrics.d.ts +131 -4
  179. package/dist/src/telemetry/metrics.js +182 -6
  180. package/dist/src/telemetry/metrics.js.map +1 -1
  181. package/dist/src/telemetry/metrics.test.js +360 -1
  182. package/dist/src/telemetry/metrics.test.js.map +1 -1
  183. package/dist/src/telemetry/sdk.js +3 -2
  184. package/dist/src/telemetry/sdk.js.map +1 -1
  185. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  186. package/dist/src/telemetry/telemetryAttributes.js +18 -0
  187. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  188. package/dist/src/telemetry/types.d.ts +163 -7
  189. package/dist/src/telemetry/types.js +691 -38
  190. package/dist/src/telemetry/types.js.map +1 -1
  191. package/dist/src/telemetry/uiTelemetry.d.ts +1 -1
  192. package/dist/src/telemetry/uiTelemetry.js +1 -1
  193. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  194. package/dist/src/telemetry/uiTelemetry.test.js +1 -1
  195. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  196. package/dist/src/tools/edit.js +8 -7
  197. package/dist/src/tools/edit.js.map +1 -1
  198. package/dist/src/tools/edit.test.js +0 -1
  199. package/dist/src/tools/edit.test.js.map +1 -1
  200. package/dist/src/tools/glob.d.ts +3 -2
  201. package/dist/src/tools/glob.js +8 -7
  202. package/dist/src/tools/glob.js.map +1 -1
  203. package/dist/src/tools/grep.d.ts +3 -2
  204. package/dist/src/tools/grep.js +20 -14
  205. package/dist/src/tools/grep.js.map +1 -1
  206. package/dist/src/tools/ls.d.ts +3 -2
  207. package/dist/src/tools/ls.js +8 -7
  208. package/dist/src/tools/ls.js.map +1 -1
  209. package/dist/src/tools/mcp-client-manager.d.ts +2 -9
  210. package/dist/src/tools/mcp-client-manager.js +6 -14
  211. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  212. package/dist/src/tools/mcp-client-manager.test.js +16 -6
  213. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  214. package/dist/src/tools/mcp-client.d.ts +3 -2
  215. package/dist/src/tools/mcp-client.js +49 -52
  216. package/dist/src/tools/mcp-client.js.map +1 -1
  217. package/dist/src/tools/mcp-client.test.js +168 -5
  218. package/dist/src/tools/mcp-client.test.js.map +1 -1
  219. package/dist/src/tools/mcp-tool.d.ts +2 -1
  220. package/dist/src/tools/mcp-tool.js +7 -3
  221. package/dist/src/tools/mcp-tool.js.map +1 -1
  222. package/dist/src/tools/memoryTool.d.ts +2 -2
  223. package/dist/src/tools/memoryTool.js +4 -4
  224. package/dist/src/tools/memoryTool.js.map +1 -1
  225. package/dist/src/tools/memoryTool.test.js +9 -8
  226. package/dist/src/tools/memoryTool.test.js.map +1 -1
  227. package/dist/src/tools/message-bus-integration.test.js +14 -1
  228. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  229. package/dist/src/tools/read-file.d.ts +4 -3
  230. package/dist/src/tools/read-file.js +9 -8
  231. package/dist/src/tools/read-file.js.map +1 -1
  232. package/dist/src/tools/read-many-files.d.ts +4 -3
  233. package/dist/src/tools/read-many-files.js +11 -8
  234. package/dist/src/tools/read-many-files.js.map +1 -1
  235. package/dist/src/tools/read-many-files.test.js +0 -1
  236. package/dist/src/tools/read-many-files.test.js.map +1 -1
  237. package/dist/src/tools/ripGrep.d.ts +3 -2
  238. package/dist/src/tools/ripGrep.js +47 -17
  239. package/dist/src/tools/ripGrep.js.map +1 -1
  240. package/dist/src/tools/ripGrep.test.js +106 -60
  241. package/dist/src/tools/ripGrep.test.js.map +1 -1
  242. package/dist/src/tools/shell.d.ts +1 -1
  243. package/dist/src/tools/shell.js +31 -14
  244. package/dist/src/tools/shell.js.map +1 -1
  245. package/dist/src/tools/shell.test.js +63 -9
  246. package/dist/src/tools/shell.test.js.map +1 -1
  247. package/dist/src/tools/smart-edit.d.ts +1 -20
  248. package/dist/src/tools/smart-edit.js +64 -61
  249. package/dist/src/tools/smart-edit.js.map +1 -1
  250. package/dist/src/tools/smart-edit.test.js +70 -87
  251. package/dist/src/tools/smart-edit.test.js.map +1 -1
  252. package/dist/src/tools/tool-error.d.ts +21 -0
  253. package/dist/src/tools/tool-error.js +27 -0
  254. package/dist/src/tools/tool-error.js.map +1 -1
  255. package/dist/src/tools/tool-names.d.ts +17 -0
  256. package/dist/src/tools/tool-names.js +21 -0
  257. package/dist/src/tools/tool-names.js.map +1 -0
  258. package/dist/src/tools/tool-registry.js +4 -3
  259. package/dist/src/tools/tool-registry.js.map +1 -1
  260. package/dist/src/tools/tools.d.ts +17 -10
  261. package/dist/src/tools/tools.js +54 -39
  262. package/dist/src/tools/tools.js.map +1 -1
  263. package/dist/src/tools/web-fetch.d.ts +11 -3
  264. package/dist/src/tools/web-fetch.js +90 -32
  265. package/dist/src/tools/web-fetch.js.map +1 -1
  266. package/dist/src/tools/web-fetch.test.js +388 -8
  267. package/dist/src/tools/web-fetch.test.js.map +1 -1
  268. package/dist/src/tools/web-search.d.ts +4 -3
  269. package/dist/src/tools/web-search.js +10 -7
  270. package/dist/src/tools/web-search.js.map +1 -1
  271. package/dist/src/tools/write-file.d.ts +1 -1
  272. package/dist/src/tools/write-file.js +3 -2
  273. package/dist/src/tools/write-file.js.map +1 -1
  274. package/dist/src/tools/write-file.test.js +0 -1
  275. package/dist/src/tools/write-file.test.js.map +1 -1
  276. package/dist/src/tools/write-todos.d.ts +3 -8
  277. package/dist/src/tools/write-todos.js +14 -7
  278. package/dist/src/tools/write-todos.js.map +1 -1
  279. package/dist/src/tools/write-todos.test.js +2 -2
  280. package/dist/src/tools/write-todos.test.js.map +1 -1
  281. package/dist/src/utils/bfsFileSearch.js +3 -2
  282. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  283. package/dist/src/utils/debugLogger.d.ts +25 -0
  284. package/dist/src/utils/debugLogger.js +33 -0
  285. package/dist/src/utils/debugLogger.js.map +1 -0
  286. package/dist/src/utils/debugLogger.test.d.ts +6 -0
  287. package/dist/src/utils/debugLogger.test.js +67 -0
  288. package/dist/src/utils/debugLogger.test.js.map +1 -0
  289. package/dist/src/utils/delay.d.ts +16 -0
  290. package/dist/src/utils/delay.js +43 -0
  291. package/dist/src/utils/delay.js.map +1 -0
  292. package/dist/src/utils/delay.test.d.ts +6 -0
  293. package/dist/src/utils/delay.test.js +88 -0
  294. package/dist/src/utils/delay.test.js.map +1 -0
  295. package/dist/src/utils/editCorrector.js +6 -10
  296. package/dist/src/utils/editCorrector.js.map +1 -1
  297. package/dist/src/utils/editCorrector.test.js +3 -5
  298. package/dist/src/utils/editCorrector.test.js.map +1 -1
  299. package/dist/src/utils/editor.js +33 -37
  300. package/dist/src/utils/editor.js.map +1 -1
  301. package/dist/src/utils/editor.test.js +1 -0
  302. package/dist/src/utils/editor.test.js.map +1 -1
  303. package/dist/src/utils/environmentContext.js +0 -33
  304. package/dist/src/utils/environmentContext.js.map +1 -1
  305. package/dist/src/utils/environmentContext.test.js +0 -34
  306. package/dist/src/utils/environmentContext.test.js.map +1 -1
  307. package/dist/src/utils/fetch.d.ts +1 -0
  308. package/dist/src/utils/fetch.js +9 -0
  309. package/dist/src/utils/fetch.js.map +1 -1
  310. package/dist/src/utils/fileUtils.d.ts +4 -0
  311. package/dist/src/utils/fileUtils.js +34 -2
  312. package/dist/src/utils/fileUtils.js.map +1 -1
  313. package/dist/src/utils/fileUtils.test.js +12 -1
  314. package/dist/src/utils/fileUtils.test.js.map +1 -1
  315. package/dist/src/utils/formatters.d.ts +1 -0
  316. package/dist/src/utils/formatters.js +2 -1
  317. package/dist/src/utils/formatters.js.map +1 -1
  318. package/dist/src/utils/formatters.test.d.ts +6 -0
  319. package/dist/src/utils/formatters.test.js +26 -0
  320. package/dist/src/utils/formatters.test.js.map +1 -0
  321. package/dist/src/utils/getFolderStructure.js +2 -1
  322. package/dist/src/utils/getFolderStructure.js.map +1 -1
  323. package/dist/src/utils/getFolderStructure.test.js +7 -6
  324. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  325. package/dist/src/utils/gitIgnoreParser.js +7 -6
  326. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  327. package/dist/src/utils/gitIgnoreParser.test.js +30 -0
  328. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  329. package/dist/src/utils/installationManager.test.js +2 -1
  330. package/dist/src/utils/installationManager.test.js.map +1 -1
  331. package/dist/src/utils/llm-edit-fixer.js +5 -4
  332. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  333. package/dist/src/utils/memoryDiscovery.d.ts +3 -1
  334. package/dist/src/utils/memoryDiscovery.js +14 -12
  335. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  336. package/dist/src/utils/memoryDiscovery.test.js +136 -36
  337. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  338. package/dist/src/utils/memoryImportProcessor.js +3 -2
  339. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  340. package/dist/src/utils/nextSpeakerChecker.js +2 -1
  341. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  342. package/dist/src/utils/pathCorrector.d.ts +25 -0
  343. package/dist/src/utils/pathCorrector.js +33 -0
  344. package/dist/src/utils/pathCorrector.js.map +1 -0
  345. package/dist/src/utils/pathCorrector.test.d.ts +6 -0
  346. package/dist/src/utils/pathCorrector.test.js +83 -0
  347. package/dist/src/utils/pathCorrector.test.js.map +1 -0
  348. package/dist/src/utils/retry.d.ts +3 -1
  349. package/dist/src/utils/retry.js +44 -33
  350. package/dist/src/utils/retry.js.map +1 -1
  351. package/dist/src/utils/retry.test.js +102 -40
  352. package/dist/src/utils/retry.test.js.map +1 -1
  353. package/dist/src/utils/safeJsonStringify.d.ts +4 -4
  354. package/dist/src/utils/safeJsonStringify.js +31 -7
  355. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  356. package/dist/src/utils/shell-utils.d.ts +15 -2
  357. package/dist/src/utils/shell-utils.js +354 -137
  358. package/dist/src/utils/shell-utils.js.map +1 -1
  359. package/dist/src/utils/shell-utils.test.js +154 -60
  360. package/dist/src/utils/shell-utils.test.js.map +1 -1
  361. package/dist/src/utils/systemEncoding.js +5 -4
  362. package/dist/src/utils/systemEncoding.js.map +1 -1
  363. package/dist/src/utils/tool-utils.d.ts +2 -2
  364. package/dist/src/utils/tool-utils.js +15 -6
  365. package/dist/src/utils/tool-utils.js.map +1 -1
  366. package/dist/src/utils/tool-utils.test.js +8 -0
  367. package/dist/src/utils/tool-utils.test.js.map +1 -1
  368. package/dist/src/utils/userAccountManager.js +5 -4
  369. package/dist/src/utils/userAccountManager.js.map +1 -1
  370. package/dist/src/utils/userAccountManager.test.js +2 -1
  371. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  372. package/dist/src/utils/workspaceContext.js +2 -1
  373. package/dist/src/utils/workspaceContext.js.map +1 -1
  374. package/dist/tsconfig.tsbuildinfo +1 -1
  375. package/package.json +5 -3
  376. package/dist/src/core/subagent.d.ts +0 -236
  377. package/dist/src/core/subagent.js +0 -482
  378. package/dist/src/core/subagent.js.map +0 -1
  379. package/dist/src/core/subagent.test.js +0 -530
  380. package/dist/src/core/subagent.test.js.map +0 -1
  381. /package/dist/src/{core/subagent.test.d.ts → output/stream-json-formatter.test.d.ts} +0 -0
@@ -4,51 +4,20 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { logs } from '@opentelemetry/api-logs';
7
- import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
8
- import { EVENT_API_ERROR, EVENT_API_REQUEST, EVENT_API_RESPONSE, EVENT_CLI_CONFIG, EVENT_EXTENSION_UNINSTALL, EVENT_EXTENSION_ENABLE, EVENT_IDE_CONNECTION, EVENT_TOOL_CALL, EVENT_USER_PROMPT, EVENT_FLASH_FALLBACK, EVENT_NEXT_SPEAKER_CHECK, SERVICE_NAME, EVENT_SLASH_COMMAND, EVENT_CONVERSATION_FINISHED, EVENT_CHAT_COMPRESSION, EVENT_MALFORMED_JSON_RESPONSE, EVENT_INVALID_CHUNK, EVENT_CONTENT_RETRY, EVENT_CONTENT_RETRY_FAILURE, EVENT_FILE_OPERATION, EVENT_RIPGREP_FALLBACK, EVENT_MODEL_ROUTING, EVENT_EXTENSION_INSTALL, EVENT_MODEL_SLASH_COMMAND, EVENT_EXTENSION_DISABLE, } from './constants.js';
9
- import { recordApiErrorMetrics, recordTokenUsageMetrics, recordApiResponseMetrics, recordToolCallMetrics, recordChatCompressionMetrics, recordFileOperationMetric, recordInvalidChunk, recordContentRetry, recordContentRetryFailure, recordModelRoutingMetrics, recordModelSlashCommand, } from './metrics.js';
7
+ import { SERVICE_NAME } from './constants.js';
8
+ import { EVENT_API_ERROR, EVENT_API_RESPONSE, EVENT_TOOL_CALL, } from './types.js';
9
+ import { recordApiErrorMetrics, recordToolCallMetrics, recordChatCompressionMetrics, recordFileOperationMetric, recordInvalidChunk, recordContentRetry, recordContentRetryFailure, recordModelRoutingMetrics, recordModelSlashCommand, getConventionAttributes, recordTokenUsageMetrics, recordApiResponseMetrics, recordAgentRunMetrics, } from './metrics.js';
10
10
  import { isTelemetrySdkInitialized } from './sdk.js';
11
11
  import { uiTelemetryService } from './uiTelemetry.js';
12
12
  import { ClearcutLogger } from './clearcut-logger/clearcut-logger.js';
13
- import { safeJsonStringify } from '../utils/safeJsonStringify.js';
14
- import { UserAccountManager } from '../utils/userAccountManager.js';
15
- const shouldLogUserPrompts = (config) => config.getTelemetryLogPromptsEnabled();
16
- function getCommonAttributes(config) {
17
- const userAccountManager = new UserAccountManager();
18
- const email = userAccountManager.getCachedGoogleAccount();
19
- return {
20
- 'session.id': config.getSessionId(),
21
- ...(email && { 'user.email': email }),
22
- };
23
- }
24
13
  export function logCliConfiguration(config, event) {
25
14
  ClearcutLogger.getInstance(config)?.logStartSessionEvent(event);
26
15
  if (!isTelemetrySdkInitialized())
27
16
  return;
28
- const attributes = {
29
- ...getCommonAttributes(config),
30
- 'event.name': EVENT_CLI_CONFIG,
31
- 'event.timestamp': new Date().toISOString(),
32
- model: event.model,
33
- embedding_model: event.embedding_model,
34
- sandbox_enabled: event.sandbox_enabled,
35
- core_tools_enabled: event.core_tools_enabled,
36
- approval_mode: event.approval_mode,
37
- api_key_enabled: event.api_key_enabled,
38
- vertex_ai_enabled: event.vertex_ai_enabled,
39
- log_user_prompts_enabled: event.telemetry_log_user_prompts_enabled,
40
- file_filtering_respect_git_ignore: event.file_filtering_respect_git_ignore,
41
- debug_mode: event.debug_enabled,
42
- mcp_servers: event.mcp_servers,
43
- mcp_servers_count: event.mcp_servers_count,
44
- mcp_tools: event.mcp_tools,
45
- mcp_tools_count: event.mcp_tools_count,
46
- output_format: event.output_format,
47
- };
48
17
  const logger = logs.getLogger(SERVICE_NAME);
49
18
  const logRecord = {
50
- body: 'CLI configuration loaded.',
51
- attributes,
19
+ body: event.toLogBody(),
20
+ attributes: event.toOpenTelemetryAttributes(config),
52
21
  };
53
22
  logger.emit(logRecord);
54
23
  }
@@ -56,23 +25,10 @@ export function logUserPrompt(config, event) {
56
25
  ClearcutLogger.getInstance(config)?.logNewPromptEvent(event);
57
26
  if (!isTelemetrySdkInitialized())
58
27
  return;
59
- const attributes = {
60
- ...getCommonAttributes(config),
61
- 'event.name': EVENT_USER_PROMPT,
62
- 'event.timestamp': new Date().toISOString(),
63
- prompt_length: event.prompt_length,
64
- prompt_id: event.prompt_id,
65
- };
66
- if (event.auth_type) {
67
- attributes['auth_type'] = event.auth_type;
68
- }
69
- if (shouldLogUserPrompts(config)) {
70
- attributes['prompt'] = event.prompt;
71
- }
72
28
  const logger = logs.getLogger(SERVICE_NAME);
73
29
  const logRecord = {
74
- body: `User prompt. Length: ${event.prompt_length}.`,
75
- attributes,
30
+ body: event.toLogBody(),
31
+ attributes: event.toOpenTelemetryAttributes(config),
76
32
  };
77
33
  logger.emit(logRecord);
78
34
  }
@@ -86,23 +42,10 @@ export function logToolCall(config, event) {
86
42
  ClearcutLogger.getInstance(config)?.logToolCallEvent(event);
87
43
  if (!isTelemetrySdkInitialized())
88
44
  return;
89
- const attributes = {
90
- ...getCommonAttributes(config),
91
- ...event,
92
- 'event.name': EVENT_TOOL_CALL,
93
- 'event.timestamp': new Date().toISOString(),
94
- function_args: safeJsonStringify(event.function_args, 2),
95
- };
96
- if (event.error) {
97
- attributes['error.message'] = event.error;
98
- if (event.error_type) {
99
- attributes['error.type'] = event.error_type;
100
- }
101
- }
102
45
  const logger = logs.getLogger(SERVICE_NAME);
103
46
  const logRecord = {
104
- body: `Tool call: ${event.function_name}${event.decision ? `. Decision: ${event.decision}` : ''}. Success: ${event.success}. Duration: ${event.duration_ms}ms.`,
105
- attributes,
47
+ body: event.toLogBody(),
48
+ attributes: event.toOpenTelemetryAttributes(config),
106
49
  };
107
50
  logger.emit(logRecord);
108
51
  recordToolCallMetrics(config, event.duration_ms, {
@@ -110,22 +53,24 @@ export function logToolCall(config, event) {
110
53
  success: event.success,
111
54
  decision: event.decision,
112
55
  tool_type: event.tool_type,
56
+ ...(event.metadata
57
+ ? {
58
+ model_added_lines: event.metadata['model_added_lines'],
59
+ model_removed_lines: event.metadata['model_removed_lines'],
60
+ user_added_lines: event.metadata['user_added_lines'],
61
+ user_removed_lines: event.metadata['user_removed_lines'],
62
+ }
63
+ : {}),
113
64
  });
114
65
  }
115
66
  export function logToolOutputTruncated(config, event) {
116
67
  ClearcutLogger.getInstance(config)?.logToolOutputTruncatedEvent(event);
117
68
  if (!isTelemetrySdkInitialized())
118
69
  return;
119
- const attributes = {
120
- ...getCommonAttributes(config),
121
- ...event,
122
- 'event.name': 'tool_output_truncated',
123
- 'event.timestamp': new Date().toISOString(),
124
- };
125
70
  const logger = logs.getLogger(SERVICE_NAME);
126
71
  const logRecord = {
127
- body: `Tool output truncated for ${event.tool_name}.`,
128
- attributes,
72
+ body: event.toLogBody(),
73
+ attributes: event.toOpenTelemetryAttributes(config),
129
74
  };
130
75
  logger.emit(logRecord);
131
76
  }
@@ -133,29 +78,10 @@ export function logFileOperation(config, event) {
133
78
  ClearcutLogger.getInstance(config)?.logFileOperationEvent(event);
134
79
  if (!isTelemetrySdkInitialized())
135
80
  return;
136
- const attributes = {
137
- ...getCommonAttributes(config),
138
- 'event.name': EVENT_FILE_OPERATION,
139
- 'event.timestamp': new Date().toISOString(),
140
- tool_name: event.tool_name,
141
- operation: event.operation,
142
- };
143
- if (event.lines) {
144
- attributes['lines'] = event.lines;
145
- }
146
- if (event.mimetype) {
147
- attributes['mimetype'] = event.mimetype;
148
- }
149
- if (event.extension) {
150
- attributes['extension'] = event.extension;
151
- }
152
- if (event.programming_language) {
153
- attributes['programming_language'] = event.programming_language;
154
- }
155
81
  const logger = logs.getLogger(SERVICE_NAME);
156
82
  const logRecord = {
157
- body: `File operation: ${event.operation}. Lines: ${event.lines}.`,
158
- attributes,
83
+ body: event.toLogBody(),
84
+ attributes: event.toOpenTelemetryAttributes(config),
159
85
  };
160
86
  logger.emit(logRecord);
161
87
  recordFileOperationMetric(config, {
@@ -170,16 +96,10 @@ export function logApiRequest(config, event) {
170
96
  ClearcutLogger.getInstance(config)?.logApiRequestEvent(event);
171
97
  if (!isTelemetrySdkInitialized())
172
98
  return;
173
- const attributes = {
174
- ...getCommonAttributes(config),
175
- ...event,
176
- 'event.name': EVENT_API_REQUEST,
177
- 'event.timestamp': new Date().toISOString(),
178
- };
179
99
  const logger = logs.getLogger(SERVICE_NAME);
180
100
  const logRecord = {
181
- body: `API request to ${event.model}.`,
182
- attributes,
101
+ body: event.toLogBody(),
102
+ attributes: event.toOpenTelemetryAttributes(config),
183
103
  };
184
104
  logger.emit(logRecord);
185
105
  }
@@ -187,16 +107,10 @@ export function logFlashFallback(config, event) {
187
107
  ClearcutLogger.getInstance(config)?.logFlashFallbackEvent();
188
108
  if (!isTelemetrySdkInitialized())
189
109
  return;
190
- const attributes = {
191
- ...getCommonAttributes(config),
192
- ...event,
193
- 'event.name': EVENT_FLASH_FALLBACK,
194
- 'event.timestamp': new Date().toISOString(),
195
- };
196
110
  const logger = logs.getLogger(SERVICE_NAME);
197
111
  const logRecord = {
198
- body: `Switching to flash as Fallback.`,
199
- attributes,
112
+ body: event.toLogBody(),
113
+ attributes: event.toOpenTelemetryAttributes(config),
200
114
  };
201
115
  logger.emit(logRecord);
202
116
  }
@@ -204,16 +118,10 @@ export function logRipgrepFallback(config, event) {
204
118
  ClearcutLogger.getInstance(config)?.logRipgrepFallbackEvent();
205
119
  if (!isTelemetrySdkInitialized())
206
120
  return;
207
- const attributes = {
208
- ...getCommonAttributes(config),
209
- ...event,
210
- 'event.name': EVENT_RIPGREP_FALLBACK,
211
- 'event.timestamp': new Date().toISOString(),
212
- };
213
121
  const logger = logs.getLogger(SERVICE_NAME);
214
122
  const logRecord = {
215
- body: `Switching to grep as fallback.`,
216
- attributes,
123
+ body: event.toLogBody(),
124
+ attributes: event.toOpenTelemetryAttributes(config),
217
125
  };
218
126
  logger.emit(logRecord);
219
127
  }
@@ -227,25 +135,10 @@ export function logApiError(config, event) {
227
135
  ClearcutLogger.getInstance(config)?.logApiErrorEvent(event);
228
136
  if (!isTelemetrySdkInitialized())
229
137
  return;
230
- const attributes = {
231
- ...getCommonAttributes(config),
232
- ...event,
233
- 'event.name': EVENT_API_ERROR,
234
- 'event.timestamp': new Date().toISOString(),
235
- ['error.message']: event.error,
236
- model_name: event.model,
237
- duration: event.duration_ms,
238
- };
239
- if (event.error_type) {
240
- attributes['error.type'] = event.error_type;
241
- }
242
- if (typeof event.status_code === 'number') {
243
- attributes[SemanticAttributes.HTTP_STATUS_CODE] = event.status_code;
244
- }
245
138
  const logger = logs.getLogger(SERVICE_NAME);
246
139
  const logRecord = {
247
- body: `API error for ${event.model}. Error: ${event.error}. Duration: ${event.duration_ms}ms.`,
248
- attributes,
140
+ body: event.toLogBody(),
141
+ attributes: event.toOpenTelemetryAttributes(config),
249
142
  };
250
143
  logger.emit(logRecord);
251
144
  recordApiErrorMetrics(config, event.duration_ms, {
@@ -253,6 +146,16 @@ export function logApiError(config, event) {
253
146
  status_code: event.status_code,
254
147
  error_type: event.error_type,
255
148
  });
149
+ // Record GenAI operation duration for errors
150
+ const conventionAttributes = getConventionAttributes(event);
151
+ recordApiResponseMetrics(config, event.duration_ms, {
152
+ model: event.model,
153
+ status_code: event.status_code,
154
+ genAiAttributes: {
155
+ ...conventionAttributes,
156
+ 'error.type': event.error_type || 'unknown',
157
+ },
158
+ });
256
159
  }
257
160
  export function logApiResponse(config, event) {
258
161
  const uiEvent = {
@@ -264,82 +167,63 @@ export function logApiResponse(config, event) {
264
167
  ClearcutLogger.getInstance(config)?.logApiResponseEvent(event);
265
168
  if (!isTelemetrySdkInitialized())
266
169
  return;
267
- const attributes = {
268
- ...getCommonAttributes(config),
269
- ...event,
270
- 'event.name': EVENT_API_RESPONSE,
271
- 'event.timestamp': new Date().toISOString(),
272
- };
273
- if (event.response_text) {
274
- attributes['response_text'] = event.response_text;
275
- }
276
- if (event.status_code) {
277
- if (typeof event.status_code === 'number') {
278
- attributes[SemanticAttributes.HTTP_STATUS_CODE] = event.status_code;
279
- }
280
- }
281
170
  const logger = logs.getLogger(SERVICE_NAME);
282
171
  const logRecord = {
283
- body: `API response from ${event.model}. Status: ${event.status_code || 'N/A'}. Duration: ${event.duration_ms}ms.`,
284
- attributes,
172
+ body: event.toLogBody(),
173
+ attributes: event.toOpenTelemetryAttributes(config),
285
174
  };
286
175
  logger.emit(logRecord);
176
+ const conventionAttributes = getConventionAttributes(event);
287
177
  recordApiResponseMetrics(config, event.duration_ms, {
288
178
  model: event.model,
289
179
  status_code: event.status_code,
180
+ genAiAttributes: conventionAttributes,
290
181
  });
291
- recordTokenUsageMetrics(config, event.input_token_count, {
292
- model: event.model,
293
- type: 'input',
294
- });
295
- recordTokenUsageMetrics(config, event.output_token_count, {
296
- model: event.model,
297
- type: 'output',
298
- });
299
- recordTokenUsageMetrics(config, event.cached_content_token_count, {
300
- model: event.model,
301
- type: 'cache',
302
- });
303
- recordTokenUsageMetrics(config, event.thoughts_token_count, {
304
- model: event.model,
305
- type: 'thought',
306
- });
307
- recordTokenUsageMetrics(config, event.tool_token_count, {
308
- model: event.model,
309
- type: 'tool',
310
- });
182
+ const tokenUsageData = [
183
+ { count: event.input_token_count, type: 'input' },
184
+ { count: event.output_token_count, type: 'output' },
185
+ { count: event.cached_content_token_count, type: 'cache' },
186
+ { count: event.thoughts_token_count, type: 'thought' },
187
+ { count: event.tool_token_count, type: 'tool' },
188
+ ];
189
+ for (const { count, type } of tokenUsageData) {
190
+ recordTokenUsageMetrics(config, count, {
191
+ model: event.model,
192
+ type,
193
+ genAiAttributes: conventionAttributes,
194
+ });
195
+ }
311
196
  }
312
197
  export function logLoopDetected(config, event) {
313
198
  ClearcutLogger.getInstance(config)?.logLoopDetectedEvent(event);
314
199
  if (!isTelemetrySdkInitialized())
315
200
  return;
316
- const attributes = {
317
- ...getCommonAttributes(config),
318
- ...event,
319
- };
320
201
  const logger = logs.getLogger(SERVICE_NAME);
321
202
  const logRecord = {
322
- body: `Loop detected. Type: ${event.loop_type}.`,
323
- attributes,
203
+ body: event.toLogBody(),
204
+ attributes: event.toOpenTelemetryAttributes(config),
324
205
  };
325
206
  logger.emit(logRecord);
326
207
  }
327
- export function logLoopDetectionDisabled(config, _event) {
208
+ export function logLoopDetectionDisabled(config, event) {
328
209
  ClearcutLogger.getInstance(config)?.logLoopDetectionDisabledEvent();
210
+ if (!isTelemetrySdkInitialized())
211
+ return;
212
+ const logger = logs.getLogger(SERVICE_NAME);
213
+ const logRecord = {
214
+ body: event.toLogBody(),
215
+ attributes: event.toOpenTelemetryAttributes(config),
216
+ };
217
+ logger.emit(logRecord);
329
218
  }
330
219
  export function logNextSpeakerCheck(config, event) {
331
220
  ClearcutLogger.getInstance(config)?.logNextSpeakerCheck(event);
332
221
  if (!isTelemetrySdkInitialized())
333
222
  return;
334
- const attributes = {
335
- ...getCommonAttributes(config),
336
- ...event,
337
- 'event.name': EVENT_NEXT_SPEAKER_CHECK,
338
- };
339
223
  const logger = logs.getLogger(SERVICE_NAME);
340
224
  const logRecord = {
341
- body: `Next speaker check.`,
342
- attributes,
225
+ body: event.toLogBody(),
226
+ attributes: event.toOpenTelemetryAttributes(config),
343
227
  };
344
228
  logger.emit(logRecord);
345
229
  }
@@ -347,15 +231,10 @@ export function logSlashCommand(config, event) {
347
231
  ClearcutLogger.getInstance(config)?.logSlashCommandEvent(event);
348
232
  if (!isTelemetrySdkInitialized())
349
233
  return;
350
- const attributes = {
351
- ...getCommonAttributes(config),
352
- ...event,
353
- 'event.name': EVENT_SLASH_COMMAND,
354
- };
355
234
  const logger = logs.getLogger(SERVICE_NAME);
356
235
  const logRecord = {
357
- body: `Slash command: ${event.command}.`,
358
- attributes,
236
+ body: event.toLogBody(),
237
+ attributes: event.toOpenTelemetryAttributes(config),
359
238
  };
360
239
  logger.emit(logRecord);
361
240
  }
@@ -363,15 +242,10 @@ export function logIdeConnection(config, event) {
363
242
  ClearcutLogger.getInstance(config)?.logIdeConnectionEvent(event);
364
243
  if (!isTelemetrySdkInitialized())
365
244
  return;
366
- const attributes = {
367
- ...getCommonAttributes(config),
368
- ...event,
369
- 'event.name': EVENT_IDE_CONNECTION,
370
- };
371
245
  const logger = logs.getLogger(SERVICE_NAME);
372
246
  const logRecord = {
373
- body: `Ide connection. Type: ${event.connection_type}.`,
374
- attributes,
247
+ body: event.toLogBody(),
248
+ attributes: event.toOpenTelemetryAttributes(config),
375
249
  };
376
250
  logger.emit(logRecord);
377
251
  }
@@ -379,29 +253,19 @@ export function logConversationFinishedEvent(config, event) {
379
253
  ClearcutLogger.getInstance(config)?.logConversationFinishedEvent(event);
380
254
  if (!isTelemetrySdkInitialized())
381
255
  return;
382
- const attributes = {
383
- ...getCommonAttributes(config),
384
- ...event,
385
- 'event.name': EVENT_CONVERSATION_FINISHED,
386
- };
387
256
  const logger = logs.getLogger(SERVICE_NAME);
388
257
  const logRecord = {
389
- body: `Conversation finished.`,
390
- attributes,
258
+ body: event.toLogBody(),
259
+ attributes: event.toOpenTelemetryAttributes(config),
391
260
  };
392
261
  logger.emit(logRecord);
393
262
  }
394
263
  export function logChatCompression(config, event) {
395
264
  ClearcutLogger.getInstance(config)?.logChatCompressionEvent(event);
396
- const attributes = {
397
- ...getCommonAttributes(config),
398
- ...event,
399
- 'event.name': EVENT_CHAT_COMPRESSION,
400
- };
401
265
  const logger = logs.getLogger(SERVICE_NAME);
402
266
  const logRecord = {
403
- body: `Chat compression (Saved ${event.tokens_before - event.tokens_after} tokens)`,
404
- attributes,
267
+ body: event.toLogBody(),
268
+ attributes: event.toOpenTelemetryAttributes(config),
405
269
  };
406
270
  logger.emit(logRecord);
407
271
  recordChatCompressionMetrics(config, {
@@ -413,14 +277,10 @@ export function logKittySequenceOverflow(config, event) {
413
277
  ClearcutLogger.getInstance(config)?.logKittySequenceOverflowEvent(event);
414
278
  if (!isTelemetrySdkInitialized())
415
279
  return;
416
- const attributes = {
417
- ...getCommonAttributes(config),
418
- ...event,
419
- };
420
280
  const logger = logs.getLogger(SERVICE_NAME);
421
281
  const logRecord = {
422
- body: `Kitty sequence buffer overflow: ${event.sequence_length} bytes`,
423
- attributes,
282
+ body: event.toLogBody(),
283
+ attributes: event.toOpenTelemetryAttributes(config),
424
284
  };
425
285
  logger.emit(logRecord);
426
286
  }
@@ -428,15 +288,10 @@ export function logMalformedJsonResponse(config, event) {
428
288
  ClearcutLogger.getInstance(config)?.logMalformedJsonResponseEvent(event);
429
289
  if (!isTelemetrySdkInitialized())
430
290
  return;
431
- const attributes = {
432
- ...getCommonAttributes(config),
433
- ...event,
434
- 'event.name': EVENT_MALFORMED_JSON_RESPONSE,
435
- };
436
291
  const logger = logs.getLogger(SERVICE_NAME);
437
292
  const logRecord = {
438
- body: `Malformed JSON response from ${event.model}.`,
439
- attributes,
293
+ body: event.toLogBody(),
294
+ attributes: event.toOpenTelemetryAttributes(config),
440
295
  };
441
296
  logger.emit(logRecord);
442
297
  }
@@ -444,18 +299,10 @@ export function logInvalidChunk(config, event) {
444
299
  ClearcutLogger.getInstance(config)?.logInvalidChunkEvent(event);
445
300
  if (!isTelemetrySdkInitialized())
446
301
  return;
447
- const attributes = {
448
- ...getCommonAttributes(config),
449
- 'event.name': EVENT_INVALID_CHUNK,
450
- 'event.timestamp': event['event.timestamp'],
451
- };
452
- if (event.error_message) {
453
- attributes['error.message'] = event.error_message;
454
- }
455
302
  const logger = logs.getLogger(SERVICE_NAME);
456
303
  const logRecord = {
457
- body: `Invalid chunk received from stream.`,
458
- attributes,
304
+ body: event.toLogBody(),
305
+ attributes: event.toOpenTelemetryAttributes(config),
459
306
  };
460
307
  logger.emit(logRecord);
461
308
  recordInvalidChunk(config);
@@ -464,15 +311,10 @@ export function logContentRetry(config, event) {
464
311
  ClearcutLogger.getInstance(config)?.logContentRetryEvent(event);
465
312
  if (!isTelemetrySdkInitialized())
466
313
  return;
467
- const attributes = {
468
- ...getCommonAttributes(config),
469
- ...event,
470
- 'event.name': EVENT_CONTENT_RETRY,
471
- };
472
314
  const logger = logs.getLogger(SERVICE_NAME);
473
315
  const logRecord = {
474
- body: `Content retry attempt ${event.attempt_number} due to ${event.error_type}.`,
475
- attributes,
316
+ body: event.toLogBody(),
317
+ attributes: event.toOpenTelemetryAttributes(config),
476
318
  };
477
319
  logger.emit(logRecord);
478
320
  recordContentRetry(config);
@@ -481,15 +323,10 @@ export function logContentRetryFailure(config, event) {
481
323
  ClearcutLogger.getInstance(config)?.logContentRetryFailureEvent(event);
482
324
  if (!isTelemetrySdkInitialized())
483
325
  return;
484
- const attributes = {
485
- ...getCommonAttributes(config),
486
- ...event,
487
- 'event.name': EVENT_CONTENT_RETRY_FAILURE,
488
- };
489
326
  const logger = logs.getLogger(SERVICE_NAME);
490
327
  const logRecord = {
491
- body: `All content retries failed after ${event.total_attempts} attempts.`,
492
- attributes,
328
+ body: event.toLogBody(),
329
+ attributes: event.toOpenTelemetryAttributes(config),
493
330
  };
494
331
  logger.emit(logRecord);
495
332
  recordContentRetryFailure(config);
@@ -498,15 +335,10 @@ export function logModelRouting(config, event) {
498
335
  ClearcutLogger.getInstance(config)?.logModelRoutingEvent(event);
499
336
  if (!isTelemetrySdkInitialized())
500
337
  return;
501
- const attributes = {
502
- ...getCommonAttributes(config),
503
- ...event,
504
- 'event.name': EVENT_MODEL_ROUTING,
505
- };
506
338
  const logger = logs.getLogger(SERVICE_NAME);
507
339
  const logRecord = {
508
- body: `Model routing decision. Model: ${event.decision_model}, Source: ${event.decision_source}`,
509
- attributes,
340
+ body: event.toLogBody(),
341
+ attributes: event.toOpenTelemetryAttributes(config),
510
342
  };
511
343
  logger.emit(logRecord);
512
344
  recordModelRoutingMetrics(config, event);
@@ -515,15 +347,10 @@ export function logModelSlashCommand(config, event) {
515
347
  ClearcutLogger.getInstance(config)?.logModelSlashCommandEvent(event);
516
348
  if (!isTelemetrySdkInitialized())
517
349
  return;
518
- const attributes = {
519
- ...getCommonAttributes(config),
520
- ...event,
521
- 'event.name': EVENT_MODEL_SLASH_COMMAND,
522
- };
523
350
  const logger = logs.getLogger(SERVICE_NAME);
524
351
  const logRecord = {
525
- body: `Model slash command. Model: ${event.model_name}`,
526
- attributes,
352
+ body: event.toLogBody(),
353
+ attributes: event.toOpenTelemetryAttributes(config),
527
354
  };
528
355
  logger.emit(logRecord);
529
356
  recordModelSlashCommand(config, event);
@@ -532,20 +359,10 @@ export function logExtensionInstallEvent(config, event) {
532
359
  ClearcutLogger.getInstance(config)?.logExtensionInstallEvent(event);
533
360
  if (!isTelemetrySdkInitialized())
534
361
  return;
535
- const attributes = {
536
- ...getCommonAttributes(config),
537
- ...event,
538
- 'event.name': EVENT_EXTENSION_INSTALL,
539
- 'event.timestamp': new Date().toISOString(),
540
- extension_name: event.extension_name,
541
- extension_version: event.extension_version,
542
- extension_source: event.extension_source,
543
- status: event.status,
544
- };
545
362
  const logger = logs.getLogger(SERVICE_NAME);
546
363
  const logRecord = {
547
- body: `Installed extension ${event.extension_name}`,
548
- attributes,
364
+ body: event.toLogBody(),
365
+ attributes: event.toOpenTelemetryAttributes(config),
549
366
  };
550
367
  logger.emit(logRecord);
551
368
  }
@@ -553,16 +370,21 @@ export function logExtensionUninstall(config, event) {
553
370
  ClearcutLogger.getInstance(config)?.logExtensionUninstallEvent(event);
554
371
  if (!isTelemetrySdkInitialized())
555
372
  return;
556
- const attributes = {
557
- ...getCommonAttributes(config),
558
- ...event,
559
- 'event.name': EVENT_EXTENSION_UNINSTALL,
560
- 'event.timestamp': new Date().toISOString(),
373
+ const logger = logs.getLogger(SERVICE_NAME);
374
+ const logRecord = {
375
+ body: event.toLogBody(),
376
+ attributes: event.toOpenTelemetryAttributes(config),
561
377
  };
378
+ logger.emit(logRecord);
379
+ }
380
+ export function logExtensionUpdateEvent(config, event) {
381
+ ClearcutLogger.getInstance(config)?.logExtensionUpdateEvent(event);
382
+ if (!isTelemetrySdkInitialized())
383
+ return;
562
384
  const logger = logs.getLogger(SERVICE_NAME);
563
385
  const logRecord = {
564
- body: `Uninstalled extension ${event.extension_name}`,
565
- attributes,
386
+ body: event.toLogBody(),
387
+ attributes: event.toOpenTelemetryAttributes(config),
566
388
  };
567
389
  logger.emit(logRecord);
568
390
  }
@@ -570,16 +392,10 @@ export function logExtensionEnable(config, event) {
570
392
  ClearcutLogger.getInstance(config)?.logExtensionEnableEvent(event);
571
393
  if (!isTelemetrySdkInitialized())
572
394
  return;
573
- const attributes = {
574
- ...getCommonAttributes(config),
575
- ...event,
576
- 'event.name': EVENT_EXTENSION_ENABLE,
577
- 'event.timestamp': new Date().toISOString(),
578
- };
579
395
  const logger = logs.getLogger(SERVICE_NAME);
580
396
  const logRecord = {
581
- body: `Enabled extension ${event.extension_name}`,
582
- attributes,
397
+ body: event.toLogBody(),
398
+ attributes: event.toOpenTelemetryAttributes(config),
583
399
  };
584
400
  logger.emit(logRecord);
585
401
  }
@@ -587,16 +403,66 @@ export function logExtensionDisable(config, event) {
587
403
  ClearcutLogger.getInstance(config)?.logExtensionDisableEvent(event);
588
404
  if (!isTelemetrySdkInitialized())
589
405
  return;
590
- const attributes = {
591
- ...getCommonAttributes(config),
592
- ...event,
593
- 'event.name': EVENT_EXTENSION_DISABLE,
594
- 'event.timestamp': new Date().toISOString(),
406
+ const logger = logs.getLogger(SERVICE_NAME);
407
+ const logRecord = {
408
+ body: event.toLogBody(),
409
+ attributes: event.toOpenTelemetryAttributes(config),
410
+ };
411
+ logger.emit(logRecord);
412
+ }
413
+ export function logSmartEditStrategy(config, event) {
414
+ ClearcutLogger.getInstance(config)?.logSmartEditStrategyEvent(event);
415
+ if (!isTelemetrySdkInitialized())
416
+ return;
417
+ const logger = logs.getLogger(SERVICE_NAME);
418
+ const logRecord = {
419
+ body: event.toLogBody(),
420
+ attributes: event.toOpenTelemetryAttributes(config),
595
421
  };
422
+ logger.emit(logRecord);
423
+ }
424
+ export function logSmartEditCorrectionEvent(config, event) {
425
+ ClearcutLogger.getInstance(config)?.logSmartEditCorrectionEvent(event);
426
+ if (!isTelemetrySdkInitialized())
427
+ return;
428
+ const logger = logs.getLogger(SERVICE_NAME);
429
+ const logRecord = {
430
+ body: event.toLogBody(),
431
+ attributes: event.toOpenTelemetryAttributes(config),
432
+ };
433
+ logger.emit(logRecord);
434
+ }
435
+ export function logAgentStart(config, event) {
436
+ ClearcutLogger.getInstance(config)?.logAgentStartEvent(event);
437
+ if (!isTelemetrySdkInitialized())
438
+ return;
439
+ const logger = logs.getLogger(SERVICE_NAME);
440
+ const logRecord = {
441
+ body: event.toLogBody(),
442
+ attributes: event.toOpenTelemetryAttributes(config),
443
+ };
444
+ logger.emit(logRecord);
445
+ }
446
+ export function logAgentFinish(config, event) {
447
+ ClearcutLogger.getInstance(config)?.logAgentFinishEvent(event);
448
+ if (!isTelemetrySdkInitialized())
449
+ return;
450
+ const logger = logs.getLogger(SERVICE_NAME);
451
+ const logRecord = {
452
+ body: event.toLogBody(),
453
+ attributes: event.toOpenTelemetryAttributes(config),
454
+ };
455
+ logger.emit(logRecord);
456
+ recordAgentRunMetrics(config, event);
457
+ }
458
+ export function logWebFetchFallbackAttempt(config, event) {
459
+ ClearcutLogger.getInstance(config)?.logWebFetchFallbackAttemptEvent(event);
460
+ if (!isTelemetrySdkInitialized())
461
+ return;
596
462
  const logger = logs.getLogger(SERVICE_NAME);
597
463
  const logRecord = {
598
- body: `Disabled extension ${event.extension_name}`,
599
- attributes,
464
+ body: event.toLogBody(),
465
+ attributes: event.toOpenTelemetryAttributes(config),
600
466
  };
601
467
  logger.emit(logRecord);
602
468
  }