@opencode-ai/client 0.0.0-dev-18728 → 0.0.0-dev-18731

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,7 +1,7 @@
1
1
  export * as SharedEvents from "./shared-events.js";
2
2
  export function make(connect) {
3
3
  let current;
4
- const delivered = Promise.resolve();
4
+ const capacity = 4_096;
5
5
  function stop(connection) {
6
6
  connection.connected = undefined;
7
7
  connection.controller.abort();
@@ -21,7 +21,7 @@ export function make(connect) {
21
21
  break;
22
22
  if (item.value.type === "server.connected")
23
23
  connection.connected = item.value;
24
- await Promise.all(Array.from(connection.subscribers, (subscriber) => subscriber.push(item.value)));
24
+ connection.subscribers.forEach((subscriber) => subscriber.push(item.value));
25
25
  }
26
26
  }
27
27
  catch (error) {
@@ -44,14 +44,14 @@ export function make(connect) {
44
44
  return {
45
45
  [Symbol.asyncIterator]() {
46
46
  const pending = [];
47
+ const queued = [];
47
48
  let started = false;
48
49
  let completion;
49
50
  let connection;
50
- let offered;
51
- function finish(result) {
51
+ function finish(result, discard = true) {
52
52
  completion = result;
53
- offered?.accepted.resolve();
54
- offered = undefined;
53
+ if (discard)
54
+ queued.length = 0;
55
55
  options?.signal?.removeEventListener("abort", abort);
56
56
  if (connection?.subscribers.delete(subscriber) && !connection.subscribers.size)
57
57
  stop(connection);
@@ -66,18 +66,22 @@ export function make(connect) {
66
66
  finish({});
67
67
  }
68
68
  const subscriber = {
69
- finish,
69
+ finish(result) {
70
+ finish(result, false);
71
+ },
70
72
  push(value) {
71
73
  if (completion)
72
- return delivered;
74
+ return;
73
75
  const request = pending.shift();
74
76
  if (request) {
75
77
  request.resolve({ done: false, value });
76
- return delivered;
78
+ return;
79
+ }
80
+ if (queued.length === capacity) {
81
+ finish({ error: new Error(`Event subscriber exceeded its ${capacity}-event capacity`) });
82
+ return;
77
83
  }
78
- const accepted = Promise.withResolvers();
79
- offered = { value, accepted };
80
- return accepted.promise;
84
+ queued.push(value);
81
85
  },
82
86
  };
83
87
  function start() {
@@ -97,12 +101,9 @@ export function make(connect) {
97
101
  }
98
102
  return {
99
103
  next() {
100
- if (offered) {
101
- const current = offered;
102
- offered = undefined;
103
- current.accepted.resolve();
104
- return Promise.resolve({ done: false, value: current.value });
105
- }
104
+ const value = queued.shift();
105
+ if (value)
106
+ return Promise.resolve({ done: false, value });
106
107
  if (completion) {
107
108
  if ("error" in completion)
108
109
  return Promise.reject(completion.error);
@@ -478,13 +478,17 @@ export function createData(config) {
478
478
  })
479
479
  .catch((error) => console.error("Failed to load projected model switch message", error));
480
480
  return;
481
- case "session.renamed":
481
+ case "session.renamed": {
482
482
  // Preserve the live title when it races the session's initial read.
483
- void result.session.sync(event.data.sessionID).then(() => {
483
+ const family = sync.pending(`session.family:${event.data.sessionID}`)
484
+ ? result.session.sync(event.data.sessionID, { children: true })
485
+ : Promise.resolve();
486
+ void Promise.all([result.session.sync(event.data.sessionID), family]).then(() => {
484
487
  if (store.session.info[event.data.sessionID])
485
488
  setStore("session", "info", event.data.sessionID, "title", event.data.title);
486
489
  });
487
490
  return;
491
+ }
488
492
  case "session.moved": {
489
493
  const current = store.session.info[event.data.sessionID];
490
494
  if (current) {
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-18728",
4
+ "version": "0.0.0-dev-18731",
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-18728",
61
- "@opencode-ai/protocol": "0.0.0-dev-18728"
60
+ "@opencode-ai/schema": "0.0.0-dev-18731",
61
+ "@opencode-ai/protocol": "0.0.0-dev-18731"
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-18728",
77
+ "@opencode-ai/httpapi-codegen": "0.0.0-dev-18731",
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",