@voicethere/agent 0.2.12 → 0.2.13

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/dist/agent.js CHANGED
@@ -6,25 +6,122 @@ const require = createRequire(import.meta.url);
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
 
8
8
  // src/session-serial-queue.ts
9
+ var SessionSerialQueueCancellationError = class extends Error {
10
+ constructor(sessionId, generation) {
11
+ super(
12
+ `session serial queue cancelled (sessionId=${sessionId}, generation=${generation})`
13
+ );
14
+ this.sessionId = sessionId;
15
+ this.generation = generation;
16
+ this.name = "SessionSerialQueueCancellationError";
17
+ }
18
+ code = "SESSION_SERIAL_QUEUE_CANCELLED";
19
+ };
9
20
  var SessionSerialQueue = class {
10
- tails = /* @__PURE__ */ new Map();
21
+ sessions = /* @__PURE__ */ new Map();
22
+ /** Monotonic token source — never reused across clear/enqueue cycles. */
23
+ nextGeneration = 1;
24
+ /**
25
+ * Enqueue work for `sessionId`. Returns a promise that settles when this
26
+ * task finishes, is skipped as stale, or is cancelled by {@link clear}.
27
+ * Fire-and-forget callers may ignore the return value (compat).
28
+ */
11
29
  enqueue(sessionId, task) {
12
- const previous = this.tails.get(sessionId) ?? Promise.resolve();
13
- const settled = previous.catch(() => void 0).then(() => Promise.resolve(task())).catch(() => void 0).finally(() => {
14
- if (this.tails.get(sessionId) === settled) {
15
- this.tails.delete(sessionId);
30
+ const state = this.ensureState(sessionId);
31
+ const captured = state;
32
+ const generation = captured.generation;
33
+ captured.pending += 1;
34
+ const previous = captured.tail;
35
+ let taskAbort = null;
36
+ const settled = previous.catch(() => void 0).then(async () => {
37
+ if (this.sessions.get(sessionId) !== captured) {
38
+ return "cancelled";
39
+ }
40
+ const abort = new AbortController();
41
+ taskAbort = abort;
42
+ captured.abort = abort;
43
+ const context = {
44
+ sessionId,
45
+ generation,
46
+ signal: abort.signal
47
+ };
48
+ try {
49
+ await Promise.resolve(
50
+ task(abort.signal, context)
51
+ );
52
+ if (this.sessions.get(sessionId) !== captured) {
53
+ return "cancelled";
54
+ }
55
+ return "completed";
56
+ } catch (error) {
57
+ if (abort.signal.aborted || this.sessions.get(sessionId) !== captured || error instanceof SessionSerialQueueCancellationError) {
58
+ return "cancelled";
59
+ }
60
+ return "failed";
61
+ } finally {
62
+ if (captured.abort === abort) {
63
+ captured.abort = null;
64
+ }
65
+ }
66
+ }).finally(() => {
67
+ captured.pending = Math.max(0, captured.pending - 1);
68
+ if (taskAbort && captured.abort === taskAbort) {
69
+ captured.abort = null;
70
+ }
71
+ if (captured.pending === 0 && this.sessions.get(sessionId) === captured) {
72
+ this.sessions.delete(sessionId);
16
73
  }
17
74
  });
18
- this.tails.set(sessionId, settled);
75
+ captured.tail = settled;
76
+ return settled;
19
77
  }
78
+ /**
79
+ * Invalidate queued + running work for `sessionId`. Aborts the live AbortSignal,
80
+ * drops the map entry, and leaves a fresh identity for the next enqueue.
81
+ * Old in-flight `finally` blocks only touch their captured state object.
82
+ */
20
83
  clear(sessionId) {
21
- this.tails.delete(sessionId);
84
+ const old = this.sessions.get(sessionId);
85
+ if (!old) return;
86
+ old.abort?.abort();
87
+ old.abort = null;
88
+ this.sessions.delete(sessionId);
22
89
  }
23
90
  clearAll() {
24
- this.tails.clear();
91
+ for (const sessionId of [...this.sessions.keys()]) {
92
+ this.clear(sessionId);
93
+ }
25
94
  }
26
95
  hasPending(sessionId) {
27
- return this.tails.has(sessionId);
96
+ return (this.sessions.get(sessionId)?.pending ?? 0) > 0;
97
+ }
98
+ /** Live generation token for a session, or `undefined` when idle/cleared. */
99
+ generationOf(sessionId) {
100
+ return this.sessions.get(sessionId)?.generation;
101
+ }
102
+ /** True when `generation` is the live map entry for `sessionId`. */
103
+ isCurrentGeneration(sessionId, generation) {
104
+ return this.sessions.get(sessionId)?.generation === generation;
105
+ }
106
+ /** True when a live queue row exists for the session. */
107
+ isLive(sessionId) {
108
+ return this.sessions.has(sessionId);
109
+ }
110
+ /** Live queue rows (tests: unique-ID churn must not grow this unbounded). */
111
+ get activeSessionCount() {
112
+ return this.sessions.size;
113
+ }
114
+ ensureState(sessionId) {
115
+ const existing = this.sessions.get(sessionId);
116
+ if (existing) return existing;
117
+ const created = {
118
+ generation: this.nextGeneration++,
119
+ tail: Promise.resolve(),
120
+ abort: null,
121
+ pending: 0
122
+ };
123
+ this.sessions.set(sessionId, created);
124
+ return created;
28
125
  }
29
126
  };
30
127
 
@@ -46,7 +143,9 @@ function parseDataChannelPayload(raw) {
46
143
  }
47
144
  var peerEnvBySessionId = /* @__PURE__ */ new Map();
48
145
  var endedSessionIds = /* @__PURE__ */ new Set();
146
+ var sessionExecutionContext = new AsyncLocalStorage();
49
147
  var agentLogSessionContext = new AsyncLocalStorage();
148
+ var inboundQueueAuthority = null;
50
149
  var childUnhandledRejectionGuardInstalled = false;
51
150
  function normalizeRejectionReason(reason) {
52
151
  return reason instanceof Error ? reason : new Error(String(reason));
@@ -58,13 +157,17 @@ function installChildUnhandledRejectionGuard() {
58
157
  childUnhandledRejectionGuardInstalled = true;
59
158
  process.on("unhandledRejection", (reason) => {
60
159
  const err = normalizeRejectionReason(reason);
61
- const sessionId = agentLogSessionContext.getStore() ?? "";
160
+ const store = sessionExecutionContext.getStore();
161
+ const sessionId = store?.sessionId ?? agentLogSessionContext.getStore() ?? "";
162
+ if (!allowOutboundForSession(sessionId || void 0)) {
163
+ return;
164
+ }
62
165
  agentLog(
63
166
  "error",
64
167
  `unhandledRejection: ${err.message}`,
65
168
  sessionId || void 0
66
169
  );
67
- process.send?.({
170
+ sendParentMessage({
68
171
  type: "agent_error",
69
172
  sessionId,
70
173
  message: err.message,
@@ -72,6 +175,25 @@ function installChildUnhandledRejectionGuard() {
72
175
  });
73
176
  });
74
177
  }
178
+ function allowOutboundForSession(sessionId) {
179
+ if (!sessionId) {
180
+ return true;
181
+ }
182
+ const store = sessionExecutionContext.getStore();
183
+ const queue = inboundQueueAuthority;
184
+ if (store && store.sessionId === sessionId) {
185
+ if (!queue) return !endedSessionIds.has(sessionId);
186
+ return queue.isCurrentGeneration(sessionId, store.generation);
187
+ }
188
+ if (endedSessionIds.has(sessionId)) return false;
189
+ if (!queue) return true;
190
+ return queue.isLive(sessionId);
191
+ }
192
+ function sendParentMessage(message) {
193
+ const sessionId = message && typeof message === "object" && "sessionId" in message && typeof message.sessionId === "string" ? message.sessionId : void 0;
194
+ if (!allowOutboundForSession(sessionId)) return;
195
+ process.send?.(message);
196
+ }
75
197
  function parseBooleanEnv(value, defaultValue) {
76
198
  if (value === void 0) return defaultValue;
77
199
  const normalized = value.trim().toLowerCase();
@@ -112,7 +234,7 @@ async function handleParentMessage(message, handlers) {
112
234
  sessionId: message.sessionId,
113
235
  env: message.env
114
236
  });
115
- process.send?.({
237
+ sendParentMessage({
116
238
  type: "session_start_ack",
117
239
  sessionId: message.sessionId
118
240
  });
@@ -161,38 +283,50 @@ async function handleParentMessage(message, handlers) {
161
283
  function defineAgent(handlers) {
162
284
  installChildUnhandledRejectionGuard();
163
285
  const inboundBySession = new SessionSerialQueue();
286
+ inboundQueueAuthority = inboundBySession;
164
287
  const agentStartReady = runAgentStartHook(handlers);
165
288
  process.on("message", (message) => {
166
289
  if (!isParentMessage(message)) return;
167
- inboundBySession.enqueue(message.sessionId, async () => {
168
- await agentStartReady;
169
- await agentLogSessionContext.run(message.sessionId, async () => {
170
- try {
171
- if (message.type === "session_end") {
172
- endedSessionIds.add(message.sessionId);
173
- inboundBySession.clear(message.sessionId);
174
- }
175
- await handleParentMessage(message, handlers);
176
- } catch (error) {
177
- const err = error instanceof Error ? error : new Error(String(error));
178
- const env = peerEnvBySessionId.get(message.sessionId) ?? buildIdleEnv(message.sessionId);
179
- await runErrorHook(handlers, {
180
- sessionId: message.sessionId,
181
- projectId: env.PROJECT_ID,
182
- buildId: env.BUILD_ID,
183
- env,
184
- error: err,
185
- customerContext: parseCustomerContext(env.AGENT_CUSTOMER_CONTEXT)
186
- });
187
- process.send?.({
188
- type: "agent_error",
290
+ if (message.type === "session_end") {
291
+ endedSessionIds.add(message.sessionId);
292
+ inboundBySession.clear(message.sessionId);
293
+ }
294
+ inboundBySession.enqueue(
295
+ message.sessionId,
296
+ async (_signal, context) => {
297
+ await agentStartReady;
298
+ await sessionExecutionContext.run(
299
+ {
189
300
  sessionId: message.sessionId,
190
- message: err.message,
191
- stack: err.stack
192
- });
193
- }
194
- });
195
- });
301
+ generation: context.generation
302
+ },
303
+ async () => agentLogSessionContext.run(message.sessionId, async () => {
304
+ try {
305
+ await handleParentMessage(message, handlers);
306
+ } catch (error) {
307
+ const err = error instanceof Error ? error : new Error(String(error));
308
+ const env = peerEnvBySessionId.get(message.sessionId) ?? buildIdleEnv(message.sessionId);
309
+ await runErrorHook(handlers, {
310
+ sessionId: message.sessionId,
311
+ projectId: env.PROJECT_ID,
312
+ buildId: env.BUILD_ID,
313
+ env,
314
+ error: err,
315
+ customerContext: parseCustomerContext(
316
+ env.AGENT_CUSTOMER_CONTEXT
317
+ )
318
+ });
319
+ sendParentMessage({
320
+ type: "agent_error",
321
+ sessionId: message.sessionId,
322
+ message: err.message,
323
+ stack: err.stack
324
+ });
325
+ }
326
+ })
327
+ );
328
+ }
329
+ );
196
330
  });
197
331
  }
198
332
  async function runAgentStartHook(handlers) {
@@ -204,7 +338,7 @@ async function runAgentStartHook(handlers) {
204
338
  } catch (error) {
205
339
  const err = error instanceof Error ? error : new Error(String(error));
206
340
  agentLog("error", `onAgentStart failed: ${err.message}`);
207
- process.send?.({
341
+ sendParentMessage({
208
342
  type: "agent_error",
209
343
  sessionId: "",
210
344
  message: err.message,
@@ -240,7 +374,7 @@ async function runIdleTimeoutHook(handlers, message) {
240
374
  message.sessionId
241
375
  );
242
376
  if (!onIdleTimeout) {
243
- process.send?.({
377
+ sendParentMessage({
244
378
  type: "idle_timeout_done",
245
379
  sessionId: message.sessionId
246
380
  });
@@ -267,7 +401,7 @@ async function runIdleTimeoutHook(handlers, message) {
267
401
  error = hookError instanceof Error ? hookError.message : String(hookError);
268
402
  agentLog("error", `onIdleTimeout failed: ${error}`, message.sessionId);
269
403
  }
270
- process.send?.({
404
+ sendParentMessage({
271
405
  type: "idle_timeout_done",
272
406
  sessionId: message.sessionId,
273
407
  error
@@ -287,11 +421,10 @@ function buildIdleEnv(sessionId) {
287
421
  };
288
422
  }
289
423
  function speak(sessionId, text) {
290
- if (endedSessionIds.has(sessionId)) return;
291
- process.send?.({ type: "speak", sessionId, text });
424
+ sendParentMessage({ type: "speak", sessionId, text });
292
425
  }
293
426
  function sendToClient(sessionId, payload) {
294
- process.send?.({ type: "send_to_client", sessionId, payload });
427
+ sendParentMessage({ type: "send_to_client", sessionId, payload });
295
428
  }
296
429
  var AGENT_LOG_MESSAGE_MAX_CHARS = 2048;
297
430
  var AGENT_LOG_FIELDS_MAX_CHARS = 8192;
@@ -324,7 +457,7 @@ function sanitizeAgentLogFields(fields) {
324
457
  }
325
458
  }
326
459
  function buildAgentLogPayload(level, message, fields, sessionId) {
327
- const resolvedSessionId = sessionId ?? agentLogSessionContext.getStore();
460
+ const resolvedSessionId = sessionId ?? sessionExecutionContext.getStore()?.sessionId ?? agentLogSessionContext.getStore();
328
461
  const sanitizedFields = fields ? sanitizeAgentLogFields(fields) : void 0;
329
462
  return {
330
463
  type: "log",
@@ -346,7 +479,7 @@ function agentLog(level, message, fieldsOrSessionId, sessionId) {
346
479
  } else {
347
480
  resolvedSessionId = sessionId;
348
481
  }
349
- process.send?.(
482
+ sendParentMessage(
350
483
  buildAgentLogPayload(level, message, fields, resolvedSessionId)
351
484
  );
352
485
  }
package/dist/runner.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { buildChildExecArgv, collectAllowFsReadDirs, } from "./sandbox/sandbox.js";
2
2
  export { resolveBundlePath, startSandboxedChild, type SandboxedChild, type StartSandboxedChildOptions, } from "./sandbox/start-child.js";
3
- export { SessionSerialQueue } from "./session-serial-queue.js";
3
+ export { SessionSerialQueue, SessionSerialQueueCancellationError, type SessionSerialTask, type SessionSerialTaskContext, } from "./session-serial-queue.js";
4
4
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,mCAAmC,EACnC,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC"}
package/dist/runner.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { buildChildExecArgv, collectAllowFsReadDirs, } from "./sandbox/sandbox.js";
2
2
  export { resolveBundlePath, startSandboxedChild, } from "./sandbox/start-child.js";
3
- export { SessionSerialQueue } from "./session-serial-queue.js";
3
+ export { SessionSerialQueue, SessionSerialQueueCancellationError, } from "./session-serial-queue.js";
4
4
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,mCAAmC,GAGpC,MAAM,2BAA2B,CAAC"}
package/dist/runtime.d.ts CHANGED
@@ -77,6 +77,15 @@ export interface AgentErrorContext {
77
77
  error: Error;
78
78
  customerContext?: Record<string, unknown>;
79
79
  }
80
+ export type SessionExecutionStore = {
81
+ sessionId: string;
82
+ generation: number;
83
+ };
84
+ /**
85
+ * True when outbound IPC/logs for `sessionId` are allowed under the current
86
+ * generation-aware ALS + live queue state.
87
+ */
88
+ export declare function allowOutboundForSession(sessionId?: string): boolean;
80
89
  /**
81
90
  * Register IPC handlers for a customer agent child process.
82
91
  * Call once at bundle entry; runner parent sends {@link ParentToChildMessage} events.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -23,10 +23,18 @@ function parseDataChannelPayload(raw) {
23
23
  }
24
24
  }
25
25
  const peerEnvBySessionId = new Map();
26
- /** Sessions that received `session_end`; `speak()` becomes a no-op. */
26
+ /** Sessions that received `session_end`; `speak()` becomes a no-op when no live gen. */
27
27
  const endedSessionIds = new Set();
28
- /** Active orchestrator session while a parent IPC handler runs (per-session queue). */
28
+ /**
29
+ * Generation-aware execution context for inbound handlers. Outbound helpers
30
+ * (`speak`, `sendToClient`, …) consult this so a late old-generation callback
31
+ * cannot emit after `clear` / session-id reuse.
32
+ */
33
+ const sessionExecutionContext = new AsyncLocalStorage();
34
+ /** @deprecated Prefer {@link sessionExecutionContext}; kept for log session id. */
29
35
  const agentLogSessionContext = new AsyncLocalStorage();
36
+ /** Live inbound queue for the child process (set by {@link defineAgent}). */
37
+ let inboundQueueAuthority = null;
30
38
  /** Idempotent: at most one child-process `unhandledRejection` listener. */
31
39
  let childUnhandledRejectionGuardInstalled = false;
32
40
  function normalizeRejectionReason(reason) {
@@ -46,9 +54,13 @@ function installChildUnhandledRejectionGuard() {
46
54
  childUnhandledRejectionGuardInstalled = true;
47
55
  process.on("unhandledRejection", (reason) => {
48
56
  const err = normalizeRejectionReason(reason);
49
- const sessionId = agentLogSessionContext.getStore() ?? "";
57
+ const store = sessionExecutionContext.getStore();
58
+ const sessionId = store?.sessionId ?? agentLogSessionContext.getStore() ?? "";
59
+ if (!allowOutboundForSession(sessionId || undefined)) {
60
+ return;
61
+ }
50
62
  agentLog("error", `unhandledRejection: ${err.message}`, sessionId || undefined);
51
- process.send?.({
63
+ sendParentMessage({
52
64
  type: "agent_error",
53
65
  sessionId,
54
66
  message: err.message,
@@ -56,6 +68,40 @@ function installChildUnhandledRejectionGuard() {
56
68
  });
57
69
  });
58
70
  }
71
+ /**
72
+ * True when outbound IPC/logs for `sessionId` are allowed under the current
73
+ * generation-aware ALS + live queue state.
74
+ */
75
+ export function allowOutboundForSession(sessionId) {
76
+ if (!sessionId) {
77
+ // Process-wide logs without a session are always allowed.
78
+ return true;
79
+ }
80
+ const store = sessionExecutionContext.getStore();
81
+ const queue = inboundQueueAuthority;
82
+ if (store && store.sessionId === sessionId) {
83
+ if (!queue)
84
+ return !endedSessionIds.has(sessionId);
85
+ return queue.isCurrentGeneration(sessionId, store.generation);
86
+ }
87
+ // No ALS (or cross-session target): require a live generation and not ended.
88
+ if (endedSessionIds.has(sessionId))
89
+ return false;
90
+ if (!queue)
91
+ return true;
92
+ return queue.isLive(sessionId);
93
+ }
94
+ function sendParentMessage(message) {
95
+ const sessionId = message &&
96
+ typeof message === "object" &&
97
+ "sessionId" in message &&
98
+ typeof message.sessionId === "string"
99
+ ? message.sessionId
100
+ : undefined;
101
+ if (!allowOutboundForSession(sessionId))
102
+ return;
103
+ process.send?.(message);
104
+ }
59
105
  function parseBooleanEnv(value, defaultValue) {
60
106
  if (value === undefined)
61
107
  return defaultValue;
@@ -95,7 +141,7 @@ async function handleParentMessage(message, handlers) {
95
141
  sessionId: message.sessionId,
96
142
  env: message.env,
97
143
  });
98
- process.send?.({
144
+ sendParentMessage({
99
145
  type: "session_start_ack",
100
146
  sessionId: message.sessionId,
101
147
  });
@@ -153,18 +199,26 @@ async function handleParentMessage(message, handlers) {
153
199
  export function defineAgent(handlers) {
154
200
  installChildUnhandledRejectionGuard();
155
201
  const inboundBySession = new SessionSerialQueue();
202
+ inboundQueueAuthority = inboundBySession;
156
203
  const agentStartReady = runAgentStartHook(handlers);
157
204
  process.on("message", (message) => {
158
205
  if (!isParentMessage(message))
159
206
  return;
160
- inboundBySession.enqueue(message.sessionId, async () => {
207
+ // Invalidate immediately on arrival — do not wait behind queued work that
208
+ // must be cancelled. session_end then enqueues on a fresh generation.
209
+ if (message.type === "session_end") {
210
+ endedSessionIds.add(message.sessionId);
211
+ inboundBySession.clear(message.sessionId);
212
+ }
213
+ // session_start after end always materializes a new generation via enqueue
214
+ // on an empty/cleared map entry (clear left no tombstone).
215
+ inboundBySession.enqueue(message.sessionId, async (_signal, context) => {
161
216
  await agentStartReady;
162
- await agentLogSessionContext.run(message.sessionId, async () => {
217
+ await sessionExecutionContext.run({
218
+ sessionId: message.sessionId,
219
+ generation: context.generation,
220
+ }, async () => agentLogSessionContext.run(message.sessionId, async () => {
163
221
  try {
164
- if (message.type === "session_end") {
165
- endedSessionIds.add(message.sessionId);
166
- inboundBySession.clear(message.sessionId);
167
- }
168
222
  await handleParentMessage(message, handlers);
169
223
  }
170
224
  catch (error) {
@@ -179,14 +233,14 @@ export function defineAgent(handlers) {
179
233
  error: err,
180
234
  customerContext: parseCustomerContext(env.AGENT_CUSTOMER_CONTEXT),
181
235
  });
182
- process.send?.({
236
+ sendParentMessage({
183
237
  type: "agent_error",
184
238
  sessionId: message.sessionId,
185
239
  message: err.message,
186
240
  stack: err.stack,
187
241
  });
188
242
  }
189
- });
243
+ }));
190
244
  });
191
245
  });
192
246
  }
@@ -201,7 +255,7 @@ async function runAgentStartHook(handlers) {
201
255
  catch (error) {
202
256
  const err = error instanceof Error ? error : new Error(String(error));
203
257
  agentLog("error", `onAgentStart failed: ${err.message}`);
204
- process.send?.({
258
+ sendParentMessage({
205
259
  type: "agent_error",
206
260
  sessionId: "",
207
261
  message: err.message,
@@ -238,7 +292,7 @@ async function runIdleTimeoutHook(handlers, message) {
238
292
  const onIdleTimeout = handlers.onIdleTimeout;
239
293
  agentLog("info", `idle_timeout ipc received (maxGraceMs=${message.maxGraceMs}, onIdleTimeout=${typeof onIdleTimeout === "function"})`, message.sessionId);
240
294
  if (!onIdleTimeout) {
241
- process.send?.({
295
+ sendParentMessage({
242
296
  type: "idle_timeout_done",
243
297
  sessionId: message.sessionId,
244
298
  });
@@ -263,7 +317,7 @@ async function runIdleTimeoutHook(handlers, message) {
263
317
  error = hookError instanceof Error ? hookError.message : String(hookError);
264
318
  agentLog("error", `onIdleTimeout failed: ${error}`, message.sessionId);
265
319
  }
266
- process.send?.({
320
+ sendParentMessage({
267
321
  type: "idle_timeout_done",
268
322
  sessionId: message.sessionId,
269
323
  error,
@@ -286,21 +340,20 @@ function buildIdleEnv(sessionId) {
286
340
  export function resetAgentIpcStateForTests() {
287
341
  endedSessionIds.clear();
288
342
  peerEnvBySessionId.clear();
343
+ inboundQueueAuthority = null;
289
344
  }
290
345
  /** Ask the runner parent to synthesize speech for the session. */
291
346
  export function speak(sessionId, text) {
292
- if (endedSessionIds.has(sessionId))
293
- return;
294
- process.send?.({ type: "speak", sessionId, text });
347
+ sendParentMessage({ type: "speak", sessionId, text });
295
348
  }
296
349
  /** Send a JSON payload to the browser peer via the runner parent. */
297
350
  export function sendToClient(sessionId, payload) {
298
- process.send?.({ type: "send_to_client", sessionId, payload });
351
+ sendParentMessage({ type: "send_to_client", sessionId, payload });
299
352
  }
300
353
  /** Send raw bytes to the browser peer via the runner parent. */
301
354
  export function sendBinaryToClient(sessionId, data, channel = "sync") {
302
355
  const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
303
- process.send?.({
356
+ sendParentMessage({
304
357
  type: "send_binary_to_client",
305
358
  sessionId,
306
359
  data: buffer,
@@ -318,7 +371,7 @@ export function sendBinaryToClient(sessionId, data, channel = "sync") {
318
371
  export function broadCastBinaryToClients(data, sessionIds, channel = "sync") {
319
372
  const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
320
373
  for (const sessionId of sessionIds) {
321
- process.send?.({
374
+ sendParentMessage({
322
375
  type: "send_binary_to_client",
323
376
  sessionId,
324
377
  data: buffer,
@@ -364,7 +417,9 @@ function sanitizeAgentLogFields(fields) {
364
417
  }
365
418
  }
366
419
  function buildAgentLogPayload(level, message, fields, sessionId) {
367
- const resolvedSessionId = sessionId ?? agentLogSessionContext.getStore();
420
+ const resolvedSessionId = sessionId ??
421
+ sessionExecutionContext.getStore()?.sessionId ??
422
+ agentLogSessionContext.getStore();
368
423
  const sanitizedFields = fields ? sanitizeAgentLogFields(fields) : undefined;
369
424
  return {
370
425
  type: "log",
@@ -388,11 +443,11 @@ export function agentLog(level, message, fieldsOrSessionId, sessionId) {
388
443
  else {
389
444
  resolvedSessionId = sessionId;
390
445
  }
391
- process.send?.(buildAgentLogPayload(level, message, fields, resolvedSessionId));
446
+ sendParentMessage(buildAgentLogPayload(level, message, fields, resolvedSessionId));
392
447
  }
393
448
  /** Ask the runner to disconnect a browser peer (customer-initiated). */
394
449
  export function disconnectClient(sessionId, options) {
395
- process.send?.({
450
+ sendParentMessage({
396
451
  type: "disconnect_client",
397
452
  sessionId,
398
453
  reason: options?.reason,
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,59 @@
3
3
  * sessionId is processed strictly in enqueue order (no overlapping handlers).
4
4
  *
5
5
  * Task rejections are consumed at the queue tail so they do not surface as
6
- * process `unhandledRejection` events. Later same-session tasks still run.
6
+ * process `unhandledRejection` events. Later same-session tasks still run
7
+ * unless {@link clear} invalidated the generation.
8
+ *
9
+ * Lifecycle ordering:
10
+ * 1. `clear(sessionId)` aborts the live state and removes it from the map.
11
+ * 2. Each live row has a unique monotonic generation token (global counter).
12
+ * 3. Old task `finally` only mutates the captured state object; it deletes the
13
+ * map entry only when `sessions.get(id) === captured` and pending is 0.
14
+ * 4. No per-session tombstone / generations map — idle unique IDs leave no residue.
15
+ */
16
+ export declare class SessionSerialQueueCancellationError extends Error {
17
+ readonly sessionId: string;
18
+ readonly generation: number;
19
+ readonly code: "SESSION_SERIAL_QUEUE_CANCELLED";
20
+ constructor(sessionId: string, generation: number);
21
+ }
22
+ /** Context for generation-aware tasks (second enqueue argument; optional). */
23
+ export type SessionSerialTaskContext = {
24
+ sessionId: string;
25
+ generation: number;
26
+ signal: AbortSignal;
27
+ };
28
+ /**
29
+ * Tasks may observe AbortSignal (compat first arg) and optional context.
30
+ * Zero-arg / signal-only callbacks remain supported.
7
31
  */
32
+ export type SessionSerialTask = (signal: AbortSignal, context: SessionSerialTaskContext) => void | Promise<void>;
8
33
  export declare class SessionSerialQueue {
9
- private readonly tails;
10
- enqueue(sessionId: string, task: () => void | Promise<void>): void;
34
+ private readonly sessions;
35
+ /** Monotonic token source never reused across clear/enqueue cycles. */
36
+ private nextGeneration;
37
+ /**
38
+ * Enqueue work for `sessionId`. Returns a promise that settles when this
39
+ * task finishes, is skipped as stale, or is cancelled by {@link clear}.
40
+ * Fire-and-forget callers may ignore the return value (compat).
41
+ */
42
+ enqueue(sessionId: string, task: SessionSerialTask | ((signal: AbortSignal) => void | Promise<void>) | (() => void | Promise<void>)): Promise<"completed" | "cancelled" | "failed">;
43
+ /**
44
+ * Invalidate queued + running work for `sessionId`. Aborts the live AbortSignal,
45
+ * drops the map entry, and leaves a fresh identity for the next enqueue.
46
+ * Old in-flight `finally` blocks only touch their captured state object.
47
+ */
11
48
  clear(sessionId: string): void;
12
49
  clearAll(): void;
13
50
  hasPending(sessionId: string): boolean;
51
+ /** Live generation token for a session, or `undefined` when idle/cleared. */
52
+ generationOf(sessionId: string): number | undefined;
53
+ /** True when `generation` is the live map entry for `sessionId`. */
54
+ isCurrentGeneration(sessionId: string, generation: number): boolean;
55
+ /** True when a live queue row exists for the session. */
56
+ isLive(sessionId: string): boolean;
57
+ /** Live queue rows (tests: unique-ID churn must not grow this unbounded). */
58
+ get activeSessionCount(): number;
59
+ private ensureState;
14
60
  }
15
61
  //# sourceMappingURL=session-serial-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-serial-queue.d.ts","sourceRoot":"","sources":["../src/session-serial-queue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAE1D,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAclE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGvC"}
1
+ {"version":3,"file":"session-serial-queue.d.ts","sourceRoot":"","sources":["../src/session-serial-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,qBAAa,mCAAoC,SAAQ,KAAK;IAI1D,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM;IAJ7B,QAAQ,CAAC,IAAI,EAAG,gCAAgC,CAAU;gBAG/C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;CAO9B;AAED,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAS1B,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,yEAAyE;IACzE,OAAO,CAAC,cAAc,CAAK;IAE3B;;;;OAIG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,IAAI,EACA,iBAAiB,GACjB,CAAC,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC/C,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC/B,OAAO,CAAC,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAmEhD;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS9B,QAAQ,IAAI,IAAI;IAMhB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,6EAA6E;IAC7E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInD,oEAAoE;IACpE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAInE,yDAAyD;IACzD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIlC,6EAA6E;IAC7E,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,OAAO,CAAC,WAAW;CAapB"}
@@ -3,31 +3,142 @@
3
3
  * sessionId is processed strictly in enqueue order (no overlapping handlers).
4
4
  *
5
5
  * Task rejections are consumed at the queue tail so they do not surface as
6
- * process `unhandledRejection` events. Later same-session tasks still run.
6
+ * process `unhandledRejection` events. Later same-session tasks still run
7
+ * unless {@link clear} invalidated the generation.
8
+ *
9
+ * Lifecycle ordering:
10
+ * 1. `clear(sessionId)` aborts the live state and removes it from the map.
11
+ * 2. Each live row has a unique monotonic generation token (global counter).
12
+ * 3. Old task `finally` only mutates the captured state object; it deletes the
13
+ * map entry only when `sessions.get(id) === captured` and pending is 0.
14
+ * 4. No per-session tombstone / generations map — idle unique IDs leave no residue.
7
15
  */
16
+ export class SessionSerialQueueCancellationError extends Error {
17
+ sessionId;
18
+ generation;
19
+ code = "SESSION_SERIAL_QUEUE_CANCELLED";
20
+ constructor(sessionId, generation) {
21
+ super(`session serial queue cancelled (sessionId=${sessionId}, generation=${generation})`);
22
+ this.sessionId = sessionId;
23
+ this.generation = generation;
24
+ this.name = "SessionSerialQueueCancellationError";
25
+ }
26
+ }
8
27
  export class SessionSerialQueue {
9
- tails = new Map();
28
+ sessions = new Map();
29
+ /** Monotonic token source — never reused across clear/enqueue cycles. */
30
+ nextGeneration = 1;
31
+ /**
32
+ * Enqueue work for `sessionId`. Returns a promise that settles when this
33
+ * task finishes, is skipped as stale, or is cancelled by {@link clear}.
34
+ * Fire-and-forget callers may ignore the return value (compat).
35
+ */
10
36
  enqueue(sessionId, task) {
11
- const previous = this.tails.get(sessionId) ?? Promise.resolve();
37
+ const state = this.ensureState(sessionId);
38
+ const captured = state;
39
+ const generation = captured.generation;
40
+ captured.pending += 1;
41
+ const previous = captured.tail;
42
+ let taskAbort = null;
12
43
  const settled = previous
13
44
  .catch(() => undefined)
14
- .then(() => Promise.resolve(task()))
15
- .catch(() => undefined)
45
+ .then(async () => {
46
+ if (this.sessions.get(sessionId) !== captured) {
47
+ return "cancelled";
48
+ }
49
+ const abort = new AbortController();
50
+ taskAbort = abort;
51
+ captured.abort = abort;
52
+ const context = {
53
+ sessionId,
54
+ generation,
55
+ signal: abort.signal,
56
+ };
57
+ try {
58
+ await Promise.resolve(task(abort.signal, context));
59
+ if (this.sessions.get(sessionId) !== captured) {
60
+ return "cancelled";
61
+ }
62
+ return "completed";
63
+ }
64
+ catch (error) {
65
+ if (abort.signal.aborted ||
66
+ this.sessions.get(sessionId) !== captured ||
67
+ error instanceof SessionSerialQueueCancellationError) {
68
+ return "cancelled";
69
+ }
70
+ return "failed";
71
+ }
72
+ finally {
73
+ if (captured.abort === abort) {
74
+ captured.abort = null;
75
+ }
76
+ }
77
+ })
16
78
  .finally(() => {
17
- if (this.tails.get(sessionId) === settled) {
18
- this.tails.delete(sessionId);
79
+ // Only the captured state identity may be mutated by this task.
80
+ captured.pending = Math.max(0, captured.pending - 1);
81
+ if (taskAbort && captured.abort === taskAbort) {
82
+ captured.abort = null;
83
+ }
84
+ if (captured.pending === 0 &&
85
+ this.sessions.get(sessionId) === captured) {
86
+ this.sessions.delete(sessionId);
19
87
  }
20
88
  });
21
- this.tails.set(sessionId, settled);
89
+ captured.tail = settled;
90
+ return settled;
22
91
  }
92
+ /**
93
+ * Invalidate queued + running work for `sessionId`. Aborts the live AbortSignal,
94
+ * drops the map entry, and leaves a fresh identity for the next enqueue.
95
+ * Old in-flight `finally` blocks only touch their captured state object.
96
+ */
23
97
  clear(sessionId) {
24
- this.tails.delete(sessionId);
98
+ const old = this.sessions.get(sessionId);
99
+ if (!old)
100
+ return;
101
+ old.abort?.abort();
102
+ old.abort = null;
103
+ // Remove live identity — do not mutate old.generation / splice into old row.
104
+ this.sessions.delete(sessionId);
25
105
  }
26
106
  clearAll() {
27
- this.tails.clear();
107
+ for (const sessionId of [...this.sessions.keys()]) {
108
+ this.clear(sessionId);
109
+ }
28
110
  }
29
111
  hasPending(sessionId) {
30
- return this.tails.has(sessionId);
112
+ return (this.sessions.get(sessionId)?.pending ?? 0) > 0;
113
+ }
114
+ /** Live generation token for a session, or `undefined` when idle/cleared. */
115
+ generationOf(sessionId) {
116
+ return this.sessions.get(sessionId)?.generation;
117
+ }
118
+ /** True when `generation` is the live map entry for `sessionId`. */
119
+ isCurrentGeneration(sessionId, generation) {
120
+ return this.sessions.get(sessionId)?.generation === generation;
121
+ }
122
+ /** True when a live queue row exists for the session. */
123
+ isLive(sessionId) {
124
+ return this.sessions.has(sessionId);
125
+ }
126
+ /** Live queue rows (tests: unique-ID churn must not grow this unbounded). */
127
+ get activeSessionCount() {
128
+ return this.sessions.size;
129
+ }
130
+ ensureState(sessionId) {
131
+ const existing = this.sessions.get(sessionId);
132
+ if (existing)
133
+ return existing;
134
+ const created = {
135
+ generation: this.nextGeneration++,
136
+ tail: Promise.resolve(),
137
+ abort: null,
138
+ pending: 0,
139
+ };
140
+ this.sessions.set(sessionId, created);
141
+ return created;
31
142
  }
32
143
  }
33
144
  //# sourceMappingURL=session-serial-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-serial-queue.js","sourceRoot":"","sources":["../src/session-serial-queue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACZ,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE1D,OAAO,CAAC,SAAiB,EAAE,IAAgC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,QAAQ;aACrB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;aACnC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"session-serial-queue.js","sourceRoot":"","sources":["../src/session-serial-queue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voicethere/agent",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "VoiceThere customer agent SDK — IPC types and runtime helpers for sandboxed child bundles",
5
5
  "type": "module",
6
6
  "exports": {
@@ -75,9 +75,9 @@
75
75
  "@node-webrtc-rust/sdk": ">=0.6.5"
76
76
  },
77
77
  "devDependencies": {
78
- "@node-webrtc-rust/helpers": "^0.6.10",
79
- "@node-webrtc-rust/sdk": "0.6.9",
80
- "@node-webrtc-rust/signaling": "0.6.9",
78
+ "@node-webrtc-rust/helpers": "^0.6.17",
79
+ "@node-webrtc-rust/sdk": "0.6.17",
80
+ "@node-webrtc-rust/signaling": "0.6.17",
81
81
  "@types/node": "^22.10.0",
82
82
  "http-server": "^14.1.1",
83
83
  "ioredis": "^5.11.1",