@agentplat/streaming 0.2.0-beta.1 → 0.2.0-beta.11

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/README.md CHANGED
@@ -4,7 +4,17 @@ Server-Sent Events helpers for normalized `AgentStreamEvent` streams. The
4
4
  package depends on Web Standards and small structural Node response types; it
5
5
  does not depend on Next.js, Express or Hono.
6
6
 
7
- ## Web `Response` (Next.js, Hono and other Fetch-compatible frameworks)
7
+ ## Next.js App Router
8
+
9
+ ```ts
10
+ import { toNextSseResponse } from '@agentplat/streaming';
11
+
12
+ return toNextSseResponse(request, (signal) =>
13
+ session.stream({ input: scenario, signal })
14
+ );
15
+ ```
16
+
17
+ ## Web `Response` (Hono and other Fetch-compatible frameworks)
8
18
 
9
19
  ```ts
10
20
  import { streamToSSE } from '@agentplat/streaming';
@@ -22,5 +32,23 @@ import { pipeSSE } from '@agentplat/streaming';
22
32
  await pipeSSE(runtime.stream(agent, input, context), response);
23
33
  ```
24
34
 
35
+ ## Browser parser
36
+
37
+ ```ts
38
+ import type { MultiAgentSessionEvent } from '@agentplat/framework';
39
+ import { parseAgentSseStream } from '@agentplat/streaming';
40
+
41
+ for await (const envelope of parseAgentSseStream<MultiAgentSessionEvent>(
42
+ response.body,
43
+ { signal }
44
+ )) {
45
+ // Envelope v1 is parsed and its sequence is validated.
46
+ }
47
+ ```
48
+
25
49
  The wire envelope is versioned and includes a monotonic sequence number. Do
26
50
  not send credentials or secrets in runtime stream event payloads.
51
+
52
+ For callback-style UI integration, use `subscribeAgentSse(response, { onEvent,
53
+ onError, signal })`. It uses the same parser and rethrows malformed or failed
54
+ streams after invoking `onError`.
package/dist/index.d.ts CHANGED
@@ -1,16 +1,24 @@
1
- import type { JsonObject } from '@agentplat/core';
2
- import type { AgentStreamEvent } from '@agentplat/runtime';
1
+ import type { AgentStreamEvent, StreamEvent } from '@agentplat/runtime';
3
2
  /** Stable version of the public SSE JSON envelope. */
4
3
  export declare const AGENTPLAT_SSE_VERSION: 1;
5
- /** JSON body carried in each AgentPlat SSE event. */
6
- export interface AgentSseEnvelope {
4
+ /**
5
+ * JSON body carried in each AgentPlat SSE event.
6
+ *
7
+ * Passing a discriminated event union preserves its event-specific payload
8
+ * types on both the server and browser sides.
9
+ */
10
+ export type AgentSseEnvelope<TEvent extends StreamEvent = AgentStreamEvent> = TEvent extends StreamEvent ? {
7
11
  version: typeof AGENTPLAT_SSE_VERSION;
8
12
  sequence: number;
9
- type: AgentStreamEvent['type'];
10
- runId?: string;
11
- content?: string;
12
- payload?: JsonObject;
13
- }
13
+ type: TEvent['type'];
14
+ } & Pick<TEvent, Extract<keyof TEvent, 'runId' | 'content' | 'payload'>> : never;
15
+ /**
16
+ * Remove transport metadata from a parsed SSE envelope.
17
+ *
18
+ * Use this at a domain reducer boundary so UI code consumes the stable domain
19
+ * event rather than relying on structural compatibility with the envelope.
20
+ */
21
+ export declare function envelopeToEvent<TEvent extends StreamEvent>(envelope: AgentSseEnvelope<TEvent>): TEvent;
14
22
  /** Shared behavior for Web and Node SSE helpers. */
