@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,220 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { MigrationRegistry } from './registry.js';
4
+ import { logger } from '../utils/logger.js';
5
+ import { getCodemieHome } from '../utils/paths.js';
6
+ /**
7
+ * Migration 002: Consolidate session storage
8
+ *
9
+ * Migrates session files from old structure to new consolidated structure:
10
+ * - OLD: ~/.codemie/sessions/*.json + *.jsonl
11
+ * - OLD: ~/.codemie/conversations/sessions/*.jsonl
12
+ * - NEW: ~/.codemie/sessions/*.json + *.jsonl (all files)
13
+ */
14
+ class ConsolidateSessionsMigration {
15
+ id = '002-consolidate-sessions';
16
+ description = 'Consolidate session storage under ~/.codemie/sessions/';
17
+ minVersion = '0.0.28';
18
+ CODEMIE_HOME = getCodemieHome();
19
+ OLD_METRICS_DIR = path.join(this.CODEMIE_HOME, 'metrics', 'sessions');
20
+ OLD_CONVERSATIONS_DIR = path.join(this.CODEMIE_HOME, 'conversations', 'sessions');
21
+ NEW_SESSIONS_DIR = path.join(this.CODEMIE_HOME, 'sessions');
22
+ async up() {
23
+ logger.info('[002-consolidate-sessions] consolidate: phase=start');
24
+ let metricsCount = 0;
25
+ let conversationsCount = 0;
26
+ // Migrate metrics sessions
27
+ const metricsResult = await this.migrateDirectory(this.OLD_METRICS_DIR, 'metrics');
28
+ metricsCount = metricsResult.count;
29
+ // Migrate conversation sessions
30
+ const conversationsResult = await this.migrateDirectory(this.OLD_CONVERSATIONS_DIR, 'conversations');
31
+ conversationsCount = conversationsResult.count;
32
+ const totalMigrated = metricsCount + conversationsCount;
33
+ // Clean up empty directories
34
+ if (totalMigrated > 0) {
35
+ await this.cleanupEmptyDirectories();
36
+ }
37
+ if (totalMigrated > 0) {
38
+ logger.info(`[002-consolidate-sessions] consolidate: phase=complete migrated=${totalMigrated} metrics=${metricsCount} conversations=${conversationsCount}`);
39
+ return {
40
+ success: true,
41
+ migrated: true,
42
+ details: {
43
+ metrics: metricsCount,
44
+ conversations: conversationsCount,
45
+ total: totalMigrated
46
+ }
47
+ };
48
+ }
49
+ logger.debug('[002-consolidate-sessions] consolidate: phase=complete reason=no_files');
50
+ return {
51
+ success: true,
52
+ migrated: false,
53
+ reason: 'no-old-sessions'
54
+ };
55
+ }
56
+ /**
57
+ * Migrate all files from source directory to new sessions directory
58
+ */
59
+ async migrateDirectory(sourceDir, type) {
60
+ logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} source=${sourceDir}`);
61
+ // Check if source directory exists
62
+ if (!await this.directoryExists(sourceDir)) {
63
+ logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} status=skip reason=not_found`);
64
+ return { count: 0 };
65
+ }
66
+ // Ensure destination directory exists
67
+ await fs.mkdir(this.NEW_SESSIONS_DIR, { recursive: true });
68
+ // List all files in source directory
69
+ const files = await fs.readdir(sourceDir);
70
+ logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} files_found=${files.length}`);
71
+ let migratedCount = 0;
72
+ for (const file of files) {
73
+ // Skip non-session files
74
+ if (!this.isSessionFile(file)) {
75
+ logger.debug(`[002-consolidate-sessions] skip: type=${type} file=${file} reason=not_session_file`);
76
+ continue;
77
+ }
78
+ const sourcePath = path.join(sourceDir, file);
79
+ const destPath = path.join(this.NEW_SESSIONS_DIR, file);
80
+ // Check if destination file already exists
81
+ if (await this.fileExists(destPath)) {
82
+ // File already exists in new location - check if we should merge or skip
83
+ const shouldMigrate = await this.shouldMigrateFile(sourcePath, destPath);
84
+ if (!shouldMigrate) {
85
+ logger.debug(`[002-consolidate-sessions] skip: type=${type} file=${file} reason=already_exists`);
86
+ continue;
87
+ }
88
+ }
89
+ // Move file to new location
90
+ try {
91
+ await fs.rename(sourcePath, destPath);
92
+ logger.debug(`[002-consolidate-sessions] move: type=${type} file=${file} status=success`);
93
+ migratedCount++;
94
+ }
95
+ catch (error) {
96
+ logger.error(`[002-consolidate-sessions] move: type=${type} file=${file} status=error`, error);
97
+ }
98
+ }
99
+ logger.info(`[002-consolidate-sessions] migrate_dir: type=${type} status=complete migrated=${migratedCount}`);
100
+ return { count: migratedCount };
101
+ }
102
+ /**
103
+ * Clean up empty directories after migration
104
+ */
105
+ async cleanupEmptyDirectories() {
106
+ logger.debug('[002-consolidate-sessions] cleanup: phase=start');
107
+ // Try to remove old directories if they're empty
108
+ for (const dir of [this.OLD_METRICS_DIR, this.OLD_CONVERSATIONS_DIR]) {
109
+ try {
110
+ const isEmpty = await this.isDirectoryEmpty(dir);
111
+ if (isEmpty) {
112
+ await fs.rmdir(dir);
113
+ logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${dir}`);
114
+ }
115
+ else {
116
+ logger.debug(`[002-consolidate-sessions] cleanup: skipped_dir=${dir} reason=not_empty`);
117
+ }
118
+ }
119
+ catch {
120
+ // Ignore errors - directory might not exist or have permissions issues
121
+ logger.debug(`[002-consolidate-sessions] cleanup: skipped_dir=${dir} reason=error`);
122
+ }
123
+ }
124
+ // Try to remove parent directories if they're empty
125
+ try {
126
+ const metricsParent = path.dirname(this.OLD_METRICS_DIR);
127
+ const isEmpty = await this.isDirectoryEmpty(metricsParent);
128
+ if (isEmpty) {
129
+ await fs.rmdir(metricsParent);
130
+ logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${metricsParent}`);
131
+ }
132
+ }
133
+ catch {
134
+ // Ignore
135
+ }
136
+ try {
137
+ const conversationsParent = path.dirname(this.OLD_CONVERSATIONS_DIR);
138
+ const isEmpty = await this.isDirectoryEmpty(conversationsParent);
139
+ if (isEmpty) {
140
+ await fs.rmdir(conversationsParent);
141
+ logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${conversationsParent}`);
142
+ }
143
+ }
144
+ catch {
145
+ // Ignore
146
+ }
147
+ logger.debug('[002-consolidate-sessions] cleanup: phase=complete');
148
+ }
149
+ /**
150
+ * Check if directory is empty
151
+ */
152
+ async isDirectoryEmpty(dirPath) {
153
+ try {
154
+ const files = await fs.readdir(dirPath);
155
+ return files.length === 0;
156
+ }
157
+ catch {
158
+ return false;
159
+ }
160
+ }
161
+ /**
162
+ * Check if file is a session file (*.json or *.jsonl)
163
+ */
164
+ isSessionFile(filename) {
165
+ return filename.endsWith('.json') || filename.endsWith('.jsonl');
166
+ }
167
+ /**
168
+ * Determine if we should migrate a file when destination already exists
169
+ * Strategy: Compare file sizes - migrate if source is newer/larger
170
+ */
171
+ async shouldMigrateFile(sourcePath, destPath) {
172
+ try {
173
+ const [sourceStats, destStats] = await Promise.all([
174
+ fs.stat(sourcePath),
175
+ fs.stat(destPath)
176
+ ]);
177
+ // If source is newer and larger, migrate it
178
+ if (sourceStats.mtime > destStats.mtime && sourceStats.size > destStats.size) {
179
+ logger.debug(`[002-consolidate-sessions] compare: source_newer=true source_larger=true decision=migrate`);
180
+ return true;
181
+ }
182
+ // Otherwise, keep destination file
183
+ logger.debug(`[002-consolidate-sessions] compare: source_newer=${sourceStats.mtime > destStats.mtime} source_larger=${sourceStats.size > destStats.size} decision=skip`);
184
+ return false;
185
+ }
186
+ catch (error) {
187
+ logger.debug('[002-consolidate-sessions] compare: status=error decision=skip', error);
188
+ return false;
189
+ }
190
+ }
191
+ /**
192
+ * Check if directory exists
193
+ */
194
+ async directoryExists(dirPath) {
195
+ try {
196
+ const stats = await fs.stat(dirPath);
197
+ return stats.isDirectory();
198
+ }
199
+ catch {
200
+ return false;
201
+ }
202
+ }
203
+ /**
204
+ * Check if file exists
205
+ */
206
+ async fileExists(filePath) {
207
+ try {
208
+ await fs.access(filePath);
209
+ return true;
210
+ }
211
+ catch {
212
+ return false;
213
+ }
214
+ }
215
+ }
216
+ // Auto-register the migration
217
+ MigrationRegistry.register(new ConsolidateSessionsMigration());
218
+ // Export for testing
219
+ export { ConsolidateSessionsMigration };
220
+ //# sourceMappingURL=002-consolidate-sessions.migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"002-consolidate-sessions.migration.js","sourceRoot":"","sources":["../../src/migrations/002-consolidate-sessions.migration.ts"],"names":[],"mappings":"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"}
@@ -19,4 +19,5 @@ export { MigrationRegistry } from './registry.js';
19
19
  export { MigrationTracker } from './tracker.js';
