@theokit/agents 7.4.2 → 7.5.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,26 +1,31 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-Z4QWC7IK.js";
4
+
1
5
  // src/client/consume-ui-message-stream.ts
2
6
  import { parseWireStream, readMessageStream } from "@theokit/presenter/wire";
3
7
  async function consumeUIMessageStream(response, onMessage) {
4
8
  const chunkStream = await responseToChunkStream(response);
5
9
  await consumeChunkStream(chunkStream, onMessage);
6
10
  }
11
+ __name(consumeUIMessageStream, "consumeUIMessageStream");
7
12
  function responseToChunkStream(response) {
8
13
  if (response.body === null) {
9
- return Promise.resolve(
10
- new ReadableStream({
11
- start(controller) {
12
- controller.close();
13
- }
14
- })
15
- );
14
+ return Promise.resolve(new ReadableStream({
15
+ start(controller) {
16
+ controller.close();
17
+ }
18
+ }));
16
19
  }
17
20
  return Promise.resolve(parseWireStream(response.body));
18
21
  }
22
+ __name(responseToChunkStream, "responseToChunkStream");
19
23
  async function consumeChunkStream(stream, onMessage) {
20
24
  for await (const message of readMessageStream(stream)) {
21
25
  onMessage(message);
22
26
  }
23
27
  }
28
+ __name(consumeChunkStream, "consumeChunkStream");
24
29
 
25
30
  // src/client/http-transport.ts
26
31
  function toRecord(headers) {
@@ -28,7 +33,11 @@ function toRecord(headers) {
28
33
  if (headers instanceof Headers) return Object.fromEntries(headers.entries());
29
34
  return headers;
30
35
  }
36
+ __name(toRecord, "toRecord");
31
37
  var HttpTransport = class {
38
+ static {
39
+ __name(this, "HttpTransport");
40
+ }
32
41
  #api;
33
42
  #headers;
34
43
  #fetch;
@@ -59,13 +68,15 @@ var HttpTransport = class {
59
68
  // conversation (SDK history + session-scoped tools like `todolist`) persists across turns instead of
60
69
  // resetting on a fresh random session each request. Placed last so a session is never shadowed by an
61
70
  // `id` field inside the typed input. Undefined chatId ⇒ key omitted ⇒ server falls back (unchanged).
62
- body: JSON.stringify({ ...extra, messages, id: chatId }),
71
+ body: JSON.stringify({
72
+ ...extra,
73
+ messages,
74
+ id: chatId
75
+ }),
63
76
  signal: abortSignal
64
77
  });
65
78
  if (!response.ok) {
66
- throw new Error(
67
- `Agent request to ${this.#api} failed: ${response.status} ${response.statusText}`
68
- );
79
+ throw new Error(`Agent request to ${this.#api} failed: ${response.status} ${response.statusText}`);
69
80
  }
70
81
  this.#lastRunId = response.headers.get("x-theokit-run-id") ?? void 0;
71
82
  return responseToChunkStream(response);
@@ -74,13 +85,14 @@ var HttpTransport = class {
74
85
  if (this.#lastRunId === void 0) return null;
75
86
  const response = await this.#fetch(`${this.#api}/runs/${this.#lastRunId}/stream`, {
76
87
  method: "GET",
77
- headers: { ...this.#resolveHeaders(), ...toRecord(options.headers) }
88
+ headers: {
89
+ ...this.#resolveHeaders(),
90
+ ...toRecord(options.headers)
91
+ }
78
92
  });
79
93
  if (response.status === 404) return null;
80
94
  if (!response.ok) {
81
- throw new Error(
82
- `Agent reconnect to run ${this.#lastRunId} failed: ${response.status} ${response.statusText}`
83
- );
95
+ throw new Error(`Agent reconnect to run ${this.#lastRunId} failed: ${response.status} ${response.statusText}`);
84
96
  }
85
97
  return responseToChunkStream(response);
86
98
  }
@@ -110,6 +122,7 @@ function extractLastUserText(messages) {
110
122
  }
111
123
  return "";
112
124
  }
125
+ __name(extractLastUserText, "extractLastUserText");
113
126
 
114
127
  // src/client/in-process-transport.ts
115
128
  function generatorToStream(gen) {
@@ -131,24 +144,30 @@ function generatorToStream(gen) {
131
144
  }
132
145
  });
133
146
  }
