zen-code 4.10.1 → 4.10.2
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/app.js +157 -2615
- package/dist/chunk-0ddrb30y.js +1 -0
- package/dist/chunk-215an3fz.js +1 -0
- package/dist/chunk-40ht9pe1.js +91 -0
- package/dist/chunk-4wnmk2tj.js +7 -0
- package/dist/chunk-4z0w0ng1.js +2 -0
- package/dist/chunk-57bj89e2.js +1 -0
- package/dist/chunk-5a5mepqj.js +1 -0
- package/dist/chunk-5c3bpcpm.js +1 -0
- package/dist/chunk-7kw7ss8d.js +1 -0
- package/dist/chunk-86m0rmtc.js +1 -0
- package/dist/chunk-8f19qk9r.js +26 -0
- package/dist/chunk-8tbtavry.js +6 -0
- package/dist/chunk-9rayxazs.js +8 -0
- package/dist/chunk-a9gpb2tx.js +2 -0
- package/dist/chunk-a9tw6d68.js +1 -0
- package/dist/chunk-anbtppz1.js +294 -0
- package/dist/chunk-bca8tkkr.js +1 -0
- package/dist/chunk-bdqds8vh.js +1 -0
- package/dist/chunk-bzgznka5.js +3 -0
- package/dist/chunk-c7kd2qrp.js +278 -0
- package/dist/chunk-dvbb3dd1.js +233 -0
- package/dist/chunk-e8kxa5vj.js +140 -0
- package/dist/chunk-ehmmd8qc.js +1 -0
- package/dist/chunk-ejfa95sm.js +1 -0
- package/dist/chunk-f0m4532p.js +54 -0
- package/dist/chunk-f7cps5x1.js +1 -0
- package/dist/chunk-fbemqjck.js +2 -0
- package/dist/chunk-feeqtzv5.js +1 -0
- package/dist/chunk-fzh0v6r0.js +6 -0
- package/dist/chunk-g2zskge5.js +81 -0
- package/dist/chunk-g974hxbz.js +3 -0
- package/dist/chunk-g9911ymn.js +1 -0
- package/dist/chunk-gfhmzpy7.js +176 -0
- package/dist/chunk-gt8c6dne.js +3 -0
- package/dist/chunk-h8fdexm4.js +2 -0
- package/dist/chunk-hnnwbfqk.js +3 -0
- package/dist/chunk-hp2jzn9x.js +166 -0
- package/dist/chunk-hve2a279.js +2 -0
- package/dist/chunk-js4qp900.js +2 -0
- package/dist/chunk-k4q8j7pg.js +2 -0
- package/dist/chunk-m21hvv91.js +2 -0
- package/dist/chunk-mmx0k2yq.js +1 -0
- package/dist/chunk-mnnyjmgw.js +224 -0
- package/dist/chunk-mw7x6xqp.js +1 -0
- package/dist/chunk-n7s6my89.js +112 -0
- package/dist/chunk-n9rpnke9.js +4 -0
- package/dist/chunk-nk62q95g.js +93 -0
- package/dist/chunk-nmzx5nmt.js +1 -0
- package/dist/chunk-nqh1pptf.js +88 -0
- package/dist/chunk-nsw5168d.js +2 -0
- package/dist/chunk-pe8mzxwn.js +16 -0
- package/dist/chunk-pg1ppq4y.js +1 -0
- package/dist/chunk-pzb224c5.js +2 -0
- package/dist/chunk-q1cxrg0x.js +2 -0
- package/dist/chunk-qxebn3jw.js +18 -0
- package/dist/chunk-s1tbdcs8.js +4 -0
- package/dist/chunk-s5cqejr6.js +79 -0
- package/dist/chunk-spa69h7p.js +2 -0
- package/dist/chunk-spx7nn8t.js +6 -0
- package/dist/chunk-swc7se71.js +2 -0
- package/dist/chunk-swyc15ym.js +1 -0
- package/dist/chunk-t2s3s6af.js +1 -0
- package/dist/chunk-t6440ajd.js +5 -0
- package/dist/chunk-tjg2e8v3.js +41 -0
- package/dist/chunk-tjvhqr94.js +1 -0
- package/dist/chunk-vbb3m0vz.js +1 -0
- package/dist/chunk-vdmq9d9x.js +4 -0
- package/dist/chunk-vfxjbdz4.js +2 -0
- package/dist/chunk-vrnj0659.js +213 -0
- package/dist/chunk-wmyc17aa.js +23 -0
- package/dist/chunk-wt3p1w1g.js +1 -0
- package/dist/chunk-y5ry5c7v.js +1 -0
- package/dist/chunk-y8qhrx11.js +2 -0
- package/dist/chunk-yy8p9zph.js +2 -0
- package/dist/chunk-z61m3anh.js +1 -0
- package/dist/chunk-zg54h6gy.js +1 -0
- package/dist/chunk-zr90qp47.js +1 -0
- package/dist/chunk-zsa62xr0.js +2 -0
- package/dist/cli.js +1 -3116
- package/dist/nonInteractive.js +180 -1950
- package/dist/zen-keyboard.js +3 -358
- package/package.json +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import{jg as C8,kg as k,lg as M,mg as T,ng as p,og as e0,pg as R8,tg as e,ug as f0,vg as h,wg as R0,xg as D0,yg as w0,zg as h8}from"./chunk-pe8mzxwn.js";import{Tg as C0}from"./chunk-hp2jzn9x.js";import{Cj as D8,Fj as X0,Gj as O8,Oh as i0,Oj as a,Pj as W8,Rj as P8,Uj as E0,Wj as L8,Xi as d0,Zj as b0,_h as P,bj as o,bk as P0,cj as V0,ck as i,fi as q,fj as b8,fk as K0,hj as T0,hk as x0,ii as g0,jj as s0,kh as h0,sh as E8,uj as z0,uk as n0,vj as I0,wi as u,wk as f8,yj as O0}from"./chunk-nk62q95g.js";import{Hk as $}from"./chunk-nmzx5nmt.js";import{Tk as K8,tl as c}from"./chunk-tjg2e8v3.js";var _0=Symbol.for("AgentMiddleware");function S(X){return{[_0]:!0,name:X.name,stateSchema:X.stateSchema,contextSchema:X.contextSchema,wrapToolCall:X.wrapToolCall,wrapModelCall:X.wrapModelCall,beforeAgent:X.beforeAgent,beforeModel:X.beforeModel,afterModel:X.afterModel,afterAgent:X.afterAgent,tools:X.tools}}var v0={openai:{package:"@langchain/openai",className:"ChatOpenAI"},anthropic:{package:"@langchain/anthropic",className:"ChatAnthropic"},azure_openai:{package:"@langchain/openai",className:"AzureChatOpenAI"},cohere:{package:"@langchain/cohere",className:"ChatCohere"},"google-vertexai":{package:"@langchain/google-vertexai",className:"ChatVertexAI"},"google-vertexai-web":{package:"@langchain/google-vertexai-web",className:"ChatVertexAI"},"google-genai":{package:"@langchain/google-genai",className:"ChatGoogleGenerativeAI"},ollama:{package:"@langchain/ollama",className:"ChatOllama"},mistralai:{package:"@langchain/mistralai",className:"ChatMistralAI"},mistral:{package:"@langchain/mistralai",className:"ChatMistralAI"},groq:{package:"@langchain/groq",className:"ChatGroq"},cerebras:{package:"@langchain/cerebras",className:"ChatCerebras"},bedrock:{package:"@langchain/aws",className:"ChatBedrockConverse"},deepseek:{package:"@langchain/deepseek",className:"ChatDeepSeek"},xai:{package:"@langchain/xai",className:"ChatXAI"},fireworks:{package:"@langchain/community/chat_models/fireworks",className:"ChatFireworks",hasCircularDependency:!0},together:{package:"@langchain/community/chat_models/togetherai",className:"ChatTogetherAI",hasCircularDependency:!0},perplexity:{package:"@langchain/community/chat_models/perplexity",className:"ChatPerplexity",hasCircularDependency:!0}},t0=Object.keys(v0);async function c8(X,Q){let Z;if(Q)Z=v0[Q];else{let Y=Object.entries(v0).find(([,J])=>J.className===X);Z=Y?Y[1]:void 0}if(!Z)return;try{return(await import(Z.package))[Z.className]}catch(Y){let J=Y;if("code"in J&&J.code?.toString().includes("ERR_MODULE_NOT_FOUND")&&"message"in J&&typeof J.message==="string"){let K=(J.message.startsWith("Error: ")?J.message.slice(7):J.message).split("Cannot find package '")[1].split("'")[0];throw Error(`Unable to import ${K}. Please install with \`npm install ${K}\` or \`pnpm install ${K}\``)}throw Y}}async function g8(X,Q,Z={}){let Y=Q||m8(X);if(!Y)throw Error(`Unable to infer model provider for { model: ${X} }, please specify modelProvider directly.`);let J=v0[Y];if(!J){let V=t0.join(", ");throw Error(`Unsupported { modelProvider: ${Y} }.
|
|
2
|
+
|
|
3
|
+
Supported model providers are: ${V}`)}let{modelProvider:K,...G}=Z;return new(await c8(J.className,Y))({model:X,...G})}function m8(X){if(X.startsWith("gpt-3")||X.startsWith("gpt-4")||X.startsWith("gpt-5")||X.startsWith("o1")||X.startsWith("o3")||X.startsWith("o4"))return"openai";else if(X.startsWith("claude"))return"anthropic";else if(X.startsWith("command"))return"cohere";else if(X.startsWith("accounts/fireworks"))return"fireworks";else if(X.startsWith("gemini"))return"google-vertexai";else if(X.startsWith("amazon."))return"bedrock";else if(X.startsWith("mistral"))return"mistralai";else if(X.startsWith("sonar")||X.startsWith("pplx"))return"perplexity";else return}var o0=class X extends C0{_llmType(){return"chat_model"}lc_namespace=["langchain","chat_models"];_defaultConfig={};_configurableFields="any";_configPrefix;_queuedMethodOperations={};_modelInstanceCache=new Map;_profile;constructor(Q){super(Q);if(this._defaultConfig=Q.defaultConfig??{},Q.configurableFields==="any")this._configurableFields="any";else this._configurableFields=Q.configurableFields??["model","modelProvider"];if(Q.configPrefix)this._configPrefix=Q.configPrefix.endsWith("_")?Q.configPrefix:`${Q.configPrefix}_`;else this._configPrefix="";this._queuedMethodOperations=Q.queuedMethodOperations??this._queuedMethodOperations,this._profile=Q.profile??void 0}async _getModelInstance(Q){let Z=this._getCacheKey(Q),Y=this._modelInstanceCache.get(Z);if(Y)return Y;let J={...this._defaultConfig,...this._modelParams(Q)},K=await g8(J.model,J.modelProvider,J);for(let[G,V]of Object.entries(this._queuedMethodOperations))if(G in K&&typeof K[G]==="function")K=await K[G](...V);return this._modelInstanceCache.set(Z,K),K}async _generate(Q,Z,Y){return(await this._getModelInstance(Z))._generate(Q,Z??{},Y)}bindTools(Q,Z){let Y={...this._queuedMethodOperations};return Y.bindTools=[Q,Z],new X({defaultConfig:this._defaultConfig,configurableFields:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:Y})}withStructuredOutput=(Q,...Z)=>{let Y={...this._queuedMethodOperations};return Y.withStructuredOutput=[Q,...Z],new X({defaultConfig:this._defaultConfig,configurableFields:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:Y})};_modelParams(Q){let Z=Q?.configurable??{},Y={};for(let[J,K]of Object.entries(Z))if(J.startsWith(this._configPrefix)){let G=this._removePrefix(J,this._configPrefix);Y[G]=K}if(this._configurableFields!=="any")Y=Object.fromEntries(Object.entries(Y).filter(([J])=>this._configurableFields.includes(J)));return Y}_removePrefix(Q,Z){return Q.startsWith(Z)?Q.slice(Z.length):Q}withConfig(Q){let Z={...Q||{}},Y=this._modelParams(Z),J=Object.fromEntries(Object.entries(Z).filter(([K])=>K!=="configurable"));return J.configurable=Object.fromEntries(Object.entries(Z.configurable||{}).filter(([K])=>this._configPrefix&&!Object.keys(Y).includes(this._removePrefix(K,this._configPrefix)))),new i({config:Z,bound:new X({defaultConfig:{...this._defaultConfig,...Y},configurableFields:Array.isArray(this._configurableFields)?[...this._configurableFields]:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:this._queuedMethodOperations})})}async invoke(Q,Z){let Y=await this._getModelInstance(Z),J=V0(Z);return Y.invoke(Q,J)}async stream(Q,Z){let Y=new s0({generator:await(await this._getModelInstance(Z)).stream(Q,Z),config:Z});return await Y.setup,T0.fromAsyncGenerator(Y)}async batch(Q,Z,Y){return super.batch(Q,Z,Y)}async*transform(Q,Z){let Y=await this._getModelInstance(Z),J=V0(Z);yield*Y.transform(Q,J)}async*streamLog(Q,Z,Y){let J=await this._getModelInstance(Z),K=V0(Z);yield*J.streamLog(Q,K,{...Y,_schemaFormat:"original",includeNames:Y?.includeNames,includeTypes:Y?.includeTypes,includeTags:Y?.includeTags,excludeNames:Y?.excludeNames,excludeTypes:Y?.excludeTypes,excludeTags:Y?.excludeTags})}streamEvents(Q,Z,Y){let J=this;async function*K(){let G=await J._getModelInstance(Z),V=V0(Z),U=G.streamEvents(Q,V,Y);for await(let W of U)yield W}return T0.fromAsyncGenerator(K())}get profile(){if(this._profile)return this._profile;let Q=this._getCacheKey({});return this._modelInstanceCache.get(Q)?.profile??{}}_getCacheKey(Q){let Z=Q??{};if(Z.configurable){let{configurable:Y}=Z,J={};for(let[K,G]of Object.entries(Y))if(!K.startsWith("__pregel_"))J[K]=G;Z={...Z,configurable:J}}return JSON.stringify(Z)}};async function s(X,Q){let{configurableFields:Z,configPrefix:Y,modelProvider:J,profile:K,...G}={configPrefix:"",...Q??{}};if(J===void 0&&X?.includes(":")){let[z,...F]=X.split(":"),j=F.length===0?[z]:[z,F.join(":")];if(t0.includes(j[0]))[J,X]=j}let V=Array.isArray(Z)?[...Z]:Z;if(!X&&V===void 0)V=["model","modelProvider"];if(Y&&V===void 0)console.warn(`{ configPrefix: ${Y} } has been set but no fields are configurable. Set { configurableFields: [...] } to specify the model params that are configurable.`);let U={...G},W;if(V===void 0)W=new o0({defaultConfig:{...U,model:X,modelProvider:J},configPrefix:Y,profile:K});else{if(X)U.model=X;if(J)U.modelProvider=J;W=new o0({defaultConfig:U,configPrefix:Y,configurableFields:V,profile:K})}return await W._getModelInstance(),W}var H0=class extends Error{constructor(){super("The provided LLM already has bound tools. Please provide an LLM without bound tools to createAgent. The agent will bind the tools provided in the 'tools' parameter.")}},U0=class extends Error{toolNames;constructor(X){super(`The model has called multiple tools: ${X.join(", ")} to return a structured output. This is not supported. Please provide a single structured output.`);this.toolNames=X}},F0=class extends Error{toolName;errors;constructor(X,Q){super(`Failed to parse structured output for tool '${X}':${Q.map((Z)=>`
|
|
4
|
+
- ${Z}`).join("")}.`);this.toolName=X,this.errors=Q}},B0=class extends Error{toolCall;toolError;constructor(X,Q){let Z=X instanceof Error?X:Error(String(X)),Y=JSON.stringify(Q.args);super(`Error invoking tool '${Q.name}' with kwargs ${Y} with error: ${Z.stack}
|
|
5
|
+
Please fix the error and try again.`);this.toolCall=Q,this.toolError=Z}},Z0=class X extends Error{static "~brand"="MiddlewareError";constructor(Q,Z){let Y=Q instanceof Error?Q.message:String(Q);super(Y);if(this.name=Q instanceof Error?Q.name:`${Z[0].toUpperCase()+Z.slice(1)}Error`,Q instanceof Error)this.cause=Q}static wrap(Q,Z){if(e0(Q))return Q;return new X(Q,Z)}static isInstance(Q){return Q instanceof Error&&"~brand"in Q&&Q["~brand"]==="MiddlewareError"}};function j0(X){return"invoke"in X&&typeof X.invoke==="function"&&"_streamResponseChunks"in X}function J0(X){return typeof X==="object"&&X!=null&&"_queuedMethodOperations"in X&&"_getModelInstance"in X&&typeof X._getModelInstance==="function"}var X8=!0,d8=0,f=class X{constructor(Q,Z,Y){this.schema=Q,this.tool=Z,this.options=Y}get name(){return this.tool.function.name}static fromSchema(Q,Z){function Y(K){return K??`extract-${++d8}`}if(z0(Q)||O0(Q)){let K=b0(Q);return new X(K,{type:"function",function:{name:Y(K.title),strict:!1,description:K.description??"Tool for extracting structured output from the model's response.",parameters:K}},Z)}let J;if(typeof Q.name==="string"&&typeof Q.parameters==="object"&&Q.parameters!=null)J=Q;else J={name:Y(Q.title),description:Q.description??"",parameters:Q.schema||Q};return new X(b0(Q),{type:"function",function:J},Z)}parse(Q){let Z=new h0(this.schema).validate(Q);if(!Z.valid)throw new F0(this.name,Z.errors.map((Y)=>Y.error));return Q}},r=class X{_schemaType;schema;strict;constructor(Q,Z){if("schema"in Q&&typeof Q.schema==="object"&&Q.schema!==null&&!("type"in Q)){let Y=Q;this.schema=Y.schema,this.strict=Y.strict??X8}else this.schema=Q,this.strict=Z??X8}static fromSchema(Q,Z){return new X(b0(Q),Z)}parse(Q){let Z;if(typeof Q.content==="string")Z=Q.content;else if(Array.isArray(Q.content)){for(let Y of Q.content)if(typeof Y==="object"&&Y!==null&&"type"in Y&&Y.type==="text"&&"text"in Y&&typeof Y.text==="string"){Z=Y.text;break}}if(!Z||Z==="")return;try{let Y=JSON.parse(Z);if(!new h0(this.schema).validate(Y).valid)return;return Y}catch{}}};function Y8(X,Q,Z){if(!X)return[];if(typeof X==="object"&&X!==null&&"__responseFormatUndefined"in X)return[];if(Array.isArray(X)){if(X.every((J)=>J instanceof f||J instanceof r))return X;if(X.every((J)=>z0(J)))return X.map((J)=>f.fromSchema(J,Q));if(X.every((J)=>a(J)))return X.map((J)=>f.fromSchema(J,Q));if(X.every((J)=>typeof J==="object"&&J!==null&&!a(J)&&!z0(J)))return X.map((J)=>f.fromSchema(J,Q));throw Error(`Invalid response format: list contains mixed types.
|
|
6
|
+
All items must be either InteropZodObject, Standard Schema, or plain JSON schema objects.`)}if(X instanceof f||X instanceof r)return[X];let Y=Z8(Z);if(z0(X))return Y?[r.fromSchema(X)]:[f.fromSchema(X,Q)];if(a(X))return Y?[r.fromSchema(X)]:[f.fromSchema(X,Q)];if(typeof X==="object"&&X!==null&&"properties"in X)return Y?[r.fromSchema(X)]:[f.fromSchema(X,Q)];throw Error(`Invalid response format: ${String(X)}`)}var i8=["ChatOpenAI","ChatXAI"],Q8=["grok","gpt-5","gpt-4.1","gpt-4o","gpt-oss","o3-pro","o3-mini"];function Z8(X){if(!X)return!1;if(typeof X==="string"){let Z=X.split(":").pop();return Q8.some((Y)=>Z.includes(Y))}if(J0(X))return Z8(X._defaultConfig.model);if(!j0(X))return!1;let Q=X.getName();if(Q==="FakeToolCallingChatModel")return!0;if(i8.includes(Q)&&(("model"in X)&&Q8.some((Z)=>typeof X.model==="string"&&X.model.includes(Z))||Q==="FakeToolCallingModel"&&("structuredResponse"in X)))return!0;return!1}function n(X){if(!X||typeof X==="function")return;return X.canJumpTo}function t(X){if(typeof X==="function")return X;return X.hook}var M0=Symbol.for("langgraph-zod");if(!(M0 in globalThis))globalThis[M0]=new WeakSet;function J8(X){let Q=globalThis[M0];if(Q.has(X))return;Object.defineProperty(X,"langgraph",{get(){let Z=this;return{metadata(Y){return w0(Z,{jsonSchemaExtra:Y})},reducer(Y,J){return w0(Z,{default:E0(Z),reducer:{schema:J,fn:Y}})}}}}),Q.add(X)}try{J8($.ZodType.prototype),J8(c.ZodType.prototype)}catch(X){throw Error("Failed to extend Zod with LangGraph-related methods. This is most likely a bug, consider opening an issue and/or using `withLangGraph` to augment your Zod schema.",{cause:X})}var $8=class extends K8{constructor(X){super();this.parent=X,this._map=this.parent._map}add(X,...Q){let Z=Q[0];if(Z&&!Z?.default){let Y=E0(X);if(Y!=null)Z.default=Y}return super.add(X,...Q)}},l8=new $8(D0);function G8(X=!0,Q,Z=[]){let Y={jumpTo:new f0},J={},K={},G=(V)=>{if(h.isInstance(V)){for(let[W,z]of Object.entries(V.fields))if(!(W in Y)){if(Y[W]=z,W.startsWith("_"))continue;if(e.isInstance(z))J[W]=z.inputSchema||z.valueSchema,K[W]=z.valueSchema;else J[W]=z,K[W]=z}return}let U=W8(V);for(let[W,z]of Object.entries(U)){let F=W.startsWith("_");if(!(W in Y)){if(I0(z)){let j=D0.get(z);if(j?.reducer){if(j.reducer.schema){if(Y[W]=new e(z,{inputSchema:j.reducer.schema,reducer:j.reducer.fn}),!F)J[W]=j.reducer.schema,K[W]=z}else if(Y[W]=new e(z,{reducer:j.reducer.fn}),!F)J[W]=z,K[W]=z;continue}}if(Y[W]=z,!F)J[W]=z,K[W]=z}}};if(Q&&(h.isInstance(Q)||a(Q)))G(Q);for(let V of Z)if(V.stateSchema&&(h.isInstance(V.stateSchema)||a(V.stateSchema)))G(V.stateSchema);if(X)K.structuredResponse=new f0;return{state:new h({messages:R0,...Y}),input:new h({messages:R0,...J}),output:new h({messages:R0,...K})}}var u0=/<name>(.*?)<\/name>/s,p0=/<content>(.*?)<\/content>/s;function r8(X,Q){if(h.isInstance(X)){let Z={};for(let Y of Object.keys(X.fields))if(Y in Q)Z[Y]=Q[Y];return Z}if(O0(X))return X0(X,Q);throw Error(`Invalid state schema type: ${typeof X}`)}function H8(X){if(!q.isInstance(X)||g0.isInstance(X))return X;if(!X.name)return X;let{name:Q}=X;if(typeof X.content==="string")return new q({...X.lc_kwargs,content:`<name>${Q}</name><content>${X.content}</content>`,name:void 0});let Z=[],Y=0;for(let J of X.content)if(typeof J==="string")Y+=1,Z.push(`<name>${Q}</name><content>${J}</content>`);else if(typeof J==="object"&&"type"in J&&J.type==="text")Y+=1,Z.push({...J,text:`<name>${Q}</name><content>${J.text}</content>`});else Z.push(J);if(!Y)Z.unshift({type:"text",text:`<name>${Q}</name><content></content>`});return new q({...X.lc_kwargs,content:Z,name:void 0})}function U8(X){if(!q.isInstance(X)||!X.content)return X;let Q=[],Z;if(Array.isArray(X.content))Q=X.content.filter((Y)=>{if(Y.type==="text"&&typeof Y.text==="string"){let J=Y.text.match(u0),K=Y.text.match(p0);if(J&&(!K||K[1]===""))return Z=J[1],!1;return!0}return!0}).map((Y)=>{if(Y.type==="text"&&typeof Y.text==="string"){let J=Y.text.match(u0),K=Y.text.match(p0);if(!J||!K)return Y;return Z=J[1],{...Y,text:K[1]}}return Y});else{let Y=X.content,J=Y.match(u0),K=Y.match(p0);if(!J||!K)return X;Z=J[1],Q=K[1]}return new q({...Object.keys(X.lc_kwargs??{}).length>0?X.lc_kwargs:X,content:Q,name:Z})}function $0(X){return P0.isRunnable(X)}function V8(X){if(!j0(X))return!1;return"bindTools"in X&&typeof X.bindTools==="function"}var c0=(X,Q,Z={})=>{if(V8(X))return X.bindTools(Q,Z);if(i.isRunnableBinding(X)&&V8(X.bound)){let Y=X.bound.bindTools(Q,Z);if(i.isRunnableBinding(Y))return new i({bound:Y.bound,config:{...X.config,...Y.config},kwargs:{...X.kwargs,...Y.kwargs},configFactories:Y.configFactories??X.configFactories});return new i({bound:Y,config:X.config,kwargs:X.kwargs,configFactories:X.configFactories})}return null};function k0(X){if(typeof X==="function")return;let Q=X;if(K0.isRunnableSequence(Q))Q=Q.steps.find((Z)=>i.isRunnableBinding(Z))||Q;if(J0(Q))return;if(i.isRunnableBinding(Q)){let Z=Q.kwargs!=null&&typeof Q.kwargs==="object"&&"tools"in Q.kwargs&&Array.isArray(Q.kwargs.tools)&&Q.kwargs.tools.length>0,Y=Q.config!=null&&typeof Q.config==="object"&&"tools"in Q.config&&Array.isArray(Q.config.tools)&&Q.config.tools.length>0;if(Z||Y)throw new H0}if("tools"in Q&&Q.tools!==void 0&&Array.isArray(Q.tools)&&Q.tools.length>0)throw new H0}function m0(X){return Boolean(q.isInstance(X)&&X.tool_calls&&X.tool_calls.length>0)}function B8(X){if(X==null)return new u("");if(u.isInstance(X))return X;if(typeof X==="string")return new u({content:[{type:"text",text:X}]});throw Error(`Invalid systemPrompt type: expected string or SystemMessage, got ${typeof X}`)}async function j8(X,Q,Z={}){let Y=c0(X,Q,Z);if(Y)return Y;if(J0(X)){let J=c0(await X._getModelInstance(),Q,Z);if(J)return J}if(K0.isRunnableSequence(X)){let J=X.steps.findIndex((K)=>i.isRunnableBinding(K)||j0(K)||J0(K));if(J>=0){let K=c0(X.steps[J],Q,Z);if(K){let G=X.steps.slice();return G.splice(J,1,K),K0.from(G)}}}throw Error(`llm ${X} must define bindTools method.`)}function a8(X){if(X.length===0)return;if(X.length===1)return X[0];function Q(Y,J){return async(K,G)=>{return Y(K,async(U)=>{return J(U,G)})}}let Z=X[X.length-1];for(let Y=X.length-2;Y>=0;Y--)Z=Q(X[Y],Z);return Z}function z8(X){let Q=X.filter((Z)=>Z.wrapToolCall);if(Q.length===0)return;return a8(Q.map((Z)=>{let Y=Z.wrapToolCall;return async(K,G)=>{let V=K.state,U=async(W)=>{let z={...V,...W.state};return G({...W,state:z})};try{let W=await Y({...K,state:{messages:V.messages,...Z.stateSchema?r8(Z.stateSchema,{...V}):{}}},U);if(!P.isInstance(W)&&!p(W))throw Error(`Invalid response from "wrapToolCall" in middleware "${Z.name}": expected ToolMessage or Command, got ${typeof W}`);return W}catch(W){throw Z0.wrap(W,Z.name)}}}))}async function q8(X,Q){let Z={};for(let Y of X){if(!Y.stateSchema)continue;let J=Y.stateSchema;if(h.isInstance(Y.stateSchema)){let V={};for(let[U,W]of Object.entries(Y.stateSchema.fields))if(e.isInstance(W))V[U]=W.inputSchema||W.valueSchema;else V[U]=W;J=c.object(V)}let K=await D8(L8(J,(V)=>V.startsWith("_")),Q);if(K.success){Object.assign(Z,K.data);continue}let G=K.error.issues.filter((V)=>V.code==="invalid_type").map((V)=>` - ${V.path.join(".")}: Required`).join(`
|
|
7
|
+
`);throw Error(`Middleware "${Y.name}" has required state fields that must be initialized:
|
|
8
|
+
${G}
|
|
9
|
+
|
|
10
|
+
To fix this, either:
|
|
11
|
+
1. Provide default values in your middleware's state schema using .default():
|
|
12
|
+
stateSchema: z.object({
|
|
13
|
+
myField: z.string().default("default value")
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
2. Or make the fields optional using .optional():
|
|
17
|
+
stateSchema: z.object({
|
|
18
|
+
myField: z.string().optional()
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
3. Or ensure you pass these values when invoking the agent:
|
|
22
|
+
agent.invoke({
|
|
23
|
+
messages: [...],
|
|
24
|
+
${K.error.issues[0]?.path.join(".")}: "value"
|
|
25
|
+
})`)}return Z}function _8(X){let Q={messages:c.custom(()=>[]),structuredResponse:c.any().optional()};if(!X)return c.object(Q);let Z;if(h.isInstance(X)){Z={};for(let[J,K]of Object.entries(X.fields))if(e.isInstance(K))Z[J]=K.inputSchema||K.valueSchema;else Z[J]=K}else Z=X.shape;let Y={...Q};for(let[J,K]of Object.entries(Z))if(J.startsWith("_"))Y[J]=K.optional();else Y[J]=K;return c.object(Y)}function v8(X){if(a(X))return P8(X);if(h.isInstance(X)){let Q={};for(let[Z,Y]of Object.entries(X.fields)){let J;if(e.isInstance(Y))J=Y.inputSchema||Y.valueSchema;else J=Y;Q[Z]=I0(J)?J.optional():c.any().optional()}return c.object(Q)}return c.object({})}function g(X){if(!X)return;if(["model_request","tools",k].includes(X))return X;if(X==="model")return"model_request";if(X==="tools")return"tools";if(X==="end")return k;throw Error(`Invalid jump target: ${X}, must be "model", "tools" or "end".`)}function y0(...X){return AbortSignal.any(X.filter((Q)=>Q!==null&&Q!==void 0&&typeof Q==="object"&&("aborted"in Q)&&typeof Q.aborted==="boolean"))}var W0=class extends P0{lc_namespace=["langgraph"];func;tags;config;trace=!0;recurse=!0;#X;constructor(X){super();this.name=X.name??X.func.name,this.func=X.func,this.config=X.tags?{tags:X.tags}:void 0,this.recurse=X.recurse??this.recurse}getState(){return this.#X}setState(X){this.#X={...this.#X,...X}}async invoke(X,Q){let Z=o(this.config,Q),Y=await d0.runWithConfig(Z,async()=>this.func(X,Z));if(P0.isRunnable(Y)&&this.recurse)return await d0.runWithConfig(Z,async()=>Y.invoke(X,Z));return this.#X=Y,Y}};function F8(X,Q){let Z,Y;if(Q==="inline")Z=H8,Y=U8;else throw Error(`Invalid agent name mode: ${Q}. Needs to be one of: "inline"`);function J(K){return K.map(Z)}return K0.from([x0.from(J),X,x0.from(Y)])}function o8(X){return q.isInstance(X)||p(X)||typeof X==="object"&&X!==null&&"structuredResponse"in X&&"messages"in X}var y="model_request",x8=class extends W0{#X;#Z;constructor(X){super({name:X.name??"model",func:(Q,Z)=>this.#Q(Q,Z)});this.#X=X,this.#Z=X.systemMessage}#J(X){if(!this.#X.responseFormat)return;let Q=Y8(this.#X.responseFormat,void 0,X);if(!Q.every((Z)=>Z instanceof r))return{type:"tool",tools:Q.filter((Z)=>Z instanceof f).reduce((Z,Y)=>{return Z[Y.name]=Y,Z},{})};return{type:"native",strategy:Q[0]}}async#Q(X,Q){let Z=X.messages.at(-1);if(Z&&P.isInstance(Z)&&Z.name&&this.#X.shouldReturnDirect.has(Z.name))return[new T({update:{messages:[]}})];let{response:Y,lastAiMessage:J,collectedCommands:K}=await this.#$(X,Q);if(typeof Y==="object"&&Y!==null&&"structuredResponse"in Y&&"messages"in Y){let{structuredResponse:U,messages:W}=Y;return{messages:[...X.messages,...W],structuredResponse:U}}let G=[],V=q.isInstance(Y)?Y:J;if(V)if(V.name=this.name,V.lc_kwargs.name=this.name,this.#K(X,V))G.push(new T({update:{messages:[new q({content:"Sorry, need more steps to process this request.",name:this.name,id:V.id})]}}));else G.push(new T({update:{messages:[V]}}));if(p(Y)&&!K.includes(Y))G.push(Y);return G.push(...K),G}#Y(){if(typeof this.#X.model==="string")return s(this.#X.model);if(this.#X.model)return this.#X.model;throw Error("No model option was provided, either via `model` option.")}async#$(X,Q,Z={}){let Y=await this.#Y(),J=Q,K=this.#Z,G=null,V=[],U=async(j)=>{k0(j.model);let B=this.#J(j.model),A=await this.#H(j.model,j,B),E=[...K.text===""?[]:[K],...j.messages],_=y0(this.#X.signal,Q.signal),R=await b8(A.invoke(E,{...Q,signal:_}),_);if(G=R,B?.type==="native"){let C=B.strategy.parse(R);if(C)return{structuredResponse:C,messages:[R]};return R}if(!B||!R.tool_calls)return R;let O=R.tool_calls.filter((C)=>(C.name in B.tools));if(O.length===0)return R;if(O.length>1)return this.#G(R,O,B);let m=B.tools[O[0].name]?.options?.toolMessageContent;return this.#V(R,O[0],B,m??Z.lastMessage)},W=this.#X.wrapModelCallHookMiddleware??[],z=U;for(let j=W.length-1;j>=0;j--){let[B,A]=W[j];if(B.wrapModelCall){let E=z,_=B,R=A;z=async(O)=>{let m=K,C=_.contextSchema?X0(_.contextSchema,J?.context||{}):J?.context,d=Object.freeze({context:C,store:J.store,configurable:J.configurable,writer:J.writer,interrupt:J.interrupt,signal:J.signal}),N={...O,state:{...B.stateSchema?X0(v8(B.stateSchema),X):{},...R(),messages:X.messages},runtime:d},G0=async(H)=>{K=m;let L=H.tools??[],w=L.filter((l)=>$0(l)&&!this.#X.toolClasses.some((S0)=>S0.name===l.name));if(w.length>0)throw Error(`You have added a new tool in "wrapModelCall" hook of middleware "${_.name}": ${w.map((l)=>l.name).join(", ")}. This is not supported.`);let b=L.filter((l)=>$0(l)&&this.#X.toolClasses.every((S0)=>S0!==l));if(b.length>0)throw Error(`You have modified a tool in "wrapModelCall" hook of middleware "${_.name}": ${b.map((l)=>l.name).join(", ")}. This is not supported.`);let I=H,D=H.systemPrompt!==K.text,v=H.systemMessage!==K;if(D&&v)throw Error("Cannot change both systemPrompt and systemMessage in the same request.");if(D)K=new u({content:[{type:"text",text:H.systemPrompt}]}),I={...H,systemPrompt:K.text,systemMessage:K};if(v)K=new u({...H.systemMessage}),I={...H,systemPrompt:K.text,systemMessage:K};let q0=await E(I);if(p(q0)&&G){if(!V.includes(q0))V.push(q0);return G}return q0};if(!_.wrapModelCall)return G0(N);try{let H=await _.wrapModelCall(N,G0);if(!o8(H))throw Error(`Invalid response from "wrapModelCall" in middleware "${_.name}": expected AIMessage or Command, got ${typeof H}`);if(q.isInstance(H))G=H;else if(p(H))V.push(H);return H}catch(H){throw Z0.wrap(H,_.name)}}}}K=this.#Z;let F={model:Y,systemPrompt:K?.text,systemMessage:K,messages:X.messages,tools:this.#X.toolClasses,state:X,runtime:Object.freeze({context:J?.context,store:J.store,configurable:J.configurable,writer:J.writer,interrupt:J.interrupt,signal:J.signal})};return{response:await z(F),lastAiMessage:G,collectedCommands:V}}#G(X,Q,Z){let Y=new U0(Q.map((J)=>J.name));return this.#W(Y,X,Q[0],Z)}#V(X,Q,Z,Y){let J=Z.tools[Q.name];try{let K=J.parse(Q.args);return{structuredResponse:K,messages:[X,new P({tool_call_id:Q.id??"",content:JSON.stringify(K),name:Q.name}),new q(Y??`Returning structured response: ${JSON.stringify(K)}`)]}}catch(K){return this.#W(K,X,Q,Z)}}async#W(X,Q,Z,Y){let J=Object.values(Y.tools).at(0)?.options?.handleError,K=Z.id;if(!K)throw Error("Tool call ID is required to handle tool output errors. Please provide a tool call ID.");if(J===!1)throw X;if(J===void 0||typeof J==="boolean"&&J||Array.isArray(J)&&J.some((G)=>G instanceof U0))return new T({update:{messages:[Q,new P({content:X.message,tool_call_id:K})]},goto:y});if(typeof J==="string")return new T({update:{messages:[Q,new P({content:J,tool_call_id:K})]},goto:y});if(typeof J==="function"){let G=await J(X);if(typeof G!=="string")throw Error("Error handler must return a string.");return new T({update:{messages:[Q,new P({content:G,tool_call_id:K})]},goto:y})}return new T({update:{messages:[Q,new P({content:X.message,tool_call_id:K})]},goto:y})}#K(X,Q){let Z=q.isInstance(Q)&&Q.tool_calls?.every((J)=>this.#X.shouldReturnDirect.has(J.name)),Y="remainingSteps"in X?X.remainingSteps:void 0;return Boolean(Y&&(Y<1&&Z||Y<2&&m0(X.messages.at(-1))))}async#H(X,Q,Z){let Y={},J=Object.values(Z&&"tools"in Z?Z.tools:{}),K=[...Q?.tools??this.#X.toolClasses,...J.map((U)=>U.tool)],G=Q?.toolChoice||(J.length>0?"any":void 0);if(Z?.type==="native"){let U=Q?.modelSettings?.strict??Z?.strategy?.strict??!0,W={name:Z.strategy.schema?.name??"extract",description:O8(Z.strategy.schema),schema:Z.strategy.schema,strict:U};Object.assign(Y,{response_format:{type:"json_schema",json_schema:W},outputConfig:{format:{type:"json_schema",schema:Z.strategy.schema}},ls_structured_output_format:{kwargs:{method:"json_schema"},schema:Z.strategy.schema},strict:U})}let V=await j8(X,K,{...Y,...Q?.modelSettings,tool_choice:G});return this.#X.includeAgentName==="inline"?F8(V,this.#X.includeAgentName):V}getState(){let X=super.getState();return{messages:[],...X&&!p(X)?X:{}}}};var w8=(X,Q)=>`Error: ${X} is not a valid tool, try one of [${Q.join(", ")}].`,x="tools",I8=(X)=>Array.isArray(X)&&X.every(i0.isInstance),s8=(X)=>typeof X==="object"&&X!=null&&("messages"in X)&&I8(X.messages),t8=(X)=>typeof X==="object"&&X!=null&&("lg_tool_call"in X);function e8(X,Q){if(X instanceof B0)return new P({content:X.message,tool_call_id:Q.id,name:Q.name});return new P({content:`${X}
|
|
26
|
+
Please fix your mistakes.`,tool_call_id:Q.id,name:Q.name})}var k8=class extends W0{tools;trace=!1;signal;handleToolErrors=e8;wrapToolCall;constructor(X,Q){let{name:Z,tags:Y,handleToolErrors:J,signal:K,wrapToolCall:G}=Q??{};super({name:Z,tags:Y,func:(V,U)=>this.run(V,U)});this.options=Q,this.tools=X,this.handleToolErrors=J??this.handleToolErrors,this.signal=K,this.wrapToolCall=G}#X(X,Q,Z){if(R8(X))throw X;if(this.signal?.aborted)throw X;if(Z&&this.handleToolErrors!==!0)throw X;if(!this.handleToolErrors)throw X;if(typeof this.handleToolErrors==="function"){let Y=this.handleToolErrors(X,Q);if(Y&&P.isInstance(Y))return Y;throw X}else if(this.handleToolErrors)return new P({name:Q.name,content:`${X}
|
|
27
|
+
Please fix your mistakes.`,tool_call_id:Q.id});throw X}async runTool(X,Q,Z){let Y=Q,J={context:Y?.context,writer:Y?.writer,interrupt:Y?.interrupt,signal:Y?.signal},K=this.tools.find((U)=>U.name===X.name),G=async(U)=>{let{toolCall:W,tool:z}=U,F=z??this.tools.find((B)=>B.name===W.name);if(F===void 0){let B=this.tools.map((A)=>A.name);return new P({content:w8(W.name,B),tool_call_id:W.id,name:W.name,status:"error"})}let j=F;try{let B=await j.invoke({...W,type:"tool_call"},{...Q,config:Q,toolCallId:W.id,state:Q.configurable?.__pregel_scratchpad?.currentTaskInput,signal:y0(this.signal,Q.signal)});if(P.isInstance(B)||p(B))return B;return new P({name:j.name,content:typeof B==="string"?B:JSON.stringify(B),tool_call_id:W.id})}catch(B){if(B instanceof E8)throw new B0(B,W);throw B}},V={toolCall:X,tool:K,state:Z,runtime:J};if(this.wrapToolCall)try{return await this.wrapToolCall(V,G)}catch(U){return this.#X(U,X,!0)}if(!K){let U=this.tools.map((W)=>W.name);return new P({content:w8(X.name,U),tool_call_id:X.id,name:X.name,status:"error"})}try{return await G(V)}catch(U){return this.#X(U,X,!1)}}async run(X,Q){let Z;if(t8(X)){let{lg_tool_call:K,jumpTo:G,...V}=X;Z=[await this.runTool(X.lg_tool_call,Q,V)]}else{let K;if(I8(X))K=X;else if(s8(X))K=X.messages;else throw Error("ToolNode only accepts BaseMessage[] or { messages: BaseMessage[] } as input.");let G=new Set(K.filter((U)=>U.getType()==="tool").map((U)=>U.tool_call_id)),V;for(let U=K.length-1;U>=0;U-=1){let W=K[U];if(q.isInstance(W)){V=W;break}}if(!q.isInstance(V))throw Error("ToolNode only accepts AIMessages as input.");Z=await Promise.all(V.tool_calls?.filter((U)=>U.id==null||!G.has(U.id)).map((U)=>this.runTool(U,Q,X))??[])}if(!Z.some(p))return Array.isArray(X)?Z:{messages:Z};let Y=[],J=null;for(let K of Z)if(p(K))if(K.graph===T.PARENT&&Array.isArray(K.goto)&&K.goto.every((G)=>X6(G)))if(J)J.goto.push(...K.goto);else J=new T({graph:T.PARENT,goto:K.goto});else Y.push(K);else Y.push(Array.isArray(X)?[K]:{messages:[K]});if(J)Y.push(J);return Y}};function X6(X){return X instanceof M}var Q6=class{},Y6=class{},Q0=class extends W0{#X;constructor(X,Q){super(X);this.#X=Q}async invokeMiddleware(X,Q){let Z={};if(this.middleware.contextSchema){let U=this.middleware.contextSchema?.shape;if(U){let W={},z=Q?.context||{};for(let F of Object.keys(U))if(F in z)W[F]=z[F];Z=X0(this.middleware.contextSchema,W)}}let Y={...this.#X.getState(),...X,messages:X.messages},J={context:Z,store:Q?.store,configurable:Q?.configurable,writer:Q?.writer,interrupt:Q?.interrupt,signal:Q?.signal},K=await this.runHook(Y,Object.freeze(Object.assign(new Y6,{...J,context:Object.freeze(Object.assign(new Q6,Z))})));if(!K)return{jumpTo:void 0};let G,V;if(this.name?.startsWith("BeforeAgentNode_"))G=n(this.middleware.beforeAgent),V="beforeAgent.canJumpTo";else if(this.name?.startsWith("BeforeModelNode_"))G=n(this.middleware.beforeModel),V="beforeModel.canJumpTo";else if(this.name?.startsWith("AfterAgentNode_"))G=n(this.middleware.afterAgent),V="afterAgent.canJumpTo";else if(this.name?.startsWith("AfterModelNode_"))G=n(this.middleware.afterModel),V="afterModel.canJumpTo";if(typeof K.jumpTo==="string"&&!G?.includes(K.jumpTo)){let U=G&&G.length>0?`must be one of: ${G?.join(", ")}.`:V?`no ${V} defined in middleware ${this.middleware.name}`:"";throw Error(`Invalid jump target: ${K.jumpTo}, ${U}.`)}if(typeof K==="object"&&"type"in K){if(K.type==="terminate"){if(K.error)throw K.error;return{...Y,...K.result||{},jumpTo:K.jumpTo}}throw Error(`Invalid control action: ${JSON.stringify(K)}`)}return{...Y,...K,jumpTo:K.jumpTo}}get nodeOptions(){return{input:_8(this.middleware.stateSchema)}}};var y8=class extends Q0{lc_namespace=["langchain","agents","beforeAgentNodes"];constructor(X,Q){super({name:`BeforeAgentNode_${X.name}`,func:async(Z,Y)=>this.invokeMiddleware(Z,Y)},Q);this.middleware=X}runHook(X,Q){return t(this.middleware.beforeAgent)(X,Q)}};var A8=class extends Q0{lc_namespace=["langchain","agents","beforeModelNodes"];constructor(X,Q){super({name:`BeforeModelNode_${X.name}`,func:async(Z,Y)=>this.invokeMiddleware(Z,Y)},Q);this.middleware=X}runHook(X,Q){return t(this.middleware.beforeModel)(X,Q)}};var N8=class extends Q0{lc_namespace=["langchain","agents","afterModelNodes"];constructor(X,Q){super({name:`AfterModelNode_${X.name}`,func:async(Z,Y)=>this.invokeMiddleware(Z,Y)},Q);this.middleware=X}runHook(X,Q){return t(this.middleware.afterModel)(X,Q)}};var S8=class extends Q0{lc_namespace=["langchain","agents","afterAgentNodes"];constructor(X,Q){super({name:`AfterAgentNode_${X.name}`,func:async(Z,Y)=>this.invokeMiddleware(Z,Y)},Q);this.middleware=X}runHook(X,Q){return t(this.middleware.afterAgent)(X,Q)}};var T8=class{#X=new Map;addNode(X,Q){this.#X.set(X.name,[...this.#X.get(X.name)??[],Q])}getState(X){let Q=(this.#X.get(X)??[]).reduce((Z,Y)=>{return{...Z,...Y.getState()??{}}},{});return delete Q.jumpTo,Q}};var M8=class X{#X;#Z="v2";#J;#Q=new T8;#Y;constructor(Q,Z){if(this.options=Q,this.#Y=Z??{},Q.name)this.#Y=o(this.#Y,{metadata:{lc_agent_name:Q.name}});if(this.#Z=Q.version??this.#Z,!Q.model)throw Error("`model` option is required to create an agent.");if(typeof Q.model!=="string")k0(Q.model);let Y=this.options.middleware?.filter((H)=>H.tools).flatMap((H)=>H.tools)??[],J=[...Q.tools??[],...Y],K=new Set(J.filter($0).filter((H)=>("returnDirect"in H)&&H.returnDirect).map((H)=>H.name)),{state:G,input:V,output:U}=G8(this.options.responseFormat!==void 0,this.options.stateSchema,this.options.middleware),W=new h8(G,{input:V,output:U,context:this.options.contextSchema}),z=[],F=[],j=[],B=[],A=[];this.#J=new x8({model:this.options.model,systemMessage:B8(this.options.systemPrompt),includeAgentName:this.options.includeAgentName,name:this.options.name,responseFormat:this.options.responseFormat,middleware:this.options.middleware,toolClasses:J,shouldReturnDirect:K,signal:this.options.signal,wrapModelCallHookMiddleware:A});let E=new Set,_=this.options.middleware??[];for(let H=0;H<_.length;H++){let L,w,b,I,D=_[H];if(E.has(D.name))throw Error(`Middleware ${D.name} is defined multiple times`);if(E.add(D.name),D.beforeAgent){L=new y8(D,{getState:()=>this.#Q.getState(D.name)}),this.#Q.addNode(D,L);let v=`${D.name}.before_agent`;z.push({index:H,name:v,allowed:n(D.beforeAgent)}),W.addNode(v,L,L.nodeOptions)}if(D.beforeModel){w=new A8(D,{getState:()=>this.#Q.getState(D.name)}),this.#Q.addNode(D,w);let v=`${D.name}.before_model`;F.push({index:H,name:v,allowed:n(D.beforeModel)}),W.addNode(v,w,w.nodeOptions)}if(D.afterModel){b=new N8(D,{getState:()=>this.#Q.getState(D.name)}),this.#Q.addNode(D,b);let v=`${D.name}.after_model`;j.push({index:H,name:v,allowed:n(D.afterModel)}),W.addNode(v,b,b.nodeOptions)}if(D.afterAgent){I=new S8(D,{getState:()=>this.#Q.getState(D.name)}),this.#Q.addNode(D,I);let v=`${D.name}.after_agent`;B.push({index:H,name:v,allowed:n(D.afterAgent)}),W.addNode(v,I,I.nodeOptions)}if(D.wrapModelCall)A.push([D,()=>this.#Q.getState(D.name)])}W.addNode(y,this.#J);let R=_.some((H)=>H.wrapToolCall),O=J.filter($0);if(O.length>0||R){let H=new k8(O,{signal:this.options.signal,wrapToolCall:z8(_)});W.addNode(x,H)}let m;if(z.length>0)m=z[0].name;else if(F.length>0)m=F[0].name;else m=y;let C=F.length>0?F[0].name:y,d=B.length>0?B[B.length-1].name:k;W.addEdge(C8,m);let N=O.length>0||R;for(let H=0;H<z.length;H++){let L=z[H],w=L.name,b=H===z.length-1?C:z[H+1].name;if(L.allowed&&L.allowed.length>0){let I=L.allowed.map((v)=>g(v)).filter((v)=>v!==x||N),D=Array.from(new Set([b,...I.map((v)=>v===k?d:v)]));W.addConditionalEdges(w,this.#H(O,b,d,N),D)}else W.addEdge(w,b)}for(let H=0;H<F.length;H++){let L=F[H],w=L.name,b=H===F.length-1?y:F[H+1].name;if(L.allowed&&L.allowed.length>0){let I=L.allowed.map((v)=>g(v)).filter((v)=>v!==x||N),D=Array.from(new Set([b,...I]));W.addConditionalEdges(w,this.#B(O,b,N),D)}else W.addEdge(w,b)}let G0=j.at(-1);if(j.length>0&&G0)W.addEdge(y,G0.name);else{let H=this.#$(O,!1,N).map((L)=>L===k?d:L);if(H.length===1)W.addEdge(y,H[0]);else W.addConditionalEdges(y,this.#V(d),H)}for(let H=j.length-1;H>0;H--){let L=j[H],w=L.name,b=j[H-1].name;if(L.allowed&&L.allowed.length>0){let I=L.allowed.map((v)=>g(v)).filter((v)=>v!==x||N),D=Array.from(new Set([b,...I]));W.addConditionalEdges(w,this.#K(O,L.allowed,b,N),D)}else W.addEdge(w,b)}if(j.length>0){let H=j[0],L=H.name,w=this.#$(O,!0,N).filter((D)=>D!==x||N),b=Boolean(H.allowed&&H.allowed.length>0),I=w.map((D)=>D===k?d:D);W.addConditionalEdges(L,this.#W(O,b,d,N),I)}for(let H=B.length-1;H>0;H--){let L=B[H],w=L.name,b=B[H-1].name;if(L.allowed&&L.allowed.length>0){let I=L.allowed.map((v)=>g(v)).filter((v)=>v!==x||N),D=Array.from(new Set([b,...I]));W.addConditionalEdges(w,this.#K(O,L.allowed,b,N),D)}else W.addEdge(w,b)}if(B.length>0){let H=B[0],L=H.name;if(H.allowed&&H.allowed.length>0){let w=H.allowed.map((I)=>g(I)).filter((I)=>I!==x||N),b=Array.from(new Set([k,...w]));W.addConditionalEdges(L,this.#K(O,H.allowed,k,N),b)}else W.addEdge(L,k)}if(N){let H=C;if(K.size>0)W.addConditionalEdges(x,this.#G(K,d),[H,d]);else W.addEdge(x,H)}this.#X=W.compile({checkpointer:this.options.checkpointer,store:this.options.store,name:this.options.name,description:this.options.description})}get graph(){return this.#X}get checkpointer(){return this.#X.checkpointer}set checkpointer(Q){this.#X.checkpointer=Q}get store(){return this.#X.store}set store(Q){this.#X.store=Q}withConfig(Q){return new X(this.options,o(this.#Y,Q))}#$(Q,Z=!1,Y=Q.length>0){let J=[];if(Y)J.push(x);if(Z)J.push(y);return J.push(k),J}#G(Q,Z){return(Y)=>{let J=Y.messages,K=J[J.length-1];if(P.isInstance(K)&&K.name&&Q.has(K.name))return this.options.responseFormat?y:Z;return y}}#V(Q=k){return(Z)=>{let Y=Z.messages.at(-1);if(!q.isInstance(Y)||!Y.tool_calls||Y.tool_calls.length===0)return Q;if(Y.tool_calls.every((K)=>K.name.startsWith("extract-")))return Q;if(this.#Z==="v1")return x;let J=Y.tool_calls.filter((K)=>!K.name.startsWith("extract-"));if(J.length===0)return Q;return J.map((K)=>new M(x,{...Z,lg_tool_call:K}))}}#W(Q,Z,Y,J=Q.length>0){let K=Boolean(this.options.responseFormat);return(G)=>{let V=G,U=V.messages,W=U.at(-1);if(q.isInstance(W)&&(!W.tool_calls||W.tool_calls.length===0))return Y;if(Z&&V.jumpTo){let _=g(V.jumpTo);if(_===k)return Y;if(_===x){if(!J)return Y;return new M(x,{...G,jumpTo:void 0})}return new M(y,{...G,jumpTo:void 0})}let z=U.filter(P.isInstance),F=U.filter(q.isInstance).at(-1),j=F?.tool_calls?.filter((_)=>!z.some((R)=>R.tool_call_id===_.id));if(j&&j.length>0)return j.map((_)=>new M(x,{...G,lg_tool_call:_}));let B=F?.tool_calls?.some((_)=>_.name.startsWith("extract-"));if(j&&j.length===0&&!B&&K)return y;if(!q.isInstance(W)||!W.tool_calls||W.tool_calls.length===0)return Y;let A=W.tool_calls.every((_)=>_.name.startsWith("extract-")),E=W.tool_calls.some((_)=>!_.name.startsWith("extract-"));if(A||!E)return Y;return x}}#K(Q,Z,Y,J=Q.length>0){let K=new Set(Z.map((G)=>g(G)));return(G)=>{let V=G;if(V.jumpTo){let U=g(V.jumpTo);if(U===k&&K.has(k))return k;if(U===x&&K.has(x)){if(!J)return k;return new M(x,{...G,jumpTo:void 0})}if(U===y&&K.has(y))return new M(y,{...G,jumpTo:void 0})}return Y}}#H(Q,Z,Y,J=Q.length>0){return(K)=>{let G=K;if(!G.jumpTo)return Z;let V=g(G.jumpTo);if(V===k)return Y;if(V===x){if(!J)return Y;return new M(x,{...K,jumpTo:void 0})}return new M(y,{...K,jumpTo:void 0})}}#B(Q,Z,Y=Q.length>0){return(J)=>{let K=J;if(!K.jumpTo)return Z;let G=g(K.jumpTo);if(G===k)return k;if(G===x){if(!Y)return k;return new M(x,{...J,jumpTo:void 0})}return new M(y,{...J,jumpTo:void 0})}}async#U(Q,Z){if(!this.options.middleware||this.options.middleware.length===0||Q instanceof T||!Q)return Q;let Y=await q8(this.options.middleware,Q),J={...(await this.#X.getState(Z).catch(()=>({values:{}}))).values,...Q};if(!J)return J;for(let[K,G]of Object.entries(Y))if(!(K in J))J[K]=G;return J}async invoke(Q,Z){let Y=o(this.#Y,Z),J=await this.#U(Q,Y);return this.#X.invoke(J,Y)}async stream(Q,Z){let Y=o(this.#Y,Z),J=await this.#U(Q,Y);return this.#X.stream(J,Y)}async drawMermaidPng(Q){let Z=await(await(await this.#X.getGraphAsync()).drawMermaidPng(Q)).arrayBuffer();return new Uint8Array(Z)}async drawMermaid(Q){return(await this.#X.getGraphAsync()).drawMermaid(Q)}streamEvents(Q,Z,Y){let J=o(this.#Y,Z);return this.#X.streamEvents(Q,{...J,version:Z?.version??"v2"},Y)}getGraphAsync(Q){return this.#X.getGraphAsync(Q)}getState(Q,Z){return this.#X.getState(Q,Z)}getStateHistory(Q,Z){return this.#X.getStateHistory(Q,Z)}getSubgraphs(Q,Z){return this.#X.getSubgraphs(Q,Z)}getSubgraphAsync(Q,Z){return this.#X.getSubgraphsAsync(Q,Z)}updateState(Q,Z,Y){return this.#X.updateState(Q,Z,Y)}get builder(){return this.#X.builder}};function $6(X){return new M8(X)}var W6=$.function().args($.custom(),$.custom(),$.custom()).returns($.union([$.string(),$.promise($.string())])),G6=["approve","edit","reject"],V6=$.enum(G6),H6=$.object({allowedDecisions:$.array(V6),description:$.union([$.string(),W6]).optional(),argsSchema:$.record($.any()).optional()}),h1=$.object({interruptOn:$.record($.union([$.boolean(),H6])).optional(),descriptionPrefix:$.string().default("Tool execution requires approval")});var j6=`<role>
|
|
28
|
+
Context Extraction Assistant
|
|
29
|
+
</role>
|
|
30
|
+
|
|
31
|
+
<primary_objective>
|
|
32
|
+
Your sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.
|
|
33
|
+
</primary_objective>
|
|
34
|
+
|
|
35
|
+
<objective_information>
|
|
36
|
+
You're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.
|
|
37
|
+
This context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.
|
|
38
|
+
</objective_information>
|
|
39
|
+
|
|
40
|
+
<instructions>
|
|
41
|
+
The conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.
|
|
42
|
+
You want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.
|
|
43
|
+
</instructions>
|
|
44
|
+
|
|
45
|
+
The user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:
|
|
46
|
+
|
|
47
|
+
With all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.
|
|
48
|
+
Respond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.
|
|
49
|
+
|
|
50
|
+
<messages>
|
|
51
|
+
Messages to summarize:
|
|
52
|
+
{messages}
|
|
53
|
+
</messages>`;var z6=$.function().args($.array($.custom())).returns($.union([$.number(),$.promise($.number())])),L0=$.object({fraction:$.number().gt(0,"Fraction must be greater than 0").max(1,"Fraction must be less than or equal to 1").optional(),tokens:$.number().positive("Tokens must be greater than 0").optional(),messages:$.number().int("Messages must be an integer").positive("Messages must be greater than 0").optional()}).refine((X)=>{return[X.fraction,X.tokens,X.messages].filter((Q)=>Q!==void 0).length>=1},{message:"At least one of fraction, tokens, or messages must be provided"}),r0=$.object({fraction:$.number().min(0,"Messages must be non-negative").max(1,"Fraction must be less than or equal to 1").optional(),tokens:$.number().min(0,"Tokens must be greater than or equal to 0").optional(),messages:$.number().int("Messages must be an integer").min(0,"Messages must be non-negative").optional()}).refine((X)=>{return[X.fraction,X.tokens,X.messages].filter((Q)=>Q!==void 0).length===1},{message:"Exactly one of fraction, tokens, or messages must be provided"}),t1=$.object({model:$.custom(),trigger:$.union([L0,$.array(L0)]).optional(),keep:r0.optional(),tokenCounter:z6.optional(),summaryPrompt:$.string().default(j6),trimTokensToSummarize:$.number().optional(),summaryPrefix:$.string().optional(),maxTokensBeforeSummary:$.number().optional(),messagesToKeep:$.number().optional()});function a0(X){if("profile"in X&&typeof X.profile==="object"&&X.profile&&"maxInputTokens"in X.profile&&(typeof X.profile.maxInputTokens==="number"||X.profile.maxInputTokens==null))return X.profile.maxInputTokens??void 0;if("model"in X&&typeof X.model==="string")return n0(X.model);if("modelName"in X&&typeof X.modelName==="string")return n0(X.modelName)}var GX=$.object({model:$.string().or($.instanceof(f8)).optional(),systemPrompt:$.string().optional(),maxTools:$.number().optional(),alwaysInclude:$.array($.string()).optional()});var DX=$.object({applyToInput:$.boolean().optional(),applyToOutput:$.boolean().optional(),applyToToolResults:$.boolean().optional()});var vX=$.object({rules:$.record($.string(),$.instanceof(RegExp).describe("Regular expression pattern to match PII")).optional()});var D6="[cleared]",P6=1e5,A0=3,u8=class{#X;trigger;keep;clearToolInputs;excludeTools;placeholder;model;clearAtLeast;constructor(X={}){let Q=X.trigger;if(X.triggerTokens!==void 0){if(console.warn("triggerTokens is deprecated. Use `trigger: { tokens: value }` instead."),Q===void 0)Q={tokens:X.triggerTokens}}let Z=X.keep;if(X.keepMessages!==void 0){if(console.warn("keepMessages is deprecated. Use `keep: { messages: value }` instead."),Z===void 0)Z={messages:X.keepMessages}}if(Q===void 0)Q={tokens:P6};if(Z===void 0)Z={messages:A0};if(Array.isArray(Q))this.#X=Q.map((Y)=>L0.parse(Y)),this.trigger=this.#X;else{let Y=L0.parse(Q);this.#X=[Y],this.trigger=Y}if(this.keep=r0.parse(Z),X.clearAtLeast!==void 0)console.warn("clearAtLeast is deprecated and will be removed in a future version. It conflicts with the `keep` property. Use `keep: { tokens: value }` or `keep: { messages: value }` instead to control retention.");this.clearAtLeast=X.clearAtLeast??0,this.clearToolInputs=X.clearToolInputs??!1,this.excludeTools=new Set(X.excludeTools??[]),this.placeholder=X.placeholder??D6}async apply(X){let{messages:Q,model:Z,countTokens:Y}=X,J=await Y(Q),K=[];for(let j=0;j<Q.length;j++){let B=Q[j];if(P.isInstance(B)){let A=this.#Q(Q.slice(0,j),B.tool_call_id);if(!A)K.push(j);else if(!A.tool_calls?.find((E)=>E.id===B.tool_call_id))K.push(j)}}for(let j=K.length-1;j>=0;j--)Q.splice(K[j],1);let G=J;if(K.length>0)G=await Y(Q);if(!this.#Z(Q,G,Z))return;let V=[];for(let j=0;j<Q.length;j++){let B=Q[j];if(P.isInstance(B))V.push({idx:j,msg:B})}if(V.length===0)return;let U=await this.#J(V,Y,Z),W=U>=V.length?[]:U>0?V.slice(0,-U):V,z=0,F=[...W];for(let{idx:j,msg:B}of F){if(B.response_metadata?.context_editing?.cleared)continue;let A=this.#Q(Q.slice(0,j),B.tool_call_id);if(!A)continue;let E=A.tool_calls?.find((O)=>O.id===B.tool_call_id);if(!E)continue;let _=B.name||E.name;if(this.excludeTools.has(_))continue;if(Q[j]=new P({tool_call_id:B.tool_call_id,content:this.placeholder,name:B.name,artifact:void 0,response_metadata:{...B.response_metadata,context_editing:{cleared:!0,strategy:"clear_tool_uses"}}}),this.clearToolInputs){let O=Q.indexOf(A);if(O>=0)Q[O]=this.#Y(A,B.tool_call_id)}let R=await Y(Q);z=Math.max(0,G-R)}if(this.clearAtLeast>0&&z<this.clearAtLeast){let j=U>0&&U<V.length?V.slice(-U):[];for(let B=j.length-1;B>=0;B--){if(z>=this.clearAtLeast)break;let{idx:A,msg:E}=j[B];if(E.response_metadata?.context_editing?.cleared)continue;let _=this.#Q(Q.slice(0,A),E.tool_call_id);if(!_)continue;let R=_.tool_calls?.find((C)=>C.id===E.tool_call_id);if(!R)continue;let O=E.name||R.name;if(this.excludeTools.has(O))continue;if(Q[A]=new P({tool_call_id:E.tool_call_id,content:this.placeholder,name:E.name,artifact:void 0,response_metadata:{...E.response_metadata,context_editing:{cleared:!0,strategy:"clear_tool_uses"}}}),this.clearToolInputs){let C=Q.indexOf(_);if(C>=0)Q[C]=this.#Y(_,E.tool_call_id)}let m=await Y(Q);z=Math.max(0,G-m)}}}#Z(X,Q,Z){for(let Y of this.#X){let J=!0,K=!1;if(Y.messages!==void 0){if(K=!0,X.length<Y.messages)J=!1}if(Y.tokens!==void 0){if(K=!0,Q<Y.tokens)J=!1}if(Y.fraction!==void 0){if(K=!0,!Z)continue;let G=a0(Z);if(typeof G==="number"){let V=Math.floor(G*Y.fraction);if(V<=0)continue;if(Q<V)J=!1}else continue}if(K&&J)return!0}return!1}async#J(X,Q,Z){if("messages"in this.keep&&this.keep.messages!==void 0)return this.keep.messages;if("tokens"in this.keep&&this.keep.tokens!==void 0){let Y=this.keep.tokens,J=0,K=0;for(let G=X.length-1;G>=0;G--){let V=X[G],U=await Q([V.msg]);if(J+U<=Y)J+=U,K++;else break}return K}if("fraction"in this.keep&&this.keep.fraction!==void 0){if(!Z)return A0;let Y=a0(Z);if(typeof Y==="number"){let J=Math.floor(Y*this.keep.fraction);if(J<=0)return A0;let K=0,G=0;for(let V=X.length-1;V>=0;V--){let U=X[V],W=await Q([U.msg]);if(K+W<=J)K+=W,G++;else break}return G}}return A0}#Q(X,Q){for(let Z=X.length-1;Z>=0;Z--){let Y=X[Z];if(q.isInstance(Y)){if(Y.tool_calls?.some((J)=>J.id===Q))return Y}}return null}#Y(X,Q){let Z=X.tool_calls?.map((G)=>{if(G.id===Q)return{...G,args:{}};return G}),Y={...X.response_metadata},J={...Y.context_editing},K=new Set(J.cleared_tool_inputs);return K.add(Q),J.cleared_tool_inputs=Array.from(K).sort(),Y.context_editing=J,new q({content:X.content,tool_calls:Z,response_metadata:Y,id:X.id,name:X.name,additional_kwargs:X.additional_kwargs})}};var L6=["continue","error","end"],q6="continue";var _6=$.enum(L6).default(q6);var AX=$.object({toolName:$.string().optional(),threadLimit:$.number().optional(),runLimit:$.number().optional(),exitBehavior:_6}),NX=$.object({threadToolCallCount:$.record($.string(),$.number()).default({}),runToolCallCount:$.record($.string(),$.number()).default({})});var F6=$.enum(["pending","in_progress","completed"]).describe("Status of the todo"),b6=$.object({content:$.string().describe("Content of the todo item"),status:F6}),pX=$.object({todos:$.array(b6).default([])});var iX=$.object({threadLimit:$.number().optional(),runLimit:$.number().optional(),exitBehavior:$.enum(["error","end"]).optional()}),nX=$.object({threadModelCallCount:$.number().default(0),runModelCallCount:$.number().default(0)});var N0=$.object({maxRetries:$.number().min(0).default(2),retryOn:$.union([$.function().args($.instanceof(Error)).returns($.boolean()),$.array($.custom())]).default(()=>()=>!0),backoffFactor:$.number().min(0).default(2),initialDelayMs:$.number().min(0).default(1000),maxDelayMs:$.number().min(0).default(60000),jitter:$.boolean().default(!0)});var $Q=$.object({onFailure:$.union([$.literal("error"),$.literal("continue"),$.function().args($.instanceof(Error)).returns($.string())]).default("continue")}).merge(N0);var zQ=$.object({tools:$.array($.union([$.custom(),$.custom(),$.string()])).optional(),onFailure:$.union([$.literal("error"),$.literal("continue"),$.literal("raise"),$.literal("return_message"),$.function().args($.instanceof(Error)).returns($.string())]).default("continue")}).merge(N0);var EQ=$.object({enableCaching:$.boolean().optional(),ttl:$.enum(["5m","1h"]).optional(),minMessagesToCache:$.number().optional(),unsupportedModelBehavior:$.enum(["ignore","warn","raise"]).optional()});
|
|
54
|
+
export{S as hg,$6 as ig};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as A,b as W}from"./chunk-8tbtavry.js";import"./chunk-spa69h7p.js";import{Dg as q,Yg as R}from"./chunk-hp2jzn9x.js";import"./chunk-nk62q95g.js";import"./chunk-nmzx5nmt.js";import"./chunk-tjg2e8v3.js";import"./chunk-hve2a279.js";import{Dl as V}from"./chunk-y8qhrx11.js";var x=V(W(),1);function B(M){if(M===null||typeof M!=="object")return JSON.stringify(M);if(Array.isArray(M))return JSON.stringify(M.map((J)=>B(J)));let F={},G=Object.keys(M).sort();for(let J of G)F[J]=M[J];return JSON.stringify(F,(J,Q)=>{if(Q!==null&&typeof Q==="object"&&!Array.isArray(Q)){let X={},Y=Object.keys(Q).sort();for(let Z of Y)X[Z]=Q[Z];return X}return Q})}var P=[{index:"checkpoints",prefix:"checkpoint:",schema:{"$.thread_id":{type:"TAG",AS:"thread_id"},"$.checkpoint_ns":{type:"TAG",AS:"checkpoint_ns"},"$.checkpoint_id":{type:"TAG",AS:"checkpoint_id"},"$.parent_checkpoint_id":{type:"TAG",AS:"parent_checkpoint_id"},"$.checkpoint_ts":{type:"NUMERIC",AS:"checkpoint_ts"},"$.has_writes":{type:"TAG",AS:"has_writes"},"$.source":{type:"TAG",AS:"source"},"$.step":{type:"NUMERIC",AS:"step"}}},{index:"checkpoint_writes",prefix:"checkpoint_write:",schema:{"$.thread_id":{type:"TAG",AS:"thread_id"},"$.checkpoint_ns":{type:"TAG",AS:"checkpoint_ns"},"$.checkpoint_id":{type:"TAG",AS:"checkpoint_id"},"$.task_id":{type:"TAG",AS:"task_id"},"$.idx":{type:"NUMERIC",AS:"idx"},"$.channel":{type:"TAG",AS:"channel"},"$.type":{type:"TAG",AS:"type"}}}],N=class M extends R{client;ttlConfig;constructor(F,G){super();this.client=F,this.ttlConfig=G}static async fromUrl(F,G){let J=x.createClient({url:F});await J.connect();let Q=new M(J,G);return await Q.ensureIndexes(),Q}async get(F){return(await this.getTuple(F))?.checkpoint}async put(F,G,J,Q){await this.ensureIndexes();let X=F.configurable?.thread_id,Y=F.configurable?.checkpoint_ns??"",Z=F.configurable?.checkpoint_id;if(!X)throw Error("thread_id is required");let _=G.id||q(0),E=`checkpoint:${X}:${Y}:shallow`,H=null,$=null;try{if(H=await this.client.json.get(E),H&&typeof H==="object")$=H.checkpoint_id}catch(O){}if($&&$!==_)await this.cleanupOldCheckpoint(X,Y,$);let L={...G,channel_values:G.channel_values||{},channel_blobs:void 0},U={thread_id:X,checkpoint_ns:Y,checkpoint_id:_,parent_checkpoint_id:Z||null,checkpoint:L,metadata:this.sanitizeMetadata(J),checkpoint_ts:Date.now(),has_writes:"false"};if(this.addSearchableMetadataFields(U,J),await this.client.json.set(E,"$",U),this.ttlConfig?.defaultTTL)await this.applyTTL(E);return{configurable:{thread_id:X,checkpoint_ns:Y,checkpoint_id:_}}}async getTuple(F){let G=F.configurable?.thread_id,J=F.configurable?.checkpoint_ns??"",Q=F.configurable?.checkpoint_id;if(!G)return;let X=`checkpoint:${G}:${J}:shallow`,Y=await this.client.json.get(X);if(!Y)return;if(Q&&Y.checkpoint_id!==Q)return;if(this.ttlConfig?.refreshOnRead&&this.ttlConfig?.defaultTTL)await this.applyTTL(X);let Z=await this.serde.loadsTyped("json",JSON.stringify(Y.checkpoint)),_;if(Y.has_writes==="true")_=await this.loadPendingWrites(Y.thread_id,Y.checkpoint_ns,Y.checkpoint_id);return await this.createCheckpointTuple(Y,Z,_)}async*list(F,G){if(await this.ensureIndexes(),F?.configurable?.thread_id){let J=await this.getTuple(F);if(J)if(G?.filter){if(this.checkMetadataFilterMatch(J.metadata,G.filter))yield J}else yield J}else{let J=[];if(G?.filter){for(let[Y,Z]of Object.entries(G.filter))if(Z===void 0);else if(Z===null);else if(typeof Z==="string"){let _=A(Y),E=A(Z);J.push(`(@${_}:{${E}})`)}else if(typeof Z==="number"){let _=A(Y);J.push(`(@${_}:[${Z} ${Z}])`)}}if(J.length===0)J.push("*");let Q=J.join(" "),X=G?.limit??10;try{let Y=await this.client.ft.search("checkpoints",Q,{LIMIT:{from:0,size:X*2},SORTBY:{BY:"checkpoint_ts",DIRECTION:"DESC"}}),Z=new Set,_=0;for(let E of Y.documents){if(_>=X)break;let H=E.value,$=`${H.thread_id}:${H.checkpoint_ns}`;if(Z.has($))continue;if(Z.add($),G?.filter){if(!this.checkMetadataFilterMatch(H.metadata,G.filter))continue}let L=await this.serde.loadsTyped("json",JSON.stringify(H.checkpoint));yield await this.createCheckpointTuple(H,L),_++}}catch(Y){if(Y.message?.includes("no such index")){let Z=await this.client.keys("checkpoint:*:*:shallow");if(Z.length===0)return;Z.sort().reverse();let _=new Set,E=0,H=G?.limit??10;for(let $ of Z){if(E>=H)break;let L=await this.client.json.get($);if(!L)continue;let U=`${L.thread_id}:${L.checkpoint_ns}`;if(_.has(U))continue;if(_.add(U),G?.filter){if(!this.checkMetadataFilterMatch(L.metadata,G.filter))continue}let O=await this.serde.loadsTyped("json",JSON.stringify(L.checkpoint));yield await this.createCheckpointTuple(L,O),E++}return}throw Y}}}async putWrites(F,G,J){await this.ensureIndexes();let Q=F.configurable?.thread_id,X=F.configurable?.checkpoint_ns??"",Y=F.configurable?.checkpoint_id;if(!Q||!Y)throw Error("thread_id and checkpoint_id are required");let Z=`checkpoint_write:${Q}:${X}:${Y}:${J}:*`,_=await this.client.keys(Z);if(_.length>0)await this.client.del(_);let E=[];for(let $=0;$<G.length;$++){let[L,U]=G[$],O=`checkpoint_write:${Q}:${X}:${Y}:${J}:${$}`;E.push(O);let T={thread_id:Q,checkpoint_ns:X,checkpoint_id:Y,task_id:J,idx:$,channel:L,type:typeof U==="object"?"json":"string",value:U};await this.client.json.set(O,"$",T)}if(E.length>0){let $=`write_keys_zset:${Q}:${X}:${Y}`,L={};if(E.forEach((U,O)=>{L[U]=O}),await this.client.zAdd($,Object.entries(L).map(([U,O])=>({score:O,value:U}))),this.ttlConfig?.defaultTTL)await this.applyTTL(...E,$)}let H=`checkpoint:${Q}:${X}:shallow`;if(await this.client.exists(H)){let $=await this.client.json.get(H);if($)$.has_writes="true",await this.client.json.set(H,"$",$)}}async deleteThread(F){let G=`checkpoint:${F}:*:shallow`,J=await this.client.keys(G);if(J.length>0)await this.client.del(J);let Q=`checkpoint_write:${F}:*`,X=await this.client.keys(Q);if(X.length>0)await this.client.del(X);let Y=`write_keys_zset:${F}:*`,Z=await this.client.keys(Y);if(Z.length>0)await this.client.del(Z)}async end(){await this.client.quit()}addSearchableMetadataFields(F,G){if(!G)return;if("source"in G)F.source=G.source;if("step"in G)F.step=G.step;if("writes"in G)F.writes=typeof G.writes==="object"?JSON.stringify(G.writes):G.writes;if("score"in G)F.score=G.score}async createCheckpointTuple(F,G,J){let Q=await this.serde.loadsTyped("json",JSON.stringify(F.metadata));return{config:{configurable:{thread_id:F.thread_id,checkpoint_ns:F.checkpoint_ns,checkpoint_id:F.checkpoint_id}},checkpoint:G,metadata:Q,parentConfig:F.parent_checkpoint_id?{configurable:{thread_id:F.thread_id,checkpoint_ns:F.checkpoint_ns,checkpoint_id:F.parent_checkpoint_id}}:void 0,pendingWrites:J}}async applyTTL(...F){if(!this.ttlConfig?.defaultTTL)return;let G=Math.floor(this.ttlConfig.defaultTTL*60),J=await Promise.allSettled(F.map((Q)=>this.client.expire(Q,G)));for(let Q=0;Q<J.length;Q++)if(J[Q].status==="rejected")console.warn(`Failed to set TTL for key ${F[Q]}:`,J[Q].reason)}async loadPendingWrites(F,G,J){let Q=`write_keys_zset:${F}:${G}:${J}`,X=await this.client.zRange(Q,0,-1);if(X.length===0)return;let Y=[];for(let Z of X){let _=await this.client.json.get(Z);if(_){let E=await this.serde.loadsTyped("json",JSON.stringify(_.value));Y.push([_.task_id,_.channel,E])}}return Y}checkMetadataFilterMatch(F,G){for(let[J,Q]of Object.entries(G)){let X=F?.[J];if(Q===null){if(!(J in(F||{}))||X!==null)return!1}else if(typeof Q==="object"&&!Array.isArray(Q)){if(typeof X!=="object"||X===null)return!1;if(B(Q)!==B(X))return!1}else if(X!==Q)return!1}return!0}async cleanupOldCheckpoint(F,G,J){let Q=`checkpoint_write:${F}:${G}:${J}:*`,X=await this.client.keys(Q);if(X.length>0)await this.client.del(X);let Y=`write_keys_zset:${F}:${G}:${J}`;await this.client.del(Y);let Z=`checkpoint_blob:${F}:${G}:${J}:*`,_=await this.client.keys(Z);if(_.length>0)await this.client.del(_)}sanitizeMetadata(F){if(!F)return{};let G={};for(let[J,Q]of Object.entries(F)){let X=J.replace(/\x00/g,"");G[X]=typeof Q==="string"?Q.replace(/\x00/g,""):Q}return G}async ensureIndexes(){for(let F of P)try{await this.client.ft.create(F.index,F.schema,{ON:"JSON",PREFIX:F.prefix})}catch(G){if(!G.message?.includes("Index already exists"))console.error(`Failed to create index ${F.index}:`,G.message)}}};export{N as ShallowRedisSaver};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as W0}from"./chunk-pzb224c5.js";import{we as y1}from"./chunk-c7kd2qrp.js";import{gg as x1}from"./chunk-t6440ajd.js";import{Jk as S}from"./chunk-q1cxrg0x.js";import{tl as C}from"./chunk-tjg2e8v3.js";import{Dl as I0,Fl as J1}from"./chunk-y8qhrx11.js";var C0=J1((K1)=>{Object.defineProperty(K1,"__esModule",{value:!0});K1.Allow=K1.ALL=K1.COLLECTION=K1.ATOM=K1.SPECIAL=K1.INF=K1._INFINITY=K1.INFINITY=K1.NAN=K1.BOOL=K1.NULL=K1.OBJ=K1.ARR=K1.NUM=K1.STR=void 0;K1.STR=1;K1.NUM=2;K1.ARR=4;K1.OBJ=8;K1.NULL=16;K1.BOOL=32;K1.NAN=64;K1.INFINITY=128;K1._INFINITY=256;K1.INF=K1.INFINITY|K1._INFINITY;K1.SPECIAL=K1.NULL|K1.BOOL|K1.INF|K1.NAN;K1.ATOM=K1.STR|K1.NUM|K1.SPECIAL;K1.COLLECTION=K1.ARR|K1.OBJ;K1.ALL=K1.ATOM|K1.COLLECTION;K1.Allow={STR:K1.STR,NUM:K1.NUM,ARR:K1.ARR,OBJ:K1.OBJ,NULL:K1.NULL,BOOL:K1.BOOL,NAN:K1.NAN,INFINITY:K1.INFINITY,_INFINITY:K1._INFINITY,INF:K1.INF,SPECIAL:K1.SPECIAL,ATOM:K1.ATOM,COLLECTION:K1.COLLECTION,ALL:K1.ALL};K1.default=K1.Allow});var z1=J1((L)=>{var s1=L&&L.__createBinding||(Object.create?function(Y,X,Z,$){if($===void 0)$=Z;var B=Object.getOwnPropertyDescriptor(X,Z);if(!B||("get"in B?!X.__esModule:B.writable||B.configurable))B={enumerable:!0,get:function(){return X[Z]}};Object.defineProperty(Y,$,B)}:function(Y,X,Z,$){if($===void 0)$=Z;Y[$]=X[Z]}),t1=L&&L.__exportStar||function(Y,X){for(var Z in Y)if(Z!=="default"&&!Object.prototype.hasOwnProperty.call(X,Z))s1(X,Y,Z)};Object.defineProperty(L,"__esModule",{value:!0});L.Allow=L.MalformedJSON=L.PartialJSON=L.parseJSON=L.parse=void 0;var b=C0();Object.defineProperty(L,"Allow",{enumerable:!0,get:function(){return b.Allow}});t1(C0(),L);class S0 extends Error{}L.PartialJSON=S0;class h0 extends Error{}L.MalformedJSON=h0;function Q1(Y,X=b.Allow.ALL){if(typeof Y!=="string")throw TypeError(`expecting str, got ${typeof Y}`);if(!Y.trim())throw Error(`${Y} is empty`);return a1(Y.trim(),X)}L.parseJSON=Q1;var a1=(Y,X)=>{let Z=Y.length,$=0,B=(D)=>{throw new S0(`${D} at position ${$}`)},W=(D)=>{throw new h0(`${D} at position ${$}`)},J=()=>{if(F(),$>=Z)B("Unexpected end of input");if(Y[$]==='"')return V();if(Y[$]==="{")return K();if(Y[$]==="[")return Q();if(Y.substring($,$+4)==="null"||b.Allow.NULL&X&&Z-$<4&&"null".startsWith(Y.substring($)))return $+=4,null;if(Y.substring($,$+4)==="true"||b.Allow.BOOL&X&&Z-$<4&&"true".startsWith(Y.substring($)))return $+=4,!0;if(Y.substring($,$+5)==="false"||b.Allow.BOOL&X&&Z-$<5&&"false".startsWith(Y.substring($)))return $+=5,!1;if(Y.substring($,$+8)==="Infinity"||b.Allow.INFINITY&X&&Z-$<8&&"Infinity".startsWith(Y.substring($)))return $+=8,1/0;if(Y.substring($,$+9)==="-Infinity"||b.Allow._INFINITY&X&&1<Z-$&&Z-$<9&&"-Infinity".startsWith(Y.substring($)))return $+=9,-1/0;if(Y.substring($,$+3)==="NaN"||b.Allow.NAN&X&&Z-$<3&&"NaN".startsWith(Y.substring($)))return $+=3,NaN;return G()},V=()=>{let D=$,N=!1;$++;while($<Z&&(Y[$]!=='"'||N&&Y[$-1]==="\\"))N=Y[$]==="\\"?!N:!1,$++;if(Y.charAt($)=='"')try{return JSON.parse(Y.substring(D,++$-Number(N)))}catch(U){W(String(U))}else if(b.Allow.STR&X)try{return JSON.parse(Y.substring(D,$-Number(N))+'"')}catch(U){return JSON.parse(Y.substring(D,Y.lastIndexOf("\\"))+'"')}B("Unterminated string literal")},K=()=>{$++,F();let D={};try{while(Y[$]!=="}"){if(F(),$>=Z&&b.Allow.OBJ&X)return D;let N=V();F(),$++;try{let U=J();D[N]=U}catch(U){if(b.Allow.OBJ&X)return D;else throw U}if(F(),Y[$]===",")$++}}catch(N){if(b.Allow.OBJ&X)return D;else B("Expected '}' at end of object")}return $++,D},Q=()=>{$++;let D=[];try{while(Y[$]!=="]")if(D.push(J()),F(),Y[$]===",")$++}catch(N){if(b.Allow.ARR&X)return D;B("Expected ']' at end of array")}return $++,D},G=()=>{if($===0){if(Y==="-")W("Not sure what '-' is");try{return JSON.parse(Y)}catch(N){if(b.Allow.NUM&X)try{return JSON.parse(Y.substring(0,Y.lastIndexOf("e")))}catch(U){}W(String(N))}}let D=$;if(Y[$]==="-")$++;while(Y[$]&&",]}".indexOf(Y[$])===-1)$++;if($==Z&&!(b.Allow.NUM&X))B("Unterminated number literal");try{return JSON.parse(Y.substring(D,$))}catch(N){if(Y.substring(D,$)==="-")B("Not sure what '-' is");try{return JSON.parse(Y.substring(D,Y.lastIndexOf("e")))}catch(U){W(String(U))}}},F=()=>{while($<Z&&`
|
|
2
|
+
\r `.includes(Y[$]))$++};return J()},o1=Q1;L.parse=o1});var R=I0(y1(),1);var W1=Symbol("clean");var v=[],g=0,Y0=4,i1=0,f=(Y)=>{let X=[],Z={get(){if(!Z.lc)Z.listen(()=>{})();return Z.value},lc:0,listen($){return Z.lc=X.push($),()=>{for(let W=g+Y0;W<v.length;)if(v[W]===$)v.splice(W,Y0);else W+=Y0;let B=X.indexOf($);if(~B){if(X.splice(B,1),!--Z.lc)Z.off()}}},notify($,B){i1++;let W=!v.length;for(let J of X)v.push(J,Z.value,$,B);if(W){for(g=0;g<v.length;g+=Y0)v[g](v[g+1],v[g+2],v[g+3]);v.length=0}},off(){},set($){let B=Z.value;if(B!==$)Z.value=$,Z.notify(B)},subscribe($){let B=Z.listen($);return $(Z.value),B},value:Y};return Z[W1]=()=>{X=[],Z.lc=0,Z.off()},Z};var _0=(Y,X)=>{if(!Array.isArray(Y))Y=[Y];let Z=[],$,B=()=>{$&&$();let W=Y.map((J)=>J.get());$=X(...W)};return Z=Y.map((W)=>W.listen(B)),B(),()=>{Z.forEach((W)=>W()),$&&$()}};function O0(Y,X,Z){let $=new Set(X).add(void 0);return Y.listen((B,W,J)=>{if($.has(J))Z(B,W,J)})}var f0=function(Y,X,Z){var $,B,W;X===void 0&&(X=50),Z===void 0&&(Z={});var J=($=Z.isImmediate)!=null&&$,V=(B=Z.callback)!=null&&B,K=Z.maxWait,Q=Date.now(),G=[];function F(){if(K!==void 0){var N=Date.now()-Q;if(N+X>=K)return K-N}return X}var D=function(){var N=[].slice.call(arguments),U=this;return new Promise(function(_,P){var q=J&&W===void 0;if(W!==void 0&&clearTimeout(W),W=setTimeout(function(){if(W=void 0,Q=Date.now(),!J){var M=Y.apply(U,N);V&&V(M),G.forEach(function(h){return(0,h.resolve)(M)}),G=[]}},F()),q){var E=Y.apply(U,N);return V&&V(E),_(E)}G.push({resolve:_,reject:P})})};return D.cancel=function(N){W!==void 0&&clearTimeout(W),G.forEach(function(U){return(0,U.reject)(N)}),G=[]},D};var Z0=I0(z1(),1);var X0=(Y)=>{return Y.name+JSON.stringify(Y.args)};class o{message;client;constructor(Y,X){this.message=Y,this.client=X}getToolActionRequestID(){return X0({name:this.message.name,args:this.getInputRepaired()})}getHumanInTheLoopData(){let Y=this.getToolActionRequestID();if(!this.client.humanInTheLoop)return null;let X=this.client.humanInTheLoop.interruptData.find(($)=>$.value.actionRequests.some((B)=>B.id===Y));if(!X)return null;let Z=X.value.actionRequests.findIndex(($)=>$.id===Y);if(Z===-1)return null;return{actionRequestIndex:Z,config:X,reviewConfig:X.value.reviewConfigs.find(($)=>$.actionName===X.value.actionRequests[Z].name),actionRequest:X.value.actionRequests[Z],result:this.client.humanInTheLoop.result[Y]}}sendResumeData(Y){if(Y.type==="edit")Y.editedAction=Y.edited_action;return this.client.doneHumanInTheLoopWaiting(this.message.id,this.getToolActionRequestID(),Y)}get state(){if(this.message.type==="tool"&&this.message?.additional_kwargs?.done)return"done";let Y=this.getHumanInTheLoopData();if(Y?.result)return"done";if(this.client.status==="interrupted"&&Y?.actionRequest)return"interrupted";if(this.message.tool_input)return"loading";return"idle"}get input(){try{return JSON.parse(this.message.tool_input)}catch(Y){return null}}get output(){return G1(this.message.content)}getJSONOutput(){return JSON.parse(this.output)}getJSONOutputSafe(){try{return JSON.parse(this.output)}catch(Y){return null}}getInputRepaired(){try{return Z0.parse(this.message.tool_input||"",Z0.Allow.ALL)}catch(Y){return{}}}response(Y){this.client.doneFEToolWaiting(this.message.id,JSON.stringify(Y))}}var e1=(...Y)=>fetch(...Y),YY=Symbol.for("lg:fetch_implementation");var D1=()=>{return globalThis[YY]??e1};var XY=Object.prototype.toString,ZY=(Y)=>XY.call(Y)==="[object Error]",$Y=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function y0(Y){if(!(Y&&ZY(Y)&&Y.name==="TypeError"&&typeof Y.message==="string"))return!1;let{message:Z,stack:$}=Y;if(Z==="Load failed")return $===void 0||"__sentry_captured__"in Y;if(Z.startsWith("error sending request for url"))return!0;return $Y.has(Z)}function BY(Y){if(typeof Y==="number"){if(Y<0)throw TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(Y))throw TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(Y!==void 0)throw TypeError("Expected `retries` to be a number or Infinity.")}function $0(Y,X,{min:Z=0,allowInfinity:$=!1}={}){if(X===void 0)return;if(typeof X!=="number"||Number.isNaN(X))throw TypeError(`Expected \`${Y}\` to be a number${$?" or Infinity":""}.`);if(!$&&!Number.isFinite(X))throw TypeError(`Expected \`${Y}\` to be a finite number.`);if(X<Z)throw TypeError(`Expected \`${Y}\` to be ≥ ${Z}.`)}class H1 extends Error{constructor(Y){super();if(Y instanceof Error)this.originalError=Y,{message:Y}=Y;else this.originalError=Error(Y),this.originalError.stack=this.stack;this.name="AbortError",this.message=Y}}function WY(Y,X){let Z=Math.max(1,Y+1),$=X.randomize?Math.random()+1:1,B=Math.round($*X.minTimeout*X.factor**(Z-1));return B=Math.min(B,X.maxTimeout),B}function F1(Y,X){if(!Number.isFinite(X))return X;return X-(performance.now()-Y)}async function JY({error:Y,attemptNumber:X,retriesConsumed:Z,startTime:$,options:B}){let W=Y instanceof Error?Y:TypeError(`Non-error was thrown: "${Y}". You should only throw errors.`);if(W instanceof H1)throw W.originalError;let J=Number.isFinite(B.retries)?Math.max(0,B.retries-Z):B.retries,V=B.maxRetryTime??Number.POSITIVE_INFINITY,K=Object.freeze({error:W,attemptNumber:X,retriesLeft:J,retriesConsumed:Z});if(await B.onFailedAttempt(K),F1($,V)<=0)throw W;let Q=await B.shouldConsumeRetry(K),G=F1($,V);if(G<=0||J<=0)throw W;if(W instanceof TypeError&&!y0(W)){if(Q)throw W;return B.signal?.throwIfAborted(),!1}if(!await B.shouldRetry(K))throw W;if(!Q)return B.signal?.throwIfAborted(),!1;let F=WY(Z,B),D=Math.min(F,G);if(B.signal?.throwIfAborted(),D>0)await new Promise((N,U)=>{let _=()=>{clearTimeout(P),B.signal?.removeEventListener("abort",_),U(B.signal.reason)},P=setTimeout(()=>{B.signal?.removeEventListener("abort",_),N()},D);if(B.unref)P.unref?.();B.signal?.addEventListener("abort",_,{once:!0})});return B.signal?.throwIfAborted(),!0}async function g0(Y,X={}){if(X={...X},BY(X.retries),Object.hasOwn(X,"forever"))throw Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");if(X.retries??=10,X.factor??=2,X.minTimeout??=1000,X.maxTimeout??=Number.POSITIVE_INFINITY,X.maxRetryTime??=Number.POSITIVE_INFINITY,X.randomize??=!1,X.onFailedAttempt??=()=>{},X.shouldRetry??=()=>!0,X.shouldConsumeRetry??=()=>!0,$0("factor",X.factor,{min:0,allowInfinity:!1}),$0("minTimeout",X.minTimeout,{min:0,allowInfinity:!1}),$0("maxTimeout",X.maxTimeout,{min:0,allowInfinity:!0}),$0("maxRetryTime",X.maxRetryTime,{min:0,allowInfinity:!0}),!(X.factor>0))X.factor=1;X.signal?.throwIfAborted();let Z=0,$=0,B=performance.now();while(Number.isFinite(X.retries)?$<=X.retries:!0){Z++;try{X.signal?.throwIfAborted();let W=await Y(Z);return X.signal?.throwIfAborted(),W}catch(W){if(await JY({error:W,attemptNumber:Z,retriesConsumed:$,startTime:B,options:X}))$++}}throw Error("Retry attempts exhausted without throwing an error.")}class m0 extends Error{name="TimeoutError";constructor(Y,X){super(Y,X);Error.captureStackTrace?.(this,m0)}}var N1=(Y)=>Y.reason??new DOMException("This operation was aborted.","AbortError");function u0(Y,X){let{milliseconds:Z,fallback:$,message:B,customTimers:W={setTimeout,clearTimeout},signal:J}=X,V,K,G=new Promise((F,D)=>{if(typeof Z!=="number"||Math.sign(Z)!==1)throw TypeError(`Expected \`milliseconds\` to be a positive number, got \`${Z}\``);if(J?.aborted){D(N1(J));return}if(J)K=()=>{D(N1(J))},J.addEventListener("abort",K,{once:!0});if(Y.then(F,D),Z===Number.POSITIVE_INFINITY)return;let N=new m0;V=W.setTimeout.call(void 0,()=>{if($){try{F($())}catch(U){D(U)}return}if(typeof Y.cancel==="function")Y.cancel();if(B===!1)F();else if(B instanceof Error)D(B);else N.message=B??`Promise timed out after ${Z} milliseconds`,D(N)},Z)}).finally(()=>{if(G.clear(),K&&J)J.removeEventListener("abort",K)});return G.clear=()=>{W.clearTimeout.call(void 0,V),V=void 0},G}function c0(Y,X,Z){let $=0,B=Y.length;while(B>0){let W=Math.trunc(B/2),J=$+W;if(Z(Y[J],X)<=0)$=++J,B-=W+1;else B=W}return $}class B0{#Z=[];enqueue(Y,X){let{priority:Z=0,id:$}=X??{},B={priority:Z,id:$,run:Y};if(this.size===0||this.#Z[this.size-1].priority>=Z){this.#Z.push(B);return}let W=c0(this.#Z,B,(J,V)=>V.priority-J.priority);this.#Z.splice(W,0,B)}setPriority(Y,X){let Z=this.#Z.findIndex((B)=>B.id===Y);if(Z===-1)throw ReferenceError(`No promise function with the id "${Y}" exists in the queue.`);let[$]=this.#Z.splice(Z,1);this.enqueue($.run,{priority:X,id:Y})}dequeue(){return this.#Z.shift()?.run}filter(Y){return this.#Z.filter((X)=>X.priority===Y.priority).map((X)=>X.run)}get size(){return this.#Z.length}}class d extends W0.default{#Z;#Y;#X=0;#Q;#H=!1;#D=!1;#z;#J=0;#_=0;#G;#F;#V;#K=[];#B=0;#$;#M;#W=0;#f;#N;#k=1n;#A=new Map;timeout;constructor(Y){super();if(Y={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:B0,strict:!1,...Y},!(typeof Y.intervalCap==="number"&&Y.intervalCap>=1))throw TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${Y.intervalCap?.toString()??""}\` (${typeof Y.intervalCap})`);if(Y.interval===void 0||!(Number.isFinite(Y.interval)&&Y.interval>=0))throw TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${Y.interval?.toString()??""}\` (${typeof Y.interval})`);if(Y.strict&&Y.interval===0)throw TypeError("The `strict` option requires a non-zero `interval`");if(Y.strict&&Y.intervalCap===Number.POSITIVE_INFINITY)throw TypeError("The `strict` option requires a finite `intervalCap`");if(this.#Z=Y.carryoverIntervalCount??Y.carryoverConcurrencyCount??!1,this.#Y=Y.intervalCap===Number.POSITIVE_INFINITY||Y.interval===0,this.#Q=Y.intervalCap,this.#z=Y.interval,this.#V=Y.strict,this.#$=new Y.queueClass,this.#M=Y.queueClass,this.concurrency=Y.concurrency,Y.timeout!==void 0&&!(Number.isFinite(Y.timeout)&&Y.timeout>0))throw TypeError(`Expected \`timeout\` to be a positive finite number, got \`${Y.timeout}\` (${typeof Y.timeout})`);this.timeout=Y.timeout,this.#N=Y.autoStart===!1,this.#m()}#P(Y){while(this.#B<this.#K.length){let Z=this.#K[this.#B];if(Z!==void 0&&Y-Z>=this.#z)this.#B++;else break}if(this.#B>100&&this.#B>this.#K.length/2||this.#B===this.#K.length)this.#K=this.#K.slice(this.#B),this.#B=0}#v(Y){if(this.#V)this.#K.push(Y);else this.#X++}#C(){if(this.#V){if(this.#K.length>this.#B)this.#K.pop()}else if(this.#X>0)this.#X--}#L(){return this.#K.length-this.#B}get#S(){if(this.#Y)return!0;if(this.#V)return this.#L()<this.#Q;return this.#X<this.#Q}get#h(){return this.#W<this.#f}#I(){if(this.#W--,this.#W===0)this.emit("pendingZero");this.#b(),this.emit("next")}#y(){this.#F=void 0,this.#x(),this.#T()}#g(Y){if(this.#V){if(this.#P(Y),this.#L()>=this.#Q){let Z=this.#K[this.#B],$=this.#z-(Y-Z);return this.#E($),!0}return!1}if(this.#G===void 0){let X=this.#J-Y;if(X<0){if(this.#_>0){let Z=Y-this.#_;if(Z<this.#z)return this.#E(this.#z-Z),!0}this.#X=this.#Z?this.#W:0}else return this.#E(X),!0}return!1}#E(Y){if(this.#F!==void 0)return;this.#F=setTimeout(()=>{this.#y()},Y)}#q(){if(this.#G)clearInterval(this.#G),this.#G=void 0}#w(){if(this.#F)clearTimeout(this.#F),this.#F=void 0}#b(){if(this.#$.size===0){if(this.#q(),this.emit("empty"),this.#W===0){if(this.#w(),this.#V&&this.#B>0){let X=Date.now();this.#P(X)}this.emit("idle")}return!1}let Y=!1;if(!this.#N){let X=Date.now(),Z=!this.#g(X);if(this.#S&&this.#h){let $=this.#$.dequeue();if(!this.#Y)this.#v(X),this.#O();if(this.emit("active"),$(),Z)this.#T();Y=!0}}return Y}#T(){if(this.#Y||this.#G!==void 0)return;if(this.#V)return;this.#G=setInterval(()=>{this.#x()},this.#z),this.#J=Date.now()+this.#z}#x(){if(!this.#V){if(this.#X===0&&this.#W===0&&this.#G)this.#q();this.#X=this.#Z?this.#W:0}this.#R(),this.#O()}#R(){while(this.#b());}get concurrency(){return this.#f}set concurrency(Y){if(!(typeof Y==="number"&&Y>=1))throw TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${Y}\` (${typeof Y})`);this.#f=Y,this.#R()}setPriority(Y,X){if(typeof X!=="number"||!Number.isFinite(X))throw TypeError(`Expected \`priority\` to be a finite number, got \`${X}\` (${typeof X})`);this.#$.setPriority(Y,X)}async add(Y,X={}){return X={timeout:this.timeout,...X,id:X.id??(this.#k++).toString()},new Promise((Z,$)=>{let B=Symbol(`task-${X.id}`);this.#$.enqueue(async()=>{this.#W++,this.#A.set(B,{id:X.id,priority:X.priority??0,startTime:Date.now(),timeout:X.timeout});let W;try{try{X.signal?.throwIfAborted()}catch(K){throw this.#u(),this.#A.delete(B),K}this.#_=Date.now();let J=Y({signal:X.signal});if(X.timeout)J=u0(Promise.resolve(J),{milliseconds:X.timeout,message:`Task timed out after ${X.timeout}ms (queue has ${this.#W} running, ${this.#$.size} waiting)`});if(X.signal){let{signal:K}=X;J=Promise.race([J,new Promise((Q,G)=>{W=()=>{G(K.reason)},K.addEventListener("abort",W,{once:!0})})])}let V=await J;Z(V),this.emit("completed",V)}catch(J){$(J),this.emit("error",J)}finally{if(W)X.signal?.removeEventListener("abort",W);this.#A.delete(B),queueMicrotask(()=>{this.#I()})}},X),this.emit("add"),this.#b()})}async addAll(Y,X){return Promise.all(Y.map(async(Z)=>this.add(Z,X)))}start(){if(!this.#N)return this;return this.#N=!1,this.#R(),this}pause(){this.#N=!0}clear(){if(this.#$=new this.#M,this.#q(),this.#j(),this.emit("empty"),this.#W===0)this.#w(),this.emit("idle");this.emit("next")}async onEmpty(){if(this.#$.size===0)return;await this.#U("empty")}async onSizeLessThan(Y){if(this.#$.size<Y)return;await this.#U("next",()=>this.#$.size<Y)}async onIdle(){if(this.#W===0&&this.#$.size===0)return;await this.#U("idle")}async onPendingZero(){if(this.#W===0)return;await this.#U("pendingZero")}async onRateLimit(){if(this.isRateLimited)return;await this.#U("rateLimit")}async onRateLimitCleared(){if(!this.isRateLimited)return;await this.#U("rateLimitCleared")}onError(){return new Promise((Y,X)=>{let Z=($)=>{this.off("error",Z),X($)};this.on("error",Z)})}async#U(Y,X){return new Promise((Z)=>{let $=()=>{if(X&&!X())return;this.off(Y,$),Z()};this.on(Y,$)})}get size(){return this.#$.size}sizeBy(Y){return this.#$.filter(Y).length}get pending(){return this.#W}get isPaused(){return this.#N}#m(){if(this.#Y)return;this.on("add",()=>{if(this.#$.size>0)this.#O()}),this.on("next",()=>{this.#O()})}#O(){if(this.#Y||this.#D)return;this.#D=!0,queueMicrotask(()=>{this.#D=!1,this.#j()})}#u(){if(this.#Y)return;this.#C(),this.#O()}#j(){let Y=this.#H;if(this.#Y||this.#$.size===0){if(Y)this.#H=!1,this.emit("rateLimitCleared");return}let X;if(this.#V){let $=Date.now();this.#P($),X=this.#L()}else X=this.#X;let Z=X>=this.#Q;if(Z!==Y)this.#H=Z,this.emit(Z?"rateLimit":"rateLimitCleared")}get isRateLimited(){return this.#H}get isSaturated(){return this.#W===this.#f&&this.#$.size>0||this.isRateLimited&&this.#$.size>0}get runningTasks(){return[...this.#A.values()].map((Y)=>({...Y}))}}var KY=[400,401,402,403,404,405,406,407,408,409,422];function VY(Y){if(Y==null||typeof Y!=="object")return!1;return"status"in Y&&"statusText"in Y&&"text"in Y}var U1=class Y extends Error{status;text;response;constructor(X,Z,$){super(`HTTP ${X}: ${Z}`);this.status=X,this.text=Z,this.response=$}static async fromResponse(X,Z){try{return new Y(X.status,await X.text(),Z?.includeResponse?X:void 0)}catch{return new Y(X.status,X.statusText,Z?.includeResponse?X:void 0)}}},_1=class{maxConcurrency;maxRetries;queue;onFailedResponseHook;customFetch;constructor(Y){if(this.maxConcurrency=Y.maxConcurrency??1/0,this.maxRetries=Y.maxRetries??4,"default"in d)this.queue=new d.default({concurrency:this.maxConcurrency});else this.queue=new d({concurrency:this.maxConcurrency});this.onFailedResponseHook=Y?.onFailedResponseHook,this.customFetch=Y.fetch}call(Y,...X){let{onFailedResponseHook:Z}=this;return this.queue.add(()=>g0(()=>Y(...X).catch(async($)=>{if($ instanceof Error)throw $;else if(VY($))throw await U1.fromResponse($,{includeResponse:!!Z});else throw Error($)}),{async onFailedAttempt({error:$}){let B=$.message??"";if(B.startsWith("Cancel")||B.startsWith("TimeoutError")||B.startsWith("AbortError"))throw $;if($?.code==="ECONNABORTED")throw $;if(B.includes("ECONNREFUSED")||B.includes("fetch failed")||B.includes("Failed to fetch")||B.includes("NetworkError")){let W=Error(`Unable to connect to LangGraph server. Please ensure the server is running and accessible. Original error: ${B}`);throw W.name="ConnectionError",W}if($ instanceof U1){if(KY.includes($.status))throw $;if(Z&&$.response)await Z($.response)}},retries:this.maxRetries,randomize:!0}),{throwOnTimeout:!0})}callWithOptions(Y,X,...Z){if(Y.signal)return Promise.race([this.call(X,...Z),new Promise(($,B)=>{Y.signal?.addEventListener("abort",()=>{B(Error("AbortError"))})})]);return this.call(X,...Z)}fetch(...Y){let X=this.customFetch??D1();return this.call(()=>X(...Y).then((Z)=>Z.ok?Z:Promise.reject(Z)))}};function O1(Y){try{return typeof process<"u"?process.env?.[Y]:void 0}catch(X){return}}function f1(...Y){let X=Y.filter(($)=>$!=null);if(X.length===0)return;if(X.length===1)return X[0];let Z=new AbortController;for(let $ of Y){if($?.aborted)return Z.abort($.reason),Z.signal;$?.addEventListener("abort",()=>Z.abort($.reason),{once:!0})}return Z.signal}var QY=[13,10];function P1(){let Y=[],X=!1;return new TransformStream({start(){Y=[],X=!1},transform(Z,$){let B=Z;if(X)B=J0([[13],B]),X=!1;if(B.length>0&&B.at(-1)===13)X=!0,B=B.subarray(0,-1);if(!B.length)return;let W=QY.includes(B.at(-1)),J=B.length-1,{lines:V}=B.reduce((K,Q,G)=>{if(K.from>G)return K;if(Q===13||Q===10)if(K.lines.push(B.subarray(K.from,G)),Q===13&&B[G+1]===10)K.from=G+2;else K.from=G+1;if(G===J&&K.from<=J)K.lines.push(B.subarray(K.from));return K},{lines:[],from:0});if(V.length===1&&!W){Y.push(V[0]);return}if(Y.length)Y.push(V[0]),V[0]=J0(Y),Y=[];if(!W){if(V.length)Y=[V.pop()]}for(let K of V)$.enqueue(K)},flush(Z){if(Y.length)Z.enqueue(J0(Y))}})}function L1(){let Y="",X=[],Z="",$=null,B=new TextDecoder;return new TransformStream({transform(W,J){if(!W.length){if(!Y&&!X.length&&!Z&&$==null)return;let G={id:Z||void 0,event:Y,data:X.length?A1(B,X):null};Y="",X=[],$=null,J.enqueue(G);return}if(W[0]===58)return;let V=W.indexOf(58);if(V===-1)return;let K=B.decode(W.subarray(0,V)),Q=W.subarray(V+1);if(Q[0]===32)Q=Q.subarray(1);if(K==="event")Y=B.decode(Q);else if(K==="data")X.push(Q);else if(K==="id"){if(Q.indexOf(0)===-1)Z=B.decode(Q)}else if(K==="retry"){let G=Number.parseInt(B.decode(Q),10);if(!Number.isNaN(G))$=G}},flush(W){if(Y)W.enqueue({id:Z||void 0,event:Y,data:X.length?A1(B,X):null})}})}function J0(Y){let X=Y.reduce((B,W)=>B+W.length,0),Z=new Uint8Array(X),$=0;for(let B of Y)Z.set(B,$),$+=B.length;return Z}function A1(Y,X){return JSON.parse(Y.decode(J0(X)))}var E1=(Y)=>{if("isError"in Error&&typeof Error.isError==="function")return Error.isError(Y);let X=Object.prototype.toString.call(Y);return X==="[object Error]"||X==="[object DOMException]"||X==="[object DOMError]"||X==="[object Exception]"},zY=(Y)=>{let{cause:X}=Y;if(typeof X!=="object"||X==null)return null;if(!E1(X))return null;return X},q1=(Y)=>{if(!E1(Y))return!1;if(Y.name!=="TypeError"||typeof Y.message!=="string")return!1;let X=Y.message.toLowerCase(),Z=zY(Y)?.message?.toLowerCase()??"";return X.includes("fetch")||X.includes("network")||X.includes("connection")||X.includes("error sending request")||X.includes("load failed")||X.includes("terminated")||Z.includes("other side closed")||Z.includes("socket")};var GY=class extends Error{constructor(Y,X){super(`Exceeded maximum SSE reconnection attempts (${Y})`);this.name="MaxReconnectAttemptsError",this.cause=X}};async function*b1(Y,X={}){let Z=X.maxRetries??5,$=0,B,W;while(!0){let J=!1,V,K;try{if(X.signal?.aborted)return;let{response:Q,stream:G}=await Y(W?{lastEventId:B,reconnectPath:W}:void 0),F=Q.headers.get("location");if(F)W=F;let D=Q.headers.get("content-type")?.split(";")[0];if(D&&!D.includes("text/event-stream"))throw Error(`Expected response header Content-Type to contain 'text/event-stream', got '${D}'`);K=G.getReader();try{while(!0){if(X.signal?.aborted){await K.cancel();return}let{done:N,value:U}=await K.read();if(N)break;if(U.id)B=U.id;yield U}break}catch(N){if(W&&!X.signal?.aborted)J=!0;else throw N}finally{if(K)try{K.releaseLock()}catch{}}}catch(Q){if(V=Q,q1(Q)&&W&&!X.signal?.aborted)J=!0;else throw Q}if(J){if($+=1,$>Z)throw new GY(Z,V);X.onReconnect?.({attempt:$,lastEventId:B,cause:V});let Q=Math.min(1000*2**($-1),5000)+Math.random()*1000;await new Promise((G)=>{setTimeout(G,Q)});continue}break}}function*DY(Y){let X,Z=!1;if(Y instanceof Headers){let $=[];Y.forEach((B,W)=>{$.push([W,B])}),X=$}else if(Array.isArray(Y))X=Y;else Z=!0,X=Object.entries(Y??{});for(let $ of X){let B=$[0];if(typeof B!=="string")throw TypeError(`Expected header name to be a string, got ${typeof B}`);let W=Array.isArray($[1])?$[1]:[$[1]],J=!1;for(let V of W){if(V===void 0)continue;if(Z&&!J)J=!0,yield[B,null];yield[B,V]}}}function R1(...Y){let X=new Headers;for(let $ of Y){if(!$)continue;for(let[B,W]of DY($))if(W===null)X.delete(B);else X.append(B,W)}let Z=[];return X.forEach(($,B)=>{Z.push([B,$])}),Object.fromEntries(Z)}function M1(Y){if(Y===null)return;if(Y)return Y;for(let X of["LANGGRAPH","LANGSMITH","LANGCHAIN"]){let Z=O1(`${X}_API_KEY`);if(Z)return Z.trim().replace(/^["']|["']$/g,"")}}var FY=/(\/threads\/(?<thread_id>.+))?\/runs\/(?<run_id>.+)/;function d0(Y){let X=Y.headers.get("Content-Location");if(!X)return;let Z=FY.exec(X);if(!Z?.groups?.run_id)return;return{run_id:Z.groups.run_id,thread_id:Z.groups.thread_id||void 0}}var l=class{asyncCaller;timeoutMs;apiUrl;defaultHeaders;onRequest;constructor(Y){let X={maxRetries:4,maxConcurrency:4,...Y?.callerOptions},Z="http://localhost:8123";if(!Y?.apiUrl&&typeof globalThis==="object"&&globalThis!=null){let B=Symbol.for("langgraph_api:fetch"),W=Symbol.for("langgraph_api:url"),J=globalThis;if(J[B])X.fetch??=J[B];if(J[W])Z=J[W]}this.asyncCaller=new _1(X),this.timeoutMs=Y?.timeoutMs,this.apiUrl=Y?.apiUrl?.replace(/\/$/,"")||Z,this.defaultHeaders=Y?.defaultHeaders||{},this.onRequest=Y?.onRequest;let $=M1(Y?.apiKey);if($)this.defaultHeaders["x-api-key"]=$}prepareFetchOptions(Y,X){let Z={...X,headers:R1(this.defaultHeaders,X?.headers)};if(Z.json)Z.body=JSON.stringify(Z.json),Z.headers=R1(Z.headers,{"content-type":"application/json"}),delete Z.json;if(Z.withResponse)delete Z.withResponse;let $=null;if(typeof X?.timeoutMs<"u"){if(X.timeoutMs!=null)$=AbortSignal.timeout(X.timeoutMs)}else if(this.timeoutMs!=null)$=AbortSignal.timeout(this.timeoutMs);Z.signal=f1($,Z.signal);let B=new URL(`${this.apiUrl}${Y}`);if(Z.params){for(let[W,J]of Object.entries(Z.params)){if(J==null)continue;let V=typeof J==="string"||typeof J==="number"?J.toString():JSON.stringify(J);B.searchParams.append(W,V)}delete Z.params}return[B,Z]}async fetch(Y,X){let[Z,$]=this.prepareFetchOptions(Y,X),B=$;if(this.onRequest)B=await this.onRequest(Z,$);let W=await this.asyncCaller.fetch(Z.toString(),B),J=(()=>{if(W.status===202||W.status===204)return;return W.json()})();if(X?.withResponse)return[await J,W];return J}async*streamWithRetry(Y){yield*b1(async(Z)=>{let $=Z?.reconnectPath||Y.endpoint,B=!!Z?.reconnectPath,W=B?"GET":Y.method||"GET",J=B&&Z?.lastEventId?{...Y.headers,"Last-Event-ID":Z.lastEventId}:Y.headers,[V,K]=this.prepareFetchOptions($,{method:W,timeoutMs:null,signal:Y.signal,headers:J,params:Y.params,json:B?void 0:Y.json});if(this.onRequest!=null)K=await this.onRequest(V,K);let Q=await this.asyncCaller.fetch(V.toString(),K);if(!B&&Y.onInitialResponse)await Y.onInitialResponse(Q);return{response:Q,stream:(Q.body||new ReadableStream({start:(G)=>G.close()})).pipeThrough(P1()).pipeThrough(L1())}},{maxRetries:Y.maxRetries??5,signal:Y.signal,onReconnect:Y.onReconnect})}},HY=class extends l{async createForThread(Y,X,Z){let $={schedule:Z?.schedule,input:Z?.input,config:Z?.config,context:Z?.context,metadata:Z?.metadata,assistant_id:X,interrupt_before:Z?.interruptBefore,interrupt_after:Z?.interruptAfter,webhook:Z?.webhook,multitask_strategy:Z?.multitaskStrategy,if_not_exists:Z?.ifNotExists,checkpoint_during:Z?.checkpointDuring,durability:Z?.durability,enabled:Z?.enabled};return this.fetch(`/threads/${Y}/runs/crons`,{method:"POST",json:$,signal:Z?.signal})}async create(Y,X){let Z={schedule:X?.schedule,input:X?.input,config:X?.config,context:X?.context,metadata:X?.metadata,assistant_id:Y,interrupt_before:X?.interruptBefore,interrupt_after:X?.interruptAfter,webhook:X?.webhook,on_run_completed:X?.onRunCompleted,multitask_strategy:X?.multitaskStrategy,if_not_exists:X?.ifNotExists,checkpoint_during:X?.checkpointDuring,durability:X?.durability,enabled:X?.enabled};return this.fetch("/runs/crons",{method:"POST",json:Z,signal:X?.signal})}async update(Y,X){let Z={};if(X?.schedule!==void 0)Z.schedule=X.schedule;if(X?.endTime!==void 0)Z.end_time=X.endTime;if(X?.input!==void 0)Z.input=X.input;if(X?.metadata!==void 0)Z.metadata=X.metadata;if(X?.config!==void 0)Z.config=X.config;if(X?.context!==void 0)Z.context=X.context;if(X?.webhook!==void 0)Z.webhook=X.webhook;if(X?.interruptBefore!==void 0)Z.interrupt_before=X.interruptBefore;if(X?.interruptAfter!==void 0)Z.interrupt_after=X.interruptAfter;if(X?.onRunCompleted!==void 0)Z.on_run_completed=X.onRunCompleted;if(X?.enabled!==void 0)Z.enabled=X.enabled;return this.fetch(`/runs/crons/${Y}`,{method:"PATCH",json:Z,signal:X?.signal})}async delete(Y,X){await this.fetch(`/runs/crons/${Y}`,{method:"DELETE",signal:X?.signal})}async search(Y){return this.fetch("/runs/crons/search",{method:"POST",json:{assistant_id:Y?.assistantId??void 0,thread_id:Y?.threadId??void 0,enabled:Y?.enabled??void 0,limit:Y?.limit??10,offset:Y?.offset??0,sort_by:Y?.sortBy??void 0,sort_order:Y?.sortOrder??void 0,select:Y?.select??void 0},signal:Y?.signal})}async count(Y){return this.fetch("/runs/crons/count",{method:"POST",json:{assistant_id:Y?.assistantId??void 0,thread_id:Y?.threadId??void 0},signal:Y?.signal})}},NY=class extends l{async get(Y,X){return this.fetch(`/assistants/${Y}`,{signal:X?.signal})}async getGraph(Y,X){return this.fetch(`/assistants/${Y}/graph`,{params:{xray:X?.xray},signal:X?.signal})}async getSchemas(Y,X){return this.fetch(`/assistants/${Y}/schemas`,{signal:X?.signal})}async getSubgraphs(Y,X){if(X?.namespace)return this.fetch(`/assistants/${Y}/subgraphs/${X.namespace}`,{params:{recurse:X?.recurse},signal:X?.signal});return this.fetch(`/assistants/${Y}/subgraphs`,{params:{recurse:X?.recurse},signal:X?.signal})}async create(Y){return this.fetch("/assistants",{method:"POST",json:{graph_id:Y.graphId,config:Y.config,context:Y.context,metadata:Y.metadata,assistant_id:Y.assistantId,if_exists:Y.ifExists,name:Y.name,description:Y.description},signal:Y.signal})}async update(Y,X){return this.fetch(`/assistants/${Y}`,{method:"PATCH",json:{graph_id:X.graphId,config:X.config,context:X.context,metadata:X.metadata,name:X.name,description:X.description},signal:X.signal})}async delete(Y,X){return this.fetch(`/assistants/${Y}?delete_threads=${X?.deleteThreads??!1}`,{method:"DELETE",signal:X?.signal})}async search(Y){let X={graph_id:Y?.graphId??void 0,name:Y?.name??void 0,metadata:Y?.metadata??void 0,limit:Y?.limit??10,offset:Y?.offset??0,sort_by:Y?.sortBy??void 0,sort_order:Y?.sortOrder??void 0,select:Y?.select??void 0},[Z,$]=await this.fetch("/assistants/search",{method:"POST",json:X,withResponse:!0,signal:Y?.signal});if(Y?.includePagination)return{assistants:Z,next:$.headers.get("X-Pagination-Next")};return Z}async count(Y){return this.fetch("/assistants/count",{method:"POST",json:{metadata:Y?.metadata??void 0,graph_id:Y?.graphId??void 0,name:Y?.name??void 0},signal:Y?.signal})}async getVersions(Y,X){return this.fetch(`/assistants/${Y}/versions`,{method:"POST",json:{metadata:X?.metadata??void 0,limit:X?.limit??10,offset:X?.offset??0},signal:X?.signal})}async setLatest(Y,X,Z){return this.fetch(`/assistants/${Y}/latest`,{method:"POST",json:{version:X},signal:Z?.signal})}},UY=class extends l{async get(Y,X){return this.fetch(`/threads/${Y}`,{signal:X?.signal})}async create(Y){let X=typeof Y?.ttl==="number"?{ttl:Y.ttl,strategy:"delete"}:Y?.ttl;return this.fetch("/threads",{method:"POST",json:{metadata:{...Y?.metadata,graph_id:Y?.graphId},thread_id:Y?.threadId,if_exists:Y?.ifExists,supersteps:Y?.supersteps?.map((Z)=>({updates:Z.updates.map(($)=>({values:$.values,command:$.command,as_node:$.asNode}))})),ttl:X},signal:Y?.signal})}async copy(Y,X){return this.fetch(`/threads/${Y}/copy`,{method:"POST",signal:X?.signal})}async update(Y,X){let Z=typeof X?.ttl==="number"?{ttl:X.ttl,strategy:"delete"}:X?.ttl;return this.fetch(`/threads/${Y}`,{method:"PATCH",json:{metadata:X?.metadata,ttl:Z},signal:X?.signal})}async delete(Y,X){return this.fetch(`/threads/${Y}`,{method:"DELETE",signal:X?.signal})}async search(Y){return this.fetch("/threads/search",{method:"POST",json:{metadata:Y?.metadata??void 0,ids:Y?.ids??void 0,limit:Y?.limit??10,offset:Y?.offset??0,status:Y?.status,sort_by:Y?.sortBy,sort_order:Y?.sortOrder,select:Y?.select??void 0,values:Y?.values??void 0},signal:Y?.signal})}async count(Y){return this.fetch("/threads/count",{method:"POST",json:{metadata:Y?.metadata??void 0,values:Y?.values??void 0,status:Y?.status??void 0},signal:Y?.signal})}async getState(Y,X,Z){if(X!=null){if(typeof X!=="string")return this.fetch(`/threads/${Y}/state/checkpoint`,{method:"POST",json:{checkpoint:X,subgraphs:Z?.subgraphs},signal:Z?.signal});return this.fetch(`/threads/${Y}/state/${X}`,{params:{subgraphs:Z?.subgraphs},signal:Z?.signal})}return this.fetch(`/threads/${Y}/state`,{params:{subgraphs:Z?.subgraphs},signal:Z?.signal})}async updateState(Y,X){return this.fetch(`/threads/${Y}/state`,{method:"POST",json:{values:X.values,checkpoint_id:X.checkpointId,checkpoint:X.checkpoint,as_node:X?.asNode},signal:X?.signal})}async patchState(Y,X,Z){let $;if(typeof Y!=="string"){if(typeof Y.configurable?.thread_id!=="string")throw Error("Thread ID is required when updating state with a config.");$=Y.configurable.thread_id}else $=Y;return this.fetch(`/threads/${$}/state`,{method:"PATCH",json:{metadata:X},signal:Z?.signal})}async getHistory(Y,X){return this.fetch(`/threads/${Y}/history`,{method:"POST",json:{limit:X?.limit??10,before:X?.before,metadata:X?.metadata,checkpoint:X?.checkpoint},signal:X?.signal})}async*joinStream(Y,X){yield*this.streamWithRetry({endpoint:`/threads/${Y}/stream`,method:"GET",signal:X?.signal,headers:X?.lastEventId?{"Last-Event-ID":X.lastEventId}:void 0,params:X?.streamMode?{stream_mode:X.streamMode}:void 0})}},_Y=class extends l{async*stream(Y,X,Z){let $={input:Z?.input,command:Z?.command,config:Z?.config,context:Z?.context,metadata:Z?.metadata,stream_mode:Z?.streamMode,stream_subgraphs:Z?.streamSubgraphs,stream_resumable:Z?.streamResumable,feedback_keys:Z?.feedbackKeys,assistant_id:X,interrupt_before:Z?.interruptBefore,interrupt_after:Z?.interruptAfter,checkpoint:Z?.checkpoint,checkpoint_id:Z?.checkpointId,webhook:Z?.webhook,multitask_strategy:Z?.multitaskStrategy,on_completion:Z?.onCompletion,on_disconnect:Z?.onDisconnect,after_seconds:Z?.afterSeconds,if_not_exists:Z?.ifNotExists,checkpoint_during:Z?.checkpointDuring,durability:Z?.durability};yield*this.streamWithRetry({endpoint:Y==null?"/runs/stream":`/threads/${Y}/runs/stream`,method:"POST",json:$,signal:Z?.signal,onInitialResponse:(B)=>{let W=d0(B);if(W)Z?.onRunCreated?.(W)}})}async create(Y,X,Z){let $={input:Z?.input,command:Z?.command,config:Z?.config,context:Z?.context,metadata:Z?.metadata,stream_mode:Z?.streamMode,stream_subgraphs:Z?.streamSubgraphs,stream_resumable:Z?.streamResumable,assistant_id:X,interrupt_before:Z?.interruptBefore,interrupt_after:Z?.interruptAfter,webhook:Z?.webhook,checkpoint:Z?.checkpoint,checkpoint_id:Z?.checkpointId,multitask_strategy:Z?.multitaskStrategy,after_seconds:Z?.afterSeconds,if_not_exists:Z?.ifNotExists,checkpoint_during:Z?.checkpointDuring,durability:Z?.durability,langsmith_tracer:Z?._langsmithTracer?{project_name:Z?._langsmithTracer?.projectName,example_id:Z?._langsmithTracer?.exampleId}:void 0},B=Y===null?"/runs":`/threads/${Y}/runs`,[W,J]=await this.fetch(B,{method:"POST",json:$,signal:Z?.signal,withResponse:!0}),V=d0(J);if(V)Z?.onRunCreated?.(V);return W}async createBatch(Y,X){let Z=Y.map(($)=>({...$,assistant_id:$.assistantId})).map(($)=>{return Object.fromEntries(Object.entries($).filter(([B,W])=>W!==void 0))});return this.fetch("/runs/batch",{method:"POST",json:Z,signal:X?.signal})}async wait(Y,X,Z){let $={input:Z?.input,command:Z?.command,config:Z?.config,context:Z?.context,metadata:Z?.metadata,assistant_id:X,interrupt_before:Z?.interruptBefore,interrupt_after:Z?.interruptAfter,checkpoint:Z?.checkpoint,checkpoint_id:Z?.checkpointId,webhook:Z?.webhook,multitask_strategy:Z?.multitaskStrategy,on_completion:Z?.onCompletion,on_disconnect:Z?.onDisconnect,after_seconds:Z?.afterSeconds,if_not_exists:Z?.ifNotExists,checkpoint_during:Z?.checkpointDuring,durability:Z?.durability,langsmith_tracer:Z?._langsmithTracer?{project_name:Z?._langsmithTracer?.projectName,example_id:Z?._langsmithTracer?.exampleId}:void 0},B=Y==null?"/runs/wait":`/threads/${Y}/runs/wait`,[W,J]=await this.fetch(B,{method:"POST",json:$,timeoutMs:null,signal:Z?.signal,withResponse:!0}),V=d0(J);if(V)Z?.onRunCreated?.(V);if((Z?.raiseError!==void 0?Z.raiseError:!0)&&"__error__"in W&&typeof W.__error__==="object"&&W.__error__&&"error"in W.__error__&&"message"in W.__error__)throw Error(`${W.__error__?.error}: ${W.__error__?.message}`);return W}async list(Y,X){return this.fetch(`/threads/${Y}/runs`,{params:{limit:X?.limit??10,offset:X?.offset??0,status:X?.status??void 0,select:X?.select??void 0},signal:X?.signal})}async get(Y,X,Z){return this.fetch(`/threads/${Y}/runs/${X}`,{signal:Z?.signal})}async cancel(Y,X,Z=!1,$="interrupt",B={}){return this.fetch(`/threads/${Y}/runs/${X}/cancel`,{method:"POST",params:{wait:Z?"1":"0",action:$},signal:B?.signal})}async join(Y,X,Z){return this.fetch(`/threads/${Y}/runs/${X}/join`,{timeoutMs:null,signal:Z?.signal})}async*joinStream(Y,X,Z){let $=typeof Z==="object"&&Z!=null&&Z instanceof AbortSignal?{signal:Z}:Z;yield*this.streamWithRetry({endpoint:Y!=null?`/threads/${Y}/runs/${X}/stream`:`/runs/${X}/stream`,method:"GET",signal:$?.signal,headers:$?.lastEventId?{"Last-Event-ID":$.lastEventId}:void 0,params:{cancel_on_disconnect:$?.cancelOnDisconnect?"1":"0",stream_mode:$?.streamMode}})}async delete(Y,X,Z){return this.fetch(`/threads/${Y}/runs/${X}`,{method:"DELETE",signal:Z?.signal})}},OY=class extends l{async putItem(Y,X,Z,$){Y.forEach((W)=>{if(W.includes("."))throw Error(`Invalid namespace label '${W}'. Namespace labels cannot contain periods ('.')`)});let B={namespace:Y,key:X,value:Z,index:$?.index,ttl:$?.ttl};return this.fetch("/store/items",{method:"PUT",json:B,signal:$?.signal})}async getItem(Y,X,Z){Y.forEach((W)=>{if(W.includes("."))throw Error(`Invalid namespace label '${W}'. Namespace labels cannot contain periods ('.')`)});let $={namespace:Y.join("."),key:X};if(Z?.refreshTtl!==void 0)$.refresh_ttl=Z.refreshTtl;let B=await this.fetch("/store/items",{params:$,signal:Z?.signal});return B?{...B,createdAt:B.created_at,updatedAt:B.updated_at}:null}async deleteItem(Y,X,Z){return Y.forEach(($)=>{if($.includes("."))throw Error(`Invalid namespace label '${$}'. Namespace labels cannot contain periods ('.')`)}),this.fetch("/store/items",{method:"DELETE",json:{namespace:Y,key:X},signal:Z?.signal})}async searchItems(Y,X){let Z={namespace_prefix:Y,filter:X?.filter,limit:X?.limit??10,offset:X?.offset??0,query:X?.query,refresh_ttl:X?.refreshTtl};return{items:(await this.fetch("/store/items/search",{method:"POST",json:Z,signal:X?.signal})).items.map(($)=>({...$,createdAt:$.created_at,updatedAt:$.updated_at}))}}async listNamespaces(Y){let X={prefix:Y?.prefix,suffix:Y?.suffix,max_depth:Y?.maxDepth,limit:Y?.limit??100,offset:Y?.offset??0};return this.fetch("/store/namespaces",{method:"POST",json:X,signal:Y?.signal})}},fY=class Y extends l{static promiseCache={};static getOrCached(X,Z){if(Y.promiseCache[X]!=null)return Y.promiseCache[X];let $=Z();return Y.promiseCache[X]=$,$}async getComponent(X,Z){return Y.getOrCached(`${this.apiUrl}-${X}-${Z}`,async()=>{let[$,B]=this.prepareFetchOptions(`/ui/${X}`,{headers:{Accept:"text/html","Content-Type":"application/json"},method:"POST",json:{name:Z}});if(this.onRequest!=null)B=await this.onRequest($,B);return(await this.asyncCaller.fetch($.toString(),B)).text()})}},l0=class{assistants;threads;runs;crons;store;"~ui";"~configHash";constructor(Y){this["~configHash"]=JSON.stringify({apiUrl:Y?.apiUrl,apiKey:Y?.apiKey,timeoutMs:Y?.timeoutMs,defaultHeaders:Y?.defaultHeaders,maxConcurrency:Y?.callerOptions?.maxConcurrency,maxRetries:Y?.callerOptions?.maxRetries,callbacks:{onFailedResponseHook:Y?.callerOptions?.onFailedResponseHook!=null,onRequest:Y?.onRequest!=null,fetch:Y?.callerOptions?.fetch!=null}}),this.assistants=new NY(Y),this.threads=new UY(Y),this.runs=new _Y(Y),this.crons=new HY(Y),this.store=new OY(Y),this["~ui"]=new fY(Y)}};var w1=async(Y)=>{let X=new l0(Y);return X.threads.search=function(Z){return this.fetch("/threads/search",{method:"POST",json:{metadata:(Z==null?void 0:Z.metadata)??void 0,ids:(Z==null?void 0:Z.ids)??void 0,limit:(Z==null?void 0:Z.limit)??10,offset:(Z==null?void 0:Z.offset)??0,status:Z==null?void 0:Z.status,sort_by:Z==null?void 0:Z.sortBy,sort_order:Z==null?void 0:Z.sortOrder,select:(Z==null?void 0:Z.select)??void 0,without_details:(Z==null?void 0:Z.without_details)??!1}})}.bind(X.threads),X};var L5={command:C.enum(["create","update","rewrite"]).describe("The operation to perform: create new artifact, update existing, or rewrite"),id:C.string().describe("Unique identifier for the artifact"),title:C.string().describe("Human-readable title for the artifact"),type:C.string().describe("MIME type of the artifact content (e.g., 'application/vnd.ant.react')"),language:C.string().describe("Programming language or format of the content"),content:C.string().describe("The actual content to be created or updated. Don't Reply These Code to User, User can see these code in artifacts."),old_str:C.string().describe("The existing content to be replaced (for update operations)"),new_str:C.string().describe("The new content to replace the old content (for update operations)")};var AY=(Y,X)=>{let Z=new Map;for(let B of Y)if(B.type==="tool"&&B.name==="create_artifacts"){let W=new o(B,X),J=W.getInputRepaired();if(!J.id)continue;J.tool_id=W.message.id,J.is_done=W.state==="done",Z.set(J.id,[...Z.get(J.id)||[],J])}let $=new Map;for(let[B,W]of Z){let J=[],V="",K="",Q="",G=1;for(let F of W){switch(F.command){case"create":V=F.content,K=F.title||`artifact-${B}`,Q=F.type||F.language;break;case"update":if(F.old_str&&F.new_str)V=V.replace(F.old_str,F.new_str);else if(F.content)V=F.content;break;case"rewrite":V=F.content;break}let D={group_id:B,id:F.tool_id,code:V,filename:K,filetype:Q,version:G,is_done:F.is_done};J.push(D),G++}$.set(B,J)}return[...$.values()].map((B)=>({id:B[0].group_id,filename:B[B.length-1].filename,filetype:B[B.length-1].filetype,versions:B}))},T1=(Y,X)=>{let Z=f(!1),$=f(null),B=f([]);return _0([Y,X],()=>{B.set(AY(Y.get(),X.get()))}),{data:{artifacts:B,currentArtifactId:$,showArtifact:Z},mutation:{setCurrentArtifactById:(J,V)=>{let K=$.get();if(K?.[0]===J&&K?.[1]===V)return;Z.set(!0),$.set([J,V])},setShowArtifact:(J)=>Z.set(J)}}};var j5=(Y)=>{let X=Y.execute||(async(Z,$)=>{try{let B=await Y.handler?.(Z,$);if(typeof B==="string")return[{type:"text",text:B}];else if(B.decisions)return B;return[{type:"text",text:JSON.stringify(B)}]}catch(B){return[{type:"text",text:`Error: ${B}`}]}});return{...Y,execute:X}};var j1=(Y)=>{return{name:Y.name,description:Y.description,parameters:Y.isPureParams?Y.parameters:x1(C.object(Y.parameters))}};class K0{tools=new Map;waitingMap=new Map;bindTool(Y){if(this.tools.has(Y.name)&&Y.name!=="__default__")console.warn(`Tool with name ${Y.name} already exists`);this.tools.set(Y.name,Y)}bindTools(Y){Y.forEach((X)=>this.bindTool(X))}getAllTools(){return Array.from(this.tools.values())}getTool(Y){return this.tools.get(Y)}removeTool(Y){return this.tools.delete(Y)}clearTools(){this.tools.clear()}reset(){this.clearTools(),this.clearWaiting()}clearWaiting(){this.waitingMap.clear()}async callTool(Y,X,Z){return await(this.getTool(Y)||this.getTool("__default__")).execute?.(X,Z)}async toJSON(Y,X=!0){return Array.from(this.tools.values()).filter((Z)=>X?!Z.onlyRender:!0).filter((Z)=>!Z.allowGraph||Z.allowGraph.includes(Y)).map((Z)=>j1(Z))}doneWaiting(Y,X){if(this.waitingMap.has(Y))return this.waitingMap.get(Y)(X),this.waitingMap.delete(Y),!0;else return console.warn(`Waiting for tool ${Y} not found`),!1}isAllToolCompleted(){return this.waitingMap.size}waitForDone(Y){return new Promise((Z,$)=>{this.waitingMap.set(Y,Z)})}static waitForUIDone(Y,X){return X.client.tools.waitForDone(X.message.id)}}class p0{timeCounter=new Map;start(Y){this.timeCounter.set(Y,[new Date])}end(Y){this.timeCounter.set(Y,[this.timeCounter.get(Y)?.[0]||new Date,new Date])}setSpendTime(Y){if(this.timeCounter.has(Y))this.end(Y);else this.start(Y)}getStartTime(Y){return this.timeCounter.get(Y)?.[0]||new Date}getEndTime(Y){return this.timeCounter.get(Y)?.[1]||new Date}getSpendTime(Y){let[X,Z=new Date]=this.timeCounter.get(Y)||[new Date,new Date];return Z.getTime()-X.getTime()}}class V0{static isTool(Y){return Y.type==="tool"}static isToolAssistant(Y){return Y.type==="ai"&&(Y.tool_calls?.length||Y.tool_call_chunks?.length)}}class i0{streamingMessage=[];graphMessages=[];spendTime=new p0;constructor(){}getStreamingMessages(){return[...this.streamingMessage]}setStreamingMessages(Y){this.streamingMessage=Y}clearStreamingMessages(){this.streamingMessage=[]}getGraphMessages(){return[...this.graphMessages]}setGraphMessages(Y){this.graphMessages=Y}updateStreamingMessage(Y){let X=this.streamingMessage[this.streamingMessage.length-1];if(!X?.id||Y.id!==X.id){this.streamingMessage.push(Y);return}this.streamingMessage[this.streamingMessage.length-1]=Y}combineGraphMessagesWithStreamingMessages(){let Y=new Map(this.streamingMessage.map((X)=>[X.id,X]));return[...this.graphMessages.map((X)=>{if(Y.has(X.id)){let Z=Y.get(X.id);return Y.delete(X.id),Z}return X}),...Y.values()]}cloneMessage(Y){return JSON.parse(JSON.stringify(Y))}attachInfoForMessage(Y){let X=null,Z=[...Y];for(let $ of Z){if(!$.additional_kwargs)$.additional_kwargs={};let B=$.additional_kwargs?.create_time||r0(this.spendTime.getStartTime($.id)),W=$.additional_kwargs?.update_time||r0(this.spendTime.getEndTime($.id));if($.additional_kwargs.create_time=B,$.additional_kwargs.update_time=W,$.unique_id=$.tool_call_id||$.id,$.spend_time=new Date(W).getTime()-new Date(B).getTime(),!$.usage_metadata&&$.response_metadata?.usage){let J=$.response_metadata.usage;$.usage_metadata={...J,input_tokens:J.prompt_tokens,output_tokens:J.completion_tokens,total_tokens:J.total_tokens}}X=$}return Z}composeToolMessages(Y){let X=[],Z=new Map,$=new Map;for(let B of Y){if(V0.isToolAssistant(B)){if((B.tool_calls||B.tool_call_chunks)?.forEach((W)=>{Z.set(W.id,W),$.set(W.id,B)}),!B.content)continue}if(V0.isTool(B)&&!B.tool_input){let W=Z.get(B.tool_call_id),J=$.get(B.tool_call_id);if(W){B.tool_input=typeof W.args!=="string"?JSON.stringify(W.args):W.args;let V=!!B.content;B.done=V,B.additional_kwargs={...J?.additional_kwargs||{},...B.additional_kwargs||{},done:V}}if(J){if(B.usage_metadata=J.usage_metadata,B.node_name=J.name,B.source_ai_message_id=J.id,!B.name)B.name=J.tool_calls.find((V)=>V.id===B.tool_call_id)?.name}}X.push(B)}return X}renderMessages(Y,X,Z){let $=new Map,B=new Set,W=[],J=this.combineGraphMessagesWithStreamingMessages();for(let V=J.length-1;V>=0;V--){let K=this.cloneMessage(J[V]);if(!K.id){W.unshift(K);continue}if(K.type==="ai"){if(!K.name)K.name=X().name}if(V0.isToolAssistant(K)){let Q=K;$.set(K.id,Q);let F=((Q.tool_calls?.length)?Q.tool_calls:Q.tool_call_chunks).filter((D)=>{return!B.has(D.id)}).map((D,N)=>{return{type:"tool",additional_kwargs:{},tool_input:Q.additional_kwargs?.tool_calls?.[N]?.function?.arguments,id:D.id,name:D.name,response_metadata:{},tool_call_id:D.id,content:""}});for(let D of F)if(!$.has(D.id))W.unshift(D),$.set(D.id,D);W.unshift(Q)}else{if(K.type==="tool"&&K.tool_call_id)B.add(K.tool_call_id);$.set(K.id,K),W.unshift(K)}}return this.processMessages(W,Y,Z)}foldTreeMessages(Y,X,Z){let $=Object.entries(X?.task_store||{}).map(([Q,G])=>[Q,G.messages]),B=new Map($),W=new Set,J=new Map(Object.entries(Z||{}).map(([Q,G])=>{if(G?.parent_id)return W.add(Q),[Q,G?.parent_id];return}).filter((Q)=>Q!==void 0)),V=B,K=[];for(let Q of Y){let G=Q.source_ai_message_id||Q.id;if(!!W.has(G)){let D=J.get(G),N=V.get(D);if(N)N.push(Q);else V.set(D,[Q])}else K.push(Q)}for(let Q of K)if(Q.sub_messages=V.get(Q.id)||[],Q.type==="tool"&&V.has(Q.tool_call_id)){Q.sub_messages.unshift(...V.get(Q.tool_call_id));let G=Q.sub_messages.filter((F,D,N)=>N.findIndex((U)=>U.id===F.id)===D);Q.sub_messages=this.beforeFold(G)}return K}beforeFold(Y){let X=this.composeToolMessages(Y);return this.attachInfoForMessage(X)}processMessages(Y,X,Z){return this.foldTreeMessages(this.beforeFold(Y),X,Z)}}async function k1(Y,X,Z,$){let B=await Y.threads.get(X),W=B.values.messages,J=W.findIndex((F)=>F.id===Z);if(J===-1)throw Error(`Message id ${Z} not found`);let V=$.includeMessageId?J:J+1,K=W.slice(V),Q={...B.values,messages:K.map((F)=>{return{type:"remove",id:F.id}})},G=await Y.threads.updateState(X,{values:Q});return{state:{messages:W.slice(0,V)},checkpoint:G}}var C1=(Y)=>typeof Y==="object"&&Y!==null,v1=(Y)=>{if(!C1(Y))return!1;if(Y instanceof RegExp||Y instanceof Error||Y instanceof Date||Y instanceof Map||Y instanceof Set||Y instanceof WeakMap||Y instanceof WeakSet||Y instanceof Promise||Y instanceof ArrayBuffer||Y instanceof DataView||ArrayBuffer.isView(Y)||globalThis.Blob&&Y instanceof globalThis.Blob)return!1;if(typeof Y.$$typeof==="symbol"||typeof Y.asymmetricMatch==="function")return!1;return!0},PY=Symbol("mapObjectSkip"),LY=(Y,X)=>{if(X){let Z=Object.keys(Y),$=Object.getOwnPropertySymbols(Y).filter((B)=>Object.getOwnPropertyDescriptor(Y,B)?.enumerable);return[...Z,...$]}return Object.keys(Y)},n0=(Y,X,Z,$=new WeakMap)=>{let{target:B={},...W}={deep:!1,includeSymbols:!1,...Z};if($.has(Y))return $.get(Y);$.set(Y,B);let J=(V)=>V.map((K)=>v1(K)?n0(K,X,W,$):K);if(Array.isArray(Y))return J(Y);for(let V of LY(Y,W.includeSymbols)){let K=Y[V],Q=X(V,K);if(Q===PY)continue;if(!Array.isArray(Q))throw TypeError(`Mapper must return an array or mapObjectSkip, got ${Q===null?"null":typeof Q}`);if(Q.length<2)throw TypeError(`Mapper must return an array with at least 2 elements [key, value], got ${Q.length} elements`);let[G,F,{shouldRecurse:D=!0}={}]=Q;if(G==="__proto__")continue;if(W.deep&&D&&v1(F))F=Array.isArray(F)?J(F):n0(F,X,W,$);try{B[G]=F}catch(N){if(N.name==="TypeError"&&N.message.includes("read only"))continue;throw N}}return B};function s0(Y,X,Z){if(!C1(Y))throw TypeError(`Expected an object, got \`${Y}\` (${typeof Y})`);if(Array.isArray(Y))throw TypeError("Expected an object, got an array");return n0(Y,(B,W)=>X(B,W,Y),Z)}var t0=/[\p{Lu}]/u,EY=/[\p{Ll}]/u,qY=/^[\p{Lu}](?![\p{Lu}])/u,e=/[_.\- ]+/,S1=/([\p{Alpha}\p{N}_]|$)/u,bY=new RegExp("^"+e.source),RY=new RegExp(e.source+S1.source,"gu"),MY=new RegExp(String.raw`\d+`+S1.source,"gu"),wY=(Y,X,Z,$)=>{let B=!1,W=!1,J=!1,V=!1;for(let K=0;K<Y.length;K++){let Q=Y[K];if(V=K>2?Y[K-3]==="-":!0,B&&t0.test(Q))Y=Y.slice(0,K)+"-"+Y.slice(K),B=!1,J=W,W=!0,K++;else if(W&&J&&EY.test(Q)&&(!V||$))Y=Y.slice(0,K-1)+"-"+Y.slice(K-1),J=W,W=!1,B=!0;else B=X(Q)===Q&&Z(Q)!==Q,J=W,W=Z(Q)===Q&&X(Q)!==Q}return Y},TY=(Y,X)=>Y.replace(qY,(Z)=>X(Z)),xY=(Y,X,Z)=>{let $="",B=!1,W=!1,J=[...Y];for(let V=0;V<J.length;V++){let K=J[V],Q=t0.test(K),G=V+1<J.length&&t0.test(J[V+1]);if(B&&/[\p{Alpha}]/u.test(K))$+=K,B=!1,W=Q;else if(Z&&Q&&(W||G))$+=K,W=!0;else if(/\d/.test(K))$+=K,B=!0,W=!1;else if(e.test(K))$+=K,W=!1;else $+=X(K),B=!1,W=!1}return $},jY=(Y,X,{capitalizeAfterNumber:Z})=>{let $=Z?(B,W,J,V)=>{let K=V.charAt(J+B.length);if(e.test(K))return B;return W?B.slice(0,-W.length)+X(W):B}:(B)=>B;return Y.replaceAll(MY,$).replaceAll(RY,(B,W)=>X(W))};function a0(Y,X){if(!(typeof Y==="string"||Array.isArray(Y)))throw TypeError("Expected the input to be `string | string[]`");if(X={pascalCase:!1,preserveConsecutiveUppercase:!1,capitalizeAfterNumber:!0,...X},Array.isArray(Y))Y=Y.map((J)=>J.trim()).filter((J)=>J.length>0).join("-");else Y=Y.trim();if(Y.length===0)return"";let Z=Y.match(/^[_$]*/)[0];if(Y=Y.slice(Z.length),Y.length===0)return Z;let $=X.locale===!1?(J)=>J.toLowerCase():(J)=>J.toLocaleLowerCase(X.locale),B=X.locale===!1?(J)=>J.toUpperCase():(J)=>J.toLocaleUpperCase(X.locale);if(Y.length===1){if(e.test(Y))return Z;return Z+(X.pascalCase?B(Y):$(Y))}if(Y!==$(Y))Y=wY(Y,$,B,X.preserveConsecutiveUppercase);if(Y=Y.replace(bY,""),X.capitalizeAfterNumber)Y=X.preserveConsecutiveUppercase?TY(Y,$):$(Y);else Y=xY(Y,$,X.preserveConsecutiveUppercase);if(X.pascalCase&&Y.length>0)Y=B(Y[0])+Y.slice(1);return Z+jY(Y,B,X)}class Q0 extends Map{#Z=0;#Y=new Map;#X=new Map;#Q;#H;#D;constructor(Y={}){super();if(!(Y.maxSize&&Y.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof Y.maxAge==="number"&&Y.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");this.#Q=Y.maxSize,this.#H=Y.maxAge||Number.POSITIVE_INFINITY,this.#D=Y.onEviction}get __oldCache(){return this.#X}#z(Y){if(typeof this.#D!=="function")return;for(let[X,Z]of Y)this.#D(X,Z.value)}#J(Y,X){if(typeof X.expiry==="number"&&X.expiry<=Date.now()){if(typeof this.#D==="function")this.#D(Y,X.value);return this.delete(Y)}return!1}#_(Y,X){if(this.#J(Y,X)===!1)return X.value}#G(Y,X){return X.expiry?this.#_(Y,X):X.value}#F(Y,X){let Z=X.get(Y);return this.#G(Y,Z)}#V(Y,X){if(this.#Y.set(Y,X),this.#Z++,this.#Z>=this.#Q)this.#Z=0,this.#z(this.#X),this.#X=this.#Y,this.#Y=new Map}#K(Y,X){this.#X.delete(Y),this.#V(Y,X)}*#B(){for(let Y of this.#X){let[X,Z]=Y;if(!this.#Y.has(X)){if(this.#J(X,Z)===!1)yield Y}}for(let Y of this.#Y){let[X,Z]=Y;if(this.#J(X,Z)===!1)yield Y}}get(Y){if(this.#Y.has(Y)){let X=this.#Y.get(Y);return this.#G(Y,X)}if(this.#X.has(Y)){let X=this.#X.get(Y);if(this.#J(Y,X)===!1)return this.#K(Y,X),X.value}}set(Y,X,{maxAge:Z=this.#H}={}){let $=typeof Z==="number"&&Z!==Number.POSITIVE_INFINITY?Date.now()+Z:void 0;if(this.#Y.has(Y))this.#Y.set(Y,{value:X,expiry:$});else this.#V(Y,{value:X,expiry:$});return this}has(Y){if(this.#Y.has(Y))return!this.#J(Y,this.#Y.get(Y));if(this.#X.has(Y))return!this.#J(Y,this.#X.get(Y));return!1}peek(Y){if(this.#Y.has(Y))return this.#F(Y,this.#Y);if(this.#X.has(Y))return this.#F(Y,this.#X)}expiresIn(Y){let X=this.#Y.get(Y)??this.#X.get(Y);if(X)return X.expiry?X.expiry-Date.now():Number.POSITIVE_INFINITY}delete(Y){let X=this.#Y.delete(Y);if(X)this.#Z--;return this.#X.delete(Y)||X}clear(){this.#Y.clear(),this.#X.clear(),this.#Z=0}resize(Y){if(!(Y&&Y>0))throw TypeError("`maxSize` must be a number greater than 0");let X=[...this.#B()],Z=X.length-Y;if(Z<0)this.#Y=new Map(X),this.#X=new Map,this.#Z=X.length;else{if(Z>0)this.#z(X.slice(0,Z));this.#X=new Map(X.slice(Z)),this.#Y=new Map,this.#Z=0}this.#Q=Y}evict(Y=1){let X=Number(Y);if(!X||X<=0)return;let Z=[...this.#B()],$=Math.trunc(Math.min(X,Math.max(Z.length-1,0)));if($<=0)return;this.#z(Z.slice(0,$)),this.#X=new Map(Z.slice($)),this.#Y=new Map,this.#Z=0}*keys(){for(let[Y]of this)yield Y}*values(){for(let[,Y]of this)yield Y}*[Symbol.iterator](){for(let Y of this.#Y){let[X,Z]=Y;if(this.#J(X,Z)===!1)yield[X,Z.value]}for(let Y of this.#X){let[X,Z]=Y;if(!this.#Y.has(X)){if(this.#J(X,Z)===!1)yield[X,Z.value]}}}*entriesDescending(){let Y=[...this.#Y];for(let X=Y.length-1;X>=0;--X){let Z=Y[X],[$,B]=Z;if(this.#J($,B)===!1)yield[$,B.value]}Y=[...this.#X];for(let X=Y.length-1;X>=0;--X){let Z=Y[X],[$,B]=Z;if(!this.#Y.has($)){if(this.#J($,B)===!1)yield[$,B.value]}}}*entriesAscending(){for(let[Y,X]of this.#B())yield[Y,X.value]}get size(){if(!this.#Z)return this.#X.size;let Y=0;for(let X of this.#X.keys())if(!this.#Y.has(X))Y++;return Math.min(this.#Z+Y,this.#Q)}get maxSize(){return this.#Q}get maxAge(){return this.#H}entries(){return this.entriesAscending()}forEach(Y,X=this){for(let[Z,$]of this.entriesAscending())Y.call(X,$,Z,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}var kY=(Y,X)=>Y.some((Z)=>{if(typeof Z==="string")return Z===X;return Z.lastIndex=0,Z.test(X)}),vY=(Y)=>Y.trim()!==""&&!Number.isNaN(Number(Y)),o0=new Q0({maxSize:1e5}),CY=(Y)=>ArrayBuffer.isView(Y)||Y instanceof Date||Y instanceof RegExp||Y instanceof Error||Y instanceof Map||Y instanceof Set||Y instanceof WeakMap||Y instanceof WeakSet||Y instanceof Promise,p=(Y)=>typeof Y==="object"&&Y!==null&&!CY(Y),r=(Y,X={},Z=new WeakMap,$)=>{if(!p(Y))return Y;if(Z.has(Y))return Z.get(Y);let{exclude:B,pascalCase:W=!1,stopPaths:J,deep:V=!1,preserveConsecutiveUppercase:K=!1}=X,Q=new Set(J);if(Array.isArray(Y)){let U=[];Z.set(Y,U);for(let _ of Y)U.push(p(_)?r(_,X,Z,$):_);return U}let G={};Z.set(Y,G);let D=s0(Y,((U)=>(_,P)=>{if(V&&p(P)){let q=U===void 0?_:`${U}.${_}`;if(!Q.has(q))P=Array.isArray(P)?P.map((E)=>p(E)?r(E,X,Z,q):E):r(P,X,Z,q)}if(typeof _==="string"&&!vY(_)&&!(B&&kY(B,_))){let q=W?`${_}_`:_;if(o0.has(q))_=o0.get(q);else if(_=a0(_,{pascalCase:W,locale:!1,preserveConsecutiveUppercase:K}),_.length<100)o0.set(q,_)}return[_,P]})($),{deep:!1});Object.assign(G,D);let N=Object.getOwnPropertySymbols(Y);for(let U of N)G[U]=V&&p(Y[U])?r(Y[U],X,Z,$):Y[U];return G};function e0(Y,X){let Z=new WeakMap;if(Array.isArray(Y))return Y.map(($)=>p($)?r($,X,Z,void 0):$);return r(Y,X,Z)}class z0 extends W0.default{client;currentAssistant=null;currentThread=null;tools=new K0;availableAssistants=[];graphState={};currentRun;stopController=null;messageProcessor;legacyMode;_status="idle";constructor(Y){super();this.client=Y.client,this.legacyMode=Y.legacyMode??!1,this.messageProcessor=new i0}get assistants(){return this.client.assistants}get threads(){return this.client.threads}get runs(){return this.client.runs}get status(){return this._status}listAssistants(){return this.assistants.search({metadata:null,offset:0,limit:100})}async initAssistant(Y,X={}){try{let Z=await this.listAssistants();if(this.availableAssistants=Z,Z.length>0)if(Y){if(this.currentAssistant=Z.find(($)=>$.graph_id===Y)||null,!this.currentAssistant){if(X.fallbackToAvailableAssistants)return this.currentAssistant=this.availableAssistants[0],this.currentAssistant;throw Error("Agent not found: "+Y)}}else return this.currentAssistant=Z[0],this.currentAssistant;else throw Error("No assistants found")}catch(Z){throw console.error("Failed to initialize LangGraphClient:",Z),Z}}async createThread({threadId:Y,graphId:X,metadata:Z}={}){try{return this.currentThread=await this.threads.create({metadata:Z,threadId:Y,graphId:X}),this.currentThread}catch($){throw console.error("Failed to create new thread:",$),$}}graphVisualize(){return this.assistants.getGraph(this.currentAssistant?.assistant_id,{xray:!0})}async listThreads(Y={}){let X={};if(Y.ids)X.ids=Y.ids;if(Y.metadata)X.metadata=Y.metadata;if(Y.status)X.status=Y.status;if(Y.values)X.values=Y.values;if(Y.limit!==void 0)X.limit=Y.limit;if(Y.offset!==void 0)X.offset=Y.offset;if(Y.sortBy)X.sortBy=Y.sortBy;if(Y.sortOrder)X.sortOrder=Y.sortOrder;if(Y.select)X.select=Y.select;if(Y.withoutDetails!==void 0)X.without_details=Y.withoutDetails;if(!Y.sortBy)X.sortBy="updated_at";if(!Y.sortOrder)X.sortOrder="desc";if(!Y.limit)X.limit=10;if(!Y.offset)X.offset=0;if(!Y.withoutDetails)X.without_details=!0;return this.threads.search(X)}async deleteThread(Y){return this.threads.delete(Y)}async resetThread(Y,X){await this.initAssistant(Y),this.currentThread=await this.threads.get(X),this.graphState=this.currentThread.values;let Z=this.graphState?.messages||[];if(this.messageProcessor.setGraphMessages(Z),this.emit("value",{event:"messages/partial",data:{messages:this.messageProcessor.getGraphMessages()}}),this.currentThread?.status==="interrupted")this.sendMessage([],{joinRunId:this.currentThread.thread_id});return this.currentThread}async resetStream(){let X=(await this.runs.list(this.currentThread.thread_id))?.find((Z)=>Z.status==="running"||Z.status==="pending");if(X)await this.sendMessage([],{joinRunId:X.run_id})}cloneMessage(Y){return this.messageProcessor.cloneMessage(Y)}get renderMessage(){return this.messageProcessor.renderMessages(this.graphState,()=>this.getGraphNodeNow(),this.messagesMetadata)}get tokenCounter(){return this.messageProcessor.getGraphMessages().reduce((Y,X)=>{if(X.usage_metadata)Y.total_tokens+=X.usage_metadata?.total_tokens||0,Y.input_tokens+=X.usage_metadata?.input_tokens||0,Y.output_tokens+=X.usage_metadata?.output_tokens||0;else if(X.response_metadata?.usage){let Z=X.response_metadata?.usage;Y.total_tokens+=Z.total_tokens||0,Y.input_tokens+=Z.prompt_tokens||0,Y.output_tokens+=Z.completion_tokens||0}return Y},{total_tokens:0,input_tokens:0,output_tokens:0})}isFELocking(Y){let X=Y[Y.length-1];if(!X)return!1;let Z=this.tools.getTool(X?.name);return Z&&Z.render&&X?.type==="tool"&&!X?.additional_kwargs?.done}cancelRun(){if(this.currentThread?.thread_id&&this.currentRun?.run_id)this.runs.cancel(this.currentThread.thread_id,this.currentRun.run_id)}async revertChatTo(Y,X){let{state:Z,checkpoint:$}=await k1(this.client,this.currentThread.thread_id,Y,X);return this.graphState=Z,this.messageProcessor.clearStreamingMessages(),this.messageProcessor.setGraphMessages(Z.messages),Z}messagesMetadata={};humanInTheLoop=null;interruptData=null;async sendMessage(Y,{joinRunId:X,extraParams:Z,_debug:$,command:B,metadata:W}={}){if(!this.currentAssistant)throw Error("Thread or Assistant not initialized");if(!this.currentThread)await this.createThread({graphId:this.currentAssistant.graph_id,metadata:W}),this.emit("thread",{event:"thread/create",data:{thread:this.currentThread}});if(this.interruptData)this.interruptData=null,this.emit("interruptChange",{event:"interruptChange"});let J=Array.isArray(Y)?Y:[{type:"human",content:Y}],V=[];this._status="busy",this.emit("start",{event:"start"});let Q=await(async()=>{if($?.streamResponse)return $.streamResponse;let F=this.legacyMode?(D)=>{V.push(D),this.processStreamChunk(D,B)}:void 0;if(X)return this.runs.joinStream(this.currentThread.thread_id,X,{onCallback:F});return this.runs.stream(this.currentThread.thread_id,this.currentAssistant.assistant_id,{input:{...this.graphState,...this.extraParams,...Z||{},messages:J,fe_tools:await this.tools.toJSON(this.currentAssistant.graph_id)},streamMode:["messages","values"],streamSubgraphs:!0,command:B,onCallback:F})})();if(!this.legacyMode)for await(let F of Q)V.push(F),this.processStreamChunk(F,B);let G=await this.runFETool();if(await this.responseHumanInTheLoop(),G)V.push(...G);return this._status="idle",this.emit("done",{event:"done"}),this.messageProcessor.clearStreamingMessages(),V}graphPosition="";getGraphPosition(){return this.graphPosition.split("|").map((Y)=>{let[X,Z]=Y.split(":");return{id:Z,name:X}})}getGraphNodeNow(){let Y=this.getGraphPosition();return Y[Y.length-1]}processStreamChunk(Y,X){if(Y.event==="metadata")this.currentRun=Y.data;else if(Y.event==="error"||Y.event==="Error"||Y.event==="__stream_error__")this._status="error",this.emit("error",Y);else if(Y.event==="messages/metadata")return Object.assign(this.messagesMetadata,Y.data),!0;else if(Y.event==="messages/partial"||Y.event==="messages/complete"){for(let Z of Y.data)this.messageProcessor.updateStreamingMessage(Z),this.messageProcessor.spendTime.setSpendTime(Z.id);return this.emit("message",Y),!0}else if(Y.event==="values"){let Z=Y.data;if(Z?.__interrupt__){let $=this.getHumanInTheLoopData(Z?.__interrupt__);if($)this.humanInTheLoop=$;else this.interruptData=Z.__interrupt__}else if(Z?.messages){let $=!!X?.resume,B=Z.messages.length>=this.messageProcessor.getGraphMessages().length;if(!$||$&&B)this.messageProcessor.setGraphMessages(Z.messages),this.emit("value",Y);this.graphState=Y.data}return!0}else if(Y.event.startsWith("values|"))this.graphPosition=Y.event.split("|")[1];return!1}runFETool(){let Y=this.messageProcessor.getStreamingMessages(),X=Y[Y.length-1];if(!X)return;if(X.type==="ai"&&X.tool_calls?.length){let Z=X.tool_calls.map(($)=>{let B={...$,tool_call_id:$.id,tool_input:JSON.stringify($.args),additional_kwargs:{}};return this.callFETool(B,$.args).catch((W)=>console.warn(W))});return console.log("batch call tools",Z.length),this._status="interrupted",this.currentThread.status="interrupted",this.emit("interruptChange",{event:"interruptChange"}),Promise.all(Z)}}getHumanInTheLoopData(Y){if(S.array(S.object({id:S.string(),value:S.union([S.object({review_configs:S.array(S.any())}),S.object({reviewConfigs:S.array(S.any())})])})).safeParse(Y).success){let Z=Y.map(($)=>{if($&&"review_configs"in $.value)return{id:$.id,value:{actionRequests:$.value.action_requests,reviewConfigs:e0($.value.review_configs,{deep:!0})}};return $});return Z.forEach(($)=>{return $.value.actionRequests.forEach((B)=>{B.id=B.id||X0(B)}),$}),{interruptData:Z,result:{}}}}async responseHumanInTheLoop(){if(this.humanInTheLoop){let Y=this.humanInTheLoop;return this.humanInTheLoop=null,this.resume({decisions:Y.interruptData[0].value.actionRequests.map((X)=>{return Y.result[X.id]})})}}async callFETool(Y,X){let Z=this;if(!await this.tools.callTool(Y.name,X,{client:Z,message:Y}))return}extraParams={};resume(Y){return this.sendMessage([],{command:{resume:Y}})}doneFEToolWaiting(Y,X){if(!this.tools.doneWaiting(Y,X)&&this.currentThread?.status==="interrupted")this.resume(X)}doneHumanInTheLoopWaiting(Y,X,Z){if(this.tools.doneWaiting(Y,Z),this.humanInTheLoop)this.humanInTheLoop.result[X]=Z}getCurrentThread(){return this.currentThread}getCurrentAssistant(){return this.currentAssistant}async reset(){await this.initAssistant(this.currentAssistant?.graph_id),this.currentThread=null,this.graphState={},this.messageProcessor.setGraphMessages([]),this.messageProcessor.clearStreamingMessages(),this.currentRun=void 0,this.tools.clearWaiting(),this._status="idle",this.emit("value",{event:"messages/partial",data:{messages:[]}})}}class Y1{sessions=new Map;activeSessionId=null;clientConfig;virtualClient;constructor(Y){this.clientConfig=Y,this.virtualClient=new z0(Y)}async createSession(Y={}){let X=Y.sessionId||this.generateSessionId(),Z=Y.agentName||this.virtualClient.getCurrentAssistant()?.graph_id;if(!Z)throw Error("Agent name is required. Please call init() first or provide agentName.");if(this.sessions.has(X))throw Error(`Session ${X} already exists`);let $={sessionId:X,agentName:Z,metadata:Y.metadata};if(Y.restore)$.thread=await this.virtualClient.threads.get(X);return this.sessions.set(X,$),$}async activateSession(Y,X=!1){let Z=this.sessions.get(Y)||{sessionId:Y,agentName:this.virtualClient.getCurrentAssistant()?.graph_id};if(!Z.client){let B=new z0(this.clientConfig);if(await B.initAssistant(Z.agentName),Z.metadata&&!Z.thread)await B.createThread({graphId:B.getCurrentAssistant()?.graph_id,metadata:Z.metadata});if(Z.thread||X)await B.resetThread(Z.agentName,Y);Z.client=B}let $=this.activeSessionId&&this.sessions.get(this.activeSessionId);if($&&$.client?.status==="idle")$.client?.reset(),$.client=void 0;return this.activeSessionId=Y,Z}getActiveSession(){if(!this.activeSessionId)return null;return this.sessions.get(this.activeSessionId)||null}getSession(Y){return this.sessions.get(Y)||null}getAllSessions(){return Array.from(this.sessions.values())}async deleteSession(Y){if(!this.sessions.get(Y))return!1;if(this.activeSessionId===Y)this.activeSessionId=null;try{await this.virtualClient.deleteThread(Y)}catch(Z){console.warn(`Failed to delete thread for session ${Y}:`,Z)}return this.sessions.delete(Y),!0}async clearAllSessions(){let Y=Array.from(this.sessions.keys());for(let X of Y)await this.deleteSession(X);this.activeSessionId=null}getSessionCount(){return this.sessions.size}generateSessionId(){if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(Y)=>{let X=Math.random()*16|0;return(Y==="x"?X:X&3|8).toString(16)})}async addSessionFromThread(Y,X){let Z=X||this.virtualClient.getCurrentAssistant()?.graph_id;if(!Z)throw Error("Agent name is required. Please call init() first or provide agentName.");return this.createSession({sessionId:Y,agentName:Z,restore:!0})}getActiveClient(){return this.getActiveSession()?.client||null}async listRemoteSessions(Y={}){return this.virtualClient.listThreads(Y)}async syncFromRemote(Y={}){let X=Y.agentName||this.virtualClient.getCurrentAssistant()?.graph_id;if(!X)throw Error("Agent name is required. Please call init() first or provide agentName.");let Z=await this.listRemoteSessions({limit:Y.limit||10,sortBy:"updated_at",sortOrder:"desc"}),$=[];for(let B of Z){let W=B.thread_id;if(this.sessions.has(W)){let J=this.sessions.get(W);J.thread=B,$.push(J)}else{let J={sessionId:W,thread:B,agentName:X};this.sessions.set(W,J),$.push(J)}}return $}async init(Y,X){return this.virtualClient.initAssistant(Y,X)}}var r0=(Y)=>{let X=(K)=>K.toString().padStart(2,"0"),Z=Y.getFullYear(),$=X(Y.getMonth()+1),B=X(Y.getDate()),W=X(Y.getHours()),J=X(Y.getMinutes()),V=X(Y.getSeconds());return`${Z}-${$}-${B} ${W}:${J}:${V}`};var G1=(Y)=>{if(typeof Y==="string")return Y;if(Array.isArray(Y))return Y.map((X)=>{if(typeof X==="string")return X;if(X.type==="text")return X.text;if(X.type==="image_url")return"[图片]";if(X.type==="tool_use")return"";return JSON.stringify(X)}).join("");return JSON.stringify(Y)};var h1=(Y,X,Z={})=>{let $=f(null),B=f([]),W=f(null),J=f([]),V=f([]),K=f(""),Q=f(null),G=f(Y),F=f(null),D=f("__start__"),N=f("idle"),U=f(null),_=f(!1),P=f([]),q=f([]),E=f(Z.showHistory??!1),M=f(Z.showGraph??!1),h=f(null),w=f({page:1,pageSize:10,total:0}),n={metadata:Z.historyFilter?.metadata??null,status:Z.historyFilter?.status??null,sortBy:Z.historyFilter?.sortBy??"updated_at",sortOrder:Z.historyFilter?.sortOrder??"desc"},m=f(n),u=null,G0=f(!1),I=()=>{let z=W.get();if(z)G0.set(z.status==="busy"||z.status==="interrupted")},s=f0((z)=>{if(W.get()!==z)return;let H=z.renderMessage,O=H[H.length-1];D.set(O?.node_name||O?.name||"__start__"),V.set(H),N.set(z.status)},Z.debounceTime??10),D0=async()=>{let z=W.get();if(!z)return;z.tools.clearTools(),z.tools.bindTools(P.get())},F0=async()=>{if(M.get())h.set(await W.get()?.graphVisualize()||null)};async function Z1(){let z=new Y1({...X,client:X.client??await w1(X)});if(await z.init(G.get(),{fallbackToAvailableAssistants:Z.fallbackToAvailableAssistants}),$.set(z),Z.autoRestoreLastSession)if(await T(),B.get().length>0){let H=B.get();await t(H[0].sessionId)}else await H0();else await H0();return z}async function T(){let z=$.get();if(!z)return;try{let H=w.get(),O=m.get(),x=(H.page-1)*H.pageSize,A=await z.listRemoteSessions({limit:H.pageSize,offset:x,metadata:O.metadata||void 0,status:O.status||void 0,sortBy:O.sortBy,sortOrder:O.sortOrder,withoutDetails:!0}),j=A.length===H.pageSize,y=(H.page-1)*H.pageSize+A.length;B.set(A.map((k)=>({sessionId:k.thread_id,thread:k,agentName:G.get(),metadata:k.metadata}))),J.set(A),w.set({...H,total:j?H.page*H.pageSize+1:y})}catch(H){console.error("Failed to sync sessions:",H)}}async function H0(){let z=$.get();if(!z)return;try{let H=await z.createSession();await T(),await t(H.sessionId)}catch(H){console.error("Failed to create new session:",H),Q.set(H.message)}}function u1(z){let H=()=>W.get()===z,O=()=>{if(H())I()},x=()=>{if(!H())return;let c=z.getCurrentThread();F.set(c?.thread_id||null),D.set("__start__");let B1=$.get()?.getActiveSession();if(B1&&c)B1.thread=c;T()},A=()=>{if(H())I(),s(z)},j=(c)=>{if(H())I(),Q.set(c.data)},y=()=>{if(H())F.set(z.getCurrentThread()?.thread_id||null),I(),s(z)},k=()=>{if(H())F.set(z.getCurrentThread()?.thread_id||null),I(),s(z)},a=(c)=>{if(!H())return;let U0=z.interruptData;if(U0)U.set(U0),_.set(!0),I();else U.set(null),_.set(!1);s(z),W.set(W.get())};return z.on("start",O),z.on("thread",x),z.on("done",A),z.on("error",j),z.on("message",y),z.on("value",k),z.on("interruptChange",a),()=>{z.off("start",O),z.off("thread",x),z.off("done",A),z.off("error",j),z.off("message",y),z.off("value",k),z.off("interruptChange",a)}}async function t(z,H=!1){let O=$.get();if(!O)return;try{if(u)u(),u=null;Q.set(null),U.set(null),_.set(!1);let A=(await O.activateSession(z,H)).client;if(A){u=u1(A),Z.onInit?.(A),W.set(A),F.set(z);let j=A.renderMessage;V.set(j);let y=j[j.length-1];if(D.set(y?.node_name||y?.name||"__start__"),I(),M.get())F0();D0();let k=A.getCurrentThread();if(k&&(k.status==="busy"||k.status==="pending"))await A.resetStream();if(k?.status==="interrupted"){let a=A.interruptData;if(a)U.set(a),_.set(!0)}}}catch(x){console.error("Failed to activate session:",x),Q.set(x.message)}}async function N0(z,H,O=!1,x=!1){let A=W.get();if(!O&&!K.get().trim()&&!z?.length||!A)return;if(A.status==="busy")return;Q.set(null);try{G0.set(!0),await A.sendMessage(z||K.get(),H)}catch(j){if(j.message.includes("422"))await A.resetStream();else throw j}finally{K.set(""),I()}}function c1(){W.get()?.cancelRun()}function d1(z){let H=q.get();q.set(H.includes(z)?H.filter((O)=>O!==z):[...H,z])}function l1(){if(E.set(!E.get()),E.get())T()}function p1(z){let H=J.get();J.set([z,...H])}function r1(z){let H=W.get();if(!H)return null;let O=H.tools.getTool(z)?.render;return O?(x)=>O(new o(x,H)):null}let $1=T1(V,W);return{data:{client:W,history:$,sessions:B,renderMessages:V,userInput:K,loading:G0,inChatError:Q,currentAgent:G,currentChatId:F,currentNodeName:D,currentStatus:N,interruptData:U,isInterrupted:_,tools:P,collapsedTools:q,showGraph:M,graphVisualize:h,showHistory:E,historyList:J,historyPagination:w,historyFilter:m,...$1.data},mutations:{initClient:Z1,getClient:()=>W.get(),getHistory:()=>$.get(),activateSession:t,createNewSession:H0,refreshSessionList:T,refreshHistoryList:T,sendMessage:N0,stopGeneration:c1,setUserInput:(z)=>K.set(z),async revertChatTo(z,H=!1,O){if(await W.get()?.revertChatTo(z,O||{}),H)return N0([],O,!0);else s(W.get())},refreshTools:D0,setTools(z){P.set(z),D0()},toggleToolCollapse:d1,getToolUIRender:r1,isFELocking:()=>W.get()?.isFELocking(V.get()),toggleHistoryVisible:l1,toggleGraphVisible(){if(M.set(!M.get()),M.get())F0()},refreshGraph:F0,setCurrentAgent(z){return G.set(z),Z1()},resumeFromInterrupt(z){return N0([],{command:{resume:z}},!0)},addToHistory:p1,async createNewChat(z){let H=$.get();if(!H)return;try{let O=await H.createSession({metadata:z});await T(),await t(O.sessionId)}catch(O){console.error("Failed to create new chat:",O),Q.set(O.message)}},toHistoryChat:(z)=>t(z.thread_id,!0),async deleteHistoryChat(z){let H=$.get();if(H)await H.deleteSession(z.thread_id),await T()},setHistoryPage(z){w.set({...w.get(),page:z}),T()},setHistoryPageSize(z){w.set({...w.get(),pageSize:z,page:1}),T()},setHistoryFilter(z){m.set({...m.get(),...z}),w.set({...w.get(),page:1}),T()},resetHistoryFilter(){m.set({...n}),w.set({...w.get(),page:1}),T()},...$1.mutation}}};var I1=(Y,X)=>{return{...Object.fromEntries(Object.entries(Y.data).map(([$,B])=>{return[$,X(B)]})),...Y.mutations}};var i=I0(y1(),1),X1=(Y,X)=>(Z)=>{if(Y.current===Z)return;Y.current=Z,X()};function g1(Y,{keys:X,deps:Z=[Y,X]}={}){let $=i.useRef();$.current=Y.get();let B=i.useCallback((J)=>{return X1($,J)(Y.value),X?.length>0?O0(Y,X,X1($,J)):Y.listen(X1($,J))},Z),W=()=>$.current;return i.useSyncExternalStore(B,W,W)}var m1=R.createContext(void 0),O6=()=>{let Y=R.useContext(m1);if(!Y)throw Error("useChat must be used within a ChatProvider");return Y},f6=({children:Y,defaultAgent:X="",apiUrl:Z="http://localhost:8123",defaultHeaders:$,withCredentials:B=!1,fetch:W,showHistory:J=!1,showGraph:V=!1,fallbackToAvailableAssistants:K=!1,autoRestoreLastSession:Q=!1,onInitError:G,client:F,legacyMode:D=!1,historyFilter:N,debounceTime:U})=>{let _=R.useMemo(()=>$||{},[$]),P=R.useRef(G);R.useEffect(()=>{P.current=G},[G]);let q=R.useMemo(()=>{let h=W||globalThis.fetch,n={apiUrl:Z,defaultHeaders:_,callerOptions:{fetch:B?(m,u)=>{return u.credentials="include",h(m,u)}:h,maxRetries:1},legacyMode:D};if(F)n.client=F;return h1(X,n,{showHistory:J,showGraph:V,fallbackToAvailableAssistants:K,autoRestoreLastSession:Q,historyFilter:N,debounceTime:U})},[X,Z,_,B,W,J,V,K,Q,F,D,N,U]),E=I1(q,g1),M=R.useRef(!1);return R.useEffect(()=>{if(M.current)return;M.current=!0,E.initClient().catch((h)=>{if(console.error(h),P.current)P.current(h,E.currentAgent)})},[E]),R.createElement(m1.Provider,{value:E},Y)};export{o as v,j5 as w,K0 as x,e0 as y,G1 as z,O6 as A,f6 as B};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as U}from"./chunk-fbemqjck.js";import"./chunk-pzb224c5.js";import{W as g,Y as D}from"./chunk-4wnmk2tj.js";import{Ae as X,Je as L,Ne as V,we as C,ze as w}from"./chunk-c7kd2qrp.js";import"./chunk-t6440ajd.js";import"./chunk-nmzx5nmt.js";import"./chunk-q1cxrg0x.js";import"./chunk-tjg2e8v3.js";import{Dl as v}from"./chunk-y8qhrx11.js";var A=v(C(),1);function E(J){let{historyList:O,refreshHistoryList:Y,setHistoryFilter:Z}=U(),W=J?JSON.stringify(J):null,_=W?["history","list",W]:D.history.list();return g({queryKey:_,queryFn:async()=>{if(J)Z(J);return await Y(),O},staleTime:60000})}var G=v(L(),1),y=({onClose:J})=>{let{currentChatId:O,toHistoryChat:Y,createNewChat:Z,refreshHistoryList:W,historyFilter:_}=U(),b=A.useMemo(()=>({metadata:{path:process.cwd()}}),[]),{data:B=[],refetch:c}=E(b),p=A.useRef(W);A.default.useEffect(()=>{p.current=W},[W]);let j=(z)=>z.toLocaleTimeString(),H=(z)=>{switch(z){case"idle":return{emoji:"\uD83D\uDFE2",color:"green",text:"空闲"};case"busy":return{emoji:"\uD83D\uDFE1",color:"yellow",text:"忙碌"};case"interrupted":return{emoji:"\uD83D\uDFE0",color:"orange",text:"中断"};case"error":return{emoji:"\uD83D\uDD34",color:"red",text:"错误"};default:return{emoji:"⚪",color:"gray",text:z}}},N=A.useCallback(async()=>{return B},[B]),P=A.useCallback((z,$,Q)=>{let S=H(z.status),M=z.thread_id===O,m=j(new Date(z.updated_at)),k=z.title||z.thread_id.slice(-8),x=Q?">":" ",f=M?"▶":" ",T=(()=>{if(M)return{color:"green",bold:!0};else if(Q)return{color:"cyanBright",bold:!0};else return{color:S.color,bold:!1}})();return G.jsxDEV(w,{children:[G.jsxDEV(X,{bold:T.bold,color:T.color,children:[x,f," ",$+1,". ",k]},void 0,!0,void 0,this),G.jsxDEV(w,{flexGrow:1},void 0,!1,void 0,this),G.jsxDEV(X,{dimColor:!0,children:m},void 0,!1,void 0,this)]},z.thread_id,!0,void 0,this)},[O]),F=A.useCallback((z)=>{return z.thread_id===O},[O]),R=A.useCallback(async(z)=>{if(z.value==="new_chat")Z({});else Y(z);J()},[Z,Y,J]),q=A.useCallback((z)=>{let $=z.find((Q)=>Q.thread_id===O);return $?G.jsxDEV(X,{color:"gray",dimColor:!0,children:["当前: ",G.jsxDEV(X,{color:"green",children:$.thread_id.substring(0,8)},void 0,!1,void 0,this),G.jsxDEV(X,{children:[" ",_?.metadata?.path]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null},[O,_]),K=A.useMemo(()=>({}),[]),I=A.useMemo(()=>({id:"history",title:"历史记录",icon:"\uD83D\uDCDC",dataSource:N,searchable:!0,searchFields:["title","thread_id"],searchPlaceholder:"搜索对话标题...",filterable:!1,filters:[],defaultFilter:"all",itemHeight:1,visibleCount:10,renderItem:P,isSelected:F,onSelect:R,showCount:!0,statusInfo:q,keyMap:K}),[N,P,F,R,q,K]);return G.jsxDEV(V,{config:I,onClose:J},void 0,!1,void 0,this)},zz=y;export{zz as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{ul as X$}from"./chunk-nsw5168d.js";import{Fl as J,Il as P}from"./chunk-y8qhrx11.js";var t=J((d$,l)=>{var N=1000,T=N*60,F=T*60,L=F*24,Dq=L*7,vq=L*365.25;l.exports=function(q,_){_=_||{};var $=typeof q;if($==="string"&&q.length>0)return bq(q);else if($==="number"&&isFinite(q))return _.long?iq(q):hq(q);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(q))};function bq(q){if(q=String(q),q.length>100)return;var _=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(q);if(!_)return;var $=parseFloat(_[1]),B=(_[2]||"ms").toLowerCase();switch(B){case"years":case"year":case"yrs":case"yr":case"y":return $*vq;case"weeks":case"week":case"w":return $*Dq;case"days":case"day":case"d":return $*L;case"hours":case"hour":case"hrs":case"hr":case"h":return $*F;case"minutes":case"minute":case"mins":case"min":case"m":return $*T;case"seconds":case"second":case"secs":case"sec":case"s":return $*N;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return $;default:return}}function hq(q){var _=Math.abs(q);if(_>=L)return Math.round(q/L)+"d";if(_>=F)return Math.round(q/F)+"h";if(_>=T)return Math.round(q/T)+"m";if(_>=N)return Math.round(q/N)+"s";return q+"ms"}function iq(q){var _=Math.abs(q);if(_>=L)return E(q,_,L,"day");if(_>=F)return E(q,_,F,"hour");if(_>=T)return E(q,_,T,"minute");if(_>=N)return E(q,_,N,"second");return q+" ms"}function E(q,_,$,B){var G=_>=$*1.5;return Math.round(q/$)+" "+B+(G?"s":"")}});var D=J((n$,r)=>{function uq(q){$.debug=$,$.default=$,$.coerce=Iq,$.disable=W,$.enable=G,$.enabled=f,$.humanize=t(),$.destroy=xq,Object.keys(q).forEach((H)=>{$[H]=q[H]}),$.names=[],$.skips=[],$.formatters={};function _(H){let Q=0;for(let V=0;V<H.length;V++)Q=(Q<<5)-Q+H.charCodeAt(V),Q|=0;return $.colors[Math.abs(Q)%$.colors.length]}$.selectColor=_;function $(H){let Q,V=null,U,O;function Y(...K){if(!Y.enabled)return;let X=Y,A=Number(new Date),yq=A-(Q||A);if(X.diff=yq,X.prev=Q,X.curr=A,Q=A,K[0]=$.coerce(K[0]),typeof K[0]!=="string")K.unshift("%O");let w=0;K[0]=K[0].replace(/%([a-zA-Z%])/g,(C,fq)=>{if(C==="%%")return"%";w++;let m=$.formatters[fq];if(typeof m==="function"){let Cq=K[w];C=m.call(X,Cq),K.splice(w,1),w--}return C}),$.formatArgs.call(X,K),(X.log||$.log).apply(X,K)}if(Y.namespace=H,Y.useColors=$.useColors(),Y.color=$.selectColor(H),Y.extend=B,Y.destroy=$.destroy,Object.defineProperty(Y,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(V!==null)return V;if(U!==$.namespaces)U=$.namespaces,O=$.enabled(H);return O},set:(K)=>{V=K}}),typeof $.init==="function")$.init(Y);return Y}function B(H,Q){let V=$(this.namespace+(typeof Q>"u"?":":Q)+H);return V.log=this.log,V}function G(H){$.save(H),$.namespaces=H,$.names=[],$.skips=[];let Q=(typeof H==="string"?H:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let V of Q)if(V[0]==="-")$.skips.push(V.slice(1));else $.names.push(V)}function z(H,Q){let V=0,U=0,O=-1,Y=0;while(V<H.length)if(U<Q.length&&(Q[U]===H[V]||Q[U]==="*"))if(Q[U]==="*")O=U,Y=V,U++;else V++,U++;else if(O!==-1)U=O+1,Y++,V=Y;else return!1;while(U<Q.length&&Q[U]==="*")U++;return U===Q.length}function W(){let H=[...$.names,...$.skips.map((Q)=>"-"+Q)].join(",");return $.enable(""),H}function f(H){for(let Q of $.skips)if(z(H,Q))return!1;for(let Q of $.names)if(z(H,Q))return!0;return!1}function Iq(H){if(H instanceof Error)return H.stack||H.message;return H}function xq(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return $.enable($.load()),$}r.exports=uq});var a=J((s,I)=>{s.formatArgs=gq;s.save=dq;s.load=nq;s.useColors=cq;s.storage=pq();s.destroy=(()=>{let q=!1;return()=>{if(!q)q=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();s.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function cq(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let q;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(q=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(q[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function gq(q){if(q[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+q[0]+(this.useColors?"%c ":" ")+"+"+I.exports.humanize(this.diff),!this.useColors)return;let _="color: "+this.color;q.splice(1,0,_,"color: inherit");let $=0,B=0;q[0].replace(/%[a-zA-Z%]/g,(G)=>{if(G==="%%")return;if($++,G==="%c")B=$}),q.splice(B,0,_)}s.log=console.debug||console.log||(()=>{});function dq(q){try{if(q)s.storage.setItem("debug",q);else s.storage.removeItem("debug")}catch(_){}}function nq(){let q;try{q=s.storage.getItem("debug")||s.storage.getItem("DEBUG")}catch(_){}if(!q&&typeof process<"u"&&"env"in process)q=process.env.DEBUG;return q}function pq(){try{return localStorage}catch(q){}}I.exports=D()(s);var{formatters:oq}=I.exports;oq.j=function(q){try{return JSON.stringify(q)}catch(_){return"[UnexpectedJSONParseError]: "+_.message}}});var qq=J((o$,e)=>{e.exports=(q,_=process.argv)=>{let $=q.startsWith("-")?"":q.length===1?"-":"--",B=_.indexOf($+q),G=_.indexOf("--");return B!==-1&&(G===-1||B<G)}});var Bq=J((m$,_q)=>{var q$=P("os"),$q=P("tty"),j=qq(),{env:Z}=process,M;if(j("no-color")||j("no-colors")||j("color=false")||j("color=never"))M=0;else if(j("color")||j("colors")||j("color=true")||j("color=always"))M=1;if("FORCE_COLOR"in Z)if(Z.FORCE_COLOR==="true")M=1;else if(Z.FORCE_COLOR==="false")M=0;else M=Z.FORCE_COLOR.length===0?1:Math.min(parseInt(Z.FORCE_COLOR,10),3);function v(q){if(q===0)return!1;return{level:q,hasBasic:!0,has256:q>=2,has16m:q>=3}}function b(q,_){if(M===0)return 0;if(j("color=16m")||j("color=full")||j("color=truecolor"))return 3;if(j("color=256"))return 2;if(q&&!_&&M===void 0)return 0;let $=M||0;if(Z.TERM==="dumb")return $;if(process.platform==="win32"){let B=q$.release().split(".");if(Number(B[0])>=10&&Number(B[2])>=10586)return Number(B[2])>=14931?3:2;return 1}if("CI"in Z){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((B)=>(B in Z))||Z.CI_NAME==="codeship")return 1;return $}if("TEAMCITY_VERSION"in Z)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Z.TEAMCITY_VERSION)?1:0;if(Z.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Z){let B=parseInt((Z.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Z.TERM_PROGRAM){case"iTerm.app":return B>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(Z.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Z.TERM))return 1;if("COLORTERM"in Z)return 1;return $}function $$(q){let _=b(q,q&&q.isTTY);return v(_)}_q.exports={supportsColor:$$,stdout:v(b(!0,$q.isatty(1))),stderr:v(b(!0,$q.isatty(2)))}});var Vq=J((Hq,y)=>{var _$=P("tty"),x=P("util");Hq.init=J$;Hq.log=Q$;Hq.formatArgs=G$;Hq.save=V$;Hq.load=Z$;Hq.useColors=B$;Hq.destroy=x.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Hq.colors=[6,2,3,4,5,1];try{let q=Bq();if(q&&(q.stderr||q).level>=2)Hq.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch(q){}Hq.inspectOpts=Object.keys(process.env).filter((q)=>{return/^debug_/i.test(q)}).reduce((q,_)=>{let $=_.substring(6).toLowerCase().replace(/_([a-z])/g,(G,z)=>{return z.toUpperCase()}),B=process.env[_];if(/^(yes|on|true|enabled)$/i.test(B))B=!0;else if(/^(no|off|false|disabled)$/i.test(B))B=!1;else if(B==="null")B=null;else B=Number(B);return q[$]=B,q},{});function B$(){return"colors"in Hq.inspectOpts?Boolean(Hq.inspectOpts.colors):_$.isatty(process.stderr.fd)}function G$(q){let{namespace:_,useColors:$}=this;if($){let B=this.color,G="\x1B[3"+(B<8?B:"8;5;"+B),z=` ${G};1m${_} \x1B[0m`;q[0]=z+q[0].split(`
|
|
2
|
+
`).join(`
|
|
3
|
+
`+z),q.push(G+"m+"+y.exports.humanize(this.diff)+"\x1B[0m")}else q[0]=H$()+_+" "+q[0]}function H$(){if(Hq.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function Q$(...q){return process.stderr.write(x.formatWithOptions(Hq.inspectOpts,...q)+`
|
|
4
|
+
`)}function V$(q){if(q)process.env.DEBUG=q;else delete process.env.DEBUG}function Z$(){return process.env.DEBUG}function J$(q){q.inspectOpts={};let _=Object.keys(Hq.inspectOpts);for(let $=0;$<_.length;$++)q.inspectOpts[_[$]]=Hq.inspectOpts[_[$]]}y.exports=D()(Hq);var{formatters:Gq}=y.exports;Gq.o=function(q){return this.inspectOpts.colors=this.useColors,x.inspect(q,this.inspectOpts).split(`
|
|
5
|
+
`).map((_)=>_.trim()).join(" ")};Gq.O=function(q){return this.inspectOpts.colors=this.useColors,x.inspect(q,this.inspectOpts)}});var W$=J((t$,h)=>{if(typeof process>"u"||process.type==="renderer"||!1||process.__nwjs)h.exports=a();else h.exports=Vq()});var Jq=J((r$,i)=>{var Zq=(q={})=>{let _=q.env||process.env;if((q.platform||process.platform)!=="win32")return"PATH";return Object.keys(_).reverse().find((B)=>B.toUpperCase()==="PATH")||"Path"};i.exports=Zq;i.exports.default=Zq});var Kq=J((s$,Yq)=>{var zq=P("path"),L$=X$(),R$=Jq();function Uq(q,_){let $=q.options.env||process.env,B=process.cwd(),G=q.options.cwd!=null,z=G&&process.chdir!==void 0&&!process.chdir.disabled;if(z)try{process.chdir(q.options.cwd)}catch(f){}let W;try{W=L$.sync(q.command,{path:$[R$({env:$})],pathExt:_?zq.delimiter:void 0})}catch(f){}finally{if(z)process.chdir(B)}if(W)W=zq.resolve(G?q.options.cwd:"",W);return W}function O$(q){return Uq(q)||Uq(q,!0)}Yq.exports=O$});var jq=J((F$,c)=>{var u=/([()\][%!^"`<>&|;, *?])/g;function N$(q){return q=q.replace(u,"^$1"),q}function T$(q,_){if(q=`${q}`,q=q.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),q=q.replace(/(?=(\\+?)?)\1$/,"$1$1"),q=`"${q}"`,q=q.replace(u,"^$1"),_)q=q.replace(u,"^$1");return q}F$.command=N$;F$.argument=T$});var Pq=J((a$,Mq)=>{Mq.exports=/^#!(.*)/});var Xq=J((e$,Wq)=>{var A$=Pq();Wq.exports=(q="")=>{let _=q.match(A$);if(!_)return null;let[$,B]=_[0].replace(/#! ?/,"").split(" "),G=$.split("/").pop();if(G==="env")return B;return B?`${G} ${B}`:G}});var Rq=J((q_,Lq)=>{var g=P("fs"),w$=Xq();function E$(q){let $=Buffer.alloc(150),B;try{B=g.openSync(q,"r"),g.readSync(B,$,0,150,0),g.closeSync(B)}catch(G){}return w$($.toString())}Lq.exports=E$});var Fq=J(($_,Tq)=>{var I$=P("path"),Oq=Kq(),Nq=jq(),x$=Rq(),y$=process.platform==="win32",f$=/\.(?:com|exe)$/i,C$=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function D$(q){q.file=Oq(q);let _=q.file&&x$(q.file);if(_)return q.args.unshift(q.file),q.command=_,Oq(q);return q.file}function v$(q){if(!y$)return q;let _=D$(q),$=!f$.test(_);if(q.options.forceShell||$){let B=C$.test(_);q.command=I$.normalize(q.command),q.command=Nq.command(q.command),q.args=q.args.map((z)=>Nq.argument(z,B));let G=[q.command].concat(q.args).join(" ");q.args=["/d","/s","/c",`"${G}"`],q.command=process.env.comspec||"cmd.exe",q.options.windowsVerbatimArguments=!0}return q}function b$(q,_,$){if(_&&!Array.isArray(_))$=_,_=null;_=_?_.slice(0):[],$=Object.assign({},$);let B={command:q,args:_,options:$,file:void 0,original:{command:q,args:_}};return $.shell?B:v$(B)}Tq.exports=b$});var Aq=J((__,kq)=>{var d=process.platform==="win32";function n(q,_){return Object.assign(Error(`${_} ${q.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${_} ${q.command}`,path:q.command,spawnargs:q.args})}function h$(q,_){if(!d)return;let $=q.emit;q.emit=function(B,G){if(B==="exit"){let z=Sq(G,_);if(z)return $.call(q,"error",z)}return $.apply(q,arguments)}}function Sq(q,_){if(d&&q===1&&!_.file)return n(_.original,"spawn");return null}function i$(q,_){if(d&&q===1&&!_.file)return n(_.original,"spawnSync");return null}kq.exports={hookChildProcess:h$,verifyENOENT:Sq,verifyENOENTSync:i$,notFoundError:n}});var c$=J((B_,S)=>{var wq=P("child_process"),p=Fq(),o=Aq();function Eq(q,_,$){let B=p(q,_,$),G=wq.spawn(B.command,B.args,B.options);return o.hookChildProcess(G,B),G}function u$(q,_,$){let B=p(q,_,$),G=wq.spawnSync(B.command,B.args,B.options);return G.error=G.error||o.verifyENOENTSync(G.status,B),G}S.exports=Eq;S.exports.spawn=Eq;S.exports.sync=u$;S.exports._parse=p;S.exports._enoent=o});
|
|
6
|
+
export{W$ as eg,c$ as fg};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import{Gd as D,xd as q}from"./chunk-n9rpnke9.js";import{$g as C,Dg as N,Fg as Q,Xg as x,Yg as _,_g as b,ah as f}from"./chunk-hp2jzn9x.js";import"./chunk-nk62q95g.js";import"./chunk-nmzx5nmt.js";import"./chunk-tjg2e8v3.js";import"./chunk-hve2a279.js";import{Dl as m,Il as j}from"./chunk-y8qhrx11.js";var K={maxRetries:3,baseDelayMs:100,nonRetryablePatterns:["database disk image is malformed","database is malformed","cannot rollback","no transaction is active","database or disk is full"],isRetryableError:(H)=>{let Z=H?.message?.toLowerCase()||"";for(let B of K.nonRetryablePatterns)if(Z.includes(B.toLowerCase()))return!1;return Z.includes("sqlite_busy")||Z.includes("database is locked")||Z==="sqlite_busy"||Z==="database is locked"}};async function R(H,Z){let B=null;for(let $=0;$<K.maxRetries;$++)try{return await H()}catch(J){B=J;let U=J?.message?.toLowerCase()||"";if(!K.isRetryableError(J)){if(U.includes("malformed")){let M=Error(`SQLite database is corrupted: ${J.message}
|
|
2
|
+
|
|
3
|
+
Context: ${Z||"unknown"}
|
|
4
|
+
|
|
5
|
+
Possible causes:
|
|
6
|
+
1. Database file was manually deleted or modified
|
|
7
|
+
2. Disk I/O errors during write operations
|
|
8
|
+
3. Concurrent access without proper locking
|
|
9
|
+
|
|
10
|
+
Recovery options:
|
|
11
|
+
- Delete the database file to start fresh (data will be lost)
|
|
12
|
+
- Use SQLite recovery tools: sqlite3 <db> ".recover" > recover.sql
|
|
13
|
+
- Switch to PostgreSQL/Redis for production use`);throw M.name="SQLiteCorruptError",M.cause=J,M}throw J}if($<K.maxRetries-1){let M=K.baseDelayMs*Math.pow(2,$);console.warn(`SQLite lock detected${Z?` (${Z})`:""}, retrying in ${M}ms (attempt ${$+1}/${K.maxRetries})`),await new Promise((X)=>setTimeout(X,M))}}throw B}function T(H){if(H===null||typeof H!=="object")return JSON.stringify(H);if(Array.isArray(H))return JSON.stringify(H.map(($)=>T($)));let Z={},B=Object.keys(H).sort();for(let $ of B)Z[$]=H[$];return JSON.stringify(Z,($,J)=>{if(J!==null&&typeof J==="object"&&!Array.isArray(J)){let U={},M=Object.keys(J).sort();for(let X of M)U[X]=J[X];return U}return J})}class E extends _{db;isSetup;constructor(H,Z){super(Z);this.db=new q({dialect:H}),this.isSetup=!1}static async fromConnStringAsync(H){let Z;if(globalThis.Bun&&!process.env.DISABLE_BUN_SQLITE){console.log("LG | Using BunSqliteDialect "+H);let{BunSqliteDialect:B}=await import("./chunk-mmx0k2yq.js");Z=new E(new B({url:H}))}else{console.log("LG | Using NodeWasmDialect");let{default:B}=await import("./chunk-vbb3m0vz.js").then((m)=>m(m.default,1)),{NodeWasmDialect:$}=await import("./chunk-zg54h6gy.js");console.log(H);let J=new $({database:new B.Database(H)});Z=new E(J)}return await Z.setup(),Z}async setup(){if(this.isSetup)return;await D`PRAGMA busy_timeout = 5000`.execute(this.db),await D`PRAGMA journal_mode = WAL`.execute(this.db),await D`PRAGMA synchronous = NORMAL`.execute(this.db),await D`PRAGMA wal_autocheckpoint = 1000`.execute(this.db),await D`
|
|
14
|
+
CREATE TABLE IF NOT EXISTS shallow_checkpoints (
|
|
15
|
+
thread_id TEXT NOT NULL,
|
|
16
|
+
checkpoint_ns TEXT NOT NULL DEFAULT '',
|
|
17
|
+
checkpoint_id TEXT NOT NULL,
|
|
18
|
+
parent_checkpoint_id TEXT,
|
|
19
|
+
type TEXT,
|
|
20
|
+
checkpoint BLOB,
|
|
21
|
+
metadata BLOB,
|
|
22
|
+
checkpoint_ts INTEGER NOT NULL DEFAULT 0,
|
|
23
|
+
PRIMARY KEY (thread_id, checkpoint_ns)
|
|
24
|
+
)`.execute(this.db),await D`
|
|
25
|
+
CREATE INDEX IF NOT EXISTS idx_shallow_checkpoints_ts
|
|
26
|
+
ON shallow_checkpoints(checkpoint_ts DESC)`.execute(this.db),await D`
|
|
27
|
+
CREATE TABLE IF NOT EXISTS writes (
|
|
28
|
+
thread_id TEXT NOT NULL,
|
|
29
|
+
checkpoint_ns TEXT NOT NULL DEFAULT '',
|
|
30
|
+
checkpoint_id TEXT NOT NULL,
|
|
31
|
+
task_id TEXT NOT NULL,
|
|
32
|
+
idx INTEGER NOT NULL,
|
|
33
|
+
channel TEXT NOT NULL,
|
|
34
|
+
type TEXT,
|
|
35
|
+
value BLOB,
|
|
36
|
+
PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)
|
|
37
|
+
)`.execute(this.db),this.isSetup=!0}async get(H){return(await this.getTuple(H))?.checkpoint}async getTuple(H){await this.setup();let Z=H.configurable?.thread_id,B=H.configurable?.checkpoint_ns??"",$=f(H);if(Z===void 0)return;let J=this.db.selectFrom("shallow_checkpoints").select(["thread_id","checkpoint_ns","checkpoint_id","parent_checkpoint_id","type","checkpoint","metadata","checkpoint_ts",D`(
|
|
38
|
+
SELECT json_group_array(
|
|
39
|
+
json_object(
|
|
40
|
+
'task_id', pw.task_id,
|
|
41
|
+
'channel', pw.channel,
|
|
42
|
+
'type', pw.type,
|
|
43
|
+
'value', CAST(pw.value AS TEXT)
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
FROM writes as pw
|
|
47
|
+
WHERE pw.thread_id = shallow_checkpoints.thread_id
|
|
48
|
+
AND pw.checkpoint_ns = shallow_checkpoints.checkpoint_ns
|
|
49
|
+
AND pw.checkpoint_id = shallow_checkpoints.checkpoint_id
|
|
50
|
+
)`.as("pending_writes"),D`(
|
|
51
|
+
SELECT json_group_array(
|
|
52
|
+
json_object(
|
|
53
|
+
'type', ps.type,
|
|
54
|
+
'value', CAST(ps.value AS TEXT)
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
FROM writes as ps
|
|
58
|
+
WHERE ps.thread_id = shallow_checkpoints.thread_id
|
|
59
|
+
AND ps.checkpoint_ns = shallow_checkpoints.checkpoint_ns
|
|
60
|
+
AND ps.checkpoint_id = shallow_checkpoints.parent_checkpoint_id
|
|
61
|
+
AND ps.channel = ${Q}
|
|
62
|
+
ORDER BY ps.idx
|
|
63
|
+
)`.as("pending_sends")]).where("thread_id","=",Z).where("checkpoint_ns","=",B);if($)J=J.where("checkpoint_id","=",$);let U=await J.executeTakeFirst();if(!U)return;if($&&U.checkpoint_id!==$)return;let M=await Promise.all(JSON.parse(U.pending_writes||"[]").map(async(A)=>{return[A.task_id,A.channel,await this.serde.loadsTyped(A.type??"json",A.value??"")]})),X=await this.serde.loadsTyped(U.type??"json",new TextDecoder().decode(U.checkpoint));if(X.v<4&&U.parent_checkpoint_id!=null)await this.migratePendingSends(X,U.thread_id,U.parent_checkpoint_id);let W={configurable:{thread_id:U.thread_id,checkpoint_ns:U.checkpoint_ns,checkpoint_id:U.checkpoint_id}};return{checkpoint:X,config:W,metadata:await this.serde.loadsTyped(U.type??"json",new TextDecoder().decode(U.metadata)),parentConfig:U.parent_checkpoint_id?{configurable:{thread_id:U.thread_id,checkpoint_ns:U.checkpoint_ns,checkpoint_id:U.parent_checkpoint_id}}:void 0,pendingWrites:M}}async*list(H,Z){await this.setup();let{limit:B,before:$,filter:J}=Z??{},U=H.configurable?.thread_id,M=H.configurable?.checkpoint_ns,X=this.db.selectFrom("shallow_checkpoints").select(["thread_id","checkpoint_ns","checkpoint_id","parent_checkpoint_id","type","checkpoint","metadata","checkpoint_ts",D`(
|
|
64
|
+
SELECT json_group_array(
|
|
65
|
+
json_object(
|
|
66
|
+
'task_id', pw.task_id,
|
|
67
|
+
'channel', pw.channel,
|
|
68
|
+
'type', pw.type,
|
|
69
|
+
'value', CAST(pw.value AS TEXT)
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
FROM writes as pw
|
|
73
|
+
WHERE pw.thread_id = shallow_checkpoints.thread_id
|
|
74
|
+
AND pw.checkpoint_ns = shallow_checkpoints.checkpoint_ns
|
|
75
|
+
AND pw.checkpoint_id = shallow_checkpoints.checkpoint_id
|
|
76
|
+
)`.as("pending_writes")]);if(U)X=X.where("thread_id","=",U);if(M!==void 0&&M!==null)X=X.where("checkpoint_ns","=",M);if($?.configurable?.checkpoint_id!==void 0)X=X.where("checkpoint_id","<",$.configurable.checkpoint_id);X=X.orderBy("checkpoint_ts","desc");let W=await X.execute(),A=0;for(let z of W){let V=await this.serde.loadsTyped(z.type??"json",new TextDecoder().decode(z.metadata));if(J&&!this._checkMetadataFilterMatch(V,J))continue;if(B!==void 0&&A>=B)return;let Y=await Promise.all(JSON.parse(z.pending_writes||"[]").map(async(F)=>{return[F.task_id,F.channel,await this.serde.loadsTyped(F.type??"json",F.value??"")]})),G=await this.serde.loadsTyped(z.type??"json",new TextDecoder().decode(z.checkpoint));if(G.v<4&&z.parent_checkpoint_id!=null)await this.migratePendingSends(G,z.thread_id,z.parent_checkpoint_id);A++,yield{config:{configurable:{thread_id:z.thread_id,checkpoint_ns:z.checkpoint_ns,checkpoint_id:z.checkpoint_id}},checkpoint:G,metadata:V,parentConfig:z.parent_checkpoint_id?{configurable:{thread_id:z.thread_id,checkpoint_ns:z.checkpoint_ns,checkpoint_id:z.parent_checkpoint_id}}:void 0,pendingWrites:Y}}}_checkMetadataFilterMatch(H,Z){for(let[B,$]of Object.entries(Z)){let J=H?.[B];if($===null){if(!(B in(H||{}))||J!==null)return!1}else if(typeof $==="object"&&!Array.isArray($)){if(typeof J!=="object"||J===null)return!1;if(T($)!==T(J))return!1}else if(J!==$)return!1}return!0}async put(H,Z,B,$){await this.setup();let J=H.configurable?.thread_id,U=H.configurable?.checkpoint_ns??"",M=H.configurable?.checkpoint_id;if(!J)throw Error("thread_id is required");let X=Z.id||N(0),W=x(Z),[[A,z],[V,Y]]=await Promise.all([this.serde.dumpsTyped(W),this.serde.dumpsTyped(B)]);if(A!==V)throw Error("Failed to serialize checkpoint and metadata to the same type.");let G=J,F=U,P=X;return await R(async()=>{await this.db.transaction().execute(async(L)=>{let O=await L.selectFrom("shallow_checkpoints").select(["checkpoint_id"]).where("thread_id","=",G).where("checkpoint_ns","=",F).executeTakeFirst();if(O&&O.checkpoint_id!==P)await L.deleteFrom("writes").where("thread_id","=",G).where("checkpoint_ns","=",F).where("checkpoint_id","=",O.checkpoint_id).execute();await L.insertInto("shallow_checkpoints").values({thread_id:G,checkpoint_ns:F,checkpoint_id:P,parent_checkpoint_id:M??null,type:A,checkpoint:new Uint8Array(Buffer.from(z)),metadata:new Uint8Array(Buffer.from(Y)),checkpoint_ts:Date.now()}).onConflict((v)=>v.columns(["thread_id","checkpoint_ns"]).doUpdateSet({checkpoint_id:P,parent_checkpoint_id:M??null,type:A,checkpoint:new Uint8Array(Buffer.from(z)),metadata:new Uint8Array(Buffer.from(Y)),checkpoint_ts:Date.now()})).execute()})},`put(${J}/${X})`),{configurable:{thread_id:J,checkpoint_ns:U,checkpoint_id:X}}}async putWrites(H,Z,B){await this.setup();let $=H.configurable?.thread_id,J=H.configurable?.checkpoint_ns??"",U=H.configurable?.checkpoint_id;if(!$||!U)throw Error("thread_id and checkpoint_id are required");let M=await Promise.all(Z.map(async(X,W)=>{let[A,z]=await this.serde.dumpsTyped(X[1]);return{thread_id:$,checkpoint_ns:J,checkpoint_id:U,task_id:B,idx:C[X[0]]??W,channel:X[0],type:A,value:new Uint8Array(Buffer.from(z))}}));if(M.length===0)return;await R(async()=>{await this.db.transaction().execute(async(X)=>{await X.deleteFrom("writes").where("thread_id","=",$).where("checkpoint_ns","=",J).where("checkpoint_id","=",U).where("task_id","=",B).execute();for(let W of M)await X.insertInto("writes").values(W).execute()})},`putWrites(${$}/${U}/${B})`)}async deleteThread(H){await R(async()=>{await this.db.transaction().execute(async(Z)=>{await Z.deleteFrom("shallow_checkpoints").where("thread_id","=",H).execute(),await Z.deleteFrom("writes").where("thread_id","=",H).execute()})},`deleteThread(${H})`)}async migratePendingSends(H,Z,B){let $=await this.db.selectFrom("writes as ps").select(["ps.checkpoint_id",D`json_group_array(
|
|
77
|
+
json_object(
|
|
78
|
+
'type', ps.type,
|
|
79
|
+
'value', CAST(ps.value AS TEXT)
|
|
80
|
+
)
|
|
81
|
+
)`.as("pending_sends")]).where("ps.thread_id","=",Z).where("ps.checkpoint_id","=",B).where("ps.channel","=",Q).orderBy("ps.idx").executeTakeFirst();if(!$)return;let J=H;J.channel_values??={},J.channel_values[Q]=await Promise.all(JSON.parse($.pending_sends||"[]").map(({type:U,value:M})=>this.serde.loadsTyped(U,M))),J.channel_versions[Q]=Object.keys(H.channel_versions).length>0?b(...Object.values(H.channel_versions)):this.getNextVersion(void 0)}}export{E as SqliteShallowSaver};
|