@codemieai/code 0.1.0 → 0.2.0

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 (316) hide show
  1. package/README.md +13 -0
  2. package/bin/codebase-memory-ui-daemon.js +10 -0
  3. package/bin/codemie-codex.js +18 -0
  4. package/dist/agents/core/AgentCLI.d.ts +1 -0
  5. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  6. package/dist/agents/core/AgentCLI.js +29 -4
  7. package/dist/agents/core/AgentCLI.js.map +1 -1
  8. package/dist/agents/core/session/sync-state-utils.d.ts +11 -0
  9. package/dist/agents/core/session/sync-state-utils.d.ts.map +1 -0
  10. package/dist/agents/core/session/sync-state-utils.js +99 -0
  11. package/dist/agents/core/session/sync-state-utils.js.map +1 -0
  12. package/dist/agents/core/session/types.d.ts +8 -0
  13. package/dist/agents/core/session/types.d.ts.map +1 -1
  14. package/dist/agents/core/session/utils/jsonl-reader.d.ts +8 -0
  15. package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -1
  16. package/dist/agents/core/session/utils/jsonl-reader.js +37 -0
  17. package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -1
  18. package/dist/agents/plugins/claude/claude.plugin.js +1 -1
  19. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  20. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +0 -15
  21. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +2 -0
  23. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  24. package/dist/agents/plugins/codex/codex-message-types.d.ts +80 -0
  25. package/dist/agents/plugins/codex/codex-message-types.d.ts.map +1 -0
  26. package/dist/agents/plugins/codex/codex-message-types.js +36 -0
  27. package/dist/agents/plugins/codex/codex-message-types.js.map +1 -0
  28. package/dist/agents/plugins/codex/codex-models.d.ts +9 -0
  29. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -0
  30. package/dist/agents/plugins/codex/codex-models.js +227 -0
  31. package/dist/agents/plugins/codex/codex-models.js.map +1 -0
  32. package/dist/agents/plugins/codex/codex.incremental-sync.d.ts +39 -0
  33. package/dist/agents/plugins/codex/codex.incremental-sync.d.ts.map +1 -0
  34. package/dist/agents/plugins/codex/codex.incremental-sync.js +147 -0
  35. package/dist/agents/plugins/codex/codex.incremental-sync.js.map +1 -0
  36. package/dist/agents/plugins/codex/codex.paths.d.ts +29 -0
  37. package/dist/agents/plugins/codex/codex.paths.d.ts.map +1 -0
  38. package/dist/agents/plugins/codex/codex.paths.js +43 -0
  39. package/dist/agents/plugins/codex/codex.paths.js.map +1 -0
  40. package/dist/agents/plugins/codex/codex.plugin.d.ts +80 -0
  41. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -0
  42. package/dist/agents/plugins/codex/codex.plugin.js +474 -0
  43. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -0
  44. package/dist/agents/plugins/codex/codex.reconciliation.d.ts +43 -0
  45. package/dist/agents/plugins/codex/codex.reconciliation.d.ts.map +1 -0
  46. package/dist/agents/plugins/codex/codex.reconciliation.js +141 -0
  47. package/dist/agents/plugins/codex/codex.reconciliation.js.map +1 -0
  48. package/dist/agents/plugins/codex/codex.session.d.ts +58 -0
  49. package/dist/agents/plugins/codex/codex.session.d.ts.map +1 -0
  50. package/dist/agents/plugins/codex/codex.session.js +326 -0
  51. package/dist/agents/plugins/codex/codex.session.js.map +1 -0
  52. package/dist/agents/plugins/codex/codex.storage-utils.d.ts +15 -0
  53. package/dist/agents/plugins/codex/codex.storage-utils.d.ts.map +1 -0
  54. package/dist/agents/plugins/codex/codex.storage-utils.js +19 -0
  55. package/dist/agents/plugins/codex/codex.storage-utils.js.map +1 -0
  56. package/dist/agents/plugins/codex/index.d.ts +7 -0
  57. package/dist/agents/plugins/codex/index.d.ts.map +1 -0
  58. package/dist/agents/plugins/codex/index.js +9 -0
  59. package/dist/agents/plugins/codex/index.js.map +1 -0
  60. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts +24 -0
  61. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts.map +1 -0
  62. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js +613 -0
  63. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js.map +1 -0
  64. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts +21 -0
  65. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts.map +1 -0
  66. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js +124 -0
  67. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js.map +1 -0
  68. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
  69. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +1 -0
  70. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
  71. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -1
  72. package/dist/agents/plugins/opencode/opencode.storage-utils.js +2 -29
  73. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -1
  74. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -1
  75. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -1
  76. package/dist/agents/registry.d.ts.map +1 -1
  77. package/dist/agents/registry.js +2 -0
  78. package/dist/agents/registry.js.map +1 -1
  79. package/dist/bin/codebase-memory-ui-daemon.d.ts +2 -0
  80. package/dist/bin/codebase-memory-ui-daemon.d.ts.map +1 -0
  81. package/dist/bin/codebase-memory-ui-daemon.js +141 -0
  82. package/dist/bin/codebase-memory-ui-daemon.js.map +1 -0
  83. package/dist/bin/proxy-daemon.js +4 -0
  84. package/dist/bin/proxy-daemon.js.map +1 -1
  85. package/dist/cli/commands/assistants/constants.js +2 -2
  86. package/dist/cli/commands/assistants/constants.js.map +1 -1
  87. package/dist/cli/commands/assistants/setup/configuration/constants.js +4 -4
  88. package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -1
  89. package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -1
  90. package/dist/cli/commands/assistants/setup/configuration/ui.js +10 -13
  91. package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -1
  92. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts +4 -0
  93. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts.map +1 -0
  94. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js +76 -0
  95. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js.map +1 -0
  96. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts +4 -0
  97. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts.map +1 -0
  98. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js +68 -0
  99. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js.map +1 -0
  100. package/dist/cli/commands/assistants/setup/helpers.d.ts +3 -2
  101. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  102. package/dist/cli/commands/assistants/setup/helpers.js +43 -8
  103. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  104. package/dist/cli/commands/assistants/setup/index.d.ts +3 -1
  105. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  106. package/dist/cli/commands/assistants/setup/index.js +15 -12
  107. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  108. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +2 -2
  109. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +2 -2
  110. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -1
  111. package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
  112. package/dist/cli/commands/assistants/setup/selection/ui.js +8 -13
  113. package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
  114. package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -1
  115. package/dist/cli/commands/assistants/setup/summary/index.js +14 -8
  116. package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -1
  117. package/dist/cli/commands/codebase/daemon-manager.d.ts +24 -0
  118. package/dist/cli/commands/codebase/daemon-manager.d.ts.map +1 -0
  119. package/dist/cli/commands/codebase/daemon-manager.js +112 -0
  120. package/dist/cli/commands/codebase/daemon-manager.js.map +1 -0
  121. package/dist/cli/commands/codebase/index.d.ts +3 -0
  122. package/dist/cli/commands/codebase/index.d.ts.map +1 -0
  123. package/dist/cli/commands/codebase/index.js +130 -0
  124. package/dist/cli/commands/codebase/index.js.map +1 -0
  125. package/dist/cli/commands/hook.d.ts.map +1 -1
  126. package/dist/cli/commands/hook.js +15 -2
  127. package/dist/cli/commands/hook.js.map +1 -1
  128. package/dist/cli/commands/install.js +2 -2
  129. package/dist/cli/commands/install.js.map +1 -1
  130. package/dist/cli/commands/profile/index.d.ts +14 -0
  131. package/dist/cli/commands/profile/index.d.ts.map +1 -1
  132. package/dist/cli/commands/profile/index.js +110 -27
  133. package/dist/cli/commands/profile/index.js.map +1 -1
  134. package/dist/cli/commands/proxy/connectors/desktop-managed-mcp-servers.json +1 -1
  135. package/dist/cli/commands/proxy/connectors/desktop.d.ts +4 -6
  136. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  137. package/dist/cli/commands/proxy/connectors/desktop.js +92 -15
  138. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  139. package/dist/cli/commands/proxy/daemon-manager.d.ts +1 -0
  140. package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -1
  141. package/dist/cli/commands/proxy/daemon-manager.js +2 -0
  142. package/dist/cli/commands/proxy/daemon-manager.js.map +1 -1
  143. package/dist/cli/commands/proxy/index.d.ts.map +1 -1
  144. package/dist/cli/commands/proxy/index.js +42 -0
  145. package/dist/cli/commands/proxy/index.js.map +1 -1
  146. package/dist/cli/commands/setup.js +1 -1
  147. package/dist/cli/commands/setup.js.map +1 -1
  148. package/dist/cli/commands/shared/agent-targets.d.ts +10 -0
  149. package/dist/cli/commands/shared/agent-targets.d.ts.map +1 -0
  150. package/dist/cli/commands/shared/agent-targets.js +220 -0
  151. package/dist/cli/commands/shared/agent-targets.js.map +1 -0
  152. package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -1
  153. package/dist/cli/commands/shared/prompts/storage-scope.js +9 -2
  154. package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -1
  155. package/dist/cli/commands/shared/selection/ui.d.ts +22 -0
  156. package/dist/cli/commands/shared/selection/ui.d.ts.map +1 -1
  157. package/dist/cli/commands/shared/selection/ui.js +34 -0
  158. package/dist/cli/commands/shared/selection/ui.js.map +1 -1
  159. package/dist/cli/commands/skills/lib/skills-metrics.d.ts.map +1 -1
  160. package/dist/cli/commands/skills/lib/skills-metrics.js +47 -11
  161. package/dist/cli/commands/skills/lib/skills-metrics.js.map +1 -1
  162. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts +4 -0
  163. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts.map +1 -0
  164. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js +51 -0
  165. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js.map +1 -0
  166. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts +4 -0
  167. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts.map +1 -0
  168. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js +51 -0
  169. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js.map +1 -0
  170. package/dist/cli/commands/skills/setup/helpers.d.ts +3 -2
  171. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
  172. package/dist/cli/commands/skills/setup/helpers.js +31 -6
  173. package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
  174. package/dist/cli/commands/skills/setup/index.d.ts +2 -1
  175. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
  176. package/dist/cli/commands/skills/setup/index.js +14 -11
  177. package/dist/cli/commands/skills/setup/index.js.map +1 -1
  178. package/dist/cli/commands/skills/setup/selection/ui.d.ts.map +1 -1
  179. package/dist/cli/commands/skills/setup/selection/ui.js +8 -13
  180. package/dist/cli/commands/skills/setup/selection/ui.js.map +1 -1
  181. package/dist/cli/commands/test-metrics.js +3 -4
  182. package/dist/cli/commands/test-metrics.js.map +1 -1
  183. package/dist/cli/index.js +3 -0
  184. package/dist/cli/index.js.map +1 -1
  185. package/dist/env/types.d.ts +2 -0
  186. package/dist/env/types.d.ts.map +1 -1
  187. package/dist/env/types.js.map +1 -1
  188. package/dist/frameworks/plugins/bmad.plugin.d.ts +10 -1
  189. package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -1
  190. package/dist/frameworks/plugins/bmad.plugin.js +108 -9
  191. package/dist/frameworks/plugins/bmad.plugin.js.map +1 -1
  192. package/dist/frameworks/plugins/codebase-memory.plugin.d.ts +18 -0
  193. package/dist/frameworks/plugins/codebase-memory.plugin.d.ts.map +1 -0
  194. package/dist/frameworks/plugins/codebase-memory.plugin.js +131 -0
  195. package/dist/frameworks/plugins/codebase-memory.plugin.js.map +1 -0
  196. package/dist/frameworks/plugins/index.d.ts +1 -0
  197. package/dist/frameworks/plugins/index.d.ts.map +1 -1
  198. package/dist/frameworks/plugins/index.js +3 -0
  199. package/dist/frameworks/plugins/index.js.map +1 -1
  200. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +1 -1
  201. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +4 -4
  202. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
  203. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +20 -0
  204. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -0
  205. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +104 -0
  206. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -0
  207. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -1
  208. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +24 -3
  209. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -1
  210. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +5 -0
  211. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
  212. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  213. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  214. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  215. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  216. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js +10 -3
  217. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js.map +1 -1
  218. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -1
  219. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +26 -8
  220. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -1
  221. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  222. package/dist/providers/plugins/sso/proxy/sso.proxy.js +21 -4
  223. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  224. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
  225. package/dist/providers/plugins/sso/session/SessionSyncer.js +5 -72
  226. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
  227. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts +1 -1
  228. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts.map +1 -1
  229. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js +95 -4
  230. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js.map +1 -1
  231. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +2 -2
  232. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts.map +1 -1
  233. package/dist/providers/plugins/sso/session/processors/conversations/constants.js +2 -2
  234. package/dist/providers/plugins/sso/session/processors/conversations/constants.js.map +1 -1
  235. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -1
  236. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +85 -21
  237. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
  238. package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts +10 -2
  239. package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts.map +1 -1
  240. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts +1 -1
  241. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
  242. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +80 -46
  243. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  244. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +1 -9
  245. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
  246. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +94 -30
  247. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
  248. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts +4 -6
  249. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -1
  250. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js +24 -25
  251. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -1
  252. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  253. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +140 -99
  254. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  255. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts +11 -3
  256. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -1
  257. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  258. package/dist/providers/plugins/sso/sso.auth.js +22 -4
  259. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  260. package/dist/providers/plugins/sso/sso.setup-steps.js +2 -2
  261. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  262. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -1
  263. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +4 -1
  264. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -1
  265. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
  266. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +1 -3
  267. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
  268. package/dist/utils/browser.d.ts +7 -0
  269. package/dist/utils/browser.d.ts.map +1 -0
  270. package/dist/utils/browser.js +10 -0
  271. package/dist/utils/browser.js.map +1 -0
  272. package/dist/utils/config.d.ts.map +1 -1
  273. package/dist/utils/config.js +7 -1
  274. package/dist/utils/config.js.map +1 -1
  275. package/dist/utils/paths.d.ts +8 -0
  276. package/dist/utils/paths.d.ts.map +1 -1
  277. package/dist/utils/paths.js +15 -0
  278. package/dist/utils/paths.js.map +1 -1
  279. package/package.json +2 -1
  280. package/scripts/compare-codex-conversations.mjs +894 -0
  281. package/scripts/validate-secrets.js +7 -3
  282. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +0 -539
  283. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +0 -252
  284. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +0 -433
  285. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +0 -337
  286. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +0 -197
  287. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +0 -258
  288. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +0 -179
  289. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +0 -197
  290. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +0 -248
  291. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +0 -298
  292. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +0 -160
  293. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +0 -295
  294. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +0 -186
  295. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +0 -177
  296. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +0 -315
  297. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +0 -522
  298. package/dist/agents/plugins/claude/plugin/commands/handoff.md +0 -56
  299. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +0 -549
  300. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-baseline.sh +0 -39
  301. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-rewrite.sh +0 -101
  302. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/SKILL.md +0 -206
  303. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-agent.md +0 -45
  304. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-claude-md-snippet.md +0 -40
  305. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-command.md +0 -30
  306. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-hooks.json +0 -23
  307. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-skill.md +0 -48
  308. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-agent.md +0 -145
  309. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-claude-md-snippet.md +0 -126
  310. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-command.md +0 -170
  311. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-hooks.json +0 -46
  312. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-skill.md +0 -144
  313. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/sample-report.md +0 -223
  314. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/best-practices.md +0 -510
  315. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/component-checklists.md +0 -413
  316. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/scripts/scan-repo.sh +0 -162