147
+ __name(generatorToStream, "generatorToStream");
134
148
  var ApprovalAbortedError = class extends Error {
149
+ static {
150
+ __name(this, "ApprovalAbortedError");
151
+ }
152
+ approvalId;
135
153
  constructor(approvalId, reason) {
136
- super(`Approval '${approvalId}' discarded: ${reason}.`);
137
- this.approvalId = approvalId;
154
+ super(`Approval '${approvalId}' discarded: ${reason}.`), this.approvalId = approvalId;
138
155
  this.name = "ApprovalAbortedError";
139
156
  }
140
- approvalId;
141
157
  };
142
158
  var InProcessTransport = class {
159
+ static {
160
+ __name(this, "InProcessTransport");
161
+ }
143
162
  #run;
144
163
  /**
145
- * Parked inline approvals: `approvalId` → how to resolve **or reject** the stalled promise.
146
- *
147
- * M92 — `reject` arrived together with the eviction. Before there was only `resolve`, and nothing
148
- * erased the entry when the turn aborted: the promise stayed pending **forever**, and the SDK tool
149
- * call hung with it. A promise that neither resolves **nor** rejects is the quietest way to swallow
150
- * an error — not even a stack trace exists (`error-handling.md § 2`).
151
- */
164
+ * Parked inline approvals: `approvalId` → how to resolve **or reject** the stalled promise.
165
+ *
166
+ * M92 — `reject` arrived together with the eviction. Before there was only `resolve`, and nothing
167
+ * erased the entry when the turn aborted: the promise stayed pending **forever**, and the SDK tool
168
+ * call hung with it. A promise that neither resolves **nor** rejects is the quietest way to swallow
169
+ * an error — not even a stack trace exists (`error-handling.md § 2`).
170
+ */
152
171
  #pending = /* @__PURE__ */ new Map();
153
172
  /** The current turn. A new `send()` increments it and sweeps the previous one. */
154
173
  #turn = 0;
@@ -156,15 +175,15 @@ var InProcessTransport = class {
156
175
  this.#run = options.run;
157
176
  }
158
177
  /**
159
- * Creates the `awaitApproval` for THIS turn, with the number and the signal closed over.
160
- *
161
- * A shared field will not do, and the M92 review measured why: a turn-1 runner that parks **after**
162
- * turn 2's `send` reads the already-overwritten field and is born labelled turn 2 — turn 1's abort
163
- * does not sweep it, and the promise hangs. M92's first fix swapped "read at approval time" for
164
- * "read at `send`", and stayed wrong for the same reason: a single field.
165
- *
166
- * The closure is the only place a runner's turn can live without another one overwriting it.
167
- */
178
+ * Creates the `awaitApproval` for THIS turn, with the number and the signal closed over.
179
+ *
180
+ * A shared field will not do, and the M92 review measured why: a turn-1 runner that parks **after**
181
+ * turn 2's `send` reads the already-overwritten field and is born labelled turn 2 — turn 1's abort
182
+ * does not sweep it, and the promise hangs. M92's first fix swapped "read at approval time" for
183
+ * "read at `send`", and stayed wrong for the same reason: a single field.
184
+ *
185
+ * The closure is the only place a runner's turn can live without another one overwriting it.
186
+ */
168
187
  #createAwaitApproval(turn, signal) {
169
188
  return (req) => new Promise((resolve, reject) => {
170
189
  if (signal?.aborted === true) {
@@ -172,23 +191,27 @@ var InProcessTransport = class {
172
191
  return;
173
192
  }
174
193
  if (this.#pending.has(req.approvalId)) {
175
- reject(
176
- new Error(`Duplicate pending approval id '${req.approvalId}' \u2014 ids must be unique.`)
177
- );
194
+ reject(new Error(`Duplicate pending approval id '${req.approvalId}' \u2014 ids must be unique.`));
178
195
  return;
179
196
  }
180
- this.#pending.set(req.approvalId, { resolve, reject, turn });
197
+ this.#pending.set(req.approvalId, {
198
+ resolve,
199
+ reject,
200
+ turn
201
+ });
181
202
  });
182
203
  }
