@codemieai/code 0.0.16 → 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 (408) hide show
  1. package/README.md +62 -5
  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 +3 -32
  9. package/dist/agents/codemie-code/agent.js.map +1 -1
  10. package/dist/agents/codemie-code/tools/planning.d.ts +2 -2
  11. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  12. package/dist/agents/core/AgentCLI.js +25 -59
  13. package/dist/agents/core/AgentCLI.js.map +1 -1
  14. package/dist/agents/core/BaseAgentAdapter.d.ts +9 -1
  15. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/BaseAgentAdapter.js +103 -10
  17. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  18. package/dist/agents/core/BaseMetricsAdapter.d.ts +64 -0
  19. package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -0
  20. package/dist/agents/core/BaseMetricsAdapter.js +74 -0
  21. package/dist/agents/core/BaseMetricsAdapter.js.map +1 -0
  22. package/dist/agents/core/types.d.ts +1 -0
  23. package/dist/agents/core/types.d.ts.map +1 -1
  24. package/dist/agents/plugins/claude.metrics.d.ts +112 -0
  25. package/dist/agents/plugins/claude.metrics.d.ts.map +1 -0
  26. package/dist/agents/plugins/claude.metrics.js +700 -0
  27. package/dist/agents/plugins/claude.metrics.js.map +1 -0
  28. package/dist/agents/plugins/claude.plugin.d.ts +9 -0
  29. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  30. package/dist/agents/plugins/claude.plugin.js +52 -10
  31. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  32. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  33. package/dist/agents/plugins/codemie-code.plugin.js +45 -13
  34. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  35. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  36. package/dist/agents/plugins/codex.plugin.js +0 -2
  37. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  38. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  39. package/dist/agents/plugins/gemini.plugin.js +0 -7
  40. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  41. package/dist/agents/plugins/history-parser.d.ts +52 -0
  42. package/dist/agents/plugins/history-parser.d.ts.map +1 -0
  43. package/dist/agents/plugins/history-parser.js +155 -0
  44. package/dist/agents/plugins/history-parser.js.map +1 -0
  45. package/dist/cli/commands/analytics/aggregator.d.ts +58 -0
  46. package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -0
  47. package/dist/cli/commands/analytics/aggregator.js +702 -0
  48. package/dist/cli/commands/analytics/aggregator.js.map +1 -0
  49. package/dist/cli/commands/analytics/data-loader.d.ts +84 -0
  50. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -0
  51. package/dist/cli/commands/analytics/data-loader.js +211 -0
  52. package/dist/cli/commands/analytics/data-loader.js.map +1 -0
  53. package/dist/cli/commands/analytics/exporter.d.ts +20 -0
  54. package/dist/cli/commands/analytics/exporter.d.ts.map +1 -0
  55. package/dist/cli/commands/analytics/exporter.js +103 -0
  56. package/dist/cli/commands/analytics/exporter.js.map +1 -0
  57. package/dist/cli/commands/analytics/formatter.d.ts +49 -0
  58. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -0
  59. package/dist/cli/commands/analytics/formatter.js +309 -0
  60. package/dist/cli/commands/analytics/formatter.js.map +1 -0
  61. package/dist/cli/commands/analytics/index.d.ts +6 -0
  62. package/dist/cli/commands/analytics/index.d.ts.map +1 -0
  63. package/dist/cli/commands/analytics/index.js +157 -0
  64. package/dist/cli/commands/analytics/index.js.map +1 -0
  65. package/dist/cli/commands/analytics/model-normalizer.d.ts +21 -0
  66. package/dist/cli/commands/analytics/model-normalizer.d.ts.map +1 -0
  67. package/dist/cli/commands/analytics/model-normalizer.js +44 -0
  68. package/dist/cli/commands/analytics/model-normalizer.js.map +1 -0
  69. package/dist/cli/commands/analytics/types.d.ts +188 -0
  70. package/dist/cli/commands/analytics/types.d.ts.map +1 -0
  71. package/dist/cli/commands/analytics/types.js +6 -0
  72. package/dist/cli/commands/analytics/types.js.map +1 -0
  73. package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts +9 -0
  74. package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts.map +1 -0
  75. package/dist/cli/commands/doctor/checks/AwsCliCheck.js +28 -0
  76. package/dist/cli/commands/doctor/checks/AwsCliCheck.js.map +1 -0
  77. package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
  78. package/dist/cli/commands/doctor/checks/PythonCheck.js +10 -0
  79. package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
  80. package/dist/cli/commands/doctor/checks/WorkflowsCheck.d.ts.map +1 -1
  81. package/dist/cli/commands/doctor/checks/WorkflowsCheck.js +2 -1
  82. package/dist/cli/commands/doctor/checks/WorkflowsCheck.js.map +1 -1
  83. package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
  84. package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
  85. package/dist/cli/commands/doctor/checks/index.js +1 -0
  86. package/dist/cli/commands/doctor/checks/index.js.map +1 -1
  87. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  88. package/dist/cli/commands/doctor/index.js +85 -3
  89. package/dist/cli/commands/doctor/index.js.map +1 -1
  90. package/dist/cli/commands/profile.d.ts.map +1 -1
  91. package/dist/cli/commands/profile.js +49 -89
  92. package/dist/cli/commands/profile.js.map +1 -1
  93. package/dist/cli/commands/setup.js +1 -21
  94. package/dist/cli/commands/setup.js.map +1 -1
  95. package/dist/cli/index.js +1 -1
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/env/types.d.ts +14 -2
  98. package/dist/env/types.d.ts.map +1 -1
  99. package/dist/env/types.js.map +1 -1
  100. package/dist/metrics/MetricsOrchestrator.d.ts +67 -0
  101. package/dist/metrics/MetricsOrchestrator.d.ts.map +1 -0
  102. package/dist/metrics/MetricsOrchestrator.js +287 -0
  103. package/dist/metrics/MetricsOrchestrator.js.map +1 -0
  104. package/dist/metrics/config.d.ts +38 -0
  105. package/dist/metrics/config.d.ts.map +1 -0
  106. package/dist/metrics/config.js +80 -0
  107. package/dist/metrics/config.js.map +1 -0
  108. package/dist/metrics/core/DeltaWriter.d.ts +49 -0
  109. package/dist/metrics/core/DeltaWriter.d.ts.map +1 -0
  110. package/dist/metrics/core/DeltaWriter.js +146 -0
  111. package/dist/metrics/core/DeltaWriter.js.map +1 -0
  112. package/dist/metrics/core/FileSnapshotter.d.ts +22 -0
  113. package/dist/metrics/core/FileSnapshotter.d.ts.map +1 -0
  114. package/dist/metrics/core/FileSnapshotter.js +74 -0
  115. package/dist/metrics/core/FileSnapshotter.js.map +1 -0
  116. package/dist/metrics/core/SessionCorrelator.d.ts +34 -0
  117. package/dist/metrics/core/SessionCorrelator.d.ts.map +1 -0
  118. package/dist/metrics/core/SessionCorrelator.js +115 -0
  119. package/dist/metrics/core/SessionCorrelator.js.map +1 -0
  120. package/dist/metrics/core/SyncStateManager.d.ts +69 -0
  121. package/dist/metrics/core/SyncStateManager.d.ts.map +1 -0
  122. package/dist/metrics/core/SyncStateManager.js +284 -0
  123. package/dist/metrics/core/SyncStateManager.js.map +1 -0
  124. package/dist/metrics/index.d.ts +9 -0
  125. package/dist/metrics/index.d.ts.map +1 -0
  126. package/dist/metrics/index.js +11 -0
  127. package/dist/metrics/index.js.map +1 -0
  128. package/dist/metrics/session/SessionStore.d.ts +43 -0
  129. package/dist/metrics/session/SessionStore.d.ts.map +1 -0
  130. package/dist/metrics/session/SessionStore.js +142 -0
  131. package/dist/metrics/session/SessionStore.js.map +1 -0
  132. package/dist/metrics/sync/MetricsApiClient.d.ts +32 -0
  133. package/dist/metrics/sync/MetricsApiClient.d.ts.map +1 -0
  134. package/dist/metrics/sync/MetricsApiClient.js +155 -0
  135. package/dist/metrics/sync/MetricsApiClient.js.map +1 -0
  136. package/dist/metrics/sync/aggregator.d.ts +13 -0
  137. package/dist/metrics/sync/aggregator.d.ts.map +1 -0
  138. package/dist/metrics/sync/aggregator.js +196 -0
  139. package/dist/metrics/sync/aggregator.js.map +1 -0
  140. package/dist/metrics/sync/index.d.ts +10 -0
  141. package/dist/metrics/sync/index.d.ts.map +1 -0
  142. package/dist/metrics/sync/index.js +10 -0
  143. package/dist/metrics/sync/index.js.map +1 -0
  144. package/dist/metrics/sync/jsonl-writer.d.ts +28 -0
  145. package/dist/metrics/sync/jsonl-writer.d.ts.map +1 -0
  146. package/dist/metrics/sync/jsonl-writer.js +72 -0
  147. package/dist/metrics/sync/jsonl-writer.js.map +1 -0
  148. package/dist/metrics/sync/types.d.ts +72 -0
  149. package/dist/metrics/sync/types.d.ts.map +1 -0
  150. package/dist/metrics/sync/types.js +7 -0
  151. package/dist/metrics/sync/types.js.map +1 -0
  152. package/dist/metrics/types.d.ts +308 -0
  153. package/dist/metrics/types.d.ts.map +1 -0
  154. package/dist/metrics/types.js +8 -0
  155. package/dist/metrics/types.js.map +1 -0
  156. package/dist/providers/index.d.ts +2 -0
  157. package/dist/providers/index.d.ts.map +1 -1
  158. package/dist/providers/index.js +2 -0
  159. package/dist/providers/index.js.map +1 -1
  160. package/dist/providers/integration/setup-ui.d.ts +1 -1
  161. package/dist/providers/integration/setup-ui.d.ts.map +1 -1
  162. package/dist/providers/integration/setup-ui.js +51 -6
  163. package/dist/providers/integration/setup-ui.js.map +1 -1
  164. package/dist/providers/plugins/bedrock/bedrock.health.d.ts +53 -0
  165. package/dist/providers/plugins/bedrock/bedrock.health.d.ts.map +1 -0
  166. package/dist/providers/plugins/bedrock/bedrock.health.js +115 -0
  167. package/dist/providers/plugins/bedrock/bedrock.health.js.map +1 -0
  168. package/dist/providers/plugins/bedrock/bedrock.models.d.ts +26 -0
  169. package/dist/providers/plugins/bedrock/bedrock.models.d.ts.map +1 -0
  170. package/dist/providers/plugins/bedrock/bedrock.models.js +89 -0
  171. package/dist/providers/plugins/bedrock/bedrock.models.js.map +1 -0
  172. package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts +12 -0
  173. package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts.map +1 -0
  174. package/dist/providers/plugins/bedrock/bedrock.setup-steps.js +308 -0
  175. package/dist/providers/plugins/bedrock/bedrock.setup-steps.js.map +1 -0
  176. package/dist/providers/plugins/bedrock/bedrock.template.d.ts +11 -0
  177. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -0
  178. package/dist/providers/plugins/bedrock/bedrock.template.js +85 -0
  179. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -0
  180. package/dist/providers/plugins/bedrock/index.d.ts +11 -0
  181. package/dist/providers/plugins/bedrock/index.d.ts.map +1 -0
  182. package/dist/providers/plugins/bedrock/index.js +11 -0
  183. package/dist/providers/plugins/bedrock/index.js.map +1 -0
  184. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
  185. package/dist/providers/plugins/ollama/ollama.template.js +2 -0
  186. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
  187. package/dist/providers/plugins/sso/sso.http-client.d.ts +2 -0
  188. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  189. package/dist/providers/plugins/sso/sso.http-client.js +9 -3
  190. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  191. package/dist/proxy/http-client.d.ts.map +1 -1
  192. package/dist/proxy/http-client.js +49 -14
  193. package/dist/proxy/http-client.js.map +1 -1
  194. package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts +19 -0
  195. package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts.map +1 -0
  196. package/dist/proxy/plugins/endpoint-blocker.plugin.js +61 -0
  197. package/dist/proxy/plugins/endpoint-blocker.plugin.js.map +1 -0
  198. package/dist/proxy/plugins/header-injection.plugin.js +3 -0
  199. package/dist/proxy/plugins/header-injection.plugin.js.map +1 -1
  200. package/dist/proxy/plugins/index.d.ts +3 -1
  201. package/dist/proxy/plugins/index.d.ts.map +1 -1
  202. package/dist/proxy/plugins/index.js +5 -1
  203. package/dist/proxy/plugins/index.js.map +1 -1
  204. package/dist/proxy/plugins/logging.plugin.d.ts +3 -3
  205. package/dist/proxy/plugins/logging.plugin.js +84 -20
  206. package/dist/proxy/plugins/logging.plugin.js.map +1 -1
  207. package/dist/proxy/plugins/metrics-sync.plugin.d.ts +33 -0
  208. package/dist/proxy/plugins/metrics-sync.plugin.d.ts.map +1 -0
  209. package/dist/proxy/plugins/metrics-sync.plugin.js +310 -0
  210. package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -0
  211. package/dist/proxy/plugins/registry.d.ts.map +1 -1
  212. package/dist/proxy/plugins/registry.js +8 -1
  213. package/dist/proxy/plugins/registry.js.map +1 -1
  214. package/dist/proxy/plugins/types.d.ts +6 -2
  215. package/dist/proxy/plugins/types.d.ts.map +1 -1
  216. package/dist/proxy/types.d.ts +7 -0
  217. package/dist/proxy/types.d.ts.map +1 -1
  218. package/dist/utils/ascii-logo.d.ts +21 -0
  219. package/dist/utils/ascii-logo.d.ts.map +1 -0
  220. package/dist/utils/ascii-logo.js +75 -0
  221. package/dist/utils/ascii-logo.js.map +1 -0
  222. package/dist/utils/codemie-proxy.d.ts +0 -6
  223. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  224. package/dist/utils/codemie-proxy.js +46 -56
  225. package/dist/utils/codemie-proxy.js.map +1 -1
  226. package/dist/utils/config-loader.d.ts.map +1 -1
  227. package/dist/utils/config-loader.js +22 -6
  228. package/dist/utils/config-loader.js.map +1 -1
  229. package/dist/utils/exec.d.ts +11 -0
  230. package/dist/utils/exec.d.ts.map +1 -1
  231. package/dist/utils/exec.js +17 -1
  232. package/dist/utils/exec.js.map +1 -1
  233. package/dist/utils/goodbye-messages.d.ts +13 -0
  234. package/dist/utils/goodbye-messages.d.ts.map +1 -0
  235. package/dist/utils/goodbye-messages.js +245 -0
  236. package/dist/utils/goodbye-messages.js.map +1 -0
  237. package/dist/utils/json-parser.d.ts +52 -0
  238. package/dist/utils/json-parser.d.ts.map +1 -0
  239. package/dist/utils/json-parser.js +126 -0
  240. package/dist/utils/json-parser.js.map +1 -0
  241. package/dist/utils/logger.d.ts +37 -1
  242. package/dist/utils/logger.d.ts.map +1 -1
  243. package/dist/utils/logger.js +92 -20
  244. package/dist/utils/logger.js.map +1 -1
  245. package/dist/utils/sanitize.d.ts.map +1 -1
  246. package/dist/utils/sanitize.js +0 -1
  247. package/dist/utils/sanitize.js.map +1 -1
  248. package/dist/utils/which.d.ts +20 -0
  249. package/dist/utils/which.d.ts.map +1 -0
  250. package/dist/utils/which.js +47 -0
  251. package/dist/utils/which.js.map +1 -0
  252. package/package.json +10 -5
  253. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +0 -37
  254. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +0 -1
  255. package/dist/analytics/aggregation/adapters/claude.adapter.js +0 -531
  256. package/dist/analytics/aggregation/adapters/claude.adapter.js.map +0 -1
  257. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +0 -25
  258. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +0 -1
  259. package/dist/analytics/aggregation/adapters/codex.adapter.js +0 -396
  260. package/dist/analytics/aggregation/adapters/codex.adapter.js.map +0 -1
  261. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +0 -36
  262. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +0 -1
  263. package/dist/analytics/aggregation/adapters/gemini.adapter.js +0 -365
  264. package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +0 -1
  265. package/dist/analytics/aggregation/adapters/index.d.ts +0 -7
  266. package/dist/analytics/aggregation/adapters/index.d.ts.map +0 -1
  267. package/dist/analytics/aggregation/adapters/index.js +0 -7
  268. package/dist/analytics/aggregation/adapters/index.js.map +0 -1
  269. package/dist/analytics/aggregation/aggregator.d.ts +0 -49
  270. package/dist/analytics/aggregation/aggregator.d.ts.map +0 -1
  271. package/dist/analytics/aggregation/aggregator.js +0 -239
  272. package/dist/analytics/aggregation/aggregator.js.map +0 -1
  273. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +0 -99
  274. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +0 -1
  275. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +0 -110
  276. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +0 -1
  277. package/dist/analytics/aggregation/core/adapter.interface.d.ts +0 -76
  278. package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +0 -1
  279. package/dist/analytics/aggregation/core/adapter.interface.js +0 -9
  280. package/dist/analytics/aggregation/core/adapter.interface.js.map +0 -1
  281. package/dist/analytics/aggregation/core/aggregation-utils.d.ts +0 -86
  282. package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +0 -1
  283. package/dist/analytics/aggregation/core/aggregation-utils.js +0 -126
  284. package/dist/analytics/aggregation/core/aggregation-utils.js.map +0 -1
  285. package/dist/analytics/aggregation/core/discovery.d.ts +0 -40
  286. package/dist/analytics/aggregation/core/discovery.d.ts.map +0 -1
  287. package/dist/analytics/aggregation/core/discovery.js +0 -132
  288. package/dist/analytics/aggregation/core/discovery.js.map +0 -1
  289. package/dist/analytics/aggregation/core/file-utils.d.ts +0 -24
  290. package/dist/analytics/aggregation/core/file-utils.d.ts.map +0 -1
  291. package/dist/analytics/aggregation/core/file-utils.js +0 -143
  292. package/dist/analytics/aggregation/core/file-utils.js.map +0 -1
  293. package/dist/analytics/aggregation/core/index.d.ts +0 -14
  294. package/dist/analytics/aggregation/core/index.d.ts.map +0 -1
  295. package/dist/analytics/aggregation/core/index.js +0 -14
  296. package/dist/analytics/aggregation/core/index.js.map +0 -1
  297. package/dist/analytics/aggregation/core/project-mapping.d.ts +0 -50
  298. package/dist/analytics/aggregation/core/project-mapping.d.ts.map +0 -1
  299. package/dist/analytics/aggregation/core/project-mapping.js +0 -102
  300. package/dist/analytics/aggregation/core/project-mapping.js.map +0 -1
  301. package/dist/analytics/aggregation/core/streaming.d.ts +0 -26
  302. package/dist/analytics/aggregation/core/streaming.d.ts.map +0 -1
  303. package/dist/analytics/aggregation/core/streaming.js +0 -58
  304. package/dist/analytics/aggregation/core/streaming.js.map +0 -1
  305. package/dist/analytics/aggregation/core/user-prompt-source.d.ts +0 -81
  306. package/dist/analytics/aggregation/core/user-prompt-source.d.ts.map +0 -1
  307. package/dist/analytics/aggregation/core/user-prompt-source.js +0 -69
  308. package/dist/analytics/aggregation/core/user-prompt-source.js.map +0 -1
  309. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts +0 -49
  310. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts.map +0 -1
  311. package/dist/analytics/aggregation/core/user-prompt-sources/json.js +0 -66
  312. package/dist/analytics/aggregation/core/user-prompt-sources/json.js.map +0 -1
  313. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts +0 -43
  314. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts.map +0 -1
  315. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js +0 -56
  316. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js.map +0 -1
  317. package/dist/analytics/aggregation/index.d.ts +0 -8
  318. package/dist/analytics/aggregation/index.d.ts.map +0 -1
  319. package/dist/analytics/aggregation/index.js +0 -8
  320. package/dist/analytics/aggregation/index.js.map +0 -1
  321. package/dist/analytics/aggregation/types.d.ts +0 -278
  322. package/dist/analytics/aggregation/types.d.ts.map +0 -1
  323. package/dist/analytics/aggregation/types.js +0 -8
  324. package/dist/analytics/aggregation/types.js.map +0 -1
  325. package/dist/analytics/collector.d.ts +0 -46
  326. package/dist/analytics/collector.d.ts.map +0 -1
  327. package/dist/analytics/collector.js +0 -83
  328. package/dist/analytics/collector.js.map +0 -1
  329. package/dist/analytics/config.d.ts +0 -15
  330. package/dist/analytics/config.d.ts.map +0 -1
  331. package/dist/analytics/config.js +0 -65
  332. package/dist/analytics/config.js.map +0 -1
  333. package/dist/analytics/index.d.ts +0 -99
  334. package/dist/analytics/index.d.ts.map +0 -1
  335. package/dist/analytics/index.js +0 -280
  336. package/dist/analytics/index.js.map +0 -1
  337. package/dist/analytics/plugins/api-metrics.plugin.d.ts +0 -26
  338. package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +0 -1
  339. package/dist/analytics/plugins/api-metrics.plugin.js +0 -97
  340. package/dist/analytics/plugins/api-metrics.plugin.js.map +0 -1
  341. package/dist/analytics/plugins/index.d.ts +0 -15
  342. package/dist/analytics/plugins/index.d.ts.map +0 -1
  343. package/dist/analytics/plugins/index.js +0 -15
  344. package/dist/analytics/plugins/index.js.map +0 -1
  345. package/dist/analytics/plugins/model-metrics.plugin.d.ts +0 -39
  346. package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +0 -1
  347. package/dist/analytics/plugins/model-metrics.plugin.js +0 -105
  348. package/dist/analytics/plugins/model-metrics.plugin.js.map +0 -1
  349. package/dist/analytics/plugins/provider-metrics.plugin.d.ts +0 -41
  350. package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +0 -1
  351. package/dist/analytics/plugins/provider-metrics.plugin.js +0 -123
  352. package/dist/analytics/plugins/provider-metrics.plugin.js.map +0 -1
  353. package/dist/analytics/plugins/types.d.ts +0 -61
  354. package/dist/analytics/plugins/types.d.ts.map +0 -1
  355. package/dist/analytics/plugins/types.js +0 -54
  356. package/dist/analytics/plugins/types.js.map +0 -1
  357. package/dist/analytics/privacy.d.ts +0 -10
  358. package/dist/analytics/privacy.d.ts.map +0 -1
  359. package/dist/analytics/privacy.js +0 -20
  360. package/dist/analytics/privacy.js.map +0 -1
  361. package/dist/analytics/remote-submission/cursor-manager.d.ts +0 -71
  362. package/dist/analytics/remote-submission/cursor-manager.d.ts.map +0 -1
  363. package/dist/analytics/remote-submission/cursor-manager.js +0 -204
  364. package/dist/analytics/remote-submission/cursor-manager.js.map +0 -1
  365. package/dist/analytics/remote-submission/index.d.ts +0 -12
  366. package/dist/analytics/remote-submission/index.d.ts.map +0 -1
  367. package/dist/analytics/remote-submission/index.js +0 -11
  368. package/dist/analytics/remote-submission/index.js.map +0 -1
  369. package/dist/analytics/remote-submission/lock-manager.d.ts +0 -71
  370. package/dist/analytics/remote-submission/lock-manager.d.ts.map +0 -1
  371. package/dist/analytics/remote-submission/lock-manager.js +0 -238
  372. package/dist/analytics/remote-submission/lock-manager.js.map +0 -1
  373. package/dist/analytics/remote-submission/metric-transformer.d.ts +0 -21
  374. package/dist/analytics/remote-submission/metric-transformer.d.ts.map +0 -1
  375. package/dist/analytics/remote-submission/metric-transformer.js +0 -82
  376. package/dist/analytics/remote-submission/metric-transformer.js.map +0 -1
  377. package/dist/analytics/remote-submission/submitter.d.ts +0 -79
  378. package/dist/analytics/remote-submission/submitter.d.ts.map +0 -1
  379. package/dist/analytics/remote-submission/submitter.js +0 -362
  380. package/dist/analytics/remote-submission/submitter.js.map +0 -1
  381. package/dist/analytics/remote-submission/types.d.ts +0 -123
  382. package/dist/analytics/remote-submission/types.d.ts.map +0 -1
  383. package/dist/analytics/remote-submission/types.js +0 -13
  384. package/dist/analytics/remote-submission/types.js.map +0 -1
  385. package/dist/analytics/session.d.ts +0 -56
  386. package/dist/analytics/session.d.ts.map +0 -1
  387. package/dist/analytics/session.js +0 -95
  388. package/dist/analytics/session.js.map +0 -1
  389. package/dist/analytics/types.d.ts +0 -104
  390. package/dist/analytics/types.d.ts.map +0 -1
  391. package/dist/analytics/types.js +0 -15
  392. package/dist/analytics/types.js.map +0 -1
  393. package/dist/analytics/writer.d.ts +0 -18
  394. package/dist/analytics/writer.d.ts.map +0 -1
  395. package/dist/analytics/writer.js +0 -44
  396. package/dist/analytics/writer.js.map +0 -1
  397. package/dist/cli/commands/analytics.d.ts +0 -3
  398. package/dist/cli/commands/analytics.d.ts.map +0 -1
  399. package/dist/cli/commands/analytics.js +0 -748
  400. package/dist/cli/commands/analytics.js.map +0 -1
  401. package/dist/utils/analytics-reader.d.ts +0 -117
  402. package/dist/utils/analytics-reader.d.ts.map +0 -1
  403. package/dist/utils/analytics-reader.js +0 -421
  404. package/dist/utils/analytics-reader.js.map +0 -1
  405. package/dist/utils/date-formatter.d.ts +0 -88
  406. package/dist/utils/date-formatter.d.ts.map +0 -1
  407. package/dist/utils/date-formatter.js +0 -133
  408. package/dist/utils/date-formatter.js.map +0 -1
