@legit-sdk/assistant-ui 0.2.3 → 0.2.4
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/dist/index.js +120 -2
- package/dist/server.js +2 -5
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var M=Object.defineProperty;var H=(t,e,r)=>e in t?M(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var l=(t,e)=>M(t,"name",{value:e,configurable:!0});var u=(t,e,r)=>H(t,typeof e!="symbol"?e+"":e,r);var I={toResponse(t,e){return new Response(I.toByteStream(t,e),{headers:e.headers??{}})},fromResponse(t,e){return I.fromByteStream(t.body,e)},toByteStream(t,e){return t.pipeThrough(e)},fromByteStream(t,e){return t.pipeThrough(e)}};var A=l(function(){let t,e,r=new Promise((n,a)=>{t=n,e=a});if(!t||!e)throw new Error("Failed to create promise");return{promise:r,resolve:t,reject:e}},"promiseWithResolvers");var k=l(()=>{let t=[],e=!1,r,n,a=l(s=>{s.promise||(s.promise=s.reader.read().then(({done:o,value:p})=>{s.promise=void 0,o?(t.splice(t.indexOf(s),1),e&&t.length===0&&r.close()):r.enqueue(p),n?.resolve(),n=void 0}).catch(o=>{console.error(o),t.forEach(p=>{p.reader.cancel()}),t.length=0,r.error(o),n?.reject(o),n=void 0}))},"handlePull");return{readable:new ReadableStream({start(s){r=s},pull(){return n=A(),t.forEach(s=>{a(s)}),n.promise},cancel(){t.forEach(s=>{s.reader.cancel()}),t.length=0}}),isSealed(){return e},seal(){e=!0,t.length===0&&r.close()},addStream(s){if(e)throw new Error("Cannot add streams after the run callback has settled.");let o={reader:s.getReader()};t.push(o),a(o)},enqueue(s){this.addStream(new ReadableStream({start(o){o.enqueue(s),o.close()}}))}}},"createMergeStream");var m,N=(m=class{constructor(e){u(this,"_controller");u(this,"_isClosed",!1);this._controller=e}append(e){return this._controller.enqueue({type:"text-delta",path:[],textDelta:e}),this}close(){this._isClosed||(this._isClosed=!0,this._controller.enqueue({type:"part-finish",path:[]}),this._controller.close())}},l(m,"TextStreamControllerImpl"),m),P=l(t=>new ReadableStream({start(e){return t.start?.(new N(e))},pull(e){return t.pull?.(new N(e))},cancel(e){return t.cancel?.(e)}}),"createTextStream"),E=l(()=>{let t;return[P({start(r){t=r}}),t]},"createTextStreamController");var f,O=(f=class{constructor(e){u(this,"_isClosed",!1);u(this,"_mergeTask");u(this,"_argsTextController");this._controller=e;let r=P({start:l(a=>{this._argsTextController=a},"start")}),n=!1;this._mergeTask=r.pipeTo(new WritableStream({write:l(a=>{switch(a.type){case"text-delta":n=!0,this._controller.enqueue(a);break;case"part-finish":n||this._controller.enqueue({type:"text-delta",textDelta:"{}",path:[]}),this._controller.enqueue({type:"tool-call-args-text-finish",path:[]});break;default:throw new Error(`Unexpected chunk type: ${a.type}`)}},"write")}))}get argsText(){return this._argsTextController}async setResponse(e){this._argsTextController.close(),await Promise.resolve(),this._controller.enqueue({type:"result",path:[],...e.artifact!==void 0?{artifact:e.artifact}:{},result:e.result,isError:e.isError??!1})}async close(){this._isClosed||(this._isClosed=!0,this._argsTextController.close(),await this._mergeTask,this._controller.enqueue({type:"part-finish",path:[]}),this._controller.close())}},l(f,"ToolCallStreamControllerImpl"),f),z=l(t=>new ReadableStream({start(e){return t.start?.(new O(e))},pull(e){return t.pull?.(new O(e))},cancel(e){return t.cancel?.(e)}}),"createToolCallStream"),U=l(()=>{let t;return[z({start(r){t=r}}),t]},"createToolCallStreamController");var g,v=(g=class{constructor(){u(this,"value",-1)}up(){return++this.value}},l(g,"Counter"),g);var h,F=(h=class extends TransformStream{constructor(e){super({transform(r,n){n.enqueue({...r,path:[e,...r.path]})}})}},l(h,"PathAppendEncoder"),h),x,xe=(x=class extends TransformStream{constructor(e){super({transform(r,n){let{path:[a,...i]}=r;if(e!==a)throw new Error(`Path mismatch: expected ${e}, got ${a}`);n.enqueue({...r,path:i})}})}},l(x,"PathAppendDecoder"),x),y,j=(y=class extends TransformStream{constructor(e){let r=new v,n=new Map;super({transform(a,i){a.type==="part-start"&&a.path.length===0&&n.set(r.up(),e.up());let[s,...o]=a.path;if(s===void 0){i.enqueue(a);return}let p=n.get(s);if(p===void 0)throw new Error("Path not found");i.enqueue({...a,path:[p,...o]})}})}},l(y,"PathMergeEncoder"),y);var T,$=(T=class extends TransformStream{constructor(e){super();let r=e(super.readable);Object.defineProperty(this,"readable",{value:r,writable:!1})}},l(T,"PipeableTransformStream"),T);var c=(t=>(t.TextDelta="0",t.Data="2",t.Error="3",t.Annotation="8",t.ToolCall="9",t.ToolCallResult="a",t.StartToolCall="b",t.ToolCallArgsTextDelta="c",t.FinishMessage="d",t.FinishStep="e",t.StartStep="f",t.ReasoningDelta="g",t.Source="h",t.RedactedReasoning="i",t.ReasoningSignature="j",t.File="k",t.AuiUpdateStateOperations="aui-state",t.AuiTextDelta="aui-text-delta",t.AuiReasoningDelta="aui-reasoning-delta",t))(c||{});var C,J=(C=class extends TransformStream{constructor(){super({transform:l((e,r)=>{r.enqueue(`${e.type}:${JSON.stringify(e.value)}
|
|
5
|
-
`)},"transform")})}},l(C,"DataStreamChunkEncoder"),C),w,K=(w=class extends TransformStream{constructor(){super({transform:l((e,r)=>{let n=e.indexOf(":");if(n===-1)throw new Error("Invalid stream part");r.enqueue({type:e.slice(0,n),value:JSON.parse(e.slice(n+1))})},"transform")})}},l(w,"DataStreamChunkDecoder"),w);var b,B=(b=class extends TransformStream{constructor(){let e=[];super({transform(r,n){if(r.type==="part-start"){if(r.path.length!==0){n.error(new Error("Nested parts are not supported"));return}e.push(r.part),n.enqueue(r);return}if(r.type==="text-delta"||r.type==="result"||r.type==="part-finish"||r.type==="tool-call-args-text-finish"){if(r.path.length!==1){n.error(new Error(`${r.type} chunks must have a path of length 1`));return}let a=r.path[0];if(a<0||a>=e.length){n.error(new Error(`Invalid path index: ${a}`));return}let i=e[a];n.enqueue({...r,meta:i});return}n.enqueue(r)}})}},l(b,"AssistantMetaTransformStream"),b);var S,q=(S=class extends ${constructor(){super(r=>{let n=new TransformStream({transform(a,i){let s=a.type;switch(s){case"part-start":{let o=a.part;if(o.type==="tool-call"){let{type:p,..._}=o;i.enqueue({type:c.StartToolCall,value:_})}if(o.type==="source"){let{type:p,..._}=o;i.enqueue({type:c.Source,value:_})}break}case"text-delta":{let o=a.meta;switch(o.type){case"text":{o.parentId?i.enqueue({type:c.AuiTextDelta,value:{textDelta:a.textDelta,parentId:o.parentId}}):i.enqueue({type:c.TextDelta,value:a.textDelta});break}case"reasoning":{o.parentId?i.enqueue({type:c.AuiReasoningDelta,value:{reasoningDelta:a.textDelta,parentId:o.parentId}}):i.enqueue({type:c.ReasoningDelta,value:a.textDelta});break}case"tool-call":{i.enqueue({type:c.ToolCallArgsTextDelta,value:{toolCallId:o.toolCallId,argsTextDelta:a.textDelta}});break}default:throw new Error(`Unsupported part type for text-delta: ${o.type}`)}break}case"result":{let o=a.meta;if(o.type!=="tool-call")throw new Error(`Result chunk on non-tool-call part not supported: ${o.type}`);i.enqueue({type:c.ToolCallResult,value:{toolCallId:o.toolCallId,result:a.result,artifact:a.artifact,...a.isError?{isError:a.isError}:{}}});break}case"step-start":{let{type:o,...p}=a;i.enqueue({type:c.StartStep,value:p});break}case"step-finish":{let{type:o,...p}=a;i.enqueue({type:c.FinishStep,value:p});break}case"message-finish":{let{type:o,...p}=a;i.enqueue({type:c.FinishMessage,value:p});break}case"error":{i.enqueue({type:c.Error,value:a.error});break}case"annotations":{i.enqueue({type:c.Annotation,value:a.annotations});break}case"data":{i.enqueue({type:c.Data,value:a.data});break}case"update-state":{i.enqueue({type:c.AuiUpdateStateOperations,value:a.operations});break}case"tool-call-args-text-finish":case"part-finish":break;default:{let o=s;throw new Error(`Unsupported chunk type: ${o}`)}}}});return r.pipeThrough(new B).pipeThrough(n).pipeThrough(new J).pipeThrough(new TextEncoderStream)});u(this,"headers",new Headers({"Content-Type":"text/plain; charset=utf-8","x-vercel-ai-data-stream":"v1"}))}},l(S,"DataStreamEncoder"),S),qe=[c.StartToolCall,c.ToolCall,c.TextDelta,c.ReasoningDelta,c.Source,c.Error,c.FinishStep,c.FinishMessage,c.AuiTextDelta,c.AuiReasoningDelta];var L=l((t,e=21)=>(r=e)=>{let n="",a=r|0;for(;a--;)n+=t[Math.random()*t.length|0];return n},"customAlphabet");var W=L("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",7);var d,Q=(d=class{constructor(e){u(this,"_state");u(this,"_parentId");this._state=e||{merger:k(),contentCounter:new v}}get __internal_isClosed(){return this._state.merger.isSealed()}__internal_getReadable(){return this._state.merger.readable}__internal_subscribeToClose(e){this._state.closeSubscriber=e}_addPart(e,r){this._state.append&&(this._state.append.controller.close(),this._state.append=void 0),this.enqueue({type:"part-start",part:e,path:[]}),this._state.merger.addStream(r.pipeThrough(new F(this._state.contentCounter.value)))}merge(e){this._state.merger.addStream(e.pipeThrough(new j(this._state.contentCounter)))}appendText(e){this._state.append?.kind!=="text"&&(this._state.append={kind:"text",controller:this.addTextPart()}),this._state.append.controller.append(e)}appendReasoning(e){this._state.append?.kind!=="reasoning"&&(this._state.append={kind:"reasoning",controller:this.addReasoningPart()}),this._state.append.controller.append(e)}addTextPart(){let[e,r]=E();return this._addPart({type:"text"},e),r}addReasoningPart(){let[e,r]=E();return this._addPart({type:"reasoning"},e),r}addToolCallPart(e){let r=typeof e=="string"?{toolName:e}:e,n=r.toolName,a=r.toolCallId??W(),[i,s]=U();return this._addPart({type:"tool-call",toolName:n,toolCallId:a,...this._parentId&&{parentId:this._parentId}},i),r.argsText!==void 0&&(s.argsText.append(r.argsText),s.argsText.close()),r.args!==void 0&&(s.argsText.append(JSON.stringify(r.args)),s.argsText.close()),r.response!==void 0&&s.setResponse(r.response),s}appendSource(e){this._addPart({...e,...this._parentId&&{parentId:this._parentId}},new ReadableStream({start(r){r.enqueue({type:"part-finish",path:[]}),r.close()}}))}appendFile(e){this._addPart(e,new ReadableStream({start(r){r.enqueue({type:"part-finish",path:[]}),r.close()}}))}enqueue(e){this._state.merger.enqueue(e),e.type==="part-start"&&e.path.length===0&&this._state.contentCounter.up()}withParentId(e){let r=new d(this._state);return r._parentId=e,r}close(){this._state.append?.controller?.close(),this._state.merger.seal(),this._state.closeSubscriber?.()}},l(d,"_AssistantStreamControllerImpl"),d);function V(t){let e=new Q;return l(async()=>{try{await t(e)}catch(n){throw e.__internal_isClosed||e.enqueue({type:"error",path:[],error:String(n)}),n}finally{e.__internal_isClosed||e.close()}},"runTask")(),e.__internal_getReadable()}l(V,"createAssistantStream");function D(){let{resolve:t,promise:e}=A(),r;return[V(a=>(r=a,r.__internal_subscribeToClose(t),e)),r]}l(D,"createAssistantStreamController");var G=l(t=>{if(typeof t=="string")return t;if(t===void 0)return"";try{return JSON.stringify(t)}catch{return""}},"serializeStructuredData");var R=l(t=>t==null?null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:Array.isArray(t)?t.map(e=>R(e)):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([e,r])=>[e,R(r)])):JSON.stringify(t),"toJsonValue"),X=l((t,e)=>e?typeof t=="string"?{type:"error-text",value:t}:{type:"error-json",value:R(t)}:typeof t=="string"?{type:"text",value:t}:{type:"json",value:R(t)},"buildToolResultOutput"),Y=l(t=>{switch(t.type){case"text":return{type:"text",text:typeof t.text=="string"?t.text:""};case"tool-call":return{type:"tool-call",toolCallId:typeof t.toolCallId=="string"?t.toolCallId:`unknown-${Date.now()}`,toolName:typeof t.toolName=="string"?t.toolName:"unknown",input:R(t.args??t.input??{})};default:return null}},"mapAssistantContentPart"),Z=l(t=>t.type!=="tool-result"?null:{type:"tool-result",toolCallId:typeof t.toolCallId=="string"?t.toolCallId:`unknown-${Date.now()}`,toolName:typeof t.toolName=="string"?t.toolName:"unknown",output:X(t.result??t.output,!!t.isError)},"mapToolContentPart"),ee=l(t=>t.map(e=>{let r=Array.isArray(e.content)?e.content:[];switch(e.role){case"system":return{role:"system",content:r.map(a=>a.type==="text"&&typeof a.text=="string"?a.text:"").join("")};case"user":return{role:"user",content:r.map(a=>{switch(a.type){case"text":return{type:"text",text:typeof a.text=="string"?a.text:""};default:return null}}).filter(Boolean)};case"assistant":return{role:"assistant",content:r.map(a=>Y(a)).filter(Boolean)};case"tool":{let n=r.map(a=>Z(a)).filter(Boolean);return n.length>0?{role:"tool",content:n}:null}default:return null}}).filter(e=>e!==null),"convertMessagesToModelMessages");async function te(t){let[e,r]=D();(async()=>{try{let a=null,i=new Map;for await(let s of t.fullStream)switch(s.type){case"text-start":a=r.addTextPart();break;case"text-delta":a||(a=r.addTextPart()),a.append(s.text);break;case"text-end":a?.close(),a=null;break;case"tool-input-start":{let o=s.id;if(!i.has(o)){let p=r.addToolCallPart({toolCallId:o,toolName:s.toolName});i.set(o,p)}break}case"tool-input-delta":{let o=s.id,p=i.get(o);p&&p.argsText.append(s.delta);break}case"tool-input-end":{let o=s.id,p=i.get(o);p&&p.argsText.close();break}case"tool-call":{let o=s.toolCallId;if(!i.get(o)){let _=r.addToolCallPart({toolCallId:o,toolName:s.toolName,args:s.input});i.set(o,_)}break}case"tool-result":{let o=s.toolCallId,p=i.get(o);p&&p.setResponse({result:G(s.output),isError:!1});break}case"tool-error":{let o=s.toolCallId,p=i.get(o);p&&p.setResponse({result:G(s.error),isError:!0});break}case"start-step":{let o=`msg-${Date.now()}-${Math.random().toString(36).slice(2)}`;r.enqueue({type:"step-start",path:[],messageId:o});break}case"finish-step":{let o=s.usage;r.enqueue({type:"step-finish",path:[],finishReason:s.finishReason,usage:{promptTokens:o.promptTokens??o.prompt?.tokens??0,completionTokens:o.completionTokens??o.completion?.tokens??0},isContinued:!1});break}case"finish":{let o=s.totalUsage;r.enqueue({type:"message-finish",path:[],finishReason:s.finishReason,usage:{promptTokens:o.promptTokens??o.prompt?.tokens??0,completionTokens:o.completionTokens??o.completion?.tokens??0}});break}case"error":{r.enqueue({type:"error",path:[],error:s.error instanceof Error?s.error.message:typeof s.error=="string"?s.error:"Unknown error"});break}case"start":case"abort":case"raw":case"reasoning-start":case"reasoning-delta":case"reasoning-end":case"source":case"file":break}a?.close(),i.forEach(s=>s.close()),r.close()}catch(a){r.enqueue({type:"error",path:[],error:a instanceof Error?a.message:typeof a=="string"?a:"Unknown error"}),r.close()}})();let n=new q;return I.toResponse(e,n)}l(te,"streamTextToDataStreamResponse");export{ee as convertMessagesToModelMessages,te as streamTextToDataStreamResponse};
|
|
1
|
+
// Server-safe exports (no React dependencies)
|
|
2
|
+
export { convertMessagesToModelMessages, streamTextToDataStreamResponse, } from './customConverters';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legit-sdk/assistant-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Legit integration for Assistant UI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"ai": "^5.0.59",
|
|
49
|
-
"@legit-sdk/core": "0.2.
|
|
49
|
+
"@legit-sdk/core": "0.2.4"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|