UNPKG

@cogniformai/instructor-stream

Version:

Streaming-first structured data extraction from LLMs with real-time updates

2 lines 3.99 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk2RKUKCF5cjs = require('./chunk-2RKUKCF5.cjs');var G=e=>typeof e=="object"&&e!==null,M=e=>Array.isArray(e)?e:[],h=e=>typeof e=="string"&&e.length>0,E=e=>{if(h(e.type)){if(e.type==="text"&&h(e.text))return e.text;if(e.type==="tool_call_chunk"&&h(e.args))return e.args}},L= exports.a =(e={})=>{let{defaultNode:a=null,onMissingNode:r}=e;return new TransformStream({transform(n,c){if(!G(n))return;let d=Array.isArray(n.data)?n.data:[],m=a,l=!1;for(let f=0;f<d.length;f++){let p=d[f];if(!G(p))continue;let t=d[f+1],i=h(p.langgraph_node)?p.langgraph_node:null,s=G(t)&&h(t.langgraph_node)?t.langgraph_node:null;i?m=i:s&&(m=s);let u=_nullishCoalesce(i, () => (m)),o=M(p.content);if(o.length){if(!u){l=!0;continue}for(let S of o){let g=E(S);g&&c.enqueue({node:u,text:g})}}}l&&r&&r(n)}})};var _effect = require('effect');var k={string:null,number:null,boolean:null},v=(e,a)=>e instanceof _chunk2RKUKCF5cjs.b?e:new (0, _chunk2RKUKCF5cjs.b)({message:a,cause:e}),P= exports.b =e=>{let a=_chunk2RKUKCF5cjs.e.call(void 0, e.schema);if(!a.zod)throw new (0, _chunk2RKUKCF5cjs.c)({message:`Schema '${a.name}' must provide a Zod schema for LangGraph streaming`});let r=_nullishCoalesce(e.validation, () => ("none")),n=new (0, _chunk2RKUKCF5cjs.f)(a.zod,{snapshotMode:"object",autoJSONMode:"off",typeDefaults:{...k}}),c=t=>({_activePath:n.getActivePath(),_completedPaths:n.getCompletedPaths(),_isValid:r==="none",_type:t}),d={};e.defaultNode!==void 0&&(d.defaultNode=e.defaultNode),e.onMissingNode!==void 0&&(d.onMissingNode=e.onMissingNode);let m=e.upstream.pipeThrough(L(d)),l=new Set,f=(async function*(){let t=m.getReader(),i=!1;try{for(;;){let{done:s,value:u}=await t.read();if(s){i=!0;break}if(!u)continue;let o=u,{completions:S,closed:g}=n.ingest([o.node],o.text);if(S.length===0){g&&(n.releaseContext([o.node]),l.delete(o.node));continue}l.add(o.node),yield{data:[n.current()],_meta:c(o.node)},g&&(n.releaseContext([o.node]),l.delete(o.node))}if(r==="final"){let s=await _optionalChain([a, 'access', _ => _.zod, 'optionalAccess', _2 => _2.safeParseAsync, 'call', _3 => _3(n.current())]);if(!_optionalChain([s, 'optionalAccess', _4 => _4.success]))throw new (0, _chunk2RKUKCF5cjs.d)({reason:`Final validation failed for schema '${a.name}'`,issues:_optionalChain([s, 'optionalAccess', _5 => _5.error, 'optionalAccess', _6 => _6.issues])})}}finally{if(!i)try{await t.cancel()}catch (e2){}try{t.releaseLock()}catch (e3){}for(let s of l)n.releaseContext([s])}})(),p=_effect.Stream.fromAsyncIterable(f,t=>t instanceof _chunk2RKUKCF5cjs.d||t instanceof _chunk2RKUKCF5cjs.b||t instanceof _chunk2RKUKCF5cjs.c?t:v(t,"LangGraph stream failed"));return e.onSnapshot?_effect.Stream.mapEffect(p,t=>_effect.Effect.tryPromise({try:async()=>{let i=t.data[0];return await _optionalChain([e, 'access', _7 => _7.onSnapshot, 'optionalCall', _8 => _8(_nullishCoalesce(i, () => ({})),t._meta)]),t},catch:i=>v(i,"LangGraph onSnapshot handler failed")})):p};function j(e){let a=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():(async function*(){for(let r of e)yield r})();return new ReadableStream({async pull(r){let{value:n,done:c}=await a.next();c?r.close():r.enqueue(n)},async cancel(){typeof a.return=="function"&&await a.return()}})}exports.a = L; exports.b = P; exports.c = j; //# sourceMappingURL=chunk-X56VWEE2.cjs.map