@codemieai/code 0.0.28 → 0.0.29

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 (368) hide show
  1. package/README.md +8 -10
  2. package/bin/agent-executor.js +1 -1
  3. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  4. package/dist/agents/codemie-code/config.js +0 -1
  5. package/dist/agents/codemie-code/config.js.map +1 -1
  6. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  7. package/dist/agents/core/AgentCLI.js +4 -8
  8. package/dist/agents/core/AgentCLI.js.map +1 -1
  9. package/dist/agents/core/BaseAgentAdapter.d.ts +17 -9
  10. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  11. package/dist/agents/core/BaseAgentAdapter.js +75 -67
  12. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  13. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +258 -0
  14. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -0
  15. package/dist/agents/core/extension/BaseExtensionInstaller.js +522 -0
  16. package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -0
  17. package/dist/agents/core/lifecycle-helpers.d.ts.map +1 -1
  18. package/dist/agents/core/lifecycle-helpers.js +16 -2
  19. package/dist/agents/core/lifecycle-helpers.js.map +1 -1
  20. package/dist/agents/core/metrics/index.d.ts +0 -2
  21. package/dist/agents/core/metrics/index.d.ts.map +1 -1
  22. package/dist/agents/core/metrics/index.js +0 -3
  23. package/dist/agents/core/metrics/index.js.map +1 -1
  24. package/dist/agents/core/metrics/types.d.ts +4 -232
  25. package/dist/agents/core/metrics/types.d.ts.map +1 -1
  26. package/dist/agents/core/metrics/types.js +2 -2
  27. package/dist/agents/core/session/BaseProcessor.d.ts +72 -0
  28. package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -0
  29. package/dist/agents/core/session/BaseProcessor.js +9 -0
  30. package/dist/agents/core/session/BaseProcessor.js.map +1 -0
  31. package/dist/agents/core/session/BaseSessionAdapter.d.ts +99 -0
  32. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -0
  33. package/dist/agents/core/session/BaseSessionAdapter.js +9 -0
  34. package/dist/agents/core/session/BaseSessionAdapter.js.map +1 -0
  35. package/dist/agents/core/session/SessionStore.d.ts +23 -0
  36. package/dist/agents/core/session/SessionStore.d.ts.map +1 -0
  37. package/dist/agents/core/session/SessionStore.js +75 -0
  38. package/dist/agents/core/session/SessionStore.js.map +1 -0
  39. package/dist/agents/core/session/session-config.d.ts +27 -0
  40. package/dist/agents/core/session/session-config.d.ts.map +1 -0
  41. package/dist/agents/core/session/session-config.js +61 -0
  42. package/dist/agents/core/session/session-config.js.map +1 -0
  43. package/dist/agents/core/session/types.d.ts +87 -0
  44. package/dist/agents/core/session/types.d.ts.map +1 -0
  45. package/dist/agents/core/session/types.js +8 -0
  46. package/dist/agents/core/session/types.js.map +1 -0
  47. package/dist/agents/core/session/utils/jsonl-reader.d.ts +15 -0
  48. package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -0
  49. package/dist/agents/core/session/utils/jsonl-reader.js +33 -0
  50. package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -0
  51. package/dist/agents/core/session/utils/jsonl-writer.d.ts +26 -0
  52. package/dist/agents/core/session/utils/jsonl-writer.d.ts.map +1 -0
  53. package/dist/agents/core/session/utils/jsonl-writer.js +56 -0
  54. package/dist/agents/core/session/utils/jsonl-writer.js.map +1 -0
  55. package/dist/agents/core/types.d.ts +78 -11
  56. package/dist/agents/core/types.d.ts.map +1 -1
  57. package/dist/agents/plugins/claude/claude-message-types.d.ts +74 -0
  58. package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -0
  59. package/dist/agents/plugins/claude/claude-message-types.js +8 -0
  60. package/dist/agents/plugins/claude/claude-message-types.js.map +1 -0
  61. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +53 -0
  62. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -0
  63. package/dist/agents/plugins/claude/claude.plugin-installer.js +63 -0
  64. package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -0
  65. package/dist/agents/plugins/claude/claude.plugin.d.ts +26 -0
  66. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -0
  67. package/dist/agents/plugins/{claude.plugin.js → claude/claude.plugin.js} +20 -11
  68. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -0
  69. package/dist/agents/plugins/claude/claude.session.d.ts +60 -0
  70. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -0
  71. package/dist/agents/plugins/claude/claude.session.js +339 -0
  72. package/dist/agents/plugins/claude/claude.session.js.map +1 -0
  73. package/dist/agents/plugins/claude/plugin/.claude-plugin/local-install.json +15 -0
  74. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +9 -0
  75. package/dist/agents/plugins/claude/plugin/README.md +299 -0
  76. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +539 -0
  77. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +511 -0
  78. package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +205 -0
  79. package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +74 -0
  80. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +207 -0
  81. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +143 -0
  82. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +127 -0
  83. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +168 -0
  84. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +210 -0
  85. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +160 -0
  86. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +170 -0
  87. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +150 -0
  88. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +177 -0
  89. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +143 -0
  90. package/dist/agents/plugins/claude/plugin/commands/README.md +0 -0
  91. package/dist/agents/plugins/claude/plugin/commands/codemie-catchup.md +10 -0
  92. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +731 -0
  93. package/dist/agents/plugins/claude/plugin/commands/memory-add.md +44 -0
  94. package/dist/agents/plugins/claude/plugin/commands/memory-init.md +18 -0
  95. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +54 -0
  96. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +71 -0
  97. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +51 -0
  98. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -0
  99. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +840 -0
  100. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -0
  101. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +37 -0
  102. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -0
  103. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +275 -0
  104. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -0
  105. package/dist/agents/plugins/gemini/extension/README.md +88 -0
  106. package/dist/agents/plugins/gemini/extension/gemini-extension.json +11 -0
  107. package/dist/agents/plugins/gemini/extension/hooks/hooks.json +65 -0
  108. package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts +49 -0
  109. package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts.map +1 -0
  110. package/dist/agents/plugins/gemini/gemini.extension-installer.js +63 -0
  111. package/dist/agents/plugins/gemini/gemini.extension-installer.js.map +1 -0
  112. package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts +43 -0
  113. package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts.map +1 -0
  114. package/dist/agents/plugins/gemini/gemini.hook-transformer.js +57 -0
  115. package/dist/agents/plugins/gemini/gemini.hook-transformer.js.map +1 -0
  116. package/dist/agents/plugins/gemini/gemini.plugin.d.ts +32 -0
  117. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -0
  118. package/dist/agents/plugins/gemini/gemini.plugin.js +136 -0
  119. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -0
  120. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +68 -0
  121. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -0
  122. package/dist/agents/plugins/gemini/gemini.session-adapter.js +268 -0
  123. package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -0
  124. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts +36 -0
  125. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -0
  126. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +186 -0
  127. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -0
  128. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts +32 -0
  129. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -0
  130. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +193 -0
  131. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -0
  132. package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts +26 -0
  133. package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts.map +1 -0
  134. package/dist/agents/plugins/gemini/session/utils/token-aggregator.js +38 -0
  135. package/dist/agents/plugins/gemini/session/utils/token-aggregator.js.map +1 -0
  136. package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts +33 -0
  137. package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts.map +1 -0
  138. package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js +58 -0
  139. package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js.map +1 -0
  140. package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts +70 -0
  141. package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts.map +1 -0
  142. package/dist/agents/plugins/gemini/session/utils/turn-detector.js +86 -0
  143. package/dist/agents/plugins/gemini/session/utils/turn-detector.js.map +1 -0
  144. package/dist/agents/registry.d.ts +7 -2
  145. package/dist/agents/registry.d.ts.map +1 -1
  146. package/dist/agents/registry.js +17 -8
  147. package/dist/agents/registry.js.map +1 -1
  148. package/dist/cli/commands/analytics/data-loader.d.ts +1 -1
  149. package/dist/cli/commands/analytics/data-loader.js +1 -1
  150. package/dist/cli/commands/analytics/index.js +1 -1
  151. package/dist/cli/commands/analytics/index.js.map +1 -1
  152. package/dist/cli/commands/doctor/checks/PythonCheck.d.ts +13 -0
  153. package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
  154. package/dist/cli/commands/doctor/checks/PythonCheck.js +90 -31
  155. package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
  156. package/dist/cli/commands/hook.d.ts +7 -0
  157. package/dist/cli/commands/hook.d.ts.map +1 -0
  158. package/dist/cli/commands/hook.js +788 -0
  159. package/dist/cli/commands/hook.js.map +1 -0
  160. package/dist/cli/commands/setup.d.ts.map +1 -1
  161. package/dist/cli/commands/setup.js +3 -4
  162. package/dist/cli/commands/setup.js.map +1 -1
  163. package/dist/cli/commands/update.d.ts.map +1 -1
  164. package/dist/cli/commands/update.js +2 -1
  165. package/dist/cli/commands/update.js.map +1 -1
  166. package/dist/cli/first-time.d.ts +4 -0
  167. package/dist/cli/first-time.d.ts.map +1 -1
  168. package/dist/cli/first-time.js +26 -13
  169. package/dist/cli/first-time.js.map +1 -1
  170. package/dist/cli/index.js +2 -0
  171. package/dist/cli/index.js.map +1 -1
  172. package/dist/frameworks/core/types.d.ts +1 -1
  173. package/dist/frameworks/plugins/speckit.plugin.d.ts.map +1 -1
  174. package/dist/frameworks/plugins/speckit.plugin.js +1 -2
  175. package/dist/frameworks/plugins/speckit.plugin.js.map +1 -1
  176. package/dist/migrations/002-consolidate-sessions.migration.d.ts +50 -0
  177. package/dist/migrations/002-consolidate-sessions.migration.d.ts.map +1 -0
  178. package/dist/migrations/002-consolidate-sessions.migration.js +220 -0
  179. package/dist/migrations/002-consolidate-sessions.migration.js.map +1 -0
  180. package/dist/migrations/index.d.ts +1 -0
  181. package/dist/migrations/index.d.ts.map +1 -1
  182. package/dist/migrations/index.js +3 -2
  183. package/dist/migrations/index.js.map +1 -1
  184. package/dist/providers/core/types.d.ts +1 -1
  185. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
  186. package/dist/providers/plugins/ollama/ollama.template.js +2 -10
  187. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
  188. package/dist/providers/plugins/sso/index.d.ts +1 -1
  189. package/dist/providers/plugins/sso/index.d.ts.map +1 -1
  190. package/dist/providers/plugins/sso/index.js +1 -1
  191. package/dist/providers/plugins/sso/index.js.map +1 -1
  192. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +1 -1
  193. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  194. package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -3
  195. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  196. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts +40 -0
  197. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -0
  198. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +194 -0
  199. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -0
  200. package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts +1 -0
  201. package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -1
  202. package/dist/providers/plugins/sso/proxy/proxy-http-client.js +40 -6
  203. package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -1
  204. package/dist/providers/plugins/sso/session/BaseProcessor.d.ts +72 -0
  205. package/dist/providers/plugins/sso/session/BaseProcessor.d.ts.map +1 -0
  206. package/dist/providers/plugins/sso/session/BaseProcessor.js +9 -0
  207. package/dist/providers/plugins/sso/session/BaseProcessor.js.map +1 -0
  208. package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts +99 -0
  209. package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts.map +1 -0
  210. package/dist/providers/plugins/sso/session/BaseSessionAdapter.js +9 -0
  211. package/dist/providers/plugins/sso/session/BaseSessionAdapter.js.map +1 -0
  212. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +36 -0
  213. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -0
  214. package/dist/providers/plugins/sso/session/SessionSyncer.js +140 -0
  215. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -0
  216. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts +26 -0
  217. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts.map +1 -0
  218. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js +146 -0
  219. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js.map +1 -0
  220. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +23 -0
  221. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -0
  222. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +171 -0
  223. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -0
  224. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts +69 -0
  225. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts.map +1 -0
  226. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js +7 -0
  227. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js.map +1 -0
  228. package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts +30 -0
  229. package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts.map +1 -0
  230. package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js +79 -0
  231. package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js.map +1 -0
  232. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.d.ts → session/processors/metrics/metrics-aggregator.d.ts} +6 -5
  233. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -0
  234. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.js → session/processors/metrics/metrics-aggregator.js} +20 -12
  235. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -0
  236. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.d.ts → session/processors/metrics/metrics-api-client.d.ts} +18 -11
  237. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -0
  238. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.js → session/processors/metrics/metrics-api-client.js} +143 -15
  239. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -0
  240. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.d.ts → session/processors/metrics/metrics-post-processor.d.ts} +3 -3
  241. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -0
  242. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.js → session/processors/metrics/metrics-post-processor.js} +3 -3
  243. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -0
  244. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts +24 -0
  245. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -0
  246. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sync.plugin.js → session/processors/metrics/metrics-sync-processor.js} +94 -165
  247. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -0
  248. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.d.ts → session/processors/metrics/metrics-types.d.ts} +2 -1
  249. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -0
  250. package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.js → session/processors/metrics/metrics-types.js} +1 -1
  251. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.js.map +1 -0
  252. package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts +15 -0
  253. package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts.map +1 -0
  254. package/dist/providers/plugins/sso/session/utils/jsonl-reader.js +33 -0
  255. package/dist/providers/plugins/sso/session/utils/jsonl-reader.js.map +1 -0
  256. package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts +26 -0
  257. package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts.map +1 -0
  258. package/dist/providers/plugins/sso/{metrics/sync/sso.jsonl-writer.js → session/utils/jsonl-writer.js} +11 -27
  259. package/dist/providers/plugins/sso/session/utils/jsonl-writer.js.map +1 -0
  260. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  261. package/dist/providers/plugins/sso/sso.template.js +71 -44
  262. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  263. package/dist/utils/file-operations.d.ts +20 -0
  264. package/dist/utils/file-operations.d.ts.map +1 -0
  265. package/dist/utils/file-operations.js +48 -0
  266. package/dist/utils/file-operations.js.map +1 -0
  267. package/dist/utils/logger.d.ts +2 -1
  268. package/dist/utils/logger.d.ts.map +1 -1
  269. package/dist/utils/logger.js +12 -4
  270. package/dist/utils/logger.js.map +1 -1
  271. package/dist/utils/paths.d.ts +20 -5
  272. package/dist/utils/paths.d.ts.map +1 -1
  273. package/dist/utils/paths.js +23 -5
  274. package/dist/utils/paths.js.map +1 -1
  275. package/dist/utils/processes.d.ts +2 -0
  276. package/dist/utils/processes.d.ts.map +1 -1
  277. package/dist/utils/processes.js +6 -1
  278. package/dist/utils/processes.js.map +1 -1
  279. package/package.json +9 -9
  280. package/scripts/copy-plugins.js +57 -0
  281. package/scripts/license-check.js +23 -0
  282. package/bin/codemie-codex.js +0 -18
  283. package/bin/codemie-deepagents.js +0 -18
  284. package/dist/agents/core/BaseMetricsAdapter.d.ts +0 -165
  285. package/dist/agents/core/BaseMetricsAdapter.d.ts.map +0 -1
  286. package/dist/agents/core/BaseMetricsAdapter.js +0 -308
  287. package/dist/agents/core/BaseMetricsAdapter.js.map +0 -1
  288. package/dist/agents/core/metrics/MetricsOrchestrator.d.ts +0 -81
  289. package/dist/agents/core/metrics/MetricsOrchestrator.d.ts.map +0 -1
  290. package/dist/agents/core/metrics/MetricsOrchestrator.js +0 -417
  291. package/dist/agents/core/metrics/MetricsOrchestrator.js.map +0 -1
  292. package/dist/agents/core/metrics/core/DeltaWriter.d.ts +0 -49
  293. package/dist/agents/core/metrics/core/DeltaWriter.d.ts.map +0 -1
  294. package/dist/agents/core/metrics/core/DeltaWriter.js +0 -152
  295. package/dist/agents/core/metrics/core/DeltaWriter.js.map +0 -1
  296. package/dist/agents/core/metrics/core/FileSnapshotter.d.ts +0 -22
  297. package/dist/agents/core/metrics/core/FileSnapshotter.d.ts.map +0 -1
  298. package/dist/agents/core/metrics/core/FileSnapshotter.js +0 -74
  299. package/dist/agents/core/metrics/core/FileSnapshotter.js.map +0 -1
  300. package/dist/agents/core/metrics/core/SessionCorrelator.d.ts +0 -34
  301. package/dist/agents/core/metrics/core/SessionCorrelator.d.ts.map +0 -1
  302. package/dist/agents/core/metrics/core/SessionCorrelator.js +0 -157
  303. package/dist/agents/core/metrics/core/SessionCorrelator.js.map +0 -1
  304. package/dist/agents/core/metrics/core/SyncStateManager.d.ts +0 -69
  305. package/dist/agents/core/metrics/core/SyncStateManager.d.ts.map +0 -1
  306. package/dist/agents/core/metrics/core/SyncStateManager.js +0 -283
  307. package/dist/agents/core/metrics/core/SyncStateManager.js.map +0 -1
  308. package/dist/agents/core/metrics/session/SessionStore.d.ts +0 -43
  309. package/dist/agents/core/metrics/session/SessionStore.d.ts.map +0 -1
  310. package/dist/agents/core/metrics/session/SessionStore.js +0 -146
  311. package/dist/agents/core/metrics/session/SessionStore.js.map +0 -1
  312. package/dist/agents/core/metrics-config.d.ts +0 -38
  313. package/dist/agents/core/metrics-config.d.ts.map +0 -1
  314. package/dist/agents/core/metrics-config.js +0 -96
  315. package/dist/agents/core/metrics-config.js.map +0 -1
  316. package/dist/agents/plugins/claude.metrics.d.ts +0 -102
  317. package/dist/agents/plugins/claude.metrics.d.ts.map +0 -1
  318. package/dist/agents/plugins/claude.metrics.js +0 -656
  319. package/dist/agents/plugins/claude.metrics.js.map +0 -1
  320. package/dist/agents/plugins/claude.plugin.d.ts +0 -19
  321. package/dist/agents/plugins/claude.plugin.d.ts.map +0 -1
  322. package/dist/agents/plugins/claude.plugin.js.map +0 -1
  323. package/dist/agents/plugins/codex.metrics.d.ts +0 -69
  324. package/dist/agents/plugins/codex.metrics.d.ts.map +0 -1
  325. package/dist/agents/plugins/codex.metrics.js +0 -483
  326. package/dist/agents/plugins/codex.metrics.js.map +0 -1
  327. package/dist/agents/plugins/codex.plugin.d.ts +0 -21
  328. package/dist/agents/plugins/codex.plugin.d.ts.map +0 -1
  329. package/dist/agents/plugins/codex.plugin.js +0 -222
  330. package/dist/agents/plugins/codex.plugin.js.map +0 -1
  331. package/dist/agents/plugins/deepagents.plugin.d.ts +0 -21
  332. package/dist/agents/plugins/deepagents.plugin.d.ts.map +0 -1
  333. package/dist/agents/plugins/deepagents.plugin.js +0 -104
  334. package/dist/agents/plugins/deepagents.plugin.js.map +0 -1
  335. package/dist/agents/plugins/gemini.metrics.d.ts +0 -99
  336. package/dist/agents/plugins/gemini.metrics.d.ts.map +0 -1
  337. package/dist/agents/plugins/gemini.metrics.js +0 -475
  338. package/dist/agents/plugins/gemini.metrics.js.map +0 -1
  339. package/dist/agents/plugins/gemini.plugin.d.ts +0 -16
  340. package/dist/agents/plugins/gemini.plugin.d.ts.map +0 -1
  341. package/dist/agents/plugins/gemini.plugin.js +0 -80
  342. package/dist/agents/plugins/gemini.plugin.js.map +0 -1
  343. package/dist/agents/plugins/history-parser.d.ts +0 -52
  344. package/dist/agents/plugins/history-parser.d.ts.map +0 -1
  345. package/dist/agents/plugins/history-parser.js +0 -155
  346. package/dist/agents/plugins/history-parser.js.map +0 -1
  347. package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts +0 -28
  348. package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts.map +0 -1
  349. package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.js.map +0 -1
  350. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts +0 -62
  351. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts.map +0 -1
  352. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js +0 -157
  353. package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js.map +0 -1
  354. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts.map +0 -1
  355. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js.map +0 -1
  356. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts +0 -32
  357. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts.map +0 -1
  358. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js +0 -159
  359. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js.map +0 -1
  360. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts.map +0 -1
  361. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js.map +0 -1
  362. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts.map +0 -1
  363. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js.map +0 -1
  364. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts +0 -36
  365. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts.map +0 -1
  366. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js.map +0 -1
  367. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts.map +0 -1
  368. package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.js.map +0 -1
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Conversation API Client
3
+ *
4
+ * Sends conversation history to Codemie API
5
+ * Uses SSO cookie authentication
6
+ * Supports retry with exponential backoff
7
+ */
8
+ import { logger } from '../../../../../../utils/logger.js';
9
+ export class ConversationApiClient {
10
+ config;
11
+ constructor(config) {
12
+ this.config = {
13
+ baseUrl: config.baseUrl,
14
+ cookies: config.cookies || '',
15
+ apiKey: config.apiKey || '',
16
+ timeout: config.timeout || 30000,
17
+ retryAttempts: config.retryAttempts || 3,
18
+ version: config.version || '0.0.0',
19
+ clientType: config.clientType || 'codemie-cli',
20
+ dryRun: config.dryRun || false
21
+ };
22
+ }
23
+ /**
24
+ * Upsert conversation history via API
25
+ * PUT /v1/conversations/{conversation_id}/history
26
+ */
27
+ async upsertConversation(conversationId, history, assistantId = 'claude-code-import', folder = 'Claude Imports') {
28
+ const url = `${this.config.baseUrl}/v1/conversations/${conversationId}/history`;
29
+ const payload = {
30
+ assistant_id: assistantId,
31
+ folder,
32
+ history
33
+ };
34
+ // Dry-run mode: Log payload and return success
35
+ if (this.config.dryRun) {
36
+ logger.info('[ConversationApiClient] DRY-RUN: Would send conversation', {
37
+ url,
38
+ conversationId,
39
+ historyCount: history.length,
40
+ payload: JSON.stringify(payload, null, 2)
41
+ });
42
+ return {
43
+ success: true,
44
+ message: '[DRY-RUN] Conversation logged (not sent)',
45
+ conversation_id: conversationId,
46
+ new_messages: history.length,
47
+ total_messages: history.length,
48
+ created: true
49
+ };
50
+ }
51
+ // Actual API call with retry
52
+ let lastError = null;
53
+ for (let attempt = 0; attempt < this.config.retryAttempts; attempt++) {
54
+ try {
55
+ const controller = new AbortController();
56
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
57
+ const headers = {
58
+ 'Content-Type': 'application/json',
59
+ 'X-CodeMie-CLI': `${this.config.clientType}/${this.config.version}`,
60
+ 'X-CodeMie-Client': this.config.clientType
61
+ };
62
+ // Add authentication headers
63
+ if (this.config.apiKey) {
64
+ // Localhost development: user-id header only
65
+ headers['user-id'] = this.config.apiKey;
66
+ }
67
+ else if (this.config.cookies) {
68
+ // SSO: Cookie header
69
+ headers['Cookie'] = this.config.cookies;
70
+ }
71
+ const response = await fetch(url, {
72
+ method: 'PUT',
73
+ headers,
74
+ body: JSON.stringify(payload),
75
+ signal: controller.signal
76
+ });
77
+ clearTimeout(timeoutId);
78
+ if (!response.ok) {
79
+ const errorText = await response.text();
80
+ let errorData;
81
+ try {
82
+ errorData = JSON.parse(errorText);
83
+ }
84
+ catch {
85
+ errorData = { message: errorText };
86
+ }
87
+ // Check for non-retryable errors
88
+ if (response.status === 401 || response.status === 403 || response.status === 400) {
89
+ logger.error(`[ConversationApiClient] Non-retryable error (${response.status}):`, errorData);
90
+ return {
91
+ success: false,
92
+ message: `API error: ${response.status} ${errorData.message || response.statusText}`
93
+ };
94
+ }
95
+ // Retryable error - throw to retry
96
+ throw new Error(`API error: ${response.status} ${errorData.message || response.statusText}`);
97
+ }
98
+ // Success
99
+ const data = await response.json();
100
+ logger.debug('[ConversationApiClient] Conversation synced successfully', {
101
+ conversationId: data.conversation_id,
102
+ newMessages: data.new_messages,
103
+ totalMessages: data.total_messages,
104
+ created: data.created
105
+ });
106
+ return {
107
+ success: true,
108
+ message: 'Conversation synced successfully',
109
+ conversation_id: data.conversation_id,
110
+ new_messages: data.new_messages,
111
+ total_messages: data.total_messages,
112
+ created: data.created
113
+ };
114
+ }
115
+ catch (error) {
116
+ lastError = error;
117
+ // Log retry attempt
118
+ if (attempt < this.config.retryAttempts - 1) {
119
+ const delay = this.getRetryDelay(attempt);
120
+ logger.warn(`[ConversationApiClient] Sync failed (attempt ${attempt + 1}/${this.config.retryAttempts}), retrying in ${delay}ms:`, error.message);
121
+ await this.sleep(delay);
122
+ }
123
+ }
124
+ }
125
+ // All retries failed
126
+ logger.error(`[ConversationApiClient] Sync failed after ${this.config.retryAttempts} attempts:`, lastError);
127
+ return {
128
+ success: false,
129
+ message: `Sync failed: ${lastError?.message || 'Unknown error'}`
130
+ };
131
+ }
132
+ /**
133
+ * Get retry delay with exponential backoff
134
+ */
135
+ getRetryDelay(attempt) {
136
+ const delays = [1000, 2000, 5000]; // 1s, 2s, 5s
137
+ return delays[attempt] || delays[delays.length - 1];
138
+ }
139
+ /**
140
+ * Sleep utility
141
+ */
142
+ sleep(ms) {
143
+ return new Promise(resolve => setTimeout(resolve, ms));
144
+ }
145
+ }
146
+ //# sourceMappingURL=conversation-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-api-client.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/conversation-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Conversation Sync Processor (SSO Provider)
3
+ *
4
+ * Lightweight processor that syncs conversation payloads to CodeMie API.
5
+ *
6
+ * Responsibilities:
7
+ * - Read pending conversation payloads from JSONL (written by agent adapters)
8
+ * - Send payloads to CodeMie API
9
+ * - Mark payloads as 'success' or 'failed' atomically
10
+ *
11
+ * Note: Message transformation is handled by agent adapters (e.g., Claude's ConversationsProcessor)
12
+ */
13
+ import type { SessionProcessor, ProcessingContext, ProcessingResult } from '../../BaseProcessor.js';
14
+ import type { ParsedSession } from '../../BaseSessionAdapter.js';
15
+ export declare class ConversationSyncProcessor implements SessionProcessor {
16
+ readonly name = "conversation-sync";
17
+ readonly priority = 2;
18
+ private sessionStore;
19
+ private isSyncing;
20
+ shouldProcess(_session: ParsedSession): boolean;
21
+ process(session: ParsedSession, context: ProcessingContext): Promise<ProcessingResult>;
22
+ }
23
+ //# sourceMappingURL=conversation-sync-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-sync-processor.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AASjE,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,QAAQ,KAAK;IAEtB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAE1B,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO;IAKzC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAgL7F"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Conversation Sync Processor (SSO Provider)
3
+ *
4
+ * Lightweight processor that syncs conversation payloads to CodeMie API.
5
+ *
6
+ * Responsibilities:
7
+ * - Read pending conversation payloads from JSONL (written by agent adapters)
8
+ * - Send payloads to CodeMie API
9
+ * - Mark payloads as 'success' or 'failed' atomically
10
+ *
11
+ * Note: Message transformation is handled by agent adapters (e.g., Claude's ConversationsProcessor)
12
+ */
13
+ import { logger } from '../../../../../../utils/logger.js';
14
+ import { ConversationApiClient } from './conversation-api-client.js';
15
+ import { getSessionConversationPath } from '../../../../../../agents/core/session/session-config.js';
16
+ import { readJSONL } from '../../utils/jsonl-reader.js';
17
+ import { writeJSONLAtomic } from '../../utils/jsonl-writer.js';
18
+ import { SessionStore } from '../../../../../../agents/core/session/SessionStore.js';
19
+ export class ConversationSyncProcessor {
20
+ name = 'conversation-sync';
21
+ priority = 2; // Run after metrics (priority 1)
22
+ sessionStore = new SessionStore();
23
+ isSyncing = false; // Concurrency guard
24
+ shouldProcess(_session) {
25
+ // Always try to process - will check for pending payloads inside
26
+ return true;
27
+ }
28
+ async process(session, context) {
29
+ if (this.isSyncing) {
30
+ return { success: true, message: 'Sync in progress' };
31
+ }
32
+ this.isSyncing = true;
33
+ try {
34
+ // Read conversation payloads from JSONL
35
+ const conversationsFile = getSessionConversationPath(session.sessionId);
36
+ const allPayloads = await readJSONL(conversationsFile);
37
+ const pendingPayloads = allPayloads.filter(p => p.status === 'pending');
38
+ if (pendingPayloads.length === 0) {
39
+ logger.debug(`[${this.name}] No pending conversation payloads for session ${session.sessionId}`);
40
+ return { success: true, message: 'No pending payloads' };
41
+ }
42
+ logger.info(`[${this.name}] Syncing ${pendingPayloads.length} conversation payload${pendingPayloads.length !== 1 ? 's' : ''}`);
43
+ // Initialize API client
44
+ const apiClient = new ConversationApiClient({
45
+ baseUrl: context.apiBaseUrl,
46
+ cookies: context.cookies,
47
+ apiKey: context.apiKey,
48
+ timeout: 30000,
49
+ retryAttempts: 3,
50
+ version: context.version,
51
+ clientType: context.clientType,
52
+ dryRun: context.dryRun
53
+ });
54
+ // Send each pending payload to API
55
+ let successCount = 0;
56
+ let totalMessages = 0;
57
+ for (const pendingPayload of pendingPayloads) {
58
+ const { conversationId, history } = pendingPayload.payload;
59
+ logger.debug(`[${this.name}] Sending payload: conversationId=${conversationId}, ` +
60
+ `messages=${history.length}, isTurnContinuation=${pendingPayload.isTurnContinuation}`);
61
+ try {
62
+ // Send to API
63
+ const response = await apiClient.upsertConversation(conversationId, history, '5a430368-9e91-4564-be20-989803bf4da2', // Assistant ID
64
+ session.agentName // Agent display name (e.g., "Claude Code")
65
+ );
66
+ if (!response.success) {
67
+ logger.error(`[${this.name}] Failed to sync conversation ${conversationId}: ${response.message}`);
68
+ // Continue with other payloads even if one fails
69
+ continue;
70
+ }
71
+ logger.info(`[${this.name}] Successfully synced conversation ${conversationId} (${response.new_messages} new, ${response.total_messages} total)`);
72
+ successCount++;
73
+ totalMessages += history.length;
74
+ }
75
+ catch (error) {
76
+ logger.error(`[${this.name}] Error syncing conversation ${conversationId}:`, error.message);
77
+ // Continue with other payloads
78
+ }
79
+ }
80
+ // Mark payloads as synced in JSONL (atomic rewrite)
81
+ const syncedAt = Date.now();
82
+ const pendingTimestamps = new Set(pendingPayloads.map(p => p.timestamp));
83
+ const updatedPayloads = allPayloads.map((p) => pendingTimestamps.has(p.timestamp)
84
+ ? {
85
+ ...p,
86
+ status: 'success',
87
+ response: {
88
+ syncedCount: p.payload.history.length
89
+ }
90
+ }
91
+ : p);
92
+ await writeJSONLAtomic(conversationsFile, updatedPayloads);
93
+ // Update session metadata to reflect conversation sync state
94
+ try {
95
+ const currentSession = await this.sessionStore.loadSession(session.sessionId);
96
+ if (currentSession) {
97
+ // Ensure sync structure exists
98
+ currentSession.sync ??= {};
99
+ // Initialize conversations sync state if not present
100
+ currentSession.sync.conversations ??= {
101
+ lastSyncedHistoryIndex: -1,
102
+ totalMessagesSynced: 0,
103
+ totalSyncAttempts: 0
104
+ };
105
+ // Update sync state based on synced payloads
106
+ if (successCount > 0) {
107
+ // Find the highest history index from successfully synced payloads
108
+ let maxHistoryIndex = currentSession.sync.conversations.lastSyncedHistoryIndex ?? -1;
109
+ for (const payload of pendingPayloads) {
110
+ const historyIndices = payload.historyIndices || [];
111
+ if (historyIndices.length > 0) {
112
+ const payloadMaxIndex = Math.max(...historyIndices);
113
+ maxHistoryIndex = Math.max(maxHistoryIndex, payloadMaxIndex);
114
+ }
115
+ }
116
+ currentSession.sync.conversations.lastSyncedHistoryIndex = maxHistoryIndex;
117
+ // Update conversation ID (from first payload)
118
+ if (pendingPayloads.length > 0) {
119
+ currentSession.sync.conversations.conversationId = pendingPayloads[0].payload.conversationId;
120
+ }
121
+ // Update counters
122
+ currentSession.sync.conversations.totalMessagesSynced =
123
+ (currentSession.sync.conversations.totalMessagesSynced || 0) + totalMessages;
124
+ currentSession.sync.conversations.lastSyncAt = syncedAt;
125
+ }
126
+ // Update total sync attempts
127
+ currentSession.sync.conversations.totalSyncAttempts =
128
+ (currentSession.sync.conversations.totalSyncAttempts || 0) + 1;
129
+ await this.sessionStore.saveSession(currentSession);
130
+ logger.debug(`[${this.name}] Updated session metadata: ` +
131
+ `lastSyncedHistoryIndex=${currentSession.sync.conversations.lastSyncedHistoryIndex}, ` +
132
+ `totalMessagesSynced=${currentSession.sync.conversations.totalMessagesSynced}, ` +
133
+ `totalSyncAttempts=${currentSession.sync.conversations.totalSyncAttempts}`);
134
+ }
135
+ }
136
+ catch (error) {
137
+ // Non-critical - log but don't fail the sync
138
+ logger.warn(`[${this.name}] Failed to update session metadata:`, error);
139
+ }
140
+ logger.info(`[${this.name}] Successfully synced ${successCount}/${pendingPayloads.length} conversations (${totalMessages} messages)`);
141
+ // Debug: Log which payloads were marked as synced
142
+ logger.debug(`[${this.name}] Marked payloads as synced:`, {
143
+ syncedAt: new Date(syncedAt).toISOString(),
144
+ timestamps: Array.from(pendingTimestamps),
145
+ totalPayloadsInFile: updatedPayloads.length,
146
+ syncedCount: updatedPayloads.filter(p => p.status === 'success').length,
147
+ pendingCount: updatedPayloads.filter(p => p.status === 'pending').length
148
+ });
149
+ return {
150
+ success: true,
151
+ message: `Synced ${successCount}/${pendingPayloads.length} conversations`,
152
+ metadata: {
153
+ conversationId: session.sessionId,
154
+ messagesProcessed: totalMessages,
155
+ payloadsSynced: successCount
156
+ }
157
+ };
158
+ }
159
+ catch (error) {
160
+ logger.error(`[${this.name}] Processing failed:`, error);
161
+ return {
162
+ success: false,
163
+ message: error instanceof Error ? error.message : 'Unknown error'
164
+ };
165
+ }
166
+ finally {
167
+ this.isSyncing = false;
168
+ }
169
+ }
170
+ }
171
+ //# sourceMappingURL=conversation-sync-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-sync-processor.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Conversation Payload Types
3
+ *
4
+ * Type definitions for conversation payloads and API client.
5
+ */
6
+ /**
7
+ * Conversation payload record stored in JSONL
8
+ * Used for tracking conversation sync status
9
+ */
10
+ export interface ConversationPayloadRecord {
11
+ /** Timestamp when sync was attempted */
12
+ timestamp: number;
13
+ /** Whether this was a turn continuation */
14
+ isTurnContinuation: boolean;
15
+ /** History indices being synced */
16
+ historyIndices: number[];
17
+ /** Number of messages in payload */
18
+ messageCount: number;
19
+ /** Last processed message UUID from transformation (for sync state tracking) */
20
+ lastProcessedMessageUuid?: string;
21
+ /** The exact payload sent to API */
22
+ payload: {
23
+ conversationId: string;
24
+ history: any[];
25
+ };
26
+ /** Sync result status */
27
+ status: 'pending' | 'success' | 'failed';
28
+ /** Error message if failed */
29
+ error?: string;
30
+ /** Response metadata (if available) */
31
+ response?: {
32
+ statusCode?: number;
33
+ syncedCount?: number;
34
+ };
35
+ }
36
+ /**
37
+ * Configuration for ConversationApiClient
38
+ */
39
+ export interface ConversationApiConfig {
40
+ baseUrl: string;
41
+ cookies?: string;
42
+ apiKey?: string;
43
+ timeout?: number;
44
+ retryAttempts?: number;
45
+ version?: string;
46
+ clientType?: string;
47
+ dryRun?: boolean;
48
+ }
49
+ /**
50
+ * Response from conversation sync API
51
+ */
52
+ export interface ConversationSyncResponse {
53
+ success: boolean;
54
+ message: string;
55
+ conversation_id?: string;
56
+ new_messages?: number;
57
+ total_messages?: number;
58
+ created?: boolean;
59
+ }
60
+ /**
61
+ * CodeMie history entry format for API
62
+ */
63
+ export interface CodemieHistoryEntry {
64
+ role: 'user' | 'assistant';
65
+ content: string;
66
+ timestamp?: number;
67
+ [key: string]: any;
68
+ }
69
+ //# sourceMappingURL=conversation-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-types.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/conversation-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,kBAAkB,EAAE,OAAO,CAAC;IAE5B,mCAAmC;IACnC,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IAErB,gFAAgF;IAChF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,oCAAoC;IACpC,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC;KAChB,CAAC;IAEF,yBAAyB;IACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEzC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Conversation Payload Types
3
+ *
4
+ * Type definitions for conversation payloads and API client.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=conversation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-types.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/conversation-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Metrics Writer
3
+ *
4
+ * Handles incremental metrics storage in JSONL format.
5
+ * Stores metrics in: ~/.codemie/sessions/{sessionId}_metrics.jsonl
6
+ * Provides O(1) append operations and efficient filtering by sync status.
7
+ */
8
+ import type { MetricDelta } from '../../../../../../agents/core/metrics/types.js';
9
+ export declare class MetricsWriter {
10
+ private readonly filePath;
11
+ constructor(sessionId: string);
12
+ /**
13
+ * Append new delta to JSONL file (O(1) operation)
14
+ * Returns the recordId from the delta
15
+ */
16
+ appendDelta(delta: Omit<MetricDelta, 'syncStatus' | 'syncAttempts'>): Promise<string>;
17
+ /**
18
+ * Read all deltas from JSONL file
19
+ */
20
+ readAll(): Promise<MetricDelta[]>;
21
+ /**
22
+ * Get file path
23
+ */
24
+ getFilePath(): string;
25
+ /**
26
+ * Check if file exists
27
+ */
28
+ exists(): boolean;
29
+ }
30
+ //# sourceMappingURL=MetricsWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsWriter.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/metrics/MetricsWriter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AAKlF,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,SAAS,EAAE,MAAM;IAI7B;;;OAGG;IACG,WAAW,CACf,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,cAAc,CAAC,GACtD,OAAO,CAAC,MAAM,CAAC;IA6BlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAiBrC;;KAEC;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,MAAM,IAAI,OAAO;CAGlB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Metrics Writer
3
+ *
4
+ * Handles incremental metrics storage in JSONL format.
5
+ * Stores metrics in: ~/.codemie/sessions/{sessionId}_metrics.jsonl
6
+ * Provides O(1) append operations and efficient filtering by sync status.
7
+ */
8
+ import { appendFile, readFile, mkdir } from 'fs/promises';
9
+ import { existsSync } from 'fs';
10
+ import { dirname } from 'path';
11
+ import { logger } from '../../../../../../utils/logger.js';
12
+ import { getSessionMetricsPath } from '../../../../../../agents/core/session/session-config.js';
13
+ import { createErrorContext, formatErrorForLog } from '../../../../../../utils/errors.js';
14
+ export class MetricsWriter {
15
+ filePath;
16
+ constructor(sessionId) {
17
+ this.filePath = getSessionMetricsPath(sessionId);
18
+ }
19
+ /**
20
+ * Append new delta to JSONL file (O(1) operation)
21
+ * Returns the recordId from the delta
22
+ */
23
+ async appendDelta(delta) {
24
+ try {
25
+ // Ensure directory exists
26
+ const dir = dirname(this.filePath);
27
+ if (!existsSync(dir)) {
28
+ await mkdir(dir, { recursive: true });
29
+ }
30
+ // Create full delta record (recordId already set from message UUID)
31
+ const fullDelta = {
32
+ ...delta,
33
+ syncStatus: 'pending',
34
+ syncAttempts: 0
35
+ };
36
+ // Append to JSONL
37
+ const line = JSON.stringify(fullDelta) + '\n';
38
+ await appendFile(this.filePath, line, 'utf-8');
39
+ logger.debug(`[MetricsWriter] Appended delta: ${delta.recordId}`);
40
+ return delta.recordId;
41
+ }
42
+ catch (error) {
43
+ const errorContext = createErrorContext(error);
44
+ logger.error('[MetricsWriter] Failed to append delta', formatErrorForLog(errorContext));
45
+ throw error;
46
+ }
47
+ }
48
+ /**
49
+ * Read all deltas from JSONL file
50
+ */
51
+ async readAll() {
52
+ try {
53
+ if (!existsSync(this.filePath)) {
54
+ return [];
55
+ }
56
+ const content = await readFile(this.filePath, 'utf-8');
57
+ const lines = content.trim().split('\n').filter(line => line.length > 0);
58
+ return lines.map(line => JSON.parse(line));
59
+ }
60
+ catch (error) {
61
+ const errorContext = createErrorContext(error);
62
+ logger.error('[MetricsWriter] Failed to read deltas', formatErrorForLog(errorContext));
63
+ throw error;
64
+ }
65
+ }
66
+ /**
67
+ * Get file path
68
+ */
69
+ getFilePath() {
70
+ return this.filePath;
71
+ }
72
+ /**
73
+ * Check if file exists
74
+ */
75
+ exists() {
76
+ return existsSync(this.filePath);
77
+ }
78
+ }
79
+ //# sourceMappingURL=MetricsWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsWriter.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/metrics/MetricsWriter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,MAAM,OAAO,aAAa;IACP,QAAQ,CAAS;IAElC,YAAY,SAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,KAAuD;QAEvD,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,oEAAoE;YACpE,MAAM,SAAS,GAAgB;gBAC7B,GAAG,KAAK;gBACR,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,CAAC;aAChB,CAAC;YAEF,kBAAkB;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAC9C,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAE/C,MAAM,CAAC,KAAK,CAAC,mCAAmC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,QAAQ,CAAC;QAExB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YACxF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEzE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC,CAAC;QAE5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YACvF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACC;;KAEC;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -4,9 +4,10 @@
4
4
  * Aggregates metric deltas into a single session metric.
5
5
  * Reuses patterns from analytics system.
6
6
  */
7
- import type { MetricDelta, MetricsSession } from '../../../../../agents/core/metrics/types.js';
8
- import type { SessionMetric } from './sso.metrics-types.js';
9
- import type { AgentMetricsConfig } from '../../../../../agents/core/types.js';
7
+ import type { MetricDelta } from '../../../../../../agents/core/metrics/types.js';
8
+ import type { Session } from '../../../../../../agents/core/session/types.js';
9
+ import type { SessionMetric } from './metrics-types.js';
10
+ import type { AgentMetricsConfig } from '../../../../../../agents/core/types.js';
10
11
  /**
11
12
  * Aggregate pending deltas into session metrics grouped by branch
12
13
  * Returns one metric per branch to prevent mixing metrics between branches
@@ -16,5 +17,5 @@ import type { AgentMetricsConfig } from '../../../../../agents/core/types.js';
16
17
  * @param version - CLI version
17
18
  * @param agentConfig - Optional agent-specific metrics configuration (for post-processing)
18
19
  */
19
- export declare function aggregateDeltas(deltas: MetricDelta[], session: MetricsSession, version: string, agentConfig?: AgentMetricsConfig): SessionMetric[];
20
- //# sourceMappingURL=sso.metrics-aggregator.d.ts.map
20
+ export declare function aggregateDeltas(deltas: MetricDelta[], session: Session, version: string, agentConfig?: AgentMetricsConfig): SessionMetric[];
21
+ //# sourceMappingURL=metrics-aggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-aggregator.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/metrics/metrics-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,KAAK,EAAoB,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wCAAwC,CAAC;AAK/E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,EAAE,CAuCjB"}