opencode-database-plugin 1.0.9 → 1.0.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AA0E/D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAmBD,eAAO,MAAM,cAAc,EAAE,MAyoB5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AA0E/D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAmBD,eAAO,MAAM,cAAc,EAAE,MAopB5B,CAAC"}
package/dist/index.js CHANGED
@@ -2210,11 +2210,6 @@ var DatabasePlugin = async ({ client }) => {
2210
2210
  }
2211
2211
  case "message.updated": {
2212
2212
  const info = props.info;
2213
- fireAndForget(() => sql`
2214
- INSERT INTO sessions (id, status, created_at, updated_at)
2215
- VALUES (${info.sessionID}, 'active', NOW(), NOW())
2216
- ON CONFLICT (id) DO UPDATE SET updated_at = NOW()
2217
- `);
2218
2213
  let messageContent = info.parts;
2219
2214
  let textContent = null;
2220
2215
  let systemPrompt = info.system || null;
@@ -2234,29 +2229,36 @@ var DatabasePlugin = async ({ client }) => {
2234
2229
  }
2235
2230
  const modelProvider = info.providerID || info.model?.providerID || null;
2236
2231
  const modelId = info.modelID || info.model?.modelID || null;
2237
- fireAndForget(() => sql`
2238
- INSERT INTO messages (id, session_id, role, model_provider, model_id, text, summary, content, system_prompt, created_at)
2239
- VALUES (
2240
- ${info.id},
2241
- ${info.sessionID},
2242
- ${info.role},
2243
- ${modelProvider},
2244
- ${modelId},
2245
- ${textContent},
2246
- ${info.summary?.title || null},
2247
- ${messageContent ? sql.json(messageContent) : null},
2248
- ${systemPrompt},
2249
- NOW()
2250
- )
2251
- ON CONFLICT (id) DO UPDATE SET
2252
- role = ${info.role},
2253
- model_provider = COALESCE(EXCLUDED.model_provider, messages.model_provider),
2254
- model_id = COALESCE(EXCLUDED.model_id, messages.model_id),
2255
- text = COALESCE(${textContent}, messages.text),
2256
- summary = COALESCE(${info.summary?.title || null}, messages.summary),
2257
- content = COALESCE(${messageContent ? sql.json(messageContent) : null}, messages.content),
2258
- system_prompt = COALESCE(${systemPrompt}, messages.system_prompt)
2259
- `, (error) => logError(client, "Error in message.updated", {
2232
+ fireAndForget(async () => {
2233
+ await sql`
2234
+ INSERT INTO sessions (id, status, created_at, updated_at)
2235
+ VALUES (${info.sessionID}, 'active', NOW(), NOW())
2236
+ ON CONFLICT (id) DO UPDATE SET updated_at = NOW()
2237
+ `;
2238
+ await sql`
2239
+ INSERT INTO messages (id, session_id, role, model_provider, model_id, text, summary, content, system_prompt, created_at)
2240
+ VALUES (
2241
+ ${info.id},
2242
+ ${info.sessionID},
2243
+ ${info.role},
2244
+ ${modelProvider},
2245
+ ${modelId},
2246
+ ${textContent},
2247
+ ${info.summary?.title || null},
2248
+ ${messageContent ? sql.json(messageContent) : null},
2249
+ ${systemPrompt},
2250
+ NOW()
2251
+ )
2252
+ ON CONFLICT (id) DO UPDATE SET
2253
+ role = ${info.role},
2254
+ model_provider = COALESCE(EXCLUDED.model_provider, messages.model_provider),
2255
+ model_id = COALESCE(EXCLUDED.model_id, messages.model_id),
2256
+ text = COALESCE(${textContent}, messages.text),
2257
+ summary = COALESCE(${info.summary?.title || null}, messages.summary),
2258
+ content = COALESCE(${messageContent ? sql.json(messageContent) : null}, messages.content),
2259
+ system_prompt = COALESCE(${systemPrompt}, messages.system_prompt)
2260
+ `;
2261
+ }, (error) => logError(client, "Error in message.updated", {
2260
2262
  error: String(error)
2261
2263
  }));
2262
2264
  const sessionTokens = tokensCountedBySession.get(info.sessionID) || new Map;
@@ -2317,21 +2319,21 @@ var DatabasePlugin = async ({ client }) => {
2317
2319
  WHERE id = ${part.sessionID}
2318
2320
  `);
2319
2321
  }
2320
- fireAndForget(() => sql`
2321
- INSERT INTO messages (id, session_id, role, created_at)
2322
- VALUES (${part.messageID}, ${part.sessionID}, 'assistant', NOW())
2323
- ON CONFLICT (id) DO UPDATE SET
2324
- role = COALESCE(messages.role, 'assistant')
2325
- `);
2326
- fireAndForget(() => sql`
2327
- INSERT INTO sessions (id, status, created_at)
2328
- VALUES (${part.sessionID}, 'active', NOW())
2329
- ON CONFLICT (id) DO NOTHING
2330
- `);
2331
2322
  const isStreamingTextPart = part.type === "text" || part.type === "reasoning";
2332
2323
  const partAsJson = { ...part };
2333
2324
  if (isStreamingTextPart) {
2334
2325
  fireAndForget(async () => {
2326
+ await sql`
2327
+ INSERT INTO sessions (id, status, created_at)
2328
+ VALUES (${part.sessionID}, 'active', NOW())
2329
+ ON CONFLICT (id) DO NOTHING
2330
+ `;
2331
+ await sql`
2332
+ INSERT INTO messages (id, session_id, role, created_at)
2333
+ VALUES (${part.messageID}, ${part.sessionID}, 'assistant', NOW())
2334
+ ON CONFLICT (id) DO UPDATE SET
2335
+ role = COALESCE(messages.role, 'assistant')
2336
+ `;
2335
2337
  await sql`
2336
2338
  INSERT INTO message_parts (id, message_id, part_type, tool_name, text, content, created_at)
2337
2339
  VALUES (
@@ -2367,6 +2369,17 @@ var DatabasePlugin = async ({ client }) => {
2367
2369
  const currentStatus = part.state?.status || "pending";
2368
2370
  const currentPriority = statusPriority[currentStatus] || 0;
2369
2371
  fireAndForget(async () => {
2372
+ await sql`
2373
+ INSERT INTO sessions (id, status, created_at)
2374
+ VALUES (${part.sessionID}, 'active', NOW())
2375
+ ON CONFLICT (id) DO NOTHING
2376
+ `;
2377
+ await sql`
2378
+ INSERT INTO messages (id, session_id, role, created_at)
2379
+ VALUES (${part.messageID}, ${part.sessionID}, 'assistant', NOW())
2380
+ ON CONFLICT (id) DO UPDATE SET
2381
+ role = COALESCE(messages.role, 'assistant')
2382
+ `;
2370
2383
  await sql`
2371
2384
  INSERT INTO message_parts (id, message_id, part_type, tool_name, text, content, created_at)
2372
2385
  VALUES (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-database-plugin",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "OpenCode plugin that logs sessions, messages, tool executions, and token usage to PostgreSQL",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",