@codemieai/code 0.0.41 → 0.0.43

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 (196) hide show
  1. package/README.md +3 -3
  2. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  3. package/dist/agents/codemie-code/agent.js +5 -0
  4. package/dist/agents/codemie-code/agent.js.map +1 -1
  5. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  6. package/dist/agents/core/AgentCLI.js +43 -16
  7. package/dist/agents/core/AgentCLI.js.map +1 -1
  8. package/dist/agents/core/BaseAgentAdapter.d.ts +1 -0
  9. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  10. package/dist/agents/core/BaseAgentAdapter.js +49 -15
  11. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  12. package/dist/agents/core/plugin-injector.d.ts +18 -0
  13. package/dist/agents/core/plugin-injector.d.ts.map +1 -0
  14. package/dist/agents/core/plugin-injector.js +50 -0
  15. package/dist/agents/core/plugin-injector.js.map +1 -0
  16. package/dist/agents/core/session/ensure-session.d.ts +10 -0
  17. package/dist/agents/core/session/ensure-session.d.ts.map +1 -0
  18. package/dist/agents/core/session/ensure-session.js +58 -0
  19. package/dist/agents/core/session/ensure-session.js.map +1 -0
  20. package/dist/agents/core/temp-config.d.ts +10 -0
  21. package/dist/agents/core/temp-config.d.ts.map +1 -0
  22. package/dist/agents/core/temp-config.js +45 -0
  23. package/dist/agents/core/temp-config.js.map +1 -0
  24. package/dist/agents/core/types.d.ts +8 -0
  25. package/dist/agents/core/types.d.ts.map +1 -1
  26. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +7 -0
  27. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -1
  28. package/dist/agents/plugins/claude/claude-acp.plugin.js +10 -0
  29. package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -1
  30. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +11 -0
  31. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -1
  32. package/dist/agents/plugins/claude/claude.plugin-installer.js +32 -0
  33. package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -1
  34. package/dist/agents/plugins/claude/claude.plugin.js +4 -4
  35. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  36. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  37. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +10 -0
  38. package/dist/agents/plugins/claude/plugin/hooks/hooks.windows.json +98 -0
  39. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-auto-wrapper.sh +81 -0
  40. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-baseline.sh +39 -0
  41. package/dist/agents/plugins/claude/sounds-installer.d.ts.map +1 -1
  42. package/dist/agents/plugins/claude/sounds-installer.js +0 -4
  43. package/dist/agents/plugins/claude/sounds-installer.js.map +1 -1
  44. package/dist/agents/plugins/codemie-code-hooks/index.d.ts +3 -0
  45. package/dist/agents/plugins/codemie-code-hooks/index.d.ts.map +1 -0
  46. package/dist/agents/plugins/codemie-code-hooks/index.js +3 -0
  47. package/dist/agents/plugins/codemie-code-hooks/index.js.map +1 -0
  48. package/dist/agents/plugins/codemie-code-hooks/inject-hooks.d.ts +3 -0
  49. package/dist/agents/plugins/codemie-code-hooks/inject-hooks.d.ts.map +1 -0
  50. package/dist/agents/plugins/codemie-code-hooks/inject-hooks.js +6 -0
  51. package/dist/agents/plugins/codemie-code-hooks/inject-hooks.js.map +1 -0
  52. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.d.ts +15 -0
  53. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.d.ts.map +1 -0
  54. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.js +522 -0
  55. package/dist/agents/plugins/codemie-code-hooks/shell-hooks-source.js.map +1 -0
  56. package/dist/agents/plugins/codemie-code.plugin.d.ts +5 -2
  57. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  58. package/dist/agents/plugins/codemie-code.plugin.js +235 -148
  59. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  60. package/dist/agents/plugins/gemini/gemini.plugin.js +1 -1
  61. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  62. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +2 -0
  63. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -1
  64. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -1
  65. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -1
  66. package/dist/agents/plugins/opencode/opencode-model-configs.js +89 -0
  67. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -1
  68. package/dist/agents/plugins/opencode/opencode.paths.d.ts +16 -1
  69. package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -1
  70. package/dist/agents/plugins/opencode/opencode.paths.js +43 -5
  71. package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -1
  72. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  73. package/dist/agents/plugins/opencode/opencode.plugin.js +35 -120
  74. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  75. package/dist/agents/plugins/opencode/opencode.session.d.ts +5 -0
  76. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -1
  77. package/dist/agents/plugins/opencode/opencode.session.js +99 -2
  78. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -1
  79. package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts +59 -0
  80. package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts.map +1 -0
  81. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js +200 -0
  82. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js.map +1 -0
  83. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +3 -0
  84. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -1
  85. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +35 -13
  86. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -1
  87. package/dist/agents/plugins/reasoning-sanitizer/index.d.ts +3 -0
  88. package/dist/agents/plugins/reasoning-sanitizer/index.d.ts.map +1 -0
  89. package/dist/agents/plugins/reasoning-sanitizer/index.js +3 -0
  90. package/dist/agents/plugins/reasoning-sanitizer/index.js.map +1 -0
  91. package/dist/agents/plugins/reasoning-sanitizer/inject-sanitizer.d.ts +3 -0
  92. package/dist/agents/plugins/reasoning-sanitizer/inject-sanitizer.d.ts.map +1 -0
  93. package/dist/agents/plugins/reasoning-sanitizer/inject-sanitizer.js +6 -0
  94. package/dist/agents/plugins/reasoning-sanitizer/inject-sanitizer.js.map +1 -0
  95. package/dist/agents/plugins/reasoning-sanitizer/reasoning-sanitizer-source.d.ts +17 -0
  96. package/dist/agents/plugins/reasoning-sanitizer/reasoning-sanitizer-source.d.ts.map +1 -0
  97. package/dist/agents/plugins/reasoning-sanitizer/reasoning-sanitizer-source.js +40 -0
  98. package/dist/agents/plugins/reasoning-sanitizer/reasoning-sanitizer-source.js.map +1 -0
  99. package/dist/cli/commands/analytics/data-loader.js +1 -1
  100. package/dist/cli/commands/analytics/data-loader.js.map +1 -1
  101. package/dist/cli/commands/doctor/checks/JWTAuthCheck.d.ts +9 -0
  102. package/dist/cli/commands/doctor/checks/JWTAuthCheck.d.ts.map +1 -0
  103. package/dist/cli/commands/doctor/checks/JWTAuthCheck.js +113 -0
  104. package/dist/cli/commands/doctor/checks/JWTAuthCheck.js.map +1 -0
  105. package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
  106. package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
  107. package/dist/cli/commands/doctor/checks/index.js +1 -0
  108. package/dist/cli/commands/doctor/checks/index.js.map +1 -1
  109. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  110. package/dist/cli/commands/doctor/index.js +93 -88
  111. package/dist/cli/commands/doctor/index.js.map +1 -1
  112. package/dist/cli/commands/hook.js +5 -5
  113. package/dist/cli/commands/hook.js.map +1 -1
  114. package/dist/cli/commands/test-metrics.d.ts +17 -0
  115. package/dist/cli/commands/test-metrics.d.ts.map +1 -0
  116. package/dist/cli/commands/test-metrics.js +198 -0
  117. package/dist/cli/commands/test-metrics.js.map +1 -0
  118. package/dist/cli/index.js +2 -0
  119. package/dist/cli/index.js.map +1 -1
  120. package/dist/env/types.d.ts +12 -2
  121. package/dist/env/types.d.ts.map +1 -1
  122. package/dist/env/types.js.map +1 -1
  123. package/dist/providers/core/types.d.ts +22 -1
  124. package/dist/providers/core/types.d.ts.map +1 -1
  125. package/dist/providers/core/types.js +12 -1
  126. package/dist/providers/core/types.js.map +1 -1
  127. package/dist/providers/index.d.ts +2 -0
  128. package/dist/providers/index.d.ts.map +1 -1
  129. package/dist/providers/index.js +2 -0
  130. package/dist/providers/index.js.map +1 -1
  131. package/dist/providers/integration/setup-ui.d.ts.map +1 -1
  132. package/dist/providers/integration/setup-ui.js +3 -1
  133. package/dist/providers/integration/setup-ui.js.map +1 -1
  134. package/dist/providers/plugins/bedrock/bedrock.utils.d.ts +12 -0
  135. package/dist/providers/plugins/bedrock/bedrock.utils.d.ts.map +1 -0
  136. package/dist/providers/plugins/bedrock/bedrock.utils.js +19 -0
  137. package/dist/providers/plugins/bedrock/bedrock.utils.js.map +1 -0
  138. package/dist/providers/plugins/jwt/index.d.ts +9 -0
  139. package/dist/providers/plugins/jwt/index.d.ts.map +1 -0
  140. package/dist/providers/plugins/jwt/index.js +13 -0
  141. package/dist/providers/plugins/jwt/index.js.map +1 -0
  142. package/dist/providers/plugins/jwt/jwt.setup-steps.d.ts +9 -0
  143. package/dist/providers/plugins/jwt/jwt.setup-steps.d.ts.map +1 -0
  144. package/dist/providers/plugins/jwt/jwt.setup-steps.js +153 -0
  145. package/dist/providers/plugins/jwt/jwt.setup-steps.js.map +1 -0
  146. package/dist/providers/plugins/jwt/jwt.template.d.ts +12 -0
  147. package/dist/providers/plugins/jwt/jwt.template.d.ts.map +1 -0
  148. package/dist/providers/plugins/jwt/jwt.template.js +55 -0
  149. package/dist/providers/plugins/jwt/jwt.template.js.map +1 -0
  150. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  151. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  152. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  153. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  154. package/dist/providers/plugins/sso/proxy/plugins/jwt-auth.plugin.d.ts +16 -0
  155. package/dist/providers/plugins/sso/proxy/plugins/jwt-auth.plugin.d.ts.map +1 -0
  156. package/dist/providers/plugins/sso/proxy/plugins/jwt-auth.plugin.js +53 -0
  157. package/dist/providers/plugins/sso/proxy/plugins/jwt-auth.plugin.js.map +1 -0
  158. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.d.ts +25 -0
  159. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.d.ts.map +1 -0
  160. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.js +74 -0
  161. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.js.map +1 -0
  162. package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.d.ts.map +1 -1
  163. package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js +13 -2
  164. package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js.map +1 -1
  165. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -1
  166. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +6 -3
  167. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -1
  168. package/dist/providers/plugins/sso/proxy/plugins/types.d.ts +2 -2
  169. package/dist/providers/plugins/sso/proxy/plugins/types.d.ts.map +1 -1
  170. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +2 -0
  171. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  172. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts +4 -0
  173. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  174. package/dist/providers/plugins/sso/proxy/sso.proxy.js +39 -10
  175. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  176. package/dist/providers/plugins/sso/sso.http-client.d.ts +38 -8
  177. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  178. package/dist/providers/plugins/sso/sso.http-client.js +83 -85
  179. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  180. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
  181. package/dist/providers/plugins/sso/sso.models.js +3 -3
  182. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  183. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  184. package/dist/providers/plugins/sso/sso.setup-steps.js +4 -1
  185. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  186. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  187. package/dist/providers/plugins/sso/sso.template.js +7 -0
  188. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  189. package/dist/utils/paths.d.ts +1 -1
  190. package/dist/utils/paths.js +1 -1
  191. package/dist/utils/security.d.ts +18 -1
  192. package/dist/utils/security.d.ts.map +1 -1
  193. package/dist/utils/security.js +102 -0
  194. package/dist/utils/security.js.map +1 -1
  195. package/package.json +1 -1
  196. package/scripts/copy-mr-skill-to-global.ts +0 -252
