@codemieai/code 0.0.24 → 0.0.25

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 (300) hide show
  1. package/README.md +35 -23
  2. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  3. package/dist/agents/codemie-code/config.js +7 -3
  4. package/dist/agents/codemie-code/config.js.map +1 -1
  5. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
  6. package/dist/agents/codemie-code/tools/index.js +6 -5
  7. package/dist/agents/codemie-code/tools/index.js.map +1 -1
  8. package/dist/agents/codemie-code/types.d.ts +4 -0
  9. package/dist/agents/codemie-code/types.d.ts.map +1 -1
  10. package/dist/agents/codemie-code/types.js.map +1 -1
  11. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  12. package/dist/agents/core/AgentCLI.js +21 -0
  13. package/dist/agents/core/AgentCLI.js.map +1 -1
  14. package/dist/agents/core/BaseAgentAdapter.d.ts +54 -3
  15. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/BaseAgentAdapter.js +134 -21
  17. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  18. package/dist/agents/core/BaseMetricsAdapter.d.ts +88 -6
  19. package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -1
  20. package/dist/agents/core/BaseMetricsAdapter.js +174 -16
  21. package/dist/agents/core/BaseMetricsAdapter.js.map +1 -1
  22. package/dist/agents/core/lifecycle-helpers.d.ts +111 -0
  23. package/dist/agents/core/lifecycle-helpers.d.ts.map +1 -0
  24. package/dist/agents/core/lifecycle-helpers.js +189 -0
  25. package/dist/agents/core/lifecycle-helpers.js.map +1 -0
  26. package/dist/agents/core/metrics/MetricsOrchestrator.d.ts.map +1 -0
  27. package/dist/{metrics → agents/core/metrics}/MetricsOrchestrator.js +76 -12
  28. package/dist/agents/core/metrics/MetricsOrchestrator.js.map +1 -0
  29. package/dist/agents/core/metrics/core/DeltaWriter.d.ts.map +1 -0
  30. package/dist/{metrics → agents/core/metrics}/core/DeltaWriter.js +3 -3
  31. package/dist/agents/core/metrics/core/DeltaWriter.js.map +1 -0
  32. package/dist/agents/core/metrics/core/FileSnapshotter.d.ts.map +1 -0
  33. package/dist/{metrics → agents/core/metrics}/core/FileSnapshotter.js +1 -1
  34. package/dist/agents/core/metrics/core/FileSnapshotter.js.map +1 -0
  35. package/dist/agents/core/metrics/core/SessionCorrelator.d.ts.map +1 -0
  36. package/dist/agents/core/metrics/core/SessionCorrelator.js +157 -0
  37. package/dist/agents/core/metrics/core/SessionCorrelator.js.map +1 -0
  38. package/dist/agents/core/metrics/core/SyncStateManager.d.ts.map +1 -0
  39. package/dist/{metrics → agents/core/metrics}/core/SyncStateManager.js +2 -2
  40. package/dist/agents/core/metrics/core/SyncStateManager.js.map +1 -0
  41. package/dist/agents/core/metrics/index.d.ts.map +1 -0
  42. package/dist/agents/core/metrics/index.js.map +1 -0
  43. package/dist/agents/core/metrics/session/SessionStore.d.ts.map +1 -0
  44. package/dist/{metrics → agents/core/metrics}/session/SessionStore.js +3 -3
  45. package/dist/agents/core/metrics/session/SessionStore.js.map +1 -0
  46. package/dist/agents/core/metrics/types.d.ts.map +1 -0
  47. package/dist/agents/core/metrics/types.js.map +1 -0
  48. package/dist/{metrics/config.d.ts → agents/core/metrics-config.d.ts} +1 -1
  49. package/dist/agents/core/metrics-config.d.ts.map +1 -0
  50. package/dist/{metrics/config.js → agents/core/metrics-config.js} +5 -3
  51. package/dist/agents/core/metrics-config.js.map +1 -0
  52. package/dist/agents/core/types.d.ts +112 -6
  53. package/dist/agents/core/types.d.ts.map +1 -1
  54. package/dist/agents/plugins/claude.metrics.d.ts +4 -2
  55. package/dist/agents/plugins/claude.metrics.d.ts.map +1 -1
  56. package/dist/agents/plugins/claude.metrics.js +33 -11
  57. package/dist/agents/plugins/claude.metrics.js.map +1 -1
  58. package/dist/agents/plugins/claude.plugin.d.ts +1 -1
  59. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  60. package/dist/agents/plugins/claude.plugin.js +3 -33
  61. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  62. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  63. package/dist/agents/plugins/codemie-code.plugin.js +12 -5
  64. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  65. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  66. package/dist/agents/plugins/codex.plugin.js +133 -33
  67. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  68. package/dist/agents/plugins/gemini.metrics.d.ts +10 -3
  69. package/dist/agents/plugins/gemini.metrics.d.ts.map +1 -1
  70. package/dist/agents/plugins/gemini.metrics.js +69 -17
  71. package/dist/agents/plugins/gemini.metrics.js.map +1 -1
  72. package/dist/agents/plugins/gemini.plugin.d.ts +1 -1
  73. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  74. package/dist/agents/plugins/gemini.plugin.js +15 -24
  75. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  76. package/dist/agents/plugins/history-parser.d.ts +1 -1
  77. package/dist/agents/plugins/history-parser.d.ts.map +1 -1
  78. package/dist/cli/commands/analytics/data-loader.d.ts +1 -1
  79. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
  80. package/dist/cli/commands/analytics/types.d.ts +2 -2
  81. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  82. package/dist/cli/commands/analytics/types.js +1 -1
  83. package/dist/cli/commands/profile/auth.d.ts +5 -0
  84. package/dist/cli/commands/profile/auth.d.ts.map +1 -0
  85. package/dist/cli/commands/profile/auth.js +120 -0
  86. package/dist/cli/commands/profile/auth.js.map +1 -0
  87. package/dist/cli/commands/{profile.d.ts → profile/index.d.ts} +1 -1
  88. package/dist/cli/commands/profile/index.d.ts.map +1 -0
  89. package/dist/cli/commands/{profile.js → profile/index.js} +81 -46
  90. package/dist/cli/commands/profile/index.js.map +1 -0
  91. package/dist/cli/index.js +1 -3
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/providers/core/auth-validation.d.ts +20 -0
  94. package/dist/providers/core/auth-validation.d.ts.map +1 -0
  95. package/dist/providers/core/auth-validation.js +27 -0
  96. package/dist/providers/core/auth-validation.js.map +1 -0
  97. package/dist/providers/core/types.d.ts +51 -0
  98. package/dist/providers/core/types.d.ts.map +1 -1
  99. package/dist/providers/plugins/sso/index.d.ts +3 -0
  100. package/dist/providers/plugins/sso/index.d.ts.map +1 -1
  101. package/dist/providers/plugins/sso/index.js +4 -0
  102. package/dist/providers/plugins/sso/index.js.map +1 -1
  103. package/dist/{metrics/sync/jsonl-writer.d.ts → providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts} +2 -2
  104. package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts.map +1 -0
  105. package/dist/{metrics/sync/jsonl-writer.js → providers/plugins/sso/metrics/sync/sso.jsonl-writer.js} +2 -2
  106. package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.js.map +1 -0
  107. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts +62 -0
  108. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts.map +1 -0
  109. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js +157 -0
  110. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js.map +1 -0
  111. package/dist/{metrics/sync/aggregator.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts} +4 -4
  112. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts.map +1 -0
  113. package/dist/{metrics/sync/aggregator.js → providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js} +5 -4
  114. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js.map +1 -0
  115. package/dist/{metrics/sync/MetricsApiClient.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts} +2 -2
  116. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts.map +1 -0
  117. package/dist/{metrics/sync/MetricsApiClient.js → providers/plugins/sso/metrics/sync/sso.metrics-api-client.js} +9 -5
  118. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js.map +1 -0
  119. package/dist/{metrics/sync/post-processor.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts} +3 -3
  120. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts.map +1 -0
  121. package/dist/{metrics/sync/post-processor.js → providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js} +3 -3
  122. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js.map +1 -0
  123. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts +104 -0
  124. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts.map +1 -0
  125. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js +258 -0
  126. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js.map +1 -0
  127. package/dist/{proxy/plugins/metrics-sync.plugin.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts} +9 -6
  128. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts.map +1 -0
  129. package/dist/{proxy/plugins/metrics-sync.plugin.js → providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js} +42 -60
  130. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js.map +1 -0
  131. package/dist/{metrics/sync/types.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts} +6 -2
  132. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts.map +1 -0
  133. package/dist/{metrics/sync/types.js → providers/plugins/sso/metrics/sync/sso.metrics-types.js} +1 -1
  134. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.js.map +1 -0
  135. package/dist/providers/plugins/sso/proxy/plugins/endpoint-blocker.plugin.d.ts.map +1 -0
  136. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/endpoint-blocker.plugin.js +1 -1
  137. package/dist/providers/plugins/sso/proxy/plugins/endpoint-blocker.plugin.js.map +1 -0
  138. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
  139. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/header-injection.plugin.js +2 -2
  140. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -0
  141. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/index.d.ts +2 -2
  142. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -0
  143. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/index.js +4 -3
  144. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -0
  145. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.d.ts.map +1 -0
  146. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/logging.plugin.js +1 -1
  147. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js.map +1 -0
  148. package/dist/providers/plugins/sso/proxy/plugins/registry.d.ts.map +1 -0
  149. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/registry.js +1 -1
  150. package/dist/providers/plugins/sso/proxy/plugins/registry.js.map +1 -0
  151. package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
  152. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/sso-auth.plugin.js +1 -1
  153. package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js.map +1 -0
  154. package/dist/{proxy → providers/plugins/sso/proxy}/plugins/types.d.ts +4 -4
  155. package/dist/providers/plugins/sso/proxy/plugins/types.d.ts.map +1 -0
  156. package/dist/providers/plugins/sso/proxy/plugins/types.js.map +1 -0
  157. package/dist/{proxy/errors.d.ts → providers/plugins/sso/proxy/proxy-errors.d.ts} +1 -1
  158. package/dist/providers/plugins/sso/proxy/proxy-errors.d.ts.map +1 -0
  159. package/dist/{proxy/errors.js → providers/plugins/sso/proxy/proxy-errors.js} +1 -1
  160. package/dist/providers/plugins/sso/proxy/proxy-errors.js.map +1 -0
  161. package/dist/{proxy/http-client.d.ts → providers/plugins/sso/proxy/proxy-http-client.d.ts} +1 -1
  162. package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -0
  163. package/dist/{proxy/http-client.js → providers/plugins/sso/proxy/proxy-http-client.js} +3 -3
  164. package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -0
  165. package/dist/{proxy/types.d.ts → providers/plugins/sso/proxy/proxy-types.d.ts} +2 -2
  166. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -0
  167. package/dist/{proxy/types.js → providers/plugins/sso/proxy/proxy-types.js} +1 -1
  168. package/dist/providers/plugins/sso/proxy/proxy-types.js.map +1 -0
  169. package/dist/{utils/codemie-proxy.d.ts → providers/plugins/sso/proxy/sso.proxy.d.ts} +3 -3
  170. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -0
  171. package/dist/{utils/codemie-proxy.js → providers/plugins/sso/proxy/sso.proxy.js} +11 -11
  172. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -0
  173. package/dist/providers/plugins/sso/sso.auth.d.ts +7 -3
  174. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  175. package/dist/providers/plugins/sso/sso.auth.js +40 -7
  176. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  177. package/dist/providers/plugins/sso/sso.health.js +3 -3
  178. package/dist/providers/plugins/sso/sso.health.js.map +1 -1
  179. package/dist/providers/plugins/sso/sso.models.js +1 -1
  180. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  181. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  182. package/dist/providers/plugins/sso/sso.setup-steps.js +116 -1
  183. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  184. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  185. package/dist/providers/plugins/sso/sso.template.js +51 -0
  186. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  187. package/dist/utils/credential-store.d.ts +9 -3
  188. package/dist/utils/credential-store.d.ts.map +1 -1
  189. package/dist/utils/credential-store.js +43 -18
  190. package/dist/utils/credential-store.js.map +1 -1
  191. package/dist/utils/exec.d.ts +1 -1
  192. package/dist/utils/exec.d.ts.map +1 -1
  193. package/dist/utils/exec.js +9 -5
  194. package/dist/utils/exec.js.map +1 -1
  195. package/dist/utils/first-time.js +1 -1
  196. package/dist/utils/first-time.js.map +1 -1
  197. package/dist/{metrics/utils → utils}/git.d.ts +1 -1
  198. package/dist/utils/git.d.ts.map +1 -0
  199. package/dist/{metrics/utils → utils}/git.js +2 -2
  200. package/dist/utils/git.js.map +1 -0
  201. package/dist/utils/npm.d.ts.map +1 -1
  202. package/dist/utils/npm.js +16 -5
  203. package/dist/utils/npm.js.map +1 -1
  204. package/dist/utils/path-utils.d.ts +195 -0
  205. package/dist/utils/path-utils.d.ts.map +1 -0
  206. package/dist/utils/path-utils.js +267 -0
  207. package/dist/utils/path-utils.js.map +1 -0
  208. package/dist/utils/profile-display.d.ts +41 -0
  209. package/dist/utils/profile-display.d.ts.map +1 -0
  210. package/dist/utils/profile-display.js +90 -0
  211. package/dist/utils/profile-display.js.map +1 -0
  212. package/dist/utils/profile.d.ts +12 -1
  213. package/dist/utils/profile.d.ts.map +1 -1
  214. package/dist/utils/profile.js +52 -9
  215. package/dist/utils/profile.js.map +1 -1
  216. package/dist/utils/which.d.ts.map +1 -1
  217. package/dist/utils/which.js +4 -2
  218. package/dist/utils/which.js.map +1 -1
  219. package/package.json +1 -1
  220. package/dist/cli/commands/auth.d.ts +0 -3
  221. package/dist/cli/commands/auth.d.ts.map +0 -1
  222. package/dist/cli/commands/auth.js +0 -184
  223. package/dist/cli/commands/auth.js.map +0 -1
  224. package/dist/cli/commands/profile.d.ts.map +0 -1
  225. package/dist/cli/commands/profile.js.map +0 -1
  226. package/dist/metrics/MetricsOrchestrator.d.ts.map +0 -1
  227. package/dist/metrics/MetricsOrchestrator.js.map +0 -1
  228. package/dist/metrics/config.d.ts.map +0 -1
  229. package/dist/metrics/config.js.map +0 -1
  230. package/dist/metrics/core/DeltaWriter.d.ts.map +0 -1
  231. package/dist/metrics/core/DeltaWriter.js.map +0 -1
  232. package/dist/metrics/core/FileSnapshotter.d.ts.map +0 -1
  233. package/dist/metrics/core/FileSnapshotter.js.map +0 -1
  234. package/dist/metrics/core/SessionCorrelator.d.ts.map +0 -1
  235. package/dist/metrics/core/SessionCorrelator.js +0 -115
  236. package/dist/metrics/core/SessionCorrelator.js.map +0 -1
  237. package/dist/metrics/core/SyncStateManager.d.ts.map +0 -1
  238. package/dist/metrics/core/SyncStateManager.js.map +0 -1
  239. package/dist/metrics/index.d.ts.map +0 -1
  240. package/dist/metrics/index.js.map +0 -1
  241. package/dist/metrics/session/SessionStore.d.ts.map +0 -1
  242. package/dist/metrics/session/SessionStore.js.map +0 -1
  243. package/dist/metrics/sync/MetricsApiClient.d.ts.map +0 -1
  244. package/dist/metrics/sync/MetricsApiClient.js.map +0 -1
  245. package/dist/metrics/sync/aggregator.d.ts.map +0 -1
  246. package/dist/metrics/sync/aggregator.js.map +0 -1
  247. package/dist/metrics/sync/index.d.ts +0 -10
  248. package/dist/metrics/sync/index.d.ts.map +0 -1
  249. package/dist/metrics/sync/index.js +0 -10
  250. package/dist/metrics/sync/index.js.map +0 -1
  251. package/dist/metrics/sync/jsonl-writer.d.ts.map +0 -1
  252. package/dist/metrics/sync/jsonl-writer.js.map +0 -1
  253. package/dist/metrics/sync/post-processor.d.ts.map +0 -1
  254. package/dist/metrics/sync/post-processor.js.map +0 -1
  255. package/dist/metrics/sync/types.d.ts.map +0 -1
  256. package/dist/metrics/sync/types.js.map +0 -1
  257. package/dist/metrics/types.d.ts.map +0 -1
  258. package/dist/metrics/types.js.map +0 -1
  259. package/dist/metrics/utils/git.d.ts.map +0 -1
  260. package/dist/metrics/utils/git.js.map +0 -1
  261. package/dist/proxy/errors.d.ts.map +0 -1
  262. package/dist/proxy/errors.js.map +0 -1
  263. package/dist/proxy/http-client.d.ts.map +0 -1
  264. package/dist/proxy/http-client.js.map +0 -1
  265. package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts.map +0 -1
  266. package/dist/proxy/plugins/endpoint-blocker.plugin.js.map +0 -1
  267. package/dist/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
  268. package/dist/proxy/plugins/header-injection.plugin.js.map +0 -1
  269. package/dist/proxy/plugins/index.d.ts.map +0 -1
  270. package/dist/proxy/plugins/index.js.map +0 -1
  271. package/dist/proxy/plugins/logging.plugin.d.ts.map +0 -1
  272. package/dist/proxy/plugins/logging.plugin.js.map +0 -1
  273. package/dist/proxy/plugins/metrics-sync.plugin.d.ts.map +0 -1
  274. package/dist/proxy/plugins/metrics-sync.plugin.js.map +0 -1
  275. package/dist/proxy/plugins/registry.d.ts.map +0 -1
  276. package/dist/proxy/plugins/registry.js.map +0 -1
  277. package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
  278. package/dist/proxy/plugins/sso-auth.plugin.js.map +0 -1
  279. package/dist/proxy/plugins/types.d.ts.map +0 -1
  280. package/dist/proxy/plugins/types.js.map +0 -1
  281. package/dist/proxy/types.d.ts.map +0 -1
  282. package/dist/proxy/types.js.map +0 -1
  283. package/dist/utils/codemie-proxy.d.ts.map +0 -1
  284. package/dist/utils/codemie-proxy.js.map +0 -1
  285. /package/dist/{metrics → agents/core/metrics}/MetricsOrchestrator.d.ts +0 -0
  286. /package/dist/{metrics → agents/core/metrics}/core/DeltaWriter.d.ts +0 -0
  287. /package/dist/{metrics → agents/core/metrics}/core/FileSnapshotter.d.ts +0 -0
  288. /package/dist/{metrics → agents/core/metrics}/core/SessionCorrelator.d.ts +0 -0
  289. /package/dist/{metrics → agents/core/metrics}/core/SyncStateManager.d.ts +0 -0
  290. /package/dist/{metrics → agents/core/metrics}/index.d.ts +0 -0
  291. /package/dist/{metrics → agents/core/metrics}/index.js +0 -0
  292. /package/dist/{metrics → agents/core/metrics}/session/SessionStore.d.ts +0 -0
  293. /package/dist/{metrics → agents/core/metrics}/types.d.ts +0 -0
  294. /package/dist/{metrics → agents/core/metrics}/types.js +0 -0
  295. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/endpoint-blocker.plugin.d.ts +0 -0
  296. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/header-injection.plugin.d.ts +0 -0
  297. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/logging.plugin.d.ts +0 -0
  298. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/registry.d.ts +0 -0
  299. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/sso-auth.plugin.d.ts +0 -0
  300. /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/types.js +0 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SSO Metrics Sender
