@ax-llm/ax 18.0.11 → 18.0.12
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/index.cjs +2 -2
- package/index.cjs.map +1 -1
- package/index.global.js +2 -2
- package/index.global.js.map +1 -1
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ax-agent.md +1 -1
- package/skills/ax-llm.md +1 -1
package/index.global.js
CHANGED
|
@@ -782,14 +782,14 @@ ${e.output}${e.actorFieldsOutput}`).join(`
|
|
|
782
782
|
}).join('\\n') || '(no user variables)';
|
|
783
783
|
})()`}var bc=50,tm=5e3,nm=8,Ic=10,rm=2,qr=class s{ai;program;actorProgram;responderProgram;functions;agents;debug;options;rlmConfig;runtime;actorFieldNames;sharedFieldNames;excludedSharedFields;actorDescription;responderDescription;recursionForwardOptions;actorForwardOptions;responderForwardOptions;activeAbortControllers=new Set;_stopRequested=!1;func;_parentSharedFields=new Set;constructor({ai:e,agentIdentity:t,signature:n,agents:r,functions:o},i){let{debug:a,contextFields:l,runtime:u,maxLlmCalls:c,maxRuntimeChars:p,maxBatchedLlmQueryConcurrency:d,maxTurns:m,trajectoryPruning:g,contextManagement:h,actorFields:f,actorCallback:y,mode:x,recursionOptions:A,actorOptions:R,responderOptions:b}=i;this.ai=e,this.agents=r,this.functions=o,this.debug=a,this.options=i,this.runtime=u??new Vt,this.rlmConfig={contextFields:l,sharedFields:i.sharedFields,runtime:this.runtime,maxLlmCalls:c,maxRuntimeChars:p,maxBatchedLlmQueryConcurrency:d,maxTurns:m,trajectoryPruning:g,contextManagement:h,actorFields:f,actorCallback:y,mode:x},this.recursionForwardOptions=A;let{description:T,...M}=R??{},{description:N,...E}=b??{};this.actorDescription=T,this.actorForwardOptions=M,this.responderDescription=N,this.responderForwardOptions=E,this.program=new Se(n,{...i});for(let v of r??[]){let k=v.getFunction().name;this.program.register(v,k)}t&&(this.func={name:lm(t.name),description:t.description,parameters:this._buildFuncParameters(),func:async()=>{throw new Error("Use getFunction() to get a callable wrapper")}});let U=this.program.getSignature().getInputFields();for(let v of l)if(!U.some(k=>k.name===v))throw new Error(`RLM contextField "${v}" not found in signature`);if(this.program.getSignature().getDescription())throw new Error("AxAgent does not support signature-level descriptions. Use setActorDescription() and/or setResponderDescription() to customize the actor and responder prompts independently.");let B=this.program.getSignature().getOutputFields(),L=f??[];this.actorFieldNames=L;for(let v of L)if(!B.some(k=>k.name===v))throw new Error(`RLM actorField "${v}" not found in output signature`);let I=i.sharedFields??[];this.sharedFieldNames=I;for(let v of I)if(!U.some(k=>k.name===v))throw new Error(`sharedField "${v}" not found in signature input fields`);if(this.excludedSharedFields=i.excludeSharedFields??[],I.length>0&&r){let v=U.filter(k=>I.includes(k.name));for(let k of r){if(!(k instanceof s))continue;let $=new Set(k.getExcludedSharedFields()),S=v.filter(P=>!$.has(P.name));S.length!==0&&k._extendForSharedFields(S,l)}}this._buildSplitPrograms(),this.program.register(this.actorProgram,"actor"),this.program.register(this.responderProgram,"responder")}_buildSplitPrograms(){let e=this.program.getSignature().getInputFields(),t=this.rlmConfig.contextFields,n=this.sharedFieldNames,r=e.filter(x=>t.includes(x.name)),o=e.filter(x=>!t.includes(x.name)&&!n.includes(x.name)),i=this.program.getSignature().getOutputFields(),a=i.filter(x=>this.actorFieldNames.includes(x.name)),l=i.filter(x=>!this.actorFieldNames.includes(x.name)),u=fe().addInputFields(o).input("contextMetadata",fe.string("Metadata about pre-loaded context variables (type and size)")).input("actionLog",fe.string("Chronological trace of code executions or actions and their outputs so far")).output("javascriptCode",fe.code("JavaScript code to execute in runtime session"));a.length>0&&(u=u.addOutputFields(a));let c=u.build(),p=fe().addInputFields(o).input("contextData",fe.json("Context data to help synthesize the final answer.")).addOutputFields(l).build(),d=this.rlmConfig.maxLlmCalls??bc,m=this.rlmConfig.maxTurns??Ic,g=this.agents?.map(x=>{let A=x.getFunction();return{name:A.name,description:A.description,parameters:A.parameters}})??[],h=this.collectFunctions().map(x=>({name:x.name,description:x.description,parameters:x.parameters})),f=vs(this.actorDescription,r,l,{runtimeUsageInstructions:this.runtime.getUsageInstructions(),maxLlmCalls:d,maxTurns:m,hasInspectRuntime:!!this.rlmConfig.contextManagement?.stateInspection,agents:g,functions:h}),y=Ss(this.responderDescription,r);this.actorProgram=new Se(c,{...this.options,description:f}),this.responderProgram=new Se(p,{...this.options,description:y})}_extendForSharedFields(e,t){let n=this.program.getSignature(),r=n.getInputFields(),o=!1;for(let i of e)r.some(a=>a.name===i.name)||(this._parentSharedFields.add(i.name),n.addInputField(i),o=!0);o&&this.program.setSignature(n);for(let i of e)t.includes(i.name)&&!this.rlmConfig.contextFields.includes(i.name)&&this.rlmConfig.contextFields.push(i.name);this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters())}collectFunctions(){let e=[];if(this.functions)for(let t of this.functions)typeof t=="object"&&"func"in t&&e.push(t);return e}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user");this.program.stop(),this.actorProgram.stop(),this.responderProgram.stop()}getId(){return this.program.getId()}setId(e){this.program.setId(e)}namedPrograms(){return this.program.namedPrograms()}getTraces(){return this.program.getTraces()}setDemos(e,t){this.program.setDemos(e,t)}getUsage(){return this.program.getUsage()}resetUsage(){this.program.resetUsage()}getFunction(){if(!this.func)throw new Error("getFunction() requires agentIdentity to be set in the constructor");let e=this.forward.bind(this);return{...this.func,func:async(r,o)=>{let i=this.ai??o?.ai;if(!i)throw new Error("AI service is required to run the agent");let a=await e(i,r,o),u=this.program.getSignature().getOutputFields();return Object.keys(a).map(p=>{let d=u.find(m=>m.name===p);return d?`${d.title}: ${a[p]}`:`${p}: ${a[p]}`}).join(`
|
|
784
784
|
`)}}}getExcludedSharedFields(){return this.excludedSharedFields}getSignature(){return this.program.getSignature()}setSignature(e){this.program.setSignature(e)}applyOptimization(e){this.program.applyOptimization?.(e)}async _runActorLoop(e,t,n,r){let o=this.rlmConfig,i=this.runtime,a=n?.debug??this.debug??e?.getOptions()?.debug??!1,l={},u={},c;Array.isArray(t)?c=t.filter(_=>_.role==="user").reduce((_,H)=>({..._,...H.values}),{}):c=t;let p=this.sharedFieldNames;for(let[_,H]of Object.entries(c))o.contextFields.includes(_)?l[_]=H:p.includes(_)||(u[_]=H);let d={};for(let _ of p)_ in c&&(d[_]=c[_]),_ in l&&(d[_]=l[_]);for(let _ of o.contextFields)if(!(_ in l))throw new Error(`RLM contextField "${_}" is missing from input values`);let m=o.maxLlmCalls??bc,g=o.maxRuntimeChars??tm,h=Math.max(1,o.maxBatchedLlmQueryConcurrency??nm),f=o.maxTurns??Ic,y=0,x=Math.floor(m*.8),A=this.recursionForwardOptions?.maxDepth??rm,R=Math.max(0,A),{maxDepth:b,...T}=this.recursionForwardOptions??{},{functions:M,description:N,mem:E,sessionId:U,...B}=n??{},L={...this.recursionForwardOptions??{},maxDepth:Math.max(0,R-1)},I=["context"],v=fe().input("task",fe.string("Task for recursive analysis")).input("context",fe.json("Optional context for the recursive task")).output("answer",fe.string("Answer from recursive analysis")).build(),$=(o.mode??"simple")==="advanced"&&(L.maxDepth??0)>0?"advanced":"simple",S;R>0&&($==="advanced"?S=new s({signature:v,agents:this.agents,functions:this.functions},{debug:a,...o,contextFields:I,actorFields:void 0,recursionOptions:L,actorOptions:this.actorForwardOptions,responderOptions:this.responderForwardOptions}):S=new Se(v,L));let P=_=>{if(_==null)return"";if(typeof _=="string")return Tt(_,g);try{return Tt(JSON.stringify(_),g)}catch{return Tt(String(_),g)}},q=async(_,H)=>{if(!Array.isArray(_)&&typeof _=="object"&&_!==null&&"query"in _)return q(_.query,_.context??H);if(r?.aborted)throw new Fe("rlm-llm-query",r.reason?String(r.reason):"Aborted");if(Array.isArray(_))return im(_,h,async ce=>{try{return await q(ce.query,ce.context)}catch(le){if(le instanceof Fe)throw le;return`[ERROR] ${le instanceof Error?le.message:String(le)}`}});let ue=await(async(ce,le)=>{let Q=le===void 0?void 0:typeof le=="string"?Tt(le,g):le;if(y++,y>m)return`[ERROR] Sub-query budget exhausted (${m}/${m}). Use the data you have already accumulated to produce your final answer.`;if(R<=0||!S)return`[ERROR] Recursion depth limit reached (${A}).`;let Y=3,oe;for(let Ae=0;Ae<Y;Ae++)try{let pe=await S.forward(e,{task:ce,...Q!==void 0?{context:Q}:$==="advanced"?{context:""}:{}},{...B,...T,abortSignal:r,debug:a});return P(pe.answer)}catch(pe){if(oe=pe,!om(pe)||Ae>=Y-1)throw pe;let be=Math.min(6e4,1e3*Math.pow(2,Ae));await new Promise((at,ht)=>{let De=!1,We,lt=()=>{r&&We&&r.removeEventListener("abort",We)},xt=setTimeout(()=>{De||(De=!0,lt(),at())},be);if(r){if(We=()=>{De||(De=!0,clearTimeout(xt),lt(),ht(new Fe("rlm-llm-query-retry-backoff",r.reason?String(r.reason):"Aborted during retry backoff")))},r.aborted){We();return}r.addEventListener("abort",We,{once:!0})}})}throw oe})(_,H);return y===x?`${ue}
|
|
785
|
-
[WARNING] ${y}/${m} sub-queries used. Plan to wrap up soon.`:ue},D=this.buildRuntimeGlobals(r,d),W,se=(_,H)=>{if(H.length===0)throw new Error(`${_}() requires at least one argument`);W={type:_,args:H}},Z=(..._)=>se("final",_),ne=(..._)=>se("ask_clarification",_),te=["llmQuery","agents","final","ask_clarification",...o.contextManagement?.stateInspection?["inspect_runtime"]:[],...o.contextFields,...Object.keys(D)],ye=o.contextManagement?.stateInspection?async()=>{try{let _=yc(te),H=await xe.execute(_,{signal:r,reservedNames:te});return typeof H=="string"?H:String(H)}catch(_){return`[inspect_runtime error: ${_ instanceof Error?_.message:String(_)}]`}}:void 0,Te=()=>i.createSession({...l,llmQuery:q,final:Z,ask_clarification:ne,...ye?{inspect_runtime:ye}:{},...D}),ee="[The JavaScript runtime was restarted; all global state was lost and must be recreated if needed.]",xe=Te(),Re=!1,we=_=>_ instanceof Error&&_.message==="Session is closed",ke=_=>_ instanceof Error&&_.message==="Execution timed out",w=_=>{if(_===void 0)return"(no output)";if(typeof _=="string")return Tt(_||"(no output)",g);try{return Tt(JSON.stringify(_,null,2),g)}catch{return Tt(String(_),g)}},F=_=>{let H=_,ie=H?.name??"Error",ae=H?.message??String(_),ue=[`${ie}: ${ae}`];if(H?.data!==void 0)try{ue.push(`Data: ${JSON.stringify(H.data,null,2)}`)}catch{ue.push(`Data: ${String(H.data)}`)}if(H?.cause!==void 0){let ce=(le,Q)=>{if(Q>4)return"[cause chain truncated]";let Y=le,oe=Y?.name??"Error",Ae=Y?.message??String(le),pe=[`${oe}: ${Ae}`];if(Y?.data!==void 0)try{pe.push(`Data: ${JSON.stringify(Y.data,null,2)}`)}catch{pe.push(`Data: ${String(Y.data)}`)}return Y?.cause!==void 0&&pe.push(`Caused by: ${ce(Y.cause,Q+1)}`),pe.join(`
|
|
785
|
+
[WARNING] ${y}/${m} sub-queries used. Plan to wrap up soon.`:ue},D=this.buildRuntimeGlobals(r,d,e),W,se=(_,H)=>{if(H.length===0)throw new Error(`${_}() requires at least one argument`);W={type:_,args:H}},Z=(..._)=>se("final",_),ne=(..._)=>se("ask_clarification",_),te=["llmQuery","agents","final","ask_clarification",...o.contextManagement?.stateInspection?["inspect_runtime"]:[],...o.contextFields,...Object.keys(D)],ye=o.contextManagement?.stateInspection?async()=>{try{let _=yc(te),H=await xe.execute(_,{signal:r,reservedNames:te});return typeof H=="string"?H:String(H)}catch(_){return`[inspect_runtime error: ${_ instanceof Error?_.message:String(_)}]`}}:void 0,Te=()=>i.createSession({...l,llmQuery:q,final:Z,ask_clarification:ne,...ye?{inspect_runtime:ye}:{},...D}),ee="[The JavaScript runtime was restarted; all global state was lost and must be recreated if needed.]",xe=Te(),Re=!1,we=_=>_ instanceof Error&&_.message==="Session is closed",ke=_=>_ instanceof Error&&_.message==="Execution timed out",w=_=>{if(_===void 0)return"(no output)";if(typeof _=="string")return Tt(_||"(no output)",g);try{return Tt(JSON.stringify(_,null,2),g)}catch{return Tt(String(_),g)}},F=_=>{let H=_,ie=H?.name??"Error",ae=H?.message??String(_),ue=[`${ie}: ${ae}`];if(H?.data!==void 0)try{ue.push(`Data: ${JSON.stringify(H.data,null,2)}`)}catch{ue.push(`Data: ${String(H.data)}`)}if(H?.cause!==void 0){let ce=(le,Q)=>{if(Q>4)return"[cause chain truncated]";let Y=le,oe=Y?.name??"Error",Ae=Y?.message??String(le),pe=[`${oe}: ${Ae}`];if(Y?.data!==void 0)try{pe.push(`Data: ${JSON.stringify(Y.data,null,2)}`)}catch{pe.push(`Data: ${String(Y.data)}`)}return Y?.cause!==void 0&&pe.push(`Caused by: ${ce(Y.cause,Q+1)}`),pe.join(`
|
|
786
786
|
`)};ue.push(`Caused by: ${ce(H.cause,1)}`)}return Tt(ue.join(`
|
|
787
787
|
`),g)},O=async _=>{try{let H=await xe.execute(_,{signal:r,reservedNames:te});return{output:w(H),isError:!1}}catch(H){if(r?.aborted)throw new Fe("rlm-session",r.reason??"Aborted");if(H instanceof Error&&(H.name==="AbortError"||H.message.startsWith("Aborted")))throw H;if(ke(H)&&(Re=!0),we(H)){if(!Re)return{output:F(H),isError:!0};try{Re=!1,xe=Te(),W=void 0;let ie=await xe.execute(_,{signal:r,reservedNames:te});return{output:Tt(`${ee}
|
|
788
788
|
${w(ie)}`,g),isError:!1}}catch(ie){return ke(ie)&&(Re=!0),{output:Tt(`${ee}
|
|
789
789
|
${F(ie)}`,g),isError:!0}}}if(ke(H))return{output:F(H),isError:!0};throw H}},C=sm(l)||"(none)",G=o.contextManagement,z={errorPruning:G?.errorPruning??o.trajectoryPruning??!1,hindsightEvaluation:G?.hindsightEvaluation??!1,tombstoning:G?.tombstoning,pruneRank:G?.pruneRank??2},j=[],X={...this.options,...this.actorForwardOptions,...n,debug:a,abortSignal:r},K={},J=G?.stateInspection?.contextThreshold;try{for(let _=0;_<f;_++){let H=ks(j)||"(no actions yet)";J&&H.length>J&&(H+="\n\n[HINT: Action log is large. Call `const state = await inspect_runtime()` for a compact snapshot of current variables instead of re-reading old outputs.]");let ie=await this.actorProgram.forward(e,{...u,contextMetadata:C,actionLog:H},X);_===0&&(X.debugHideSystemPrompt=!0),o.actorCallback&&await o.actorCallback(ie);for(let Y of this.actorFieldNames)Y in ie&&(K[Y]=ie[Y]);let ae=ie.javascriptCode,ue=ae?.trim();if(!ae||!ue)break;ae=ue;let ce="";if(this.actorFieldNames.length>0){let Y=this.actorFieldNames.filter(oe=>oe in ie).map(oe=>`${oe}: ${ie[oe]}`).join(`
|
|
790
790
|
`);Y&&(ce=`
|
|
791
791
|
Actor fields:
|
|
792
|
-
${Y}`)}W=void 0;let{output:le,isError:Q}=await O(ae);if(j.push({turn:_+1,code:ae,output:le,actorFieldsOutput:ce,tags:Q?["error"]:[]}),await Ac(j,j.length-1,z,e),W)break}}finally{try{xe.close()}catch{}}let V=W??{type:"final",args:[ks(j)||"(no actions were taken)"]};return{nonContextValues:u,contextMetadata:C,actionLog:ks(j),actorResult:V,actorFieldValues:K}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=kt(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,actorResult:u,actorFieldValues:c}=await this._runActorLoop(i,t,n,o),p={...this.options,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};return{...await this.responderProgram.forward(i,{...l,contextData:u},p),...c}}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}async*streamingForward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=kt(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,contextMetadata:u,actorResult:c,actorFieldValues:p}=await this._runActorLoop(i,t,n,o),d={...this.options,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};for await(let m of this.responderProgram.streamingForward(i,{...l,contextMetadata:u,actorResult:c},d))yield m;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t){return async(...
|
|
792
|
+
${Y}`)}W=void 0;let{output:le,isError:Q}=await O(ae);if(j.push({turn:_+1,code:ae,output:le,actorFieldsOutput:ce,tags:Q?["error"]:[]}),await Ac(j,j.length-1,z,e),W)break}}finally{try{xe.close()}catch{}}let V=W??{type:"final",args:[ks(j)||"(no actions were taken)"]};return{nonContextValues:u,contextMetadata:C,actionLog:ks(j),actorResult:V,actorFieldValues:K}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=kt(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,actorResult:u,actorFieldValues:c}=await this._runActorLoop(i,t,n,o),p={...this.options,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};return{...await this.responderProgram.forward(i,{...l,contextData:u},p),...c}}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}async*streamingForward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=kt(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,contextMetadata:u,actorResult:c,actorFieldValues:p}=await this._runActorLoop(i,t,n,o),d={...this.options,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};for await(let m of this.responderProgram.streamingForward(i,{...l,contextMetadata:u,actorResult:c},d))yield m;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t,n){return async(...r)=>{let o;if(r.length===1&&typeof r[0]=="object"&&r[0]!==null&&!Array.isArray(r[0]))o=r[0];else{let i=e.parameters?.properties?Object.keys(e.parameters.properties):[];o={},i.forEach((a,l)=>{l<r.length&&(o[a]=r[l])})}return await e.func(o,{abortSignal:t,ai:n})}}static wrapFunctionWithSharedFields(e,t,n,r){return!n||Object.keys(n).length===0?s.wrapFunction(e,t,r):async(...o)=>{let i;if(o.length===1&&typeof o[0]=="object"&&o[0]!==null&&!Array.isArray(o[0]))i=o[0];else{let l=e.parameters?.properties?Object.keys(e.parameters.properties):[];i={},l.forEach((u,c)=>{c<o.length&&(i[u]=o[c])})}let a={...n,...i};return await e.func(a,{abortSignal:t,ai:r})}}buildRuntimeGlobals(e,t,n){let r={};for(let o of this.collectFunctions())r[o.name]=s.wrapFunction(o,e);if(this.agents&&this.agents.length>0){let o={};for(let i of this.agents){let a=i.getFunction(),l=new Set(i.getExcludedSharedFields?.()??[]),u={};if(t)for(let[c,p]of Object.entries(t))l.has(c)||(u[c]=p);o[a.name]=s.wrapFunctionWithSharedFields(a,e,u,n)}r.agents=o}return r}_buildFuncParameters(){let e=this.program.getSignature().toInputJSONSchema();return this._parentSharedFields.size>0?am(e,this._parentSharedFields):e}};function Cc(s,e){let t=typeof s=="string"?Ee.create(s):s,{ai:n,agentIdentity:r,agents:o,functions:i,...a}=e;return new qr({ai:n,agentIdentity:r,signature:t,agents:o,functions:i},a)}function om(s){return s instanceof ze&&s.status>=500&&s.status<600?!0:s instanceof Ne||s instanceof Ze}function Tt(s,e){return s.length<=e?s:`${s.slice(0,e)}
|
|
793
793
|
...[truncated ${s.length-e} chars]`}function sm(s){let e=[];for(let[t,n]of Object.entries(s)){let r=Array.isArray(n)?"array":typeof n,o=typeof n=="string"?`${n.length} chars`:Array.isArray(n)?`${n.length} items`:n&&typeof n=="object"?`${Object.keys(n).length} keys`:"n/a";e.push(`- ${t}: type=${r}, size=${o}`)}return e.join(`
|
|
794
794
|
`)}async function im(s,e,t){if(s.length===0)return[];let n=new Array(s.length),r=0,o=Math.max(1,Math.min(e,s.length)),i=Array.from({length:o},async()=>{for(;;){let a=r++;if(a>=s.length)return;let l=s[a];if(l===void 0)return;n[a]=await t(l,a)}});return await Promise.all(i),n}function am(s,e){if(!s.properties||e.size===0)return s;let t=Object.fromEntries(Object.entries(s.properties).filter(([r])=>!e.has(r))),n=s.required?.filter(r=>!e.has(r));return{...s,properties:t,...n!==void 0?{required:n}:{}}}function lm(s){return s.split(/[^a-zA-Z0-9]/).map((n,r)=>{let o=n.toLowerCase();return r>0&&o&&o[0]?o[0].toUpperCase()+o.slice(1):o}).join("")}var Tc=(s,e)=>{let t=e?.maxHops??3,n=e?.qualityThreshold??.8,r=e?.maxIterations??2,o=e?.qualityTarget??.85,i=e?.disableQualityHealing??!1;return xs({logger:e?.logger,debug:e?.debug}).node("queryGenerator","originalQuestion:string, previousContext?:string -> searchQuery:string, queryReasoning:string").node("contextualizer","retrievedDocument:string, accumulatedContext?:string -> enhancedContext:string").node("qualityAssessor","currentContext:string, originalQuestion:string -> completenessScore:number, missingAspects:string[]").node("questionDecomposer","complexQuestion:string -> subQuestions:string[], decompositionReason:string").node("evidenceSynthesizer","collectedEvidence:string[], originalQuestion:string -> synthesizedEvidence:string, evidenceGaps:string[]").node("gapAnalyzer","synthesizedEvidence:string, evidenceGaps:string[], originalQuestion:string -> needsMoreInfo:boolean, focusedQueries:string[]").node("answerGenerator","finalContext:string, originalQuestion:string -> comprehensiveAnswer:string, confidenceLevel:number").node("queryRefiner","originalQuestion:string, currentContext:string, missingAspects:string[] -> refinedQuery:string").node("qualityValidator","generatedAnswer:string, userQuery:string -> qualityScore:number, issues:string[]").node("answerHealer","originalAnswer:string, healingDocument:string, issues?:string[] -> healedAnswer:string").map(a=>({...a,maxHops:t,qualityThreshold:n,maxIterations:r,qualityTarget:o,disableQualityHealing:i,currentHop:0,accumulatedContext:"",retrievedContexts:[],completenessScore:0,searchQuery:a.originalQuestion,shouldContinue:!0,iteration:0,allEvidence:[],evidenceSources:[],needsMoreInfo:!0,healingAttempts:0,currentQuality:0,shouldContinueHealing:!0,currentAnswer:"",currentIssues:[]})).while(a=>a.currentHop<a.maxHops&&a.completenessScore<a.qualityThreshold&&a.shouldContinue).map(a=>({...a,currentHop:a.currentHop+1})).execute("queryGenerator",a=>({originalQuestion:a.originalQuestion,previousContext:a.accumulatedContext||void 0})).map(async a=>{let l=a.queryGeneratorResult?.searchQuery||a.searchQuery||a.originalQuestion,u=await s(l);return{...a,retrievalResult:{retrievedDocument:u,retrievalConfidence:.9}}}).execute("contextualizer",a=>({retrievedDocument:a.retrievalResult.retrievedDocument,accumulatedContext:a.accumulatedContext||void 0})).execute("qualityAssessor",a=>({currentContext:a.contextualizerResult.enhancedContext,originalQuestion:a.originalQuestion})).map(a=>({...a,accumulatedContext:a.contextualizerResult.enhancedContext,retrievedContexts:[...a.retrievedContexts,a.retrievalResult.retrievedDocument],completenessScore:a.qualityAssessorResult.completenessScore,searchQuery:a.queryGeneratorResult.searchQuery,shouldContinue:a.qualityAssessorResult.completenessScore<a.qualityThreshold})).branch(a=>a.shouldContinue&&a.currentHop<a.maxHops).when(!0).execute("queryRefiner",a=>({originalQuestion:a.originalQuestion,currentContext:a.accumulatedContext,missingAspects:a.qualityAssessorResult.missingAspects})).map(a=>({...a,searchQuery:a.queryRefinerResult?.refinedQuery||a.searchQuery})).when(!1).map(a=>a).merge().endWhile().map(a=>({...a,allEvidence:a.retrievedContexts.length>0?a.retrievedContexts:[]})).while(a=>a.iteration<a.maxIterations&&a.needsMoreInfo).map(a=>({...a,iteration:a.iteration+1})).branch(a=>a.iteration===1).when(!0).execute("questionDecomposer",a=>({complexQuestion:a.originalQuestion})).map(a=>({...a,currentQueries:a.questionDecomposerResult.subQuestions})).when(!1).map(a=>({...a,currentQueries:a.gapAnalyzerResult?.focusedQueries||[]})).merge().map(async a=>{let l=a.currentQueries||[],u=l.length>0?await Promise.all(l.filter(Boolean).map(c=>s(c))):[];return{...a,retrievalResults:u}}).execute("evidenceSynthesizer",a=>{let l=Array.isArray(a.allEvidence)?a.allEvidence:[],u=Array.isArray(a.retrievalResults)?a.retrievalResults:[],c=[...l,...u].filter(Boolean);return{collectedEvidence:c.length>0?c:["No evidence collected yet"],originalQuestion:a.originalQuestion}}).execute("gapAnalyzer",a=>({synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence,evidenceGaps:a.evidenceSynthesizerResult.evidenceGaps,originalQuestion:a.originalQuestion})).map(a=>({...a,allEvidence:[...Array.isArray(a.allEvidence)?a.allEvidence:[],...Array.isArray(a.retrievalResults)?a.retrievalResults:[]],evidenceSources:[...Array.isArray(a.evidenceSources)?a.evidenceSources:[],`Iteration ${a.iteration} sources`],needsMoreInfo:a.gapAnalyzerResult.needsMoreInfo,synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence})).endWhile().execute("answerGenerator",a=>({finalContext:(()=>{let l=(a.accumulatedContext||"").toString().trim();if(l.length>0)return l;let u=(a.synthesizedEvidence||"").toString().trim();if(u.length>0)return u;let p=(Array.isArray(a.allEvidence)?a.allEvidence.filter(Boolean).join(`
|
|
795
795
|
`):"").toString().trim();return p.length>0?p:"No context available."})(),originalQuestion:a.originalQuestion})).branch(a=>!a.disableQualityHealing).when(!0).execute("qualityValidator",a=>({generatedAnswer:a.answerGeneratorResult.comprehensiveAnswer,userQuery:a.originalQuestion})).map(a=>({...a,currentAnswer:a.answerGeneratorResult.comprehensiveAnswer,currentQuality:a.qualityValidatorResult.qualityScore,currentIssues:a.qualityValidatorResult.issues,shouldContinueHealing:a.qualityValidatorResult.qualityScore<a.qualityTarget})).while(a=>a.healingAttempts<3&&a.shouldContinueHealing).map(a=>({...a,healingAttempts:a.healingAttempts+1})).map(async a=>{let l=a.currentIssues||[],u=l.length>0?`${a.originalQuestion} addressing issues: ${l.join(", ")}`:`${a.originalQuestion} quality improvement`,c=await s(u);return{...a,healingResult:{healingDocument:c}}}).execute("answerHealer",a=>({originalAnswer:a.currentAnswer,healingDocument:a.healingResult.healingDocument,issues:a.currentIssues})).execute("qualityValidator",a=>({generatedAnswer:a.answerHealerResult.healedAnswer,userQuery:a.originalQuestion})).map(a=>({...a,currentAnswer:a.answerHealerResult.healedAnswer,currentQuality:a.qualityValidatorResult.qualityScore,currentIssues:a.qualityValidatorResult.issues,shouldContinueHealing:a.qualityValidatorResult.qualityScore<a.qualityTarget})).endWhile().when(!1).map(a=>({...a,currentAnswer:a.answerGeneratorResult.comprehensiveAnswer,currentQuality:1,currentIssues:[],shouldContinueHealing:!1})).merge().returns(a=>({finalAnswer:a.currentAnswer,totalHops:a.currentHop,retrievedContexts:a.retrievedContexts,iterationCount:a.iteration,healingAttempts:a.healingAttempts,qualityAchieved:a.currentQuality}))};return Nc(um);})();
|