@codemieai/code 0.0.15 → 0.0.17

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 (608) hide show
  1. package/README.md +86 -14
  2. package/bin/agent-executor.js +7 -28
  3. package/bin/codemie-claude.js +18 -0
  4. package/bin/codemie-codex.js +18 -0
  5. package/bin/codemie-deepagents.js +18 -0
  6. package/bin/codemie-gemini.js +18 -0
  7. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  8. package/dist/agents/codemie-code/agent.js +5 -34
  9. package/dist/agents/codemie-code/agent.js.map +1 -1
  10. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  11. package/dist/agents/codemie-code/config.js +12 -4
  12. package/dist/agents/codemie-code/config.js.map +1 -1
  13. package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
  14. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  15. package/dist/agents/core/AgentCLI.js +30 -63
  16. package/dist/agents/core/AgentCLI.js.map +1 -1
  17. package/dist/agents/core/BaseAgentAdapter.d.ts +10 -6
  18. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  19. package/dist/agents/core/BaseAgentAdapter.js +108 -36
  20. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  21. package/dist/agents/core/BaseMetricsAdapter.d.ts +64 -0
  22. package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -0
  23. package/dist/agents/core/BaseMetricsAdapter.js +74 -0
  24. package/dist/agents/core/BaseMetricsAdapter.js.map +1 -0
  25. package/dist/agents/core/types.d.ts +1 -0
  26. package/dist/agents/core/types.d.ts.map +1 -1
  27. package/dist/agents/plugins/claude.metrics.d.ts +112 -0
  28. package/dist/agents/plugins/claude.metrics.d.ts.map +1 -0
  29. package/dist/agents/plugins/claude.metrics.js +700 -0
  30. package/dist/agents/plugins/claude.metrics.js.map +1 -0
  31. package/dist/agents/plugins/claude.plugin.d.ts +9 -0
  32. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  33. package/dist/agents/plugins/claude.plugin.js +52 -10
  34. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  35. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  36. package/dist/agents/plugins/codemie-code.plugin.js +46 -14
  37. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  38. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  39. package/dist/agents/plugins/codex.plugin.js +2 -4
  40. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  41. package/dist/agents/plugins/deepagents.plugin.js +1 -1
  42. package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
  43. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  44. package/dist/agents/plugins/gemini.plugin.js +1 -8
  45. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  46. package/dist/agents/plugins/history-parser.d.ts +52 -0
  47. package/dist/agents/plugins/history-parser.d.ts.map +1 -0
  48. package/dist/agents/plugins/history-parser.js +155 -0
  49. package/dist/agents/plugins/history-parser.js.map +1 -0
  50. package/dist/cli/commands/analytics/aggregator.d.ts +58 -0
  51. package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -0
  52. package/dist/cli/commands/analytics/aggregator.js +702 -0
  53. package/dist/cli/commands/analytics/aggregator.js.map +1 -0
  54. package/dist/cli/commands/analytics/data-loader.d.ts +84 -0
  55. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -0
  56. package/dist/cli/commands/analytics/data-loader.js +211 -0
  57. package/dist/cli/commands/analytics/data-loader.js.map +1 -0
  58. package/dist/cli/commands/analytics/exporter.d.ts +20 -0
  59. package/dist/cli/commands/analytics/exporter.d.ts.map +1 -0
  60. package/dist/cli/commands/analytics/exporter.js +103 -0
  61. package/dist/cli/commands/analytics/exporter.js.map +1 -0
  62. package/dist/cli/commands/analytics/formatter.d.ts +49 -0
  63. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -0
  64. package/dist/cli/commands/analytics/formatter.js +309 -0
  65. package/dist/cli/commands/analytics/formatter.js.map +1 -0
  66. package/dist/cli/commands/analytics/index.d.ts +6 -0
  67. package/dist/cli/commands/analytics/index.d.ts.map +1 -0
  68. package/dist/cli/commands/analytics/index.js +157 -0
  69. package/dist/cli/commands/analytics/index.js.map +1 -0
  70. package/dist/cli/commands/analytics/model-normalizer.d.ts +21 -0
  71. package/dist/cli/commands/analytics/model-normalizer.d.ts.map +1 -0
  72. package/dist/cli/commands/analytics/model-normalizer.js +44 -0
  73. package/dist/cli/commands/analytics/model-normalizer.js.map +1 -0
  74. package/dist/cli/commands/analytics/types.d.ts +188 -0
  75. package/dist/cli/commands/analytics/types.d.ts.map +1 -0
  76. package/dist/cli/commands/analytics/types.js +6 -0
  77. package/dist/cli/commands/analytics/types.js.map +1 -0
  78. package/dist/cli/commands/auth.d.ts.map +1 -1
  79. package/dist/cli/commands/auth.js +10 -5
  80. package/dist/cli/commands/auth.js.map +1 -1
  81. package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts.map +1 -1
  82. package/dist/cli/commands/doctor/checks/AIConfigCheck.js +12 -5
  83. package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -1
  84. package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts +9 -0
  85. package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts.map +1 -0
  86. package/dist/cli/commands/doctor/checks/AwsCliCheck.js +28 -0
  87. package/dist/cli/commands/doctor/checks/AwsCliCheck.js.map +1 -0
  88. package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
  89. package/dist/cli/commands/doctor/checks/PythonCheck.js +10 -0
  90. package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
  91. package/dist/cli/commands/doctor/checks/WorkflowsCheck.d.ts.map +1 -1
  92. package/dist/cli/commands/doctor/checks/WorkflowsCheck.js +2 -1
  93. package/dist/cli/commands/doctor/checks/WorkflowsCheck.js.map +1 -1
  94. package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
  95. package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
  96. package/dist/cli/commands/doctor/checks/index.js +1 -0
  97. package/dist/cli/commands/doctor/checks/index.js.map +1 -1
  98. package/dist/cli/commands/doctor/formatter.d.ts +1 -1
  99. package/dist/cli/commands/doctor/formatter.d.ts.map +1 -1
  100. package/dist/cli/commands/doctor/formatter.js +1 -6
  101. package/dist/cli/commands/doctor/formatter.js.map +1 -1
  102. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  103. package/dist/cli/commands/doctor/index.js +107 -10
  104. package/dist/cli/commands/doctor/index.js.map +1 -1
  105. package/dist/cli/commands/doctor/type-adapters.d.ts +18 -0
  106. package/dist/cli/commands/doctor/type-adapters.d.ts.map +1 -0
  107. package/dist/cli/commands/doctor/type-adapters.js +75 -0
  108. package/dist/cli/commands/doctor/type-adapters.js.map +1 -0
  109. package/dist/cli/commands/install.d.ts.map +1 -1
  110. package/dist/cli/commands/install.js +1 -6
  111. package/dist/cli/commands/install.js.map +1 -1
  112. package/dist/cli/commands/list.d.ts.map +1 -1
  113. package/dist/cli/commands/list.js +0 -5
  114. package/dist/cli/commands/list.js.map +1 -1
  115. package/dist/cli/commands/profile.d.ts.map +1 -1
  116. package/dist/cli/commands/profile.js +130 -92
  117. package/dist/cli/commands/profile.js.map +1 -1
  118. package/dist/cli/commands/setup.d.ts.map +1 -1
  119. package/dist/cli/commands/setup.js +147 -668
  120. package/dist/cli/commands/setup.js.map +1 -1
  121. package/dist/cli/index.d.ts +1 -1
  122. package/dist/cli/index.d.ts.map +1 -1
  123. package/dist/cli/index.js +5 -2
  124. package/dist/cli/index.js.map +1 -1
  125. package/dist/env/types.d.ts +14 -2
  126. package/dist/env/types.d.ts.map +1 -1
  127. package/dist/env/types.js.map +1 -1
  128. package/dist/metrics/MetricsOrchestrator.d.ts +67 -0
  129. package/dist/metrics/MetricsOrchestrator.d.ts.map +1 -0
  130. package/dist/metrics/MetricsOrchestrator.js +287 -0
  131. package/dist/metrics/MetricsOrchestrator.js.map +1 -0
  132. package/dist/metrics/config.d.ts +38 -0
  133. package/dist/metrics/config.d.ts.map +1 -0
  134. package/dist/metrics/config.js +80 -0
  135. package/dist/metrics/config.js.map +1 -0
  136. package/dist/metrics/core/DeltaWriter.d.ts +49 -0
  137. package/dist/metrics/core/DeltaWriter.d.ts.map +1 -0
  138. package/dist/metrics/core/DeltaWriter.js +146 -0
  139. package/dist/metrics/core/DeltaWriter.js.map +1 -0
  140. package/dist/metrics/core/FileSnapshotter.d.ts +22 -0
  141. package/dist/metrics/core/FileSnapshotter.d.ts.map +1 -0
  142. package/dist/metrics/core/FileSnapshotter.js +74 -0
  143. package/dist/metrics/core/FileSnapshotter.js.map +1 -0
  144. package/dist/metrics/core/SessionCorrelator.d.ts +34 -0
  145. package/dist/metrics/core/SessionCorrelator.d.ts.map +1 -0
  146. package/dist/metrics/core/SessionCorrelator.js +115 -0
  147. package/dist/metrics/core/SessionCorrelator.js.map +1 -0
  148. package/dist/metrics/core/SyncStateManager.d.ts +69 -0
  149. package/dist/metrics/core/SyncStateManager.d.ts.map +1 -0
  150. package/dist/metrics/core/SyncStateManager.js +284 -0
  151. package/dist/metrics/core/SyncStateManager.js.map +1 -0
  152. package/dist/metrics/index.d.ts +9 -0
  153. package/dist/metrics/index.d.ts.map +1 -0
  154. package/dist/metrics/index.js +11 -0
  155. package/dist/metrics/index.js.map +1 -0
  156. package/dist/metrics/session/SessionStore.d.ts +43 -0
  157. package/dist/metrics/session/SessionStore.d.ts.map +1 -0
  158. package/dist/metrics/session/SessionStore.js +142 -0
  159. package/dist/metrics/session/SessionStore.js.map +1 -0
  160. package/dist/metrics/sync/MetricsApiClient.d.ts +32 -0
  161. package/dist/metrics/sync/MetricsApiClient.d.ts.map +1 -0
  162. package/dist/metrics/sync/MetricsApiClient.js +155 -0
  163. package/dist/metrics/sync/MetricsApiClient.js.map +1 -0
  164. package/dist/metrics/sync/aggregator.d.ts +13 -0
  165. package/dist/metrics/sync/aggregator.d.ts.map +1 -0
  166. package/dist/metrics/sync/aggregator.js +196 -0
  167. package/dist/metrics/sync/aggregator.js.map +1 -0
  168. package/dist/metrics/sync/index.d.ts +10 -0
  169. package/dist/metrics/sync/index.d.ts.map +1 -0
  170. package/dist/metrics/sync/index.js +10 -0
  171. package/dist/metrics/sync/index.js.map +1 -0
  172. package/dist/metrics/sync/jsonl-writer.d.ts +28 -0
  173. package/dist/metrics/sync/jsonl-writer.d.ts.map +1 -0
  174. package/dist/metrics/sync/jsonl-writer.js +72 -0
  175. package/dist/metrics/sync/jsonl-writer.js.map +1 -0
  176. package/dist/metrics/sync/types.d.ts +72 -0
  177. package/dist/metrics/sync/types.d.ts.map +1 -0
  178. package/dist/metrics/sync/types.js +7 -0
  179. package/dist/metrics/sync/types.js.map +1 -0
  180. package/dist/metrics/types.d.ts +308 -0
  181. package/dist/metrics/types.d.ts.map +1 -0
  182. package/dist/metrics/types.js +8 -0
  183. package/dist/metrics/types.js.map +1 -0
  184. package/dist/providers/core/base/BaseHealthCheck.d.ts +57 -0
  185. package/dist/providers/core/base/BaseHealthCheck.d.ts.map +1 -0
  186. package/dist/providers/core/base/BaseHealthCheck.js +121 -0
  187. package/dist/providers/core/base/BaseHealthCheck.js.map +1 -0
  188. package/dist/providers/core/base/BaseModelProxy.d.ts +45 -0
  189. package/dist/providers/core/base/BaseModelProxy.d.ts.map +1 -0
  190. package/dist/providers/core/base/BaseModelProxy.js +43 -0
  191. package/dist/providers/core/base/BaseModelProxy.js.map +1 -0
  192. package/dist/providers/core/base/http-client.d.ts +57 -0
  193. package/dist/providers/core/base/http-client.d.ts.map +1 -0
  194. package/dist/providers/core/base/http-client.js +240 -0
  195. package/dist/providers/core/base/http-client.js.map +1 -0
  196. package/dist/providers/core/decorators.d.ts +13 -0
  197. package/dist/providers/core/decorators.d.ts.map +1 -0
  198. package/dist/providers/core/decorators.js +15 -0
  199. package/dist/providers/core/decorators.js.map +1 -0
  200. package/dist/providers/core/index.d.ts +13 -0
  201. package/dist/providers/core/index.d.ts.map +1 -0
  202. package/dist/providers/core/index.js +14 -0
  203. package/dist/providers/core/index.js.map +1 -0
  204. package/dist/providers/core/registry.d.ts +66 -0
  205. package/dist/providers/core/registry.d.ts.map +1 -0
  206. package/dist/providers/core/registry.js +105 -0
  207. package/dist/providers/core/registry.js.map +1 -0
  208. package/dist/providers/core/types.d.ts +285 -0
  209. package/dist/providers/core/types.d.ts.map +1 -0
  210. package/dist/providers/core/types.js +7 -0
  211. package/dist/providers/core/types.js.map +1 -0
  212. package/dist/providers/index.d.ts +22 -0
  213. package/dist/providers/index.d.ts.map +1 -0
  214. package/dist/providers/index.js +24 -0
  215. package/dist/providers/index.js.map +1 -0
  216. package/dist/providers/integration/setup-ui.d.ts +76 -0
  217. package/dist/providers/integration/setup-ui.d.ts.map +1 -0
  218. package/dist/providers/integration/setup-ui.js +186 -0
  219. package/dist/providers/integration/setup-ui.js.map +1 -0
  220. package/dist/providers/plugins/bedrock/bedrock.health.d.ts +53 -0
  221. package/dist/providers/plugins/bedrock/bedrock.health.d.ts.map +1 -0
  222. package/dist/providers/plugins/bedrock/bedrock.health.js +115 -0
  223. package/dist/providers/plugins/bedrock/bedrock.health.js.map +1 -0
  224. package/dist/providers/plugins/bedrock/bedrock.models.d.ts +26 -0
  225. package/dist/providers/plugins/bedrock/bedrock.models.d.ts.map +1 -0
  226. package/dist/providers/plugins/bedrock/bedrock.models.js +89 -0
  227. package/dist/providers/plugins/bedrock/bedrock.models.js.map +1 -0
  228. package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts +12 -0
  229. package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts.map +1 -0
  230. package/dist/providers/plugins/bedrock/bedrock.setup-steps.js +308 -0
  231. package/dist/providers/plugins/bedrock/bedrock.setup-steps.js.map +1 -0
  232. package/dist/providers/plugins/bedrock/bedrock.template.d.ts +11 -0
  233. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -0
  234. package/dist/providers/plugins/bedrock/bedrock.template.js +85 -0
  235. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -0
  236. package/dist/providers/plugins/bedrock/index.d.ts +11 -0
  237. package/dist/providers/plugins/bedrock/index.d.ts.map +1 -0
  238. package/dist/providers/plugins/bedrock/index.js +11 -0
  239. package/dist/providers/plugins/bedrock/index.js.map +1 -0
  240. package/dist/providers/plugins/litellm/index.d.ts +8 -0
  241. package/dist/providers/plugins/litellm/index.d.ts.map +1 -0
  242. package/dist/providers/plugins/litellm/index.js +12 -0
  243. package/dist/providers/plugins/litellm/index.js.map +1 -0
  244. package/dist/providers/plugins/litellm/litellm.models.d.ts +27 -0
  245. package/dist/providers/plugins/litellm/litellm.models.d.ts.map +1 -0
  246. package/dist/providers/plugins/litellm/litellm.models.js +48 -0
  247. package/dist/providers/plugins/litellm/litellm.models.js.map +1 -0
  248. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts +8 -0
  249. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -0
  250. package/dist/providers/plugins/litellm/litellm.setup-steps.js +52 -0
  251. package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -0
  252. package/dist/providers/plugins/litellm/litellm.template.d.ts +11 -0
  253. package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -0
  254. package/dist/providers/plugins/litellm/litellm.template.js +59 -0
  255. package/dist/providers/plugins/litellm/litellm.template.js.map +1 -0
  256. package/dist/providers/plugins/ollama/index.d.ts +11 -0
  257. package/dist/providers/plugins/ollama/index.d.ts.map +1 -0
  258. package/dist/providers/plugins/ollama/index.js +11 -0
  259. package/dist/providers/plugins/ollama/index.js.map +1 -0
  260. package/dist/providers/plugins/ollama/ollama.health.d.ts +48 -0
  261. package/dist/providers/plugins/ollama/ollama.health.d.ts.map +1 -0
  262. package/dist/providers/plugins/ollama/ollama.health.js +87 -0
  263. package/dist/providers/plugins/ollama/ollama.health.js.map +1 -0
  264. package/dist/providers/plugins/ollama/ollama.models.d.ts +47 -0
  265. package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -0
  266. package/dist/providers/plugins/ollama/ollama.models.js +252 -0
  267. package/dist/providers/plugins/ollama/ollama.models.js.map +1 -0
  268. package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts +16 -0
  269. package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -0
  270. package/dist/providers/plugins/ollama/ollama.setup-steps.js +164 -0
  271. package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -0
  272. package/dist/providers/plugins/ollama/ollama.template.d.ts +11 -0
  273. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -0
  274. package/dist/providers/plugins/ollama/ollama.template.js +89 -0
  275. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -0
  276. package/dist/providers/plugins/sso/index.d.ts +12 -0
  277. package/dist/providers/plugins/sso/index.d.ts.map +1 -0
  278. package/dist/providers/plugins/sso/index.js +12 -0
  279. package/dist/providers/plugins/sso/index.js.map +1 -0
  280. package/dist/providers/plugins/sso/sso.auth.d.ts +50 -0
  281. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -0
  282. package/dist/{utils/sso-auth.js → providers/plugins/sso/sso.auth.js} +37 -2
  283. package/dist/providers/plugins/sso/sso.auth.js.map +1 -0
  284. package/dist/providers/plugins/sso/sso.health.d.ts +44 -0
  285. package/dist/providers/plugins/sso/sso.health.d.ts.map +1 -0
  286. package/dist/providers/plugins/sso/sso.health.js +178 -0
  287. package/dist/providers/plugins/sso/sso.health.js.map +1 -0
  288. package/dist/providers/plugins/sso/sso.http-client.d.ts +24 -0
  289. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -0
  290. package/dist/providers/plugins/sso/sso.http-client.js +193 -0
  291. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -0
  292. package/dist/providers/plugins/sso/sso.models.d.ts +48 -0
  293. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -0
  294. package/dist/providers/plugins/sso/sso.models.js +139 -0
  295. package/dist/providers/plugins/sso/sso.models.js.map +1 -0
  296. package/dist/providers/plugins/sso/sso.setup-steps.d.ts +16 -0
  297. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -0
  298. package/dist/providers/plugins/sso/sso.setup-steps.js +145 -0
  299. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -0
  300. package/dist/providers/plugins/sso/sso.template.d.ts +11 -0
  301. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -0
  302. package/dist/providers/plugins/sso/sso.template.js +35 -0
  303. package/dist/providers/plugins/sso/sso.template.js.map +1 -0
  304. package/dist/proxy/errors.d.ts.map +1 -0
  305. package/dist/proxy/errors.js.map +1 -0
  306. package/dist/proxy/http-client.d.ts.map +1 -0
  307. package/dist/{utils/proxy → proxy}/http-client.js +50 -15
  308. package/dist/proxy/http-client.js.map +1 -0
  309. package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts +19 -0
  310. package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts.map +1 -0
  311. package/dist/proxy/plugins/endpoint-blocker.plugin.js +61 -0
  312. package/dist/proxy/plugins/endpoint-blocker.plugin.js.map +1 -0
  313. package/dist/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
  314. package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.js +10 -3
  315. package/dist/proxy/plugins/header-injection.plugin.js.map +1 -0
  316. package/dist/{utils/proxy → proxy}/plugins/index.d.ts +4 -2
  317. package/dist/proxy/plugins/index.d.ts.map +1 -0
  318. package/dist/{utils/proxy → proxy}/plugins/index.js +7 -5
  319. package/dist/proxy/plugins/index.js.map +1 -0
  320. package/dist/proxy/plugins/logging.plugin.d.ts +22 -0
  321. package/dist/proxy/plugins/logging.plugin.d.ts.map +1 -0
  322. package/dist/proxy/plugins/logging.plugin.js +156 -0
  323. package/dist/proxy/plugins/logging.plugin.js.map +1 -0
  324. package/dist/proxy/plugins/metrics-sync.plugin.d.ts +33 -0
  325. package/dist/proxy/plugins/metrics-sync.plugin.d.ts.map +1 -0
  326. package/dist/proxy/plugins/metrics-sync.plugin.js +310 -0
  327. package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -0
  328. package/dist/proxy/plugins/registry.d.ts.map +1 -0
  329. package/dist/{utils/proxy → proxy}/plugins/registry.js +9 -2
  330. package/dist/proxy/plugins/registry.js.map +1 -0
  331. package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
  332. package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.js +1 -1
  333. package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -0
  334. package/dist/{utils/proxy → proxy}/plugins/types.d.ts +8 -4
  335. package/dist/proxy/plugins/types.d.ts.map +1 -0
  336. package/dist/proxy/plugins/types.js.map +1 -0
  337. package/dist/{utils/proxy → proxy}/types.d.ts +7 -0
  338. package/dist/proxy/types.d.ts.map +1 -0
  339. package/dist/proxy/types.js.map +1 -0
  340. package/dist/utils/ascii-logo.d.ts +21 -0
  341. package/dist/utils/ascii-logo.d.ts.map +1 -0
  342. package/dist/utils/ascii-logo.js +75 -0
  343. package/dist/utils/ascii-logo.js.map +1 -0
  344. package/dist/utils/codemie-proxy.d.ts +2 -7
  345. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  346. package/dist/utils/codemie-proxy.js +56 -61
  347. package/dist/utils/codemie-proxy.js.map +1 -1
  348. package/dist/utils/config-loader.d.ts +1 -6
  349. package/dist/utils/config-loader.d.ts.map +1 -1
  350. package/dist/utils/config-loader.js +49 -93
  351. package/dist/utils/config-loader.js.map +1 -1
  352. package/dist/utils/credential-store.d.ts +1 -1
  353. package/dist/utils/credential-store.d.ts.map +1 -1
  354. package/dist/utils/exec.d.ts +11 -0
  355. package/dist/utils/exec.d.ts.map +1 -1
  356. package/dist/utils/exec.js +17 -1
  357. package/dist/utils/exec.js.map +1 -1
  358. package/dist/utils/goodbye-messages.d.ts +13 -0
  359. package/dist/utils/goodbye-messages.d.ts.map +1 -0
  360. package/dist/utils/goodbye-messages.js +245 -0
  361. package/dist/utils/goodbye-messages.js.map +1 -0
  362. package/dist/utils/json-parser.d.ts +52 -0
  363. package/dist/utils/json-parser.d.ts.map +1 -0
  364. package/dist/utils/json-parser.js +126 -0
  365. package/dist/utils/json-parser.js.map +1 -0
  366. package/dist/utils/logger.d.ts +37 -1
  367. package/dist/utils/logger.d.ts.map +1 -1
  368. package/dist/utils/logger.js +92 -22
  369. package/dist/utils/logger.js.map +1 -1
  370. package/dist/utils/sanitize.d.ts.map +1 -1
  371. package/dist/utils/sanitize.js +0 -1
  372. package/dist/utils/sanitize.js.map +1 -1
  373. package/dist/utils/which.d.ts +20 -0
  374. package/dist/utils/which.d.ts.map +1 -0
  375. package/dist/utils/which.js +47 -0
  376. package/dist/utils/which.js.map +1 -0
  377. package/package.json +10 -5
  378. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +0 -37
  379. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +0 -1
  380. package/dist/analytics/aggregation/adapters/claude.adapter.js +0 -531
  381. package/dist/analytics/aggregation/adapters/claude.adapter.js.map +0 -1
  382. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +0 -25
  383. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +0 -1
  384. package/dist/analytics/aggregation/adapters/codex.adapter.js +0 -396
  385. package/dist/analytics/aggregation/adapters/codex.adapter.js.map +0 -1
  386. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +0 -36
  387. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +0 -1
  388. package/dist/analytics/aggregation/adapters/gemini.adapter.js +0 -365
  389. package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +0 -1
  390. package/dist/analytics/aggregation/adapters/index.d.ts +0 -7
  391. package/dist/analytics/aggregation/adapters/index.d.ts.map +0 -1
  392. package/dist/analytics/aggregation/adapters/index.js +0 -7
  393. package/dist/analytics/aggregation/adapters/index.js.map +0 -1
  394. package/dist/analytics/aggregation/aggregator.d.ts +0 -49
  395. package/dist/analytics/aggregation/aggregator.d.ts.map +0 -1
  396. package/dist/analytics/aggregation/aggregator.js +0 -239
  397. package/dist/analytics/aggregation/aggregator.js.map +0 -1
  398. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +0 -99
  399. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +0 -1
  400. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +0 -110
  401. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +0 -1
  402. package/dist/analytics/aggregation/core/adapter.interface.d.ts +0 -76
  403. package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +0 -1
  404. package/dist/analytics/aggregation/core/adapter.interface.js +0 -9
  405. package/dist/analytics/aggregation/core/adapter.interface.js.map +0 -1
  406. package/dist/analytics/aggregation/core/aggregation-utils.d.ts +0 -86
  407. package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +0 -1
  408. package/dist/analytics/aggregation/core/aggregation-utils.js +0 -126
  409. package/dist/analytics/aggregation/core/aggregation-utils.js.map +0 -1
  410. package/dist/analytics/aggregation/core/discovery.d.ts +0 -40
  411. package/dist/analytics/aggregation/core/discovery.d.ts.map +0 -1
  412. package/dist/analytics/aggregation/core/discovery.js +0 -132
  413. package/dist/analytics/aggregation/core/discovery.js.map +0 -1
  414. package/dist/analytics/aggregation/core/file-utils.d.ts +0 -24
  415. package/dist/analytics/aggregation/core/file-utils.d.ts.map +0 -1
  416. package/dist/analytics/aggregation/core/file-utils.js +0 -143
  417. package/dist/analytics/aggregation/core/file-utils.js.map +0 -1
  418. package/dist/analytics/aggregation/core/index.d.ts +0 -14
  419. package/dist/analytics/aggregation/core/index.d.ts.map +0 -1
  420. package/dist/analytics/aggregation/core/index.js +0 -14
  421. package/dist/analytics/aggregation/core/index.js.map +0 -1
  422. package/dist/analytics/aggregation/core/project-mapping.d.ts +0 -50
  423. package/dist/analytics/aggregation/core/project-mapping.d.ts.map +0 -1
  424. package/dist/analytics/aggregation/core/project-mapping.js +0 -102
  425. package/dist/analytics/aggregation/core/project-mapping.js.map +0 -1
  426. package/dist/analytics/aggregation/core/streaming.d.ts +0 -26
  427. package/dist/analytics/aggregation/core/streaming.d.ts.map +0 -1
  428. package/dist/analytics/aggregation/core/streaming.js +0 -58
  429. package/dist/analytics/aggregation/core/streaming.js.map +0 -1
  430. package/dist/analytics/aggregation/core/user-prompt-source.d.ts +0 -81
  431. package/dist/analytics/aggregation/core/user-prompt-source.d.ts.map +0 -1
  432. package/dist/analytics/aggregation/core/user-prompt-source.js +0 -69
  433. package/dist/analytics/aggregation/core/user-prompt-source.js.map +0 -1
  434. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts +0 -49
  435. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts.map +0 -1
  436. package/dist/analytics/aggregation/core/user-prompt-sources/json.js +0 -66
  437. package/dist/analytics/aggregation/core/user-prompt-sources/json.js.map +0 -1
  438. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts +0 -43
  439. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts.map +0 -1
  440. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js +0 -56
  441. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js.map +0 -1
  442. package/dist/analytics/aggregation/index.d.ts +0 -8
  443. package/dist/analytics/aggregation/index.d.ts.map +0 -1
  444. package/dist/analytics/aggregation/index.js +0 -8
  445. package/dist/analytics/aggregation/index.js.map +0 -1
  446. package/dist/analytics/aggregation/types.d.ts +0 -278
  447. package/dist/analytics/aggregation/types.d.ts.map +0 -1
  448. package/dist/analytics/aggregation/types.js +0 -8
  449. package/dist/analytics/aggregation/types.js.map +0 -1
  450. package/dist/analytics/collector.d.ts +0 -46
  451. package/dist/analytics/collector.d.ts.map +0 -1
  452. package/dist/analytics/collector.js +0 -83
  453. package/dist/analytics/collector.js.map +0 -1
  454. package/dist/analytics/config.d.ts +0 -15
  455. package/dist/analytics/config.d.ts.map +0 -1
  456. package/dist/analytics/config.js +0 -65
  457. package/dist/analytics/config.js.map +0 -1
  458. package/dist/analytics/index.d.ts +0 -99
  459. package/dist/analytics/index.d.ts.map +0 -1
  460. package/dist/analytics/index.js +0 -288
  461. package/dist/analytics/index.js.map +0 -1
  462. package/dist/analytics/plugins/api-metrics.plugin.d.ts +0 -26
  463. package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +0 -1
  464. package/dist/analytics/plugins/api-metrics.plugin.js +0 -97
  465. package/dist/analytics/plugins/api-metrics.plugin.js.map +0 -1
  466. package/dist/analytics/plugins/index.d.ts +0 -15
  467. package/dist/analytics/plugins/index.d.ts.map +0 -1
  468. package/dist/analytics/plugins/index.js +0 -15
  469. package/dist/analytics/plugins/index.js.map +0 -1
  470. package/dist/analytics/plugins/model-metrics.plugin.d.ts +0 -39
  471. package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +0 -1
  472. package/dist/analytics/plugins/model-metrics.plugin.js +0 -105
  473. package/dist/analytics/plugins/model-metrics.plugin.js.map +0 -1
  474. package/dist/analytics/plugins/provider-metrics.plugin.d.ts +0 -41
  475. package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +0 -1
  476. package/dist/analytics/plugins/provider-metrics.plugin.js +0 -123
  477. package/dist/analytics/plugins/provider-metrics.plugin.js.map +0 -1
  478. package/dist/analytics/plugins/types.d.ts +0 -61
  479. package/dist/analytics/plugins/types.d.ts.map +0 -1
  480. package/dist/analytics/plugins/types.js +0 -54
  481. package/dist/analytics/plugins/types.js.map +0 -1
  482. package/dist/analytics/privacy.d.ts +0 -10
  483. package/dist/analytics/privacy.d.ts.map +0 -1
  484. package/dist/analytics/privacy.js +0 -20
  485. package/dist/analytics/privacy.js.map +0 -1
  486. package/dist/analytics/remote-submission/cursor-manager.d.ts +0 -71
  487. package/dist/analytics/remote-submission/cursor-manager.d.ts.map +0 -1
  488. package/dist/analytics/remote-submission/cursor-manager.js +0 -204
  489. package/dist/analytics/remote-submission/cursor-manager.js.map +0 -1
  490. package/dist/analytics/remote-submission/index.d.ts +0 -12
  491. package/dist/analytics/remote-submission/index.d.ts.map +0 -1
  492. package/dist/analytics/remote-submission/index.js +0 -11
  493. package/dist/analytics/remote-submission/index.js.map +0 -1
  494. package/dist/analytics/remote-submission/lock-manager.d.ts +0 -71
  495. package/dist/analytics/remote-submission/lock-manager.d.ts.map +0 -1
  496. package/dist/analytics/remote-submission/lock-manager.js +0 -238
  497. package/dist/analytics/remote-submission/lock-manager.js.map +0 -1
  498. package/dist/analytics/remote-submission/metric-transformer.d.ts +0 -49
  499. package/dist/analytics/remote-submission/metric-transformer.d.ts.map +0 -1
  500. package/dist/analytics/remote-submission/metric-transformer.js +0 -175
  501. package/dist/analytics/remote-submission/metric-transformer.js.map +0 -1
  502. package/dist/analytics/remote-submission/submitter.d.ts +0 -78
  503. package/dist/analytics/remote-submission/submitter.d.ts.map +0 -1
  504. package/dist/analytics/remote-submission/submitter.js +0 -381
  505. package/dist/analytics/remote-submission/submitter.js.map +0 -1
  506. package/dist/analytics/remote-submission/types.d.ts +0 -169
  507. package/dist/analytics/remote-submission/types.d.ts.map +0 -1
  508. package/dist/analytics/remote-submission/types.js +0 -13
  509. package/dist/analytics/remote-submission/types.js.map +0 -1
  510. package/dist/analytics/session.d.ts +0 -56
  511. package/dist/analytics/session.d.ts.map +0 -1
  512. package/dist/analytics/session.js +0 -95
  513. package/dist/analytics/session.js.map +0 -1
  514. package/dist/analytics/types.d.ts +0 -104
  515. package/dist/analytics/types.d.ts.map +0 -1
  516. package/dist/analytics/types.js +0 -15
  517. package/dist/analytics/types.js.map +0 -1
  518. package/dist/analytics/writer.d.ts +0 -18
  519. package/dist/analytics/writer.d.ts.map +0 -1
  520. package/dist/analytics/writer.js +0 -44
  521. package/dist/analytics/writer.js.map +0 -1
  522. package/dist/cli/commands/analytics.d.ts +0 -3
  523. package/dist/cli/commands/analytics.d.ts.map +0 -1
  524. package/dist/cli/commands/analytics.js +0 -748
  525. package/dist/cli/commands/analytics.js.map +0 -1
  526. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts +0 -11
  527. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +0 -1
  528. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +0 -264
  529. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +0 -1
  530. package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts +0 -12
  531. package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts.map +0 -1
  532. package/dist/cli/commands/doctor/providers/BaseProviderCheck.js +0 -12
  533. package/dist/cli/commands/doctor/providers/BaseProviderCheck.js.map +0 -1
  534. package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts +0 -11
  535. package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts.map +0 -1
  536. package/dist/cli/commands/doctor/providers/StandardProviderCheck.js +0 -97
  537. package/dist/cli/commands/doctor/providers/StandardProviderCheck.js.map +0 -1
  538. package/dist/cli/commands/doctor/providers/index.d.ts +0 -30
  539. package/dist/cli/commands/doctor/providers/index.d.ts.map +0 -1
  540. package/dist/cli/commands/doctor/providers/index.js +0 -66
  541. package/dist/cli/commands/doctor/providers/index.js.map +0 -1
  542. package/dist/types/sso.d.ts +0 -42
  543. package/dist/types/sso.d.ts.map +0 -1
  544. package/dist/types/sso.js +0 -2
  545. package/dist/types/sso.js.map +0 -1
  546. package/dist/utils/analytics-reader.d.ts +0 -117
  547. package/dist/utils/analytics-reader.d.ts.map +0 -1
  548. package/dist/utils/analytics-reader.js +0 -421
  549. package/dist/utils/analytics-reader.js.map +0 -1
  550. package/dist/utils/async-tips.d.ts +0 -64
  551. package/dist/utils/async-tips.d.ts.map +0 -1
  552. package/dist/utils/async-tips.js +0 -203
  553. package/dist/utils/async-tips.js.map +0 -1
  554. package/dist/utils/codemie-integration-validator.d.ts +0 -18
  555. package/dist/utils/codemie-integration-validator.d.ts.map +0 -1
  556. package/dist/utils/codemie-integration-validator.js +0 -119
  557. package/dist/utils/codemie-integration-validator.js.map +0 -1
  558. package/dist/utils/codemie-model-fetcher.d.ts +0 -11
  559. package/dist/utils/codemie-model-fetcher.d.ts.map +0 -1
  560. package/dist/utils/codemie-model-fetcher.js +0 -317
  561. package/dist/utils/codemie-model-fetcher.js.map +0 -1
  562. package/dist/utils/date-formatter.d.ts +0 -88
  563. package/dist/utils/date-formatter.d.ts.map +0 -1
  564. package/dist/utils/date-formatter.js +0 -133
  565. package/dist/utils/date-formatter.js.map +0 -1
  566. package/dist/utils/health-checker.d.ts +0 -20
  567. package/dist/utils/health-checker.d.ts.map +0 -1
  568. package/dist/utils/health-checker.js +0 -172
  569. package/dist/utils/health-checker.js.map +0 -1
  570. package/dist/utils/model-fetcher.d.ts +0 -21
  571. package/dist/utils/model-fetcher.d.ts.map +0 -1
  572. package/dist/utils/model-fetcher.js +0 -148
  573. package/dist/utils/model-fetcher.js.map +0 -1
  574. package/dist/utils/proxy/errors.d.ts.map +0 -1
  575. package/dist/utils/proxy/errors.js.map +0 -1
  576. package/dist/utils/proxy/http-client.d.ts.map +0 -1
  577. package/dist/utils/proxy/http-client.js.map +0 -1
  578. package/dist/utils/proxy/plugins/analytics.plugin.d.ts +0 -19
  579. package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +0 -1
  580. package/dist/utils/proxy/plugins/analytics.plugin.js +0 -84
  581. package/dist/utils/proxy/plugins/analytics.plugin.js.map +0 -1
  582. package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
  583. package/dist/utils/proxy/plugins/header-injection.plugin.js.map +0 -1
  584. package/dist/utils/proxy/plugins/index.d.ts.map +0 -1
  585. package/dist/utils/proxy/plugins/index.js.map +0 -1
  586. package/dist/utils/proxy/plugins/registry.d.ts.map +0 -1
  587. package/dist/utils/proxy/plugins/registry.js.map +0 -1
  588. package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
  589. package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +0 -1
  590. package/dist/utils/proxy/plugins/types.d.ts.map +0 -1
  591. package/dist/utils/proxy/plugins/types.js.map +0 -1
  592. package/dist/utils/proxy/types.d.ts.map +0 -1
  593. package/dist/utils/proxy/types.js.map +0 -1
  594. package/dist/utils/sso-auth.d.ts +0 -15
  595. package/dist/utils/sso-auth.d.ts.map +0 -1
  596. package/dist/utils/sso-auth.js.map +0 -1
  597. package/dist/utils/tips.d.ts +0 -35
  598. package/dist/utils/tips.d.ts.map +0 -1
  599. package/dist/utils/tips.js +0 -93
  600. package/dist/utils/tips.js.map +0 -1
  601. /package/dist/{utils/proxy → proxy}/errors.d.ts +0 -0
  602. /package/dist/{utils/proxy → proxy}/errors.js +0 -0
  603. /package/dist/{utils/proxy → proxy}/http-client.d.ts +0 -0
  604. /package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.d.ts +0 -0
  605. /package/dist/{utils/proxy → proxy}/plugins/registry.d.ts +0 -0
  606. /package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.d.ts +0 -0
  607. /package/dist/{utils/proxy → proxy}/plugins/types.js +0 -0
  608. /package/dist/{utils/proxy → proxy}/types.js +0 -0
