@kortyx/stream 0.3.1 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @chatbot-core/types
2
2
 
3
+ ## [0.4.0](https://github.com/kortyx-io/kortyx/compare/stream-v0.3.1...stream-v0.4.0) (2026-02-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * **hooks:** consolidate reason+interrupt contracts ([4716a4d](https://github.com/kortyx-io/kortyx/commit/4716a4d4739b4a71b7c6e84717c830cd9ff625a6))
9
+
3
10
  ## [0.3.1](https://github.com/kortyx-io/kortyx/compare/stream-v0.3.0...stream-v0.3.1) (2026-02-17)
4
11
 
5
12
 
@@ -36,33 +36,60 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
36
36
  }>, z.ZodObject<{
37
37
  type: z.ZodLiteral<"text-start">;
38
38
  node: z.ZodOptional<z.ZodString>;
39
+ id: z.ZodOptional<z.ZodString>;
40
+ opId: z.ZodOptional<z.ZodString>;
41
+ segmentId: z.ZodOptional<z.ZodString>;
39
42
  }, "strip", z.ZodTypeAny, {
40
43
  type?: "text-start";
44
+ id?: string;
45
+ opId?: string;
41
46
  node?: string;
47
+ segmentId?: string;
42
48
  }, {
43
49
  type?: "text-start";
50
+ id?: string;
51
+ opId?: string;
44
52
  node?: string;
53
+ segmentId?: string;
45
54
  }>, z.ZodObject<{
46
55
  type: z.ZodLiteral<"text-delta">;
47
56
  delta: z.ZodString;
48
57
  node: z.ZodOptional<z.ZodString>;
58
+ id: z.ZodOptional<z.ZodString>;
59
+ opId: z.ZodOptional<z.ZodString>;
60
+ segmentId: z.ZodOptional<z.ZodString>;
49
61
  }, "strip", z.ZodTypeAny, {
50
62
  type?: "text-delta";
63
+ id?: string;
64
+ opId?: string;
51
65
  node?: string;
66
+ segmentId?: string;
52
67
  delta?: string;
53
68
  }, {
54
69
  type?: "text-delta";
70
+ id?: string;
71
+ opId?: string;
55
72
  node?: string;
73
+ segmentId?: string;
56
74
  delta?: string;
57
75
  }>, z.ZodObject<{
58
76
  type: z.ZodLiteral<"text-end">;
59
77
  node: z.ZodOptional<z.ZodString>;
78
+ id: z.ZodOptional<z.ZodString>;
79
+ opId: z.ZodOptional<z.ZodString>;
80
+ segmentId: z.ZodOptional<z.ZodString>;
60
81
  }, "strip", z.ZodTypeAny, {
61
82
  type?: "text-end";
83
+ id?: string;
84
+ opId?: string;
62
85
  node?: string;
86
+ segmentId?: string;
63
87
  }, {
64
88
  type?: "text-end";
89
+ id?: string;
90
+ opId?: string;
65
91
  node?: string;
92
+ segmentId?: string;
66
93
  }>, z.ZodObject<{
67
94
  type: z.ZodLiteral<"tool-result">;
68
95
  tool: z.ZodOptional<z.ZodString>;
@@ -84,25 +111,45 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
84
111
  resumeToken: z.ZodString;
85
112
  workflow: z.ZodOptional<z.ZodString>;
86
113
  node: z.ZodOptional<z.ZodString>;
114
+ id: z.ZodOptional<z.ZodString>;
115
+ opId: z.ZodOptional<z.ZodString>;
116
+ schemaId: z.ZodOptional<z.ZodString>;
117
+ schemaVersion: z.ZodOptional<z.ZodString>;
87
118
  input: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
88
119
  kind: z.ZodLiteral<"text">;
89
120
  multiple: z.ZodBoolean;
90
121
  question: z.ZodOptional<z.ZodString>;
122
+ id: z.ZodOptional<z.ZodString>;
123
+ schemaId: z.ZodOptional<z.ZodString>;
124
+ schemaVersion: z.ZodOptional<z.ZodString>;
125
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
91
126
  options: z.ZodOptional<z.ZodArray<z.ZodNever, "many">>;
92
127
  }, "strip", z.ZodTypeAny, {
93
128
  options?: never[];
129
+ id?: string;
130
+ schemaId?: string;
131
+ schemaVersion?: string;
94
132
  kind?: "text";
95
133
  multiple?: boolean;
96
134
  question?: string;
135
+ meta?: Record<string, unknown>;
97
136
  }, {
98
137
  options?: never[];
138
+ id?: string;
139
+ schemaId?: string;
140
+ schemaVersion?: string;
99
141
  kind?: "text";
100
142
  multiple?: boolean;
101
143
  question?: string;
144
+ meta?: Record<string, unknown>;
102
145
  }>, z.ZodObject<{
103
146
  kind: z.ZodEnum<["choice", "multi-choice"]>;
104
147
  multiple: z.ZodBoolean;
105
148
  question: z.ZodString;
149
+ id: z.ZodOptional<z.ZodString>;
150
+ schemaId: z.ZodOptional<z.ZodString>;
151
+ schemaVersion: z.ZodOptional<z.ZodString>;
152
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
106
153
  options: z.ZodArray<z.ZodObject<{
107
154
  id: z.ZodString;
108
155
  label: z.ZodString;
@@ -122,68 +169,106 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
122
169
  label?: string;
123
170
  description?: string;
124
171
  }[];
172
+ id?: string;
173
+ schemaId?: string;
174
+ schemaVersion?: string;
125
175
  kind?: "choice" | "multi-choice";
126
176
  multiple?: boolean;
127
177
  question?: string;
178
+ meta?: Record<string, unknown>;
128
179
  }, {
129
180
  options?: {
130
181
  id?: string;
131
182
  label?: string;
132
183
  description?: string;
133
184
  }[];
185
+ id?: string;
186
+ schemaId?: string;
187
+ schemaVersion?: string;
134
188
  kind?: "choice" | "multi-choice";
135
189
  multiple?: boolean;
136
190
  question?: string;
191
+ meta?: Record<string, unknown>;
137
192
  }>]>;
