@remembrance-ai/opencode-plugin 0.1.48 → 0.1.49

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.
package/opencode.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "command": [
7
7
  "npx",
8
8
  "-y",
9
- "@remembrance-ai/mcp-server@0.1.48"
9
+ "@remembrance-ai/mcp-server@0.1.49"
10
10
  ],
11
11
  "enabled": true,
12
12
  "environment": {
@@ -15,6 +15,6 @@
15
15
  }
16
16
  },
17
17
  "plugin": [
18
- "@remembrance-ai/opencode-plugin@0.1.48"
18
+ "@remembrance-ai/opencode-plugin@0.1.49"
19
19
  ]
20
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remembrance-ai/opencode-plugin",
3
- "version": "0.1.48",
3
+ "version": "0.1.49",
4
4
  "license": "Apache-2.0",
5
5
  "description": "opencode plugin for Remembrance session hooks, tool observation, and contribution nudges.",
6
6
  "type": "module",
@@ -2288,9 +2288,20 @@ export function contributeDisabled(value) {
2288
2288
  }
2289
2289
 
2290
2290
  function pluginHealthDir(env = process.env) {
2291
- return env?.REMEMBRANCE_PLUGIN_HEALTH_DIR
2292
- ? String(env.REMEMBRANCE_PLUGIN_HEALTH_DIR)
2293
- : join(homedir(), ".cache", "remembrance", "plugin-health");
2291
+ if (env?.REMEMBRANCE_PLUGIN_HEALTH_DIR) {
2292
+ return String(env.REMEMBRANCE_PLUGIN_HEALTH_DIR);
2293
+ }
2294
+ // Hook adapters are exercised directly by several Vitest suites. Keep those
2295
+ // observations out of the real user health directory even when a test passes
2296
+ // a deliberately minimal env object that omits Vitest's process variables.
2297
+ if (process.env.VITEST) {
2298
+ return join(
2299
+ tmpdir(),
2300
+ "remembrance-plugin-health-tests",
2301
+ String(process.pid),
2302
+ );
2303
+ }
2304
+ return join(homedir(), ".cache", "remembrance", "plugin-health");
2294
2305
  }
2295
2306
 
2296
2307
  function normalizedPluginHealthSurface(value) {
@@ -2362,6 +2373,28 @@ export function recordPluginLifecycleHealth(
2362
2373
  ) {
2363
2374
  return false;
2364
2375
  }
2376
+ // Codex currently gives SessionStart a thread identifier while prompt/tool/
2377
+ // completion hooks use turn identifiers. Preserve the specific startup
2378
+ // marker for diagnostics, but also publish a generic startup observation so
2379
+ // the first turn-specific marker can inherit it. Other hosts with stable
2380
+ // session ids remain correct and gain the same conservative fallback.
2381
+ if (
2382
+ normalizedComponent === "session_start" &&
2383
+ sessionId &&
2384
+ sessionId !== "unknown"
2385
+ ) {
2386
+ recordPluginLifecycleHealth(
2387
+ {
2388
+ surface: normalizedSurface,
2389
+ component: normalizedComponent,
2390
+ pluginVersion,
2391
+ hostVersion,
2392
+ credentialSource,
2393
+ sessionId: null,
2394
+ },
2395
+ env,
2396
+ );
2397
+ }
2365
2398
  const path = pluginHealthSessionPath(normalizedSurface, sessionId, env);
2366
2399
  if (!path) return false;
2367
2400
  const now = new Date().toISOString();
@@ -9981,7 +9981,7 @@ var apiConfiguration = resolveApiConfiguration();
9981
9981
  var apiBase = apiConfiguration.baseUrl;
9982
9982
  var MAX_REMOTE_RESPONSE_BYTES = 4 * 1024 * 1024;
9983
9983
  var DOCTOR_PROBE_TIMEOUT_MS = 7500;
9984
- var SERVER_VERSION = true ? "0.1.48" : "0.0.0-dev";
9984
+ var SERVER_VERSION = true ? "0.1.49" : "0.0.0-dev";
9985
9985
  var tools = toolDefinitions;
9986
9986
  var doctorCliRequested = process.argv[2] === "doctor";
9987
9987
  var inputBuffer = Buffer.alloc(0);