@@ -1,71 +0,0 @@
1
- /**
2
- * Lock Manager - File-Based Locking for Concurrency Control
3
- *
4
- * Implements file-based locking to ensure only one RemoteAnalyticsSubmitter
5
- * runs at a time across multiple concurrent proxy instances.
6
- *
7
- * Features:
8
- * - Exclusive lock acquisition with retries
9
- * - Stale lock detection and recovery
10
- * - Process liveness checking
11
- * - Heartbeat to prevent false stale detection
12
- * - Graceful cleanup on exit signals
13
- */
14
- /**
15
- * Lock Manager
16
- */
17
- export declare class LockManager {
18
- private lockPath;
19
- private lockInfo;
20
- private heartbeatTimer;
21
- constructor(analyticsDir?: string);
22
- /**
23
- * Ensure lock directory exists
24
- */
25
- private ensureDir;
26
- /**
27
- * Check if a process is alive
28
- */
29
- private isProcessAlive;
30
- /**
31
- * Read lock file
32
- */
33
- private readLock;
34
- /**
35
- * Write lock file
36
- */
37
- private writeLock;
38
- /**
39
- * Remove lock file
40
- */
41
- private removeLock;
42
- /**
43
- * Check if lock is stale (old or process dead)
44
- */
45
- private isLockStale;
46
- /**
47
- * Start heartbeat to refresh lock timestamp
48
- */
49
- private startHeartbeat;
50
- /**
51
- * Stop heartbeat
52
- */
53
- private stopHeartbeat;
54
- /**
55
- * Acquire lock with retry
56
- *
57
- * @param name Lock name (for logging)
58
- * @param maxRetries Maximum number of retries
59
- * @returns true if lock acquired, false if failed
60
- */
61
- acquire(name: string, maxRetries?: number): Promise<boolean>;
62
- /**
63
- * Release lock
64
- */
65
- release(): Promise<void>;
66
- /**
67
- * Setup exit handlers to release lock on process termination
68
- */
69
- private setupExitHandlers;
70
- }
71
- //# sourceMappingURL=lock-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/lock-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,cAAc,CAA+B;gBAEzC,YAAY,CAAC,EAAE,MAAM;IAKjC;;OAEG;YACW,SAAS;IAOvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;YACW,QAAQ;IActB;;OAEG;YACW,SAAS;IAMvB;;OAEG;YACW,UAAU;IAUxB;;OAEG;YACW,WAAW;IAezB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAyE7D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -1,238 +0,0 @@
1
- /**
2
- * Lock Manager - File-Based Locking for Concurrency Control
3
- *
4
- * Implements file-based locking to ensure only one RemoteAnalyticsSubmitter
5
- * runs at a time across multiple concurrent proxy instances.
6
- *
7
- * Features:
8
- * - Exclusive lock acquisition with retries
9
- * - Stale lock detection and recovery
10
- * - Process liveness checking
11
- * - Heartbeat to prevent false stale detection
12
- * - Graceful cleanup on exit signals
13
- */
14
- import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
15
- import { existsSync } from 'node:fs';
16
- import { join } from 'node:path';
17
- import { homedir, hostname } from 'node:os';
18
- import { logger } from '../../utils/logger.js';
19
- const LOCK_TIMEOUT = 5 * 60 * 1000; // 5 minutes
20
- const RETRY_DELAY = 2000; // 2 seconds
21
- const HEARTBEAT_INTERVAL = 30 * 1000; // 30 seconds
22
- /**
23
- * Lock Manager
24
- */
25
- export class LockManager {
26
- lockPath;
27
- lockInfo = null;
28
- heartbeatTimer = null;
29
- constructor(analyticsDir) {
30
- const baseDir = analyticsDir || join(homedir(), '.codemie', 'analytics');
31
- this.lockPath = join(baseDir, '.remote', '.lock');
32
- }
33
- /**
34
- * Ensure lock directory exists
35
- */
36
- async ensureDir() {
37
- const dir = join(this.lockPath, '..');
38
- if (!existsSync(dir)) {
39
- await mkdir(dir, { recursive: true });
40
- }
41
- }
42
- /**
43
- * Check if a process is alive
44
- */
45
- isProcessAlive(pid) {
46
- try {
47
- // kill(pid, 0) doesn't actually kill, just checks if process exists
48
- process.kill(pid, 0);
49
- return true;
50
- }
51
- catch {
52
- return false;
53
- }
54
- }
55
- /**
56
- * Read lock file
57
- */
58
- async readLock() {
59
- if (!existsSync(this.lockPath)) {
60
- return null;
61
- }
62
- try {
63
- const content = await readFile(this.lockPath, 'utf-8');
64
- return JSON.parse(content);
65
- }
66
- catch (error) {
67
- logger.debug(`Failed to read lock file: ${error}`);
68
- return null;
69
- }
70
- }
71
- /**
72
- * Write lock file
73
- */
74
- async writeLock(lockInfo) {
75
- await this.ensureDir();
76
- const content = JSON.stringify(lockInfo, null, 2);
77
- await writeFile(this.lockPath, content, 'utf-8');
78
- }
79
- /**
80
- * Remove lock file
81
- */
82
- async removeLock() {
83
- if (existsSync(this.lockPath)) {
84
- try {
85
- await unlink(this.lockPath);
86
- }
87
- catch (error) {
88
- logger.debug(`Failed to remove lock: ${error}`);
89
- }
90
- }
91
- }
92
- /**
93
- * Check if lock is stale (old or process dead)
94
- */
95
- async isLockStale(lockInfo) {
96
- // Check age
97
- const age = Date.now() - new Date(lockInfo.timestamp).getTime();
98
- if (age > LOCK_TIMEOUT) {
99
- return true;
100
- }
101
- // Check if process is alive
102
- if (!this.isProcessAlive(lockInfo.pid)) {
103
- return true;
104
- }
105
- return false;
106
- }
107
- /**
108
- * Start heartbeat to refresh lock timestamp
109
- */
110
- startHeartbeat() {
111
- this.heartbeatTimer = setInterval(async () => {
112
- if (this.lockInfo) {
113
- this.lockInfo.timestamp = new Date().toISOString();
114
- try {
115
- await this.writeLock(this.lockInfo);
116
- }
117
- catch (error) {
118
- logger.debug(`Heartbeat failed: ${error}`);
119
- }
120
- }
121
- }, HEARTBEAT_INTERVAL);
122
- // Ensure heartbeat doesn't prevent process exit
123
- this.heartbeatTimer.unref();
124
- }
125
- /**
126
- * Stop heartbeat
127
- */
128
- stopHeartbeat() {
129
- if (this.heartbeatTimer) {
130
- clearInterval(this.heartbeatTimer);
131
- this.heartbeatTimer = null;
132
- }
133
- }
134
- /**
135
- * Acquire lock with retry
136
- *
137
- * @param name Lock name (for logging)
138
- * @param maxRetries Maximum number of retries
139
- * @returns true if lock acquired, false if failed
140
- */
141
- async acquire(name, maxRetries = 3) {
142
- let attempts = 0;
143
- while (attempts < maxRetries) {
144
- attempts++;
145
- // Check existing lock
146
- const existingLock = await this.readLock();
147
- if (existingLock) {
148
- // Check if stale
149
- if (await this.isLockStale(existingLock)) {
150
- logger.debug(`Removing stale lock from ${existingLock.agent} (PID ${existingLock.pid})`);
151
- await this.removeLock();
152
- }
153
- else {
154
- // Lock is valid, wait and retry
155
- if (attempts < maxRetries) {
156
- logger.debug(`Lock held by ${existingLock.agent} (PID ${existingLock.pid}), ` +
157
- `waiting ${RETRY_DELAY}ms (attempt ${attempts}/${maxRetries})`);
158
- await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
159
- continue;
160
- }
161
- else {
162
- logger.debug(`Could not acquire lock after ${maxRetries} attempts`);
163
- return false;
164
- }
165
- }
166
- }
167
- // Try to acquire lock
168
- this.lockInfo = {
169
- pid: process.pid,
170
- timestamp: new Date().toISOString(),
171
- hostname: hostname(),
172
- agent: name
173
- };
174
- try {
175
- await this.writeLock(this.lockInfo);
176
- // Verify we own the lock (race condition check)
177
- const verifyLock = await this.readLock();
178
- if (verifyLock?.pid === process.pid) {
179
- logger.debug(`Lock acquired by ${name} (PID ${process.pid})`);
180
- this.startHeartbeat();
181
- this.setupExitHandlers();
182
- return true;
183
- }
184
- else {
185
- // Someone else got the lock first
186
- this.lockInfo = null;
187
- if (attempts < maxRetries) {
188
- await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
189
- continue;
190
- }
191
- else {
192
- return false;
193
- }
194
- }
195
- }
196
- catch (error) {
197
- logger.debug(`Failed to acquire lock: ${error}`);
198
- this.lockInfo = null;
199
- if (attempts < maxRetries) {
200
- await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
201
- continue;
202
- }
203
- else {
204
- return false;
205
- }
206
- }
207
- }
208
- return false;
209
- }
210
- /**
211
- * Release lock
212
- */
213
- async release() {
214
- this.stopHeartbeat();
215
- if (this.lockInfo) {
216
- // Verify we still own the lock
217
- const currentLock = await this.readLock();
218
- if (currentLock?.pid === process.pid) {
219
- await this.removeLock();
220
- logger.debug(`Lock released by ${this.lockInfo.agent} (PID ${process.pid})`);
221
- }
222
- this.lockInfo = null;
223
- }
224
- }
225
- /**
226
- * Setup exit handlers to release lock on process termination
227
- */
228
- setupExitHandlers() {
229
- const cleanup = async () => {
230
- await this.release();
231
- };
232
- // Handle various exit signals
233
- process.once('SIGINT', cleanup);
234
- process.once('SIGTERM', cleanup);
235
- process.once('exit', cleanup);
236
- }
237
- }
238
- //# sourceMappingURL=lock-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../../../src/analytics/remote-submission/lock-manager.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Metric Transformer - Backend-Aligned Pattern
3
- *
4
- * Transforms CodemieSession raw events into backend-aligned metric payloads
5
- * following the approved 3+1 metric pattern:
6
- * - codemie_tools_usage_total (success with ALL details)
7
- * - codemie_tools_usage_tokens (optional, when available)
8
- * - codemie_tools_usage_errors_total (failures with details)
9
- * - codemie_coding_agent_usage (session aggregation)
10
- */
11
- import type { CodemieSession, CodemieMessage, CodemieToolCall, CodemieFileModification } from '../aggregation/types.js';
12
- import type { MetricPayload } from './types.js';
13
- /**
14
- * Transform CodemieSession raw events to backend-aligned metrics
15
- *
16
- * CRITICAL: CodemieSession contains AGGREGATED data. We extract individual
17
- * tool call events from raw JSONL files for granular metrics.
18
- *
19
- * This function implements the APPROVED backend pattern with 3+1 metrics:
20
- * - codemie_tools_usage_total (success with ALL details)
21
- * - codemie_tools_usage_tokens (optional, if tokens available)
22
- * - codemie_tools_usage_errors_total (failures with details)
23
- * - codemie_coding_agent_usage (session aggregation)
24
- */
25
- export declare function transformSessionToMetrics(session: CodemieSession, rawData: {
26
- messages: CodemieMessage[];
27
- toolCalls: CodemieToolCall[];
28
- fileModifications: CodemieFileModification[];
29
- }, config: {
30
- userId: string;
31
- userName: string;
32
- }): MetricPayload[];
33
- /**
34
- * Create session aggregation metric
35
- * Only called when session ends (explicit endTime or timeout)
36
- */
37
- export declare function createSessionMetric(session: CodemieSession, rawData: {
38
- messages: CodemieMessage[];
39
- toolCalls: CodemieToolCall[];
40
- fileModifications: CodemieFileModification[];
41
- }, config: {
42
- userId: string;
43
- userName: string;
44
- }, options: {
45
- status: 'completed' | 'timeout' | 'resumed';
46
- exitReason: string;
47
- isFinal: boolean;
48
- }): MetricPayload;
49
- //# sourceMappingURL=metric-transformer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metric-transformer.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/metric-transformer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,YAAY,CAAC;AAmBpB;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C,EACD,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,aAAa,EAAE,CAqGjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C,EACD,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,OAAO,EAAE;IACP,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,aAAa,CAmDf"}
@@ -1,175 +0,0 @@
1
- /**
2
- * Metric Transformer - Backend-Aligned Pattern
3
- *
4
- * Transforms CodemieSession raw events into backend-aligned metric payloads
5
- * following the approved 3+1 metric pattern:
6
- * - codemie_tools_usage_total (success with ALL details)
7
- * - codemie_tools_usage_tokens (optional, when available)
8
- * - codemie_tools_usage_errors_total (failures with details)
9
- * - codemie_coding_agent_usage (session aggregation)
10
- */
11
- /**
12
- * Helper: Estimate API requests from messages
13
- * Heuristic: Usually 1-2 API calls per assistant message
14
- */
15
- function estimateAPIRequests(session) {
16
- return Math.ceil(session.assistantMessageCount * 1.5);
17
- }
18
- /**
19
- * Helper: Calculate total execution time from tool calls
20
- */
21
- function calculateTotalExecutionTime(toolCalls) {
22
- return toolCalls.reduce((sum, tc) => sum + (tc.durationMs || 0), 0);
23
- }
24
- /**
25
- * Transform CodemieSession raw events to backend-aligned metrics
26
- *
27
- * CRITICAL: CodemieSession contains AGGREGATED data. We extract individual
28
- * tool call events from raw JSONL files for granular metrics.
29
- *
30
- * This function implements the APPROVED backend pattern with 3+1 metrics:
31
- * - codemie_tools_usage_total (success with ALL details)
32
- * - codemie_tools_usage_tokens (optional, if tokens available)
33
- * - codemie_tools_usage_errors_total (failures with details)
34
- * - codemie_coding_agent_usage (session aggregation)
35
- */
36
- export function transformSessionToMetrics(session, rawData, config) {
37
- const metrics = [];
38
- // Base attributes (following backend pattern)
39
- const baseAttributes = {
40
- tool_type: 'cli',
41
- agent: session.agent,
42
- agent_version: session.agentVersion,
43
- llm_model: session.model,
44
- user_id: config.userId,
45
- user_name: config.userName,
46
- project: session.projectPath,
47
- session_id: session.sessionId,
48
- };
49
- // ========================================================================
50
- // 1. TOOL EXECUTION SUCCESS (with ALL details) - Backend Pattern
51
- // ========================================================================
52
- for (const toolCall of rawData.toolCalls) {
53
- if (toolCall.status === 'success') {
54
- // Find associated file modifications for this tool call
55
- const fileChanges = rawData.fileModifications.filter(fm => fm.toolCallId === toolCall.toolCallId);
56
- // Calculate aggregated file stats for this tool call
57
- const linesAdded = fileChanges.reduce((sum, fm) => sum + fm.linesAdded, 0);
58
- const linesRemoved = fileChanges.reduce((sum, fm) => sum + fm.linesRemoved, 0);
59
- // Get first file's metadata (if multiple files, use primary file)
60
- const primaryFile = fileChanges[0];
61
- const successAttributes = {
62
- ...baseAttributes,
63
- // Use tool call's model if available, fallback to session model
64
- llm_model: toolCall.llm_model || session.model,
65
- tool_name: toolCall.toolName,
66
- duration_ms: toolCall.durationMs || 0,
67
- count: 1,
68
- };
69
- // Add file modification details (optional - only if file was modified)
70
- if (primaryFile) {
71
- successAttributes.file_extension = primaryFile.fileExtension;
72
- successAttributes.operation = primaryFile.operation;
73
- successAttributes.lines_added = linesAdded;
74
- successAttributes.lines_removed = linesRemoved;
75
- successAttributes.was_new_file = primaryFile.wasNewFile;
76
- }
77
- metrics.push({
78
- metric_name: 'codemie_tools_usage_total',
79
- attributes: successAttributes,
80
- time: toolCall.timestamp.toISOString(),
81
- });
82
- // 2. Token consumption (optional - only if available)
83
- // Note: Tool-level tokens are in the message that contains the tool call
84
- const message = rawData.messages.find(m => m.messageId === toolCall.messageId);
85
- if (message?.tokens?.output && message.tokens.output > 0) {
86
- const tokenAttributes = {
87
- ...baseAttributes,
88
- // Use tool call's model if available, fallback to session model
89
- llm_model: toolCall.llm_model || session.model,
90
- tool_name: toolCall.toolName,
91
- input_tokens: message.tokens.input ?? 0,
92
- output_tokens: message.tokens.output,
93
- cache_read_input_tokens: message.tokens.cacheRead ?? 0,
94
- count: message.tokens.output,
95
- };
96
- metrics.push({
97
- metric_name: 'codemie_tools_usage_tokens',
98
- attributes: tokenAttributes,
99
- time: toolCall.timestamp.toISOString(),
100
- });
101
- }
102
- }
103
- else {
104
- // ========================================================================
105
- // 3. TOOL EXECUTION FAILURE - Backend Pattern
106
- // ========================================================================
107
- const errorAttributes = {
108
- ...baseAttributes,
109
- // Use tool call's model if available, fallback to session model
110
- llm_model: toolCall.llm_model || session.model,
111
- tool_name: toolCall.toolName,
112
- error: toolCall.error || 'Unknown error',
113
- status: 'failure',
114
- duration_ms: toolCall.durationMs || 0,
115
- count: 1,
116
- };
117
- metrics.push({
118
- metric_name: 'codemie_tools_usage_errors_total',
119
- attributes: errorAttributes,
120
- time: toolCall.timestamp.toISOString(),
121
- });
122
- }
123
- }
124
- return metrics;
125
- }
126
- /**
127
- * Create session aggregation metric
128
- * Only called when session ends (explicit endTime or timeout)
129
- */
130
- export function createSessionMetric(session, rawData, config, options) {
131
- const sessionAttributes = {
132
- // Base context (no tool_type for session metric)
133
- user_id: config.userId,
134
- user_name: config.userName,
135
- agent: session.agent,
136
- agent_version: session.agentVersion,
137
- llm_model: session.model,
138
- project: session.projectPath,
139
- session_id: session.sessionId,
140
- // Interaction tracking
141
- total_user_prompts: session.userPromptCount,
142
- total_ai_requests: estimateAPIRequests(session),
143
- total_ai_responses: session.assistantMessageCount,
144
- total_tool_calls: session.toolCallCount,
145
- successful_tool_calls: session.successfulToolCalls,
146
- failed_tool_calls: session.failedToolCalls,
147
- // Token totals
148
- total_input_tokens: session.tokens.input,
149
- total_output_tokens: session.tokens.output,
150
- total_cache_read_input_tokens: session.tokens.cacheRead,
151
- total_money_spent: 0, // Cost calculation removed - handled by backend
152
- total_cached_tokens_money_spent: 0, // Cost calculation removed - handled by backend
153
- // Code totals
154
- files_created: session.fileStats?.filesCreated || 0,
155
- files_modified: session.fileStats?.filesModified || 0,
156
- files_deleted: session.fileStats?.filesDeleted || 0,
157
- total_lines_added: session.fileStats?.totalLinesAdded || 0,
158
- total_lines_removed: session.fileStats?.totalLinesRemoved || 0,
159
- // Performance
160
- session_duration_ms: session.durationMs || 0,
161
- total_execution_time: calculateTotalExecutionTime(rawData.toolCalls),
162
- // Status
163
- exit_reason: options.exitReason,
164
- had_errors: session.hadErrors,
165
- status: options.status,
166
- is_final: options.isFinal,
167
- count: 1,
168
- };
169
- return {
170
- metric_name: 'codemie_coding_agent_usage',
171
- attributes: sessionAttributes,
172
- time: (session.endTime || new Date()).toISOString(),
173
- };
174
- }
175
- //# sourceMappingURL=metric-transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metric-transformer.js","sourceRoot":"","sources":["../../../src/analytics/remote-submission/metric-transformer.ts"],"names":[],"mappings":"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"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Remote Analytics Submitter
3
- *
4
- * Orchestrates periodic submission of analytics metrics to /v1/metrics endpoint.
5
- * Handles event-level tracking, concurrency control, and backend-aligned metrics.
6
- *
7
- * Key Features:
8
- * - 5-minute submission interval
9
- * - Event-level tracking (message IDs, tool call IDs)
10
- * - Multi-terminal safety via file locking
11
- * - Inactivity-based session end detection
12
- * - Backend-aligned metric transformation (3+1 pattern)
13
- */
14
- import type { RemoteSubmissionConfig } from './types.js';
15
- /**
16
- * Remote Analytics Submitter
17
- */
18
- export declare class RemoteAnalyticsSubmitter {
19
- private config;
20
- private cursorManager;
21
- private lockManager;
22
- private intervalTimer;
23
- private isRunning;
24
- constructor(config: RemoteSubmissionConfig);
25
- /**
26
- * Start periodic submission
27
- */
28
- start(): void;
29
- /**
30
- * Stop periodic submission
31
- */
32
- stop(): void;
33
- /**
34
- * Main submission cycle
35
- */
36
- private submitCycle;
37
- /**
38
- * Process all external agents
39
- */
40
- private processExternalAgents;
41
- /**
42
- * Process single agent
43
- */
44
- private processAgent;
45
- /**
46
- * Process single session
47
- */
48
- private processSession;
49
- /**
50
- * Determine session status based on activity
51
- */
52
- private determineSessionStatus;
53
- /**
54
- * Get last activity time from session
55
- */
56
- private getLastActivityTime;
57
- /**
58
- * Maybe submit session metric based on status
59
- */
60
- private maybeSubmitSessionMetric;
61
- /**
62
- * Submit batch of metrics - writes to local file and/or remote endpoint
63
- */
64
- private submitBatch;
65
- /**
66
- * Write metrics to local JSONL file
67
- */
68
- private writeMetricsToLocalFile;
69
- /**
70
- * Submit metrics to remote /v1/metrics endpoint
71
- */
72
- private submitToRemote;
73
- /**
74
- * Create batches from metrics
75
- */
76
- private createBatches;
77
- }
78
- //# sourceMappingURL=submitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submitter.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/submitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,KAAK,EACV,sBAAsB,EAIvB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,sBAAsB;IAM1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;YACW,WAAW;IAsCzB;;OAEG;YACW,qBAAqB;IA4BnC;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,cAAc;IAwG5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;YACW,wBAAwB;IAkEtC;;OAEG;YACW,WAAW;IAYzB;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;YACW,cAAc;IA+B5B;;OAEG;IACH,OAAO,CAAC,aAAa;CAOtB"}