@codemieai/code 0.10.1 → 0.12.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 (201) hide show
  1. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  2. package/dist/agents/core/AgentCLI.js +11 -3
  3. package/dist/agents/core/AgentCLI.js.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.d.ts +3 -1
  5. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  6. package/dist/agents/core/BaseAgentAdapter.js +34 -2
  7. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  8. package/dist/agents/core/config-redaction.d.ts +7 -0
  9. package/dist/agents/core/config-redaction.d.ts.map +1 -0
  10. package/dist/agents/core/config-redaction.js +20 -0
  11. package/dist/agents/core/config-redaction.js.map +1 -0
  12. package/dist/agents/core/print-config.d.ts +8 -0
  13. package/dist/agents/core/print-config.d.ts.map +1 -0
  14. package/dist/agents/core/print-config.js +17 -0
  15. package/dist/agents/core/print-config.js.map +1 -0
  16. package/dist/agents/core/session/BaseSessionAdapter.d.ts +24 -1
  17. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  18. package/dist/agents/core/types.d.ts +44 -4
  19. package/dist/agents/core/types.d.ts.map +1 -1
  20. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  21. package/dist/agents/plugins/claude/claude.plugin.js +73 -0
  22. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  23. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  24. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +115 -32
  25. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  26. package/dist/agents/plugins/claude/settings-conflict.d.ts +8 -0
  27. package/dist/agents/plugins/claude/settings-conflict.d.ts.map +1 -0
  28. package/dist/agents/plugins/claude/settings-conflict.js +35 -0
  29. package/dist/agents/plugins/claude/settings-conflict.js.map +1 -0
  30. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.d.ts +14 -2
  31. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.d.ts.map +1 -1
  32. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.js +218 -263
  33. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.js.map +1 -1
  34. package/dist/agents/plugins/copilot-cli/copilot-cli-event-types.d.ts +146 -0
  35. package/dist/agents/plugins/copilot-cli/copilot-cli-event-types.d.ts.map +1 -0
  36. package/dist/agents/plugins/copilot-cli/copilot-cli-event-types.js +12 -0
  37. package/dist/agents/plugins/copilot-cli/copilot-cli-event-types.js.map +1 -0
  38. package/dist/agents/plugins/copilot-cli/copilot-cli.constants.d.ts +11 -0
  39. package/dist/agents/plugins/copilot-cli/copilot-cli.constants.d.ts.map +1 -0
  40. package/dist/agents/plugins/copilot-cli/copilot-cli.constants.js +11 -0
  41. package/dist/agents/plugins/copilot-cli/copilot-cli.constants.js.map +1 -0
  42. package/dist/agents/plugins/copilot-cli/copilot-cli.paths.d.ts +11 -0
  43. package/dist/agents/plugins/copilot-cli/copilot-cli.paths.d.ts.map +1 -0
  44. package/dist/agents/plugins/copilot-cli/copilot-cli.paths.js +21 -0
  45. package/dist/agents/plugins/copilot-cli/copilot-cli.paths.js.map +1 -0
  46. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts +30 -0
  47. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts.map +1 -0
  48. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js +64 -0
  49. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js.map +1 -0
  50. package/dist/agents/plugins/copilot-cli/copilot-cli.session.d.ts +43 -0
  51. package/dist/agents/plugins/copilot-cli/copilot-cli.session.d.ts.map +1 -0
  52. package/dist/agents/plugins/copilot-cli/copilot-cli.session.js +331 -0
  53. package/dist/agents/plugins/copilot-cli/copilot-cli.session.js.map +1 -0
  54. package/dist/agents/plugins/copilot-cli/copilot-cli.storage-utils.d.ts +10 -0
  55. package/dist/agents/plugins/copilot-cli/copilot-cli.storage-utils.d.ts.map +1 -0
  56. package/dist/agents/plugins/copilot-cli/copilot-cli.storage-utils.js +41 -0
  57. package/dist/agents/plugins/copilot-cli/copilot-cli.storage-utils.js.map +1 -0
  58. package/dist/agents/plugins/copilot-cli/copilot-cli.usage.d.ts +37 -0
  59. package/dist/agents/plugins/copilot-cli/copilot-cli.usage.d.ts.map +1 -0
  60. package/dist/agents/plugins/copilot-cli/copilot-cli.usage.js +96 -0
  61. package/dist/agents/plugins/copilot-cli/copilot-cli.usage.js.map +1 -0
  62. package/dist/agents/plugins/copilot-cli/copilot-cli.workspace.d.ts +17 -0
  63. package/dist/agents/plugins/copilot-cli/copilot-cli.workspace.d.ts.map +1 -0
  64. package/dist/agents/plugins/copilot-cli/copilot-cli.workspace.js +58 -0
  65. package/dist/agents/plugins/copilot-cli/copilot-cli.workspace.js.map +1 -0
  66. package/dist/agents/plugins/copilot-cli/index.d.ts +2 -0
  67. package/dist/agents/plugins/copilot-cli/index.d.ts.map +1 -0
  68. package/dist/agents/plugins/copilot-cli/index.js +2 -0
  69. package/dist/agents/plugins/copilot-cli/index.js.map +1 -0
  70. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.d.ts +15 -0
  71. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.d.ts.map +1 -0
  72. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.js +20 -0
  73. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.js.map +1 -0
  74. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.metrics-processor.d.ts +16 -0
  75. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.metrics-processor.d.ts.map +1 -0
  76. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.metrics-processor.js +22 -0
  77. package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.metrics-processor.js.map +1 -0
  78. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +13 -0
  79. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -1
  80. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -1
  81. package/dist/agents/plugins/opencode/opencode.incremental-sync.d.ts +38 -0
  82. package/dist/agents/plugins/opencode/opencode.incremental-sync.d.ts.map +1 -0
  83. package/dist/agents/plugins/opencode/opencode.incremental-sync.js +153 -0
  84. package/dist/agents/plugins/opencode/opencode.incremental-sync.js.map +1 -0
  85. package/dist/agents/plugins/opencode/opencode.paths.d.ts +18 -2
  86. package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -1
  87. package/dist/agents/plugins/opencode/opencode.paths.js +39 -6
  88. package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -1
  89. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  90. package/dist/agents/plugins/opencode/opencode.plugin.js +241 -75
  91. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  92. package/dist/agents/plugins/opencode/opencode.session.d.ts +18 -1
  93. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -1
  94. package/dist/agents/plugins/opencode/opencode.session.js +58 -17
  95. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -1
  96. package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts +8 -2
  97. package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts.map +1 -1
  98. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js +67 -42
  99. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js.map +1 -1
  100. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +19 -0
  101. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -1
  102. package/dist/agents/plugins/opencode/opencode.storage-utils.js +51 -0
  103. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -1
  104. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +13 -19
  105. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -1
  106. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +339 -82
  107. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -1
  108. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +37 -33
  109. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -1
  110. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +204 -246
  111. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -1
  112. package/dist/agents/registry.d.ts +20 -0
  113. package/dist/agents/registry.d.ts.map +1 -1
  114. package/dist/agents/registry.js +29 -2
  115. package/dist/agents/registry.js.map +1 -1
  116. package/dist/cli/commands/analytics/agent-labels.d.ts +3 -0
  117. package/dist/cli/commands/analytics/agent-labels.d.ts.map +1 -0
  118. package/dist/cli/commands/analytics/agent-labels.js +19 -0
  119. package/dist/cli/commands/analytics/agent-labels.js.map +1 -0
  120. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  121. package/dist/cli/commands/analytics/cost/cost-enricher.js +12 -0
  122. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  123. package/dist/cli/commands/analytics/cost/types.d.ts +10 -0
  124. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  125. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  126. package/dist/cli/commands/analytics/cost/usage-readers.js +54 -0
  127. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  128. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  129. package/dist/cli/commands/analytics/formatter.js +10 -2
  130. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  131. package/dist/cli/commands/analytics/index.d.ts.map +1 -1
  132. package/dist/cli/commands/analytics/index.js +21 -0
  133. package/dist/cli/commands/analytics/index.js.map +1 -1
  134. package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
  135. package/dist/cli/commands/analytics/native-loader.js +28 -3
  136. package/dist/cli/commands/analytics/native-loader.js.map +1 -1
  137. package/dist/cli/commands/analytics/report/client/app.js +32 -14
  138. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  139. package/dist/cli/commands/analytics/report/payload-builder.js +7 -0
  140. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  141. package/dist/cli/commands/analytics/report/types.d.ts +10 -0
  142. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  143. package/dist/cli/commands/install.js +2 -2
  144. package/dist/cli/commands/install.js.map +1 -1
  145. package/dist/cli/commands/list.js +1 -1
  146. package/dist/cli/commands/list.js.map +1 -1
  147. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  148. package/dist/cli/commands/proxy/connectors/desktop.js +6 -0
  149. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  150. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +1 -0
  151. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
  152. package/dist/cli/commands/proxy/connectors/vscode-models.js +36 -12
  153. package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
  154. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
  155. package/dist/cli/commands/proxy/connectors/vscode.js +3 -0
  156. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
  157. package/dist/cli/commands/proxy/health-check.d.ts.map +1 -1
  158. package/dist/cli/commands/proxy/health-check.js +9 -0
  159. package/dist/cli/commands/proxy/health-check.js.map +1 -1
  160. package/dist/cli/commands/setup.d.ts +33 -0
  161. package/dist/cli/commands/setup.d.ts.map +1 -1
  162. package/dist/cli/commands/setup.js +151 -35
  163. package/dist/cli/commands/setup.js.map +1 -1
  164. package/dist/cli/commands/uninstall.js +1 -1
  165. package/dist/cli/commands/uninstall.js.map +1 -1
  166. package/dist/cli/commands/update.js +2 -2
  167. package/dist/cli/commands/update.js.map +1 -1
  168. package/dist/cli/first-time.js +3 -3
  169. package/dist/cli/first-time.js.map +1 -1
  170. package/dist/providers/core/types.d.ts +28 -1
  171. package/dist/providers/core/types.d.ts.map +1 -1
  172. package/dist/providers/core/types.js.map +1 -1
  173. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  174. package/dist/providers/plugins/bedrock/bedrock.template.js +21 -2
  175. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  176. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -1
  177. package/dist/providers/plugins/litellm/litellm.setup-steps.js +21 -5
  178. package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -1
  179. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +7 -6
  180. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -1
  181. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +13 -7
  182. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -1
  183. package/dist/providers/plugins/sso/proxy/plugins/index.js +1 -1
  184. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  185. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +3 -0
  186. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
  187. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  188. package/dist/providers/plugins/sso/sso.setup-steps.js +39 -22
  189. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  190. package/dist/utils/config.d.ts +6 -2
  191. package/dist/utils/config.d.ts.map +1 -1
  192. package/dist/utils/config.js +30 -8
  193. package/dist/utils/config.js.map +1 -1
  194. package/dist/utils/extensions-scan.d.ts.map +1 -1
  195. package/dist/utils/extensions-scan.js +59 -22
  196. package/dist/utils/extensions-scan.js.map +1 -1
  197. package/dist/utils/mcp-config.d.ts.map +1 -1
  198. package/dist/utils/mcp-config.js +11 -6
  199. package/dist/utils/mcp-config.js.map +1 -1
  200. package/package.json +1 -2
  201. package/scripts/release.sh +54 -0