183
204
  /**
184
- * Sweeps a turn's approvals, rejecting each one with a TYPED error.
185
- *
186
- * Reject rather than `resolve(false)`: a `false` is indistinguishable from *"the user denied"*, and
187
- * the difference matters — denying is a decision, aborting is an interruption. The SDK needs both to
188
- * unwind the tool call correctly.
189
- */
205
+ * Sweeps a turn's approvals, rejecting each one with a TYPED error.
206
+ *
207
+ * Reject rather than `resolve(false)`: a `false` is indistinguishable from *"the user denied"*, and
208
+ * the difference matters — denying is a decision, aborting is an interruption. The SDK needs both to
209
+ * unwind the tool call correctly.
210
+ */
190
211
  #sweepTurn(turn, reason) {
191
- for (const [id, entry] of [...this.#pending]) {
212
+ for (const [id, entry] of [
213
+ ...this.#pending
214
+ ]) {
192
215
  if (entry.turn !== turn) continue;
193
216
  this.#pending.delete(id);
194
217
  entry.reject(new ApprovalAbortedError(id, reason));
@@ -206,13 +229,11 @@ var InProcessTransport = class {
206
229
  if (abortSignal?.aborted === true) {
207
230
  this.#sweepTurn(currentTurn, "the turn was already aborted");
208
231
  } else {
209
- abortSignal?.addEventListener(
210
- "abort",
211
- () => {
212
- this.#sweepTurn(currentTurn, "the turn was aborted");
213
- },
214
- { once: true }
215
- );
232
+ abortSignal?.addEventListener("abort", () => {
233
+ this.#sweepTurn(currentTurn, "the turn was aborted");
234
+ }, {
235
+ once: true
236
+ });
216
237
  }
217
238
  const generator = this.#run({
218
239
  message: extractLastUserText(messages),
@@ -229,9 +250,7 @@ var InProcessTransport = class {
229
250
  approve(approvalId, decision) {
230
251
  const entry = this.#pending.get(approvalId);
231
252
  if (entry === void 0) {
232
- return Promise.reject(
233
- new Error(`No pending approval '${approvalId}' (unknown or already settled).`)
234
- );
253
+ return Promise.reject(new Error(`No pending approval '${approvalId}' (unknown or already settled).`));
235
254
  }
236
255
  this.#pending.delete(approvalId);
237
256
  entry.resolve(decision);
@@ -241,6 +260,9 @@ var InProcessTransport = class {
241
260
 
242
261
  // src/client/channel-transport.ts
243
262
  var ChannelTransport = class {
263
+ static {
264
+ __name(this, "ChannelTransport");
265
+ }
244
266
  #source;
245
267
  constructor(options) {
246
268
  this.#source = options.source;
@@ -250,57 +272,57 @@ var ChannelTransport = class {
250
272
  const message = extractLastUserText(messages);
251
273
  const source = this.#source;
252
274
  let closed = false;
253
- let teardown = () => void 0;
254
- let detachAbort = () => void 0;
275
+ let teardown = /* @__PURE__ */ __name(() => void 0, "teardown");
276
+ let detachAbort = /* @__PURE__ */ __name(() => void 0, "detachAbort");
255
277
  const stream = new ReadableStream({
256
278
  start(controller) {
257
- const finish = (settle) => {
279
+ const finish = /* @__PURE__ */ __name((settle) => {
258
280
  if (closed) return;
259
281
  closed = true;
260
282
  detachAbort();
261
283
  settle();
262
- };
263
- teardown = source.start(
264
- { message, context: metadata },
265
- {
266
- onLine: (line) => {
267
- if (closed) return;
268
- let parsed;
269
- try {
270
- parsed = JSON.parse(line);
271
- } catch {
272
- return;
273
- }
274
- if (typeof parsed !== "object" || parsed === null || typeof parsed.type !== "string") {
275
- return;
276
- }
277
- controller.enqueue(parsed);
278
- },
279
- onClose: () => {
280
- finish(() => {
281
- controller.close();
282
- });
283
- },
284
- onError: (err) => {
285
- finish(() => {
286
- controller.error(err);
287
- });
284
+ }, "finish");
285
+ teardown = source.start({
286
+ message,
287
+ context: metadata
288
+ }, {
289
+ onLine: /* @__PURE__ */ __name((line) => {
290
+ if (closed) return;
291
+ let parsed;
292
+ try {
293
+ parsed = JSON.parse(line);
294
+ } catch {
295
+ return;
288
296
  }
289
- }
290
- );
297
+ if (typeof parsed !== "object" || parsed === null || typeof parsed.type !== "string") {
298
+ return;
299
+ }
300
+ controller.enqueue(parsed);
301
+ }, "onLine"),
302
+ onClose: /* @__PURE__ */ __name(() => {
303
+ finish(() => {
304
+ controller.close();
305
+ });
306
+ }, "onClose"),
307
+ onError: /* @__PURE__ */ __name((err) => {
308
+ finish(() => {
309
+ controller.error(err);
310
+ });
311
+ }, "onError")
312
+ });
291
313
  if (abortSignal !== void 0) {
292
- const onAbort = () => {
314
+ const onAbort = /* @__PURE__ */ __name(() => {
293
315
  finish(() => {
294
316
  teardown();
295
317
  controller.close();
296
318
  });
297
- };
319
+ }, "onAbort");
298
320
  if (abortSignal.aborted) onAbort();
299
321
  else {
300
322
  abortSignal.addEventListener("abort", onAbort);
301
- detachAbort = () => {
323
+ detachAbort = /* @__PURE__ */ __name(() => {
302
324
  abortSignal.removeEventListener("abort", onAbort);
303
- };
325
+ }, "detachAbort");
304
326
  }
305
327
  }
306
328
  },
@@ -332,14 +354,24 @@ function inputToText(input) {
332
354
  if (typeof input === "string") return input;
333
355
  return JSON.stringify(input);
334
356
  }
357
+ __name(inputToText, "inputToText");
335
358
  function buildUserMessage(input) {
336
359
  return {
337
360
  id: crypto.randomUUID(),
338
361
  role: "user",
339
- parts: [{ type: "text", text: inputToText(input) }]
362
+ parts: [
363
+ {
364
+ type: "text",
365
+ text: inputToText(input)
366
+ }
367
+ ]
340
368
  };
341
369
  }
370
+ __name(buildUserMessage, "buildUserMessage");
342
371
  var AgentClient = class {
372
+ static {
373
+ __name(this, "AgentClient");
374
+ }
343
375
  #transport;
344
376
  #chatId = crypto.randomUUID();
345
377
  #listeners = /* @__PURE__ */ new Set();
@@ -356,23 +388,28 @@ var AgentClient = class {
356
388
  #currentUser;
357
389
  /** A stable id for the current turn's assistant (the SDK leaves it empty — we fabricate one). */
358
390
  #currentAssistantId = "";
359
- #snapshot = { messages: [], thread: [], status: "idle", error: void 0 };
391
+ #snapshot = {
392
+ messages: [],
393
+ thread: [],
394
+ status: "idle",
395
+ error: void 0
396
+ };
360
397
  /**
361
- * M92 — the committed prefix, materialized ONCE per write instead of once per token delta.
362
- *
363
- * `#committed` changes in only two places (measured): in `send()`'s `done` and in `reset()`. Between
364
- * deltas it is constant, so rebuilding it on every `#emit` is work the structure already guarantees
365
- * is useless.
366
- *
367
- * Invalidation happens **on write**, not by comparison: comparing would cost the same O(C) this
368
- * avoids, and memoizing by length would be wrong in `reset()` — equal length with different content
369
- * is possible, and the bug would be invisible.
370
- *
371
- * Honesty about the size of the win: measured, the spread costs **0.0062 ms per delta @400 messages**
372
- * — 3.1 ms across a 500-delta turn. It is real and it is micro. The order of magnitude of this
373
- * milestone is in the coalescing below, because what hangs off each emit (deriving the timeline)
374
- * costs **3.274 ms per call** at the same thread size (M86).
375
- */
398
+ * M92 — the committed prefix, materialized ONCE per write instead of once per token delta.
399
+ *
400
+ * `#committed` changes in only two places (measured): in `send()`'s `done` and in `reset()`. Between
401
+ * deltas it is constant, so rebuilding it on every `#emit` is work the structure already guarantees
402
+ * is useless.
403
+ *
404
+ * Invalidation happens **on write**, not by comparison: comparing would cost the same O(C) this
405
+ * avoids, and memoizing by length would be wrong in `reset()` — equal length with different content
406
+ * is possible, and the bug would be invisible.
407
+ *
408
+ * Honesty about the size of the win: measured, the spread costs **0.0062 ms per delta @400 messages**
409
+ * — 3.1 ms across a 500-delta turn. It is real and it is micro. The order of magnitude of this
410
+ * milestone is in the coalescing below, because what hangs off each emit (deriving the timeline)
411
+ * costs **3.274 ms per call** at the same thread size (M86).
412
+ */
376
413
  #committedPrefix = [];
377
414
  /** Opt-in coalescing: `0` (the default) emits per delta, as always. */
378
415
  #emitIntervalMs;
@@ -383,38 +420,46 @@ var AgentClient = class {
383
420
  this.#emitIntervalMs = options?.emitIntervalMs ?? 0;
384
421
  }
385
422
  /** Subscribe to state changes; returns an unsubscribe fn. */
386
- subscribe = (listener) => {
423
+ subscribe = /* @__PURE__ */ __name((listener) => {
387
424
  this.#listeners.add(listener);
388
425
  return () => {
389
426
  this.#listeners.delete(listener);
390
427
  };
391
- };
428
+ }, "subscribe");
392
429
  /** The current immutable snapshot (stable reference until the next emit). */
393
- getSnapshot = () => this.#snapshot;
430
+ getSnapshot = /* @__PURE__ */ __name(() => this.#snapshot, "getSnapshot");
394
431
  /**
395
- * Emits NOW. Used directly on status transitions — see `#scheduleEmit`.
396
- */
432
+ * Emits NOW. Used directly on status transitions — see `#scheduleEmit`.
433
+ */
397
434
  #emit() {
398
435
  if (this.#timerDeEmit !== void 0) {
399
436
  clearTimeout(this.#timerDeEmit);
400
437
  this.#timerDeEmit = void 0;
401
438
  }
402
- const tail = this.#currentUser ? [this.#currentUser, ...this.#messages] : this.#messages;
439
+ const tail = this.#currentUser ? [
440
+ this.#currentUser,
441
+ ...this.#messages
442
+ ] : this.#messages;
403
443
  const thread = this.#committedPrefix.concat(tail);
404
- this.#snapshot = { messages: this.#messages, thread, status: this.#status, error: this.#error };
444
+ this.#snapshot = {
445
+ messages: this.#messages,
446
+ thread,
447
+ status: this.#status,
448
+ error: this.#error
449
+ };
405
450
  for (const listener of this.#listeners) listener();
406
451
  }
407
452
  /**
408
- * Emits per WINDOW when coalescing is on; immediately when it is off.
409
- *
410
- * Trailing edge: the timer emits at the **end** of the window, with the most recent state. What this
411
- * buys is not a cheaper emit — it is **fewer emits**, and what hangs off each one is the 3.274 ms
412
- * derivation measured in M86.
413
- *
414
- * Status transitions (`done`/`error`/`abort`) do NOT go through here: they call `#emit` directly,
415
- * because a final state trapped in a 16 ms timer is a final state lost if the process exits first —
416
- * and `exec` exits right after the turn.
417
- */
453
+ * Emits per WINDOW when coalescing is on; immediately when it is off.
454
+ *
455
+ * Trailing edge: the timer emits at the **end** of the window, with the most recent state. What this
456
+ * buys is not a cheaper emit — it is **fewer emits**, and what hangs off each one is the 3.274 ms
457
+ * derivation measured in M86.
458
+ *
459
+ * Status transitions (`done`/`error`/`abort`) do NOT go through here: they call `#emit` directly,
460
+ * because a final state trapped in a 16 ms timer is a final state lost if the process exits first —
461
+ * and `exec` exits right after the turn.
462
+ */
418
463
  #scheduleEmit() {
419
464
  if (this.#emitIntervalMs <= 0) {
420
465
  this.#emit();
@@ -427,14 +472,16 @@ var AgentClient = class {
427
472
  }, this.#emitIntervalMs);
428
473
  }
429
474
  #upsert(message) {
430
- const next = [...this.#messages];
475
+ const next = [
476
+ ...this.#messages
477
+ ];
431
478
  const idx = next.findIndex((existing) => existing.id === message.id);
432
479
  if (idx >= 0) next[idx] = message;
433
480
  else next.push(message);
434
481
  this.#messages = next;
435
482
  }
436
483
  async #drive(open, controller) {
437
- const aborted = () => controller.signal.aborted;
484
+ const aborted = /* @__PURE__ */ __name(() => controller.signal.aborted, "aborted");
438
485
  try {
439
486
  const stream = await open();
440
487
  if (aborted()) return;
@@ -445,7 +492,10 @@ var AgentClient = class {
445
492
  }
446
493
  await consumeChunkStream(stream, (message) => {
447
494
  if (aborted()) return;
448
- const stamped = message.id ? message : { ...message, id: this.#currentAssistantId };
495
+ const stamped = message.id ? message : {
496
+ ...message,
497
+ id: this.#currentAssistantId
498
+ };
449
499
  this.#upsert(stamped);
450
500
  this.#scheduleEmit();
451
501
  });
@@ -460,9 +510,13 @@ var AgentClient = class {
460
510
  }
461
511
  }
462
512
  /** Send a typed input; opens a fresh stream (replaces prior messages). */
463
- send = (input) => {
513
+ send = /* @__PURE__ */ __name((input) => {
464
514
  if (this.#status === "done" && this.#currentUser) {
465
- this.#committed = [...this.#committed, this.#currentUser, ...this.#messages];
515
+ this.#committed = [
516
+ ...this.#committed,
517
+ this.#currentUser,
518
+ ...this.#messages
519
+ ];
466
520
  this.#committedPrefix = this.#committed;
467
521
  }
468
522
  this.abort();
@@ -476,25 +530,24 @@ var AgentClient = class {
476
530
  this.#status = "streaming";
477
531
  this.#emit();
478
532
  const context = this.#contextResolver?.();
479
- void this.#drive(
480
- () => this.#transport.sendMessages({
481
- trigger: "submit-message",
482
- chatId: this.#chatId,
483
- messageId: void 0,
484
- messages: [userMsg],
485
- abortSignal: controller.signal,
486
- // Only object inputs flow as the request `body` (the turn text is always in `messages`);
487
- // a primitive input is carried by the user message, never spread into the body.
488
- body: typeof input === "object" && input !== null ? input : void 0,
489
- // M43 per-request context reaches every transport (headers HTTP, metadata in-process/channel).
490
- headers: context?.headers,
491
- metadata: context?.metadata
492
- }),
493
- controller
494
- );
495
- };
533
+ void this.#drive(() => this.#transport.sendMessages({
534
+ trigger: "submit-message",
535
+ chatId: this.#chatId,
536
+ messageId: void 0,
537
+ messages: [
538
+ userMsg
539
+ ],
540
+ abortSignal: controller.signal,
541
+ // Only object inputs flow as the request `body` (the turn text is always in `messages`);
542
+ // a primitive input is carried by the user message, never spread into the body.
543
+ body: typeof input === "object" && input !== null ? input : void 0,
544
+ // M43 — per-request context reaches every transport (headers → HTTP, metadata → in-process/channel).
545
+ headers: context?.headers,
546
+ metadata: context?.metadata
547
+ }), controller);
548
+ }, "send");
496
549
  /** Resume an interrupted stream via the transport's `reconnectToStream` (no-op when unavailable). */
497
- reconnect = () => {
550
+ reconnect = /* @__PURE__ */ __name(() => {
498
551
  const controller = new AbortController();
499
552
  this.#controller = controller;
500
553
  if (!this.#currentAssistantId) this.#currentAssistantId = crypto.randomUUID();
@@ -502,26 +555,23 @@ var AgentClient = class {
502
555
  this.#status = "streaming";
503
556
  this.#emit();
504
557
  const context = this.#contextResolver?.();
505
- void this.#drive(
506
- () => this.#transport.reconnectToStream({
507
- chatId: this.#chatId,
508
- headers: context?.headers,
509
- metadata: context?.metadata
510
- }),
511
- controller
512
- );
513
- };
558
+ void this.#drive(() => this.#transport.reconnectToStream({
559
+ chatId: this.#chatId,
560
+ headers: context?.headers,
561
+ metadata: context?.metadata
562
+ }), controller);
563
+ }, "reconnect");
514
564
  /** Abort an in-flight stream (not an error — leaves messages as-is). */
515
- abort = () => {
565
+ abort = /* @__PURE__ */ __name(() => {
516
566
  this.#controller?.abort();
517
567
  this.#controller = null;
518
568
  if (this.#status === "streaming") {
519
569
  this.#status = this.#committed.length > 0 || this.#messages.length > 0 ? "done" : "idle";
520
570
  this.#emit();
521
571
  }
522
- };
572
+ }, "abort");
523
573
  /** Clear messages + error, back to idle. */
524
- reset = () => {
574
+ reset = /* @__PURE__ */ __name(() => {
525
575
  this.abort();
526
576
  this.#messages = [];
527
577
  this.#committed = [];
@@ -530,24 +580,30 @@ var AgentClient = class {
530
580
  this.#error = void 0;
531
581
  this.#status = "idle";
532
582
  this.#emit();
533
- };
583
+ }, "reset");
534
584
  /** Settle a paused HITL approval via the transport's HITL path (HTTP POST or inline callback). */
535
- approve = async (approvalId, decision) => {
585
+ approve = /* @__PURE__ */ __name(async (approvalId, decision) => {
536
586
  await this.#transport.approve?.(approvalId, decision);
537
- };
587
+ }, "approve");
538
588
  };
539
589
 
540
590
  // src/client/agent-handle.ts
541
591
  function agentHandle(path) {
542
592
  return {
543
593
  path,
544
- inProcess: (run) => new InProcessTransport({ run }),
545
- channel: (source) => new ChannelTransport({ source })
594
+ inProcess: /* @__PURE__ */ __name((run) => new InProcessTransport({
595
+ run
596
+ }), "inProcess"),
597
+ channel: /* @__PURE__ */ __name((source) => new ChannelTransport({
598
+ source
599
+ }), "channel")
546
600
  };
547
601
  }
602
+ __name(agentHandle, "agentHandle");
548
603
  function isAgentHandle(value) {
549
604
  return typeof value === "object" && value !== null && typeof value.path === "string" && typeof value.sendMessages !== "function";
550
605
  }
606
+ __name(isAgentHandle, "isAgentHandle");
551
607
 
552
608
  export {
553
609
  consumeUIMessageStream,
@@ -562,4 +618,4 @@ export {
562
618
  agentHandle,
563
619
  isAgentHandle
564
620
  };
565
- //# sourceMappingURL=chunk-FJA4QQLZ.js.map
621
+ //# sourceMappingURL=chunk-2BAFKRXT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/consume-ui-message-stream.ts","../src/client/http-transport.ts","../src/client/last-user-text.ts","../src/client/in-process-transport.ts","../src/client/channel-transport.ts","../src/client/agent-client.ts","../src/client/agent-handle.ts"],"mappings":"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","names":["parseWireStream","readMessageStream","consumeUIMessageStream","response","onMessage","chunkStream","responseToChunkStream","consumeChunkStream","body","Promise","resolve","ReadableStream","start","controller","close","parseWireStream","stream","message","readMessageStream","toRecord","headers","undefined","Headers","Object","fromEntries","entries","HttpTransport","options","api","fetch","globalThis","bind","sendMessages","messages","abortSignal","body","chatId","extra","response","method","accept","JSON","stringify","id","signal","ok","Error","status","statusText","get","responseToChunkStream","reconnectToStream","approve","approvalId","decision","extractLastUserText","messages","i","length","message","role","text","parts","filter","part","type","map","join","generatorToStream","gen","ReadableStream","pull","controller","result","next","done","close","enqueue","value","err","error","cancel","return","undefined","ApprovalAbortedError","Error","approvalId","reason","name","InProcessTransport","Map","options","run","turn","signal","req","Promise","resolve","reject","aborted","has","set","id","entry","delete","pending","size","sendMessages","messages","abortSignal","metadata","currentTurn","addEventListener","once","generator","message","extractLastUserText","awaitApproval","context","reconnectToStream","approve","decision","get","ChannelTransport","options","source","sendMessages","messages","abortSignal","metadata","message","extractLastUserText","closed","teardown","undefined","detachAbort","stream","ReadableStream","start","controller","finish","settle","context","onLine","line","parsed","JSON","parse","type","enqueue","onClose","close","onError","err","error","onAbort","aborted","addEventListener","removeEventListener","cancel","Promise","resolve","reconnectToStream","approve","approvalId","decision","Error","inputToText","input","message","JSON","stringify","buildUserMessage","id","crypto","randomUUID","role","parts","type","text","AgentClient","Set","messages","thread","status","error","undefined","transport","contextResolver","options","emitIntervalMs","subscribe","listener","add","delete","getSnapshot","clearTimeout","tail","concat","setTimeout","next","idx","findIndex","existing","push","open","controller","aborted","signal","stream","length","consumeChunkStream","stamped","err","Error","String","send","abort","AbortController","userMsg","context","sendMessages","trigger","chatId","messageId","abortSignal","body","headers","metadata","reconnect","reconnectToStream","reset","approve","approvalId","decision","agentHandle","path","inProcess","run","InProcessTransport","channel","source","ChannelTransport","isAgentHandle","value","sendMessages"]}