@kybernesis/buzz 0.11.0 → 0.12.0

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,10 +1,10 @@
1
1
  {
2
2
  "kind": "eve-extension",
3
3
  "formatVersion": 2,
4
- "builtWithEve": "0.68.0",
4
+ "builtWithEve": "0.81.1",
5
5
  "requires": {
6
6
  "extension": 1,
7
- "tool": 59,
7
+ "tool": 93,
8
8
  "instructions": 2
9
9
  }
10
10
  }
package/dist/turn.js CHANGED
@@ -196,6 +196,15 @@ async function drainUnread(stream, timeouts) {
196
196
  }
197
197
  }
198
198
  const isTurnBoundary = (type) => type === "session.waiting" || type === "session.completed" || type === "session.failed";
199
+ /**
200
+ * eve ≥0.69 no longer ends a turn at a question or sign-in from inside a tool:
201
+ * it emits `turn.waiting` with `on: "input"` and holds the turn open, and the
202
+ * answer resumes that same turn. For the bridge that is where this send stops,
203
+ * as `session.waiting` did before, with the questions to relay. eve's own
204
+ * `result()` stops at the same event. `on: "tasks"` is not a stop: delegated
205
+ * work is running and the reply is still to come.
206
+ */
207
+ const isHeldForInput = (event) => event.type === "turn.waiting" && event.data?.on === "input";
199
208
  async function collectResponse(response, watchdog, phase, streamIndex, continueStream, log = () => { }) {
200
209
  let message = "";
201
210
  let status = "completed";
@@ -242,7 +251,7 @@ async function collectResponse(response, watchdog, phase, streamIndex, continueS
242
251
  else if (event.type === "input.requested") {
243
252
  inputRequests.push(...event.data.requests);
244
253
  }
245
- else if (event.type === "session.waiting") {
254
+ else if (event.type === "session.waiting" || isHeldForInput(event)) {
246
255
  status = "waiting";
247
256
  }
248
257
  else if (event.type === "session.failed") {
@@ -251,11 +260,12 @@ async function collectResponse(response, watchdog, phase, streamIndex, continueS
251
260
  else if (event.type === "session.completed") {
252
261
  status = "completed";
253
262
  }
254
- if (isTurnBoundary(event.type) && !staleBoundaryFirst) {
263
+ const ends = isTurnBoundary(event.type) || isHeldForInput(event);
264
+ if (ends && !staleBoundaryFirst) {
255
265
  endedAtOwnBoundary = true;
256
266
  return true;
257
267
  }
258
- if (isTurnBoundary(event.type) && staleBoundaryFirst && sawTurnStart) {
268
+ if (ends && staleBoundaryFirst && sawTurnStart) {
259
269
  endedAtOwnBoundary = true;
260
270
  return true;
261
271
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kybernesis/buzz",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Put an eve agent in a Buzz workspace as a member: per-speaker verified identity resolved through the control plane, self-service identity linking, presence, typing and seen signals.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -44,17 +44,17 @@
44
44
  "test": "node --test \"test/**/*.test.mjs\""
45
45
  },
46
46
  "dependencies": {
47
- "@kybernesis/enterprise": "^0.9.0",
47
+ "@kybernesis/enterprise": "^0.10.0",
48
48
  "nostr-tools": "^2.10.0",
49
49
  "zod": "^4"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "24.x",
53
- "eve": "0.68.0",
53
+ "eve": "0.81.1",
54
54
  "typescript": "7.0.2"
55
55
  },
56
56
  "peerDependencies": {
57
- "eve": ">=0.68.0 <0.69.0"
57
+ "eve": ">=0.81.1 <0.82.0"
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=20"
@@ -69,5 +69,8 @@
69
69
  "source": "./extension",
70
70
  "dist": "./dist/extension"
71
71
  }
72
+ },
73
+ "publishConfig": {
74
+ "tag": "eve-0.81"
72
75
  }
73
76
  }