3
+ *
4
+ * SSO-specific utility for sending metrics to CodeMie API.
5
+ * Provides high-level methods for different metric types:
6
+ * - Session start metrics
7
+ * - Session end metrics
8
+ * - Aggregated session metrics
9
+ *
10
+ * Used by:
11
+ * - SSO metrics sync proxy plugin (aggregated metrics sync)
12
+ * - BaseAgentAdapter (session lifecycle for ai-run-sso)
13
+ *
14
+ * IMPORTANT: This is an SSO provider capability, not a generic metrics capability.
15
+ * Only works with ai-run-sso provider which provides authentication cookies.
16
+ */
17
+ import type { SessionMetric, MetricsSyncResponse } from './sso.metrics-types.js';
18
+ import type { MetricsSession } from '../../../../../agents/core/metrics/types.js';
19
+ /**
20
+ * Session start status
21
+ */
22
+ export type SessionStartStatus = 'started' | 'failed';
23
+ /**
24
+ * Session end status
25
+ */
26
+ export type SessionEndStatus = 'completed' | 'failed' | 'interrupted';
27
+ /**
28
+ * Session lifecycle error
29
+ */
30
+ export interface SessionError {
31
+ type: string;
32
+ message: string;
33
+ code?: string;
34
+ }
35
+ export interface MetricsSenderOptions {
36
+ baseUrl: string;
37
+ cookies?: string;
38
+ timeout?: number;
39
+ retryAttempts?: number;
40
+ version?: string;
41
+ clientType?: string;
42
+ dryRun?: boolean;
43
+ }
44
+ /**
45
+ * High-level metrics sender for SSO provider
46
+ * Wraps MetricsApiClient with convenience methods
47
+ */
48
+ export declare class MetricsSender {
49
+ /**
50
+ * Metric name constants
51
+ * - METRIC_SESSION_TOTAL: Session lifecycle events (start, end)
52
+ * Differentiated by 'status' attribute: started, completed, failed, interrupted
53
+ * - METRIC_USAGE_TOTAL: Aggregated usage metrics (periodic sync)
54
+ * Contains accumulated token, tool, and file operation metrics
55
+ */
56
+ static readonly METRIC_SESSION_TOTAL = "codemie_cli_session_total";
57
+ static readonly METRIC_USAGE_TOTAL = "codemie_cli_usage_total";
58
+ private client;
59
+ private dryRun;
60
+ private version;
61
+ constructor(options: MetricsSenderOptions);
62
+ /**
63
+ * Send session start metric
64
+ * Called when agent begins execution with ai-run-sso provider
65
+ *
66
+ * @param session - Session metadata (with optional model)
67
+ * @param workingDirectory - Current working directory (for git branch detection)
68
+ * @param status - Session start status (started/failed)
69
+ * @param error - Optional error information (required if status=failed)
70
+ */
71
+ sendSessionStart(session: Pick<MetricsSession, 'sessionId' | 'agentName' | 'provider' | 'project' | 'startTime' | 'workingDirectory'> & {
72
+ model?: string;
73
+ }, workingDirectory: string, status?: SessionStartStatus, error?: SessionError): Promise<MetricsSyncResponse>;
74
+ /**
75
+ * Send session end metric
76
+ * Called when agent process exits
77
+ *
78
+ * @param session - Session metadata (with optional model)
79
+ * @param workingDirectory - Current working directory (for git branch detection)
80
+ * @param status - Session end status (completed/failed/interrupted)
81
+ * @param durationMs - Session duration in milliseconds
82
+ * @param error - Optional error information (for failed sessions)
83
+ */
84
+ sendSessionEnd(session: Pick<MetricsSession, 'sessionId' | 'agentName' | 'provider' | 'project' | 'startTime' | 'workingDirectory'> & {
85
+ model?: string;
86
+ }, workingDirectory: string, status: SessionEndStatus, durationMs: number, error?: SessionError): Promise<MetricsSyncResponse>;
87
+ /**
88
+ * Send aggregated session metric
89
+ * Called by SSO metrics sync plugin for periodic sync
90
+ *
91
+ * @param metric - Aggregated session metric
92
+ */
93
+ sendSessionMetric(metric: SessionMetric): Promise<MetricsSyncResponse>;
94
+ /**
95
+ * Extract repository name from working directory
96
+ * Format: parent/current
97
+ *
98
+ * @example
99
+ * /Users/john/projects/codemie-code → projects/codemie-code
100
+ * C:\Users\john\projects\codemie-code → projects\codemie-code
101
+ */
102
+ private extractRepository;
103
+ }
104
+ //# sourceMappingURL=sso.metrics-sender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.metrics-sender.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/metrics/sync/sso.metrics-sender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAoB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAIlF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,+BAA+B;IACnE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,6BAA6B;IAE/D,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,oBAAoB;IAezC;;;;;;;;OAQG;IACG,gBAAgB,CACpB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,kBAAkB,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACzI,gBAAgB,EAAE,MAAM,EACxB,MAAM,GAAE,kBAA8B,EACtC,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAiF/B;;;;;;;;;OASG;IACG,cAAc,CAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,kBAAkB,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACzI,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAkF/B;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkC5E;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * SSO Metrics Sender
3
+ *
4
+ * SSO-specific utility for sending metrics to CodeMie API.
5
+ * Provides high-level methods for different metric types:
6
+ * - Session start metrics
7
+ * - Session end metrics
8
+ * - Aggregated session metrics
9
+ *
10
+ * Used by:
11
+ * - SSO metrics sync proxy plugin (aggregated metrics sync)
12
+ * - BaseAgentAdapter (session lifecycle for ai-run-sso)
13
+ *
14
+ * IMPORTANT: This is an SSO provider capability, not a generic metrics capability.
15
+ * Only works with ai-run-sso provider which provides authentication cookies.
16
+ */
17
+ import { MetricsApiClient } from './sso.metrics-api-client.js';
18
+ import { logger } from '../../../../../utils/logger.js';
19
+ import { detectGitBranch } from '../../../../../utils/git.js';
20
+ /**
21
+ * High-level metrics sender for SSO provider
22
+ * Wraps MetricsApiClient with convenience methods
23
+ */
24
+ export class MetricsSender {
25
+ /**
26
+ * Metric name constants
27
+ * - METRIC_SESSION_TOTAL: Session lifecycle events (start, end)
28
+ * Differentiated by 'status' attribute: started, completed, failed, interrupted
29
+ * - METRIC_USAGE_TOTAL: Aggregated usage metrics (periodic sync)
30
+ * Contains accumulated token, tool, and file operation metrics
31
+ */
32
+ static METRIC_SESSION_TOTAL = 'codemie_cli_session_total';
33
+ static METRIC_USAGE_TOTAL = 'codemie_cli_usage_total';
34
+ client;
35
+ dryRun;
36
+ version;
37
+ constructor(options) {
38
+ this.dryRun = options.dryRun || false;
39
+ this.version = options.version || 'unknown';
40
+ const config = {
41
+ baseUrl: options.baseUrl,
42
+ cookies: options.cookies,
43
+ timeout: options.timeout,
44
+ retryAttempts: options.retryAttempts,
45
+ version: options.version,
46
+ clientType: options.clientType
47
+ };
48
+ this.client = new MetricsApiClient(config);
49
+ }
50
+ /**
51
+ * Send session start metric
52
+ * Called when agent begins execution with ai-run-sso provider
53
+ *
54
+ * @param session - Session metadata (with optional model)
55
+ * @param workingDirectory - Current working directory (for git branch detection)
56
+ * @param status - Session start status (started/failed)
57
+ * @param error - Optional error information (required if status=failed)
58
+ */
59
+ async sendSessionStart(session, workingDirectory, status = 'started', error) {
60
+ // Detect git branch
61
+ const branch = await detectGitBranch(workingDirectory);
62
+ // Extract repository from working directory
63
+ const repository = this.extractRepository(workingDirectory);
64
+ // Build session start metric with status
65
+ const attributes = {
66
+ // Identity
67
+ agent: session.agentName,
68
+ agent_version: this.version,
69
+ llm_model: session.model || 'unknown', // From profile config
70
+ repository,
71
+ session_id: session.sessionId,
72
+ branch: branch || 'unknown',
73
+ ...(session.project && { project: session.project }),
74
+ // Zero metrics (session just started)
75
+ total_user_prompts: 0,
76
+ total_input_tokens: 0,
77
+ total_output_tokens: 0,
78
+ total_cache_read_input_tokens: 0,
79
+ total_cache_creation_tokens: 0,
80
+ total_tool_calls: 0,
81
+ successful_tool_calls: 0,
82
+ failed_tool_calls: 0,
83
+ files_created: 0,
84
+ files_modified: 0,
85
+ files_deleted: 0,
86
+ total_lines_added: 0,
87
+ total_lines_removed: 0,
88
+ // Session metadata
89
+ session_duration_ms: 0,
90
+ had_errors: status === 'failed',
91
+ count: 1,
92
+ // Lifecycle status
93
+ status
94
+ };
95
+ // Add error details if session start failed
96
+ if (status === 'failed' && error) {
97
+ attributes.errors = {
98
+ [error.type]: [error.code ? `[${error.code}] ${error.message}` : error.message]
99
+ };
100
+ }
101
+ const metric = {
102
+ name: MetricsSender.METRIC_SESSION_TOTAL,
103
+ attributes
104
+ };
105
+ // Dry-run mode: log without sending
106
+ if (this.dryRun) {
107
+ logger.info('[MetricsSender] [DRY-RUN] Would send session start metric:', {
108
+ endpoint: 'POST /v1/metrics',
109
+ metric: {
110
+ name: metric.name,
111
+ attributes: {
112
+ agent: metric.attributes.agent,
113
+ session_id: metric.attributes.session_id,
114
+ branch: metric.attributes.branch,
115
+ repository: metric.attributes.repository,
116
+ status,
117
+ ...(error && { error_type: error.type })
118
+ }
119
+ }
120
+ });
121
+ return { success: true, message: '[DRY-RUN] Session start metric logged' };
122
+ }
123
+ const response = await this.client.sendMetric(metric);
124
+ logger.info(`[MetricsSender] Session start metric sent`, metric);
125
+ return response;
126
+ }
127
+ /**
128
+ * Send session end metric
129
+ * Called when agent process exits
130
+ *
131
+ * @param session - Session metadata (with optional model)
132
+ * @param workingDirectory - Current working directory (for git branch detection)
133
+ * @param status - Session end status (completed/failed/interrupted)
134
+ * @param durationMs - Session duration in milliseconds
135
+ * @param error - Optional error information (for failed sessions)
136
+ */
137
+ async sendSessionEnd(session, workingDirectory, status, durationMs, error) {
138
+ // Detect git branch
139
+ const branch = await detectGitBranch(workingDirectory);
140
+ // Extract repository from working directory
141
+ const repository = this.extractRepository(workingDirectory);
142
+ // Build session end metric with status
143
+ const attributes = {
144
+ // Identity
145
+ agent: session.agentName,
146
+ agent_version: this.version,
147
+ llm_model: session.model || 'unknown',
148
+ repository,
149
+ session_id: session.sessionId,
150
+ branch: branch || 'unknown',
151
+ ...(session.project && { project: session.project }),
152
+ // Zero metrics (detailed metrics come from aggregated usage)
153
+ total_user_prompts: 0,
154
+ total_input_tokens: 0,
155
+ total_output_tokens: 0,
156
+ total_cache_read_input_tokens: 0,
157
+ total_cache_creation_tokens: 0,
158
+ total_tool_calls: 0,
159
+ successful_tool_calls: 0,
160
+ failed_tool_calls: 0,
161
+ files_created: 0,
162
+ files_modified: 0,
163
+ files_deleted: 0,
164
+ total_lines_added: 0,
165
+ total_lines_removed: 0,
166
+ // Session metadata
167
+ session_duration_ms: durationMs,
168
+ had_errors: status === 'failed',
169
+ count: 1,
170
+ // Lifecycle status
171
+ status
172
+ };
173
+ // Add error details if session ended with error
174
+ if (status === 'failed' && error) {
175
+ attributes.errors = {
176
+ [error.type]: [error.code ? `[${error.code}] ${error.message}` : error.message]
177
+ };
178
+ }
179
+ const metric = {
180
+ name: MetricsSender.METRIC_SESSION_TOTAL,
181
+ attributes
182
+ };
183
+ // Dry-run mode: log without sending
184
+ if (this.dryRun) {
185
+ logger.info('[MetricsSender] [DRY-RUN] Would send session end metric:', {
186
+ endpoint: 'POST /v1/metrics',
187
+ metric: {
188
+ name: metric.name,
189
+ attributes: {
190
+ agent: metric.attributes.agent,
191
+ session_id: metric.attributes.session_id,
192
+ branch: metric.attributes.branch,
193
+ repository: metric.attributes.repository,
194
+ status,
195
+ duration_ms: durationMs,
196
+ ...(error && { error_type: error.type })
197
+ }
198
+ }
199
+ });
200
+ return { success: true, message: '[DRY-RUN] Session end metric logged' };
201
+ }
202
+ const response = await this.client.sendMetric(metric);
203
+ logger.info(`[MetricsSender] Session end metric sent`, metric);
204
+ return response;
205
+ }
206
+ /**
207
+ * Send aggregated session metric
208
+ * Called by SSO metrics sync plugin for periodic sync
209
+ *
210
+ * @param metric - Aggregated session metric
211
+ */
212
+ async sendSessionMetric(metric) {
213
+ // Dry-run mode: log without sending
214
+ if (this.dryRun) {
215
+ logger.info('[MetricsSender] [DRY-RUN] Would send aggregated metric:', {
216
+ endpoint: 'POST /v1/metrics',
217
+ metric: {
218
+ name: metric.name,
219
+ attributes: {
220
+ agent: metric.attributes.agent,
221
+ session_id: metric.attributes.session_id,
222
+ branch: metric.attributes.branch,
223
+ total_user_prompts: metric.attributes.total_user_prompts,
224
+ total_input_tokens: metric.attributes.total_input_tokens,
225
+ total_output_tokens: metric.attributes.total_output_tokens
226
+ }
227
+ }
228
+ });
229
+ return { success: true, message: '[DRY-RUN] Aggregated metric logged' };
230
+ }
231
+ const response = await this.client.sendMetric(metric);
232
+ logger.debug('[MetricsSender] Aggregated usage metric sent', {
233
+ agent: metric.attributes.agent,
234
+ branch: metric.attributes.branch,
235
+ prompts: metric.attributes.total_user_prompts,
236
+ tokens: metric.attributes.total_input_tokens + metric.attributes.total_output_tokens,
237
+ session: metric.attributes.session_id
238
+ });
239
+ return response;
240
+ }
241
+ /**
242
+ * Extract repository name from working directory
243
+ * Format: parent/current
244
+ *
245
+ * @example
246
+ * /Users/john/projects/codemie-code → projects/codemie-code
247
+ * C:\Users\john\projects\codemie-code → projects\codemie-code
248
+ */
249
+ extractRepository(workingDirectory) {
250
+ const parts = workingDirectory.split(/[/\\]/);
251
+ const filtered = parts.filter(p => p.length > 0);
252
+ if (filtered.length >= 2) {
253
+ return `${filtered[filtered.length - 2]}/${filtered[filtered.length - 1]}`;
254
+ }
255
+ return filtered[filtered.length - 1] || 'unknown';
256
+ }
257
+ }
258
+ //# sourceMappingURL=sso.metrics-sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.metrics-sender.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/metrics/sync/sso.metrics-sender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA+B9D;;;GAGG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAU,oBAAoB,GAAG,2BAA2B,CAAC;IACnE,MAAM,CAAU,kBAAkB,GAAG,yBAAyB,CAAC;IAEvD,MAAM,CAAmB;IACzB,MAAM,CAAU;IAChB,OAAO,CAAS;IAExB,YAAY,OAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAyI,EACzI,gBAAwB,EACxB,SAA6B,SAAS,EACtC,KAAoB;QAEpB,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEvD,4CAA4C;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAE5D,yCAAyC;QACzC,MAAM,UAAU,GAAQ;YACtB,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,sBAAsB;YAC7D,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAEpD,sCAAsC;YACtC,kBAAkB,EAAE,CAAC;YACrB,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,6BAA6B,EAAE,CAAC;YAChC,2BAA2B,EAAE,CAAC;YAC9B,gBAAgB,EAAE,CAAC;YACnB,qBAAqB,EAAE,CAAC;YACxB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,mBAAmB,EAAE,CAAC;YAEtB,mBAAmB;YACnB,mBAAmB,EAAE,CAAC;YACtB,UAAU,EAAE,MAAM,KAAK,QAAQ;YAC/B,KAAK,EAAE,CAAC;YAER,mBAAmB;YACnB,MAAM;SACP,CAAC;QAEF,4CAA4C;QAC5C,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;YACjC,UAAU,CAAC,MAAM,GAAG;gBAClB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;aAChF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,aAAa,CAAC,oBAAoB;YACxC,UAAU;SACX,CAAC;QAEF,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;gBACxE,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE;wBACV,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;wBAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;wBACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;wBAChC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;wBACxC,MAAM;wBACN,GAAG,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;qBACzC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;QAC7E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAAC;QAEjE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAClB,OAAyI,EACzI,gBAAwB,EACxB,MAAwB,EACxB,UAAkB,EAClB,KAAoB;QAEpB,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEvD,4CAA4C;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAE5D,uCAAuC;QACvC,MAAM,UAAU,GAAQ;YACtB,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;YACrC,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAEpD,6DAA6D;YAC7D,kBAAkB,EAAE,CAAC;YACrB,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,6BAA6B,EAAE,CAAC;YAChC,2BAA2B,EAAE,CAAC;YAC9B,gBAAgB,EAAE,CAAC;YACnB,qBAAqB,EAAE,CAAC;YACxB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,mBAAmB,EAAE,CAAC;YAEtB,mBAAmB;YACnB,mBAAmB,EAAE,UAAU;YAC/B,UAAU,EAAE,MAAM,KAAK,QAAQ;YAC/B,KAAK,EAAE,CAAC;YAER,mBAAmB;YACnB,MAAM;SACP,CAAC;QAEF,gDAAgD;QAChD,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;YACjC,UAAU,CAAC,MAAM,GAAG;gBAClB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;aAChF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,aAAa,CAAC,oBAAoB;YACxC,UAAU;SACX,CAAC;QAEF,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;gBACtE,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE;wBACV,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;wBAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;wBACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;wBAChC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;wBACxC,MAAM;wBACN,WAAW,EAAE,UAAU;wBACvB,GAAG,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;qBACzC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC;QAE/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAqB;QAC3C,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;gBACrE,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE;wBACV,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;wBAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;wBACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;wBAChC,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB;wBACxD,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB;wBACxD,mBAAmB,EAAE,MAAM,CAAC,UAAU,CAAC,mBAAmB;qBAC3D;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;YAC3D,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;YAC9B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;YAChC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB;YAC7C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,mBAAmB;YACpF,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,gBAAwB;QAChD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEjD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IACpD,CAAC"}
@@ -1,19 +1,22 @@
1
1
  /**
2
- * Metrics Sync Plugin
2
+ * SSO Metrics Sync Plugin
3
3
  * Priority: 100 (runs after logging plugin)
4
4
  *
5
- * Purpose: Syncs metrics to CodeMie API in background
5
+ * Purpose: Syncs metrics to CodeMie API in background (SSO provider only)
6
6
  * - Runs only in SSO mode (ai-run-sso provider)
7
7
  * - Background timer (every 5 minutes)
8
8
  * - Aggregates pending deltas into single metric
9
9
  * - Marks deltas as synced in JSONL
10
10
  * - Final sync on proxy shutdown
11
11
  *
12
- * SOLID: Single responsibility = sync metrics
12
+ * IMPORTANT: This is an SSO provider capability.
13
+ * Only works with ai-run-sso provider which provides authentication cookies.
14
+ *
15
+ * SOLID: Single responsibility = sync metrics for SSO
13
16
  * KISS: Simple timer-based sync
14
17
  */
