UNPKG

assistant-stream

Version:

Streaming utilities for AI assistants

45 lines (44 loc) • 1.41 kB
import { Counter } from "../Counter.js"; // src/core/utils/stream/path-utils.ts var PathAppendEncoder = class extends TransformStream { constructor(idx) { super({ transform(chunk, controller) { const append = (partIndex) => controller.enqueue({ ...chunk, path: [partIndex, ...chunk.path] }); if (typeof idx === "number") return append(idx); else if (idx.value !== void 0) return append(idx.value); else return idx.promise.then(append); } }); } }; var PathAppendDecoder = class extends TransformStream { constructor(idx) { super({ transform(chunk, controller) { const { path: [idx2, ...path] } = chunk; if (idx !== idx2) throw new Error(`Path mismatch: expected ${idx}, got ${idx2}`); controller.enqueue({ ...chunk, path }); } }); } }; const createPathMergeMapper = (nextPartIndex) => { const innerCounter = new Counter(); const mapping = /* @__PURE__ */ new Map(); return (chunk) => { if (chunk.type === "part-start" && chunk.path.length === 0) mapping.set(innerCounter.up(), nextPartIndex()); const [idx, ...path] = chunk.path; if (idx === void 0) return chunk; const mappedIdx = mapping.get(idx); if (mappedIdx === void 0) throw new Error("Path not found"); return { ...chunk, path: [mappedIdx, ...path] }; }; }; export { PathAppendDecoder, PathAppendEncoder, createPathMergeMapper }; //# sourceMappingURL=path-utils.js.map