@@ -0,0 +1,141 @@
1
+ // src/agents/plugins/codex/codex.reconciliation.ts
2
+ /**
3
+ * Codex Stale-Session Reconciliation
4
+ *
5
+ * Codex sessions that are killed hard (kill -9, OS shutdown, parent process
6
+ * termination) never run `onSessionEnd`. Their session JSON in
7
+ * `~/.codemie/sessions/{id}.json` stays `status: "active"` forever and no
8
+ * terminal `codemie_cli_session_total` lifecycle metric is emitted, so
9
+ * server-side analytics see them as never-finishing.
10
+ *
11
+ * On every codex `onSessionStart`, we scan for such stranded sessions and
12
+ * synthesise a SessionEnd with `reason: "interrupted"` to finalise them.
13
+ *
14
+ * Inactivity threshold defaults to 30 minutes; the lookback window is capped
15
+ * to 24 hours so a first deploy does not emit a burst of synthetic events for
16
+ * ancient stranded rollouts.
17
+ */
18
+ import { readdir, readFile } from 'fs/promises';
19
+ import { existsSync } from 'fs';
20
+ import { basename, join } from 'path';
21
+ import { getCodemiePath } from '../../../utils/paths.js';
22
+ import { logger } from '../../../utils/logger.js';
23
+ const DEFAULT_INACTIVITY_THRESHOLD_MS = 30 * 60 * 1000;
24
+ const DEFAULT_MAX_LOOKBACK_MS = 24 * 60 * 60 * 1000;
25
+ /**
26
+ * Find codex sessions in `~/.codemie/sessions/` that look stranded.
27
+ */
28
+ export async function findStaleCodexSessions(opts = {}) {
29
+ const now = opts.now ?? Date.now();
30
+ const inactivityThresholdMs = opts.inactivityThresholdMs ?? DEFAULT_INACTIVITY_THRESHOLD_MS;
31
+ const maxLookbackMs = opts.maxLookbackMs ?? DEFAULT_MAX_LOOKBACK_MS;
32
+ const sessionsDir = getCodemiePath('sessions');
33
+ if (!existsSync(sessionsDir)) {
34
+ return [];
35
+ }
36
+ let entries;
37
+ try {
38
+ entries = await readdir(sessionsDir);
39
+ }
40
+ catch (error) {
41
+ logger.debug('[codex-reconciliation] Failed to read sessions dir', error);
42
+ return [];
43
+ }
44
+ const stale = [];
45
+ const cutoffActivity = now - inactivityThresholdMs;
46
+ const cutoffStart = now - maxLookbackMs;
47
+ for (const entry of entries) {
48
+ if (!entry.endsWith('.json'))
49
+ continue;
50
+ if (entry.startsWith('completed_'))
51
+ continue;
52
+ if (entry.includes('_metrics') || entry.includes('_conversation'))
53
+ continue;
54
+ const filePath = join(sessionsDir, entry);
55
+ let session;
56
+ try {
57
+ const content = await readFile(filePath, 'utf-8');
58
+ session = JSON.parse(content);
59
+ }
60
+ catch (error) {
61
+ logger.debug(`[codex-reconciliation] Skipping unreadable file ${basename(filePath)}`, error);
62
+ continue;
63
+ }
64
+ if (session.agentName !== 'codex')
65
+ continue;
66
+ if (session.status !== 'active')
67
+ continue;
68
+ if (typeof session.startTime !== 'number')
69
+ continue;
70
+ if (session.startTime < cutoffStart)
71
+ continue;
72
+ const lastActivity = computeLastActivity(session);
73
+ if (lastActivity > cutoffActivity)
74
+ continue;
75
+ stale.push({
76
+ sessionId: session.sessionId,
77
+ startTime: session.startTime,
78
+ lastActivityMs: lastActivity,
79
+ });
80
+ }
81
+ return stale;
82
+ }
83
+ /**
84
+ * Synthesise a SessionEnd for each stale codex session.
85
+ *
86
+ * `processEvent` is injected so tests can drive this without touching the
87
+ * hook module's network and SSO-credential code paths.
88
+ */
89
+ export async function reconcileStaleCodexSessions(env, buildHookConfig, opts = {}) {
90
+ const stale = await findStaleCodexSessions(opts);
91
+ if (stale.length === 0) {
92
+ return { reconciled: 0, failed: 0 };
93
+ }
94
+ logger.info(`[codex-reconciliation] Found ${stale.length} stranded codex session(s); reconciling`);
95
+ const processEvent = opts.processEvent ?? (await loadDefaultProcessEvent());
96
+ let reconciled = 0;
97
+ let failed = 0;
98
+ for (const entry of stale) {
99
+ try {
100
+ const event = {
101
+ hook_event_name: 'SessionEnd',
102
+ session_id: entry.sessionId,
103
+ transcript_path: '',
104
+ permission_mode: 'default',
105
+ cwd: process.cwd(),
106
+ reason: 'interrupted',
107
+ };
108
+ await processEvent(event, buildHookConfig(env, entry.sessionId));
109
+ reconciled++;
110
+ logger.info(`[codex-reconciliation] Reconciled stranded session ${entry.sessionId}`);
111
+ }
112
+ catch (error) {
113
+ failed++;
114
+ const msg = error instanceof Error ? error.message : String(error);
115
+ logger.warn(`[codex-reconciliation] Failed to reconcile ${entry.sessionId}: ${msg}`);
116
+ }
117
+ }
118
+ return { reconciled, failed };
119
+ }
120
+ function computeLastActivity(session) {
121
+ const candidates = [];
122
+ if (typeof session.startTime === 'number')
123
+ candidates.push(session.startTime);
124
+ const metrics = session.sync?.metrics;
125
+ if (metrics) {
126
+ if (typeof metrics.lastSyncAt === 'number')
127
+ candidates.push(metrics.lastSyncAt);
128
+ if (typeof metrics.lastProcessedTimestamp === 'number')
129
+ candidates.push(metrics.lastProcessedTimestamp);
130
+ }
131
+ const conversations = session.sync?.conversations;
132
+ if (conversations && typeof conversations.lastSyncAt === 'number') {
133
+ candidates.push(conversations.lastSyncAt);
134
+ }
135
+ return candidates.length === 0 ? 0 : Math.max(...candidates);
136
+ }
137
+ async function loadDefaultProcessEvent() {
138
+ const mod = await import('../../../cli/commands/hook.js');
139
+ return mod.processEvent;
140
+ }
141
+ //# sourceMappingURL=codex.reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.reconciliation.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.reconciliation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Codex Session Adapter
3
+ *
4
+ * Implements SessionAdapter for Codex CLI rollout files.
5
+ *
6
+ * Rollout files are stored at:
7
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-{ISO8601}-{uuid}.jsonl
8
+ *
9
+ * Discovery uses mtime-based age filtering (D-3): file modification time is
10
+ * cheaper than parsing filename timestamps and equally accurate for recency filtering.
11
+ *
12
+ * Parsing reads JSONL tolerantly (skip malformed lines) and extracts:
13
+ * - session_meta: session identity, cwd, git info, cli version
14
+ * - turn_context: actual model used (last one wins in multi-turn sessions)
15
+ * - response_item: function_call / function_call_output for tool pairing
16
+ * - event_msg: user messages
17
+ *
18
+ * References:
19
+ * - https://github.com/openai/codex/blob/main/codex-rs/docs/cli-reference.md
20
+ */
21
+ import type { SessionAdapter, ParsedSession, AggregatedResult, SessionDiscoveryOptions, SessionDescriptor } from '../../core/session/BaseSessionAdapter.js';
22
+ import type { SessionProcessor, ProcessingContext } from '../../core/session/BaseProcessor.js';
23
+ import type { AgentMetadata } from '../../core/types.js';
24
+ export declare class CodexSessionAdapter implements SessionAdapter {
25
+ private readonly metadata;
26
+ readonly agentName = "codex";
27
+ private processors;
28
+ constructor(metadata: AgentMetadata);
29
+ private initializeProcessors;
30
+ registerProcessor(processor: SessionProcessor): void;
31
+ private applySyncUpdates;
32
+ /**
33
+ * Discover Codex rollout files within maxAgeDays.
34
+ *
35
+ * Algorithm:
36
+ * 1. Resolve base path via getCodexSessionsPath()
37
+ * 2. Return [] if path does not exist
38
+ * 3. Enumerate YYYY/MM/DD directories (3-level traversal)
39
+ * 4. For each .jsonl file: extract UUID, stat mtime, apply age filter
40
+ * 5. Return sorted by mtime descending (newest first)
41
+ */
42
+ discoverSessions(options?: SessionDiscoveryOptions): Promise<SessionDescriptor[]>;
43
+ /**
44
+ * Parse a Codex rollout JSONL file into ParsedSession format.
45
+ *
46
+ * Reads all records tolerantly, separates by type, extracts:
47
+ * - session_meta (once) → identity, cwd, git
48
+ * - turn_context (last one wins) → actual model
49
+ * - response_item (function_call / function_call_output) → preserved in messages
50
+ * - event_msg (user_message) → preserved in messages
51
+ */
52
+ parseSessionFile(filePath: string, sessionId: string): Promise<ParsedSession>;
53
+ /**
54
+ * Process a Codex session file with all registered processors.
55
+ */
56
+ processSession(filePath: string, sessionId: string, context: ProcessingContext): Promise<AggregatedResult>;
57
+ }
58
+ //# sourceMappingURL=codex.session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.session.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.session.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAoB,MAAM,qCAAqC,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBzD,qBAAa,mBAAoB,YAAW,cAAc;IAI5C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,QAAQ,CAAC,SAAS,WAAW;IAC7B,OAAO,CAAC,UAAU,CAA0B;gBAEf,QAAQ,EAAE,aAAa;IAOpD,OAAO,CAAC,oBAAoB;IAM5B,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;YAMtC,gBAAgB;IA2B9B;;;;;;;;;OASG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwHvF;;;;;;;;OAQG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAsEnF;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;CAiE7B"}
@@ -0,0 +1,326 @@
1
+ // src/agents/plugins/codex/codex.session.ts
2
+ /**
3
+ * Codex Session Adapter
4
+ *
5
+ * Implements SessionAdapter for Codex CLI rollout files.
6
+ *
7
+ * Rollout files are stored at:
8
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-{ISO8601}-{uuid}.jsonl
9
+ *
10
+ * Discovery uses mtime-based age filtering (D-3): file modification time is
11
+ * cheaper than parsing filename timestamps and equally accurate for recency filtering.
12
+ *
13
+ * Parsing reads JSONL tolerantly (skip malformed lines) and extracts:
14
+ * - session_meta: session identity, cwd, git info, cli version
15
+ * - turn_context: actual model used (last one wins in multi-turn sessions)
16
+ * - response_item: function_call / function_call_output for tool pairing
17
+ * - event_msg: user messages
18
+ *
19
+ * References:
20
+ * - https://github.com/openai/codex/blob/main/codex-rs/docs/cli-reference.md
21
+ */
22
+ import { readdir, stat } from 'fs/promises';
23
+ import { existsSync } from 'fs';
24
+ import { join } from 'path';
25
+ import { getCodexSessionsPath } from './codex.paths.js';
26
+ import { readCodexJsonlTolerant } from './codex.storage-utils.js';
27
+ import { logger } from '../../../utils/logger.js';
28
+ import { ConfigurationError } from '../../../utils/errors.js';
29
+ import { sanitizeLogArgs } from '../../../utils/security.js';
30
+ import { CodexMetricsProcessor } from './session/processors/codex.metrics-processor.js';
31
+ import { CodexConversationsProcessor } from './session/processors/codex.conversations-processor.js';
32
+ /** Regex to extract UUID from rollout filename: rollout-{ISO8601}-{uuid}.jsonl */
33
+ const ROLLOUT_UUID_REGEX = /rollout-.*-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/;
34
+ export class CodexSessionAdapter {
35
+ metadata;
36
+ agentName = 'codex';
37
+ processors = [];
38
+ constructor(metadata) {
39
+ this.metadata = metadata;
40
+ if (!metadata.dataPaths?.home) {
41
+ throw new ConfigurationError('Agent metadata must provide dataPaths.home');
42
+ }
43
+ this.initializeProcessors();
44
+ }
45
+ initializeProcessors() {
46
+ this.registerProcessor(new CodexMetricsProcessor());
47
+ this.registerProcessor(new CodexConversationsProcessor());
48
+ logger.debug(`[codex-adapter] Initialized ${this.processors.length} processors`);
49
+ }
50
+ registerProcessor(processor) {
51
+ this.processors.push(processor);
52
+ this.processors.sort((a, b) => a.priority - b.priority);
53
+ logger.debug(`[codex-adapter] Registered processor: ${processor.name} (priority: ${processor.priority})`);
54
+ }
55
+ async applySyncUpdates(sessionId, results) {
56
+ try {
57
+ const { SessionStore } = await import('../../core/session/SessionStore.js');
58
+ const { applyProcessingSyncUpdates } = await import('../../core/session/sync-state-utils.js');
59
+ const sessionStore = new SessionStore();
60
+ const session = await sessionStore.loadSession(sessionId);
61
+ if (!session) {
62
+ logger.warn(`[codex-adapter] Session not found for sync updates: ${sessionId}`);
63
+ return;
64
+ }
65
+ const hasChanges = applyProcessingSyncUpdates(session, results);
66
+ if (!hasChanges) {
67
+ logger.debug('[codex-adapter] No processor sync updates to persist');
68
+ return;
69
+ }
70
+ await sessionStore.saveSession(session);
71
+ logger.debug('[codex-adapter] Session persisted after processor sync updates');
72
+ }
73
+ catch (error) {
74
+ logger.error('[codex-adapter] Failed to apply sync updates:', error);
75
+ throw error;
76
+ }
77
+ }
78
+ /**
79
+ * Discover Codex rollout files within maxAgeDays.
80
+ *
81
+ * Algorithm:
82
+ * 1. Resolve base path via getCodexSessionsPath()
83
+ * 2. Return [] if path does not exist
84
+ * 3. Enumerate YYYY/MM/DD directories (3-level traversal)
85
+ * 4. For each .jsonl file: extract UUID, stat mtime, apply age filter
86
+ * 5. Return sorted by mtime descending (newest first)
87
+ */
88
+ async discoverSessions(options) {
89
+ const sessionsPath = getCodexSessionsPath();
90
+ if (!sessionsPath) {
91
+ logger.debug('[codex-discovery] ~/.codex/sessions not found (Codex not run yet)');
92
+ return [];
93
+ }
94
+ const maxAgeDays = options?.maxAgeDays ?? 30;
95
+ const maxAgeMs = maxAgeDays * 24 * 60 * 60 * 1000;
96
+ const cutoffMs = Date.now() - maxAgeMs;
97
+ const results = [];
98
+ try {
99
+ // Level 1: year directories
100
+ const yearDirs = await readdir(sessionsPath);
101
+ const yearPaths = (await Promise.all(yearDirs.map(async (yearDir) => {
102
+ const yearPath = join(sessionsPath, yearDir);
103
+ return (await isDirectory(yearPath)) ? yearPath : null;
104
+ }))).filter((p) => p !== null);
105
+ await Promise.all(yearPaths.map(async (yearPath) => {
106
+ // Level 2: month directories
107
+ let monthDirs;
108
+ try {
109
+ monthDirs = await readdir(yearPath);
110
+ }
111
+ catch {
112
+ return;
113
+ }
114
+ const monthPaths = (await Promise.all(monthDirs.map(async (monthDir) => {
115
+ const monthPath = join(yearPath, monthDir);
116
+ return (await isDirectory(monthPath)) ? monthPath : null;
117
+ }))).filter((p) => p !== null);
118
+ await Promise.all(monthPaths.map(async (monthPath) => {
119
+ // Level 3: day directories
120
+ let dayDirs;
121
+ try {
122
+ dayDirs = await readdir(monthPath);
123
+ }
124
+ catch {
125
+ return;
126
+ }
127
+ const dayPaths = (await Promise.all(dayDirs.map(async (dayDir) => {
128
+ const dayPath = join(monthPath, dayDir);
129
+ return (await isDirectory(dayPath)) ? dayPath : null;
130
+ }))).filter((p) => p !== null);
131
+ await Promise.all(dayPaths.map(async (dayPath) => {
132
+ // Level 4: rollout files
133
+ let files;
134
+ try {
135
+ files = await readdir(dayPath);
136
+ }
137
+ catch {
138
+ return;
139
+ }
140
+ await Promise.all(files.map(async (file) => {
141
+ if (!file.endsWith('.jsonl'))
142
+ return;
143
+ const match = ROLLOUT_UUID_REGEX.exec(file);
144
+ if (!match) {
145
+ logger.debug(`[codex-discovery] Skipping file without UUID in name: ${file}`);
146
+ return;
147
+ }
148
+ const sessionUuid = match[1];
149
+ const filePath = join(dayPath, file);
150
+ try {
151
+ const fileStat = await stat(filePath);
152
+ const mtime = fileStat.mtime.getTime();
153
+ // Age filter based on mtime (D-3)
154
+ if (mtime < cutoffMs) {
155
+ logger.debug(`[codex-discovery] Skipping old rollout: ${file}`);
156
+ return;
157
+ }
158
+ results.push({
159
+ sessionId: sessionUuid,
160
+ filePath,
161
+ createdAt: mtime,
162
+ agentName: 'codex',
163
+ });
164
+ }
165
+ catch {
166
+ logger.debug(`[codex-discovery] Could not stat file: ${filePath}`);
167
+ }
168
+ }));
169
+ }));
170
+ }));
171
+ }));
172
+ // Sort by mtime descending (newest first)
173
+ results.sort((a, b) => b.createdAt - a.createdAt);
174
+ // Apply limit
175
+ if (options?.limit && options.limit > 0) {
176
+ const limited = results.slice(0, options.limit);
177
+ logger.debug(`[codex-discovery] Found ${results.length} rollout files, returning ${limited.length} (limit: ${options.limit})`);
178
+ return limited;
179
+ }
180
+ logger.debug(`[codex-discovery] Found ${results.length} rollout files`);
181
+ return results;
182
+ }
183
+ catch (error) {
184
+ logger.error('[codex-discovery] Failed to scan sessions directory:', error);
185
+ return [];
186
+ }
187
+ }
188
+ /**
189
+ * Parse a Codex rollout JSONL file into ParsedSession format.
190
+ *
191
+ * Reads all records tolerantly, separates by type, extracts:
192
+ * - session_meta (once) → identity, cwd, git
193
+ * - turn_context (last one wins) → actual model
194
+ * - response_item (function_call / function_call_output) → preserved in messages
195
+ * - event_msg (user_message) → preserved in messages
196
+ */
197
+ async parseSessionFile(filePath, sessionId) {
198
+ try {
199
+ const records = await readCodexJsonlTolerant(filePath);
200
+ if (records.length === 0) {
201
+ throw new ConfigurationError(`Rollout file is empty or unreadable: ${filePath}`);
202
+ }
203
+ // Separate records by type
204
+ let sessionMeta;
205
+ let lastTurnContext;
206
+ for (const record of records) {
207
+ if (record.type === 'session_meta') {
208
+ sessionMeta = record.payload;
209
+ }
210
+ else if (record.type === 'turn_context') {
211
+ // Last turn_context wins (D-2)
212
+ lastTurnContext = record.payload;
213
+ }
214
+ // response_item and event_msg records are preserved in messages as-is
215
+ }
216
+ if (!sessionMeta) {
217
+ throw new ConfigurationError(`No session_meta record found in rollout file: ${filePath}`);
218
+ }
219
+ // Validate session_meta.id (D-6: recordId uses this UUID)
220
+ if (!sessionMeta.id || typeof sessionMeta.id !== 'string') {
221
+ throw new ConfigurationError(`session_meta.id is missing or invalid in rollout file: ${filePath}`);
222
+ }
223
+ // Sanitize cwd before logging (security requirement)
224
+ logger.debug('[codex-adapter] Parsing rollout file', ...sanitizeLogArgs({
225
+ sessionMetaId: sessionMeta.id,
226
+ recordCount: records.length,
227
+ }));
228
+ // Resolve model: turn_context.model (primary) → session_meta.model_provider (fallback) (D-2)
229
+ const resolvedModel = lastTurnContext?.model?.trim() || sessionMeta.model_provider?.trim() || undefined;
230
+ // Build ParsedSession
231
+ const metadata = {
232
+ projectPath: sessionMeta.cwd,
233
+ createdAt: sessionMeta.timestamp,
234
+ repository: sessionMeta.git?.repository_url,
235
+ branch: sessionMeta.git?.branch,
236
+ codexSessionId: sessionMeta.id,
237
+ model: resolvedModel,
238
+ cliVersion: sessionMeta.cli_version,
239
+ };
240
+ return {
241
+ sessionId,
242
+ agentName: 'Codex CLI',
243
+ agentVersion: sessionMeta.cli_version,
244
+ metadata,
245
+ messages: records, // Preserved in full for processors
246
+ metrics: {
247
+ tools: {},
248
+ toolStatus: {},
249
+ fileOperations: [],
250
+ },
251
+ };
252
+ }
253
+ catch (error) {
254
+ logger.error(`[codex-adapter] Failed to parse rollout file ${filePath}:`, error);
255
+ throw error;
256
+ }
257
+ }
258
+ /**
259
+ * Process a Codex session file with all registered processors.
260
+ */
261
+ async processSession(filePath, sessionId, context) {
262
+ try {
263
+ logger.debug(`[codex-adapter] Processing session ${sessionId} with ${this.processors.length} processors`);
264
+ const parsedSession = await this.parseSessionFile(filePath, sessionId);
265
+ const processorResults = {};
266
+ const failedProcessors = [];
267
+ const allResults = [];
268
+ let totalRecords = 0;
269
+ for (const processor of this.processors) {
270
+ try {
271
+ if (!processor.shouldProcess(parsedSession)) {
272
+ logger.debug(`[codex-adapter] Processor ${processor.name} skipped`);
273
+ continue;
274
+ }
275
+ logger.debug(`[codex-adapter] Running processor: ${processor.name}`);
276
+ const result = await processor.process(parsedSession, context);
277
+ allResults.push(result);
278
+ processorResults[processor.name] = {
279
+ success: result.success,
280
+ message: result.message,
281
+ recordsProcessed: result.metadata?.recordsProcessed,
282
+ };
283
+ if (!result.success) {
284
+ failedProcessors.push(processor.name);
285
+ logger.warn(`[codex-adapter] Processor ${processor.name} failed: ${result.message}`);
286
+ }
287
+ const recordsProcessed = result.metadata?.recordsProcessed;
288
+ if (typeof recordsProcessed === 'number') {
289
+ totalRecords += recordsProcessed;
290
+ }
291
+ }
292
+ catch (error) {
293
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
294
+ logger.error(`[codex-adapter] Processor ${processor.name} threw:`, error);
295
+ const failedResult = { success: false, message: errorMessage };
296
+ processorResults[processor.name] = failedResult;
297
+ allResults.push(failedResult);
298
+ failedProcessors.push(processor.name);
299
+ }
300
+ }
301
+ await this.applySyncUpdates(sessionId, allResults);
302
+ return {
303
+ success: failedProcessors.length === 0,
304
+ processors: processorResults,
305
+ totalRecords,
306
+ failedProcessors,
307
+ };
308
+ }
309
+ catch (error) {
310
+ logger.error('[codex-adapter] Session processing failed:', error);
311
+ throw error;
312
+ }
313
+ }
314
+ }
315
+ /** Helper: return true if path is a directory */
316
+ async function isDirectory(p) {
317
+ if (!existsSync(p))
318
+ return false;
319
+ try {
320
+ return (await stat(p)).isDirectory();
321
+ }
322
+ catch {
323
+ return false;
324
+ }
325
+ }
326
+ //# sourceMappingURL=codex.session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.session.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Codex Storage Utilities
3
+ *
4
+ * Tolerant JSONL reader for Codex rollout files.
5
+ * Delegates to the shared readJSONLTolerant utility (Critical #3 fix).
6
+ */
7
+ /**
8
+ * Tolerant JSONL reader for Codex rollout files.
9
+ * Skips corrupted lines instead of failing; logs count of skipped lines at warn level.
10
+ *
11
+ * @param filePath Absolute path to .jsonl rollout file
12
+ * @returns Array of parsed records (corrupted lines are skipped)
13
+ */
14
+ export declare function readCodexJsonlTolerant<T>(filePath: string): Promise<T[]>;
15
+ //# sourceMappingURL=codex.storage-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.storage-utils.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.storage-utils.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAE9E"}
@@ -0,0 +1,19 @@
1
+ // src/agents/plugins/codex/codex.storage-utils.ts
2
+ /**
3
+ * Codex Storage Utilities
4
+ *
5
+ * Tolerant JSONL reader for Codex rollout files.
6
+ * Delegates to the shared readJSONLTolerant utility (Critical #3 fix).
7
+ */
8
+ import { readJSONLTolerant } from '../../core/session/utils/jsonl-reader.js';
9
+ /**
10
+ * Tolerant JSONL reader for Codex rollout files.
11
+ * Skips corrupted lines instead of failing; logs count of skipped lines at warn level.
12
+ *
13
+ * @param filePath Absolute path to .jsonl rollout file
14
+ * @returns Array of parsed records (corrupted lines are skipped)
15
+ */
16
+ export async function readCodexJsonlTolerant(filePath) {
17
+ return readJSONLTolerant(filePath, '[codex-storage]');
18
+ }
19
+ //# sourceMappingURL=codex.storage-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.storage-utils.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.storage-utils.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAI,QAAgB;IAC9D,OAAO,iBAAiB,CAAI,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { CodexPlugin, CodexPluginMetadata } from './codex.plugin.js';
2
+ export { CodexSessionAdapter } from './codex.session.js';
3
+ export { getCodexHomePath, getCodexSessionsPath, getCodexSessionDayPath, } from './codex.paths.js';
4
+ export type { CodexRolloutRecord, CodexSessionMeta, CodexTurnContext, CodexResponseItem, CodexEventMsg, CodexSessionMetadata, } from './codex-message-types.js';
5
+ export { validateCodexMetadata, hasCodexMetadata, } from './codex-message-types.js';
6
+ export type { SessionDiscoveryOptions, SessionDescriptor, } from '../../core/session/discovery-types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,9 @@
1
+ // src/agents/plugins/codex/index.ts
2
+ // Phase 1 exports (Core Plugin)
3
+ export { CodexPlugin, CodexPluginMetadata } from './codex.plugin.js';
4
+ // Phase 2 exports (Session Analytics)
5
+ export { CodexSessionAdapter } from './codex.session.js';
6
+ export { getCodexHomePath, getCodexSessionsPath, getCodexSessionDayPath, } from './codex.paths.js';
7
+ // Type guards
8
+ export { validateCodexMetadata, hasCodexMetadata, } from './codex-message-types.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAErE,sCAAsC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAY1B,cAAc;AACd,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Codex Conversations Processor
3
+ *
4
+ * Transforms raw Codex rollout records into incremental CodeMie conversation
5
+ * payloads while preserving much more of the original interaction shape:
6
+ * - user prompts
7
+ * - assistant commentary / progress updates
8
+ * - reasoning records
9
+ * - tool calls + outputs
10
+ * - sub-agent style tool activity
11
+ *
12
+ * The processor intentionally treats assistant commentary as thoughts rather
13
+ * than user-facing assistant replies. Only final answers become the visible
14
+ * Assistant history entry.
15
+ */
16
+ import type { SessionProcessor, ProcessingContext, ProcessingResult } from '../../../../core/session/BaseProcessor.js';
17
+ import type { ParsedSession } from '../../../../core/session/BaseSessionAdapter.js';
18
+ export declare class CodexConversationsProcessor implements SessionProcessor {
19
+ readonly name = "codex-conversations";
20
+ readonly priority = 2;
21
+ shouldProcess(session: ParsedSession): boolean;
22
+ process(session: ParsedSession, context: ProcessingContext): Promise<ProcessingResult>;
23
+ }
24
+ //# sourceMappingURL=codex.conversations-processor.d.ts.map