@@ -13,14 +13,56 @@
13
13
  * - Implements deduplication to prevent duplicate deltas
14
14
  */
15
15
  import { isToolPart } from '../../opencode-message-types.js';
16
- import { readJsonWithRetry, readJsonlTolerant } from '../../opencode.storage-utils.js';
16
+ import { readJsonlTolerant, loadPartsForMessage } from '../../opencode.storage-utils.js';
17
17
  import { logger } from '../../../../../utils/logger.js';
18
- import { getCodemiePath } from '../../../../../utils/paths.js';
19
- import { readdir, readFile, writeFile } from 'fs/promises';
20
18
  import { existsSync } from 'fs';
21
19
  import { join } from 'path';
22
- // Cooldown to prevent concurrent processing of same session (ADR-18)
23
- const REPROCESS_COOLDOWN_MS = 60_000; // 60 seconds
20
+ // NOTE: the former 60s REPROCESS_COOLDOWN_MS gate was removed deliberately.
21
+ // It predated incremental sync and would swallow every timer tick, stranding
22
+ // deltas on disk. Deduplication on `recordId` already makes process()
23
+ // idempotent, and the sync timer holds its own in-flight guard.
24
+ /**
25
+ * Map an apply_patch/patch per-file operation kind to a MetricDelta file
26
+ * operation type. The aggregator counts 'write' as files_created, 'edit' as
27
+ * files_modified and 'delete' as files_deleted.
28
+ */
29
+ function mapPatchFileType(type) {
30
+ switch (type) {
31
+ case 'add': return 'write';
32
+ case 'delete': return 'delete';
33
+ case 'update': return 'edit';
34
+ default: return 'edit';
35
+ }
36
+ }
37
+ /**
38
+ * Count added/removed lines in a unified diff.
39
+ *
40
+ * OpenCode reports edits as patch text (`state.metadata.filediff.patch`,
41
+ * `state.metadata.diff`, `apply_patch` per-file `patch`); unlike Claude it never
42
+ * emits numeric additions/deletions, so the counts have to come from the diff.
43
+ */
44
+ export function countDiffLines(patch) {
45
+ if (typeof patch !== 'string' || patch.length === 0) {
46
+ return { linesAdded: 0, linesRemoved: 0 };
47
+ }
48
+ let linesAdded = 0;
49
+ let linesRemoved = 0;
50
+ for (const line of patch.split('\n')) {
51
+ // Skip hunk headers and the ---/+++ file header pair, which are not content.
52
+ // The header test requires the trailing space git always emits ("--- a/x"),
53
+ // so a *content* line that merely starts with --- or +++ (a markdown rule, a
54
+ // YAML document separator) is still counted instead of silently dropped.
55
+ if (line.startsWith('@@'))
56
+ continue;
57
+ if (line.startsWith('+++ ') || line.startsWith('--- '))
58
+ continue;
59
+ if (line.startsWith('+'))
60
+ linesAdded++;
61
+ else if (line.startsWith('-'))
62
+ linesRemoved++;
63
+ }
64
+ return { linesAdded, linesRemoved };
65
+ }
24
66
  /**
25
67
  * OpenCode Metrics Processor
26
68
  *
@@ -30,10 +72,6 @@ const REPROCESS_COOLDOWN_MS = 60_000; // 60 seconds
30
72
  export class OpenCodeMetricsProcessor {
31
73
  name = 'opencode-metrics';
32
74
  priority = 1; // Run first (before conversations)
33
- cacheDir;
34
- constructor() {
35
- this.cacheDir = getCodemiePath('cache', 'opencode');
36
- }
37
75
  /**
38
76
  * Check if session has data to process
39
77
  */