138
193
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
194
  }, "strip", z.ZodTypeAny, {
140
195
  type?: "interrupt";
196
+ id?: string;
197
+ schemaId?: string;
198
+ schemaVersion?: string;
199
+ opId?: string;
141
200
  node?: string;
142
201
  requestId?: string;
143
202
  resumeToken?: string;
144
203
  workflow?: string;
145
204
  input?: {
146
205
  options?: never[];
206
+ id?: string;
207
+ schemaId?: string;
208
+ schemaVersion?: string;
147
209
  kind?: "text";
148
210
  multiple?: boolean;
149
211
  question?: string;
212
+ meta?: Record<string, unknown>;
150
213
  } | {
151
214
  options?: {
152
215
  id?: string;
153
216
  label?: string;
154
217
  description?: string;
155
218
  }[];
219
+ id?: string;
220
+ schemaId?: string;
221
+ schemaVersion?: string;
156
222
  kind?: "choice" | "multi-choice";
157
223
  multiple?: boolean;
158
224
  question?: string;
225
+ meta?: Record<string, unknown>;
159
226
  };
160
227
  meta?: Record<string, unknown>;
161
228
  }, {
162
229
  type?: "interrupt";
230
+ id?: string;
231
+ schemaId?: string;
232
+ schemaVersion?: string;
233
+ opId?: string;
163
234
  node?: string;
164
235
  requestId?: string;
165
236
  resumeToken?: string;
166
237
  workflow?: string;
167
238
  input?: {
168
239
  options?: never[];
240
+ id?: string;
241
+ schemaId?: string;
242
+ schemaVersion?: string;
169
243
  kind?: "text";
170
244
  multiple?: boolean;
171
245
  question?: string;
246
+ meta?: Record<string, unknown>;
172
247
  } | {
173
248
  options?: {
174
249
  id?: string;
175
250
  label?: string;
176
251
  description?: string;
177
252
  }[];
253
+ id?: string;
254
+ schemaId?: string;
255
+ schemaVersion?: string;
178
256
  kind?: "choice" | "multi-choice";
179
257
  multiple?: boolean;
180
258
  question?: string;
259
+ meta?: Record<string, unknown>;
181
260
  };
182
261
  meta?: Record<string, unknown>;
183
- }>, z.ZodDiscriminatedUnion<"dataType", [z.ZodObject<{
262
+ }>, z.ZodUnion<[z.ZodObject<{
184
263
  type: z.ZodLiteral<"structured-data">;
185
- dataType: z.ZodLiteral<"jobs">;
264
+ mode: z.ZodOptional<z.ZodEnum<["final", "patch", "snapshot"]>>;
265
+ schemaId: z.ZodOptional<z.ZodString>;
266
+ schemaVersion: z.ZodOptional<z.ZodString>;
267
+ id: z.ZodOptional<z.ZodString>;
268
+ opId: z.ZodOptional<z.ZodString>;
186
269
  node: z.ZodOptional<z.ZodString>;
270
+ } & {
271
+ dataType: z.ZodLiteral<"jobs">;
187
272
  data: z.ZodObject<{
188
273
  jobs: z.ZodArray<z.ZodObject<{
189
274
  id: z.ZodString;
@@ -226,7 +311,12 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
226
311
  }>;
227
312
  }, "strip", z.ZodTypeAny, {
228
313
  type?: "structured-data";
314
+ id?: string;
229
315
  dataType?: "jobs";
316
+ mode?: "final" | "patch" | "snapshot";
317
+ schemaId?: string;
318
+ schemaVersion?: string;
319
+ opId?: string;
230
320
  node?: string;
231
321
  data?: {
232
322
  jobs?: {
@@ -240,7 +330,12 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
240
330
  };
241
331
  }, {
242
332
  type?: "structured-data";
333
+ id?: string;
243
334
  dataType?: "jobs";
335
+ mode?: "final" | "patch" | "snapshot";
336
+ schemaId?: string;
337
+ schemaVersion?: string;
338
+ opId?: string;
244
339
  node?: string;
245
340
  data?: {
246
341
  jobs?: {
@@ -252,6 +347,37 @@ declare const StreamChunkSchema: z.ZodUnion<[z.ZodObject<{
252
347
  }[];
253
348
  reasoning?: string;
254
349
  };
350
+ }>, z.ZodObject<{
351
+ type: z.ZodLiteral<"structured-data">;
352
+ dataType: z.ZodOptional<z.ZodString>;
353
+ mode: z.ZodOptional<z.ZodEnum<["final", "patch", "snapshot"]>>;
354
+ schemaId: z.ZodOptional<z.ZodString>;
355
+ schemaVersion: z.ZodOptional<z.ZodString>;
356
+ id: z.ZodOptional<z.ZodString>;
357
+ opId: z.ZodOptional<z.ZodString>;
358
+ node: z.ZodOptional<z.ZodString>;
359
+ } & {
360
+ data: z.ZodUnknown;
361
+ }, "strip", z.ZodTypeAny, {
362
+ type?: "structured-data";
363
+ id?: string;
364
+ dataType?: string;
365
+ mode?: "final" | "patch" | "snapshot";
366
+ schemaId?: string;
367
+ schemaVersion?: string;
368
+ opId?: string;
369
+ node?: string;
370
+ data?: unknown;
371
+ }, {
372
+ type?: "structured-data";
373
+ id?: string;
374
+ dataType?: string;
375
+ mode?: "final" | "patch" | "snapshot";
376
+ schemaId?: string;
377
+ schemaVersion?: string;
378
+ opId?: string;
379
+ node?: string;
380
+ data?: unknown;
255
381
  }>]>, z.ZodObject<{
256
382
  type: z.ZodLiteral<"transition">;
257
383
  transitionTo: z.ZodString;
package/dist/browser.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { S as StreamChunk, b as StreamFromRouteArgs, r as readStream, s as streamFromRoute } from './browser-2jZhtGOe.js';
1
+ export { S as StreamChunk, b as StreamFromRouteArgs, r as readStream, s as streamFromRoute } from './browser-BIAzFI3U.js';
2
2
  import 'zod';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as StreamChunk } from './browser-2jZhtGOe.js';
2
- export { a as StreamChunkSchema, b as StreamFromRouteArgs, r as readStream, s as streamFromRoute } from './browser-2jZhtGOe.js';
1
+ import { S as StreamChunk } from './browser-BIAzFI3U.js';
2
+ export { a as StreamChunkSchema, b as StreamFromRouteArgs, r as readStream, s as streamFromRoute } from './browser-BIAzFI3U.js';
3
3
  import 'zod';
4
4
 
5
5
  declare const STREAM_HEADERS: {
package/dist/index.js CHANGED
@@ -162,20 +162,26 @@ var JobsStructuredData = import_zod.z.object({
162
162
  });
163
163
 
164
164
  // src/types/structured-data/index.ts
165
- var StructuredDataChunkSchema = import_zod2.z.discriminatedUnion("dataType", [
166
- import_zod2.z.object({
167
- type: import_zod2.z.literal("structured-data"),
168
- dataType: import_zod2.z.literal("jobs"),
169
- node: import_zod2.z.string().optional(),
170
- data: JobsStructuredData
171
- })
172
- // Future additions:
173
- // z.object({
174
- // type: z.literal("structured-data"),
175
- // dataType: z.literal("profile"),
176
- // node: z.string().optional(),
177
- // data: ProfileStructuredData,
178
- // }),
165
+ var StructuredDataBase = import_zod2.z.object({
166
+ type: import_zod2.z.literal("structured-data"),
167
+ dataType: import_zod2.z.string().optional(),
168
+ mode: import_zod2.z.enum(["final", "patch", "snapshot"]).optional(),
169
+ schemaId: import_zod2.z.string().optional(),
170
+ schemaVersion: import_zod2.z.string().optional(),
171
+ id: import_zod2.z.string().optional(),
172
+ opId: import_zod2.z.string().optional(),
173
+ node: import_zod2.z.string().optional()
174
+ });
175
+ var JobsStructuredDataChunkSchema = StructuredDataBase.extend({
176
+ dataType: import_zod2.z.literal("jobs"),
177
+ data: JobsStructuredData
178
+ });
179
+ var GenericStructuredDataChunkSchema = StructuredDataBase.extend({
180
+ data: import_zod2.z.unknown()
181
+ });
182
+ var StructuredDataChunkSchema = import_zod2.z.union([
183
+ JobsStructuredDataChunkSchema,
184
+ GenericStructuredDataChunkSchema
179
185
  ]);
180
186
 
181
187
  // src/types/stream-chunk.ts
@@ -196,16 +202,25 @@ var StreamChunkSchema = import_zod3.z.union([
196
202
  }),
197
203
  import_zod3.z.object({
198
204
  type: import_zod3.z.literal("text-start"),
199
- node: import_zod3.z.string().optional()
205
+ node: import_zod3.z.string().optional(),
206
+ id: import_zod3.z.string().optional(),
207
+ opId: import_zod3.z.string().optional(),
208
+ segmentId: import_zod3.z.string().optional()
200
209
  }),
201
210
  import_zod3.z.object({
202
211
  type: import_zod3.z.literal("text-delta"),
203
212
  delta: import_zod3.z.string(),
204
- node: import_zod3.z.string().optional()
213
+ node: import_zod3.z.string().optional(),
214
+ id: import_zod3.z.string().optional(),
215
+ opId: import_zod3.z.string().optional(),
216
+ segmentId: import_zod3.z.string().optional()
205
217
  }),
206
218
  import_zod3.z.object({
207
219
  type: import_zod3.z.literal("text-end"),
208
- node: import_zod3.z.string().optional()
220
+ node: import_zod3.z.string().optional(),
221
+ id: import_zod3.z.string().optional(),
222
+ opId: import_zod3.z.string().optional(),
223
+ segmentId: import_zod3.z.string().optional()
209
224
  }),
210
225
  import_zod3.z.object({
211
226
  type: import_zod3.z.literal("tool-result"),
@@ -220,12 +235,20 @@ var StreamChunkSchema = import_zod3.z.union([
220
235
  resumeToken: import_zod3.z.string(),
221
236
  workflow: import_zod3.z.string().optional(),
222
237
  node: import_zod3.z.string().optional(),
238
+ id: import_zod3.z.string().optional(),
239
+ opId: import_zod3.z.string().optional(),
240
+ schemaId: import_zod3.z.string().optional(),
241
+ schemaVersion: import_zod3.z.string().optional(),
223
242
  input: import_zod3.z.discriminatedUnion("kind", [
224
243
  // Text input: question optional, no options
225
244
  import_zod3.z.object({
226
245
  kind: import_zod3.z.literal("text"),
227
246
  multiple: import_zod3.z.boolean(),
228
247
  question: import_zod3.z.string().optional(),
248
+ id: import_zod3.z.string().optional(),
249
+ schemaId: import_zod3.z.string().optional(),
250
+ schemaVersion: import_zod3.z.string().optional(),
251
+ meta: import_zod3.z.record(import_zod3.z.unknown()).optional(),
229
252
  options: import_zod3.z.array(import_zod3.z.never()).optional()
230
253
  }),
231
254
  // Choice/multi-choice: question + options required
@@ -233,6 +256,10 @@ var StreamChunkSchema = import_zod3.z.union([
233
256
  kind: import_zod3.z.enum(["choice", "multi-choice"]),
234
257
  multiple: import_zod3.z.boolean(),
235
258
  question: import_zod3.z.string(),
259
+ id: import_zod3.z.string().optional(),
260
+ schemaId: import_zod3.z.string().optional(),
261
+ schemaVersion: import_zod3.z.string().optional(),
262
+ meta: import_zod3.z.record(import_zod3.z.unknown()).optional(),
236
263
  options: import_zod3.z.array(
237
264
  import_zod3.z.object({
238
265
  id: import_zod3.z.string(),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/client/read-stream.ts","../src/client/stream-from-route.ts","../src/server/create-stream-response.ts","../src/types/stream-chunk.ts","../src/types/structured-data/index.ts","../src/types/structured-data/jobs.ts"],"sourcesContent":["// release-test: 2026-01-22\n// packages/stream/src/index.ts\n\n// client\nexport * from \"./client/read-stream\";\nexport * from \"./client/stream-from-route\";\n\n// server\nexport * from \"./server/create-stream-response\";\nexport * from \"./types/stream-chunk\";\n","// packages/stream/src/client/read-stream.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\n/**\n * Reads a server-sent event (SSE) Response body and yields StreamChunk objects.\n */\nexport async function* readStream(\n body: ReadableStream<Uint8Array> | null,\n): AsyncGenerator<StreamChunk, void, void> {\n if (!body) return;\n\n const reader = body.getReader();\n const decoder = new TextDecoder(\"utf-8\");\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() ?? \"\";\n\n for (const part of parts) {\n if (!part.startsWith(\"data: \")) continue;\n const payload = part.slice(6);\n if (payload.trim() === \"[DONE]\") return;\n try {\n yield JSON.parse(payload) as StreamChunk;\n } catch (err: any) {\n console.warn(\"Invalid JSON in stream chunk:\", payload);\n console.error(err);\n }\n }\n }\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport { readStream } from \"./read-stream\";\n\nexport interface StreamFromRouteArgs<TBody = unknown> {\n endpoint: string;\n body: TBody;\n method?: string | undefined;\n fetchImpl?: typeof fetch;\n headers?: Record<string, string> | undefined;\n}\n\nconst toErrorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\nconst readErrorMessage = async (response: Response): Promise<string> => {\n let message = `Request failed (${response.status})`;\n try {\n const payload = (await response.json()) as unknown;\n if (\n payload &&\n typeof payload === \"object\" &&\n \"error\" in payload &&\n typeof (payload as { error?: unknown }).error === \"string\"\n ) {\n message = (payload as { error: string }).error;\n }\n } catch {}\n return message;\n};\n\nexport async function* streamFromRoute<TBody = unknown>(\n args: StreamFromRouteArgs<TBody>,\n): AsyncGenerator<StreamChunk, void, void> {\n const fetchFn = args.fetchImpl ?? globalThis.fetch;\n if (!fetchFn) {\n yield { type: \"error\", message: \"No fetch implementation available.\" };\n yield { type: \"done\" };\n return;\n }\n\n let response: Response;\n try {\n response = await fetchFn(args.endpoint, {\n method: args.method ?? \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n ...(args.headers ?? {}),\n },\n body: JSON.stringify(args.body),\n });\n } catch (error) {\n yield { type: \"error\", message: toErrorMessage(error) };\n yield { type: \"done\" };\n return;\n }\n\n if (!response.ok) {\n yield { type: \"error\", message: await readErrorMessage(response) };\n yield { type: \"done\" };\n return;\n }\n\n yield* readStream(response.body);\n}\n","// packages/stream/src/server/create-stream-response.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\nexport const STREAM_HEADERS = {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n connection: \"keep-alive\",\n \"x-accel-buffering\": \"no\",\n};\n\nclass JsonToSseTransformStream extends TransformStream<unknown, string> {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\\n\\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n },\n });\n }\n}\n\n/**\n * Turns an AsyncIterable<StreamChunk> into a streamed HTTP Response.\n * Works in Node, Bun, Cloudflare, Edge, etc.\n */\nexport function createStreamResponse(\n stream: AsyncIterable<StreamChunk>,\n): Response {\n const readable = new ReadableStream<StreamChunk>({\n async start(controller) {\n try {\n for await (const chunk of stream) {\n controller.enqueue(chunk);\n }\n } catch (err: any) {\n controller.enqueue({\n type: \"error\",\n message: String(err?.message ?? err),\n } as StreamChunk);\n } finally {\n controller.close();\n }\n },\n });\n\n return new Response(\n readable\n .pipeThrough(new JsonToSseTransformStream())\n .pipeThrough(new TextEncoderStream()),\n { headers: STREAM_HEADERS },\n );\n}\n","import { z } from \"zod\";\nimport { StructuredDataChunkSchema } from \"./structured-data\";\n\nexport const StreamChunkSchema = z.union([\n z.object({\n type: z.literal(\"session\"),\n sessionId: z.string(),\n }),\n z.object({\n type: z.literal(\"status\"),\n message: z.string(),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"message\"),\n content: z.string(),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-start\"),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-delta\"),\n delta: z.string(),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-end\"),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"tool-result\"),\n tool: z.string().optional(),\n node: z.string().optional(),\n content: z.unknown(),\n }),\n // Interrupt request chunk (used to render interactive options in UI)\n z.object({\n type: z.literal(\"interrupt\"),\n requestId: z.string(),\n resumeToken: z.string(),\n workflow: z.string().optional(),\n node: z.string().optional(),\n input: z.discriminatedUnion(\"kind\", [\n // Text input: question optional, no options\n z.object({\n kind: z.literal(\"text\"),\n multiple: z.boolean(),\n question: z.string().optional(),\n options: z.array(z.never()).optional(),\n }),\n // Choice/multi-choice: question + options required\n z.object({\n kind: z.enum([\"choice\", \"multi-choice\"]),\n multiple: z.boolean(),\n question: z.string(),\n options: z.array(\n z.object({\n id: z.string(),\n label: z.string(),\n description: z.string().optional(),\n }),\n ),\n }),\n ]),\n meta: z.record(z.unknown()).optional(),\n }),\n StructuredDataChunkSchema,\n z.object({\n type: z.literal(\"transition\"),\n transitionTo: z.string(),\n payload: z.any().optional(),\n }),\n z.object({ type: z.literal(\"done\"), data: z.any().optional() }),\n z.object({ type: z.literal(\"error\"), message: z.string() }),\n]);\n\nexport type StreamChunk = z.infer<typeof StreamChunkSchema>;\n","import { z } from \"zod\";\nimport { JobsStructuredData } from \"./jobs\";\n// import { ProfileStructuredData } from \"./profile\"; // future use\n\n/**\n * Define all known structured data chunk schemas.\n * Each one discriminates on `dataType` so we can infer its shape.\n */\nexport const StructuredDataChunkSchema = z.discriminatedUnion(\"dataType\", [\n z.object({\n type: z.literal(\"structured-data\"),\n dataType: z.literal(\"jobs\"),\n node: z.string().optional(),\n data: JobsStructuredData,\n }),\n\n // Future additions:\n // z.object({\n // type: z.literal(\"structured-data\"),\n // dataType: z.literal(\"profile\"),\n // node: z.string().optional(),\n // data: ProfileStructuredData,\n // }),\n]);\n\nexport type StructuredDataChunk = z.infer<typeof StructuredDataChunkSchema>;\n","import { z } from \"zod\";\n\nexport const JobsStructuredData = z.object({\n jobs: z.array(\n z.object({\n id: z.string(),\n title: z.string(),\n company: z.string(),\n location: z.string(),\n match: z.number(),\n }),\n ),\n reasoning: z.string().optional(),\n});\n\nexport type JobsStructuredData = z.infer<typeof JobsStructuredData>;\n"],"mappings":"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","names":["import_zod","import_zod"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/client/read-stream.ts","../src/client/stream-from-route.ts","../src/server/create-stream-response.ts","../src/types/stream-chunk.ts","../src/types/structured-data/index.ts","../src/types/structured-data/jobs.ts"],"sourcesContent":["// release-test: 2026-01-22\n// packages/stream/src/index.ts\n\n// client\nexport * from \"./client/read-stream\";\nexport * from \"./client/stream-from-route\";\n\n// server\nexport * from \"./server/create-stream-response\";\nexport * from \"./types/stream-chunk\";\n","// packages/stream/src/client/read-stream.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\n/**\n * Reads a server-sent event (SSE) Response body and yields StreamChunk objects.\n */\nexport async function* readStream(\n body: ReadableStream<Uint8Array> | null,\n): AsyncGenerator<StreamChunk, void, void> {\n if (!body) return;\n\n const reader = body.getReader();\n const decoder = new TextDecoder(\"utf-8\");\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() ?? \"\";\n\n for (const part of parts) {\n if (!part.startsWith(\"data: \")) continue;\n const payload = part.slice(6);\n if (payload.trim() === \"[DONE]\") return;\n try {\n yield JSON.parse(payload) as StreamChunk;\n } catch (err: any) {\n console.warn(\"Invalid JSON in stream chunk:\", payload);\n console.error(err);\n }\n }\n }\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport { readStream } from \"./read-stream\";\n\nexport interface StreamFromRouteArgs<TBody = unknown> {\n endpoint: string;\n body: TBody;\n method?: string | undefined;\n fetchImpl?: typeof fetch;\n headers?: Record<string, string> | undefined;\n}\n\nconst toErrorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\nconst readErrorMessage = async (response: Response): Promise<string> => {\n let message = `Request failed (${response.status})`;\n try {\n const payload = (await response.json()) as unknown;\n if (\n payload &&\n typeof payload === \"object\" &&\n \"error\" in payload &&\n typeof (payload as { error?: unknown }).error === \"string\"\n ) {\n message = (payload as { error: string }).error;\n }\n } catch {}\n return message;\n};\n\nexport async function* streamFromRoute<TBody = unknown>(\n args: StreamFromRouteArgs<TBody>,\n): AsyncGenerator<StreamChunk, void, void> {\n const fetchFn = args.fetchImpl ?? globalThis.fetch;\n if (!fetchFn) {\n yield { type: \"error\", message: \"No fetch implementation available.\" };\n yield { type: \"done\" };\n return;\n }\n\n let response: Response;\n try {\n response = await fetchFn(args.endpoint, {\n method: args.method ?? \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n ...(args.headers ?? {}),\n },\n body: JSON.stringify(args.body),\n });\n } catch (error) {\n yield { type: \"error\", message: toErrorMessage(error) };\n yield { type: \"done\" };\n return;\n }\n\n if (!response.ok) {\n yield { type: \"error\", message: await readErrorMessage(response) };\n yield { type: \"done\" };\n return;\n }\n\n yield* readStream(response.body);\n}\n","// packages/stream/src/server/create-stream-response.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\nexport const STREAM_HEADERS = {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n connection: \"keep-alive\",\n \"x-accel-buffering\": \"no\",\n};\n\nclass JsonToSseTransformStream extends TransformStream<unknown, string> {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\\n\\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n },\n });\n }\n}\n\n/**\n * Turns an AsyncIterable<StreamChunk> into a streamed HTTP Response.\n * Works in Node, Bun, Cloudflare, Edge, etc.\n */\nexport function createStreamResponse(\n stream: AsyncIterable<StreamChunk>,\n): Response {\n const readable = new ReadableStream<StreamChunk>({\n async start(controller) {\n try {\n for await (const chunk of stream) {\n controller.enqueue(chunk);\n }\n } catch (err: any) {\n controller.enqueue({\n type: \"error\",\n message: String(err?.message ?? err),\n } as StreamChunk);\n } finally {\n controller.close();\n }\n },\n });\n\n return new Response(\n readable\n .pipeThrough(new JsonToSseTransformStream())\n .pipeThrough(new TextEncoderStream()),\n { headers: STREAM_HEADERS },\n );\n}\n","import { z } from \"zod\";\nimport { StructuredDataChunkSchema } from \"./structured-data\";\n\nexport const StreamChunkSchema = z.union([\n z.object({\n type: z.literal(\"session\"),\n sessionId: z.string(),\n }),\n z.object({\n type: z.literal(\"status\"),\n message: z.string(),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"message\"),\n content: z.string(),\n node: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-start\"),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n segmentId: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-delta\"),\n delta: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n segmentId: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"text-end\"),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n segmentId: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"tool-result\"),\n tool: z.string().optional(),\n node: z.string().optional(),\n content: z.unknown(),\n }),\n // Interrupt request chunk (used to render interactive options in UI)\n z.object({\n type: z.literal(\"interrupt\"),\n requestId: z.string(),\n resumeToken: z.string(),\n workflow: z.string().optional(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n input: z.discriminatedUnion(\"kind\", [\n // Text input: question optional, no options\n z.object({\n kind: z.literal(\"text\"),\n multiple: z.boolean(),\n question: z.string().optional(),\n id: z.string().optional(),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n meta: z.record(z.unknown()).optional(),\n options: z.array(z.never()).optional(),\n }),\n // Choice/multi-choice: question + options required\n z.object({\n kind: z.enum([\"choice\", \"multi-choice\"]),\n multiple: z.boolean(),\n question: z.string(),\n id: z.string().optional(),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n meta: z.record(z.unknown()).optional(),\n options: z.array(\n z.object({\n id: z.string(),\n label: z.string(),\n description: z.string().optional(),\n }),\n ),\n }),\n ]),\n meta: z.record(z.unknown()).optional(),\n }),\n StructuredDataChunkSchema,\n z.object({\n type: z.literal(\"transition\"),\n transitionTo: z.string(),\n payload: z.any().optional(),\n }),\n z.object({ type: z.literal(\"done\"), data: z.any().optional() }),\n z.object({ type: z.literal(\"error\"), message: z.string() }),\n]);\n\nexport type StreamChunk = z.infer<typeof StreamChunkSchema>;\n","import { z } from \"zod\";\nimport { JobsStructuredData } from \"./jobs\";\n\nconst StructuredDataBase = z.object({\n type: z.literal(\"structured-data\"),\n dataType: z.string().optional(),\n mode: z.enum([\"final\", \"patch\", \"snapshot\"]).optional(),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n node: z.string().optional(),\n});\n\nconst JobsStructuredDataChunkSchema = StructuredDataBase.extend({\n dataType: z.literal(\"jobs\"),\n data: JobsStructuredData,\n});\n\nconst GenericStructuredDataChunkSchema = StructuredDataBase.extend({\n data: z.unknown(),\n});\n\nexport const StructuredDataChunkSchema = z.union([\n JobsStructuredDataChunkSchema,\n GenericStructuredDataChunkSchema,\n]);\n\nexport type StructuredDataChunk = z.infer<typeof StructuredDataChunkSchema>;\n","import { z } from \"zod\";\n\nexport const JobsStructuredData = z.object({\n jobs: z.array(\n z.object({\n id: z.string(),\n title: z.string(),\n company: z.string(),\n location: z.string(),\n match: z.number(),\n }),\n ),\n reasoning: z.string().optional(),\n});\n\nexport type JobsStructuredData = z.infer<typeof JobsStructuredData>;\n"],"mappings":"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","names":["import_zod","import_zod"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kortyx/stream",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "description": "Streaming primitives for Kortyx.",
6
6
  "keywords": [