@@ -0,0 +1,74 @@
1
+ /**
2
+ * File Snapshotter
3
+ *
4
+ * Takes snapshots of directory state and computes diffs.
5
+ * Used to detect new files created by agent processes.
6
+ */
7
+ import { readdir, stat } from 'fs/promises';
8
+ import { join } from 'path';
9
+ import { existsSync } from 'fs';
10
+ import { logger } from '../../utils/logger.js';
11
+ export class FileSnapshotter {
12
+ /**
13
+ * Take snapshot of directory
14
+ */
15
+ async snapshot(dirPath) {
16
+ const files = await this.scanDirectory(dirPath);
17
+ return {
18
+ timestamp: Date.now(),
19
+ files
20
+ };
21
+ }
22
+ /**
23
+ * Compute diff between snapshots (new files only)
24
+ */
25
+ diff(before, after) {
26
+ const beforePaths = new Set(before.files.map(f => f.path));
27
+ const newFiles = after.files.filter(f => !beforePaths.has(f.path));
28
+ logger.debug(`[FileSnapshotter] Diff: ${newFiles.length} new files detected`);
29
+ return newFiles;
30
+ }
31
+ /**
32
+ * Scan directory recursively and collect file information
33
+ */
34
+ async scanDirectory(dirPath) {
35
+ // Check if directory exists
36
+ if (!existsSync(dirPath)) {
37
+ logger.debug(`[FileSnapshotter] Directory does not exist: ${dirPath}`);
38
+ return [];
39
+ }
40
+ const files = [];
41
+ try {
42
+ const entries = await readdir(dirPath, { withFileTypes: true });
43
+ for (const entry of entries) {
44
+ const fullPath = join(dirPath, entry.name);
45
+ if (entry.isFile()) {
46
+ try {
47
+ const stats = await stat(fullPath);
48
+ files.push({
49
+ path: fullPath,
50
+ size: stats.size,
51
+ createdAt: stats.birthtimeMs,
52
+ modifiedAt: stats.mtimeMs
53
+ });
54
+ }
55
+ catch (error) {
56
+ // Skip files that can't be stat'd (permissions, etc.)
57
+ logger.debug(`[FileSnapshotter] Failed to stat file: ${fullPath}`, error);
58
+ }
59
+ }
60
+ else if (entry.isDirectory()) {
61
+ // Recursively scan subdirectories
62
+ const subFiles = await this.scanDirectory(fullPath);
63
+ files.push(...subFiles);
64
+ }
65
+ }
66
+ }
67
+ catch (error) {
68
+ logger.error(`[FileSnapshotter] Failed to scan directory: ${dirPath}`, error);
69
+ throw error;
70
+ }
71
+ return files;
72
+ }
73
+ }
74
+ //# sourceMappingURL=FileSnapshotter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSnapshotter.js","sourceRoot":"","sources":["../../../src/metrics/core/FileSnapshotter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEhD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,MAAoB,EAAE,KAAmB;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE3C,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACnC,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,SAAS,EAAE,KAAK,CAAC,WAAW;4BAC5B,UAAU,EAAE,KAAK,CAAC,OAAO;yBAC1B,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,sDAAsD;wBACtD,MAAM,CAAC,KAAK,CAAC,0CAA0C,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC/B,kCAAkC;oBAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACpD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,+CAA+C,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Session Correlator
3
+ *
4
+ * Correlates CodeMie sessions with agent session files.
5
+ * Uses before/after snapshot diff + working directory filtering.
6
+ */
7
+ import type { FileInfo, CorrelationResult, AgentMetricsSupport } from '../types.js';
8
+ export interface CorrelationInput {
9
+ sessionId: string;
10
+ agentName: string;
11
+ workingDirectory: string;
12
+ newFiles: FileInfo[];
13
+ agentPlugin: AgentMetricsSupport;
14
+ }
15
+ export declare class SessionCorrelator {
16
+ /**
17
+ * Correlate CodeMie session to agent session file
18
+ * Picks first match after filtering by working directory
19
+ */
20
+ correlate(input: CorrelationInput): Promise<CorrelationResult>;
21
+ /**
22
+ * Retry correlation with exponential backoff
23
+ */
24
+ correlateWithRetry(input: CorrelationInput, snapshotFn: () => Promise<FileInfo[]>): Promise<CorrelationResult>;
25
+ /**
26
+ * Filter files by working directory content
27
+ */
28
+ private filterByWorkingDirectory;
29
+ /**
30
+ * Sleep utility
31
+ */
32
+ private sleep;
33
+ }
34
+ //# sourceMappingURL=SessionCorrelator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionCorrelator.d.ts","sourceRoot":"","sources":["../../../src/metrics/core/SessionCorrelator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIpF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,qBAAa,iBAAiB;IAC5B;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0DpE;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAuC7B;;OAEG;YACW,wBAAwB;IAuBtC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Session Correlator
3
+ *
4
+ * Correlates CodeMie sessions with agent session files.
5
+ * Uses before/after snapshot diff + working directory filtering.
6
+ */
7
+ import { readFile } from 'fs/promises';
8
+ import { logger } from '../../utils/logger.js';
9
+ import { METRICS_CONFIG } from '../config.js';
10
+ export class SessionCorrelator {
11
+ /**
12
+ * Correlate CodeMie session to agent session file
13
+ * Picks first match after filtering by working directory
14
+ */
15
+ async correlate(input) {
16
+ const { newFiles, agentPlugin, workingDirectory } = input;
17
+ logger.debug(`[SessionCorrelator] Correlating session with ${newFiles.length} new files`);
18
+ // Case 1: No new files
19
+ if (newFiles.length === 0) {
20
+ logger.debug('[SessionCorrelator] No new files detected');
21
+ return {
22
+ status: 'pending',
23
+ retryCount: 0
24
+ };
25
+ }
26
+ // Case 2: Filter files by agent pattern
27
+ const matchingFiles = newFiles.filter(f => agentPlugin.matchesSessionPattern(f.path));
28
+ logger.debug(`[SessionCorrelator] ${matchingFiles.length} files match agent pattern out of ${newFiles.length} new files`);
29
+ logger.debug(`[SessionCorrelator] New files: ${newFiles.map(f => f.path).join(', ')}`);
30
+ logger.debug(`[SessionCorrelator] Matching files: ${matchingFiles.map(f => f.path).join(', ')}`);
31
+ if (matchingFiles.length === 0) {
32
+ logger.warn('[SessionCorrelator] No files match agent pattern');
33
+ return {
34
+ status: 'failed',
35
+ retryCount: 0
36
+ };
37
+ }
38
+ // Case 3: Filter by working directory (parse file content)
39
+ const filesWithWorkingDir = await this.filterByWorkingDirectory(matchingFiles, workingDirectory);
40
+ logger.debug(`[SessionCorrelator] ${filesWithWorkingDir.length} files contain working directory`);
41
+ // Pick first match (simple strategy)
42
+ const matchedFile = filesWithWorkingDir.length > 0
43
+ ? filesWithWorkingDir[0]
44
+ : matchingFiles[0]; // Fallback to first pattern match if no working dir match
45
+ // Extract session ID
46
+ const agentSessionId = agentPlugin.extractSessionId(matchedFile.path);
47
+ logger.info(`[SessionCorrelator] Matched: ${matchedFile.path} → ${agentSessionId}`);
48
+ return {
49
+ status: 'matched',
50
+ agentSessionFile: matchedFile.path,
51
+ agentSessionId,
52
+ detectedAt: Date.now(),
53
+ retryCount: 0
54
+ };
55
+ }
56
+ /**
57
+ * Retry correlation with exponential backoff
58
+ */
59
+ async correlateWithRetry(input, snapshotFn) {
60
+ let result = await this.correlate(input);
61
+ // If matched on first try, return immediately
62
+ if (result.status === 'matched') {
63
+ return result;
64
+ }
65
+ // Retry with exponential backoff
66
+ for (let attempt = 0; attempt < METRICS_CONFIG.retry.attempts; attempt++) {
67
+ const delay = METRICS_CONFIG.retry.delays[attempt];
68
+ logger.debug(`[SessionCorrelator] Retry attempt ${attempt + 1} after ${delay}ms`);
69
+ await this.sleep(delay);
70
+ // Take new snapshot
71
+ const newFiles = await snapshotFn();
72
+ // Retry correlation
73
+ result = await this.correlate({
74
+ ...input,
75
+ newFiles
76
+ });
77
+ result.retryCount = attempt + 1;
78
+ if (result.status === 'matched') {
79
+ logger.info(`[SessionCorrelator] Matched on retry attempt ${attempt + 1}`);
80
+ return result;
81
+ }
82
+ }
83
+ // All retries exhausted
84
+ logger.warn(`[SessionCorrelator] Failed to correlate after ${METRICS_CONFIG.retry.attempts} attempts`);
85
+ result.status = 'failed';
86
+ return result;
87
+ }
88
+ /**
89
+ * Filter files by working directory content
90
+ */
91
+ async filterByWorkingDirectory(files, workingDirectory) {
92
+ const filtered = [];
93
+ for (const file of files) {
94
+ try {
95
+ const content = await readFile(file.path, 'utf-8');
96
+ // Check if file content contains working directory path
97
+ if (content.includes(workingDirectory)) {
98
+ filtered.push(file);
99
+ }
100
+ }
101
+ catch (error) {
102
+ // Skip files that can't be read
103
+ logger.debug(`[SessionCorrelator] Failed to read file: ${file.path}`, error);
104
+ }
105
+ }
106
+ return filtered;
107
+ }
108
+ /**
109
+ * Sleep utility
110
+ */
111
+ sleep(ms) {
112
+ return new Promise(resolve => setTimeout(resolve, ms));
113
+ }
114
+ }
115
+ //# sourceMappingURL=SessionCorrelator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionCorrelator.js","sourceRoot":"","sources":["../../../src/metrics/core/SessionCorrelator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Sync State Manager
3
+ *
4
+ * Manages sync state embedded in session metadata file.
5
+ * Tracks which records have been synced to prevent duplicates.
6
+ * Sync state is stored in: ~/.codemie/metrics/sessions/{sessionId}.json
7
+ */
8
+ import type { SyncState } from '../types.js';
9
+ export declare class SyncStateManager {
10
+ private readonly sessionId;
11
+ private readonly filePath;
12
+ constructor(sessionId: string);
13
+ /**
14
+ * Initialize new sync state (embedded in session file)
15
+ */
16
+ initialize(sessionId: string, agentSessionId: string, sessionStartTime: number): Promise<SyncState>;
17
+ /**
18
+ * Load session file
19
+ */
20
+ private loadSession;
21
+ /**
22
+ * Load sync state from session file
23
+ * Returns null if file doesn't exist (graceful handling for deleted files)
24
+ */
25
+ load(): Promise<SyncState | null>;
26
+ /**
27
+ * Save sync state to session file (atomic write)
28
+ */
29
+ save(state: SyncState): Promise<void>;
30
+ /**
31
+ * Update last processed line
32
+ */
33
+ updateLastProcessed(line: number, timestamp: number): Promise<void>;
34
+ /**
35
+ * Add processed record IDs to tracking
36
+ */
37
+ addProcessedRecords(recordIds: string[]): Promise<void>;
38
+ /**
39
+ * Mark records as synced
40
+ * Note: Sync status is tracked in metrics JSONL (syncStatus field)
41
+ * This only updates aggregate statistics and last sync info
42
+ */
43
+ markSynced(recordIds: string[]): Promise<void>;
44
+ /**
45
+ * Add attached user prompt texts to tracking (prevents duplication)
46
+ */
47
+ addAttachedUserPrompts(promptTexts: string[]): Promise<void>;
48
+ /**
49
+ * Increment delta count
50
+ */
51
+ incrementDeltas(count: number): Promise<void>;
52
+ /**
53
+ * Increment failed count
54
+ */
55
+ incrementFailed(count: number): Promise<void>;
56
+ /**
57
+ * Update session status
58
+ */
59
+ updateStatus(status: 'active' | 'completed' | 'failed', endTime?: number): Promise<void>;
60
+ /**
61
+ * Get file path
62
+ */
63
+ getFilePath(): string;
64
+ /**
65
+ * Check if file exists
66
+ */
67
+ exists(): boolean;
68
+ }
69
+ //# sourceMappingURL=SyncStateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../../../src/metrics/core/SyncStateManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAI7D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,SAAS,EAAE,MAAM;IAK7B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsCzG;;OAEG;YACW,WAAW;IASzB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAyBvC;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3C;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzE;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7D;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpD;;OAEG;IACG,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlE;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9F;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,MAAM,IAAI,OAAO;CAGlB"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Sync State Manager
3
+ *
4
+ * Manages sync state embedded in session metadata file.
5
+ * Tracks which records have been synced to prevent duplicates.
6
+ * Sync state is stored in: ~/.codemie/metrics/sessions/{sessionId}.json
7
+ */
8
+ import { readFile, writeFile, mkdir, rename } from 'fs/promises';
9
+ import { existsSync } from 'fs';
10
+ import { tmpdir } from 'os';
11
+ import { dirname } from 'path';
12
+ import { randomUUID } from 'crypto';
13
+ import { logger } from '../../utils/logger.js';
14
+ import { getSessionPath } from '../config.js';
15
+ export class SyncStateManager {
16
+ sessionId;
17
+ filePath;
18
+ constructor(sessionId) {
19
+ this.sessionId = sessionId;
20
+ this.filePath = getSessionPath(sessionId);
21
+ }
22
+ /**
23
+ * Initialize new sync state (embedded in session file)
24
+ */
25
+ async initialize(sessionId, agentSessionId, sessionStartTime) {
26
+ try {
27
+ // Check if session exists and already has sync state
28
+ if (existsSync(this.filePath)) {
29
+ const session = await this.loadSession();
30
+ if (session.syncState) {
31
+ logger.debug('[SyncStateManager] Sync state already exists, loading...');
32
+ return session.syncState;
33
+ }
34
+ }
35
+ // Create new sync state
36
+ const syncState = {
37
+ sessionId,
38
+ agentSessionId,
39
+ sessionStartTime,
40
+ status: 'active',
41
+ lastProcessedLine: 0,
42
+ lastProcessedTimestamp: Date.now(),
43
+ processedRecordIds: [],
44
+ attachedUserPromptTexts: [],
45
+ totalDeltas: 0,
46
+ totalSynced: 0,
47
+ totalFailed: 0
48
+ };
49
+ // Save to session file
50
+ await this.save(syncState);
51
+ logger.info('[SyncStateManager] Initialized new sync state');
52
+ return syncState;
53
+ }
54
+ catch (error) {
55
+ logger.error('[SyncStateManager] Failed to initialize sync state:', error);
56
+ throw error;
57
+ }
58
+ }
59
+ /**
60
+ * Load session file
61
+ */
62
+ async loadSession() {
63
+ if (!existsSync(this.filePath)) {
64
+ throw new Error(`Session file does not exist: ${this.filePath}`);
65
+ }
66
+ const content = await readFile(this.filePath, 'utf-8');
67
+ return JSON.parse(content);
68
+ }
69
+ /**
70
+ * Load sync state from session file
71
+ * Returns null if file doesn't exist (graceful handling for deleted files)
72
+ */
73
+ async load() {
74
+ try {
75
+ // Check if session file exists
76
+ if (!existsSync(this.filePath)) {
77
+ logger.debug('[SyncStateManager] Session file does not exist, returning null');
78
+ return null;
79
+ }
80
+ const session = await this.loadSession();
81
+ if (!session.syncState) {
82
+ logger.debug('[SyncStateManager] Sync state not initialized yet, returning null');
83
+ return null;
84
+ }
85
+ logger.debug(`[SyncStateManager] Loaded sync state: ${session.syncState.totalDeltas} deltas, ${session.syncState.totalSynced} synced`);
86
+ return session.syncState;
87
+ }
88
+ catch (error) {
89
+ logger.error('[SyncStateManager] Failed to load sync state:', error);
90
+ // Return null instead of throwing to allow graceful degradation
91
+ return null;
92
+ }
93
+ }
94
+ /**
95
+ * Save sync state to session file (atomic write)
96
+ */
97
+ async save(state) {
98
+ try {
99
+ // Load current session
100
+ const session = await this.loadSession();
101
+ // Update sync state
102
+ session.syncState = state;
103
+ // Ensure directory exists
104
+ const dir = dirname(this.filePath);
105
+ if (!existsSync(dir)) {
106
+ await mkdir(dir, { recursive: true });
107
+ }
108
+ // Write to temp file first (atomic write)
109
+ const tempFile = `${tmpdir()}/session_${randomUUID()}.json`;
110
+ await writeFile(tempFile, JSON.stringify(session, null, 2), 'utf-8');
111
+ // Rename to final location (atomic operation)
112
+ await rename(tempFile, this.filePath);
113
+ logger.debug('[SyncStateManager] Saved sync state');
114
+ }
115
+ catch (error) {
116
+ logger.error('[SyncStateManager] Failed to save sync state:', error);
117
+ throw error;
118
+ }
119
+ }
120
+ /**
121
+ * Update last processed line
122
+ */
123
+ async updateLastProcessed(line, timestamp) {
124
+ try {
125
+ const state = await this.load();
126
+ if (!state) {
127
+ logger.debug('[SyncStateManager] Cannot update - sync state does not exist');
128
+ return;
129
+ }
130
+ state.lastProcessedLine = line;
131
+ state.lastProcessedTimestamp = timestamp;
132
+ await this.save(state);
133
+ logger.debug(`[SyncStateManager] Updated last processed line: ${line}`);
134
+ }
135
+ catch (error) {
136
+ logger.error('[SyncStateManager] Failed to update last processed line:', error);
137
+ // Don't throw - allow graceful degradation
138
+ }
139
+ }
140
+ /**
141
+ * Add processed record IDs to tracking
142
+ */
143
+ async addProcessedRecords(recordIds) {
144
+ try {
145
+ const state = await this.load();
146
+ if (!state) {
147
+ logger.debug('[SyncStateManager] Cannot add records - sync state does not exist');
148
+ return;
149
+ }
150
+ // Add to processed records list
151
+ state.processedRecordIds.push(...recordIds);
152
+ await this.save(state);
153
+ logger.debug(`[SyncStateManager] Added ${recordIds.length} processed record IDs`);
154
+ }
155
+ catch (error) {
156
+ logger.error('[SyncStateManager] Failed to add processed records:', error);
157
+ // Don't throw - allow graceful degradation
158
+ }
159
+ }
160
+ /**
161
+ * Mark records as synced
162
+ * Note: Sync status is tracked in metrics JSONL (syncStatus field)
163
+ * This only updates aggregate statistics and last sync info
164
+ */
165
+ async markSynced(recordIds) {
166
+ try {
167
+ const state = await this.load();
168
+ if (!state) {
169
+ logger.debug('[SyncStateManager] Cannot mark synced - sync state does not exist');
170
+ return;
171
+ }
172
+ // Update last synced record (for resume capability)
173
+ if (recordIds.length > 0) {
174
+ state.lastSyncedRecordId = recordIds[recordIds.length - 1];
175
+ state.lastSyncAt = Date.now();
176
+ }
177
+ // Update statistics
178
+ state.totalSynced += recordIds.length;
179
+ await this.save(state);
180
+ logger.debug(`[SyncStateManager] Marked ${recordIds.length} records as synced`);
181
+ }
182
+ catch (error) {
183
+ logger.error('[SyncStateManager] Failed to mark records as synced:', error);
184
+ // Don't throw - allow graceful degradation
185
+ }
186
+ }
187
+ /**
188
+ * Add attached user prompt texts to tracking (prevents duplication)
189
+ */
190
+ async addAttachedUserPrompts(promptTexts) {
191
+ try {
192
+ const state = await this.load();
193
+ if (!state) {
194
+ logger.debug('[SyncStateManager] Cannot add attached prompts - sync state does not exist');
195
+ return;
196
+ }
197
+ // Initialize array if not present
198
+ if (!state.attachedUserPromptTexts) {
199
+ state.attachedUserPromptTexts = [];
200
+ }
201
+ // Add to attached prompts list
202
+ state.attachedUserPromptTexts.push(...promptTexts);
203
+ await this.save(state);
204
+ logger.debug(`[SyncStateManager] Added ${promptTexts.length} attached user prompt texts`);
205
+ }
206
+ catch (error) {
207
+ logger.error('[SyncStateManager] Failed to add attached prompts:', error);
208
+ // Don't throw - allow graceful degradation
209
+ }
210
+ }
211
+ /**
212
+ * Increment delta count
213
+ */
214
+ async incrementDeltas(count) {
215
+ try {
216
+ const state = await this.load();
217
+ if (!state) {
218
+ logger.debug('[SyncStateManager] Cannot increment deltas - sync state does not exist');
219
+ return;
220
+ }
221
+ state.totalDeltas += count;
222
+ await this.save(state);
223
+ logger.debug(`[SyncStateManager] Incremented delta count by ${count}`);
224
+ }
225
+ catch (error) {
226
+ logger.error('[SyncStateManager] Failed to increment deltas:', error);
227
+ // Don't throw - allow graceful degradation
228
+ }
229
+ }
230
+ /**
231
+ * Increment failed count
232
+ */
233
+ async incrementFailed(count) {
234
+ try {
235
+ const state = await this.load();
236
+ if (!state) {
237
+ logger.debug('[SyncStateManager] Cannot increment failed - sync state does not exist');
238
+ return;
239
+ }
240
+ state.totalFailed += count;
241
+ await this.save(state);
242
+ logger.debug(`[SyncStateManager] Incremented failed count by ${count}`);
243
+ }
244
+ catch (error) {
245
+ logger.error('[SyncStateManager] Failed to increment failed count:', error);
246
+ // Don't throw - allow graceful degradation
247
+ }
248
+ }
249
+ /**
250
+ * Update session status
251
+ */
252
+ async updateStatus(status, endTime) {
253
+ try {
254
+ const state = await this.load();
255
+ if (!state) {
256
+ logger.debug('[SyncStateManager] Cannot update status - sync state does not exist');
257
+ return;
258
+ }
259
+ state.status = status;
260
+ if (endTime && (status === 'completed' || status === 'failed')) {
261
+ state.sessionEndTime = endTime;
262
+ }
263
+ await this.save(state);
264
+ logger.debug(`[SyncStateManager] Updated status to: ${status}`);
265
+ }
266
+ catch (error) {
267
+ logger.error('[SyncStateManager] Failed to update status:', error);
268
+ // Don't throw - allow graceful degradation
269
+ }
270
+ }
271
+ /**
272
+ * Get file path
273
+ */
274
+ getFilePath() {
275
+ return this.filePath;
276
+ }
277
+ /**
278
+ * Check if file exists
279
+ */
280
+ exists() {
281
+ return existsSync(this.filePath);
282
+ }
283
+ }
284
+ //# sourceMappingURL=SyncStateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../../../src/metrics/core/SyncStateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Metrics Collection System
3
+ *
4
+ * Public API for the metrics collection system.
5
+ */
6
+ export * from './types.js';
7
+ export { DeltaWriter } from './core/DeltaWriter.js';
8
+ export { SyncStateManager } from './core/SyncStateManager.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Metrics Collection System
3
+ *
4
+ * Public API for the metrics collection system.
5
+ */
6
+ // Types
7
+ export * from './types.js';
8
+ // Core components
9
+ export { DeltaWriter } from './core/DeltaWriter.js';
10
+ export { SyncStateManager } from './core/SyncStateManager.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}