@kortyx/stream 0.12.0 → 0.13.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 +14 -0
- package/dist/{browser-Dsg3XiOu.d.ts → browser-BFBys6ZN.d.ts} +11 -0
- package/dist/browser.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @chatbot-core/types
|
|
2
2
|
|
|
3
|
+
## [0.13.0](https://github.com/kortyx-io/kortyx/compare/stream-v0.12.0...stream-v0.13.0) (2026-09-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **hooks:** add model-driven interrupt contracts to useReason ([#224](https://github.com/kortyx-io/kortyx/issues/224)) ([e0147d5](https://github.com/kortyx-io/kortyx/commit/e0147d5234ca38d450d452af924b242f8cbdeb16))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* The following workspace dependencies were updated
|
|
14
|
+
* dependencies
|
|
15
|
+
* @kortyx/core bumped to 0.10.0
|
|
16
|
+
|
|
3
17
|
## [0.12.0](https://github.com/kortyx-io/kortyx/compare/stream-v0.11.0...stream-v0.12.0) (2026-09-14)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -108,6 +108,17 @@ declare const StreamChunkSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
108
108
|
schemaVersion: z.ZodOptional<z.ZodString>;
|
|
109
109
|
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
110
110
|
options: z.ZodOptional<z.ZodArray<z.ZodNever>>;
|
|
111
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
112
|
+
kind: z.ZodLiteral<"custom">;
|
|
113
|
+
multiple: z.ZodLiteral<false>;
|
|
114
|
+
question: z.ZodOptional<z.ZodString>;
|
|
115
|
+
contract: z.ZodOptional<z.ZodString>;
|
|
116
|
+
request: z.ZodUnknown;
|
|
117
|
+
id: z.ZodOptional<z.ZodString>;
|
|
118
|
+
schemaId: z.ZodString;
|
|
119
|
+
schemaVersion: z.ZodString;
|
|
120
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
121
|
+
options: z.ZodOptional<z.ZodArray<z.ZodNever>>;
|
|
111
122
|
}, z.core.$strip>, z.ZodObject<{
|
|
112
123
|
kind: z.ZodEnum<{
|
|
113
124
|
choice: "choice";
|
package/dist/browser.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { C as ConsumeStreamHandlers, S as StreamChunk, c as StreamFromRouteArgs, a as StructuredDataChunk, e as StructuredStreamAccumulator, f as StructuredStreamState, g as applyStructuredChunk, h as consumeStream, i as createStructuredStreamAccumulator, j as failureChunk, r as readStream, k as reduceStructuredChunks, s as streamError, l as streamFromRoute } from './browser-
|
|
1
|
+
export { C as ConsumeStreamHandlers, S as StreamChunk, c as StreamFromRouteArgs, a as StructuredDataChunk, e as StructuredStreamAccumulator, f as StructuredStreamState, g as applyStructuredChunk, h as consumeStream, i as createStructuredStreamAccumulator, j as failureChunk, r as readStream, k as reduceStructuredChunks, s as streamError, l as streamFromRoute } from './browser-BFBys6ZN.js';
|
|
2
2
|
import '@kortyx/core/errors';
|
|
3
3
|
import 'zod';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as StreamChunk, a as StructuredDataChunk } from './browser-
|
|
2
|
-
export { C as ConsumeStreamHandlers, b as StreamChunkSchema, c as StreamFromRouteArgs, d as StructuredDataChunkSchema, e as StructuredStreamAccumulator, f as StructuredStreamState, g as applyStructuredChunk, h as consumeStream, i as createStructuredStreamAccumulator, j as failureChunk, r as readStream, k as reduceStructuredChunks, s as streamError, l as streamFromRoute } from './browser-
|
|
1
|
+
import { S as StreamChunk, a as StructuredDataChunk } from './browser-BFBys6ZN.js';
|
|
2
|
+
export { C as ConsumeStreamHandlers, b as StreamChunkSchema, c as StreamFromRouteArgs, d as StructuredDataChunkSchema, e as StructuredStreamAccumulator, f as StructuredStreamState, g as applyStructuredChunk, h as consumeStream, i as createStructuredStreamAccumulator, j as failureChunk, r as readStream, k as reduceStructuredChunks, s as streamError, l as streamFromRoute } from './browser-BFBys6ZN.js';
|
|
3
3
|
import '@kortyx/core/errors';
|
|
4
4
|
import 'zod';
|
|
5
5
|
|
package/dist/index.js
CHANGED
|
@@ -652,6 +652,18 @@ var StreamChunkSchema = import_zod2.z.union([
|
|
|
652
652
|
meta: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional(),
|
|
653
653
|
options: import_zod2.z.array(import_zod2.z.never()).optional()
|
|
654
654
|
}),
|
|
655
|
+
import_zod2.z.object({
|
|
656
|
+
kind: import_zod2.z.literal("custom"),
|
|
657
|
+
multiple: import_zod2.z.literal(false),
|
|
658
|
+
question: import_zod2.z.string().optional(),
|
|
659
|
+
contract: import_zod2.z.string().optional(),
|
|
660
|
+
request: import_zod2.z.unknown(),
|
|
661
|
+
id: import_zod2.z.string().optional(),
|
|
662
|
+
schemaId: import_zod2.z.string(),
|
|
663
|
+
schemaVersion: import_zod2.z.string(),
|
|
664
|
+
meta: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional(),
|
|
665
|
+
options: import_zod2.z.array(import_zod2.z.never()).optional()
|
|
666
|
+
}),
|
|
655
667
|
// Choice/multi-choice: question + options required
|
|
656
668
|
import_zod2.z.object({
|
|
657
669
|
kind: import_zod2.z.enum(["choice", "multi-choice"]),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/failure.ts","../src/client/consume-stream.ts","../src/client/read-stream.ts","../src/client/stream-from-route.ts","../src/server/collect-stream.ts","../src/server/collect-buffered-stream.ts","../src/server/json-to-sse.ts","../src/server/create-stream-response.ts","../src/server/to-sse.ts","../src/structured/apply-structured-chunk.ts","../src/structured/structured-stream-accumulator.ts","../src/types/stream-chunk.ts","../src/types/structured-data/index.ts"],"sourcesContent":["export * from \"./failure\";\n// release-test: 2026-01-22\n// packages/stream/src/index.ts\n\n// client\nexport * from \"./client/consume-stream\";\nexport * from \"./client/read-stream\";\nexport * from \"./client/stream-from-route\";\n\n// server\nexport * from \"./server/collect-buffered-stream\";\nexport * from \"./server/collect-stream\";\nexport * from \"./server/create-stream-response\";\nexport * from \"./server/to-sse\";\nexport * from \"./structured/apply-structured-chunk\";\nexport * from \"./structured/structured-stream-accumulator\";\nexport * from \"./types/stream-chunk\";\nexport * from \"./types/structured-data\";\n","import {\n errorFromFailure,\n type FailureDescriptor,\n isFailureDescriptor,\n serializeFailure,\n} from \"@kortyx/core/errors\";\n\nexport function failureChunk(error: unknown): {\n type: \"error\";\n message: string;\n failure: FailureDescriptor;\n} {\n const failure = serializeFailure(error);\n return { type: \"error\", message: failure.message, failure };\n}\n\nexport function streamError(chunk: {\n message: string;\n failure?: unknown;\n}): Error {\n return isFailureDescriptor(chunk.failure)\n ? errorFromFailure(chunk.failure)\n : new Error(chunk.message || \"Stream error.\");\n}\n","import { streamError } from \"../failure\";\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\nexport interface ConsumeStreamHandlers {\n onChunk?: (\n chunk: StreamChunk,\n ) => undefined | boolean | Promise<boolean | undefined>;\n onDone?: () => void | Promise<void>;\n onError?: (error: Error, chunk?: StreamChunk) => void | Promise<void>;\n}\n\nconst toError = (value: unknown): Error =>\n value instanceof Error ? value : new Error(String(value));\n\n/**\n * Consume a stream of StreamChunk events with callback handlers.\n * Returns when a `done` chunk is seen, the stream ends, or `onChunk` returns `false`.\n */\nexport async function consumeStream(\n stream: AsyncIterable<StreamChunk>,\n handlers: ConsumeStreamHandlers = {},\n): Promise<void> {\n const callDone = async () => {\n await handlers.onDone?.();\n };\n\n try {\n for await (const chunk of stream) {\n const shouldContinue = await handlers.onChunk?.(chunk);\n\n if (chunk.type === \"error\") {\n await handlers.onError?.(streamError(chunk), chunk);\n }\n\n if (chunk.type === \"done\" || shouldContinue === false) {\n await callDone();\n return;\n }\n }\n\n await callDone();\n } catch (error) {\n const normalized = toError(error);\n await handlers.onError?.(normalized);\n throw normalized;\n }\n}\n","// packages/stream/src/client/read-stream.ts\nimport {\n isFailureDescriptor,\n KortyxError,\n serializeFailure,\n} from \"@kortyx/core/errors\";\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 let sawData = false;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer = (buffer + decoder.decode(value, { stream: true })).replaceAll(\n \"\\r\\n\",\n \"\\n\",\n );\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() as string;\n\n for (const part of parts) {\n if (!part.startsWith(\"data: \")) continue;\n sawData = true;\n const payload = part.slice(6);\n if (payload.trim() === \"[DONE]\") return;\n try {\n const chunk = JSON.parse(payload) as StreamChunk;\n if (\n !chunk ||\n typeof chunk !== \"object\" ||\n typeof chunk.type !== \"string\"\n )\n throw new Error(\"Invalid event\");\n if (chunk.type === \"error\") {\n if (\n typeof chunk.message !== \"string\" ||\n (chunk.failure !== undefined &&\n !isFailureDescriptor(chunk.failure))\n )\n throw new Error(\"Invalid failure event\");\n if (chunk.failure) chunk.failure = serializeFailure(chunk.failure);\n }\n yield chunk;\n if (chunk.type === \"done\") return;\n } catch (err) {\n throw new KortyxError(\n \"MALFORMED_STREAM\",\n \"Invalid JSON or event in stream.\",\n {\n category: \"transport\",\n retryable: false,\n safeMessage: \"The response stream contained an invalid event.\",\n cause: err,\n },\n );\n }\n }\n }\n if (buffer.trim() || sawData)\n throw new KortyxError(\n \"TRUNCATED_STREAM\",\n \"Stream ended with an incomplete event.\",\n {\n category: \"transport\",\n retryable: null,\n safeMessage: \"The response stream ended before an event completed.\",\n },\n );\n } finally {\n await reader.cancel().catch(() => {});\n reader.releaseLock();\n }\n}\n","import {\n errorFromFailure,\n isFailureDescriptor,\n KortyxError,\n} from \"@kortyx/core/errors\";\nimport { failureChunk } from \"../failure\";\nimport 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 signal?: AbortSignal | undefined;\n}\n\nconst readErrorMessage = async (response: Response): Promise<Error> => {\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 \"failure\" in payload &&\n isFailureDescriptor(payload.failure)\n )\n return errorFromFailure(payload.failure);\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 new KortyxError(\"HTTP_REQUEST_FAILED\", message, {\n category: \"transport\",\n status: response.status,\n safeMessage: message,\n });\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 ...(args.signal ? { signal: args.signal } : {}),\n });\n } catch (error) {\n if (args.signal?.aborted) throw error;\n yield failureChunk(\n new KortyxError(\"NETWORK_ERROR\", \"Network request failed.\", {\n category: \"transport\",\n cause: error,\n safeMessage: \"The request could not reach the server.\",\n }),\n );\n yield { type: \"done\" };\n return;\n }\n\n if (!response.ok) {\n yield failureChunk(await readErrorMessage(response));\n yield { type: \"done\" };\n return;\n }\n\n yield* readStream(response.body);\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\n\n/**\n * Collects a streamed chat response into an array.\n * Useful for non-streaming HTTP responses or server actions.\n */\nexport async function collectStream(\n stream: AsyncIterable<StreamChunk>,\n): Promise<StreamChunk[]> {\n const chunks: StreamChunk[] = [];\n for await (const chunk of stream) {\n chunks.push(chunk);\n }\n return chunks;\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport type { StructuredDataChunk } from \"../types/structured-data\";\nimport { collectStream } from \"./collect-stream\";\n\nexport interface BufferedStreamResult {\n chunks: StreamChunk[];\n text: string;\n structured: StructuredDataChunk[];\n}\n\nconst getTextStreamId = (\n chunk: Extract<StreamChunk, { type: \"text-delta\" }>,\n) => {\n const opId =\n typeof chunk.opId === \"string\" && chunk.opId.length > 0\n ? chunk.opId\n : undefined;\n const segmentId =\n typeof chunk.segmentId === \"string\" && chunk.segmentId.length > 0\n ? chunk.segmentId\n : undefined;\n\n if (opId && segmentId) return `${opId}:${segmentId}`;\n return segmentId || opId || chunk.id || chunk.node;\n};\n\nconst appendTextDelta = (\n text: string,\n delta: string,\n streamId: string | undefined,\n lastStreamId: string | undefined,\n) => {\n if (\n streamId &&\n lastStreamId &&\n streamId !== lastStreamId &&\n text.length > 0 &&\n !/\\s$/.test(text) &&\n !/^\\s/.test(delta)\n ) {\n return `${text} ${delta}`;\n }\n\n return text + delta;\n};\n\n/**\n * Derive convenient buffered fields from raw chunks.\n * `text-delta` is preferred; `message` is fallback when no text deltas exist.\n */\nexport function summarizeStreamChunks(\n chunks: StreamChunk[],\n): Omit<BufferedStreamResult, \"chunks\"> {\n let sawTextDelta = false;\n let text = \"\";\n let lastTextStreamId: string | undefined;\n const messageFallback: string[] = [];\n const structured: StructuredDataChunk[] = [];\n\n for (const chunk of chunks) {\n if (chunk.type === \"text-delta\") {\n sawTextDelta = true;\n const streamId = getTextStreamId(chunk);\n text = appendTextDelta(text, chunk.delta, streamId, lastTextStreamId);\n if (streamId) lastTextStreamId = streamId;\n continue;\n }\n\n if (chunk.type === \"message\") {\n messageFallback.push(chunk.content ?? \"\");\n continue;\n }\n\n if (chunk.type === \"structured-data\") {\n structured.push(chunk as StructuredDataChunk);\n }\n }\n\n if (!sawTextDelta && messageFallback.length > 0) {\n text = messageFallback.join(\"\");\n }\n\n return { text, structured };\n}\n\n/**\n * Collect a stream and return both raw chunks and buffered convenience fields.\n */\nexport async function collectBufferedStream(\n stream: AsyncIterable<StreamChunk>,\n): Promise<BufferedStreamResult> {\n const chunks = await collectStream(stream);\n return {\n chunks,\n ...summarizeStreamChunks(chunks),\n };\n}\n","// packages/stream/src/server/json-to-sse.ts\nexport class 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","import { failureChunk } from \"../failure\";\n// packages/stream/src/server/create-stream-response.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\nimport { JsonToSseTransformStream } from \"./json-to-sse\";\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\n/** Bridge stream cancellation to the source, including Node execution streams. */\nexport function createStreamResponse(\n stream: AsyncIterable<StreamChunk>,\n): Response {\n let cancelled = false;\n const iterator = stream[Symbol.asyncIterator]();\n const readable = new ReadableStream<StreamChunk>({\n async start(controller) {\n try {\n while (!cancelled) {\n const next = await iterator.next();\n if (cancelled || next.done) break;\n controller.enqueue(next.value);\n }\n } catch (error) {\n if (!cancelled) {\n controller.enqueue(failureChunk(error));\n controller.enqueue({ type: \"done\" });\n }\n } finally {\n if (!cancelled) controller.close();\n }\n },\n cancel() {\n cancelled = true;\n // Destroying an active Kortyx stream signals its transient execution controller.\n (\n stream as AsyncIterable<StreamChunk> & { destroy?: () => void }\n ).destroy?.();\n void Promise.resolve(iterator.return?.()).catch(() => {});\n },\n });\n return new Response(\n readable\n .pipeThrough(new JsonToSseTransformStream())\n .pipeThrough(new TextEncoderStream()),\n { headers: STREAM_HEADERS },\n );\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport { createStreamResponse } from \"./create-stream-response\";\n\n/**\n * Friendly alias for createStreamResponse.\n */\nexport function toSSE(stream: AsyncIterable<StreamChunk>): Response {\n return createStreamResponse(stream);\n}\n","import type { StructuredDataChunk } from \"../types/structured-data\";\n\nexport type StructuredStreamState<TData = unknown> = {\n streamId: string;\n dataType: string;\n status: \"streaming\" | \"done\";\n data: TData;\n node?: string;\n id?: string;\n schemaId?: string;\n schemaVersion?: string;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isArrayIndex = (value: string): boolean => /^\\d+$/.test(value);\n\nconst describeValue = (value: unknown): string => {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n};\n\nconst parsePath = (path: string): string[] => {\n if (path.length === 0) {\n throw new Error(\n \"Structured chunk path must be a non-empty dot-separated string.\",\n );\n }\n\n const parts = path.split(\".\");\n if (parts.some((part) => part.length === 0)) {\n throw new Error(\n `Structured chunk path \"${path}\" must not contain empty segments.`,\n );\n }\n\n return parts;\n};\n\nconst cloneContainerForPart = (args: {\n current: unknown;\n part: string;\n path: string;\n traversed: string[];\n}): Record<string, unknown> | unknown[] => {\n const expected = isArrayIndex(args.part) ? \"array\" : \"object\";\n const location =\n args.traversed.length === 0 ? \"<root>\" : args.traversed.join(\".\");\n\n if (args.current === undefined) {\n return expected === \"array\" ? [] : {};\n }\n\n if (expected === \"array\") {\n if (Array.isArray(args.current)) return [...args.current];\n throw new Error(\n `Structured path conflict at ${location} for \"${args.path}\": expected array container, received ${describeValue(args.current)}.`,\n );\n }\n\n if (isPlainObject(args.current)) return { ...args.current };\n\n throw new Error(\n `Structured path conflict at ${location} for \"${args.path}\": expected object container, received ${describeValue(args.current)}.`,\n );\n};\n\nconst updateByParts = (args: {\n input: unknown;\n parts: string[];\n path: string;\n updateLeaf: (current: unknown) => unknown;\n traversed?: string[];\n}): unknown => {\n const traversed = args.traversed ?? [];\n const [part, ...rest] = args.parts as [string, ...string[]];\n\n const container = cloneContainerForPart({\n current: args.input,\n part,\n path: args.path,\n traversed,\n });\n\n const currentChild = Array.isArray(container)\n ? container[Number(part)]\n : container[part];\n const nextChild =\n rest.length === 0\n ? args.updateLeaf(currentChild)\n : updateByParts({\n input: currentChild,\n parts: rest,\n path: args.path,\n updateLeaf: args.updateLeaf,\n traversed: [...traversed, part],\n });\n\n if (Array.isArray(container)) {\n container[Number(part)] = nextChild;\n } else {\n container[part] = nextChild;\n }\n\n return container;\n};\n\nexport function applyStructuredChunk<TData = unknown>(\n current: StructuredStreamState<TData> | undefined,\n chunk: StructuredDataChunk,\n): StructuredStreamState<TData> {\n if (current && current.streamId !== chunk.streamId) {\n throw new Error(\n `Structured chunk streamId mismatch: expected ${current.streamId}, received ${chunk.streamId}.`,\n );\n }\n\n if (current?.status === \"done\") {\n throw new Error(\n `Structured stream ${chunk.streamId} already completed with a final chunk.`,\n );\n }\n\n const nextBase = {\n streamId: chunk.streamId,\n dataType: chunk.dataType,\n status: chunk.kind === \"final\" ? (\"done\" as const) : (\"streaming\" as const),\n ...(chunk.node ? { node: chunk.node } : {}),\n ...(chunk.id ? { id: chunk.id } : {}),\n ...(chunk.schemaId ? { schemaId: chunk.schemaId } : {}),\n ...(chunk.schemaVersion ? { schemaVersion: chunk.schemaVersion } : {}),\n };\n\n if (chunk.kind === \"final\") {\n return {\n ...nextBase,\n data: chunk.data as TData,\n };\n }\n\n const path = chunk.path;\n const pathParts = parsePath(path);\n const previousData = current?.data;\n\n if (chunk.kind === \"set\") {\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: () => chunk.value,\n }) as TData,\n };\n }\n\n if (chunk.kind === \"append\") {\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: (existing) => {\n if (existing === undefined) return [...chunk.items];\n if (!Array.isArray(existing)) {\n throw new Error(\n `Structured append requires path \"${path}\" to target an array, received ${describeValue(existing)}.`,\n );\n }\n return [...existing, ...chunk.items];\n },\n }) as TData,\n };\n }\n\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: (existing) => {\n if (existing === undefined) return chunk.delta;\n if (typeof existing !== \"string\") {\n throw new Error(\n `Structured text-delta requires path \"${path}\" to target a string, received ${describeValue(existing)}.`,\n );\n }\n return existing + chunk.delta;\n },\n }) as TData,\n };\n}\n\nexport function reduceStructuredChunks<TData = unknown>(\n chunks: StructuredDataChunk[],\n): Record<string, StructuredStreamState<TData>> {\n return chunks.reduce<Record<string, StructuredStreamState<TData>>>(\n (acc, chunk) => {\n acc[chunk.streamId] = applyStructuredChunk(acc[chunk.streamId], chunk);\n return acc;\n },\n {},\n );\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport type { StructuredDataChunk } from \"../types/structured-data\";\nimport {\n applyStructuredChunk,\n type StructuredStreamState,\n} from \"./apply-structured-chunk\";\n\nexport type StructuredStreamAccumulator<TData = unknown> = {\n apply: (chunk: StructuredDataChunk) => StructuredStreamState<TData>;\n applyStreamChunk: (\n chunk: StreamChunk,\n ) => StructuredStreamState<TData> | undefined;\n get: (streamId: string) => StructuredStreamState<TData> | undefined;\n has: (streamId: string) => boolean;\n delete: (streamId: string) => boolean;\n clear: () => void;\n size: () => number;\n entries: () => Array<[string, StructuredStreamState<TData>]>;\n values: () => StructuredStreamState<TData>[];\n toRecord: () => Record<string, StructuredStreamState<TData>>;\n};\n\nconst isStructuredDataChunk = (\n chunk: StreamChunk,\n): chunk is StructuredDataChunk => chunk.type === \"structured-data\";\n\nexport function createStructuredStreamAccumulator<TData = unknown>(\n initialChunks: Iterable<StructuredDataChunk> = [],\n): StructuredStreamAccumulator<TData> {\n const states = new Map<string, StructuredStreamState<TData>>();\n\n const apply = (chunk: StructuredDataChunk): StructuredStreamState<TData> => {\n const nextState = applyStructuredChunk(states.get(chunk.streamId), chunk);\n states.set(chunk.streamId, nextState);\n return nextState;\n };\n\n for (const chunk of initialChunks) {\n apply(chunk);\n }\n\n return {\n apply,\n applyStreamChunk: (chunk) => {\n if (!isStructuredDataChunk(chunk)) return undefined;\n return apply(chunk);\n },\n get: (streamId) => states.get(streamId),\n has: (streamId) => states.has(streamId),\n delete: (streamId) => states.delete(streamId),\n clear: () => {\n states.clear();\n },\n size: () => states.size,\n entries: () => Array.from(states.entries()),\n values: () => Array.from(states.values()),\n toRecord: () => Object.fromEntries(states.entries()),\n };\n}\n","import {\n type FailureDescriptor,\n isFailureDescriptor,\n serializeFailure,\n} from \"@kortyx/core/errors\";\nimport { 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(\"checkpoint\"),\n id: z.string(),\n sessionId: z.string(),\n turnIndex: z.number().int().nonnegative(),\n label: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"structured-data-invalidated\"),\n streamId: z.string(),\n checkpointId: z.string(),\n }),\n z.object({\n type: z.literal(\"trace\"),\n traceId: z.string(),\n spanId: z.string(),\n runId: z.string(),\n rootSpanName: z.literal(\"kortyx.run\"),\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 z.object({\n type: z.literal(\"tool-call-start\"),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n input: z.unknown().optional(),\n }),\n z.object({\n type: z.literal(\"tool-call-result\"),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n content: z.unknown(),\n structuredContent: z.unknown().optional(),\n isError: z.boolean().optional(),\n }),\n z.object({\n type: z.literal(\"tool-call-error\"),\n failure: z\n .custom<FailureDescriptor>(isFailureDescriptor)\n .transform(serializeFailure)\n .optional(),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n message: z.string(),\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.string(), 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.string(), 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.string(), 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({\n type: z.literal(\"limit-reached\"),\n runId: z.string(),\n limit: z.enum([\n \"maxNodeExecutions\",\n \"maxModelPasses\",\n \"maxToolCalls\",\n \"maxChildInvocations\",\n ]),\n maximum: z.number(),\n consumed: z.number(),\n }),\n z.object({\n type: z.literal(\"cancelled\"),\n runId: z.string(),\n reason: z.string(),\n }),\n z.object({ type: z.literal(\"done\"), data: z.any().optional() }),\n z.object({\n type: z.literal(\"error\"),\n message: z.string(),\n failure: z\n .custom<FailureDescriptor>(isFailureDescriptor)\n .transform(serializeFailure)\n .optional(),\n }),\n]);\n\nexport type StreamChunk = z.infer<typeof StreamChunkSchema>;\n","import { z } from \"zod\";\n\nconst StructuredDataBase = z.object({\n type: z.literal(\"structured-data\"),\n streamId: z.string(),\n dataType: z.string(),\n kind: z.enum([\"set\", \"append\", \"text-delta\", \"final\"]),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n id: z.string().optional(),\n node: z.string().optional(),\n});\n\nconst StructuredSetChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"set\"),\n path: z.string().min(1),\n value: z.unknown(),\n});\n\nconst StructuredAppendChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"append\"),\n path: z.string().min(1),\n items: z.array(z.unknown()),\n});\n\nconst StructuredTextDeltaChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"text-delta\"),\n path: z.string().min(1),\n delta: z.string(),\n});\n\nconst StructuredFinalChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"final\"),\n data: z.unknown(),\n});\n\nexport const StructuredDataChunkSchema = z.union([\n StructuredSetChunkSchema,\n StructuredAppendChunkSchema,\n StructuredTextDeltaChunkSchema,\n StructuredFinalChunkSchema,\n]);\n\nexport type StructuredDataChunk = z.infer<typeof StructuredDataChunkSchema>;\n"],"mappings":"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","names":["import_errors","import_errors","import_errors","import_zod"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/failure.ts","../src/client/consume-stream.ts","../src/client/read-stream.ts","../src/client/stream-from-route.ts","../src/server/collect-stream.ts","../src/server/collect-buffered-stream.ts","../src/server/json-to-sse.ts","../src/server/create-stream-response.ts","../src/server/to-sse.ts","../src/structured/apply-structured-chunk.ts","../src/structured/structured-stream-accumulator.ts","../src/types/stream-chunk.ts","../src/types/structured-data/index.ts"],"sourcesContent":["export * from \"./failure\";\n// release-test: 2026-01-22\n// packages/stream/src/index.ts\n\n// client\nexport * from \"./client/consume-stream\";\nexport * from \"./client/read-stream\";\nexport * from \"./client/stream-from-route\";\n\n// server\nexport * from \"./server/collect-buffered-stream\";\nexport * from \"./server/collect-stream\";\nexport * from \"./server/create-stream-response\";\nexport * from \"./server/to-sse\";\nexport * from \"./structured/apply-structured-chunk\";\nexport * from \"./structured/structured-stream-accumulator\";\nexport * from \"./types/stream-chunk\";\nexport * from \"./types/structured-data\";\n","import {\n errorFromFailure,\n type FailureDescriptor,\n isFailureDescriptor,\n serializeFailure,\n} from \"@kortyx/core/errors\";\n\nexport function failureChunk(error: unknown): {\n type: \"error\";\n message: string;\n failure: FailureDescriptor;\n} {\n const failure = serializeFailure(error);\n return { type: \"error\", message: failure.message, failure };\n}\n\nexport function streamError(chunk: {\n message: string;\n failure?: unknown;\n}): Error {\n return isFailureDescriptor(chunk.failure)\n ? errorFromFailure(chunk.failure)\n : new Error(chunk.message || \"Stream error.\");\n}\n","import { streamError } from \"../failure\";\nimport type { StreamChunk } from \"../types/stream-chunk\";\n\nexport interface ConsumeStreamHandlers {\n onChunk?: (\n chunk: StreamChunk,\n ) => undefined | boolean | Promise<boolean | undefined>;\n onDone?: () => void | Promise<void>;\n onError?: (error: Error, chunk?: StreamChunk) => void | Promise<void>;\n}\n\nconst toError = (value: unknown): Error =>\n value instanceof Error ? value : new Error(String(value));\n\n/**\n * Consume a stream of StreamChunk events with callback handlers.\n * Returns when a `done` chunk is seen, the stream ends, or `onChunk` returns `false`.\n */\nexport async function consumeStream(\n stream: AsyncIterable<StreamChunk>,\n handlers: ConsumeStreamHandlers = {},\n): Promise<void> {\n const callDone = async () => {\n await handlers.onDone?.();\n };\n\n try {\n for await (const chunk of stream) {\n const shouldContinue = await handlers.onChunk?.(chunk);\n\n if (chunk.type === \"error\") {\n await handlers.onError?.(streamError(chunk), chunk);\n }\n\n if (chunk.type === \"done\" || shouldContinue === false) {\n await callDone();\n return;\n }\n }\n\n await callDone();\n } catch (error) {\n const normalized = toError(error);\n await handlers.onError?.(normalized);\n throw normalized;\n }\n}\n","// packages/stream/src/client/read-stream.ts\nimport {\n isFailureDescriptor,\n KortyxError,\n serializeFailure,\n} from \"@kortyx/core/errors\";\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 let sawData = false;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer = (buffer + decoder.decode(value, { stream: true })).replaceAll(\n \"\\r\\n\",\n \"\\n\",\n );\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() as string;\n\n for (const part of parts) {\n if (!part.startsWith(\"data: \")) continue;\n sawData = true;\n const payload = part.slice(6);\n if (payload.trim() === \"[DONE]\") return;\n try {\n const chunk = JSON.parse(payload) as StreamChunk;\n if (\n !chunk ||\n typeof chunk !== \"object\" ||\n typeof chunk.type !== \"string\"\n )\n throw new Error(\"Invalid event\");\n if (chunk.type === \"error\") {\n if (\n typeof chunk.message !== \"string\" ||\n (chunk.failure !== undefined &&\n !isFailureDescriptor(chunk.failure))\n )\n throw new Error(\"Invalid failure event\");\n if (chunk.failure) chunk.failure = serializeFailure(chunk.failure);\n }\n yield chunk;\n if (chunk.type === \"done\") return;\n } catch (err) {\n throw new KortyxError(\n \"MALFORMED_STREAM\",\n \"Invalid JSON or event in stream.\",\n {\n category: \"transport\",\n retryable: false,\n safeMessage: \"The response stream contained an invalid event.\",\n cause: err,\n },\n );\n }\n }\n }\n if (buffer.trim() || sawData)\n throw new KortyxError(\n \"TRUNCATED_STREAM\",\n \"Stream ended with an incomplete event.\",\n {\n category: \"transport\",\n retryable: null,\n safeMessage: \"The response stream ended before an event completed.\",\n },\n );\n } finally {\n await reader.cancel().catch(() => {});\n reader.releaseLock();\n }\n}\n","import {\n errorFromFailure,\n isFailureDescriptor,\n KortyxError,\n} from \"@kortyx/core/errors\";\nimport { failureChunk } from \"../failure\";\nimport 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 signal?: AbortSignal | undefined;\n}\n\nconst readErrorMessage = async (response: Response): Promise<Error> => {\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 \"failure\" in payload &&\n isFailureDescriptor(payload.failure)\n )\n return errorFromFailure(payload.failure);\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 new KortyxError(\"HTTP_REQUEST_FAILED\", message, {\n category: \"transport\",\n status: response.status,\n safeMessage: message,\n });\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 ...(args.signal ? { signal: args.signal } : {}),\n });\n } catch (error) {\n if (args.signal?.aborted) throw error;\n yield failureChunk(\n new KortyxError(\"NETWORK_ERROR\", \"Network request failed.\", {\n category: \"transport\",\n cause: error,\n safeMessage: \"The request could not reach the server.\",\n }),\n );\n yield { type: \"done\" };\n return;\n }\n\n if (!response.ok) {\n yield failureChunk(await readErrorMessage(response));\n yield { type: \"done\" };\n return;\n }\n\n yield* readStream(response.body);\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\n\n/**\n * Collects a streamed chat response into an array.\n * Useful for non-streaming HTTP responses or server actions.\n */\nexport async function collectStream(\n stream: AsyncIterable<StreamChunk>,\n): Promise<StreamChunk[]> {\n const chunks: StreamChunk[] = [];\n for await (const chunk of stream) {\n chunks.push(chunk);\n }\n return chunks;\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport type { StructuredDataChunk } from \"../types/structured-data\";\nimport { collectStream } from \"./collect-stream\";\n\nexport interface BufferedStreamResult {\n chunks: StreamChunk[];\n text: string;\n structured: StructuredDataChunk[];\n}\n\nconst getTextStreamId = (\n chunk: Extract<StreamChunk, { type: \"text-delta\" }>,\n) => {\n const opId =\n typeof chunk.opId === \"string\" && chunk.opId.length > 0\n ? chunk.opId\n : undefined;\n const segmentId =\n typeof chunk.segmentId === \"string\" && chunk.segmentId.length > 0\n ? chunk.segmentId\n : undefined;\n\n if (opId && segmentId) return `${opId}:${segmentId}`;\n return segmentId || opId || chunk.id || chunk.node;\n};\n\nconst appendTextDelta = (\n text: string,\n delta: string,\n streamId: string | undefined,\n lastStreamId: string | undefined,\n) => {\n if (\n streamId &&\n lastStreamId &&\n streamId !== lastStreamId &&\n text.length > 0 &&\n !/\\s$/.test(text) &&\n !/^\\s/.test(delta)\n ) {\n return `${text} ${delta}`;\n }\n\n return text + delta;\n};\n\n/**\n * Derive convenient buffered fields from raw chunks.\n * `text-delta` is preferred; `message` is fallback when no text deltas exist.\n */\nexport function summarizeStreamChunks(\n chunks: StreamChunk[],\n): Omit<BufferedStreamResult, \"chunks\"> {\n let sawTextDelta = false;\n let text = \"\";\n let lastTextStreamId: string | undefined;\n const messageFallback: string[] = [];\n const structured: StructuredDataChunk[] = [];\n\n for (const chunk of chunks) {\n if (chunk.type === \"text-delta\") {\n sawTextDelta = true;\n const streamId = getTextStreamId(chunk);\n text = appendTextDelta(text, chunk.delta, streamId, lastTextStreamId);\n if (streamId) lastTextStreamId = streamId;\n continue;\n }\n\n if (chunk.type === \"message\") {\n messageFallback.push(chunk.content ?? \"\");\n continue;\n }\n\n if (chunk.type === \"structured-data\") {\n structured.push(chunk as StructuredDataChunk);\n }\n }\n\n if (!sawTextDelta && messageFallback.length > 0) {\n text = messageFallback.join(\"\");\n }\n\n return { text, structured };\n}\n\n/**\n * Collect a stream and return both raw chunks and buffered convenience fields.\n */\nexport async function collectBufferedStream(\n stream: AsyncIterable<StreamChunk>,\n): Promise<BufferedStreamResult> {\n const chunks = await collectStream(stream);\n return {\n chunks,\n ...summarizeStreamChunks(chunks),\n };\n}\n","// packages/stream/src/server/json-to-sse.ts\nexport class 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","import { failureChunk } from \"../failure\";\n// packages/stream/src/server/create-stream-response.ts\nimport type { StreamChunk } from \"../types/stream-chunk\";\nimport { JsonToSseTransformStream } from \"./json-to-sse\";\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\n/** Bridge stream cancellation to the source, including Node execution streams. */\nexport function createStreamResponse(\n stream: AsyncIterable<StreamChunk>,\n): Response {\n let cancelled = false;\n const iterator = stream[Symbol.asyncIterator]();\n const readable = new ReadableStream<StreamChunk>({\n async start(controller) {\n try {\n while (!cancelled) {\n const next = await iterator.next();\n if (cancelled || next.done) break;\n controller.enqueue(next.value);\n }\n } catch (error) {\n if (!cancelled) {\n controller.enqueue(failureChunk(error));\n controller.enqueue({ type: \"done\" });\n }\n } finally {\n if (!cancelled) controller.close();\n }\n },\n cancel() {\n cancelled = true;\n // Destroying an active Kortyx stream signals its transient execution controller.\n (\n stream as AsyncIterable<StreamChunk> & { destroy?: () => void }\n ).destroy?.();\n void Promise.resolve(iterator.return?.()).catch(() => {});\n },\n });\n return new Response(\n readable\n .pipeThrough(new JsonToSseTransformStream())\n .pipeThrough(new TextEncoderStream()),\n { headers: STREAM_HEADERS },\n );\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport { createStreamResponse } from \"./create-stream-response\";\n\n/**\n * Friendly alias for createStreamResponse.\n */\nexport function toSSE(stream: AsyncIterable<StreamChunk>): Response {\n return createStreamResponse(stream);\n}\n","import type { StructuredDataChunk } from \"../types/structured-data\";\n\nexport type StructuredStreamState<TData = unknown> = {\n streamId: string;\n dataType: string;\n status: \"streaming\" | \"done\";\n data: TData;\n node?: string;\n id?: string;\n schemaId?: string;\n schemaVersion?: string;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isArrayIndex = (value: string): boolean => /^\\d+$/.test(value);\n\nconst describeValue = (value: unknown): string => {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n};\n\nconst parsePath = (path: string): string[] => {\n if (path.length === 0) {\n throw new Error(\n \"Structured chunk path must be a non-empty dot-separated string.\",\n );\n }\n\n const parts = path.split(\".\");\n if (parts.some((part) => part.length === 0)) {\n throw new Error(\n `Structured chunk path \"${path}\" must not contain empty segments.`,\n );\n }\n\n return parts;\n};\n\nconst cloneContainerForPart = (args: {\n current: unknown;\n part: string;\n path: string;\n traversed: string[];\n}): Record<string, unknown> | unknown[] => {\n const expected = isArrayIndex(args.part) ? \"array\" : \"object\";\n const location =\n args.traversed.length === 0 ? \"<root>\" : args.traversed.join(\".\");\n\n if (args.current === undefined) {\n return expected === \"array\" ? [] : {};\n }\n\n if (expected === \"array\") {\n if (Array.isArray(args.current)) return [...args.current];\n throw new Error(\n `Structured path conflict at ${location} for \"${args.path}\": expected array container, received ${describeValue(args.current)}.`,\n );\n }\n\n if (isPlainObject(args.current)) return { ...args.current };\n\n throw new Error(\n `Structured path conflict at ${location} for \"${args.path}\": expected object container, received ${describeValue(args.current)}.`,\n );\n};\n\nconst updateByParts = (args: {\n input: unknown;\n parts: string[];\n path: string;\n updateLeaf: (current: unknown) => unknown;\n traversed?: string[];\n}): unknown => {\n const traversed = args.traversed ?? [];\n const [part, ...rest] = args.parts as [string, ...string[]];\n\n const container = cloneContainerForPart({\n current: args.input,\n part,\n path: args.path,\n traversed,\n });\n\n const currentChild = Array.isArray(container)\n ? container[Number(part)]\n : container[part];\n const nextChild =\n rest.length === 0\n ? args.updateLeaf(currentChild)\n : updateByParts({\n input: currentChild,\n parts: rest,\n path: args.path,\n updateLeaf: args.updateLeaf,\n traversed: [...traversed, part],\n });\n\n if (Array.isArray(container)) {\n container[Number(part)] = nextChild;\n } else {\n container[part] = nextChild;\n }\n\n return container;\n};\n\nexport function applyStructuredChunk<TData = unknown>(\n current: StructuredStreamState<TData> | undefined,\n chunk: StructuredDataChunk,\n): StructuredStreamState<TData> {\n if (current && current.streamId !== chunk.streamId) {\n throw new Error(\n `Structured chunk streamId mismatch: expected ${current.streamId}, received ${chunk.streamId}.`,\n );\n }\n\n if (current?.status === \"done\") {\n throw new Error(\n `Structured stream ${chunk.streamId} already completed with a final chunk.`,\n );\n }\n\n const nextBase = {\n streamId: chunk.streamId,\n dataType: chunk.dataType,\n status: chunk.kind === \"final\" ? (\"done\" as const) : (\"streaming\" as const),\n ...(chunk.node ? { node: chunk.node } : {}),\n ...(chunk.id ? { id: chunk.id } : {}),\n ...(chunk.schemaId ? { schemaId: chunk.schemaId } : {}),\n ...(chunk.schemaVersion ? { schemaVersion: chunk.schemaVersion } : {}),\n };\n\n if (chunk.kind === \"final\") {\n return {\n ...nextBase,\n data: chunk.data as TData,\n };\n }\n\n const path = chunk.path;\n const pathParts = parsePath(path);\n const previousData = current?.data;\n\n if (chunk.kind === \"set\") {\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: () => chunk.value,\n }) as TData,\n };\n }\n\n if (chunk.kind === \"append\") {\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: (existing) => {\n if (existing === undefined) return [...chunk.items];\n if (!Array.isArray(existing)) {\n throw new Error(\n `Structured append requires path \"${path}\" to target an array, received ${describeValue(existing)}.`,\n );\n }\n return [...existing, ...chunk.items];\n },\n }) as TData,\n };\n }\n\n return {\n ...nextBase,\n data: updateByParts({\n input: previousData,\n parts: pathParts,\n path,\n updateLeaf: (existing) => {\n if (existing === undefined) return chunk.delta;\n if (typeof existing !== \"string\") {\n throw new Error(\n `Structured text-delta requires path \"${path}\" to target a string, received ${describeValue(existing)}.`,\n );\n }\n return existing + chunk.delta;\n },\n }) as TData,\n };\n}\n\nexport function reduceStructuredChunks<TData = unknown>(\n chunks: StructuredDataChunk[],\n): Record<string, StructuredStreamState<TData>> {\n return chunks.reduce<Record<string, StructuredStreamState<TData>>>(\n (acc, chunk) => {\n acc[chunk.streamId] = applyStructuredChunk(acc[chunk.streamId], chunk);\n return acc;\n },\n {},\n );\n}\n","import type { StreamChunk } from \"../types/stream-chunk\";\nimport type { StructuredDataChunk } from \"../types/structured-data\";\nimport {\n applyStructuredChunk,\n type StructuredStreamState,\n} from \"./apply-structured-chunk\";\n\nexport type StructuredStreamAccumulator<TData = unknown> = {\n apply: (chunk: StructuredDataChunk) => StructuredStreamState<TData>;\n applyStreamChunk: (\n chunk: StreamChunk,\n ) => StructuredStreamState<TData> | undefined;\n get: (streamId: string) => StructuredStreamState<TData> | undefined;\n has: (streamId: string) => boolean;\n delete: (streamId: string) => boolean;\n clear: () => void;\n size: () => number;\n entries: () => Array<[string, StructuredStreamState<TData>]>;\n values: () => StructuredStreamState<TData>[];\n toRecord: () => Record<string, StructuredStreamState<TData>>;\n};\n\nconst isStructuredDataChunk = (\n chunk: StreamChunk,\n): chunk is StructuredDataChunk => chunk.type === \"structured-data\";\n\nexport function createStructuredStreamAccumulator<TData = unknown>(\n initialChunks: Iterable<StructuredDataChunk> = [],\n): StructuredStreamAccumulator<TData> {\n const states = new Map<string, StructuredStreamState<TData>>();\n\n const apply = (chunk: StructuredDataChunk): StructuredStreamState<TData> => {\n const nextState = applyStructuredChunk(states.get(chunk.streamId), chunk);\n states.set(chunk.streamId, nextState);\n return nextState;\n };\n\n for (const chunk of initialChunks) {\n apply(chunk);\n }\n\n return {\n apply,\n applyStreamChunk: (chunk) => {\n if (!isStructuredDataChunk(chunk)) return undefined;\n return apply(chunk);\n },\n get: (streamId) => states.get(streamId),\n has: (streamId) => states.has(streamId),\n delete: (streamId) => states.delete(streamId),\n clear: () => {\n states.clear();\n },\n size: () => states.size,\n entries: () => Array.from(states.entries()),\n values: () => Array.from(states.values()),\n toRecord: () => Object.fromEntries(states.entries()),\n };\n}\n","import {\n type FailureDescriptor,\n isFailureDescriptor,\n serializeFailure,\n} from \"@kortyx/core/errors\";\nimport { 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(\"checkpoint\"),\n id: z.string(),\n sessionId: z.string(),\n turnIndex: z.number().int().nonnegative(),\n label: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"structured-data-invalidated\"),\n streamId: z.string(),\n checkpointId: z.string(),\n }),\n z.object({\n type: z.literal(\"trace\"),\n traceId: z.string(),\n spanId: z.string(),\n runId: z.string(),\n rootSpanName: z.literal(\"kortyx.run\"),\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 z.object({\n type: z.literal(\"tool-call-start\"),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n input: z.unknown().optional(),\n }),\n z.object({\n type: z.literal(\"tool-call-result\"),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n content: z.unknown(),\n structuredContent: z.unknown().optional(),\n isError: z.boolean().optional(),\n }),\n z.object({\n type: z.literal(\"tool-call-error\"),\n failure: z\n .custom<FailureDescriptor>(isFailureDescriptor)\n .transform(serializeFailure)\n .optional(),\n tool: z.string(),\n toolCallId: z.string(),\n node: z.string().optional(),\n id: z.string().optional(),\n opId: z.string().optional(),\n message: z.string(),\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.string(), z.unknown()).optional(),\n options: z.array(z.never()).optional(),\n }),\n z.object({\n kind: z.literal(\"custom\"),\n multiple: z.literal(false),\n question: z.string().optional(),\n contract: z.string().optional(),\n request: z.unknown(),\n id: z.string().optional(),\n schemaId: z.string(),\n schemaVersion: z.string(),\n meta: z.record(z.string(), 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.string(), 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.string(), 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({\n type: z.literal(\"limit-reached\"),\n runId: z.string(),\n limit: z.enum([\n \"maxNodeExecutions\",\n \"maxModelPasses\",\n \"maxToolCalls\",\n \"maxChildInvocations\",\n ]),\n maximum: z.number(),\n consumed: z.number(),\n }),\n z.object({\n type: z.literal(\"cancelled\"),\n runId: z.string(),\n reason: z.string(),\n }),\n z.object({ type: z.literal(\"done\"), data: z.any().optional() }),\n z.object({\n type: z.literal(\"error\"),\n message: z.string(),\n failure: z\n .custom<FailureDescriptor>(isFailureDescriptor)\n .transform(serializeFailure)\n .optional(),\n }),\n]);\n\nexport type StreamChunk = z.infer<typeof StreamChunkSchema>;\n","import { z } from \"zod\";\n\nconst StructuredDataBase = z.object({\n type: z.literal(\"structured-data\"),\n streamId: z.string(),\n dataType: z.string(),\n kind: z.enum([\"set\", \"append\", \"text-delta\", \"final\"]),\n schemaId: z.string().optional(),\n schemaVersion: z.string().optional(),\n id: z.string().optional(),\n node: z.string().optional(),\n});\n\nconst StructuredSetChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"set\"),\n path: z.string().min(1),\n value: z.unknown(),\n});\n\nconst StructuredAppendChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"append\"),\n path: z.string().min(1),\n items: z.array(z.unknown()),\n});\n\nconst StructuredTextDeltaChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"text-delta\"),\n path: z.string().min(1),\n delta: z.string(),\n});\n\nconst StructuredFinalChunkSchema = StructuredDataBase.extend({\n kind: z.literal(\"final\"),\n data: z.unknown(),\n});\n\nexport const StructuredDataChunkSchema = z.union([\n StructuredSetChunkSchema,\n StructuredAppendChunkSchema,\n StructuredTextDeltaChunkSchema,\n StructuredFinalChunkSchema,\n]);\n\nexport type StructuredDataChunk = z.infer<typeof StructuredDataChunkSchema>;\n"],"mappings":"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","names":["import_errors","import_errors","import_errors","import_zod"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kortyx/stream",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Streaming primitives for Kortyx.",
|
|
6
6
|
"keywords": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"zod": "^4.3.6",
|
|
41
|
-
"@kortyx/core": "0.
|
|
41
|
+
"@kortyx/core": "0.10.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"concurrently": "^9.2.0",
|