@@ -45,7 +83,7 @@ export class OpenCodeMetricsProcessor {
45
83
  *
46
84
  * Per tech spec ADR-1/G2: Validate metadata at START before any processing
47
85
  */
48
- async process(session, _context) {
86
+ async process(session, context) {
49
87
  try {
50
88
  // MANDATORY: Validate metadata has required fields (ADR-1, Review 13 G2)
51
89
  const metadata = session.metadata;
@@ -61,14 +99,6 @@ export class OpenCodeMetricsProcessor {
61
99
  }
62
100
  const storagePath = metadata.storagePath;
63
101
  const openCodeSessionId = metadata.openCodeSessionId || 'unknown';
64
- // Check concurrent processing prevention (ADR-18)
65
- if (!await this.shouldProcessSession(session.sessionId)) {
66
- return {
67
- success: true,
68
- message: 'Session recently processed, skipping',
69
- metadata: { skippedReason: 'RECENTLY_PROCESSED' }
70
- };
71
- }
72
102
  const messages = session.messages;
73
103
  // Transform messages to deltas
74
104
  // Cast metadata to OpenCodeMetadata (validated above)
@@ -82,7 +112,11 @@ export class OpenCodeMetricsProcessor {
82
112
  partsMap: metadata.partsMap,
83
113
  storageType: metadata.storageType,
84
114
  };
85
- const { deltas, stats } = await this.transformMessagesToDeltas(messages, session.sessionId, openCodeSessionId, storagePath, openCodeMetadata);
115
+ // Branch attribution: the aggregator groups deltas by gitBranch and emits
116
+ // one codemie_cli_tool_usage_total per branch. Without this every delta
117
+ // lands in the empty-string bucket.
118
+ const gitBranch = await this.resolveBranch(context, openCodeMetadata);
119
+ const { deltas, stats } = await this.transformMessagesToDeltas(messages, session.sessionId, openCodeSessionId, storagePath, openCodeMetadata, gitBranch);
86
120
  if (deltas.length === 0) {
87
121
  logger.debug(`[opencode-metrics] No new deltas to write for session ${session.sessionId}`);
88
122
  return {
@@ -111,8 +145,6 @@ export class OpenCodeMetricsProcessor {
111
145
  });
112
146
  await writer.appendDelta(delta);
113
147
  }
114
- // Mark session as processed (ADR-18)
115
- await this.markSessionProcessed(session.sessionId);
116
148
  logger.info(`[opencode-metrics] Wrote ${deltas.length} deltas for session ${session.sessionId}`);
117
149
  logger.info(`[opencode-metrics] Metrics file: ${writer.getFilePath()}`);
118
150
  return {
@@ -137,111 +169,127 @@ export class OpenCodeMetricsProcessor {
137
169
  }
138
170
  }
139
171
  /**
140
- * Check if session should be processed (cooldown check per ADR-18)
172
+ * Resolve the git branch every delta in this batch is attributed to.
173
+ *
174
+ * Mirrors codex.metrics-processor's resolveBranch: prefer the branch the CLI
175
+ * already resolved (BaseAgentAdapter sets CODEMIE_GIT_BRANCH before spawning),
176
+ * then the value the adapter overlaid onto session metadata, then detect it.
141
177
  */
142
- async shouldProcessSession(sessionId) {
178
+ async resolveBranch(context, sessionMetadata) {
179
+ if (context.gitBranch)
180
+ return context.gitBranch;
181
+ if (sessionMetadata.gitBranch)
182
+ return sessionMetadata.gitBranch;
183
+ if (!sessionMetadata.projectPath)
184
+ return undefined;
143
185
  try {
144
- const lastProcessedPath = join(this.cacheDir, `${sessionId}_last_processed`);
145
- if (existsSync(lastProcessedPath)) {
146
- const lastProcessed = parseInt(await readFile(lastProcessedPath, 'utf-8'), 10);
147
- if (Date.now() - lastProcessed < REPROCESS_COOLDOWN_MS) {
148
- logger.debug(`[opencode-metrics] Session ${sessionId} processed recently, skipping`);
149
- return false;
150
- }
151
- }
186
+ const { detectGitBranch } = await import('../../../../../utils/processes.js');
187
+ return (await detectGitBranch(sessionMetadata.projectPath)) ?? undefined;
152
188
  }
153
189
  catch {
154
- // File corrupt or missing, proceed with processing
155
- }
156
- return true;
157
- }
158
- /**
159
- * Mark session as processed (ADR-18)
160
- */
161
- async markSessionProcessed(sessionId) {
162
- try {
163
- const { mkdir } = await import('fs/promises');
164
- if (!existsSync(this.cacheDir)) {
165
- await mkdir(this.cacheDir, { recursive: true });
166
- }
167
- const lastProcessedPath = join(this.cacheDir, `${sessionId}_last_processed`);
168
- await writeFile(lastProcessedPath, Date.now().toString());
169
- }
170
- catch (error) {
171
- logger.debug(`[opencode-metrics] Failed to mark session processed: ${error}`);
190
+ return undefined;
172
191
  }
173
192
  }
174
193
  /**
175
- * Transform messages to MetricDelta records
194
+ * Transform messages to MetricDelta records.
195
+ *
196
+ * One delta per tool call (`{messageId}:{callID}`), per user prompt
197
+ * (`{messageId}:prompt`) and per failed turn (`{messageId}:error`).
176
198
  *
177
- * Per ADR-16: One delta per assistant message with tokens
199
+ * Granularity matters: when the recordId was the bare assistant message id,
200
+ * the first incremental tick claimed the message and every tool that message
201
+ * accumulated afterwards was deduped away and never reported.
178
202
  */
179
- async transformMessagesToDeltas(messages, codemieSessionId, openCodeSessionId, storagePath, sessionMetadata) {
203
+ async transformMessagesToDeltas(messages, codemieSessionId, openCodeSessionId, storagePath, sessionMetadata, gitBranch) {
180
204
  const deltas = [];
181
- const stats = {
182
- skippedDueToDedup: 0
183
- };
184
- // Get existing record IDs for deduplication (ADR-5)
205
+ const stats = { skippedDueToDedup: 0 };
206
+ // Single read of the existing JSONL — recordId dedup is the only state needed.
185
207
  const existingRecordIds = await this.getExistingRecordIds(codemieSessionId);
186
- const existingDeltas = await this.readExistingDeltas(codemieSessionId);
187
- // Track already-attached user prompts (ADR-21)
188
- const alreadyAttachedPrompts = new Set();
189
- for (const delta of existingDeltas) {
190
- if (delta.userPrompts) {
191
- for (const prompt of delta.userPrompts) {
192
- if (prompt.text)
193
- alreadyAttachedPrompts.add(prompt.text);
194
- }
195
- }
196
- }
197
- // Extract all user prompts (pass partsMap for SQLite-backed sessions)
198
- const allUserPrompts = await this.extractUserPrompts(messages, storagePath, openCodeSessionId, sessionMetadata.partsMap);
199
- // Filter to only NEW prompts
200
- const newPrompts = allUserPrompts.filter(p => !alreadyAttachedPrompts.has(p.text));
201
- let promptsAttached = false;
208
+ const base = (recordId, timestamp) => ({
209
+ recordId,
210
+ sessionId: codemieSessionId,
211
+ agentSessionId: openCodeSessionId,
212
+ timestamp,
213
+ ...(gitBranch && { gitBranch }),
214
+ });
202
215
  for (const msg of messages) {
203
- if (msg.role !== 'assistant')
204
- continue;
205
- const assistantMsg = msg;
206
- // Check deduplication (ADR-5, ADR-15)
207
- if (existingRecordIds.has(assistantMsg.id)) {
208
- stats.skippedDueToDedup++;
209
- continue;
210
- }
211
- // Load parts for this message (use pre-loaded partsMap if available from SQLite)
212
- const parts = await this.loadPartsForMessage(storagePath, assistantMsg.id, openCodeSessionId, sessionMetadata.partsMap);
213
- // Extract tool metrics
214
- const { tools, toolStatus, fileOperations } = this.extractToolMetrics(parts);
215
- // Skip if no tools, file ops, and not a prompt carrier (nothing meaningful to record)
216
- const hasData = Object.keys(tools).length > 0 || fileOperations.length > 0;
217
- const isPromptCarrier = !promptsAttached && newPrompts.length > 0;
218
- if (!hasData && !isPromptCarrier) {
216
+ const timestamp = this.resolveTimestamp(msg, sessionMetadata);
217
+ if (msg.role === 'user') {
218
+ const recordId = `${msg.id}:prompt`;
219
+ if (existingRecordIds.has(recordId)) {
220
+ stats.skippedDueToDedup++;
221
+ continue;
222
+ }
223
+ const text = await this.extractUserPromptText(msg, storagePath, openCodeSessionId, sessionMetadata.partsMap);
224
+ if (!text)
225
+ continue;
226
+ deltas.push({ ...base(recordId, timestamp), userPrompts: [{ count: 1, text }] });
219
227
  continue;
220
228
  }
221
- // Build delta (ADR-15: recordId is message.id)
222
- const delta = {
223
- recordId: assistantMsg.id,
224
- sessionId: codemieSessionId,
225
- agentSessionId: openCodeSessionId,
226
- timestamp: this.resolveTimestamp(assistantMsg, sessionMetadata),
227
- tools,
228
- ...(Object.keys(toolStatus).length > 0 && { toolStatus }),
229
- ...(fileOperations.length > 0 && { fileOperations })
230
- };
231
- // Add model if present (ADR-6)
232
- const modelString = this.getValidModelString(assistantMsg.providerID, assistantMsg.modelID);
233
- if (modelString) {
234
- delta.models = [modelString];
229
+ const assistantMsg = msg;
230
+ const modelString = this.getValidModelString(assistantMsg.modelID);
231
+ const parts = await loadPartsForMessage(storagePath, assistantMsg.id, openCodeSessionId, sessionMetadata.partsMap);
232
+ for (const part of parts.filter(isToolPart)) {
233
+ // callID is the semantically meaningful key, but older sessions and
234
+ // some tools omit it; part.id is the storage primary key and is always
235
+ // present, so it guarantees the recordId stays collision-free.
236
+ const recordId = `${assistantMsg.id}:${part.callID || part.id}`;
237
+ if (existingRecordIds.has(recordId)) {
238
+ stats.skippedDueToDedup++;
239
+ continue;
240
+ }
241
+ const toolDelta = this.buildToolDelta(part, base(recordId, timestamp), modelString);
242
+ if (toolDelta)
243
+ deltas.push(toolDelta);
235
244
  }
236
- // Attach user prompts to first NEW delta only (ADR-21)
237
- if (!promptsAttached && newPrompts.length > 0) {
238
- delta.userPrompts = newPrompts;
239
- promptsAttached = true;
245
+ // Turn-level failure. This is OpenCode's analogue of Claude's
246
+ // isApiErrorMessage entries and the ONLY source of apiErrorMessage —
247
+ // tool failures stay in toolStatus, exactly as codemie-claude does, so
248
+ // raw tool output never reaches the error_messages wire field.
249
+ if (assistantMsg.error) {
250
+ const recordId = `${assistantMsg.id}:error`;
251
+ if (existingRecordIds.has(recordId)) {
252
+ stats.skippedDueToDedup++;
253
+ continue;
254
+ }
255
+ const detail = assistantMsg.error.data?.message;
256
+ deltas.push({
257
+ ...base(recordId, timestamp),
258
+ apiErrorMessage: detail
259
+ ? `${assistantMsg.error.name}: ${detail}`
260
+ : assistantMsg.error.name,
261
+ ...(modelString && { models: [modelString] }),
262
+ });
240
263
  }
241
- deltas.push(delta);
242
264
  }
243
265
  return { deltas, stats };
244
266
  }
267
+ /**
268
+ * Build a single-tool delta, or undefined when the tool is still in flight.
269
+ */
270
+ buildToolDelta(part, delta, modelString) {
271
+ const toolName = part.tool.toLowerCase();
272
+ const statusResult = this.mapToolStatus(part.state.status);
273
+ // pending/running tools are not counted at all — a later tick picks them up
274
+ // once they settle, and the recordId keeps that second visit idempotent.
275
+ if (statusResult === 'skip')
276
+ return undefined;
277
+ const fileOperations = statusResult === 'success'
278
+ ? this.extractFileOperation(part.tool, part.state.input, part.state.metadata)
279
+ : [];
280
+ return {
281
+ ...delta,
282
+ tools: { [toolName]: 1 },
283
+ toolStatus: {
284
+ [toolName]: {
285
+ success: statusResult === 'success' ? 1 : 0,
286
+ failure: statusResult === 'failure' ? 1 : 0,
287
+ },
288
+ },
289
+ ...(fileOperations.length > 0 && { fileOperations }),
290
+ ...(modelString && { models: [modelString] }),
291
+ };
292
+ }
245
293
  /**
246
294
  * Resolve timestamp with fallback chain (ADR-13 G4)
247
295
  */
@@ -262,87 +310,6 @@ export class OpenCodeMetricsProcessor {
262
310
  logger.warn(`[opencode-metrics] Missing timestamp for message ${msg.id}, using Date.now()`);
263
311
  return Date.now();
264
312
  }
265
- /**
266
- * Load parts for a message (ADR-11 - part-message validation)
267
- *
268
- * When partsMap is provided (SQLite-backed sessions), uses pre-loaded parts
269
- * directly instead of reading from the filesystem.
270
- */
271
- async loadPartsForMessage(storagePath, messageId, expectedSessionId, partsMap) {
272
- // Use pre-loaded partsMap if available (from SQLite bulk query)
273
- if (partsMap && partsMap[messageId]) {
274
- const parts = partsMap[messageId];
275
- // Apply same validation as file-based path
276
- return parts.filter(part => {
277
- if (part.messageID !== messageId) {
278
- logger.debug(`[opencode-metrics] Skipping orphaned part ${part.id}: messageID mismatch`);
279
- return false;
280
- }
281
- if (expectedSessionId && part.sessionID !== expectedSessionId) {
282
- logger.debug(`[opencode-metrics] Skipping part ${part.id}: sessionID mismatch`);
283
- return false;
284
- }
285
- return true;
286
- }).sort((a, b) => a.id.localeCompare(b.id));
287
- }
288
- // File-based loading fallback
289
- const partsDir = join(storagePath, 'part', messageId);
290
- if (!existsSync(partsDir)) {
291
- return [];
292
- }
293
- const parts = [];
294
- try {
295
- const files = await readdir(partsDir);
296
- for (const file of files) {
297
- if (!file.endsWith('.json'))
298
- continue;
299
- const part = await readJsonWithRetry(join(partsDir, file));
300
- if (!part)
301
- continue;
302
- // Validate part belongs to this message (ADR-11)
303
- if (part.messageID !== messageId) {
304
- logger.debug(`[opencode-metrics] Skipping orphaned part ${part.id}: messageID mismatch`);
305
- continue;
306
- }
307
- // Optionally validate session correlation
308
- if (expectedSessionId && part.sessionID !== expectedSessionId) {
309
- logger.debug(`[opencode-metrics] Skipping part ${part.id}: sessionID mismatch`);
310
- continue;
311
- }
312
- parts.push(part);
313
- }
314
- }
315
- catch (error) {
316
- logger.debug(`[opencode-metrics] Error loading parts from ${partsDir}:`, error);
317
- }
318
- return parts.sort((a, b) => a.id.localeCompare(b.id));
319
- }
320
- /**
321
- * Extract tool metrics from parts (ADR-8, ADR-14)
322
- */
323
- extractToolMetrics(parts) {
324
- const tools = {};
325
- const toolStatus = {};
326
- const fileOperations = [];
327
- const toolParts = parts.filter(isToolPart);
328
- for (const part of toolParts) {
329
- const toolName = part.tool.toLowerCase();
330
- tools[toolName] = (tools[toolName] || 0) + 1;
331
- const statusResult = this.mapToolStatus(part.state.status);
332
- if (statusResult !== 'skip') {
333
- if (!toolStatus[toolName]) {
334
- toolStatus[toolName] = { success: 0, failure: 0 };
335
- }
336
- toolStatus[toolName][statusResult]++;
337
- // Extract file operations only for completed tools (ADR-8)
338
- if (statusResult === 'success') {
339
- const ops = this.extractFileOperation(part.tool, part.state.input, part.state.metadata);
340
- fileOperations.push(...ops);
341
- }
342
- }
343
- }
344
- return { tools, toolStatus, fileOperations };
345
- }
346
313
  /**
347
314
  * Map tool status to success/failure/skip (ADR-14)
348
315
  */
@@ -374,29 +341,31 @@ export class OpenCodeMetricsProcessor {
374
341
  'edit': 'edit',
375
342
  'glob': 'glob',
376
343
  'grep': 'grep',
377
- 'apply_patch': 'edit', // Map to edit, not patch
344
+ 'apply_patch': 'edit', // per-file type refines this below
345
+ 'patch': 'edit', // per-file type refines this below
378
346
  'multiedit': 'edit', // Map to edit, not multiedit
379
347
  };
380
348
  const mappedType = typeMapping[toolLower];
381
349
  if (!mappedType)
382
350
  return [];
383
- // Handle apply_patch - extract from state.metadata.files (ADR-17)
384
- if (toolLower === 'apply_patch') {
351
+ // apply_patch / patch — state.metadata.files carries one entry per touched
352
+ // file with its own operation kind and diff (ADR-17). The per-file `type` is
353
+ // what makes files_deleted reachable; mapping every entry to 'edit' left it
354
+ // permanently 0.
355
+ if (toolLower === 'apply_patch' || toolLower === 'patch') {
385
356
  const files = metadata?.files;
386
357
  if (Array.isArray(files)) {
387
358
  for (const file of files) {
388
359
  const path = file.filePath || file.relativePath;
389
- if (typeof path === 'string') {
390
- const op = { type: 'edit', path };
391
- // Add line metrics from apply_patch (ADR-8)
392
- if (typeof file.additions === 'number') {
393
- op.linesAdded = file.additions;
394
- }
395
- if (typeof file.deletions === 'number') {
396
- op.linesRemoved = file.deletions;
397
- }
398
- operations.push(op);
399
- }
360
+ if (typeof path !== 'string')
361
+ continue;
362
+ const { linesAdded, linesRemoved } = countDiffLines(file.patch);
363
+ operations.push({
364
+ type: mapPatchFileType(file.type),
365
+ path,
366
+ ...(linesAdded > 0 && { linesAdded }),
367
+ ...(linesRemoved > 0 && { linesRemoved }),
368
+ });
400
369
  }
401
370
  }
402
371
  return operations;
@@ -413,7 +382,6 @@ export class OpenCodeMetricsProcessor {
413
382
  }
414
383
  return operations;
415
384
  }
416
- // Standard file operations
417
385
  const fileOp = { type: mappedType };
418
386
  // Per ADR-17: field names are camelCase (filePath, not file_path)
419
387
  const filePath = input?.filePath || input?.path;
@@ -423,23 +391,25 @@ export class OpenCodeMetricsProcessor {
423
391
  if (typeof input?.pattern === 'string') {
424
392
  fileOp.pattern = input.pattern;
425
393
  }
426
- operations.push(fileOp);
427
- return operations;
428
- }
429
- /**
430
- * Extract user prompts from messages (ADR-10, ADR-20)
431
- */
432
- async extractUserPrompts(messages, storagePath, sessionId, partsMap) {
433
- const prompts = [];
434
- for (const msg of messages) {
435
- if (msg.role !== 'user')
436
- continue;
437
- const text = await this.extractUserPromptText(msg, storagePath, sessionId, partsMap);
438
- if (text) {
439
- prompts.push({ count: 1, text });
394
+ if (toolLower === 'write') {
395
+ // A write creates the whole file, so every line is an addition. Matches
396
+ // claude-file-operation.ts, which counts Write content lines the same way.
397
+ const content = input?.content;
398
+ if (typeof content === 'string' && content.length > 0) {
399
+ fileOp.linesAdded = content.split('\n').length;
440
400
  }
441
401
  }
442
- return prompts;
402
+ if (toolLower === 'edit') {
403
+ // OpenCode reports the edit as diff text; there is no numeric count.
404
+ const filediff = metadata?.filediff;
405
+ const { linesAdded, linesRemoved } = countDiffLines(filediff?.patch ?? metadata?.diff);
406
+ if (linesAdded > 0)
407
+ fileOp.linesAdded = linesAdded;
408
+ if (linesRemoved > 0)
409
+ fileOp.linesRemoved = linesRemoved;
410
+ }
411
+ operations.push(fileOp);
412
+ return operations;
443
413
  }
444
414
  /**
445
415
  * Extract user prompt text from message (ADR-10, ADR-20)
@@ -448,7 +418,7 @@ export class OpenCodeMetricsProcessor {
448
418
  // Try pre-loaded partsMap first (SQLite path), then file-based
449
419
  const hasParts = partsMap?.[msg.id] || existsSync(join(storagePath, 'part', msg.id));
450
420
  if (hasParts) {
451
- const parts = await this.loadPartsForMessage(storagePath, msg.id, sessionId, partsMap);
421
+ const parts = await loadPartsForMessage(storagePath, msg.id, sessionId, partsMap);
452
422
  // Filter: exclude ignored and synthetic parts (ADR-10)
453
423
  const textParts = parts.filter(p => p.type === 'text' &&
454
424
  'text' in p &&
@@ -472,46 +442,34 @@ export class OpenCodeMetricsProcessor {
472
442
  return undefined;
473
443
  }
474
444
  /**
475
- * Get existing record IDs for deduplication (ADR-5)
476
- * Uses tolerant JSONL reading to handle corrupted lines.
445
+ * Get existing record IDs for deduplication (ADR-5).
446
+ * Single tolerant read of the JSONL — corrupted lines are skipped.
477
447
  */
478
448
  async getExistingRecordIds(sessionId) {
479
- try {
480
- const existingDeltas = await this.readExistingDeltas(sessionId);
481
- return new Set(existingDeltas.map(d => d.recordId));
482
- }
483
- catch (error) {
484
- logger.warn('[opencode-metrics] Could not read existing deltas:', error);
485
- return new Set();
486
- }
487
- }
488
- /**
489
- * Read existing deltas from JSONL file (ADR-5, ADR-21)
490
- */
491
- async readExistingDeltas(sessionId) {
492
449
  try {
493
450
  const { MetricsWriter } = await import('../../../../../providers/plugins/sso/session/processors/metrics/MetricsWriter.js');
494
451
  const writer = new MetricsWriter(sessionId);
495
452
  if (!writer.exists()) {
496
- return [];
453
+ return new Set();
497
454
  }
498
- // Use tolerant read that skips corrupted lines
499
- return await readJsonlTolerant(writer.getFilePath());
455
+ const existingDeltas = await readJsonlTolerant(writer.getFilePath());
456
+ return new Set(existingDeltas.map(d => d.recordId));
500
457
  }
501
458
  catch (error) {
502
- logger.debug('[opencode-metrics] Could not read existing deltas:', error);
503
- return [];
459
+ logger.warn('[opencode-metrics] Could not read existing deltas:', error);
460
+ return new Set();
504
461
  }
505
462
  }
506
463
  /**
507
- * Get valid model string (ADR-6)
464
+ * Get valid model string (ADR-6).
465
+ *
466
+ * Returns the BARE model id. codemie-claude reports `llm_model` without a
467
+ * provider prefix, so emitting `codemie-proxy/<model>` here would split the
468
+ * same model into two buckets in backend analytics. The provider stays on
469
+ * session metadata for local traceability.
508
470
  */
509
- getValidModelString(providerID, modelID) {
510
- const model = modelID?.trim();
511
- if (!model)
512
- return undefined;
513
- const provider = providerID?.toLowerCase().trim();
514
- return provider ? `${provider}/${model}` : model;
471
+ getValidModelString(modelID) {
472
+ return modelID?.trim() || undefined;
515
473
  }
516
474
  }
517
475
  //# sourceMappingURL=opencode.metrics-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.metrics-processor.js","sourceRoot":"","sources":["../../../../../../src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.metrics-processor.js","sourceRoot":"","sources":["../../../../../../src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts"],"names":[],"mappings":"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"}