20
20
  export type { Migration, MigrationResult, MigrationRecord, MigrationHistory } from './types.js';
21
21
  import './001-config-rename.migration.js';
22
+ import './002-consolidate-sessions.migration.js';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yCAAyC,CAAC"}
@@ -20,7 +20,8 @@ export { MigrationRegistry } from './registry.js';
20
20
  export { MigrationTracker } from './tracker.js';
21
21
  // Import all migrations (auto-registers them)
22
22
  import './001-config-rename.migration.js';
23
+ import './002-consolidate-sessions.migration.js';
23
24
  // Future migrations will be imported here:
24
- // import './002-add-analytics.migration.js';
25
- // import './003-restructure-profiles.migration.js';
25
+ // import './003-add-analytics.migration.js';
26
+ // import './004-restructure-profiles.migration.js';
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,8CAA8C;AAC9C,OAAO,kCAAkC,CAAC;AAE1C,2CAA2C;AAC3C,6CAA6C;AAC7C,oDAAoD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,8CAA8C;AAC9C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yCAAyC,CAAC;AAEjD,2CAA2C;AAC3C,6CAA6C;AAC7C,oDAAoD"}
@@ -70,7 +70,7 @@ export interface ProviderTemplate {
70
70
  exportEnvVars?: (config: CodeMieConfigOptions) => Record<string, string>;
71
71
  /**
72
72
  * Provider-specific hooks for agents
73
- * Key = agent name ('claude', 'codex', 'gemini')
73
+ * Key = agent name ('claude', 'gemini')
74
74
  * Value = lifecycle hooks for that agent
75
75
  *
76
76
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBA8DzB,CAAC"}
1
+ {"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBAsDzB,CAAC"}
@@ -25,15 +25,7 @@ export const OllamaTemplate = registerProvider({
25
25
  supportsModelInstallation: true,
26
26
  healthCheckEndpoint: '/api/version',
27
27
  // Agent lifecycle hooks
28
- agentHooks: {
29
- // Codex-specific hook: Ollama uses "chat" API (not "responses")
30
- 'codex': {
31
- beforeRun: async (env) => {
32
- env.CODEMIE_CODEX_WIRE_API = 'chat';
33
- return env;
34
- }
35
- }
36
- },
28
+ agentHooks: {},
37
29
  setupInstructions: `
38
30
  # Ollama Setup Instructions
39
31
 
@@ -52,7 +44,7 @@ Download from: https://ollama.com/download
52
44
 
53
45
  ## Recommended Coding Models (Tool Support Required)
54
46
 
55
- **Important**: Agents like Codex require models with function calling/tool support.
47
+ **Important**: Some agents require models with function calling/tool support.
56
48
 
57
49
  - **qwen2.5-coder**: Excellent for coding tasks with tool support (7B, ~5GB)
58
50
  - **qwen3-vl:235b-cloud**: Latest Qwen with vision and tool support (235B)
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,0BAA0B;KAC3B;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE;QACV,gEAAgE;QAChE,OAAO,EAAE;YACP,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACvB,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC;gBACpC,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF;IAED,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB;CACA,CAAC,CAAC"}
1
+ {"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,0BAA0B;KAC3B;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE,EAAE;IAEd,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB;CACA,CAAC,CAAC"}
@@ -9,7 +9,7 @@ export { CodeMieSSO } from './sso.auth.js';
9
9
  export { SSOModelProxy } from './sso.models.js';
10
10
  export { SSOHealthCheck } from './sso.health.js';
11
11
  export { SSOSetupSteps } from './sso.setup-steps.js';
12
- export { MetricsSender } from './metrics/sync/sso.metrics-sender.js';
12
+ export { MetricsSender } from './session/processors/metrics/metrics-api-client.js';
13
13
  export { CodeMieProxy } from './proxy/sso.proxy.js';
14
14
  export type { ProxyConfig } from './proxy/proxy-types.js';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
@@ -10,7 +10,7 @@ export { SSOModelProxy } from './sso.models.js';
10
10
  export { SSOHealthCheck } from './sso.health.js';
11
11
  export { SSOSetupSteps } from './sso.setup-steps.js';
12
12
  // SSO Capabilities (metrics transmission)
13
- export { MetricsSender } from './metrics/sync/sso.metrics-sender.js';
13
+ export { MetricsSender } from './session/processors/metrics/metrics-api-client.js';
14
14
  // SSO Proxy (HTTP proxy with plugins)
15
15
  export { CodeMieProxy } from './proxy/sso.proxy.js';
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAEnF,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -14,7 +14,7 @@ import { LoggingPlugin } from './logging.plugin.js';
14
14
  */
15
15
  export declare function registerCorePlugins(): void;
16
16
  export { EndpointBlockerPlugin, SSOAuthPlugin, HeaderInjectionPlugin, LoggingPlugin };
17
- export { SSOMetricsSyncPlugin } from '../../metrics/sync/sso.metrics-sync.plugin.js';
17
+ export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
18
18
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
19
19
  export * from './types.js';
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAMD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAMD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -9,7 +9,7 @@ import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
9
9
  import { SSOAuthPlugin } from './sso-auth.plugin.js';
10
10
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
11
11
  import { LoggingPlugin } from './logging.plugin.js';
12
- import { SSOMetricsSyncPlugin } from '../../metrics/sync/sso.metrics-sync.plugin.js';
12
+ import { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
13
13
  /**
14
14
  * Register core plugins
15
15
  * Called at app startup
@@ -21,13 +21,13 @@ export function registerCorePlugins() {
21
21
  registry.register(new SSOAuthPlugin());
22
22
  registry.register(new HeaderInjectionPlugin());
23
23
  registry.register(new LoggingPlugin()); // Always enabled - logs to log files at INFO level
24
- registry.register(new SSOMetricsSyncPlugin()); // SSO capability - gracefully skips if not in SSO mode
24
+ registry.register(new SSOSessionSyncPlugin()); // Priority 100 - syncs sessions via multiple processors
25
25
  }
26
26
  // Auto-register on import
27
27
  registerCorePlugins();
28
28
  // Re-export for convenience
29
29
  export { EndpointBlockerPlugin, SSOAuthPlugin, HeaderInjectionPlugin, LoggingPlugin };
30
- export { SSOMetricsSyncPlugin } from '../../metrics/sync/sso.metrics-sync.plugin.js';
30
+ export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
31
31
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
32
32
  export * from './types.js';
33
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,uDAAuD;AACxG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SSO Session Sync Plugin (Unified)
3
+ * Priority: 100 (replaces metrics and conversations sync plugins)
4
+ *
5
+ * Purpose: Unified orchestrator that syncs session data via multiple processors
6
+ * - Runs only in SSO mode (ai-run-sso provider)
7
+ * - Background timer (every 5 minutes)
8
+ * - Discovers session files once via adapter
9
+ * - Passes parsed sessions to all processors (metrics, conversations)
10
+ * - Tracks processed sessions in unified store
11
+ * - Final sync on proxy shutdown
12
+ *
13
+ * Architecture Benefits:
14
+ * - Zero duplication: Sessions read once, processed multiple times
15
+ * - Pluggable: Add processors without modifying plugin
16
+ * - Agent-agnostic: Supports Claude, Gemini via adapters
17
+ * - Reusable: Shared utilities for discovery and I/O
18
+ *
19
+ * SOLID: Single responsibility = orchestrate session sync across processors
20
+ * KISS: Simple timer-based sync with pluggable processors
21
+ */
22
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
23
+ export declare class SSOSessionSyncPlugin implements ProxyPlugin {
24
+ id: string;
25
+ name: string;
26
+ version: string;
27
+ priority: number;
28
+ createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
29
+ /**
30
+ * Check if session sync is enabled
31
+ * Priority: ENV > Profile config > Default (true)
32
+ */
33
+ private isSyncEnabled;
34
+ /**
35
+ * Check if dry-run mode is enabled
36
+ * Priority: ENV > Profile config > Default (false)
37
+ */
38
+ private isDryRunEnabled;
39
+ }
40
+ //# sourceMappingURL=sso.session-sync.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.session-sync.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1E,qBAAa,oBAAqB,YAAW,WAAW;IACtD,EAAE,SAA+B;IACjC,IAAI,SAAgC;IACpC,OAAO,SAAW;IAClB,QAAQ,SAAO;IAET,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1E;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAgBxB"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * SSO Session Sync Plugin (Unified)
3
+ * Priority: 100 (replaces metrics and conversations sync plugins)
4
+ *
5
+ * Purpose: Unified orchestrator that syncs session data via multiple processors
6
+ * - Runs only in SSO mode (ai-run-sso provider)
7
+ * - Background timer (every 5 minutes)
8
+ * - Discovers session files once via adapter
9
+ * - Passes parsed sessions to all processors (metrics, conversations)
10
+ * - Tracks processed sessions in unified store
11
+ * - Final sync on proxy shutdown
12
+ *
13
+ * Architecture Benefits:
14
+ * - Zero duplication: Sessions read once, processed multiple times
15
+ * - Pluggable: Add processors without modifying plugin
16
+ * - Agent-agnostic: Supports Claude, Gemini via adapters
17
+ * - Reusable: Shared utilities for discovery and I/O
18
+ *
19
+ * SOLID: Single responsibility = orchestrate session sync across processors
20
+ * KISS: Simple timer-based sync with pluggable processors
21
+ */
22
+ import { logger } from '../../../../../utils/logger.js';
23
+ import { SessionSyncer } from '../../session/SessionSyncer.js';
24
+ export class SSOSessionSyncPlugin {
25
+ id = '@codemie/sso-session-sync';
26
+ name = 'SSO Session Sync (Unified)';
27
+ version = '1.0.0';
28
+ priority = 100; // Run after logging (priority 50)
29
+ async createInterceptor(context) {
30
+ // Only create interceptor if we have necessary context
31
+ if (!context.config.sessionId) {
32
+ logger.debug('[SSOSessionSyncPlugin] Skipping: Session ID not available');
33
+ throw new Error('Session ID not available (session sync disabled)');
34
+ }
35
+ if (!context.credentials) {
36
+ logger.debug('[SSOSessionSyncPlugin] Skipping: SSO credentials not available');
37
+ throw new Error('SSO credentials not available (session sync disabled)');
38
+ }
39
+ if (!context.config.clientType) {
40
+ logger.debug('[SSOSessionSyncPlugin] Skipping: Client type not available');
41
+ throw new Error('Client type not available (session sync disabled)');
42
+ }
43
+ // Check if sync is enabled (from config or env var)
44
+ const syncEnabled = this.isSyncEnabled(context);
45
+ if (!syncEnabled) {
46
+ logger.debug('[SSOSessionSyncPlugin] Skipping: Session sync disabled by configuration');
47
+ throw new Error('Session sync disabled by configuration');
48
+ }
49
+ logger.debug('[SSOSessionSyncPlugin] Initializing unified session sync');
50
+ // Check if dry-run mode is enabled
51
+ const dryRun = this.isDryRunEnabled(context);
52
+ return new SSOSessionSyncInterceptor(context.config.sessionId, context.config.targetApiUrl, context.credentials.cookies, context.config.clientType, context.config.version, dryRun);
53
+ }
54
+ /**
55
+ * Check if session sync is enabled
56
+ * Priority: ENV > Profile config > Default (true)
57
+ */
58
+ isSyncEnabled(context) {
59
+ // Check environment variable first
60
+ const envEnabled = process.env.CODEMIE_SESSION_SYNC_ENABLED;
61
+ if (envEnabled !== undefined) {
62
+ return envEnabled === 'true' || envEnabled === '1';
63
+ }
64
+ // Check profile config (if available)
65
+ const profileConfig = context.profileConfig;
66
+ if (profileConfig?.session?.sync?.enabled !== undefined) {
67
+ return profileConfig.session.sync.enabled;
68
+ }
69
+ // Default to enabled for SSO mode
70
+ return true;
71
+ }
72
+ /**
73
+ * Check if dry-run mode is enabled
74
+ * Priority: ENV > Profile config > Default (false)
75
+ */
76
+ isDryRunEnabled(context) {
77
+ // Check environment variable first
78
+ const envDryRun = process.env.CODEMIE_SESSION_DRY_RUN;
79
+ if (envDryRun !== undefined) {
80
+ return envDryRun === 'true' || envDryRun === '1';
81
+ }
82
+ // Check profile config (if available)
83
+ const profileConfig = context.profileConfig;
84
+ if (profileConfig?.session?.sync?.dryRun !== undefined) {
85
+ return profileConfig.session.sync.dryRun;
86
+ }
87
+ // Default to disabled
88
+ return false;
89
+ }
90
+ }
91
+ class SSOSessionSyncInterceptor {
92
+ sessionId;
93
+ name = 'sso-session-sync';
94
+ syncTimer;
95
+ syncer;
96
+ context;
97
+ syncInterval;
98
+ isSyncing = false;
99
+ constructor(sessionId, baseUrl, cookies, clientType, version = '0.0.0', dryRun = false) {
100
+ this.sessionId = sessionId;
101
+ if (dryRun) {
102
+ logger.info('[sso-session-sync] Dry-run mode enabled - sessions will be logged but not sent');
103
+ }
104
+ // Check for localhost development override
105
+ const devApiUrl = process.env.CODEMIE_DEV_API_URL;
106
+ const devApiKey = process.env.CODEMIE_DEV_API_KEY;
107
+ // Use dev settings if both are provided
108
+ const isLocalDev = !!devApiUrl && !!devApiKey;
109
+ if (isLocalDev) {
110
+ logger.info(`[sso-session-sync] Local development mode: using ${devApiUrl} with user-id header`);
111
+ }
112
+ // Build cookie header (only if not in local dev mode)
113
+ const cookieHeader = isLocalDev ? '' : Object.entries(cookies)
114
+ .map(([key, value]) => `${key}=${value}`)
115
+ .join('; ');
116
+ // Create processing context (shared by SessionSyncer)
117
+ this.context = {
118
+ apiBaseUrl: isLocalDev ? devApiUrl : baseUrl,
119
+ cookies: cookieHeader,
120
+ apiKey: isLocalDev ? devApiKey : undefined,
121
+ clientType,
122
+ version,
123
+ dryRun
124
+ };
125
+ // Initialize SessionSyncer
126
+ this.syncer = new SessionSyncer();
127
+ // Get sync interval from env or default to 2 minutes
128
+ this.syncInterval = Number.parseInt(process.env.CODEMIE_SESSION_SYNC_INTERVAL || '120000', 10);
129
+ }
130
+ /**
131
+ * Called when proxy starts - initialize background timer
132
+ */
133
+ async onProxyStart() {
134
+ const intervalMinutes = Math.round(this.syncInterval / 60000);
135
+ logger.info(`[${this.name}] Session sync enabled - syncing every ${intervalMinutes} minute${intervalMinutes !== 1 ? 's' : ''}`);
136
+ // Start background timer
137
+ this.syncTimer = setInterval(() => {
138
+ this.syncSessions().catch(error => {
139
+ logger.error(`[${this.name}] Sync failed:`, error);
140
+ });
141
+ }, this.syncInterval);
142
+ logger.debug(`[${this.name}] Background timer started`);
143
+ }
144
+ /**
145
+ * Called when proxy stops - cleanup and final sync
146
+ */
147
+ async onProxyStop() {
148
+ logger.debug(`[${this.name}] Stopping session sync`);
149
+ // Stop timer
150
+ if (this.syncTimer) {
151
+ clearInterval(this.syncTimer);
152
+ this.syncTimer = undefined;
153
+ }
154
+ // Final sync (ensure all sessions are processed)
155
+ // This syncs BOTH metrics and conversations
156
+ try {
157
+ logger.info(`[${this.name}] sync: phase=final session_id=${this.sessionId}`);
158
+ await this.syncSessions();
159
+ logger.info(`[${this.name}] sync: phase=final status=success session_id=${this.sessionId}`);
160
+ }
161
+ catch (error) {
162
+ logger.error(`[${this.name}] sync: phase=final status=error session_id=${this.sessionId}`, error);
163
+ }
164
+ }
165
+ /**
166
+ * Sync sessions to API using SessionSyncer
167
+ */
168
+ async syncSessions() {
169
+ // Skip if already syncing (prevent concurrent syncs)
170
+ if (this.isSyncing) {
171
+ logger.debug(`[${this.name}] Sync already in progress, skipping`);
172
+ return;
173
+ }
174
+ this.isSyncing = true;
175
+ try {
176
+ logger.debug(`[${this.name}] Starting sync for session ${this.sessionId}`);
177
+ // Use SessionSyncer service
178
+ const result = await this.syncer.sync(this.sessionId, this.context);
179
+ if (result.success) {
180
+ logger.info(`[${this.name}] ${result.message}`);
181
+ }
182
+ else {
183
+ logger.warn(`[${this.name}] Sync had failures: ${result.message}`);
184
+ }
185
+ }
186
+ catch (error) {
187
+ logger.error(`[${this.name}] Sync failed:`, error);
188
+ }
189
+ finally {
190
+ this.isSyncing = false;
191
+ }
192
+ }
193
+ }
194
+ //# sourceMappingURL=sso.session-sync.plugin.js.map