15
23
  export interface AgentSseOptions {
16
24
  signal?: AbortSignal;
@@ -19,6 +27,22 @@ export interface AgentSseOptions {
19
27
  /** Defaults to false so unexpected adapter details are not sent to clients. */
20
28
  exposeErrors?: boolean;
21
29
  }
30
+ /** Browser-side parsing and validation behavior. */
31
+ export interface ParseAgentSseOptions<TEvent extends StreamEvent> {
32
+ signal?: AbortSignal;
33
+ /** Defaults to true and requires contiguous sequence numbers starting at 1. */
34
+ strictSequence?: boolean;
35
+ /** Optional event-specific runtime validation after envelope validation. */
36
+ validate?: (envelope: AgentSseEnvelope<TEvent>) => void;
37
+ }
38
+ /** Callback hooks for consuming an AgentPlat SSE response without UI framework glue. */
39
+ export interface AgentSseSubscription<TEvent extends StreamEvent> {
40
+ onEvent(envelope: AgentSseEnvelope<TEvent>): void | Promise<void>;
41
+ onError?(error: unknown): void | Promise<void>;
42
+ signal?: AbortSignal;
43
+ strictSequence?: boolean;
44
+ validate?: (envelope: AgentSseEnvelope<TEvent>) => void;
45
+ }
22
46
  /** Minimal Node/Express response surface used without a framework dependency. */
23
47
  export interface NodeSseResponse {
24
48
  setHeader(name: string, value: string): void;
@@ -27,14 +51,32 @@ export interface NodeSseResponse {
27
51
  flushHeaders?(): void;
28
52
  once?(event: 'drain', listener: () => void): unknown;
29
53
  }
30
- /** Encode one normalized runtime event as a versioned SSE frame. */
31
- export declare function encodeSseEvent(event: AgentStreamEvent, sequence: number): string;
32
- /** Convert runtime events to a Fetch-compatible streaming SSE response. */
33
- export declare function toSseResponse(events: AsyncIterable<AgentStreamEvent>, options?: AgentSseOptions): Response;
54
+ /** Encode one normalized runtime or orchestration event as a versioned frame. */
55
+ export declare function encodeSseEvent<TEvent extends StreamEvent>(event: TEvent, sequence: number): string;
56
+ /** Convert events to a Fetch-compatible streaming SSE response. */
57
+ export declare function toSseResponse<TEvent extends StreamEvent>(events: AsyncIterable<TEvent>, options?: AgentSseOptions): Response;
34
58
  /** Alias with the spelling commonly used in web framework examples. */
35
59
  export declare const streamToSSE: typeof toSseResponse;
36
- /** Pipe runtime events to an Express-compatible Node response. */
37
- export declare function pipeSse(events: AsyncIterable<AgentStreamEvent>, response: NodeSseResponse, options?: AgentSseOptions): Promise<void>;
60
+ /**
61
+ * Next.js App Router helper that shares `request.signal` with event creation
62
+ * and SSE transport cancellation, making model abort propagation explicit.
63
+ */
64
+ export declare function toNextSseResponse<TEvent extends StreamEvent>(request: Request, createEvents: (signal: AbortSignal) => AsyncIterable<TEvent>, options?: Omit<AgentSseOptions, 'signal'>): Response;
65
+ /** Pipe events to an Express-compatible Node response. */
66
+ export declare function pipeSse<TEvent extends StreamEvent>(events: AsyncIterable<TEvent>, response: NodeSseResponse, options?: AgentSseOptions): Promise<void>;
38
67
  /** Alias with the spelling commonly used in Express examples. */
39
68
  export declare const pipeSSE: typeof pipeSse;
69
+ /**
70
+ * Parse a Fetch response body into validated, typed AgentPlat SSE envelopes.
71
+ * Frames split across arbitrary network chunks and multi-line data fields are
72
+ * handled without framework-specific browser code.
73
+ */
74
+ export declare function parseAgentSseStream<TEvent extends StreamEvent = AgentStreamEvent>(readable: ReadableStream<Uint8Array>, options?: ParseAgentSseOptions<TEvent>): AsyncIterable<AgentSseEnvelope<TEvent>>;
75
+ /**
76
+ * Consume a Fetch response through the validated envelope parser.
77
+ *
78
+ * Errors are reported to `onError` and then rethrown so callers cannot
79
+ * accidentally treat a broken stream as a completed session.
80
+ */
81
+ export declare function subscribeAgentSse<TEvent extends StreamEvent = AgentStreamEvent>(response: Response, subscription: AgentSseSubscription<TEvent>): Promise<void>;
40
82
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAEhD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,qBAAqB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,GAAG,IAAI,IAAI,CAAC;IACZ,YAAY,CAAC,IAAI,IAAI,CAAC;IACtB,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;CACtD;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACvC,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CAuDV;AAED,uEAAuE;AACvE,eAAO,MAAM,WAAW,sBAAgB,CAAC;AAEzC,kEAAkE;AAClE,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACvC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,iEAAiE;AACjE,eAAO,MAAM,OAAO,gBAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,WAAW,GAAG,gBAAgB,IACxE,MAAM,SAAS,WAAW,GACtB;IACE,OAAO,EAAE,OAAO,qBAAqB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CACtB,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,GACxE,KAAK,CAAC;AAEZ;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,WAAW,EACxD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACjC,MAAM,CAGR;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB,CAAC,MAAM,SAAS,WAAW;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,wFAAwF;AACxF,MAAM,WAAW,oBAAoB,CAAC,MAAM,SAAS,WAAW;IAC9D,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,GAAG,IAAI,IAAI,CAAC;IACZ,YAAY,CAAC,IAAI,IAAI,CAAC;IACtB,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;CACtD;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,SAAS,WAAW,EACvD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,SAAS,WAAW,EACtD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CA8DV;AAED,uEAAuE;AACvE,eAAO,MAAM,WAAW,sBAAgB,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,WAAW,EAC1D,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,EAC5D,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAM,GAC5C,QAAQ,CAKV;AAED,0DAA0D;AAC1D,wBAAsB,OAAO,CAAC,MAAM,SAAS,WAAW,EACtD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,iEAAiE;AACjE,eAAO,MAAM,OAAO,gBAAU,CAAC;AAE/B;;;;GAIG;AACH,wBAAuB,mBAAmB,CACxC,MAAM,SAAS,WAAW,GAAG,gBAAgB,EAE7C,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,OAAO,GAAE,oBAAoB,CAAC,MAAM,CAAM,GACzC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAwDzC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,SAAS,WAAW,GAAG,gBAAgB,EAE7C,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,oBAAoB,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
package/dist/index.js CHANGED
@@ -1,6 +1,16 @@
1
1
  /** Stable version of the public SSE JSON envelope. */
2
2
  export const AGENTPLAT_SSE_VERSION = 1;
3
- /** Encode one normalized runtime event as a versioned SSE frame. */
3
+ /**
4
+ * Remove transport metadata from a parsed SSE envelope.
5
+ *
6
+ * Use this at a domain reducer boundary so UI code consumes the stable domain
7
+ * event rather than relying on structural compatibility with the envelope.
8
+ */
9
+ export function envelopeToEvent(envelope) {
10
+ const { version: _version, sequence: _sequence, ...event } = envelope;
11
+ return event;
12
+ }
13
+ /** Encode one normalized runtime or orchestration event as a versioned frame. */
4
14
  export function encodeSseEvent(event, sequence) {
5
15
  if (!Number.isInteger(sequence) || sequence < 1) {
6
16
  throw new TypeError('SSE sequence must be a positive integer');
@@ -16,7 +26,7 @@ export function encodeSseEvent(event, sequence) {
16
26
  const id = `${event.runId ?? 'stream'}:${sequence}`;
17
27
  return `id: ${id}\nevent: agentplat.${event.type}\ndata: ${JSON.stringify(envelope)}\n\n`;
18
28
  }
19
- /** Convert runtime events to a Fetch-compatible streaming SSE response. */
29
+ /** Convert events to a Fetch-compatible streaming SSE response. */
20
30
  export function toSseResponse(events, options = {}) {
21
31
  const iterator = events[Symbol.asyncIterator]();
22
32
  const encoder = new TextEncoder();
@@ -40,6 +50,14 @@ export function toSseResponse(events, options = {}) {
40
50
  }
41
51
  try {
42
52
  const next = await iterator.next();
53
+ if (closed)
54
+ return;
55
+ if (options.signal?.aborted) {
56
+ closed = true;
57
+ await iterator.return?.();
58
+ controller.close();
59
+ return;
60
+ }
43
61
  if (next.done) {
44
62
  closed = true;
45
63
  controller.close();
@@ -49,7 +67,7 @@ export function toSseResponse(events, options = {}) {
49
67
  controller.enqueue(encoder.encode(encodeSseEvent(next.value, ++sequence)));
50
68
  }
51
69
  catch (error) {
52
- if (!closed && !options.signal?.aborted && lastType !== 'failed') {
70
+ if (!closed && !options.signal?.aborted && !isFailureType(lastType)) {
53
71
  controller.enqueue(encoder.encode(encodeSseEvent(errorEvent(error, options.exposeErrors), ++sequence)));
54
72
  }
55
73
  closed = true;
@@ -67,7 +85,17 @@ export function toSseResponse(events, options = {}) {
67
85
  }
68
86
  /** Alias with the spelling commonly used in web framework examples. */
69
87
  export const streamToSSE = toSseResponse;
70
- /** Pipe runtime events to an Express-compatible Node response. */
88
+ /**
89
+ * Next.js App Router helper that shares `request.signal` with event creation
90
+ * and SSE transport cancellation, making model abort propagation explicit.
91
+ */
92
+ export function toNextSseResponse(request, createEvents, options = {}) {
93
+ return toSseResponse(createEvents(request.signal), {
94
+ ...options,
95
+ signal: request.signal,
96
+ });
97
+ }
98
+ /** Pipe events to an Express-compatible Node response. */
71
99
  export async function pipeSse(events, response, options = {}) {
72
100
  for (const [name, value] of sseHeaders(options.headers)) {
73
101
  response.setHeader(name, value);
@@ -87,7 +115,7 @@ export async function pipeSse(events, response, options = {}) {
87
115
  }
88
116
  }
89
117
  catch (error) {
90
- if (!options.signal?.aborted && lastType !== 'failed') {
118
+ if (!options.signal?.aborted && !isFailureType(lastType)) {
91
119
  await write(response, encodeSseEvent(errorEvent(error, options.exposeErrors), ++sequence));
92
120
  }
93
121
  }
@@ -97,6 +125,145 @@ export async function pipeSse(events, response, options = {}) {
97
125
  }
98
126
  /** Alias with the spelling commonly used in Express examples. */
99
127
  export const pipeSSE = pipeSse;
128
+ /**
129
+ * Parse a Fetch response body into validated, typed AgentPlat SSE envelopes.
130
+ * Frames split across arbitrary network chunks and multi-line data fields are
131
+ * handled without framework-specific browser code.
132
+ */
133
+ export async function* parseAgentSseStream(readable, options = {}) {
134
+ const reader = readable.getReader();
135
+ const decoder = new TextDecoder();
136
+ let buffer = '';
137
+ let expectedSequence = 1;
138
+ const onAbort = () => {
139
+ void reader.cancel(options.signal?.reason);
140
+ };
141
+ options.signal?.addEventListener('abort', onAbort, { once: true });
142
+ try {
143
+ if (options.signal?.aborted) {
144
+ await reader.cancel(options.signal.reason);
145
+ return;
146
+ }
147
+ while (true) {
148
+ if (options.signal?.aborted)
149
+ return;
150
+ const { done, value } = await reader.read();
151
+ if (options.signal?.aborted)
152
+ return;
153
+ if (done) {
154
+ buffer += decoder.decode();
155
+ break;
156
+ }
157
+ buffer += decoder.decode(value, { stream: true });
158
+ let extracted = extractFrame(buffer);
159
+ while (extracted) {
160
+ buffer = extracted.rest;
161
+ const envelope = parseFrame(extracted.frame);
162
+ if (envelope) {
163
+ expectedSequence = validateSequence(envelope.sequence, expectedSequence, options.strictSequence ?? true);
164
+ options.validate?.(envelope);
165
+ yield envelope;
166
+ }
167
+ extracted = extractFrame(buffer);
168
+ }
169
+ }
170
+ if (buffer.trim()) {
171
+ const envelope = parseFrame(buffer);
172
+ if (envelope) {
173
+ validateSequence(envelope.sequence, expectedSequence, options.strictSequence ?? true);
174
+ options.validate?.(envelope);
175
+ yield envelope;
176
+ }
177
+ }
178
+ }
179
+ finally {
180
+ options.signal?.removeEventListener('abort', onAbort);
181
+ reader.releaseLock();
182
+ }
183
+ }
184
+ /**
185
+ * Consume a Fetch response through the validated envelope parser.
186
+ *
187
+ * Errors are reported to `onError` and then rethrown so callers cannot
188
+ * accidentally treat a broken stream as a completed session.
189
+ */
190
+ export async function subscribeAgentSse(response, subscription) {
191
+ if (!response.ok) {
192
+ const error = new Error(`AgentPlat SSE request failed with HTTP ${response.status}`);
193
+ await subscription.onError?.(error);
194
+ throw error;
195
+ }
196
+ if (!response.body) {
197
+ const error = new Error('AgentPlat SSE response has no body');
198
+ await subscription.onError?.(error);
199
+ throw error;
200
+ }
201
+ try {
202
+ for await (const envelope of parseAgentSseStream(response.body, {
203
+ signal: subscription.signal,
204
+ strictSequence: subscription.strictSequence,
205
+ validate: subscription.validate,
206
+ })) {
207
+ await subscription.onEvent(envelope);
208
+ }
209
+ }
210
+ catch (error) {
211
+ await subscription.onError?.(error);
212
+ throw error;
213
+ }
214
+ }
215
+ function parseFrame(frame) {
216
+ const data = frame
217
+ .split(/\r?\n/)
218
+ .filter((line) => line.startsWith('data:'))
219
+ .map((line) => line.slice(5).replace(/^ /, ''));
220
+ if (data.length === 0)
221
+ return undefined;
222
+ let parsed;
223
+ try {
224
+ parsed = JSON.parse(data.join('\n'));
225
+ }
226
+ catch {
227
+ throw new TypeError('Invalid JSON in AgentPlat SSE data');
228
+ }
229
+ if (!isObject(parsed)) {
230
+ throw new TypeError('AgentPlat SSE data must be an object');
231
+ }
232
+ if (parsed.version !== AGENTPLAT_SSE_VERSION) {
233
+ throw new TypeError(`Unsupported AgentPlat SSE version: ${parsed.version}`);
234
+ }
235
+ if (!Number.isInteger(parsed.sequence) || Number(parsed.sequence) < 1) {
236
+ throw new TypeError('AgentPlat SSE sequence must be a positive integer');
237
+ }
238
+ if (typeof parsed.type !== 'string' || !parsed.type) {
239
+ throw new TypeError('AgentPlat SSE event type is required');
240
+ }
241
+ if (parsed.runId !== undefined && typeof parsed.runId !== 'string') {
242
+ throw new TypeError('AgentPlat SSE runId must be a string');
243
+ }
244
+ if (parsed.content !== undefined && typeof parsed.content !== 'string') {
245
+ throw new TypeError('AgentPlat SSE content must be a string');
246
+ }
247
+ if (parsed.payload !== undefined && !isObject(parsed.payload)) {
248
+ throw new TypeError('AgentPlat SSE payload must be an object');
249
+ }
250
+ return parsed;
251
+ }
252
+ function extractFrame(buffer) {
253
+ const boundary = /\r?\n\r?\n/.exec(buffer);
254
+ if (!boundary || boundary.index === undefined)
255
+ return undefined;
256
+ return {
257
+ frame: buffer.slice(0, boundary.index),
258
+ rest: buffer.slice(boundary.index + boundary[0].length),
259
+ };
260
+ }
261
+ function validateSequence(sequence, expected, strict) {
262
+ if (strict && sequence !== expected) {
263
+ throw new TypeError(`Unexpected AgentPlat SSE sequence ${sequence}; expected ${expected}`);
264
+ }
265
+ return sequence + 1;
266
+ }
100
267
  function sseHeaders(additional) {
101
268
  const headers = new Headers(additional);
102
269
  headers.set('Content-Type', 'text/event-stream; charset=utf-8');
@@ -117,6 +284,12 @@ function errorEvent(error, exposeErrors = false) {
117
284
  content: exposeErrors && error instanceof Error ? error.message : 'Stream failed',
118
285
  };
119
286
  }
287
+ function isFailureType(type) {
288
+ return type === 'failed' || type?.endsWith('_failed') === true;
289
+ }
290
+ function isObject(value) {
291
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
292
+ }
120
293
  async function write(response, chunk) {
121
294
  if (response.write(chunk) || !response.once)
122
295
  return;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC;AA8BhD,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAC5B,KAAuB,EACvB,QAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAqB;QACjC,OAAO,EAAE,qBAAqB;QAC9B,QAAQ;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;IACF,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACpD,OAAO,OAAO,EAAE,sBAAsB,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5F,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAC3B,MAAuC,EACvC,UAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAA8C,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,cAAc,CAAa;QAC1C,KAAK,CAAC,UAAU;YACd,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,MAAM;gBAAE,OAAO;YACnB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,GAAG,IAAI,CAAC;oBACd,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,UAAU,CAAC,OAAO,CAChB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC,CACvD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjE,UAAU,CAAC,OAAO,CAChB,OAAO,CAAC,MAAM,CACZ,cAAc,CACZ,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EACvC,EAAE,QAAQ,CACX,CACF,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC;gBACd,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,MAAM;YACV,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAuC,EACvC,QAAyB,EACzB,UAA2B,EAAE;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAA8C,CAAC;IACnD,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;gBAAE,MAAM;YACnC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,MAAM,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,KAAK,CACT,QAAQ,EACR,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,GAAG,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,SAAS,UAAU,CAAC,UAAmC;IACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kCAAkC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,UAAU,OAAO,MAAM,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,YAAY,GAAG,KAAK;IACtD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EACL,YAAY,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;KAC3E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,QAAyB,EAAE,KAAa;IAC3D,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentplat/streaming",
3
- "version": "0.2.0-beta.1",
3
+ "version": "0.2.0-beta.11",
4
4
  "description": "Framework-neutral SSE helpers for AgentPlat runtime streams.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -18,8 +18,8 @@
18
18
  "README.md"
19
19
  ],
20
20
  "dependencies": {
21
- "@agentplat/core": "^0.2.0-beta.1",
22
- "@agentplat/runtime": "^0.2.0-beta.1"
21
+ "@agentplat/core": "^0.2.0-beta.11",
22
+ "@agentplat/runtime": "^0.2.0-beta.11"
23
23
  },
24
24
  "publishConfig": {
25
25
  "access": "public"