@@ -2,7 +2,8 @@
2
2
  import { readFile, readdir, stat } from 'fs/promises';
3
3
  import { join, dirname, sep } from 'path';
4
4
  import { existsSync } from 'fs';
5
- import { getOpenCodeSessionsPath } from './opencode.paths.js';
5
+ import { getOpenCodeSessionsPath, getOpenCodeDbPath } from './opencode.paths.js';
6
+ import { isSqliteAvailable, readSessionsFromDb, readMessagesFromDb, readAllPartsForSessionFromDb, } from './opencode.sqlite-reader.js';
6
7
  import { logger } from '../../../utils/logger.js';
7
8
  import { OpenCodeMetricsProcessor } from './session/processors/opencode.metrics-processor.js';
8
9
  import { OpenCodeConversationsProcessor } from './session/processors/opencode.conversations-processor.js';
@@ -91,6 +92,10 @@ export class OpenCodeSessionAdapter {
91
92
  * not ISO strings. We convert to ISO for CodeMie's canonical format.
92
93
  */
93
94
  async parseSessionFile(filePath, sessionId) {
95
+ // Route to SQLite parsing if filePath points to a .db file
96
+ if (filePath.endsWith('.db')) {
97
+ return this.parseSessionFromDb(filePath, sessionId);
98
+ }
94
99
  try {
95
100
  // Validate path shape before proceeding (GPT-5.8 fix)
96
101
  // Expected: .../storage/session/{projectId}/{sessionId}.json
@@ -129,7 +134,8 @@ export class OpenCodeSessionAdapter {
129
134
  // Per tech spec ADR-1: Expose storage path and OpenCode session ID for metrics processor
130
135
  storagePath,
131
136
  openCodeSessionId: session.id,
132
- openCodeVersion: session.version
137
+ openCodeVersion: session.version,
138
+ storageType: 'file',
133
139
  };
134
140
  return {
135
141
  sessionId,
@@ -144,6 +150,62 @@ export class OpenCodeSessionAdapter {
144
150
  throw error;
145
151
  }
146
152
  }
153
+ /**
154
+ * Parse a session from SQLite database.
155
+ * Reads session, messages, and all parts in bulk from opencode.db.
156
+ */
157
+ async parseSessionFromDb(dbPath, sessionId) {
158
+ try {
159
+ logger.debug(`[opencode-adapter] Parsing session ${sessionId} from SQLite: ${dbPath}`);
160
+ // Read session data
161
+ // Note: sessionId may be a CodeMie UUID (not an OpenCode ses_* ID).
162
+ // Try exact match first, then fallback to most recent session (sorted by time_created DESC).
163
+ const sessions = await readSessionsFromDb(dbPath, { maxAgeDays: 1 });
164
+ const session = sessions.find(s => s.id === sessionId) ?? sessions[0];
165
+ if (!session) {
166
+ throw new Error(`Session ${sessionId} not found in SQLite DB: ${dbPath}`);
167
+ }
168
+ if (session.id !== sessionId) {
169
+ logger.debug(`[opencode-adapter] Mapped CodeMie session ${sessionId} → OpenCode session ${session.id}`);
170
+ }
171
+ // Read messages using OpenCode session ID (not CodeMie UUID)
172
+ const messages = await readMessagesFromDb(dbPath, session.id);
173
+ // Read all parts for this session in one bulk query
174
+ const partsMap = await readAllPartsForSessionFromDb(dbPath, session.id);
175
+ // Extract metrics from messages
176
+ const metrics = this.extractMetrics(messages);
177
+ logger.debug(`[opencode-adapter] Parsed SQLite session ${sessionId}: ${messages.length} messages, ` +
178
+ `${Object.keys(partsMap).length} messages with parts, ` +
179
+ `${metrics?.tokens?.input || 0} input tokens, ${metrics?.tokens?.output || 0} output tokens`);
180
+ // Derive storagePath from dbPath: dbPath is .../opencode/opencode.db → storage is .../opencode/storage
181
+ const storagePath = join(dirname(dbPath), 'storage');
182
+ const metadata = {
183
+ projectPath: session.directory,
184
+ createdAt: session.time?.created
185
+ ? new Date(session.time.created).toISOString()
186
+ : undefined,
187
+ updatedAt: session.time?.updated
188
+ ? new Date(session.time.updated).toISOString()
189
+ : undefined,
190
+ storagePath,
191
+ openCodeSessionId: session.id,
192
+ openCodeVersion: session.version,
193
+ partsMap,
194
+ storageType: 'sqlite',
195
+ };
196
+ return {
197
+ sessionId,
198
+ agentName: this.metadata.displayName || 'opencode',
199
+ metadata,
200
+ messages,
201
+ metrics,
202
+ };
203
+ }
204
+ catch (error) {
205
+ logger.error(`[opencode-adapter] Failed to parse SQLite session ${sessionId}:`, error);
206
+ throw error;
207
+ }
208
+ }
147
209
  /**
148
210
  * Validate session path has expected structure (GPT-5.8 fix, updated GPT-5.10/5.11)
149
211
  * Expected: .../storage/session/{projectId}/{sessionId}.json
@@ -317,6 +379,41 @@ export class OpenCodeSessionAdapter {
317
379
  * Applies 30-day default filter and optional cwd filter.
318
380
  */
319
381
  async discoverSessions(options) {
382
+ // SQLite-first detection: check if opencode.db exists and sqlite3 CLI is available
383
+ const dbPath = getOpenCodeDbPath();
384
+ if (dbPath && await isSqliteAvailable()) {
385
+ logger.debug(`[opencode-discovery] Using SQLite storage: ${dbPath}`);
386
+ try {
387
+ const sessions = await readSessionsFromDb(dbPath, {
388
+ maxAgeDays: options?.maxAgeDays ?? 30,
389
+ cwd: options?.cwd,
390
+ });
391
+ const descriptors = sessions.map(session => ({
392
+ sessionId: session.id,
393
+ filePath: dbPath, // Point to DB file for parseSessionFile routing
394
+ projectPath: session.directory,
395
+ createdAt: session.time?.created ?? 0,
396
+ updatedAt: typeof session.time?.updated === 'number' ? session.time.updated : undefined,
397
+ agentName: 'opencode',
398
+ }));
399
+ // Sort by createdAt descending (newest first)
400
+ descriptors.sort((a, b) => b.createdAt - a.createdAt);
401
+ // Apply limit
402
+ if (options?.limit && options.limit > 0) {
403
+ const limited = descriptors.slice(0, options.limit);
404
+ logger.debug(`[opencode-discovery] Found ${descriptors.length} SQLite sessions, returning ${limited.length} (limit: ${options.limit})`);
405
+ return limited;
406
+ }
407
+ logger.debug(`[opencode-discovery] Found ${descriptors.length} SQLite sessions`);
408
+ return descriptors;
409
+ }
410
+ catch (error) {
411
+ const msg = error instanceof Error ? error.message : String(error);
412
+ logger.warn(`[opencode-discovery] SQLite discovery failed, falling back to file-based: ${msg}`);
413
+ // Fall through to file-based discovery
414
+ }
415
+ }
416
+ // File-based discovery (legacy fallback)
320
417
  const sessionsPath = getOpenCodeSessionsPath();
321
418
  if (!sessionsPath) {
322
419
  logger.debug('[opencode-discovery] Sessions path not found (OpenCode not installed?)');
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.session.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode.session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.session.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode.session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * OpenCode SQLite Reader
3
+ *
4
+ * Reads session/message/part data from OpenCode's SQLite database (opencode.db)
5
+ * using the system `sqlite3` CLI with `-json` output.
6
+ *
7
+ * OpenCode migrated from file-based storage (JSON in storage/session/, storage/message/,
8
+ * storage/part/) to SQLite. This module provides read access to the new format without
9
+ * adding any npm dependencies — it shells out to the pre-installed sqlite3 CLI.
10
+ *
11
+ * Usage: Called once at session end (not performance-critical).
12
+ */
13
+ import type { OpenCodeSession, OpenCodeMessage, OpenCodePart } from './opencode-message-types.js';
14
+ /**
15
+ * Check if the sqlite3 CLI is available on this system.
16
+ */
17
+ export declare function isSqliteAvailable(): Promise<boolean>;
18
+ /**
19
+ * Get the path to opencode.db given a storage path.
20
+ *
21
+ * OpenCode's DB lives one level above storage/:
22
+ * ~/.codemie/opencode-storage/opencode/opencode.db
23
+ * ~/.codemie/opencode-storage/opencode/storage/ (storagePath)
24
+ *
25
+ * @param storagePath - The storage/ directory path
26
+ * @returns Path to opencode.db, or null if not found
27
+ */
28
+ export declare function getDbPathFromStorage(storagePath: string): string | null;
29
+ /**
30
+ * Read sessions from the SQLite database.
31
+ *
32
+ * @param dbPath - Path to opencode.db
33
+ * @param options - Optional filtering (maxAgeDays, cwd)
34
+ * @returns Array of OpenCodeSession objects
35
+ */
36
+ export declare function readSessionsFromDb(dbPath: string, options?: {
37
+ maxAgeDays?: number;
38
+ cwd?: string;
39
+ }): Promise<OpenCodeSession[]>;
40
+ /**
41
+ * Read messages for a session from the SQLite database.
42
+ *
43
+ * @param dbPath - Path to opencode.db
44
+ * @param sessionId - The OpenCode session ID
45
+ * @returns Array of OpenCodeMessage objects sorted by creation time
46
+ */
47
+ export declare function readMessagesFromDb(dbPath: string, sessionId: string): Promise<OpenCodeMessage[]>;
48
+ /**
49
+ * Read all parts for a session from the SQLite database, grouped by message ID.
50
+ *
51
+ * Does a single bulk query for all parts in the session, then groups by message_id.
52
+ * This is more efficient than querying per-message.
53
+ *
54
+ * @param dbPath - Path to opencode.db
55
+ * @param sessionId - The OpenCode session ID
56
+ * @returns Map of messageId -> OpenCodePart[]
57
+ */
58
+ export declare function readAllPartsForSessionFromDb(dbPath: string, sessionId: string): Promise<Record<string, OpenCodePart[]>>;
59
+ //# sourceMappingURL=opencode.sqlite-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.sqlite-reader.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode.sqlite-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAGf,YAAY,EACb,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGvE;AAmED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,eAAe,EAAE,CAAC,CA0C5B;AASD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC,CAkD5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CA+BzC"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * OpenCode SQLite Reader
3
+ *
4
+ * Reads session/message/part data from OpenCode's SQLite database (opencode.db)
5
+ * using the system `sqlite3` CLI with `-json` output.
6
+ *
7
+ * OpenCode migrated from file-based storage (JSON in storage/session/, storage/message/,
8
+ * storage/part/) to SQLite. This module provides read access to the new format without
9
+ * adding any npm dependencies — it shells out to the pre-installed sqlite3 CLI.
10
+ *
11
+ * Usage: Called once at session end (not performance-critical).
12
+ */
13
+ import { existsSync } from 'fs';
14
+ import { dirname, join } from 'path';
15
+ import { commandExists } from '../../../utils/processes.js';
16
+ import { exec } from '../../../utils/exec.js';
17
+ import { logger } from '../../../utils/logger.js';
18
+ /**
19
+ * Check if the sqlite3 CLI is available on this system.
20
+ */
21
+ export async function isSqliteAvailable() {
22
+ return commandExists('sqlite3');
23
+ }
24
+ /**
25
+ * Get the path to opencode.db given a storage path.
26
+ *
27
+ * OpenCode's DB lives one level above storage/:
28
+ * ~/.codemie/opencode-storage/opencode/opencode.db
29
+ * ~/.codemie/opencode-storage/opencode/storage/ (storagePath)
30
+ *
31
+ * @param storagePath - The storage/ directory path
32
+ * @returns Path to opencode.db, or null if not found
33
+ */
34
+ export function getDbPathFromStorage(storagePath) {
35
+ const dbPath = join(dirname(storagePath), 'opencode.db');
36
+ return existsSync(dbPath) ? dbPath : null;
37
+ }
38
+ /**
39
+ * Execute a read-only SQLite query and return parsed JSON rows.
40
+ *
41
+ * @param dbPath - Path to the SQLite database
42
+ * @param sql - SQL query to execute
43
+ * @returns Parsed rows as an array of objects
44
+ */
45
+ async function queryDb(dbPath, sql) {
46
+ try {
47
+ const result = await exec('sqlite3', ['-json', '-readonly', dbPath, sql], {
48
+ timeout: 10_000,
49
+ });
50
+ if (result.code !== 0) {
51
+ logger.debug(`[sqlite-reader] sqlite3 exited with code ${result.code}: ${result.stderr}`);
52
+ return [];
53
+ }
54
+ const output = result.stdout.trim();
55
+ if (!output || output === '[]') {
56
+ return [];
57
+ }
58
+ return JSON.parse(output);
59
+ }
60
+ catch (error) {
61
+ const msg = error instanceof Error ? error.message : String(error);
62
+ logger.debug(`[sqlite-reader] Query failed: ${msg}`);
63
+ return [];
64
+ }
65
+ }
66
+ /**
67
+ * Read sessions from the SQLite database.
68
+ *
69
+ * @param dbPath - Path to opencode.db
70
+ * @param options - Optional filtering (maxAgeDays, cwd)
71
+ * @returns Array of OpenCodeSession objects
72
+ */
73
+ export async function readSessionsFromDb(dbPath, options) {
74
+ const rows = await queryDb(dbPath, `SELECT id, project_id, slug, directory, title, version, time_created, time_updated FROM session ORDER BY time_created DESC`);
75
+ const sessions = [];
76
+ const maxAgeMs = (options?.maxAgeDays ?? 30) * 24 * 60 * 60 * 1000;
77
+ const cutoff = Date.now() - maxAgeMs;
78
+ const normalizedCwd = options?.cwd?.replace(/\/+$/, '');
79
+ for (const row of rows) {
80
+ const session = {
81
+ id: row.id,
82
+ title: row.title,
83
+ directory: row.directory || '',
84
+ time: {
85
+ created: row.time_created ?? 0,
86
+ updated: row.time_updated ?? 0,
87
+ },
88
+ projectID: row.project_id,
89
+ slug: row.slug,
90
+ version: row.version,
91
+ };
92
+ // Apply age filter
93
+ if (session.time.created && session.time.created < cutoff) {
94
+ continue;
95
+ }
96
+ // Apply cwd filter
97
+ if (normalizedCwd && session.directory) {
98
+ const normalizedDir = session.directory.replace(/\/+$/, '');
99
+ if (normalizedDir !== normalizedCwd) {
100
+ continue;
101
+ }
102
+ }
103
+ sessions.push(session);
104
+ }
105
+ return sessions;
106
+ }
107
+ /**
108
+ * Escape a string for safe use in SQL single-quoted literals.
109
+ */
110
+ function escapeSqlString(value) {
111
+ return value.replace(/'/g, "''");
112
+ }
113
+ /**
114
+ * Read messages for a session from the SQLite database.
115
+ *
116
+ * @param dbPath - Path to opencode.db
117
+ * @param sessionId - The OpenCode session ID
118
+ * @returns Array of OpenCodeMessage objects sorted by creation time
119
+ */
120
+ export async function readMessagesFromDb(dbPath, sessionId) {
121
+ const escapedId = escapeSqlString(sessionId);
122
+ const rows = await queryDb(dbPath, `SELECT id, session_id, data FROM message WHERE session_id = '${escapedId}'`);
123
+ const messages = [];
124
+ for (const row of rows) {
125
+ try {
126
+ const data = JSON.parse(row.data);
127
+ const role = data.role;
128
+ const base = {
129
+ id: row.id,
130
+ sessionID: row.session_id,
131
+ time: {
132
+ created: data.time?.created ?? 0,
133
+ },
134
+ };
135
+ if (role === 'assistant') {
136
+ const msg = {
137
+ ...base,
138
+ role: 'assistant',
139
+ providerID: data.providerID,
140
+ modelID: data.modelID,
141
+ path: data.path,
142
+ tokens: data.tokens,
143
+ cost: data.cost,
144
+ agent: data.agent,
145
+ };
146
+ messages.push(msg);
147
+ }
148
+ else {
149
+ const msg = {
150
+ ...base,
151
+ role: 'user',
152
+ agent: data.agent,
153
+ model: data.model,
154
+ };
155
+ messages.push(msg);
156
+ }
157
+ }
158
+ catch {
159
+ logger.debug(`[sqlite-reader] Failed to parse message row: ${row.id}`);
160
+ }
161
+ }
162
+ // Sort by creation time
163
+ return messages.sort((a, b) => (a.time?.created || 0) - (b.time?.created || 0));
164
+ }
165
+ /**
166
+ * Read all parts for a session from the SQLite database, grouped by message ID.
167
+ *
168
+ * Does a single bulk query for all parts in the session, then groups by message_id.
169
+ * This is more efficient than querying per-message.
170
+ *
171
+ * @param dbPath - Path to opencode.db
172
+ * @param sessionId - The OpenCode session ID
173
+ * @returns Map of messageId -> OpenCodePart[]
174
+ */
175
+ export async function readAllPartsForSessionFromDb(dbPath, sessionId) {
176
+ const escapedId = escapeSqlString(sessionId);
177
+ const rows = await queryDb(dbPath, `SELECT id, message_id, session_id, data FROM part WHERE session_id = '${escapedId}' ORDER BY id ASC`);
178
+ const partsMap = {};
179
+ for (const row of rows) {
180
+ try {
181
+ const data = JSON.parse(row.data);
182
+ // Build the part by merging column values with parsed data
183
+ const part = {
184
+ ...data,
185
+ id: row.id,
186
+ messageID: row.message_id,
187
+ sessionID: row.session_id,
188
+ };
189
+ if (!partsMap[row.message_id]) {
190
+ partsMap[row.message_id] = [];
191
+ }
192
+ partsMap[row.message_id].push(part);
193
+ }
194
+ catch {
195
+ logger.debug(`[sqlite-reader] Failed to parse part row: ${row.id}`);
196
+ }
197
+ }
198
+ return partsMap;
199
+ }
200
+ //# sourceMappingURL=opencode.sqlite-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.sqlite-reader.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode.sqlite-reader.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,9 @@ export declare class OpenCodeMetricsProcessor implements SessionProcessor {
58
58
  private resolveTimestamp;
59
59
  /**
60
60
  * Load parts for a message (ADR-11 - part-message validation)
61
+ *
62
+ * When partsMap is provided (SQLite-backed sessions), uses pre-loaded parts
63
+ * directly instead of reading from the filesystem.
61
64
  */
62
65
  private loadPartsForMessage;
63
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.metrics-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAkCpF;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,QAAQ,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;;IAMlC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAI9C;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqH7F;;OAEG;YACW,oBAAoB;IAkBlC;;OAEG;YACW,oBAAoB;IAalC;;;;OAIG;YACW,yBAAyB;IA2HvC;;OAEG;YACW,kBAAkB;IAiChC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;YACW,mBAAmB;IA2CjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA+F5B;;OAEG;YACW,kBAAkB;IAmBhC;;OAEG;YACW,qBAAqB;IAsCnC;;;OAGG;YACW,oBAAoB;IAUlC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAmC7B"}
1
+ {"version":3,"file":"opencode.metrics-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAkCpF;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,QAAQ,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;;IAMlC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAI9C;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuH7F;;OAEG;YACW,oBAAoB;IAkBlC;;OAEG;YACW,oBAAoB;IAalC;;;;OAIG;YACW,yBAAyB;IA2HvC;;OAEG;YACW,kBAAkB;IAiChC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;;;OAKG;YACW,mBAAmB;IA8DjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA+F5B;;OAEG;YACW,kBAAkB;IAoBhC;;OAEG;YACW,qBAAqB;IAuCnC;;;OAGG;YACW,oBAAoB;IAUlC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAmC7B"}
@@ -78,7 +78,9 @@ export class OpenCodeMetricsProcessor {
78
78
  updatedAt: metadata.updatedAt,
79
79
  storagePath,
80
80
  openCodeSessionId,
81
- openCodeVersion: metadata.openCodeVersion
81
+ openCodeVersion: metadata.openCodeVersion,
82
+ partsMap: metadata.partsMap,
83
+ storageType: metadata.storageType,
82
84
  };
83
85
  const { deltas, stats } = await this.transformMessagesToDeltas(messages, session.sessionId, openCodeSessionId, storagePath, openCodeMetadata);
84
86
  if (deltas.length === 0) {
@@ -202,8 +204,8 @@ export class OpenCodeMetricsProcessor {
202
204
  }
203
205
  }
204
206
  }
205
- // Extract all user prompts
206
- const allUserPrompts = await this.extractUserPrompts(messages, storagePath, openCodeSessionId);
207
+ // Extract all user prompts (pass partsMap for SQLite-backed sessions)
208
+ const allUserPrompts = await this.extractUserPrompts(messages, storagePath, openCodeSessionId, sessionMetadata.partsMap);
207
209
  // Filter to only NEW prompts
208
210
  const newPrompts = allUserPrompts.filter(p => !alreadyAttachedPrompts.has(p.text));
209
211
  let promptsAttached = false;
@@ -218,8 +220,8 @@ export class OpenCodeMetricsProcessor {
218
220
  stats.skippedDueToDedup++;
219
221
  continue;
220
222
  }
221
- // Load parts for this message
222
- const parts = await this.loadPartsForMessage(storagePath, assistantMsg.id, openCodeSessionId);
223
+ // Load parts for this message (use pre-loaded partsMap if available from SQLite)
224
+ const parts = await this.loadPartsForMessage(storagePath, assistantMsg.id, openCodeSessionId, sessionMetadata.partsMap);
223
225
  // Resolve token source (ADR-13)
224
226
  const tokenSource = await this.resolveTokenSource(assistantMsg, parts);
225
227
  if (tokenSource.source === 'none') {
@@ -316,8 +318,28 @@ export class OpenCodeMetricsProcessor {
316
318
  }
317
319
  /**
318
320
  * Load parts for a message (ADR-11 - part-message validation)
321
+ *
322
+ * When partsMap is provided (SQLite-backed sessions), uses pre-loaded parts
323
+ * directly instead of reading from the filesystem.
319
324
  */
320
- async loadPartsForMessage(storagePath, messageId, expectedSessionId) {
325
+ async loadPartsForMessage(storagePath, messageId, expectedSessionId, partsMap) {
326
+ // Use pre-loaded partsMap if available (from SQLite bulk query)
327
+ if (partsMap && partsMap[messageId]) {
328
+ const parts = partsMap[messageId];
329
+ // Apply same validation as file-based path
330
+ return parts.filter(part => {
331
+ if (part.messageID !== messageId) {
332
+ logger.debug(`[opencode-metrics] Skipping orphaned part ${part.id}: messageID mismatch`);
333
+ return false;
334
+ }
335
+ if (expectedSessionId && part.sessionID !== expectedSessionId) {
336
+ logger.debug(`[opencode-metrics] Skipping part ${part.id}: sessionID mismatch`);
337
+ return false;
338
+ }
339
+ return true;
340
+ }).sort((a, b) => a.id.localeCompare(b.id));
341
+ }
342
+ // File-based loading fallback
321
343
  const partsDir = join(storagePath, 'part', messageId);
322
344
  if (!existsSync(partsDir)) {
323
345
  return [];
@@ -461,12 +483,12 @@ export class OpenCodeMetricsProcessor {
461
483
  /**
462
484
  * Extract user prompts from messages (ADR-10, ADR-20)
463
485
  */
464
- async extractUserPrompts(messages, storagePath, sessionId) {
486
+ async extractUserPrompts(messages, storagePath, sessionId, partsMap) {
465
487
  const prompts = [];
466
488
  for (const msg of messages) {
467
489
  if (msg.role !== 'user')
468
490
  continue;
469
- const text = await this.extractUserPromptText(msg, storagePath, sessionId);
491
+ const text = await this.extractUserPromptText(msg, storagePath, sessionId, partsMap);
470
492
  if (text) {
471
493
  prompts.push({ count: 1, text });
472
494
  }
@@ -476,11 +498,11 @@ export class OpenCodeMetricsProcessor {
476
498
  /**
477
499
  * Extract user prompt text from message (ADR-10, ADR-20)
478
500
  */
479
- async extractUserPromptText(msg, storagePath, sessionId) {
480
- // Try parts first (ADR-20)
481
- const partsDir = join(storagePath, 'part', msg.id);
482
- if (existsSync(partsDir)) {
483
- const parts = await this.loadPartsForMessage(storagePath, msg.id, sessionId);
501
+ async extractUserPromptText(msg, storagePath, sessionId, partsMap) {
502
+ // Try pre-loaded partsMap first (SQLite path), then file-based
503
+ const hasParts = partsMap?.[msg.id] || existsSync(join(storagePath, 'part', msg.id));
504
+ if (hasParts) {
505
+ const parts = await this.loadPartsForMessage(storagePath, msg.id, sessionId, partsMap);
484
506
  // Filter: exclude ignored and synthetic parts (ADR-10)
485
507
  const textParts = parts.filter(p => p.type === 'text' &&
486
508
  'text' in p &&