@ai-matrx/agents 0.10.3 → 0.10.4

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/index.js CHANGED
@@ -7,17 +7,33 @@ function normalizeMatrxStreamEnvelope(value) {
7
7
  if (!isRecord(value)) return null;
8
8
  if (typeof value.event === "string") {
9
9
  const streamSeq = typeof value.stream_seq === "number" && Number.isFinite(value.stream_seq) ? value.stream_seq : void 0;
10
+ const streamId = typeof value.stream_id === "string" ? value.stream_id : void 0;
10
11
  return {
11
12
  event: value.event,
12
13
  data: value.data,
14
+ ...streamId === void 0 ? {} : { stream_id: streamId },
13
15
  ...streamSeq === void 0 ? {} : { stream_seq: streamSeq }
14
16
  };
15
17
  }
16
18
  if (value.e === "c" && typeof value.t === "string") {
17
- return { event: "chunk", data: { text: value.t } };
19
+ const streamId = typeof value.stream_id === "string" ? value.stream_id : void 0;
20
+ const streamSeq = typeof value.stream_seq === "number" && Number.isFinite(value.stream_seq) ? value.stream_seq : void 0;
21
+ return {
22
+ event: "chunk",
23
+ data: { text: value.t },
24
+ ...streamId === void 0 ? {} : { stream_id: streamId },
25
+ ...streamSeq === void 0 ? {} : { stream_seq: streamSeq }
26
+ };
18
27
  }
19
28
  if (value.e === "r" && typeof value.t === "string") {
20
- return { event: "reasoning_chunk", data: { text: value.t } };
29
+ const streamId = typeof value.stream_id === "string" ? value.stream_id : void 0;
30
+ const streamSeq = typeof value.stream_seq === "number" && Number.isFinite(value.stream_seq) ? value.stream_seq : void 0;
31
+ return {
32
+ event: "reasoning_chunk",
33
+ data: { text: value.t },
34
+ ...streamId === void 0 ? {} : { stream_id: streamId },
35
+ ...streamSeq === void 0 ? {} : { stream_seq: streamSeq }
36
+ };
21
37
  }
22
38
  return null;
23
39
  }
@@ -357,6 +373,7 @@ function createAgentRequestProjection(input) {
357
373
  completion: null,
358
374
  error: null,
359
375
  lastTransportSeq: 0,
376
+ transportStreamId: null,
360
377
  eventCount: 0
361
378
  };
362
379
  }
@@ -380,12 +397,17 @@ function toolStatus(event) {
380
397
  }
381
398
  function projectAgentEvent(current, event) {
382
399
  const streamSeq = asNumber(event.stream_seq);
383
- if (streamSeq !== null && streamSeq <= current.lastTransportSeq) return current;
400
+ const streamId = asString(event.stream_id);
401
+ const sameSegment = streamId === null || streamId === current.transportStreamId;
402
+ if (sameSegment && streamSeq !== null && streamSeq <= current.lastTransportSeq) {
403
+ return current;
404
+ }
384
405
  const data = asRecord(event.data);
385
406
  const next = {
386
407
  ...current,
387
408
  status: current.status === "pending" ? "streaming" : current.status,
388
- lastTransportSeq: streamSeq ?? current.lastTransportSeq,
409
+ lastTransportSeq: streamSeq === null ? current.lastTransportSeq : sameSegment ? Math.max(current.lastTransportSeq, streamSeq) : streamSeq,
410
+ transportStreamId: streamId ?? current.transportStreamId,
389
411
  eventCount: current.eventCount + 1
390
412
  };
391
413
  switch (event.event) {