@opencode-ai/client 0.0.0-dev-18568 → 0.0.0-dev-18570

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 (2) hide show
  1. package/dist/solid/data.js +22 -3
  2. package/package.json +4 -4
@@ -108,7 +108,9 @@ export function createData(config) {
108
108
  const sessions = createMemo(() => Object.values(store.session.info).toSorted((a, b) => b.time.updated - a.time.updated));
109
109
  const messageIndex = new Map();
110
110
  const sync = createSync();
111
+ let activeUpdates;
111
112
  function setSessionActive(sessionID, status) {
113
+ activeUpdates?.set(sessionID, status);
112
114
  setStore("session", "active", sessionID, status);
113
115
  }
114
116
  function removePending(sessionID, inboxID) {
@@ -336,6 +338,7 @@ export function createData(config) {
336
338
  }));
337
339
  }
338
340
  function removeSession(sessionID) {
341
+ activeUpdates?.set(sessionID, undefined);
339
342
  store.session.pending[sessionID]?.forEach((item) => outbox.delete(item.id));
340
343
  messageIndex.delete(sessionID);
341
344
  sync.invalidate(`session:${sessionID}`);
@@ -365,13 +368,28 @@ export function createData(config) {
365
368
  }
366
369
  function handleEvent(event) {
367
370
  switch (event.type) {
368
- case "server.connected":
371
+ case "server.connected": {
372
+ const updates = new Map();
373
+ activeUpdates = updates;
369
374
  void api()
370
375
  .session.active()
371
376
  .then((active) => {
372
- setStore("session", "active", reconcile(Object.fromEntries(Object.keys(active).map((sessionID) => [sessionID, "running"]))));
377
+ if (activeUpdates !== updates)
378
+ return;
379
+ // Lifecycle events received during hydration supersede the snapshot.
380
+ const snapshot = new Map(Object.keys(active).map((id) => [id, "running"]));
381
+ updates.forEach((status, id) => {
382
+ if (status === undefined)
383
+ return snapshot.delete(id);
384
+ snapshot.set(id, status);
385
+ });
386
+ activeUpdates = undefined;
387
+ setStore("session", "active", reconcile(Object.fromEntries(snapshot)));
373
388
  })
374
- .catch(() => undefined);
389
+ .catch(() => {
390
+ if (activeUpdates === updates)
391
+ activeUpdates = undefined;
392
+ });
375
393
  void api()
376
394
  .location.get({ location: locationQuery(defaultLocation()) })
377
395
  .then((location) => {
@@ -382,6 +400,7 @@ export function createData(config) {
382
400
  void result.location.vcs.sync().catch((error) => console.error("Failed to preload VCS info", error));
383
401
  void result.project.sync().catch((error) => console.error("Failed to preload projects", error));
384
402
  return;
403
+ }
385
404
  case "project.updated":
386
405
  setStore("project", "info", event.data.id, reconcile(event.data));
387
406
  return;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@opencode-ai/client",
4
- "version": "0.0.0-dev-18568",
4
+ "version": "0.0.0-dev-18570",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -57,8 +57,8 @@
57
57
  "typecheck": "tsgo --noEmit"
58
58
  },
59
59
  "dependencies": {
60
- "@opencode-ai/schema": "0.0.0-dev-18568",
61
- "@opencode-ai/protocol": "0.0.0-dev-18568"
60
+ "@opencode-ai/schema": "0.0.0-dev-18570",
61
+ "@opencode-ai/protocol": "0.0.0-dev-18570"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "effect": "4.0.0-rc.112",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "devDependencies": {
76
76
  "@effect/platform-node": "4.0.0-rc.112",
77
- "@opencode-ai/httpapi-codegen": "0.0.0-dev-18568",
77
+ "@opencode-ai/httpapi-codegen": "0.0.0-dev-18570",
78
78
  "@tsconfig/bun": "1.0.9",
79
79
  "@types/bun": "1.3.13",
80
80
  "@typescript/native-preview": "7.0.0-dev.20251207.1",