15
- import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
16
- export declare class MetricsSyncPlugin implements ProxyPlugin {
18
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from '../../proxy/plugins/types.js';
19
+ export declare class SSOMetricsSyncPlugin implements ProxyPlugin {
17
20
  id: string;
18
21
  name: string;
19
22
  version: string;
@@ -30,4 +33,4 @@ export declare class MetricsSyncPlugin implements ProxyPlugin {
30
33
  */
31
34
  private isDryRunEnabled;
32
35
  }
33
- //# sourceMappingURL=metrics-sync.plugin.d.ts.map
36
+ //# sourceMappingURL=sso.metrics-sync.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.metrics-sync.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQ5F,qBAAa,oBAAqB,YAAW,WAAW;IACtD,EAAE,SAA+B;IACjC,IAAI,SAAsB;IAC1B,OAAO,SAAW;IAClB,QAAQ,SAAO;IAET,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkC1E;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAexB"}
@@ -1,48 +1,51 @@
1
1
  /**
2
- * Metrics Sync Plugin
2
+ * SSO Metrics Sync Plugin
3
3
  * Priority: 100 (runs after logging plugin)
4
4
  *
5
- * Purpose: Syncs metrics to CodeMie API in background
5
+ * Purpose: Syncs metrics to CodeMie API in background (SSO provider only)
6
6
  * - Runs only in SSO mode (ai-run-sso provider)
7
7
  * - Background timer (every 5 minutes)
8
8
  * - Aggregates pending deltas into single metric
9
9
  * - Marks deltas as synced in JSONL
10
10
  * - Final sync on proxy shutdown
11
11
  *
12
- * SOLID: Single responsibility = sync metrics
12
+ * IMPORTANT: This is an SSO provider capability.
13
+ * Only works with ai-run-sso provider which provides authentication cookies.
14
+ *
15
+ * SOLID: Single responsibility = sync metrics for SSO
13
16
  * KISS: Simple timer-based sync
14
17
  */
15
- import { logger } from '../../utils/logger.js';
16
- import { MetricsApiClient } from '../../metrics/sync/MetricsApiClient.js';
17
- import { readJSONL, writeJSONLAtomic } from '../../metrics/sync/jsonl-writer.js';
18
- import { aggregateDeltas } from '../../metrics/sync/aggregator.js';
19
- import { SessionStore } from '../../metrics/session/SessionStore.js';
20
- import { getSessionMetricsPath } from '../../metrics/config.js';
21
- export class MetricsSyncPlugin {
22
- id = '@codemie/proxy-metrics-sync';
23
- name = 'Metrics Sync';
18
+ import { logger } from '../../../../../utils/logger.js';
19
+ import { MetricsSender } from './sso.metrics-sender.js';
20
+ import { readJSONL, writeJSONLAtomic } from './sso.jsonl-writer.js';
21
+ import { aggregateDeltas } from './sso.metrics-aggregator.js';
22
+ import { SessionStore } from '../../../../../agents/core/metrics/session/SessionStore.js';
23
+ import { getSessionMetricsPath } from '../../../../../agents/core/metrics-config.js';
24
+ export class SSOMetricsSyncPlugin {
25
+ id = '@codemie/sso-metrics-sync';
26
+ name = 'SSO Metrics Sync';
24
27
  version = '1.0.0';
25
28
  priority = 100; // Run after logging (priority 50)
26
29
  async createInterceptor(context) {
27
30
  // Only create interceptor if we have necessary context
28
31
  if (!context.config.sessionId) {
29
- logger.debug('[MetricsSyncPlugin] Skipping: Session ID not available');
32
+ logger.debug('[SSOMetricsSyncPlugin] Skipping: Session ID not available');
30
33
  throw new Error('Session ID not available (metrics sync disabled)');
31
34
  }
32
35
  if (!context.credentials) {
33
- logger.debug('[MetricsSyncPlugin] Skipping: SSO credentials not available');
36
+ logger.debug('[SSOMetricsSyncPlugin] Skipping: SSO credentials not available');
34
37
  throw new Error('SSO credentials not available (metrics sync disabled)');
35
38
  }
36
39
  // Check if metrics sync is enabled (from config or env var)
37
40
  const syncEnabled = this.isSyncEnabled(context);
38
41
  if (!syncEnabled) {
39
- logger.debug('[MetricsSyncPlugin] Skipping: Metrics sync disabled by configuration');
42
+ logger.debug('[SSOMetricsSyncPlugin] Skipping: Metrics sync disabled by configuration');
40
43
  throw new Error('Metrics sync disabled by configuration');
41
44
  }
42
- logger.debug('[MetricsSyncPlugin] Initializing metrics sync');
45
+ logger.debug('[SSOMetricsSyncPlugin] Initializing metrics sync');
43
46
  // Check if dry-run mode is enabled
44
47
  const dryRun = this.isDryRunEnabled(context);
45
- return new MetricsSyncInterceptor(context.config.sessionId, context.config.targetApiUrl, context.credentials.cookies, context.config.clientType, context.config.version, dryRun);
48
+ return new SSOMetricsSyncInterceptor(context.config.sessionId, context.config.targetApiUrl, context.credentials.cookies, context.config.clientType, context.config.version, dryRun);
46
49
  }
47
50
  /**
48
51
  * Check if metrics sync is enabled
@@ -79,12 +82,12 @@ export class MetricsSyncPlugin {
79
82
  return false;
80
83
  }
81
84
  }
82
- class MetricsSyncInterceptor {
85
+ class SSOMetricsSyncInterceptor {
83
86
  sessionId;
84
- name = 'metrics-sync';
87
+ name = 'sso-metrics-sync';
85
88
  syncTimer;
86
89
  sessionStore = new SessionStore();
87
- apiClient;
90
+ metricsSender;
88
91
  syncInterval;
89
92
  isSyncing = false;
90
93
  version;
@@ -96,19 +99,20 @@ class MetricsSyncInterceptor {
96
99
  // Set dry-run mode (passed from plugin)
97
100
  this.dryRun = dryRun;
98
101
  if (this.dryRun) {
99
- logger.info('[metrics-sync] Dry-run mode enabled - metrics will be logged but not sent');
102
+ logger.info('[sso-metrics-sync] Dry-run mode enabled - metrics will be logged but not sent');
100
103
  }
101
104
  // Build cookie header
102
105
  const cookieHeader = Object.entries(cookies)
103
106
  .map(([key, value]) => `${key}=${value}`)
104
107
  .join('; ');
105
- this.apiClient = new MetricsApiClient({
108
+ this.metricsSender = new MetricsSender({
106
109
  baseUrl,
107
110
  cookies: cookieHeader,
108
111
  timeout: 30000,
109
112
  retryAttempts: 3,
110
113
  version: this.version,
111
- clientType: clientType || 'codemie-cli'
114
+ clientType: clientType || 'codemie-cli',
115
+ dryRun: this.dryRun
112
116
  });
113
117
  // Get sync interval from env or default to 5 minutes
114
118
  this.syncInterval = Number.parseInt(process.env.CODEMIE_METRICS_SYNC_INTERVAL || '300000', 10);
@@ -117,7 +121,8 @@ class MetricsSyncInterceptor {
117
121
  * Called when proxy starts - initialize background timer
118
122
  */
119
123
  async onProxyStart() {
120
- logger.info(`[${this.name}] Starting metrics sync (interval: ${this.syncInterval}ms)`);
124
+ const intervalMinutes = Math.round(this.syncInterval / 60000);
125
+ logger.info(`[${this.name}] Metrics collection enabled - syncing every ${intervalMinutes} minute${intervalMinutes !== 1 ? 's' : ''}`);
121
126
  // Start background timer
122
127
  this.syncTimer = setInterval(() => {
123
128
  this.syncMetrics().catch(error => {
@@ -130,7 +135,7 @@ class MetricsSyncInterceptor {
130
135
  * Called when proxy stops - cleanup and final sync
131
136
  */
132
137
  async onProxyStop() {
133
- logger.info(`[${this.name}] Stopping metrics sync`);
138
+ logger.debug(`[${this.name}] Stopping metrics sync`);
134
139
  // Stop timer
135
140
  if (this.syncTimer) {
136
141
  clearInterval(this.syncTimer);
@@ -139,7 +144,7 @@ class MetricsSyncInterceptor {
139
144
  // Final sync (ensure all pending metrics are sent)
140
145
  try {
141
146
  await this.syncMetrics();
142
- logger.info(`[${this.name}] Final sync completed`);
147
+ logger.info(`[${this.name}] Session metrics saved`);
143
148
  }
144
149
  catch (error) {
145
150
  logger.error(`[${this.name}] Final sync failed:`, error);
@@ -165,7 +170,7 @@ class MetricsSyncInterceptor {
165
170
  logger.debug(`[${this.name}] No pending deltas to sync`);
166
171
  return;
167
172
  }
168
- logger.info(`[${this.name}] Syncing ${pendingDeltas.length} pending deltas`);
173
+ logger.info(`[${this.name}] Syncing usage data (${pendingDeltas.length} interaction${pendingDeltas.length !== 1 ? 's' : ''})`);
169
174
  // Debug: Log collected deltas
170
175
  logger.debug(`[${this.name}] Collected pending deltas:`, {
171
176
  count: pendingDeltas.length,
@@ -218,7 +223,7 @@ class MetricsSyncInterceptor {
218
223
  // 4. Get agent metrics config for post-processing (lazy-load to avoid circular dependency)
219
224
  let agentConfig;
220
225
  try {
221
- const { AgentRegistry } = await import('../../agents/registry.js');
226
+ const { AgentRegistry } = await import('../../../../../agents/registry.js');
222
227
  const agent = AgentRegistry.getAgent(session.agentName);
223
228
  agentConfig = agent?.getMetricsConfig();
224
229
  }
@@ -264,38 +269,15 @@ class MetricsSyncInterceptor {
264
269
  }
265
270
  });
266
271
  }
267
- // 5. Send each branch metric to API or log in dry-run mode
268
- if (this.dryRun) {
269
- // Dry-run mode: Log what would be sent without actually sending
270
- for (const metric of metrics) {
271
- logger.info(`[${this.name}] [DRY-RUN] Would send metric for branch "${metric.attributes.branch}" to API:`, {
272
- endpoint: `${this.apiClient['config'].baseUrl}/v1/metrics`,
273
- method: 'POST',
274
- headers: {
275
- 'Content-Type': 'application/json',
276
- 'User-Agent': `CodeMie-CLI/${this.version}`,
277
- 'X-CodeMie-Client': this.apiClient['config'].clientType,
278
- 'Cookie': '[REDACTED]'
279
- },
280
- payload: {
281
- name: metric.name,
282
- attributes: metric.attributes
283
- }
284
- });
285
- }
286
- logger.info(`[${this.name}] [DRY-RUN] Skipping actual API calls - ${pendingDeltas.length} deltas across ${metrics.length} branches would be synced`);
287
- }
288
- else {
289
- // Normal mode: Send each branch metric to API
290
- for (const metric of metrics) {
291
- const response = await this.apiClient.sendMetric(metric);
292
- if (!response.success) {
293
- logger.error(`[${this.name}] Sync failed for branch "${metric.attributes.branch}": ${response.message}`);
294
- // Continue with other branches even if one fails
295
- continue;
296
- }
297
- logger.info(`[${this.name}] Successfully synced metric for branch "${metric.attributes.branch}"`);
272
+ // 5. Send each branch metric to API (dry-run handled by MetricsSender)
273
+ for (const metric of metrics) {
274
+ const response = await this.metricsSender.sendSessionMetric(metric);
275
+ if (!response.success) {
276
+ logger.error(`[${this.name}] Sync failed for branch "${metric.attributes.branch}": ${response.message}`);
277
+ // Continue with other branches even if one fails
278
+ continue;
298
279
  }
280
+ logger.info(`[${this.name}] Successfully synced metric for branch "${metric.attributes.branch}"`);
299
281
  }
300
282
  // 6. Mark deltas as synced in JSONL (atomic rewrite)
301
283
  const syncedAt = Date.now();
@@ -328,4 +310,4 @@ class MetricsSyncInterceptor {
328
310
  }
329
311
  }
330
312
  }
331
- //# sourceMappingURL=metrics-sync.plugin.js.map
313
+ //# sourceMappingURL=sso.metrics-sync.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.metrics-sync.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.ts"],"names":[],"mappings":"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"}