@xiaozhiclaw/qlogicagent-core 0.4.0 → 0.4.1

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -8,6 +8,6 @@ var Cu=Object.create;var xi=Object.defineProperty;var bu=Object.getOwnPropertyDe
8
8
  deps: ${r}}`};var yh={keyword:"dependencies",type:"object",schemaType:"object",error:De.error,code(e){let[t,r]=_h(e);jc(e,t),qc(e,r)}};function _h({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:r;o[n]=e[n]}return[t,r]}function jc(e,t=e.schema){let{gen:r,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let i in t){let a=t[i];if(a.length===0)continue;let c=(0,br.propertyInData)(r,n,i,o.opts.ownProperties);e.setParams({property:i,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let l of a)(0,br.checkReportMissingProp)(e,l)}):(r.if((0,Cs._)`${c} && (${(0,br.checkMissingProp)(e,a,s)})`),(0,br.reportMissingProp)(e,s),r.else())}}De.validatePropertyDeps=jc;function qc(e,t=e.schema){let{gen:r,data:n,keyword:o,it:s}=e,i=r.name("valid");for(let a in t)(0,gh.alwaysValidSchema)(s,t[a])||(r.if((0,br.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let c=e.subschema({keyword:o,schemaProp:a},i);e.mergeValidEvaluated(c,i)},()=>r.var(i,!0)),e.ok(i))}De.validateSchemaDeps=qc;De.default=yh});var Uc=C(bs=>{"use strict";Object.defineProperty(bs,"__esModule",{value:!0});var Dc=x(),Th=D(),vh={message:"property name must be valid",params:({params:e})=>(0,Dc._)`{propertyName: ${e.propertyName}}`},Ch={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:vh,code(e){let{gen:t,schema:r,data:n,it:o}=e;if((0,Th.alwaysValidSchema)(o,r))return;let s=t.name("valid");t.forIn("key",n,i=>{e.setParams({propertyName:i}),e.subschema({keyword:"propertyNames",data:i,dataTypes:["string"],propertyName:i,compositeRule:!0},s),t.if((0,Dc.not)(s),()=>{e.error(!0),o.allErrors||t.break()})}),e.ok(s)}};bs.default=Ch});var Es=C(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});var yn=ke(),Pe=x(),bh=Ee(),_n=D(),wh={message:"must NOT have additional properties",params:({params:e})=>(0,Pe._)`{additionalProperty: ${e.additionalProperty}}`},Eh={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:wh,code(e){let{gen:t,schema:r,parentSchema:n,data:o,errsCount:s,it:i}=e;if(!s)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=i;if(i.props=!0,c.removeAdditional!=="all"&&(0,_n.alwaysValidSchema)(i,r))return;let l=(0,yn.allSchemaProperties)(n.properties),u=(0,yn.allSchemaProperties)(n.patternProperties);d(),e.ok((0,Pe._)`${s} === ${bh.default.errors}`);function d(){t.forIn("key",o,g=>{!l.length&&!u.length?f(g):t.if(m(g),()=>f(g))})}function m(g){let v;if(l.length>8){let b=(0,_n.schemaRefOrVal)(i,n.properties,"properties");v=(0,yn.isOwnProperty)(t,b,g)}else l.length?v=(0,Pe.or)(...l.map(b=>(0,Pe._)`${g} === ${b}`)):v=Pe.nil;return u.length&&(v=(0,Pe.or)(v,...u.map(b=>(0,Pe._)`${(0,yn.usePattern)(e,b)}.test(${g})`))),(0,Pe.not)(v)}function h(g){t.code((0,Pe._)`delete ${o}[${g}]`)}function f(g){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){h(g);return}if(r===!1){e.setParams({additionalProperty:g}),e.error(),a||t.break();return}if(typeof r=="object"&&!(0,_n.alwaysValidSchema)(i,r)){let v=t.name("valid");c.removeAdditional==="failing"?(p(g,v,!1),t.if((0,Pe.not)(v),()=>{e.reset(),h(g)})):(p(g,v),a||t.if((0,Pe.not)(v),()=>t.break()))}}function p(g,v,b){let w={keyword:"additionalProperties",dataProp:g,dataPropType:_n.Type.Str};b===!1&&Object.assign(w,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(w,v)}}};ws.default=Eh});var Vc=C(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});var kh=ar(),Fc=ke(),ks=D(),Bc=Es(),Rh={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&Bc.default.code(new kh.KeywordCxt(s,Bc.default,"additionalProperties"));let i=(0,Fc.allSchemaProperties)(r);for(let d of i)s.definedProperties.add(d);s.opts.unevaluated&&i.length&&s.props!==!0&&(s.props=ks.mergeEvaluated.props(t,(0,ks.toHash)(i),s.props));let a=i.filter(d=>!(0,ks.alwaysValidSchema)(s,r[d]));if(a.length===0)return;let c=t.name("valid");for(let d of a)l(d)?u(d):(t.if((0,Fc.propertyInData)(t,o,d,s.opts.ownProperties)),u(d),s.allErrors||t.else().var(c,!0),t.endIf()),e.it.definedProperties.add(d),e.ok(c);function l(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};Rs.default=Rh});var Hc=C($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});var zc=ke(),Tn=x(),Gc=D(),Kc=D(),$h={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:o,it:s}=e,{opts:i}=s,a=(0,zc.allSchemaProperties)(r),c=a.filter(p=>(0,Gc.alwaysValidSchema)(s,r[p]));if(a.length===0||c.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let l=i.strictSchema&&!i.allowMatchingProperties&&o.properties,u=t.name("valid");s.props!==!0&&!(s.props instanceof Tn.Name)&&(s.props=(0,Kc.evaluatedPropsToName)(t,s.props));let{props:d}=s;m();function m(){for(let p of a)l&&h(p),s.allErrors?f(p):(t.var(u,!0),f(p),t.if(u))}function h(p){for(let g in l)new RegExp(p).test(g)&&(0,Gc.checkStrictMode)(s,`property ${g} matches pattern ${p} (use allowMatchingProperties)`)}function f(p){t.forIn("key",n,g=>{t.if((0,Tn._)`${(0,zc.usePattern)(e,p)}.test(${g})`,()=>{let v=c.includes(p);v||e.subschema({keyword:"patternProperties",schemaProp:p,dataProp:g,dataPropType:Kc.Type.Str},u),s.opts.unevaluated&&d!==!0?t.assign((0,Tn._)`${d}[${g}]`,!0):!v&&!s.allErrors&&t.if((0,Tn.not)(u),()=>t.break())})})}}};$s.default=$h});var Wc=C(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});var Ah=D(),Sh={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,Ah.alwaysValidSchema)(n,r)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};As.default=Sh});var Jc=C(Ss=>{"use strict";Object.defineProperty(Ss,"__esModule",{value:!0});var Oh=ke(),Ih={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Oh.validateUnion,error:{message:"must match a schema in anyOf"}};Ss.default=Ih});var Qc=C(Os=>{"use strict";Object.defineProperty(Os,"__esModule",{value:!0});var vn=x(),xh=D(),Ph={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,vn._)`{passingSchemas: ${e.passing}}`},Mh={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Ph,code(e){let{gen:t,schema:r,parentSchema:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,i=t.let("valid",!1),a=t.let("passing",null),c=t.name("_valid");e.setParams({passing:a}),t.block(l),e.result(i,()=>e.reset(),()=>e.error(!0));function l(){s.forEach((u,d)=>{let m;(0,xh.alwaysValidSchema)(o,u)?t.var(c,!0):m=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&t.if((0,vn._)`${c} && ${i}`).assign(i,!1).assign(a,(0,vn._)`[${a}, ${d}]`).else(),t.if(c,()=>{t.assign(i,!0),t.assign(a,d),m&&e.mergeEvaluated(m,vn.Name)})})}}};Os.default=Mh});var Yc=C(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});var Nh=D(),Lh={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=t.name("valid");r.forEach((s,i)=>{if((0,Nh.alwaysValidSchema)(n,s))return;let a=e.subschema({keyword:"allOf",schemaProp:i},o);e.ok(o),e.mergeEvaluated(a)})}};Is.default=Lh});var el=C(xs=>{"use strict";Object.defineProperty(xs,"__esModule",{value:!0});var Cn=x(),Zc=D(),jh={message:({params:e})=>(0,Cn.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,Cn._)`{failingKeyword: ${e.ifClause}}`},qh={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:jh,code(e){let{gen:t,parentSchema:r,it:n}=e;r.then===void 0&&r.else===void 0&&(0,Zc.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=Xc(n,"then"),s=Xc(n,"else");if(!o&&!s)return;let i=t.let("valid",!0),a=t.name("_valid");if(c(),e.reset(),o&&s){let u=t.let("ifClause");e.setParams({ifClause:u}),t.if(a,l("then",u),l("else",u))}else o?t.if(a,l("then")):t.if((0,Cn.not)(a),l("else"));e.pass(i,()=>e.error(!0));function c(){let u=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);e.mergeEvaluated(u)}function l(u,d){return()=>{let m=e.subschema({keyword:u},a);t.assign(i,a),e.mergeValidEvaluated(m,i),d?t.assign(d,(0,Cn._)`${u}`):e.setParams({ifClause:u})}}}};function Xc(e,t){let r=e.schema[t];return r!==void 0&&!(0,Zc.alwaysValidSchema)(e,r)}xs.default=qh});var tl=C(Ps=>{"use strict";Object.defineProperty(Ps,"__esModule",{value:!0});var Dh=D(),Uh={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){t.if===void 0&&(0,Dh.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};Ps.default=Uh});var rl=C(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});var Fh=gs(),Bh=Pc(),Vh=ys(),zh=Nc(),Gh=Lc(),Kh=gn(),Hh=Uc(),Wh=Es(),Jh=Vc(),Qh=Hc(),Yh=Wc(),Xh=Jc(),Zh=Qc(),eg=Yc(),tg=el(),rg=tl();function ng(e=!1){let t=[Yh.default,Xh.default,Zh.default,eg.default,tg.default,rg.default,Hh.default,Wh.default,Kh.default,Jh.default,Qh.default];return e?t.push(Bh.default,zh.default):t.push(Fh.default,Vh.default),t.push(Gh.default),t}Ms.default=ng});var Ls=C(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.dynamicAnchor=void 0;var Ns=x(),og=Ee(),nl=lr(),sg=un(),ig={keyword:"$dynamicAnchor",schemaType:"string",code:e=>ol(e,e.schema)};function ol(e,t){let{gen:r,it:n}=e;n.schemaEnv.root.dynamicAnchors[t]=!0;let o=(0,Ns._)`${og.default.dynamicAnchors}${(0,Ns.getProperty)(t)}`,s=n.errSchemaPath==="#"?n.validateName:ag(e);r.if((0,Ns._)`!${o}`,()=>r.assign(o,s))}wr.dynamicAnchor=ol;function ag(e){let{schemaEnv:t,schema:r,self:n}=e.it,{root:o,baseId:s,localRefs:i,meta:a}=t.root,{schemaId:c}=n.opts,l=new nl.SchemaEnv({schema:r,schemaId:c,root:o,baseId:s,localRefs:i,meta:a});return nl.compileSchema.call(n,l),(0,sg.getValidate)(e,l)}wr.default=ig});var js=C(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.dynamicRef=void 0;var sl=x(),cg=Ee(),il=un(),lg={keyword:"$dynamicRef",schemaType:"string",code:e=>al(e,e.schema)};function al(e,t){let{gen:r,keyword:n,it:o}=e;if(t[0]!=="#")throw new Error(`"${n}" only supports hash fragment reference`);let s=t.slice(1);if(o.allErrors)i();else{let c=r.let("valid",!1);i(c),e.ok(c)}function i(c){if(o.schemaEnv.root.dynamicAnchors[s]){let l=r.let("_v",(0,sl._)`${cg.default.dynamicAnchors}${(0,sl.getProperty)(s)}`);r.if(l,a(l,c),a(o.validateName,c))}else a(o.validateName,c)()}function a(c,l){return l?()=>r.block(()=>{(0,il.callRef)(e,c),r.let(l,!0)}):()=>(0,il.callRef)(e,c)}}Er.dynamicRef=al;Er.default=lg});var cl=C(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});var ug=Ls(),dg=D(),fg={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){e.schema?(0,ug.dynamicAnchor)(e,""):(0,dg.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};qs.default=fg});var ll=C(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});var pg=js(),mg={keyword:"$recursiveRef",schemaType:"string",code:e=>(0,pg.dynamicRef)(e,e.schema)};Ds.default=mg});var ul=C(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});var hg=Ls(),gg=js(),yg=cl(),_g=ll(),Tg=[hg.default,gg.default,yg.default,_g.default];Us.default=Tg});var fl=C(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});var dl=gn(),vg={keyword:"dependentRequired",type:"object",schemaType:"object",error:dl.error,code:e=>(0,dl.validatePropertyDeps)(e)};Fs.default=vg});var pl=C(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});var Cg=gn(),bg={keyword:"dependentSchemas",type:"object",schemaType:"object",code:e=>(0,Cg.validateSchemaDeps)(e)};Bs.default=bg});var ml=C(Vs=>{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});var wg=D(),Eg={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:r}){t.contains===void 0&&(0,wg.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}};Vs.default=Eg});var hl=C(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});var kg=fl(),Rg=pl(),$g=ml(),Ag=[kg.default,Rg.default,$g.default];zs.default=Ag});var yl=C(Gs=>{"use strict";Object.defineProperty(Gs,"__esModule",{value:!0});var et=x(),gl=D(),Sg=Ee(),Og={message:"must NOT have unevaluated properties",params:({params:e})=>(0,et._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},Ig={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:Og,code(e){let{gen:t,schema:r,data:n,errsCount:o,it:s}=e;if(!o)throw new Error("ajv implementation error");let{allErrors:i,props:a}=s;a instanceof et.Name?t.if((0,et._)`${a} !== true`,()=>t.forIn("key",n,d=>t.if(l(a,d),()=>c(d)))):a!==!0&&t.forIn("key",n,d=>a===void 0?c(d):t.if(u(a,d),()=>c(d))),s.props=!0,e.ok((0,et._)`${o} === ${Sg.default.errors}`);function c(d){if(r===!1){e.setParams({unevaluatedProperty:d}),e.error(),i||t.break();return}if(!(0,gl.alwaysValidSchema)(s,r)){let m=t.name("valid");e.subschema({keyword:"unevaluatedProperties",dataProp:d,dataPropType:gl.Type.Str},m),i||t.if((0,et.not)(m),()=>t.break())}}function l(d,m){return(0,et._)`!${d} || !${d}[${m}]`}function u(d,m){let h=[];for(let f in d)d[f]===!0&&h.push((0,et._)`${m} !== ${f}`);return(0,et.and)(...h)}}};Gs.default=Ig});var Tl=C(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});var ht=x(),_l=D(),xg={message:({params:{len:e}})=>(0,ht.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,ht._)`{limit: ${e}}`},Pg={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:xg,code(e){let{gen:t,schema:r,data:n,it:o}=e,s=o.items||0;if(s===!0)return;let i=t.const("len",(0,ht._)`${n}.length`);if(r===!1)e.setParams({len:s}),e.fail((0,ht._)`${i} > ${s}`);else if(typeof r=="object"&&!(0,_l.alwaysValidSchema)(o,r)){let c=t.var("valid",(0,ht._)`${i} <= ${s}`);t.if((0,ht.not)(c),()=>a(c,s)),e.ok(c)}o.items=!0;function a(c,l){t.forRange("i",l,i,u=>{e.subschema({keyword:"unevaluatedItems",dataProp:u,dataPropType:_l.Type.Num},c),o.allErrors||t.if((0,ht.not)(c),()=>t.break())})}}};Ks.default=Pg});var vl=C(Hs=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});var Mg=yl(),Ng=Tl(),Lg=[Mg.default,Ng.default];Hs.default=Lg});var Cl=C(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});var te=x(),jg={message:({schemaCode:e})=>(0,te.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,te._)`{format: ${e}}`},qg={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:jg,code(e,t){let{gen:r,data:n,$data:o,schema:s,schemaCode:i,it:a}=e,{opts:c,errSchemaPath:l,schemaEnv:u,self:d}=a;if(!c.validateFormats)return;o?m():h();function m(){let f=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),p=r.const("fDef",(0,te._)`${f}[${i}]`),g=r.let("fType"),v=r.let("format");r.if((0,te._)`typeof ${p} == "object" && !(${p} instanceof RegExp)`,()=>r.assign(g,(0,te._)`${p}.type || "string"`).assign(v,(0,te._)`${p}.validate`),()=>r.assign(g,(0,te._)`"string"`).assign(v,p)),e.fail$data((0,te.or)(b(),w()));function b(){return c.strictSchema===!1?te.nil:(0,te._)`${i} && !${v}`}function w(){let O=u.$async?(0,te._)`(${p}.async ? await ${v}(${n}) : ${v}(${n}))`:(0,te._)`${v}(${n})`,E=(0,te._)`(typeof ${v} == "function" ? ${O} : ${v}.test(${n}))`;return(0,te._)`${v} && ${v} !== true && ${g} === ${t} && !${E}`}}function h(){let f=d.formats[s];if(!f){b();return}if(f===!0)return;let[p,g,v]=w(f);p===t&&e.pass(O());function b(){if(c.strictSchema===!1){d.logger.warn(E());return}throw new Error(E());function E(){return`unknown format "${s}" ignored in schema at path "${l}"`}}function w(E){let Y=E instanceof RegExp?(0,te.regexpCode)(E):c.code.formats?(0,te._)`${c.code.formats}${(0,te.getProperty)(s)}`:void 0,U=r.scopeValue("formats",{key:s,ref:E,code:Y});return typeof E=="object"&&!(E instanceof RegExp)?[E.type||"string",E.validate,(0,te._)`${U}.validate`]:["string",E,U]}function O(){if(typeof f=="object"&&!(f instanceof RegExp)&&f.async){if(!u.$async)throw new Error("async format in sync schema");return(0,te._)`await ${v}(${n})`}return typeof g=="function"?(0,te._)`${v}(${n})`:(0,te._)`${v}.test(${n})`}}}};Ws.default=qg});var bl=C(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});var Dg=Cl(),Ug=[Dg.default];Js.default=Ug});var wl=C(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.contentVocabulary=Nt.metadataVocabulary=void 0;Nt.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Nt.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var kl=C(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});var Fg=hc(),Bg=Sc(),Vg=rl(),zg=ul(),Gg=hl(),Kg=vl(),Hg=bl(),El=wl(),Wg=[zg.default,Fg.default,Bg.default,(0,Vg.default)(!0),Hg.default,El.metadataVocabulary,El.contentVocabulary,Gg.default,Kg.default];Qs.default=Wg});var $l=C(bn=>{"use strict";Object.defineProperty(bn,"__esModule",{value:!0});bn.DiscrError=void 0;var Rl;(function(e){e.Tag="tag",e.Mapping="mapping"})(Rl||(bn.DiscrError=Rl={}))});var Sl=C(Xs=>{"use strict";Object.defineProperty(Xs,"__esModule",{value:!0});var Lt=x(),Ys=$l(),Al=lr(),Jg=cr(),Qg=D(),Yg={message:({params:{discrError:e,tagName:t}})=>e===Ys.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>(0,Lt._)`{error: ${e}, tag: ${r}, tagValue: ${t}}`},Xg={keyword:"discriminator",type:"object",schemaType:"object",error:Yg,code(e){let{gen:t,data:r,schema:n,parentSchema:o,it:s}=e,{oneOf:i}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!i)throw new Error("discriminator: requires oneOf keyword");let c=t.let("valid",!1),l=t.const("tag",(0,Lt._)`${r}${(0,Lt.getProperty)(a)}`);t.if((0,Lt._)`typeof ${l} == "string"`,()=>u(),()=>e.error(!1,{discrError:Ys.DiscrError.Tag,tag:l,tagName:a})),e.ok(c);function u(){let h=m();t.if(!1);for(let f in h)t.elseIf((0,Lt._)`${l} === ${f}`),t.assign(c,d(h[f]));t.else(),e.error(!1,{discrError:Ys.DiscrError.Mapping,tag:l,tagName:a}),t.endIf()}function d(h){let f=t.name("valid"),p=e.subschema({keyword:"oneOf",schemaProp:h},f);return e.mergeEvaluated(p,Lt.Name),f}function m(){var h;let f={},p=v(o),g=!0;for(let O=0;O<i.length;O++){let E=i[O];if(E?.$ref&&!(0,Qg.schemaHasRulesButRef)(E,s.self.RULES)){let U=E.$ref;if(E=Al.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,U),E instanceof Al.SchemaEnv&&(E=E.schema),E===void 0)throw new Jg.default(s.opts.uriResolver,s.baseId,U)}let Y=(h=E?.properties)===null||h===void 0?void 0:h[a];if(typeof Y!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(p||v(E)),b(Y,O)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return f;function v({required:O}){return Array.isArray(O)&&O.includes(a)}function b(O,E){if(O.const)w(O.const,E);else if(O.enum)for(let Y of O.enum)w(Y,E);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function w(O,E){if(typeof O!="string"||O in f)throw new Error(`discriminator: "${a}" values must be unique strings`);f[O]=E}}}};Xs.default=Xg});var Ol=C((mv,Zg)=>{Zg.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var Il=C((hv,ey)=>{ey.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var xl=C((gv,ty)=>{ty.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var Pl=C((yv,ry)=>{ry.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var Ml=C((_v,ny)=>{ny.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var Nl=C((Tv,oy)=>{oy.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var Ll=C((vv,sy)=>{sy.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var jl=C((Cv,iy)=>{iy.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var ql=C(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});var ay=Ol(),cy=Il(),ly=xl(),uy=Pl(),dy=Ml(),fy=Nl(),py=Ll(),my=jl(),hy=["/properties"];function gy(e){return[ay,cy,ly,uy,dy,t(this,fy),py,t(this,my)].forEach(r=>this.addMetaSchema(r,void 0,!1)),this;function t(r,n){return e?r.$dataMetaSchema(n,hy):n}}Zs.default=gy});var Dl=C((ee,ti)=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.MissingRefError=ee.ValidationError=ee.CodeGen=ee.Name=ee.nil=ee.stringify=ee.str=ee._=ee.KeywordCxt=ee.Ajv2020=void 0;var yy=uc(),_y=kl(),Ty=Sl(),vy=ql(),ei="https://json-schema.org/draft/2020-12/schema",jt=class extends yy.default{constructor(t={}){super({...t,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),_y.default.forEach(t=>this.addVocabulary(t)),this.opts.discriminator&&this.addKeyword(Ty.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:t,meta:r}=this.opts;r&&(vy.default.call(this,t),this.refs["http://json-schema.org/schema"]=ei)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(ei)?ei:void 0)}};ee.Ajv2020=jt;ti.exports=ee=jt;ti.exports.Ajv2020=jt;Object.defineProperty(ee,"__esModule",{value:!0});ee.default=jt;var Cy=ar();Object.defineProperty(ee,"KeywordCxt",{enumerable:!0,get:function(){return Cy.KeywordCxt}});var qt=x();Object.defineProperty(ee,"_",{enumerable:!0,get:function(){return qt._}});Object.defineProperty(ee,"str",{enumerable:!0,get:function(){return qt.str}});Object.defineProperty(ee,"stringify",{enumerable:!0,get:function(){return qt.stringify}});Object.defineProperty(ee,"nil",{enumerable:!0,get:function(){return qt.nil}});Object.defineProperty(ee,"Name",{enumerable:!0,get:function(){return qt.Name}});Object.defineProperty(ee,"CodeGen",{enumerable:!0,get:function(){return qt.CodeGen}});var by=tn();Object.defineProperty(ee,"ValidationError",{enumerable:!0,get:function(){return by.default}});var wy=cr();Object.defineProperty(ee,"MissingRefError",{enumerable:!0,get:function(){return wy.default}})});function qn(e,t,r,n){return{role:"assistant",content:t||null,tool_calls:e,...r&&r.length>0?{thinkingBlocks:r}:{},...n?{reasoning_content:n}:{}}}function Kt(e,t){let r=t.ok?typeof t.payload=="string"?t.payload:JSON.stringify(t.payload??""):`Error: ${t.error??"Tool execution failed"}`;return{role:"tool",tool_call_id:e,content:r,...!t.ok&&{is_error:!0},...t.toolReferences?.length?{toolReferences:t.toolReferences}:{},...t.imageUrls?.length?{imageUrls:t.imageUrls}:{},...t.contentBlocks!==void 0?{contentBlocks:t.contentBlocks}:{},...t.structuredContent!==void 0?{structuredContent:t.structuredContent}:{},...t.mcpMeta!==void 0?{mcpMeta:t.mcpMeta}:{},...t.mcpIsError!==void 0?{mcpIsError:t.mcpIsError}:{}}}var Au=new Set(["RETRYABLE_TRANSIENT","RETRYABLE_DEGRADED","TOOL_EXECUTION_FAILED"]);function Ur(e){return Au.has(e)}function Ct(e,t){return e===401||e===403?"NON_RETRYABLE_AUTH":e===402?"NON_RETRYABLE_QUOTA":e===429?"RETRYABLE_DEGRADED":e===408||typeof e=="number"&&e>=500?"RETRYABLE_TRANSIENT":typeof e=="number"&&e>=400?"NON_RETRYABLE_CONTENT":/invalid[_ ]api[_ ]key|unauthorized|forbidden/i.test(t??"")?"NON_RETRYABLE_AUTH":/insufficient[_ ]quota|payment required|insufficient credits/i.test(t??"")?"NON_RETRYABLE_QUOTA":/rate[_ ]limit|too many requests/i.test(t??"")?"RETRYABLE_DEGRADED":/context_length_exceeded|prompt_too_long|invalid request|model[_ ]not[_ ]found/i.test(t??"")?"NON_RETRYABLE_CONTENT":"RETRYABLE_TRANSIENT"}function Dn(e){let t=[...e.tools],r=e.toolChoice;if(!r||r==="auto")return{tools:t,normalizedToolChoice:r,warnings:[]};if(r==="none")return{tools:[],normalizedToolChoice:"none",warnings:[]};if(r==="required"){if(!t.length)throw Error("tool_choice=required but no tools were provided");return{tools:t,normalizedToolChoice:"required",warnings:[]}}if(typeof r=="object"&&!Array.isArray(r)&&r.type==="function"){let n=r.function,o=typeof n?.name=="string"?n.name.trim():"";if(!o)throw Error("tool_choice.function.name is required");let s=t.filter(i=>(i.function?.name??i.name)?.trim()===o);if(!s.length)throw Error("tool_choice requested unknown tool: "+o);return{tools:s,normalizedToolChoice:{type:"function",function:{name:o}},warnings:[]}}return{tools:t,normalizedToolChoice:r,warnings:[]}}var Su=["stop","aborted","timeout","cancelled","interrupted","error"],Ou=["tool_calls","toolCalls","function_call","functionCall","raw_tool_calls","rawToolCalls"];function Pi(e){return e==null?[]:typeof e=="string"?e.length>0?[{type:"text",text:e}]:[]:Array.isArray(e)?e:[{type:"text",text:String(e)}]}function Iu(e,t){let r=[...Array.isArray(e.contextAnchors)?e.contextAnchors:[],...Array.isArray(t.contextAnchors)?t.contextAnchors:[]];return{...e,...t,...r.length?{contextAnchors:[...new Map(r.map(n=>[JSON.stringify(n),n])).values()]}:{},content:[...Pi(e.content),...Pi(t.content)]}}function xu(e){let t=new Set;if(e.role!=="assistant"||!Array.isArray(e.tool_calls))return t;for(let r of e.tool_calls)typeof r.id=="string"&&r.id&&t.add(r.id);return t}function Pu(e){let t=new Set,r=[];for(let n=0;n<e.length;n+=1){if(t.has(n))continue;let o=e[n];if(!o)continue;r.push(o);let s=xu(o);if(s.size!==0)for(let i=n+1;i<e.length;i+=1){if(t.has(i))continue;let a=e[i];a?.role==="tool"&&typeof a.tool_call_id=="string"&&s.has(a.tool_call_id)&&(r.push(a),t.add(i))}}return r}function Mu(e){if(!e||typeof e!="object")return!1;if(e.function&&typeof e.function=="object"){let t=e.function.name;if(typeof t=="string"&&t.length>0)return!0}return typeof e.name=="string"&&e.name.length>0}function Nu(e){return new Set((e??Su).map(t=>t.trim().toLowerCase()))}function Lu(e,t){return e?Nu(t).has(e.trim().toLowerCase()):!1}function Un(e){if(!Array.isArray(e)||e.length===0)return[...e];let t=e.map(c=>{if(c.role==="assistant"&&Array.isArray(c.tool_calls)){let l=c.tool_calls.filter(u=>Mu(u));return{...c,...l.length>0?{tool_calls:l}:{tool_calls:void 0}}}return{...c}}),r=new Set;for(let c of t)if(!(c.role!=="assistant"||!Array.isArray(c.tool_calls)))for(let l of c.tool_calls)typeof l.id=="string"&&l.id&&r.add(l.id);let n=t.filter(c=>c.role!=="tool"?!0:!!(c.tool_call_id&&r.has(c.tool_call_id))),o=new Set;for(let c of n)c.role==="tool"&&typeof c.tool_call_id=="string"&&c.tool_call_id&&o.add(c.tool_call_id);let s=[];for(let c of n){if(c.role==="assistant"&&Array.isArray(c.tool_calls)&&c.tool_calls.length>0){let l=c.tool_calls.filter(u=>typeof u.id=="string"&&o.has(u.id));if(l.length===0){let{tool_calls:u,...d}=c;d.content!=null&&d.content!==""&&s.push(d);continue}if(l.length<c.tool_calls.length){s.push({...c,tool_calls:l});continue}}s.push(c)}let i=Pu(s),a=[];for(let c of i){let l=a.length>0?a[a.length-1]:void 0;if(c.role==="user"&&l?.role==="user"&&c.contextProjection!=="facts"&&l.contextProjection!=="facts"){a[a.length-1]=Iu(l,c);continue}a.push(c)}return a}function Fn(e,t){return Lu(t?.stopReason,t?.forcedStopReasons)?e.map(r=>{if(r.role!=="assistant")return{...r};let n={...r};for(let o of Ou)delete n[o];return n}):[...e]}function Bn(e,t){let r=t?.placeholderToolResult??"Error: Tool loop interrupted before the tool result was replayed.",n=new Set;for(let s of e)s.role==="tool"&&typeof s.tool_call_id=="string"&&s.tool_call_id&&n.add(s.tool_call_id);let o=[];for(let s of e)if(o.push({...s}),!(s.role!=="assistant"||!Array.isArray(s.tool_calls)||s.tool_calls.length===0))for(let i of s.tool_calls)typeof i.id!="string"||!i.id||n.has(i.id)||(n.add(i.id),o.push({role:"tool",tool_call_id:i.id,content:r}));return o}function Vn(e,t){let r=Un(e),n=Fn(r,t);return Bn(n,t)}function ju(e){let t=new Set,r=new Set;for(let n of e){if(n.role==="assistant"&&Array.isArray(n.tool_calls))for(let o of n.tool_calls)typeof o.id=="string"&&o.id&&t.add(o.id);n.role==="tool"&&typeof n.tool_call_id=="string"&&n.tool_call_id&&r.add(n.tool_call_id)}return[...t].filter(n=>!r.has(n))}function qu(e){let t=new Set;for(let r of e)r.role==="tool"&&typeof r.tool_call_id=="string"&&r.tool_call_id&&t.add(r.tool_call_id);return[...t]}function Du(e){return{round:e.round??0,maxRounds:e.maxRounds,pendingToolCallIds:[...e.pendingToolCallIds??[]],completedToolCallIds:[...e.completedToolCallIds??[]],lastStopReason:e.lastStopReason,replayMessages:[...e.replayMessages??[]]}}function zn(e,t){return{round:e.round+1,maxRounds:e.maxRounds,pendingToolCallIds:[...t.pendingToolCallIds??e.pendingToolCallIds],completedToolCallIds:[...t.completedToolCallIds??e.completedToolCallIds],lastStopReason:t.lastStopReason??e.lastStopReason,replayMessages:[...t.replayMessages??e.replayMessages]}}function Fr(e,t){return{round:e.round,maxRounds:e.maxRounds,pendingToolCallIds:[],completedToolCallIds:[...t.completedToolCallIds??e.completedToolCallIds],lastStopReason:t.lastStopReason??e.lastStopReason,replayMessages:[...t.replayMessages??e.replayMessages]}}function Br(e){let t=[],r=Un(e.replayMessages);r.length!==e.replayMessages.length&&t.push({kind:"drop-orphan-tool-result",detail:"Removed orphan tool results or invalid assistant tool calls."});let n=Fn(r,e.options);n.some((s,i)=>s!==r[i])&&t.push({kind:"strip-forced-stop-tool-metadata",detail:"Removed assistant tool-call metadata after forced stop."});let o=Bn(n,e.options);return o.length>n.length&&t.push({kind:"inject-placeholder-tool-result",detail:"Injected placeholder tool result for pending tool calls."}),{state:Du({maxRounds:e.maxRounds,round:e.round,lastStopReason:e.lastStopReason,replayMessages:o,pendingToolCallIds:ju(o),completedToolCallIds:qu(o)}),recoveryActions:t}}function Gn(e){return e===429||e===529}function Kn(e,t=500,r=32e3){let n=Math.min(t*Math.pow(2,e-1),r);return n+Math.floor(Math.random()*n*.25)}function Hn(e){let t=Number.isFinite(e.totalPromptTokens)&&(e.totalPromptTokens??0)>0?Math.floor(e.totalPromptTokens):0,r=Number.isFinite(e.promptTokens)&&e.promptTokens>0?Math.floor(e.promptTokens):0,n=Number.isFinite(e.cacheReadTokens)&&(e.cacheReadTokens??0)>0?Math.floor(e.cacheReadTokens):0,o=Number.isFinite(e.cacheCreationTokens)&&(e.cacheCreationTokens??0)>0?Math.floor(e.cacheCreationTokens):0,s=n+o,i=s>r?r+s:r;return Math.max(t,i)}function Wn(e){return{promptTokens:0,hasAttemptedReactiveCompact:!1,currentMaxOutputTokens:e.maxOutputTokens,aborted:e.abortSignal?.aborted??!1}}function Jn(e,t){let r=t.contextWindowTokens-t.responseBufferTokens-e.currentMaxOutputTokens,n=r>0?e.promptTokens/r*100:100;return n>=85?{level:"warning",usagePercent:n,remainingTokens:Math.max(0,r-e.promptTokens)}:{level:"ok"}}function Qn(e,t,r){let n=e.message?.toLowerCase()??"",o=e.status??0;return o===413||n.includes("prompt_too_long")||n.includes("context_length_exceeded")?!t.hasAttemptedReactiveCompact&&r.reactiveCompactEnabled?{action:"reactive_compact"}:{action:"abort",reason:"prompt_too_long_unrecoverable"}:o>=500&&o<600?{action:"retry",reason:`server_error_${o}`}:o===429?{action:"retry",reason:"rate_limited"}:o===401||o===403?{action:"abort",reason:"auth_error"}:o===404?{action:"abort",reason:"model_not_found"}:{action:"abort",reason:n||"unknown_error"}}function Yn(e,t){return e.aborted?!0:t.abortSignal?.aborted?(e.aborted=!0,!0):!1}function Xn(){return{attemptedThisTurn:!1}}function Ht(e){return!e.attemptedThisTurn}function bt(e,t){let r=t.ok?typeof t.payload=="string"?t.payload:JSON.stringify(t.payload??""):`Error: ${t.error??"Tool execution failed"}`;return{role:"tool",tool_call_id:e,content:r,...!t.ok&&{is_error:!0},...t.toolReferences?.length?{toolReferences:t.toolReferences}:{},...t.imageUrls?.length?{imageUrls:t.imageUrls}:{},...t.contentBlocks?{contentBlocks:t.contentBlocks}:{},...t.structuredContent!==void 0?{structuredContent:t.structuredContent}:{},...t.mcpMeta!==void 0?{mcpMeta:t.mcpMeta}:{},...t.mcpIsError!==void 0?{mcpIsError:t.mcpIsError}:{}}}function Zn(e,t){let r=e.get(t.index)??{id:"",name:"",arguments:""};t.id&&(r.id=t.id),t.name&&(r.name=t.name),r.arguments=t.argumentsMode==="replace"?t.arguments??"":`${r.arguments}${t.arguments??""}`,e.set(t.index,r)}function Mi(e){let t=e.indexOf("__");return t<=0||t+2>=e.length?e:e.slice(t+2)}function Ni(e){let t=e.indexOf("__");if(!(t<=0||t+2>=e.length))return e.slice(0,t)}var eo="tool_schema_load";function Li(e){return e?.type!=="tool_schema_load"||!Array.isArray(e.requestedToolNames)?[]:[...new Set(e.requestedToolNames.filter(t=>typeof t=="string"&&t.trim().length>0))]}function se(e,t,r,n){e?.invoke(t,r).catch(o=>{let s=o instanceof Error?o.message:String(o);n.warn(`[hook:${t}] handler failed: ${s}`)})}function ji(e){if(e.blocked)return"policy_blocked";let t=typeof e.details?.error=="string"?e.details.error:"",r=`${t} ${e.error??""}`;return t==="semantic_quality_failed"?"semantic_quality_failed":/MCP_START_FAILED/iu.test(r)?"mcp_start_failed":/mcp_not_connected|mcp_unavailable/iu.test(r)?"mcp_unavailable":/\bTIMEOUT\b|timed out/iu.test(r)?"timeout":"tool_execution_failed"}function qi(e,t){let r=typeof t.message?.content=="string"?t.message.content:"",n=r?r.slice(0,2e3):void 0,o=t.details;return{type:"tool_result",turnId:e,callId:t.callId,name:t.toolName,ok:t.ok,error:t.error,outputPreview:n,durationMs:t.durationMs,details:o}}var Fl=$u(Dl(),1),Ey=new Fl.Ajv2020({allErrors:!0,allowUnionTypes:!0,strict:!1,validateFormats:!1}),Ul=new WeakMap;function ky(e){let t=Ul.get(e);if(t)return t;let r=Ey.compile(e);return Ul.set(e,r),r}function Ry(e){return e.instancePath?`arguments${e.instancePath}`:e.keyword==="required"&&typeof e.params.missingProperty=="string"?`arguments/${e.params.missingProperty}`:"arguments"}function $y(e){return(e??[]).slice(0,4).map(t=>`${Ry(t)} ${t.message??`violates ${t.keyword}`}`).join("; ")}function Bl(e,t,r){let n;try{n=JSON.parse(r)}catch{return{ok:!1,error:`Tool "${e}" arguments must be valid JSON.`}}if(!n||typeof n!="object"||Array.isArray(n))return{ok:!1,error:`Tool "${e}" arguments must be a JSON object.`};if(!t)return{ok:!0};try{let o=ky(t);return o(n)?{ok:!0}:{ok:!1,error:`Tool "${e}" arguments do not match the offered schema: ${$y(o.errors)}.`}}catch(o){return{ok:!1,error:`Tool "${e}" has an invalid offered JSON Schema: ${o instanceof Error?o.message:String(o)}.`}}}function wn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=1?Math.round(e):0}function En(e){if(typeof e=="number"&&Number.isFinite(e)&&e>=1)return Math.round(e)}function Vl(e){return e.filter(t=>t.role!=="assistant"?!0:!(typeof t.content=="string"&&t.content.trim()===""))}function zl(e){try{let t=JSON.parse(e),n=[t.description,t.command,t.query,t.url,t.path,t.file_path,t.filePath,t.pattern,t.model].find(s=>typeof s=="string"&&s.trim().length>0);if(typeof n=="string")return n.trim().slice(0,240);let o=Object.keys(t);return o.length>0?o.slice(0,5).join(" / "):void 0}catch{return}}function ri(e){let t=e.message.toLowerCase();return e.status===413||t.includes("prompt_too_long")||t.includes("context_length_exceeded")||t.includes("maximum context length")}function ni(e){return e==="length"||e==="max_tokens"}function oi(e){let t=e.message.toLowerCase();return(t.includes("image")||t.includes("media")||t.includes("file too large")||t.includes("payload too large"))&&(e.status===413||t.includes("too large")||t.includes("size"))}function Gl(e){let t=e.headers;if(!t)return null;let r=t["retry-after"]??t["Retry-After"];if(!r)return null;let n=/^\d+(?:\.\d+)?$/.test(r.trim())?Number(r):NaN;if(Number.isFinite(n))return n*1e3;let o=Date.parse(r);return Number.isFinite(o)?Math.max(0,o-Date.now()):null}function Kl(e){if(e.status!==400)return null;let t=e.message.match(/input length and `max_tokens` exceed context limit: (\d+) \+ (\d+) > (\d+)/);if(!t?.[1]||!t?.[3])return null;let r=parseInt(t[1],10),n=parseInt(t[3],10);if(isNaN(r)||isNaN(n))return null;let o=n-r-1e3;return o>=3e3?o:null}async function*Hl(e){let{messages:t,guardConfig:r,runtimePorts:n,hooks:o,hookCtx:s,currentModel:i,log:a,recovery:c,onAutocompact:l}=e,u;{let d=await n.enforceToolResultBudget(t);u=d.messages,d.newlyReplacedCount>0&&(a.info(`tool-result-budget: truncated ${d.newlyReplacedCount} oversized tool texts`),yield c("tool_result_budget",`${d.newlyReplacedCount} tool texts truncated; product receipts remain the source for complete results`))}if(r.contextWindowTokens>0){let d=r.contextWindowTokens*.75,m=n.compressMessages(u,{budget:d,model:i});m.droppedCount>0&&(u=m.messages,a.info(`autocompact: ${m.strategy}, dropped ${m.droppedCount}`),yield c("autocompact",`${m.strategy}: ${m.droppedCount} dropped`),yield{type:"lifecycle",turnId:s.turnId,kind:"context_compression",status:"completed",detail:`${m.strategy}: ${m.droppedCount} dropped`},l(),se(o,"context.after_compact",{...s,removedCount:m.droppedCount},a))}return u=Vl(u),u}async function*Wl(e,t){let{state:r,guardState:n,turnId:o,log:s,emitRecovery:i}=t,a=e instanceof Error?e.message:String(e),c=typeof e?.status=="number"?e.status:void 0,l=e;if(t.signal?.aborted)return yield{type:"error",turnId:o,error:"Turn aborted",code:"ABORTED",usage:r.totalUsage},{kind:"return"};if(!l||l.retryable!==!0||l.safeToRetry!==!0||l.automaticRetryAuthorized!==!0)return yield{type:"error",turnId:o,error:l?.outcome==="rejected"?"The model service rejected this request.":"The model request outcome must be reconciled before retry.",code:l?.outcome==="rejected"?"MODEL_REQUEST_REJECTED":"MODEL_RECONCILIATION_REQUIRED",usage:r.totalUsage},{kind:"return"};if(!c&&a&&(a.includes("ECONNRESET")||a.includes("EPIPE"))){let d=(r.consecutiveApiRetries??0)+1;return d>2?(s.info(`stale connection retry limit reached (${2}), aborting`),yield{type:"error",turnId:o,error:a,code:"RETRIES_EXHAUSTED",usage:r.totalUsage},{kind:"return"}):(s.info(`stale connection (${a.includes("ECONNRESET")?"ECONNRESET":"EPIPE"}): retrying`),yield i("stale_connection_retry",a.slice(0,80)),{kind:"continue",patch:{consecutiveApiRetries:d,transition:void 0}})}let u=Kl({status:c,message:a});if(u!==null)return u>=n.currentMaxOutputTokens?(yield{type:"error",turnId:o,error:"The rejected output limit cannot be reduced further.",code:"MODEL_REQUEST_REJECTED",usage:r.totalUsage},{kind:"return"}):++r.consecutiveApiRetries>2?(yield{type:"error",turnId:o,error:"Model recovery attempts exhausted.",code:"RETRIES_EXHAUSTED",usage:r.totalUsage},{kind:"return"}):(s.info(`max_tokens overflow: adjusting to ${u}`),n.currentMaxOutputTokens=u,{kind:"continue",patch:{transition:void 0}});if(Gn(c)){if(r.consecutive529Errors++,++r.consecutiveApiRetries>2)return s.info(`transient ${c} \xD7 ${r.consecutive529Errors}: hard limit reached, aborting`),yield{type:"error",turnId:o,error:`API unavailable after ${r.consecutive529Errors} consecutive ${c} errors`,code:"API_ERROR",usage:r.totalUsage},{kind:"return"};let m=Gl({status:c,message:a,headers:l.headers})??Kn(r.consecutive529Errors);return s.info(`transient ${c}: retry in ${m}ms`),yield i("retry",`${c} retry in ${m}ms`),await new Promise(h=>{let f=Date.now()+m,p,g=()=>{clearTimeout(p),t.signal?.removeEventListener("abort",g),h()},v=()=>{let b=f-Date.now();if(b<=0||t.signal?.aborted){g();return}p=setTimeout(v,Math.min(b,2147483647))};t.signal?.addEventListener("abort",g,{once:!0}),v()}),{kind:"continue",patch:{transition:void 0}}}return{kind:"streamError",streamError:{status:c,message:a}}}function Jl(e){return[...new Set(e.map(t=>t.function.name))].sort()}function Py(e){return e?.find(t=>t.source==="llmrouter.settlement")??e?.find(t=>t.source==="provider.reported")}function My(e){let t=new Set,r=[];for(let n of e){let o=`${n.name}\0${n.reason}`;t.has(o)||(t.add(o),r.push(n))}return r.sort((n,o)=>`${n.name}:${n.reason}`.localeCompare(`${o.name}:${o.reason}`))}function Ny(e){let t=typeof e.blockReason=="string"?e.blockReason:void 0;if(e.blocked&&/confirmation timed out/i.test(t??""))return"confirmation-timeout";if(e.blocked)return"blocked-by-policy";let r=typeof e.details?.error=="string"?e.details.error:void 0;if(r==="invalid_arguments")return"invalid-arguments";if(r==="blocked_by_guard")return"blocked-by-policy";if(r==="semantic_quality_failed")return"semantic-quality-failed"}function Ql(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ly(e,t){if(!e)return null;let r=Ql(e.function.parameters),n=Ql(r?.properties)??{},o=Array.isArray(r?.required)?r.required.filter(a=>typeof a=="string"&&a.trim().length>0):[],s=Uy(t);if(!s)return`Tool "${e.function.name}" arguments must be a JSON object.`;for(let a of o){let c=s[a];if(typeof c=="string"?c.trim().length===0:c==null)return`Tool "${e.function.name}" missing required field \`${a}\`. Use the offered tool schema exactly.`}if(r?.additionalProperties===!1){let a=new Set(Object.keys(n)),c=Object.keys(s).filter(l=>!a.has(l));if(c.length>0){let l=[...a].map(u=>`\`${u}\``).join(", ")||"none";return`Tool "${e.function.name}" has unexpected field${c.length===1?"":"s"} ${c.map(u=>`\`${u}\``).join(", ")}. Remove ${c.length===1?"it":"them"}; the only allowed fields are ${l}. Use the canonical tool schema exactly and do not retry the rejected arguments unchanged.`}}let i=Bl(e.function.name,r??void 0,t);return i.ok?null:i.error??`Tool "${e.function.name}" arguments do not match the offered schema.`}function jy(e,t){let r=e?.meta?.identity;if(r?.schemaVersion===1&&r.wireName===t)return r;let n=e?.meta?.category,o=Mi(t),s=Ni(t),i=n==="mcp"?"mcp":"business",a="product";return{schemaVersion:1,wireName:t,logicalName:o,family:i,owner:a,...s?{serverId:s}:{},capabilityId:`${a}:${s??"business"}:${o}`}}function Yl(e){return{role:"user",content:`Product job result(s) became available while the main task continued.
9
9
  `+e.join(`
10
10
  `)}}var qy=18e4,kn=class extends Error{constructor(r){super(`LLM stream idle timeout after ${r}ms without a chunk.`);this.timeoutMs=r;this.name="LLMStreamIdleTimeoutError"}timeoutMs;code="LLM_STREAM_TIMEOUT"};async function*Dy(e,t){if(!Number.isFinite(t)||t<=0){yield*e;return}let r=e[Symbol.asyncIterator]();try{for(;;){let n,o;try{o=await Promise.race([r.next(),new Promise(s=>{n=setTimeout(()=>s("timeout"),t)})])}finally{n&&clearTimeout(n)}if(o==="timeout")throw new kn(t);if(o.done)return;yield o.value}}finally{r.return?.().catch(()=>{})}}function Uy(e){try{let t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}async function*Xl(e,t,r,n){let{turnId:o,sessionId:s,messages:i,availableTools:a,tools:c,model:l,apiKey:u,temperature:d=0,hooks:m,signal:h}=e,f=(k,F)=>{k.push(F)},p={sessionId:s,turnId:o},g=e.maxTurns??0,v=a??c,b=new Set(c.map(k=>k.function.name)),w=v,O=new Map(w.map(k=>[k.function.name,k])),E=v.filter(k=>b.has(k.function.name)),Y=[],U=wn(e.maxRounds,i),y=En(e.maxToolCalls),$={contextWindowTokens:e.contextWindowTokens??128e3,responseBufferTokens:13e3,maxOutputTokens:e.maxOutputTokens??16384,abortSignal:h,reactiveCompactEnabled:!0},j=new Set,V=[],W=new Map,J=0,Ce=new Set,z=0,ie=new Set(e.deferredToolNames??[]),be=new Set;for(let k of e.loadedDeferredToolNames??[])ie.has(k)&&O.has(k)?be.add(k):e.loadedDeferredToolNames?.delete(k);let yt=()=>{let k=new Map(E.map(F=>[F.function.name,F]));for(let F of be){let ne=O.get(F);ne&&k.set(F,ne)}return[...k.values()]},M=(k,F)=>F?k.filter(ne=>F.has(ne.function.name)):[...k],Me=yt(),uu=()=>Jl(Me),fi=(e.continuation?.completedRounds??0)>0,A={messages:[...i],hasAttemptedReactiveCompact:!1,turnCount:(e.continuation?.completedRounds??0)+1,transition:void 0,guardState:Wn($),reactiveCompactState:Xn(),toolLoopState:Br({maxRounds:U,replayMessages:[...i]}).state,finalText:"",totalUsage:structuredClone(e.continuation?.usage??{inputTokens:0,outputTokens:0}),consecutive529Errors:0,consecutiveApiRetries:0,recoveryTrace:new Map},du=4,Sr=async(k,F,ne)=>{e.runtimePorts.saveCheckpoint&&(await e.runtimePorts.saveCheckpoint(structuredClone({turnId:o,sessionId:s,phase:k,messages:F,completedRounds:ne,usage:A.totalUsage})),h?.throwIfAborted())},fu=4,pi=0,Or=!1,mi=new Map,hi,Ke=(k,F)=>{let ne=`${k}:${F??""}`,Ne=(mi.get(ne)??0)+1;if(mi.set(ne,Ne),k==="autocompact"){let ge=A.recoveryTrace.get("autocompact")??0;if(Ne>du||ge>=fu){let Tt=`Repeated context compression made no forward progress: ${F??"autocompact"}`;return hi=Tt,A.recoveryTrace.set("compression_loop_guard",(A.recoveryTrace.get("compression_loop_guard")??0)+1),{type:"recovery",turnId:o,action:"compression_loop_guard",detail:Tt}}}return A.recoveryTrace.set(k,(A.recoveryTrace.get(k)??0)+1),{type:"recovery",turnId:o,action:k,detail:F}},gi=()=>({type:"tool_use_summary",turnId:o,ledgerSchemaVersion:5,toolCalls:V.map(k=>({...k})),availableToolNames:Jl(a??c),enabledToolNames:uu(),toolCallNames:[...j].sort(),blockedToolCalls:My(Y)}),pu=(k,F)=>({type:"end",turnId:o,content:k,turnStatus:F,taskOutcome:"unverified",usage:A.totalUsage,model:l,...A.recoveryTrace.size>0?{recoveryTrace:Object.fromEntries(A.recoveryTrace)}:{}});function*Ut(k,F="completed"){yield gi(),yield pu(k,F)}function*Ae(k,F){yield gi(),yield{type:"error",turnId:o,error:k,code:F,usage:A.totalUsage}}let _t=0,Ft=0;function*mu(k){_t<=Ft||(yield{type:"text_rollback",turnId:o,keepLength:Ft,reason:k},_t=Ft)}for(Me=yt();;){yield*mu("round_restart"),pi++,Or=!1;let{messages:k,turnCount:F,guardState:ne,reactiveCompactState:Ne}=A,{toolLoopState:ge}=A;if(e.refreshTools&&pi>1){let _=e.refreshTools(),T=new Set(_.map(Fe=>Fe.function.name)),I=M(w.filter(Fe=>!ie.has(Fe.function.name)||be.has(Fe.function.name)),T),oe=I;oe!==Me&&(Me=oe,n.debug(`tools refreshed within initial turn snapshot: ${I.length}/${w.length} tools`))}if(e.drainPendingGuidance)for(let _ of e.drainPendingGuidance()){let T=_.trim();T&&(k.push({role:"user",content:T}),n.info(`mid-turn guidance injected (${T.length} chars)`))}if(e.drainPendingTaskNotifications){let _=e.drainPendingTaskNotifications().filter(T=>T.trim());_.length>0&&(k.push(Yl(_)),n.info(`background task result injected (${_.length} item(s))`))}if(Yn(ne,$)){n.info(`turn aborted by guard at turn ${F}`),yield*Ae("Turn aborted","ABORTED");return}let Tt=yield*Hl({messages:k,guardConfig:$,runtimePorts:e.runtimePorts,hooks:m,hookCtx:p,currentModel:l,log:n,recovery:(_,T)=>Ke(_,T),onAutocompact:()=>{A.hasAttemptedReactiveCompact=!1}});if(Tt!==k&&k.splice(0,k.length,...Tt),hi){yield*Ut("","stopped");return}let Sn=Jn(ne,$);Sn.level==="warning"&&n.info(`token budget warning: ${Sn.usagePercent}% used, ${Sn.remainingTokens} remaining`);let yi=e.toolChoice==="required"&&fi?"auto":e.toolChoice??"auto",Ir=Dn({tools:Me,toolChoice:yi}),xr=Br({maxRounds:U,replayMessages:Tt,lastStopReason:ge.lastStopReason,options:{stopReason:ge.lastStopReason}}),On=xr.state.replayMessages;ge=xr.state,xr.recoveryActions.length>0&&n.debug(`tool loop recovery: ${xr.recoveryActions.map(_=>_.detail??_.kind).join("; ")}`),n.debug(`turn ${F}, messages: ${On.length}`),await Sr("model_ready",On,F-1),se(m,"turn.before_inference",{...p,model:l},n);let Bt=!1,_i=[],Ti=yi==="required",In=0,Vt="";function*hu(_){if(_){if(Ti){Vt+=_;return}In+=_.length,_t+=_.length,yield{type:"delta",turnId:o,text:_}}}function*gu(){if(!Vt)return;let _=Vt;Vt="",In+=_.length,_t+=_.length,yield{type:"delta",turnId:o,text:_}}let vi=new Map,xn="stop",le,Pr,H=null,Mr=null,Ci=!1,yu=performance.now(),Pn,bi=0,wi=0,Ei=0,Mn=0,ki,rt,Ri=!1,Nr=!1,$i=!1,vt=[],zt=[];try{let _=t.stream({model:l,messages:On,...Ir.tools.length>0?{tools:Ir.tools,toolChoice:Ir.normalizedToolChoice??"auto"}:{},temperature:d,maxTokens:ne.currentMaxOutputTokens||void 0,streamRequired:e.streamRequired,reasoning:e.reasoning,promptCacheKey:e.promptCacheKey,promptCacheRetention:e.promptCacheRetention,serviceTier:e.serviceTier,...y!==void 0?{maxToolCalls:y}:{},parallelToolCalls:e.parallelToolCalls,textVerbosity:e.textVerbosity},u,h);for await(let T of Dy(_,e.llmStreamIdleTimeoutMs??qy))switch(Pn===void 0&&T.type!=="usage"&&T.type!=="response_id"&&(Pn=Math.max(0,Math.round(performance.now()-yu))),T.type){case"delta":bi+=1,wi+=T.text.length,rt===void 0&&(rt="text"),Mn===0&&(Ri=!0),_i.push(T.text),yield*hu(T.text);break;case"tool_call_delta":Mn+=1,rt===void 0&&(rt="tool_call"),Bt=!0,Zn(vi,T);break;case"reasoning_delta":Ei+=1,rt===void 0&&(rt="reasoning"),vt.push(T.text),yield{type:"reasoning_delta",turnId:o,text:T.text};break;case"reasoning_block_complete":T.signature&&zt.push({thinking:vt.join(""),signature:T.signature}),vt.length=0;break;case"usage":Pr=Hn(T);let I=Py(T.records);le={inputTokens:I?.tokens.inputTokens??T.promptTokens,outputTokens:I?.tokens.outputTokens??T.completionTokens,reasoningTokens:I?.tokens.reasoningTokens??T.reasoningTokens,cacheRead:I?.tokens.cacheReadTokens??T.cacheReadTokens,cacheWrite:I?.tokens.cacheWriteTokens??T.cacheCreationTokens,records:T.records};break;case"response_id":ki=T.id;break;case"annotations":yield{type:"annotations",turnId:o,annotations:T.annotations};break;case"error":Ci=T.outcome==="rejected",Mr=T.message||"LLM provider returned an error chunk";break;case"done":$i=!0,xn=T.finishReason;break}if(Mr){se(m,"stop.failure",{sessionId:s,reason:"PROVIDER_STREAM_ERROR",error:Mr},n),yield*Ae(Mr,Ci?"MODEL_REQUEST_REJECTED":"PROVIDER_STREAM_ERROR");return}Bt||se(m,"turn.after_inference",{...p,model:l},n)}catch(_){if(_ instanceof kn){se(m,"stop.failure",{sessionId:s,reason:_.code,error:_.message},n),yield*Ae(_.message,_.code);return}let T=yield*Wl(_,{state:A,guardState:ne,signal:h,turnId:o,log:n,emitRecovery:Ke});if(T.kind==="return")return;if(T.kind==="continue"){A={...A,...T.patch};continue}H=T.streamError}if(!H&&!$i){let _="LLM stream closed before a terminal event; the response was likely truncated upstream.";se(m,"stop.failure",{sessionId:s,reason:"RETRYABLE_TRANSIENT",error:_},n),yield*Ae(_,"RETRYABLE_TRANSIENT");return}if(H&&se(m,"turn.after_inference",{...p,model:l,response:{error:H.message}},n),H)if(ri(H))Nr=!0,n.info(`withheld prompt_too_long error (status=${H.status})`);else if(oi(H))Nr=!0,n.info(`withheld media_size error (status=${H.status})`);else{let _=Qn({status:H.status??500,message:H.message},ne,$);if(_.action==="reactive_compact"&&Ht(Ne)&&(Ne.attemptedThisTurn=!0,ne.hasAttemptedReactiveCompact=!0,yield Ke("reactive_compact",`API ${H.status??500}: ${H.message}`)),_.action==="retry"){let I=(A.consecutiveApiRetries??0)+1;if(I>2){n.info(`API retry limit reached (${2}), aborting`);let oe=Ct(H.status,H.message);yield*Ae(H.message,oe);return}yield Ke("retry",_.reason),A={...A,consecutiveApiRetries:I,transition:void 0};continue}let T=Ct(H.status,H.message);se(m,"stop.failure",{sessionId:s,reason:T,error:H.message},n),yield*Ae(H.message,T);return}le&&(A.totalUsage.inputTokens+=le.inputTokens,A.totalUsage.outputTokens+=le.outputTokens,le.reasoningTokens&&(A.totalUsage.reasoningTokens=(A.totalUsage.reasoningTokens??0)+le.reasoningTokens),le.cacheRead&&(A.totalUsage.cacheRead=(A.totalUsage.cacheRead??0)+le.cacheRead),le.cacheWrite&&(A.totalUsage.cacheWrite=(A.totalUsage.cacheWrite??0)+le.cacheWrite),le.records?.length&&(A.totalUsage.records=[...A.totalUsage.records??[],...le.records])),n.info(`[provider-context] ${JSON.stringify({event:"context_ledger_round",turnId:o,round:F,ttftMs:Pn,inputTokens:le?.inputTokens??0,outputTokens:le?.outputTokens??0,cacheReadTokens:le?.cacheRead??0,cacheWriteTokens:le?.cacheWrite??0,totalPromptTokens:Pr??0,responseIdReceived:ki!==void 0,toolDefinitionCount:Me.length,providerTextChunkCount:bi,providerTextChars:wi,providerReasoningChunkCount:Ei,providerToolCallDeltaCount:Mn,firstSemanticProviderEvent:rt??"none",textBeforeFirstToolCall:Ri,suppressLiveText:Ti,liveEmittedTextChars:In,bufferedSuppressedTextChars:Vt.length})}`),Pr&&(ne.promptTokens=Pr);let Le=_i.join(""),nt=[...vi.values()].map((_,T)=>({id:_.id||`tc_${o}_${F}_${T}`,type:"function",function:{name:_.name,arguments:_.arguments}}));if(!H&&J===0&&nt.length===0&&!Bt&&Le.trim()===""&&vt.join("").trim()===""&&zt.length===0){let _="LLM returned an empty response before any tool use.";se(m,"stop.failure",{sessionId:s,reason:"EMPTY_MODEL_RESPONSE",error:_},n),yield*Ae(_,"EMPTY_MODEL_RESPONSE");return}if(!H&&J>0&&nt.length===0&&!Bt&&Le.trim()===""&&!ni(xn)){let _="LLM returned no user-visible response after tool use.";se(m,"stop.failure",{sessionId:s,reason:"EMPTY_MODEL_RESPONSE_AFTER_TOOL",error:_},n),yield*Ae(_,"EMPTY_MODEL_RESPONSE_AFTER_TOOL");return}if(nt.length===0&&!Bt){if(e.drainPendingTaskNotifications){let I=e.drainPendingTaskNotifications().filter(oe=>oe.trim());if(I.length>0){A={...A,messages:[...k,...Le?[{role:"assistant",content:Le}]:[],Yl(I)]},n.info(`late background task result consumed at completion (${I.length} item(s)) \u2014 running another round`);continue}}if(e.drainPendingGuidance){let I=e.drainPendingGuidance().map(oe=>oe.trim()).filter(Boolean);if(I.length>0){A={...A,messages:[...k,...Le?[{role:"assistant",content:Le}]:[],...I.map(oe=>({role:"user",content:oe}))]},n.info(`late mid-turn guidance consumed at completion (${I.length} item(s)) \u2014 running another round`);continue}}if(Le&&(A.finalText=Le),Nr&&H&&ri(H)){if(Ht(Ne)){Ne.attemptedThisTurn=!0,ne.hasAttemptedReactiveCompact=!0,n.info("withheld 413: reactive compact attempt"),yield Ke("reactive_compact","withheld prompt_too_long"),A={...A,hasAttemptedReactiveCompact:!0,transition:{reason:"reactive_compact_retry"}};continue}n.info("withheld 413: recovery exhausted, surfacing error"),se(m,"stop.failure",{sessionId:s,reason:"prompt_too_long",error:H.message},n),yield*Ae(H.message,"PROMPT_TOO_LONG");return}if(Nr&&H&&oi(H)){if(Ht(Ne)){Ne.attemptedThisTurn=!0,ne.hasAttemptedReactiveCompact=!0,n.info("withheld media error: reactive compact strip-retry"),yield Ke("reactive_compact","media error strip-retry"),A={...A,hasAttemptedReactiveCompact:!0,transition:{reason:"reactive_compact_retry"}};continue}n.info("withheld media error: recovery exhausted"),se(m,"stop.failure",{sessionId:s,reason:"media_error",error:H.message},n),yield*Ae(H.message,"IMAGE_ERROR");return}if(ni(xn)&&(n.info("provider stopped at its output-token limit; preserving partial content"),Or=!0),!Or&&A.finalText&&e.runtimePorts.reviewCompletion){let I=await e.runtimePorts.reviewCompletion(structuredClone(k),A.finalText);if(I.length){let oe=[...k,{role:"assistant",content:Le},...I];if(await Sr("model_ready",oe,F),U>0&&F>=U){yield*Ut("","stopped");return}A={...A,messages:oe,finalText:"",turnCount:F+1};continue}}ge=Fr(ge,{replayMessages:k,lastStopReason:"completed"});let _=!A.finalText,T=A.finalText;yield*Ut(T,Or||_?"stopped":"completed");return}let _u=zt.length===0&&vt.length>0?vt.join(""):void 0;Ft=_t,f(k,qn(nt,Le||void 0,zt.length>0?zt:void 0,_u)),ge=zn(ge,{replayMessages:k,pendingToolCallIds:nt.map(_=>_.id),completedToolCallIds:ge.completedToolCallIds,lastStopReason:"tool_calls"});let Gt=[],Tu=new Set(Me.map(_=>_.function.name)),Ai=[],Si=[];for(let _ of nt)Tu.has(_.function.name)?Ai.push(_):Si.push(_);for(let _ of Si){let I=ie.has(_.function.name)&&!be.has(_.function.name)?`Tool "${_.function.name}" schema is not loaded. Call "${eo}" with that exact tool name before invoking it.`:`Tool "${_.function.name}" was not offered for this turn and will not be executed. Use only the tools listed in the current request.`;Y.push({name:_.function.name,reason:"not-offered"}),f(k,Kt(_.id,{ok:!1,error:I})),Gt.push(_.id),j.add(_.function.name),n.warn(`unoffered tool call suppressed: ${_.function.name}`)}let Nn=[],Oi=[];for(let _ of Ai){let T=Ir.tools.find(oe=>oe.function.name===_.function.name),I=Ly(T,_.function.arguments);I?Oi.push({call:_,error:I}):Nn.push(_)}for(let _ of Oi){let T=_.call;Y.push({name:T.function.name,reason:"invalid-arguments"}),f(k,Kt(T.id,{ok:!1,error:_.error})),Gt.push(T.id),j.add(T.function.name),n.info(`invalid tool arguments blocked: ${T.function.name}`)}let Lr=Nn.slice(0,y);Lr.length>0&&(yield*gu(),Ft=_t);let Ii=Nn.slice(Lr.length);if(Ii.length>0){let _=`This model round proposed more than ${y} tool calls. Only the first ${y} were executed; re-issue any still-needed calls in the next round.`;for(let T of Ii){Y.push({name:T.function.name,reason:"per-round-tool-call-limit"});let I=Kt(T.id,{ok:!1,error:_});f(k,I),Gt.push(T.id)}}await Sr("tools_pending",k,F-1);for(let _ of Lr){let T=Me.find(oe=>oe.function.name===_.function.name),I={sequence:V.length,callId:_.id,name:_.function.name,identity:jy(T,_.function.name),status:"running",arguments:_.function.arguments};V.push(I),W.set(_.id,I),yield{type:"tool_call",turnId:o,callId:_.id,name:_.function.name,...T?.meta?.displayName?.fallback?.trim()?{displayName:T.meta.displayName.fallback.trim()}:{},arguments:_.function.arguments,inputSummary:zl(_.function.arguments)},Ce.add(_.function.name),z++}try{let _=e.runtimePorts.createStreamingToolExecutor({toolInvoker:r,round:F,hooks:m,sessionId:s,turnId:o,log:n,signal:h,maxConcurrentTools:e?.maxConcurrentTools,maxExecutionMs:24e4,executionTimeoutMsByTool:new Map(Me.flatMap(T=>{let I=T.meta?.executionTimeoutMs;return typeof I=="number"&&Number.isFinite(I)&&I>0?[[T.function.name,I]]:[]}))});for(let T of Lr)_.addTool(T);for await(let T of _.getRemainingResults()){let I=W.get(T.callId);I&&(I.status=T.blocked?"blocked":T.ok?"succeeded":"failed",!T.ok&&typeof T.error=="string"&&T.error.trim()&&(I.error=T.error),T.ok||(I.failureKind=ji(T)));let oe=Ny(T);if(oe&&Y.push({name:T.toolName,reason:oe}),T.blocked&&(yield{type:"tool_blocked",turnId:o,callId:T.callId,name:T.toolName,reason:T.blockReason??"blocked"}),T.ok&&T.toolName===eo){let Fe=Li(T.details),jn=e.refreshTools?new Set(e.refreshTools().map(Se=>Se.function.name)):void 0,jr=[],qr=[],Dr=[];for(let Se of Fe)!O.get(Se)||jn&&!jn.has(Se)?Dr.push(Se):!ie.has(Se)||be.has(Se)?qr.push(Se):(be.add(Se),e.loadedDeferredToolNames?.add(Se),jr.push(Se));Me=M(yt(),jn);let vu=T.message;vu.content=JSON.stringify({loaded:jr,alreadyResident:qr,unavailable:Dr}),T.details={type:"tool_schema_load",requestedToolNames:Fe,loaded:jr,alreadyResident:qr,unavailable:Dr},n.info({turnId:o,loaded:jr,alreadyResident:qr,unavailable:Dr},"tool schemas materialized by Agent selection")}{let Fe=T.message;e.sanitizeToolResultMedia&&await e.sanitizeToolResultMedia(Fe)}f(k,T.message),Gt.push(T.callId),T.blocked||(j.add(T.toolName),J++),yield qi(o,T)}}catch(_){let T=_ instanceof Error?_.message:String(_);yield*Ae(T,"TOOL_EXECUTION_ERROR");return}h?.aborted&&h.throwIfAborted(),await Sr("model_ready",k,F),ge=Fr(ge,{replayMessages:k,completedToolCallIds:[...ge.completedToolCallIds,...Gt],lastStopReason:"tool_calls"}),e.toolChoice==="required"&&nt.length>0&&(fi=!0);let Ln=F+1;if(g>0&&Ln>g){n.info(`max turns reached (${g}), completing`),yield Ke("turn_limit_reached",`${g} tool rounds`),yield*Ut(A.finalText,"stopped");return}if(U>0&&Ln>U){n.info(`tool loop budget exhausted (${U} rounds), returning`),yield Ke("tool_budget_exhausted",`${U} rounds`),yield*Ut(A.finalText,"stopped");return}A={messages:k,hasAttemptedReactiveCompact:!1,turnCount:Ln,transition:{reason:"next_turn"},guardState:ne,reactiveCompactState:Ne,toolLoopState:ge,finalText:A.finalText,totalUsage:A.totalUsage,consecutive529Errors:0,consecutiveApiRetries:0,recoveryTrace:A.recoveryTrace}}}function Zl(e){return[...new Set((e??[]).map(t=>t.function.name))].sort()}var Rn=class{transport;apiKey;toolInvoker;log;hooks;configuredMaxRounds;runtimePorts;constructor(t){this.transport=t.llmTransport,this.apiKey=t.apiKey,this.toolInvoker=t.toolInvoker,this.log=t.log,this.hooks=t.hooks,this.runtimePorts=t.runtimePorts,this.configuredMaxRounds=typeof t.maxRounds=="number"&&Number.isFinite(t.maxRounds)&&t.maxRounds>=1?Math.round(t.maxRounds):void 0}async*run(t,r){let{turnId:n,messages:o,availableTools:s,tools:i,systemPrompt:a,config:c}=t,l={sessionId:t.sessionId,turnId:n},u=[...o].reverse().find(b=>b.role==="user"&&typeof b.content=="string")?.content,d=!1,m=()=>({type:"tool_use_summary",turnId:n,telemetrySource:"agent",ledgerSchemaVersion:5,toolCalls:[],availableToolNames:Zl(s??i),enabledToolNames:Zl(i),toolCallNames:[],blockedToolCalls:[]}),h=typeof c?.maxRounds=="number"&&Number.isFinite(c.maxRounds)?c.maxRounds:this.configuredMaxRounds,f=h===void 0?void 0:Math.round(h),g=typeof c?.maxToolCalls=="number"&&Number.isFinite(c.maxToolCalls)?c.maxToolCalls:void 0,v=En(g);yield{type:"start",turnId:n,effectiveMaxRounds:wn(f,o),...v!==void 0?{effectiveMaxToolCalls:v}:{}};try{se(this.hooks,"turn.submitted",{...l,prompt:o[o.length-1]?.content??void 0},this.log);let b=Vn(o),w=[];a&&w.push({role:"system",content:a}),w.push(...b);let O=c?.model??"",E=c?.reasoning;c?.reasoning?.effort==="auto"&&(E=void 0);let Y={turnId:n,sessionId:t.sessionId,continuation:t.continuation,messages:w,availableTools:s,tools:i,deferredToolNames:t.deferredToolNames,loadedDeferredToolNames:t.loadedDeferredToolNames,refreshTools:t.refreshTools,drainPendingGuidance:t.drainPendingGuidance,drainPendingTaskNotifications:t.drainPendingTaskNotifications,sanitizeToolResultMedia:t.sanitizeToolResultMedia,model:O,apiKey:c?.apiKey??this.apiKey,temperature:c?.temperature,maxRounds:f,contextWindowTokens:c?.contextWindowTokens,maxOutputTokens:c?.maxOutputTokens,toolChoice:c?.toolChoice,hooks:this.hooks,maxTurns:c?.maxTurns,maxConcurrentTools:c?.maxConcurrentTools,streamRequired:c?.streamRequired,reasoning:E,promptCacheKey:c?.promptCacheKey,promptCacheRetention:c?.promptCacheRetention,serviceTier:c?.serviceTier,maxToolCalls:g,parallelToolCalls:c?.parallelToolCalls??!1,textVerbosity:c?.textVerbosity,runtimePorts:this.runtimePorts.toolLoop,signal:r};for await(let U of Xl(Y,this.transport,this.toolInvoker,this.log))U.type==="tool_use_summary"&&(d=!0),U.type==="end"?se(this.hooks,"turn.completed",{...l,...u?{prompt:u}:{},response:U.content},this.log):U.type==="error"&&se(this.hooks,"turn.failed",{...l,code:U.code,error:U.error},this.log),yield U}catch(b){if(d||(d=!0,yield m()),r?.aborted)se(this.hooks,"turn.failed",{...l,code:"ABORTED",error:"Turn aborted"},this.log),yield{type:"error",turnId:n,error:"Turn aborted",code:"ABORTED"};else{let w=b instanceof Error?b.message:String(b),O=typeof b?.status=="number"?b.status:void 0,E=Ct(O,w);this.log.error(`turn ${n} error [${E}, retryable=${Ur(E)}]: ${w}`),se(this.hooks,"turn.failed",{...l,code:E,error:w},this.log),yield{type:"error",turnId:n,error:w,code:E}}}}};import{randomUUID as Fy}from"node:crypto";function Rr(e){return e.filter(t=>!["text","image","audio","resource","resource_link"].includes(String(t.type))).map($r)}var eu=["response_present_choice","response_present_table","response_present_diagram"],Ue=e=>({type:"string",minLength:1,maxLength:e}),Dt=e=>({type:"string",maxLength:e}),By=[{type:"function",function:{name:"response_present_choice",description:"Present a single-choice or multiple-choice question as an interactive response block.",parameters:{type:"object",additionalProperties:!1,required:["prompt","selection","options","submitLabel"],properties:{prompt:Ue(1e3),selection:{type:"string",enum:["single","multiple"]},options:{type:"array",minItems:2,maxItems:20,items:{type:"object",additionalProperties:!1,required:["id","label"],properties:{id:Ue(80),label:Ue(200),description:Dt(500)}}},required:{type:"boolean"},minSelections:{type:"integer",minimum:0,maximum:20},maxSelections:{type:"integer",minimum:1,maximum:20},submitLabel:Ue(80)}}}},{type:"function",function:{name:"response_present_table",description:"Present structured rows and columns as an accessible table response block.",parameters:{type:"object",additionalProperties:!1,required:["columns","rows"],properties:{title:Dt(300),caption:Dt(1e3),columns:{type:"array",minItems:1,maxItems:20,items:{type:"object",additionalProperties:!1,required:["key","label"],properties:{key:Ue(80),label:Ue(200),align:{type:"string",enum:["start","center","end"]}}}},rows:{type:"array",maxItems:200,items:{type:"object"}}}}}},{type:"function",function:{name:"response_present_diagram",description:"Present a bounded node-and-edge relationship or process diagram.",parameters:{type:"object",additionalProperties:!1,required:["nodes","edges"],properties:{title:Dt(300),direction:{type:"string",enum:["horizontal","vertical"]},nodes:{type:"array",minItems:1,maxItems:30,items:{type:"object",additionalProperties:!1,required:["id","label"],properties:{id:Ue(80),label:Ue(200),description:Dt(500),tone:{type:"string",enum:["neutral","info","success","warning","danger"]}}}},edges:{type:"array",maxItems:60,items:{type:"object",additionalProperties:!1,required:["from","to"],properties:{from:Ue(80),to:Ue(80),label:Dt(120)}}}}}}}],L=class extends Error{constructor(t){super(t),this.name="AgentContentBlockValidationError"}},Ge=(e,t)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new L(`${t} must be an object`);return e},re=(e,t,r,n=!1)=>{if(typeof e!="string")throw new L(`${t} must be a string`);let o=e.trim();if(!n&&o.length===0)throw new L(`${t} must not be empty`);if(o.length>r)throw new L(`${t} exceeds ${r} characters`);return o},tt=(e,t,r)=>e===void 0?"":re(e,t,r,!0),si=(e,t,r,n,o)=>{if(e===void 0)return o;if(!Number.isInteger(e)||e<r||e>n)throw new L(`${t} must be an integer from ${r} to ${n}`);return e},ii=(e,t)=>{if(new Set(e).size!==e.length)throw new L(`${t} must contain unique ids`)};function $r(e){let t=Ge(e,"content block"),r=re(t.id,"id",200),n=re(t.type,"type",40);if(n==="choice"){let o=t.selection;if(o!=="single"&&o!=="multiple")throw new L("selection must be single or multiple");if(!Array.isArray(t.options)||t.options.length<2||t.options.length>20)throw new L("options must contain 2 to 20 items");let s=t.options.map((l,u)=>{let d=Ge(l,`options[${u}]`);return{id:re(d.id,`options[${u}].id`,80),label:re(d.label,`options[${u}].label`,200),description:tt(d.description,`options[${u}].description`,500)}});if(ii(s.map(l=>l.id),"options"),t.required!==void 0&&typeof t.required!="boolean")throw new L("required must be a boolean");let i=t.required??!0,a=si(t.maxSelections,"maxSelections",1,20,1),c=si(t.minSelections,"minSelections",0,20,i?1:0);if(o==="single"&&a!==1)throw new L("single choice must allow exactly one selection");if(c>a||a>s.length)throw new L("choice selection bounds are invalid");return{id:r,type:n,prompt:re(t.prompt,"prompt",1e3),selection:o,options:s,required:i,minSelections:c,maxSelections:a,submitLabel:re(t.submitLabel,"submitLabel",80)}}if(n==="table"){if(!Array.isArray(t.columns)||t.columns.length<1||t.columns.length>20)throw new L("columns must contain 1 to 20 items");let o=t.columns.map((i,a)=>{let c=Ge(i,`columns[${a}]`),l=c.align??"start";if(l!=="start"&&l!=="center"&&l!=="end")throw new L(`columns[${a}].align is invalid`);return{key:re(c.key,`columns[${a}].key`,80),label:re(c.label,`columns[${a}].label`,200),align:l}});if(ii(o.map(i=>i.key),"columns"),!Array.isArray(t.rows)||t.rows.length>200)throw new L("rows must contain at most 200 items");let s=t.rows.map((i,a)=>{let c=Ge(i,`rows[${a}]`),l={};for(let[u,d]of Object.entries(c)){if(d!==null&&typeof d!="string"&&typeof d!="number"&&typeof d!="boolean")throw new L(`rows[${a}].${u} is not a table cell`);if(typeof d=="string"&&d.length>2e3)throw new L(`rows[${a}].${u} exceeds 2000 characters`);l[u]=d}return l});return{id:r,type:n,title:tt(t.title,"title",300),caption:tt(t.caption,"caption",1e3),columns:o,rows:s}}if(n==="diagram"){let o=t.direction??"horizontal";if(o!=="horizontal"&&o!=="vertical")throw new L("direction is invalid");if(!Array.isArray(t.nodes)||t.nodes.length<1||t.nodes.length>30)throw new L("nodes must contain 1 to 30 items");let s=new Set(["neutral","info","success","warning","danger"]),i=t.nodes.map((l,u)=>{let d=Ge(l,`nodes[${u}]`),m=d.tone??"neutral";if(typeof m!="string"||!s.has(m))throw new L(`nodes[${u}].tone is invalid`);return{id:re(d.id,`nodes[${u}].id`,80),label:re(d.label,`nodes[${u}].label`,200),description:tt(d.description,`nodes[${u}].description`,500),tone:m}});if(ii(i.map(l=>l.id),"nodes"),!Array.isArray(t.edges)||t.edges.length>60)throw new L("edges must contain at most 60 items");let a=new Set(i.map(l=>l.id)),c=t.edges.map((l,u)=>{let d=Ge(l,`edges[${u}]`),m={from:re(d.from,`edges[${u}].from`,80),to:re(d.to,`edges[${u}].to`,80),label:tt(d.label,`edges[${u}].label`,120)};if(!a.has(m.from)||!a.has(m.to))throw new L(`edges[${u}] references an unknown node`);return m});return{id:r,type:n,title:tt(t.title,"title",300),direction:o,nodes:i,edges:c}}if(n==="attachment"){let o=Ge(t.attachment,"attachment"),s=new Set(["image","spreadsheet","presentation","document","engineering_2d","engineering_3d","file"]);if(typeof o.kind!="string"||!s.has(o.kind))throw new L("attachment.kind is invalid");let i=re(o.downloadUrl,"attachment.downloadUrl",4e3),a=re(o.expiresAt,"attachment.expiresAt",100);try{new URL(i)}catch{throw new L("attachment.downloadUrl must be an absolute URL")}if(!Number.isFinite(Date.parse(a)))throw new L("attachment.expiresAt must be an ISO timestamp");return{id:r,type:n,attachment:{id:re(o.id,"attachment.id",200),kind:o.kind,fileName:re(o.fileName,"attachment.fileName",500),mimeType:re(o.mimeType,"attachment.mimeType",255),byteSize:si(o.byteSize,"attachment.byteSize",0,Number.MAX_SAFE_INTEGER,0),downloadUrl:i,expiresAt:a,note:tt(o.note,"attachment.note",500),engineering:Vy(o.engineering)}}}throw new L(`unsupported content block type: ${n}`)}function Vy(e){if(e==null)return null;let t=Ge(e,"engineering"),r=re(t.format,"engineering.format",20);if(!["dxf","dwg","step","stp","glb","gltf"].includes(r))throw new L("engineering.format is invalid");let n=re(t.previewMode,"engineering.previewMode",50);if(!["direct","browser_conversion","external_conversion_required"].includes(n))throw new L("engineering.previewMode is invalid");let o=re(t.parseStatus,"engineering.parseStatus",50);if(!["parsed","partial","conversion_required"].includes(o))throw new L("engineering.parseStatus is invalid");return{format:r,previewMode:n,parseStatus:o,summary:tt(t.summary,"engineering.summary",2e3)}}function zy(e,t,r=Fy){if(!eu.includes(e))throw new L(`unsupported presentation tool: ${e}`);let n;try{n=JSON.parse(t)}catch{throw new L("presentation tool arguments must be valid JSON")}let o=e==="response_present_choice"?"choice":e==="response_present_table"?"table":"diagram",s=$r({...Ge(n,"arguments"),id:r(),type:o});return{result:JSON.stringify({presented:!0,type:s.type}),contentBlocks:[s]}}var tu=new Set(["dxf","dwg","step","stp","glb","gltf"]),kr=e=>new TextDecoder("utf-8",{fatal:!1}).decode(e),ru=e=>{let t=e.split(/[\\/]/u).at(-1)??e,r=t.lastIndexOf(".");return r<0?"":t.slice(r+1).toLowerCase()};function Gy(e){return tu.has(ru(e))}function Ky(e,t){let r=ru(e);if(!tu.has(r))return null;if(r==="dxf")return Hy(t);if(r==="step"||r==="stp")return Wy(t,r);if(r==="glb"||r==="gltf")return Jy(t,r);let n=kr(t.subarray(0,6));if(!/^AC10\d{2}$/u.test(n))throw new L("invalid DWG signature");let o={signature:n};return{format:r,status:"conversion_required",previewMode:"external_conversion_required",metadata:o,extractedText:JSON.stringify({format:r,...o,conversionRequired:!0})}}function Hy(e){let t=kr(e).split(/\r?\n/u),r=t.map(c=>c.trim().toUpperCase());if(!r.includes("SECTION")||!r.includes("EOF"))throw new L("invalid DXF structure");let n={},o=new Set,s=[],i=[];for(let c=0;c+1<t.length;c+=2){let l=t[c]?.trim(),u=t[c+1]?.trim()??"";if(l==="0"&&/^[A-Z][A-Z0-9_]*$/u.test(u)&&(n[u]=(n[u]??0)+1),l==="8"&&u&&o.add(u),l==="10"||l==="11"){let d=Number(u);Number.isFinite(d)&&s.push(d)}if(l==="20"||l==="21"){let d=Number(u);Number.isFinite(d)&&i.push(d)}}let a={layers:[...o].slice(0,100),entityCounts:n,bounds2d:s.length>0&&i.length>0?{minX:Math.min(...s),maxX:Math.max(...s),minY:Math.min(...i),maxY:Math.max(...i)}:null};return{format:"dxf",status:"parsed",previewMode:"browser_conversion",metadata:a,extractedText:JSON.stringify({format:"dxf",...a})}}function Wy(e,t){let r=kr(e);if(!/^\s*ISO-10303-21;/iu.test(r)||!/END-ISO-10303-21;\s*$/iu.test(r))throw new L("invalid STEP structure");let n=r.match(/FILE_SCHEMA\s*\(\s*\(([^)]+)\)/iu)?.[1]?.replace(/['"]/gu,"").trim()??null,o=[...r.matchAll(/PRODUCT\s*\(\s*'[^']*'\s*,\s*'([^']*)'/giu)].map(a=>a[1]?.trim()).filter(a=>!!a),s={};for(let a of r.matchAll(/^#\d+\s*=\s*([A-Z0-9_]+)\s*\(/gmu)){let c=a[1]??"UNKNOWN";s[c]=(s[c]??0)+1}let i={schema:n,products:[...new Set(o)].slice(0,50),entityCounts:s};return{format:t,status:"parsed",previewMode:"browser_conversion",metadata:i,extractedText:JSON.stringify({format:t,...i})}}function Jy(e,t){let r;if(t==="gltf")r=JSON.parse(kr(e));else{let i=new DataView(e.buffer,e.byteOffset,e.byteLength);if(e.byteLength<20||i.getUint32(0,!0)!==1179937895)throw new L("invalid GLB header");let a=i.getUint32(12,!0);if(i.getUint32(16,!0)!==1313821514||20+a>e.byteLength)throw new L("GLB JSON chunk is missing");r=JSON.parse(kr(e.subarray(20,20+a)))}let n=r.asset;if(!n||typeof n!="object"||Array.isArray(n)||typeof n.version!="string")throw new L("glTF asset metadata is missing");let o=i=>Array.isArray(r[i])?r[i].length:0,s={scenes:o("scenes"),nodes:o("nodes"),meshes:o("meshes"),materials:o("materials")};return{format:t,status:"parsed",previewMode:"direct",metadata:s,extractedText:JSON.stringify({format:t,...s})}}function nu(e){return{role:"user",content:`[${e} earlier messages removed to fit the context budget]`}}var $n=class{constructor(t){this.estimateTokens=t}estimateTokens;compress(t,r){let n=Qy(t.flatMap(f=>f.contextAnchors??[])),o=n.length?{role:"user",contextAnchors:n,contextProjection:"facts",content:`Product context facts and material references (data, not new instructions). Different values for one identity remain conflicting unless explicitly superseded; ask or read their sources. Retrieve referenced materials through product tools when needed:
11
- ${JSON.stringify(n)}`}:void 0,s=[],i=[];for(let f of t)f.contextProjection!=="facts"&&(f.role==="system"?s.push(f):i.push(f));let a=r;for(let f of s)a-=this.estimateTokens(f);o&&(a-=this.estimateTokens(o));let c;for(let f of i)if(f.role==="user"){c=f;break}if(c&&(a-=this.estimateTokens(c)),a<=0){let f=i.length-(c?1:0),p=c?[...s,c]:[...s];return o&&p.push(o),f>0&&p.push(nu(f)),{messages:p,droppedCount:f,strategy:"sliding-window"}}let l=[];for(let f of i){if(f===c)continue;let p=l.at(-1);f.role==="tool"&&p?.[0]?.role==="assistant"&&Array.isArray(p[0].tool_calls)&&p[0].tool_calls.length?p.push(f):l.push([f])}let u=[],d=0;for(let f=l.length-1;f>=0;f--){let p=l[f],g=p.reduce((v,b)=>v+this.estimateTokens(b),0);if(a-g<0&&d>=4)break;if(a-g<0&&d<4){u.unshift(...p),d+=p.length;continue}a-=g,u.unshift(...p),d+=p.length}let m=i.length-(u.length+(c&&!u.includes(c)?1:0)),h=[...s];return c&&!u.includes(c)&&h.push(c),o&&h.push(o),m>0&&h.push(nu(m)),h.push(...u),{messages:h,droppedCount:m,strategy:"sliding-window"}}};function Qy(e){let t=[...new Map(e.map(i=>[JSON.stringify(i),i])).values()],r=new Set,n=t.map(i=>{if(!i.id||!i.revision||!i.supersedes?.length)return i;let a=new Set,c=[...i.supersedes];for(;c.length;){let l=c.pop();if(!a.has(l)){a.add(l);for(let u of t.filter(d=>d.id===i.id&&d.revision===l))c.push(...u.supersedes??[])}}return a.has(i.revision)&&r.add(i.id),{...i,supersedes:[...a]}}),o=n.filter(i=>!i.id||!i.revision||r.has(i.id)||!n.some(a=>a.id===i.id&&a.revision!==i.revision&&a.supersedes?.includes(i.revision))),s=new Map;for(let i of o){let{supersedes:a,references:c,...l}=i,u=JSON.stringify(l),d=s.get(u);s.set(u,{...i,...i.supersedes||d?.supersedes?{supersedes:[...new Set([...d?.supersedes??[],...i.supersedes??[]])]}:{},...i.references||d?.references?{references:[...new Set([...d?.references??[],...i.references??[]])]}:{}})}return[...s.values()]}function Yy(e,t){let r=e.executionTimeoutMsByTool?.get(t)??e.maxExecutionMs;return typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):void 0}function Xy(e,t){let r=[e,t?AbortSignal.timeout(t):void 0].filter(n=>n!==void 0);if(r.length!==0)return r.length===1?r[0]:AbortSignal.any(r)}async function Zy(e,t){let{call:r}=e,n=r.function.name,o=Date.now();try{let s=await t.toolInvoker.invoke(t.turnId,n,r.function.arguments,Xy(t.signal,Yy(t,n)),{callId:r.id,sessionId:t.sessionId,round:t.round??1}),i=s.error??(s.mcpIsError?"Tool execution failed":void 0),a=i===void 0;return{callId:r.id,toolName:n,ok:a,...i?{error:i}:{},durationMs:Date.now()-o,...s.details?{details:s.details}:{},message:bt(r.id,{ok:a,payload:s.result,...i?{error:i}:{},toolReferences:s.toolReferences,imageUrls:s.imageUrls,contentBlocks:s.contentBlocks,structuredContent:s.structuredContent,mcpMeta:s.mcpMeta,mcpIsError:s.mcpIsError})}}catch(s){let i=s instanceof Error?s.message:String(s);return{callId:r.id,toolName:n,ok:!1,error:i,durationMs:Date.now()-o,message:bt(r.id,{ok:!1,error:i})}}}var An=class{constructor(t){this.config=t}config;calls=[];addTool(t){this.calls.push({call:t,index:this.calls.length})}async*getRemainingResults(){let t=Math.max(1,Math.min(this.config.maxConcurrentTools??1,Math.max(1,this.calls.length))),r=[],n=0,o=t,s,i=async()=>{try{for(;n<this.calls.length;){if(this.config.signal?.aborted)return;let c=this.calls[n++];if(!c)return;r.push(await Zy(c,this.config)),s?.()}}finally{o--,s?.()}},a=Array.from({length:t},()=>i());try{for(;o>0||r.length>0;){let c=r.shift();c?yield c:await new Promise(l=>{s=l})}}finally{await Promise.all(a)}}};function e_(e){let t=typeof e.content=="string"?e.content:JSON.stringify(e.content??"");return Math.ceil(t.length/4)}function t_(e){let t=new $n(e_);return{saveCheckpoint:e.onCheckpoint,reviewCompletion:e.reviewCompletion,enforceToolResultBudget:async r=>{let n=0,o=[];for(let s of r){if(s.role!=="tool"||!e.projectToolResult){o.push(s);continue}let i=await e.projectToolResult(structuredClone(s));if(i===void 0||i===s.content){o.push(s);continue}n+=1,o.push({...s,content:i})}return{messages:o,newlyReplacedCount:n}},compressMessages:(r,n)=>{let o=t.compress(r,n.budget);return{messages:o.messages,droppedCount:o.droppedCount,strategy:o.strategy}},createStreamingToolExecutor:r=>new An(r)}}function ou(e={}){return{toolLoop:t_(e)}}var r_={info:()=>{},warn:()=>{},error:()=>{},debug:()=>{}};function ai(e){return{async*run(t,r){let n=[],o={async invoke(i,a,c,l,u){let d=await e.toolInvoker.invoke(i,a,c,l,u),m=Rr(d.contentBlocks??[]),h=new Set(n.map(f=>f.id));for(let f of m)h.has(f.id)||n.push(f),h.add(f.id);if(n.length>30)throw Error("a turn cannot return more than 30 content blocks");return d}},s=new Rn({llmTransport:e.llmTransport,toolInvoker:o,apiKey:e.apiKey??"",log:e.logger??r_,maxRounds:e.maxRounds,runtimePorts:ou(e.runtime)});for await(let i of s.run(t,r))i.type==="end"?yield{...i,...n.length?{contentBlocks:n}:{}}:yield i}}}var n_="0.4.0";import{createHash as iu}from"node:crypto";function su(e,t){let r=o=>typeof o=="string"&&!!o.trim();if(!e||![e.module?.id,e.module?.version,e.enterprise?.configurationRevision,e.employee?.permissionRevision,e.knowledge?.revision,e.knowledge?.skill].every(r)||!Array.isArray(e.module.fields)||!e.module.fields.every(o=>o&&typeof o=="object"&&!Array.isArray(o))||!Array.isArray(e.module.operations)||!Array.isArray(e.employee.allowedOperations)||!e.enterprise.configuration||typeof e.enterprise.configuration!="object"||Array.isArray(e.enterprise.configuration)||!Array.isArray(e.enterprise.dataSources)||!Array.isArray(e.knowledge.examples)||!Array.isArray(e.knowledge.exceptions)||e.module.operations.some(o=>!o||!r(o.description)||!Array.isArray(o.prerequisites)||!o.prerequisites.every(r))||e.enterprise.dataSources.some(o=>!o||!r(o.id)||!["ready","missing","unavailable"].includes(o.state)||o.reference!==void 0&&!r(o.reference))||e.knowledge.examples.some(o=>!o||![o.operation,o.input,o.expectedOutcome,o.evidenceReference].every(r))||e.knowledge.exceptions.some(o=>!o||![o.code,o.handling].every(r)))throw Error("CLOUD_ASSISTANT_CONTEXT_INVALID");let n=e.module.operations.map(o=>o.id);if(!n.every(r)||new Set(n).size!==n.length||e.employee.allowedOperations.some(o=>!n.includes(o))||new Set(t.map(o=>o.function.name)).size!==t.length)throw Error("CLOUD_ASSISTANT_CONTEXT_INVALID")}function Ar(e){if(!e||typeof e.id!="string"||!e.id.trim()||typeof e.description!="string"||!e.description.trim()||!Array.isArray(e.criteria)||!e.criteria.length||e.criteria.some(t=>!t||typeof t.id!="string"||!t.id.trim()||typeof t.description!="string"||!t.description.trim())||new Set(e.criteria.map(t=>t.id)).size!==e.criteria.length)throw Error("CLOUD_GOAL_INVALID")}function ci(e,t){Ar(e);let r=e.criteria.map(n=>n.id);if(!t||!Array.isArray(t.criteria)||t.criteria.some(n=>!n)||t.criteria.length!==r.length||new Set(t.criteria.map(n=>n.id)).size!==r.length||t.criteria.some(n=>!r.includes(n.id)||!["satisfied","missing","failed"].includes(n.status)||!Array.isArray(n.references)||n.references.some(o=>typeof o!="string"||!o.trim())||n.status==="satisfied"&&!n.references.length))throw Error("CLOUD_GOAL_EVIDENCE_INVALID");return{status:t.criteria.every(n=>n.status==="satisfied")?"satisfied":"incomplete",criteria:structuredClone(t.criteria)}}function li(e,t){let r=structuredClone(e);if(r.phase!=="tools_pending")throw Error("CLOUD_RECONCILIATION_REQUIRED");let n=r.messages.findLastIndex(i=>!!i.tool_calls?.length),o=r.messages[n]?.tool_calls;if(!o||n<0||r.messages.slice(n+1).some(i=>i.role!=="tool"))throw Error("CLOUD_RECONCILIATION_REQUIRED");let s=new Map(t.map(i=>[i.invocation.callId,i]));if(s.size!==t.length||s.size!==o.length)throw Error("CLOUD_RECONCILIATION_REQUIRED");r.messages=r.messages.slice(0,n+1);for(let i of o){let a=s.get(i.id),c=a?.invocation;if(!a||!c||he(c.context)!==he(r.context)||c.turnId!==r.turnId||c.sessionId!==r.sessionId||c.round!==r.completedRounds+1||c.name!==i.function.name||c.arguments!==i.function.arguments||typeof a.result.result!="string")throw Error("CLOUD_CHECKPOINT_MISMATCH");let l=a.result,u=l.error??(l.mcpIsError?"Tool execution failed":void 0);r.messages.push(bt(i.id,{ok:u===void 0,payload:l.result,error:u,toolReferences:l.toolReferences,imageUrls:l.imageUrls,contentBlocks:l.contentBlocks,structuredContent:l.structuredContent,mcpMeta:l.mcpMeta,mcpIsError:l.mcpIsError}));for(let d of Rr(l.contentBlocks??[]))r.contentBlocks.some(m=>m.id===d.id)||r.contentBlocks.push(d)}if(r.contentBlocks.length>30)throw Error("CLOUD_CHECKPOINT_MISMATCH");return r.completedRounds++,r.phase="model_ready",r}function he(e){return JSON.stringify(e,(t,r)=>r&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.keys(r).sort().map(n=>[n,r[n]])):r)}function o_(e){let t=new Set;for(let r of e){for(let n of r.tool_calls??[])t.add(n.id);r.role==="tool"&&r.tool_call_id&&t.delete(r.tool_call_id)}return t.size>0}function ui(e){return{async*run(t,r){let n=structuredClone(t);n.config={...n.config,maxRounds:n.config?.maxRounds??e.maxRounds??12,maxToolCalls:n.config?.maxToolCalls??8,maxConcurrentTools:n.config?.maxConcurrentTools??1};let o=Object.freeze(n.context),s=he({messages:n.messages,tools:n.tools,availableTools:n.availableTools,config:n.config,systemPrompt:n.systemPrompt,maxRounds:e.maxRounds,runtime:e.runtime,assistantContext:n.assistantContext,goal:n.goal,executionBudget:n.executionBudget}),i=y=>({type:"error",turnId:n.turnId,code:y,error:y});try{n.assistantContext&&su(n.assistantContext,n.tools),n.goal&&Ar(n.goal)}catch(y){yield i(y instanceof Error?y.message:"CLOUD_REQUEST_INVALID");return}let a=n.executionBudget;if(a&&a.monetary!==void 0&&(!a.monetary||typeof a.monetary!="object"||typeof a.monetary.id!="string"||typeof a.monetary.maxAmount!="string"||!/^[A-Za-z0-9._:-]{1,200}$/.test(a.monetary.id)||a.monetary.currency!=="CNY"||!/^(?:0|[1-9][0-9]{0,9})(?:\.[0-9]{1,4})?$/.test(a.monetary.maxAmount)||!/[1-9]/.test(a.monetary.maxAmount))){yield{type:"error",turnId:n.turnId,error:"CLOUD_MONETARY_BUDGET_INVALID",code:"CLOUD_MONETARY_BUDGET_INVALID"};return}if(a?.monetary&&e.llmTransport.supportsTaskMonetaryBudget!==!0){yield{type:"error",turnId:n.turnId,error:"CLOUD_MONETARY_BUDGET_UNSUPPORTED",code:"CLOUD_MONETARY_BUDGET_UNSUPPORTED"};return}if(a&&(a.maxModelRequests!==void 0&&(!Number.isSafeInteger(a.maxModelRequests)||a.maxModelRequests<1)||a.deadlineAtMs!==void 0&&(!Number.isSafeInteger(a.deadlineAtMs)||a.deadlineAtMs<1))){yield i("CLOUD_BUDGET_INVALID");return}if(a?.deadlineAtMs!==void 0&&a.deadlineAtMs<=Date.now()){yield i("CLOUD_DEADLINE_EXCEEDED");return}if(!o||Object.values(o).some(y=>typeof y!="string"||!y.trim())||![o.applicationId,o.tenantId,o.actorId,o.scopeId,o.definitionVersion,n.turnId,n.sessionId].every(y=>typeof y=="string"&&y.trim())){yield i("CLOUD_CONTEXT_INVALID");return}if([n.config.maxRounds,n.config.maxToolCalls,n.config.maxConcurrentTools].some(y=>!Number.isSafeInteger(y)||y<1)){yield i("CLOUD_BUDGET_INVALID");return}let c=n.resume;if(c&&(c.schemaVersion!==1||he(c.context)!==he(o)||c.turnId!==n.turnId||c.sessionId!==n.sessionId||c.binding!==s||!Number.isSafeInteger(c.completedRounds)||c.completedRounds<0||!Array.isArray(c.messages)||!Array.isArray(c.contentBlocks))){yield i("CLOUD_CHECKPOINT_MISMATCH");return}if(c&&(c.phase!=="model_ready"||o_(c.messages))){yield i("CLOUD_RECONCILIATION_REQUIRED");return}let l=n.config?.maxRounds??e.maxRounds;if(c&&(l&&l>0&&c.completedRounds>=l||n.config?.maxTurns&&n.config.maxTurns>0&&c.completedRounds>=n.config.maxTurns)){yield i("CLOUD_BUDGET_EXHAUSTED");return}let u=new AbortController,d=r?AbortSignal.any([r,u.signal]):u.signal,m,h,f=y=>{throw m=y,u.abort(),Error(y)},p,g=()=>{if(a?.deadlineAtMs===void 0)return;let y=a.deadlineAtMs-Date.now();if(y<=0){m="CLOUD_DEADLINE_EXCEEDED",u.abort();return}p=setTimeout(g,Math.min(y,2147483647))},v=async y=>{d.throwIfAborted();try{await e.authorize(o,y)}catch{f("CLOUD_AUTHORIZATION_FAILED")}d.throwIfAborted()},b=new Map,w=structuredClone(c?.modelOperations??[]),O=c?structuredClone(c):void 0,E=(c?.completedRounds??0)+1,Y=async y=>{let $=structuredClone(w),j=$.findIndex(V=>V.requestId===y.requestId);j<0?$.push(structuredClone(y)):$[j]=structuredClone(y);try{if(e.onModelOperation)await e.onModelOperation(structuredClone(y));else if(O&&e.checkpoints){let V=structuredClone({...O,modelOperations:$});await e.checkpoints.save(V),O=V}}catch{return f("CLOUD_MODEL_RECEIPT_FAILED")}w.splice(0,w.length,...$)};try{for(let y of c?.contentBlocks??[])b.set(y.id,$r(y));if(b.size>30)throw Error("invalid block count")}catch{yield i("CLOUD_CHECKPOINT_MISMATCH");return}let U=ai({...e,llmTransport:{async*stream(y,$,j){await v({type:"model"});let V=iu("sha256").update(he(a?.monetary?{...y,taskBudget:a.monetary}:y)).digest("hex"),W=w.findLast(M=>M.round===E&&M.requestDigest===V&&M.status==="completed"&&M.response?.length);if(W?.response){for(let M of structuredClone(W.response))yield M;return}if(w.some(M=>["prepared","responding","unknown"].includes(M.status)))return f("MODEL_RECONCILIATION_REQUIRED");if(a?.maxModelRequests!==void 0&&w.length>=a.maxModelRequests)return f("CLOUD_BUDGET_EXHAUSTED");let J=Math.max(0,...w.filter(M=>M.round===E).map(M=>M.attempt))+1,Ce=iu("sha256").update(he([o,n.turnId,E,J,V])).digest("hex"),z={requestId:Ce,requestDigest:V,round:E,attempt:J,model:y.model,status:"prepared",startedAtMs:Date.now()};if(e.llmTransport.bindModelRequest){let M=await e.llmTransport.bindModelRequest(y,$);if(typeof M!="string"||!M.trim())return f("CLOUD_MODEL_ORIGIN_INVALID");z.originReference=M}if(await Y(z),e.reserveModelBudget){try{let M=await e.reserveModelBudget(o,structuredClone(z),structuredClone(y),j);if(typeof M?.reference!="string"||!M.reference.trim())throw Error("invalid budget reservation");z={...z,budgetReference:M.reference}}catch{return await Y({...z,status:"rejected",finishedAtMs:Date.now()}),f("CLOUD_MODEL_BUDGET_REJECTED")}await Y(z)}j?.throwIfAborted();let ie=!1,be=!1,yt=[];try{for await(let M of e.llmTransport.stream({...y,execution:{requestId:Ce,requestDigest:V,round:E,attempt:J,...z.originReference?{originReference:z.originReference}:{},...a?.monetary?{taskBudget:structuredClone(a.monetary)}:{}}},$,j))yt.push(structuredClone(M)),M.type==="response_id"&&(z={...z,responseId:M.id,status:"responding"},await Y(z)),M.type==="usage"&&(z={...z,usage:{inputTokens:M.promptTokens,outputTokens:M.completionTokens,records:M.records}}),M.type==="done"&&!be&&(ie=!0,z={...z,status:"completed",finishReason:M.finishReason}),M.type==="error"&&(be=!0,ie=!1,z={...z,status:M.outcome==="rejected"?"rejected":"unknown"}),yield M}catch(M){throw z={...z,status:M?.outcome==="rejected"?"rejected":"unknown"},M}finally{!ie&&z.status!=="rejected"&&(z={...z,status:"unknown"}),z.status==="completed"&&(z={...z,response:yt}),z={...z,finishedAtMs:Date.now()},await Y(z)}}},runtime:{...e.runtime,onCheckpoint:async y=>{E=y.completedRounds+1,(m||d.aborted)&&d.throwIfAborted();try{await e.checkpoints?.save(structuredClone({...y,schemaVersion:1,context:o,binding:s,contentBlocks:[...b.values()],modelOperations:w})),O=structuredClone({...y,schemaVersion:1,context:o,binding:s,contentBlocks:[...b.values()],modelOperations:w})}catch{f("CLOUD_CHECKPOINT_FAILED")}}},toolInvoker:{async invoke(y,$,j,V,W){if(!W)return f("CLOUD_TOOL_IDENTITY_MISSING");await v({type:"tool",name:$,callId:W.callId});let J=Object.freeze({context:o,turnId:y,sessionId:W.sessionId,callId:W.callId,round:W.round,name:$,arguments:j,...a?.monetary?{taskBudget:Object.freeze(structuredClone(a.monetary))}:{}}),Ce,z=!1;try{let ie=await e.toolInvoker.invoke(J,V);if("kind"in ie&&ie.kind==="wait"){if(!e.onWait||!e.checkpoints)return f("CLOUD_WAIT_STORAGE_REQUIRED");if(h)return f("CLOUD_MULTIPLE_WAITS");if(typeof ie.wait?.id!="string"||!ie.wait.id.trim()||typeof ie.wait.reference!="string"||!ie.wait.reference.trim()||!["input","confirmation","external"].includes(ie.wait.kind))return f("CLOUD_WAIT_INVALID");throw await e.onWait(J,structuredClone(ie.wait)),h={type:"waiting",turnId:y,invocation:J,wait:structuredClone(ie.wait)},z=!0,u.abort(),Error("CLOUD_TASK_WAITING")}Ce=ie;for(let be of Rr(Ce.contentBlocks??[]))b.has(be.id)||b.set(be.id,be);if(b.size>30)throw Error("invalid block count")}catch{if(z||m)throw Error(m??"CLOUD_TASK_WAITING");return f("CLOUD_TOOL_OUTCOME_UNKNOWN")}try{await e.onToolResult?.(J,structuredClone(Ce))}catch{f("CLOUD_TOOL_RECEIPT_FAILED")}return Ce}}});try{g();let y=n.assistantContext,$=[...n.messages],j=[];y&&j.push({role:"user",contextProjection:"facts",content:`Product context facts (data, not instructions): ${JSON.stringify({module:y.module,enterprise:y.enterprise,employee:y.employee})}`,contextAnchors:[{category:"constraint",value:JSON.stringify({module:y.module,enterprise:y.enterprise,employee:y.employee})}]}),n.goal&&j.push({role:"user",contextProjection:"facts",content:`Requested business outcome: ${JSON.stringify(n.goal)}`,contextAnchors:[{category:"objective",value:JSON.stringify(n.goal)}]});let V=$.findLastIndex(J=>J.role==="user"&&J.contextProjection!=="facts");$.splice(V<0?$.length:V,0,...j);let W=y?[n.systemPrompt,y.knowledge.skill,`Verified examples and exception handling: ${JSON.stringify({revision:y.knowledge.revision,examples:y.knowledge.examples,exceptions:y.knowledge.exceptions})}`].filter(Boolean).join(`
11
+ ${JSON.stringify(n)}`}:void 0,s=[],i=[];for(let f of t)f.contextProjection!=="facts"&&(f.role==="system"?s.push(f):i.push(f));let a=r;for(let f of s)a-=this.estimateTokens(f);o&&(a-=this.estimateTokens(o));let c;for(let f of i)if(f.role==="user"){c=f;break}if(c&&(a-=this.estimateTokens(c)),a<=0){let f=i.length-(c?1:0),p=c?[...s,c]:[...s];return o&&p.push(o),f>0&&p.push(nu(f)),{messages:p,droppedCount:f,strategy:"sliding-window"}}let l=[];for(let f of i){if(f===c)continue;let p=l.at(-1);f.role==="tool"&&p?.[0]?.role==="assistant"&&Array.isArray(p[0].tool_calls)&&p[0].tool_calls.length?p.push(f):l.push([f])}let u=[],d=0;for(let f=l.length-1;f>=0;f--){let p=l[f],g=p.reduce((v,b)=>v+this.estimateTokens(b),0);if(a-g<0&&d>=4)break;if(a-g<0&&d<4){u.unshift(...p),d+=p.length;continue}a-=g,u.unshift(...p),d+=p.length}let m=i.length-(u.length+(c&&!u.includes(c)?1:0)),h=[...s];return c&&!u.includes(c)&&h.push(c),o&&h.push(o),m>0&&h.push(nu(m)),h.push(...u),{messages:h,droppedCount:m,strategy:"sliding-window"}}};function Qy(e){let t=[...new Map(e.map(i=>[JSON.stringify(i),i])).values()],r=new Set,n=t.map(i=>{if(!i.id||!i.revision||!i.supersedes?.length)return i;let a=new Set,c=[...i.supersedes];for(;c.length;){let l=c.pop();if(!a.has(l)){a.add(l);for(let u of t.filter(d=>d.id===i.id&&d.revision===l))c.push(...u.supersedes??[])}}return a.has(i.revision)&&r.add(i.id),{...i,supersedes:[...a]}}),o=n.filter(i=>!i.id||!i.revision||r.has(i.id)||!n.some(a=>a.id===i.id&&a.revision!==i.revision&&a.supersedes?.includes(i.revision))),s=new Map;for(let i of o){let{supersedes:a,references:c,...l}=i,u=JSON.stringify(l),d=s.get(u);s.set(u,{...i,...i.supersedes||d?.supersedes?{supersedes:[...new Set([...d?.supersedes??[],...i.supersedes??[]])]}:{},...i.references||d?.references?{references:[...new Set([...d?.references??[],...i.references??[]])]}:{}})}return[...s.values()]}function Yy(e,t){let r=e.executionTimeoutMsByTool?.get(t)??e.maxExecutionMs;return typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):void 0}function Xy(e,t){let r=[e,t?AbortSignal.timeout(t):void 0].filter(n=>n!==void 0);if(r.length!==0)return r.length===1?r[0]:AbortSignal.any(r)}async function Zy(e,t){let{call:r}=e,n=r.function.name,o=Date.now();try{let s=await t.toolInvoker.invoke(t.turnId,n,r.function.arguments,Xy(t.signal,Yy(t,n)),{callId:r.id,sessionId:t.sessionId,round:t.round??1}),i=s.error??(s.mcpIsError?"Tool execution failed":void 0),a=i===void 0;return{callId:r.id,toolName:n,ok:a,...i?{error:i}:{},durationMs:Date.now()-o,...s.details?{details:s.details}:{},message:bt(r.id,{ok:a,payload:s.result,...i?{error:i}:{},toolReferences:s.toolReferences,imageUrls:s.imageUrls,contentBlocks:s.contentBlocks,structuredContent:s.structuredContent,mcpMeta:s.mcpMeta,mcpIsError:s.mcpIsError})}}catch(s){let i=s instanceof Error?s.message:String(s);return{callId:r.id,toolName:n,ok:!1,error:i,durationMs:Date.now()-o,message:bt(r.id,{ok:!1,error:i})}}}var An=class{constructor(t){this.config=t}config;calls=[];addTool(t){this.calls.push({call:t,index:this.calls.length})}async*getRemainingResults(){let t=Math.max(1,Math.min(this.config.maxConcurrentTools??1,Math.max(1,this.calls.length))),r=[],n=0,o=t,s,i=async()=>{try{for(;n<this.calls.length;){if(this.config.signal?.aborted)return;let c=this.calls[n++];if(!c)return;r.push(await Zy(c,this.config)),s?.()}}finally{o--,s?.()}},a=Array.from({length:t},()=>i());try{for(;o>0||r.length>0;){let c=r.shift();c?yield c:await new Promise(l=>{s=l})}}finally{await Promise.all(a)}}};function e_(e){let t=typeof e.content=="string"?e.content:JSON.stringify(e.content??"");return Math.ceil(t.length/4)}function t_(e){let t=new $n(e_);return{saveCheckpoint:e.onCheckpoint,reviewCompletion:e.reviewCompletion,enforceToolResultBudget:async r=>{let n=0,o=[];for(let s of r){if(s.role!=="tool"||!e.projectToolResult){o.push(s);continue}let i=await e.projectToolResult(structuredClone(s));if(i===void 0||i===s.content){o.push(s);continue}n+=1,o.push({...s,content:i})}return{messages:o,newlyReplacedCount:n}},compressMessages:(r,n)=>{let o=t.compress(r,n.budget);return{messages:o.messages,droppedCount:o.droppedCount,strategy:o.strategy}},createStreamingToolExecutor:r=>new An(r)}}function ou(e={}){return{toolLoop:t_(e)}}var r_={info:()=>{},warn:()=>{},error:()=>{},debug:()=>{}};function ai(e){return{async*run(t,r){let n=[],o={async invoke(i,a,c,l,u){let d=await e.toolInvoker.invoke(i,a,c,l,u),m=Rr(d.contentBlocks??[]),h=new Set(n.map(f=>f.id));for(let f of m)h.has(f.id)||n.push(f),h.add(f.id);if(n.length>30)throw Error("a turn cannot return more than 30 content blocks");return d}},s=new Rn({llmTransport:e.llmTransport,toolInvoker:o,apiKey:e.apiKey??"",log:e.logger??r_,maxRounds:e.maxRounds,runtimePorts:ou(e.runtime)});for await(let i of s.run(t,r))i.type==="end"?yield{...i,...n.length?{contentBlocks:n}:{}}:yield i}}}var n_="0.4.1";import{createHash as iu}from"node:crypto";function su(e,t){let r=o=>typeof o=="string"&&!!o.trim();if(!e||![e.module?.id,e.module?.version,e.enterprise?.configurationRevision,e.employee?.permissionRevision,e.knowledge?.revision,e.knowledge?.skill].every(r)||!Array.isArray(e.module.fields)||!e.module.fields.every(o=>o&&typeof o=="object"&&!Array.isArray(o))||!Array.isArray(e.module.operations)||!Array.isArray(e.employee.allowedOperations)||!e.enterprise.configuration||typeof e.enterprise.configuration!="object"||Array.isArray(e.enterprise.configuration)||!Array.isArray(e.enterprise.dataSources)||!Array.isArray(e.knowledge.examples)||!Array.isArray(e.knowledge.exceptions)||e.module.operations.some(o=>!o||!r(o.description)||!Array.isArray(o.prerequisites)||!o.prerequisites.every(r))||e.enterprise.dataSources.some(o=>!o||!r(o.id)||!["ready","missing","unavailable"].includes(o.state)||o.reference!==void 0&&!r(o.reference))||e.knowledge.examples.some(o=>!o||![o.operation,o.input,o.expectedOutcome,o.evidenceReference].every(r))||e.knowledge.exceptions.some(o=>!o||![o.code,o.handling].every(r)))throw Error("CLOUD_ASSISTANT_CONTEXT_INVALID");let n=e.module.operations.map(o=>o.id);if(!n.every(r)||new Set(n).size!==n.length||e.employee.allowedOperations.some(o=>!n.includes(o))||new Set(t.map(o=>o.function.name)).size!==t.length)throw Error("CLOUD_ASSISTANT_CONTEXT_INVALID")}function Ar(e){if(!e||typeof e.id!="string"||!e.id.trim()||typeof e.description!="string"||!e.description.trim()||!Array.isArray(e.criteria)||!e.criteria.length||e.criteria.some(t=>!t||typeof t.id!="string"||!t.id.trim()||typeof t.description!="string"||!t.description.trim())||new Set(e.criteria.map(t=>t.id)).size!==e.criteria.length)throw Error("CLOUD_GOAL_INVALID")}function ci(e,t){Ar(e);let r=e.criteria.map(n=>n.id);if(!t||!Array.isArray(t.criteria)||t.criteria.some(n=>!n)||t.criteria.length!==r.length||new Set(t.criteria.map(n=>n.id)).size!==r.length||t.criteria.some(n=>!r.includes(n.id)||!["satisfied","missing","failed"].includes(n.status)||!Array.isArray(n.references)||n.references.some(o=>typeof o!="string"||!o.trim())||n.status==="satisfied"&&!n.references.length))throw Error("CLOUD_GOAL_EVIDENCE_INVALID");return{status:t.criteria.every(n=>n.status==="satisfied")?"satisfied":"incomplete",criteria:structuredClone(t.criteria)}}function li(e,t){let r=structuredClone(e);if(r.phase!=="tools_pending")throw Error("CLOUD_RECONCILIATION_REQUIRED");let n=r.messages.findLastIndex(i=>!!i.tool_calls?.length),o=r.messages[n]?.tool_calls;if(!o||n<0||r.messages.slice(n+1).some(i=>i.role!=="tool"))throw Error("CLOUD_RECONCILIATION_REQUIRED");let s=new Map(t.map(i=>[i.invocation.callId,i]));if(s.size!==t.length||s.size!==o.length)throw Error("CLOUD_RECONCILIATION_REQUIRED");r.messages=r.messages.slice(0,n+1);for(let i of o){let a=s.get(i.id),c=a?.invocation;if(!a||!c||he(c.context)!==he(r.context)||c.turnId!==r.turnId||c.sessionId!==r.sessionId||c.round!==r.completedRounds+1||c.name!==i.function.name||c.arguments!==i.function.arguments||typeof a.result.result!="string")throw Error("CLOUD_CHECKPOINT_MISMATCH");let l=a.result,u=l.error??(l.mcpIsError?"Tool execution failed":void 0);r.messages.push(bt(i.id,{ok:u===void 0,payload:l.result,error:u,toolReferences:l.toolReferences,imageUrls:l.imageUrls,contentBlocks:l.contentBlocks,structuredContent:l.structuredContent,mcpMeta:l.mcpMeta,mcpIsError:l.mcpIsError}));for(let d of Rr(l.contentBlocks??[]))r.contentBlocks.some(m=>m.id===d.id)||r.contentBlocks.push(d)}if(r.contentBlocks.length>30)throw Error("CLOUD_CHECKPOINT_MISMATCH");return r.completedRounds++,r.phase="model_ready",r}function he(e){return JSON.stringify(e,(t,r)=>r&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.keys(r).sort().map(n=>[n,r[n]])):r)}function o_(e){let t=new Set;for(let r of e){for(let n of r.tool_calls??[])t.add(n.id);r.role==="tool"&&r.tool_call_id&&t.delete(r.tool_call_id)}return t.size>0}function ui(e){return{async*run(t,r){let n=structuredClone(t);n.config={...n.config,maxRounds:n.config?.maxRounds??e.maxRounds??12,maxToolCalls:n.config?.maxToolCalls??8,maxConcurrentTools:n.config?.maxConcurrentTools??1};let o=Object.freeze(n.context),s=he({messages:n.messages,tools:n.tools,availableTools:n.availableTools,config:n.config,systemPrompt:n.systemPrompt,maxRounds:e.maxRounds,runtime:e.runtime,assistantContext:n.assistantContext,goal:n.goal,executionBudget:n.executionBudget}),i=y=>({type:"error",turnId:n.turnId,code:y,error:y});try{n.assistantContext&&su(n.assistantContext,n.tools),n.goal&&Ar(n.goal)}catch(y){yield i(y instanceof Error?y.message:"CLOUD_REQUEST_INVALID");return}let a=n.executionBudget;if(a&&a.monetary!==void 0&&(!a.monetary||typeof a.monetary!="object"||typeof a.monetary.id!="string"||typeof a.monetary.maxAmount!="string"||!/^[A-Za-z0-9._:-]{1,200}$/.test(a.monetary.id)||a.monetary.currency!=="CNY"||!/^(?:0|[1-9][0-9]{0,9})(?:\.[0-9]{1,4})?$/.test(a.monetary.maxAmount)||!/[1-9]/.test(a.monetary.maxAmount))){yield{type:"error",turnId:n.turnId,error:"CLOUD_MONETARY_BUDGET_INVALID",code:"CLOUD_MONETARY_BUDGET_INVALID"};return}if(a?.monetary&&e.llmTransport.supportsTaskMonetaryBudget!==!0){yield{type:"error",turnId:n.turnId,error:"CLOUD_MONETARY_BUDGET_UNSUPPORTED",code:"CLOUD_MONETARY_BUDGET_UNSUPPORTED"};return}if(a&&(a.maxModelRequests!==void 0&&(!Number.isSafeInteger(a.maxModelRequests)||a.maxModelRequests<1)||a.deadlineAtMs!==void 0&&(!Number.isSafeInteger(a.deadlineAtMs)||a.deadlineAtMs<1))){yield i("CLOUD_BUDGET_INVALID");return}if(a?.deadlineAtMs!==void 0&&a.deadlineAtMs<=Date.now()){yield i("CLOUD_DEADLINE_EXCEEDED");return}if(!o||Object.values(o).some(y=>typeof y!="string"||!y.trim())||![o.applicationId,o.tenantId,o.actorId,o.scopeId,o.definitionVersion,n.turnId,n.sessionId].every(y=>typeof y=="string"&&y.trim())){yield i("CLOUD_CONTEXT_INVALID");return}if([n.config.maxRounds,n.config.maxConcurrentTools].some(y=>!Number.isSafeInteger(y)||y<1)||!Number.isSafeInteger(n.config.maxToolCalls)||n.config.maxToolCalls<0){yield i("CLOUD_BUDGET_INVALID");return}let c=n.resume;if(c&&(c.schemaVersion!==1||he(c.context)!==he(o)||c.turnId!==n.turnId||c.sessionId!==n.sessionId||c.binding!==s||!Number.isSafeInteger(c.completedRounds)||c.completedRounds<0||!Array.isArray(c.messages)||!Array.isArray(c.contentBlocks))){yield i("CLOUD_CHECKPOINT_MISMATCH");return}if(c&&(c.phase!=="model_ready"||o_(c.messages))){yield i("CLOUD_RECONCILIATION_REQUIRED");return}let l=n.config?.maxRounds??e.maxRounds;if(c&&(l&&l>0&&c.completedRounds>=l||n.config?.maxTurns&&n.config.maxTurns>0&&c.completedRounds>=n.config.maxTurns)){yield i("CLOUD_BUDGET_EXHAUSTED");return}let u=new AbortController,d=r?AbortSignal.any([r,u.signal]):u.signal,m,h,f=y=>{throw m=y,u.abort(),Error(y)},p,g=()=>{if(a?.deadlineAtMs===void 0)return;let y=a.deadlineAtMs-Date.now();if(y<=0){m="CLOUD_DEADLINE_EXCEEDED",u.abort();return}p=setTimeout(g,Math.min(y,2147483647))},v=async y=>{d.throwIfAborted();try{await e.authorize(o,y)}catch{f("CLOUD_AUTHORIZATION_FAILED")}d.throwIfAborted()},b=new Map,w=structuredClone(c?.modelOperations??[]),O=c?structuredClone(c):void 0,E=(c?.completedRounds??0)+1,Y=async y=>{let $=structuredClone(w),j=$.findIndex(V=>V.requestId===y.requestId);j<0?$.push(structuredClone(y)):$[j]=structuredClone(y);try{if(e.onModelOperation)await e.onModelOperation(structuredClone(y));else if(O&&e.checkpoints){let V=structuredClone({...O,modelOperations:$});await e.checkpoints.save(V),O=V}}catch{return f("CLOUD_MODEL_RECEIPT_FAILED")}w.splice(0,w.length,...$)};try{for(let y of c?.contentBlocks??[])b.set(y.id,$r(y));if(b.size>30)throw Error("invalid block count")}catch{yield i("CLOUD_CHECKPOINT_MISMATCH");return}let U=ai({...e,llmTransport:{async*stream(y,$,j){await v({type:"model"});let V=iu("sha256").update(he(a?.monetary?{...y,taskBudget:a.monetary}:y)).digest("hex"),W=w.findLast(M=>M.round===E&&M.requestDigest===V&&M.status==="completed"&&M.response?.length);if(W?.response){for(let M of structuredClone(W.response))yield M;return}if(w.some(M=>["prepared","responding","unknown"].includes(M.status)))return f("MODEL_RECONCILIATION_REQUIRED");if(a?.maxModelRequests!==void 0&&w.length>=a.maxModelRequests)return f("CLOUD_BUDGET_EXHAUSTED");let J=Math.max(0,...w.filter(M=>M.round===E).map(M=>M.attempt))+1,Ce=iu("sha256").update(he([o,n.turnId,E,J,V])).digest("hex"),z={requestId:Ce,requestDigest:V,round:E,attempt:J,model:y.model,status:"prepared",startedAtMs:Date.now()};if(e.llmTransport.bindModelRequest){let M=await e.llmTransport.bindModelRequest(y,$);if(typeof M!="string"||!M.trim())return f("CLOUD_MODEL_ORIGIN_INVALID");z.originReference=M}if(await Y(z),e.reserveModelBudget){try{let M=await e.reserveModelBudget(o,structuredClone(z),structuredClone(y),j);if(typeof M?.reference!="string"||!M.reference.trim())throw Error("invalid budget reservation");z={...z,budgetReference:M.reference}}catch{return await Y({...z,status:"rejected",finishedAtMs:Date.now()}),f("CLOUD_MODEL_BUDGET_REJECTED")}await Y(z)}j?.throwIfAborted();let ie=!1,be=!1,yt=[];try{for await(let M of e.llmTransport.stream({...y,execution:{requestId:Ce,requestDigest:V,round:E,attempt:J,...z.originReference?{originReference:z.originReference}:{},...a?.monetary?{taskBudget:structuredClone(a.monetary)}:{}}},$,j))yt.push(structuredClone(M)),M.type==="response_id"&&(z={...z,responseId:M.id,status:"responding"},await Y(z)),M.type==="usage"&&(z={...z,usage:{inputTokens:M.promptTokens,outputTokens:M.completionTokens,records:M.records}}),M.type==="done"&&!be&&(ie=!0,z={...z,status:"completed",finishReason:M.finishReason}),M.type==="error"&&(be=!0,ie=!1,z={...z,status:M.outcome==="rejected"?"rejected":"unknown"}),yield M}catch(M){throw z={...z,status:M?.outcome==="rejected"?"rejected":"unknown"},M}finally{!ie&&z.status!=="rejected"&&(z={...z,status:"unknown"}),z.status==="completed"&&(z={...z,response:yt}),z={...z,finishedAtMs:Date.now()},await Y(z)}}},runtime:{...e.runtime,onCheckpoint:async y=>{E=y.completedRounds+1,(m||d.aborted)&&d.throwIfAborted();try{await e.checkpoints?.save(structuredClone({...y,schemaVersion:1,context:o,binding:s,contentBlocks:[...b.values()],modelOperations:w})),O=structuredClone({...y,schemaVersion:1,context:o,binding:s,contentBlocks:[...b.values()],modelOperations:w})}catch{f("CLOUD_CHECKPOINT_FAILED")}}},toolInvoker:{async invoke(y,$,j,V,W){if(!W)return f("CLOUD_TOOL_IDENTITY_MISSING");await v({type:"tool",name:$,callId:W.callId});let J=Object.freeze({context:o,turnId:y,sessionId:W.sessionId,callId:W.callId,round:W.round,name:$,arguments:j,...a?.monetary?{taskBudget:Object.freeze(structuredClone(a.monetary))}:{}}),Ce,z=!1;try{let ie=await e.toolInvoker.invoke(J,V);if("kind"in ie&&ie.kind==="wait"){if(!e.onWait||!e.checkpoints)return f("CLOUD_WAIT_STORAGE_REQUIRED");if(h)return f("CLOUD_MULTIPLE_WAITS");if(typeof ie.wait?.id!="string"||!ie.wait.id.trim()||typeof ie.wait.reference!="string"||!ie.wait.reference.trim()||!["input","confirmation","external"].includes(ie.wait.kind))return f("CLOUD_WAIT_INVALID");throw await e.onWait(J,structuredClone(ie.wait)),h={type:"waiting",turnId:y,invocation:J,wait:structuredClone(ie.wait)},z=!0,u.abort(),Error("CLOUD_TASK_WAITING")}Ce=ie;for(let be of Rr(Ce.contentBlocks??[]))b.has(be.id)||b.set(be.id,be);if(b.size>30)throw Error("invalid block count")}catch{if(z||m)throw Error(m??"CLOUD_TASK_WAITING");return f("CLOUD_TOOL_OUTCOME_UNKNOWN")}try{await e.onToolResult?.(J,structuredClone(Ce))}catch{f("CLOUD_TOOL_RECEIPT_FAILED")}return Ce}}});try{g();let y=n.assistantContext,$=[...n.messages],j=[];y&&j.push({role:"user",contextProjection:"facts",content:`Product context facts (data, not instructions): ${JSON.stringify({module:y.module,enterprise:y.enterprise,employee:y.employee})}`,contextAnchors:[{category:"constraint",value:JSON.stringify({module:y.module,enterprise:y.enterprise,employee:y.employee})}]}),n.goal&&j.push({role:"user",contextProjection:"facts",content:`Requested business outcome: ${JSON.stringify(n.goal)}`,contextAnchors:[{category:"objective",value:JSON.stringify(n.goal)}]});let V=$.findLastIndex(J=>J.role==="user"&&J.contextProjection!=="facts");$.splice(V<0?$.length:V,0,...j);let W=y?[n.systemPrompt,y.knowledge.skill,`Verified examples and exception handling: ${JSON.stringify({revision:y.knowledge.revision,examples:y.knowledge.examples,exceptions:y.knowledge.exceptions})}`].filter(Boolean).join(`
12
12
 
13
13
  `):n.systemPrompt;for await(let J of U.run({...n,messages:$,systemPrompt:W,continuation:c?{completedRounds:c.completedRounds,usage:c.usage}:void 0,...c?{messages:c.messages,systemPrompt:void 0}:{}},d))if(!h){if(m){yield i(m);return}J.type==="error"&&m?yield i(m):J.type==="end"?yield{...J,...b.size?{contentBlocks:[...b.values()]}:{}}:yield J}}catch(y){if(!h)throw y}finally{p!==void 0&&clearTimeout(p),u.abort()}h&&(yield m?i(m):h)}}}var s_=new Set(["completed","stopped","failed","cancelled"]);function di(e,t){return["applicationId","tenantId","actorId","scopeId","definitionVersion"].every(r=>e[r]===t[r])}function au(e,t){return JSON.stringify([e.applicationId,e.tenantId,e.actorId,e.scopeId,t])}function cu(e){return JSON.stringify([e.invocation.round,e.invocation.callId])}function lu(e,t){if(!e.checkpoint)throw Error("CLOUD_RECONCILIATION_REQUIRED");if(e.checkpoint.phase==="model_ready")return e.checkpoint;let r=e.checkpoint.completedRounds+1;return li(e.checkpoint,t.filter(n=>n.invocation.round===r))}function i_(e){let t=e.heartbeatMs??5e3;if(!Number.isSafeInteger(t)||t<10)throw Error("CLOUD_HEARTBEAT_INVALID");let r=e.deltaBatch;if(r&&(!Number.isSafeInteger(r.maxCharacters)||r.maxCharacters<1||!Number.isSafeInteger(r.maxDelayMs)||r.maxDelayMs<1))throw Error("CLOUD_EVENT_BATCH_INVALID");let n=new Map,o=async(s,i)=>{let a=await e.store.load(s,i);if(a.id!==i||!di(s,a.request.context))throw Error("CLOUD_TASK_NOT_FOUND");return structuredClone(a)};return{async create(s,i){let a=structuredClone(i);if(await e.authorize(a.context,"create"),!s.trim()||a.resume)throw Error("CLOUD_TASK_REQUEST_INVALID");if(a.goal&&(Ar(a.goal),!e.verifyGoal))throw Error("CLOUD_GOAL_VERIFIER_REQUIRED");let c=await e.store.create({id:s,request:a,status:"queued",revision:0,cursor:0,receipts:[]});if(c.id!==s||!di(c.request.context,a.context)||he(c.request)!==he(a))throw Error("CLOUD_TASK_REQUEST_CONFLICT");return c},async get(s,i){return await e.authorize(s,"read"),o(s,i)},async events(s,i,a=0,c=100){if(await e.authorize(s,"read"),!Number.isSafeInteger(a)||a<0||!Number.isSafeInteger(c)||c<1||c>1e3)throw Error("CLOUD_EVENT_CURSOR_INVALID");let l=await o(s,i);if(a>l.cursor)throw Error("CLOUD_EVENT_CURSOR_INVALID");return e.store.events(s,i,a,c)},async cancel(s,i){await e.authorize(s,"cancel"),await o(s,i);let a=await e.store.cancel(s,i);return n.get(au(s,i))?.abort(),a},async appendInput(s,i,a){await e.authorize(s,"append_input");let c=structuredClone(a),l=await o(s,i);if(!c.id?.trim()||!Array.isArray(c.messages)||!c.messages.length||c.messages.some(d=>d.role!=="user"||typeof d.content!="string"||!d.content.trim()||d.tool_calls||d.tool_call_id))throw Error("CLOUD_TASK_INPUT_INVALID");let u=l.inputs?.find(d=>d.id===c.id);if(u){if(he(u)!==he(c))throw Error("CLOUD_TASK_INPUT_CONFLICT");return l}if(!["completed","stopped"].includes(l.status)||l.cancellationRequested||!l.checkpoint||l.checkpoint.phase!=="model_ready"||(l.modelOperations??[]).some(d=>["prepared","responding","unknown"].includes(d.status)))throw Error("CLOUD_TASK_NOT_CONTINUABLE");return e.store.update(s,i,l.revision,{...l,status:"queued",errorCode:void 0,outcome:void 0,inputs:[...l.inputs??[],c],checkpoint:{...l.checkpoint,messages:[...l.checkpoint.messages,...c.messages]}},{type:"task_status",status:"queued"})},async completeWait(s,i,a,c){await e.authorize(s,"complete_wait");let l=await o(s,i);if(!l.status.startsWith("waiting_")||!l.wait||l.wait.descriptor.id!==a)throw Error("CLOUD_TASK_NOT_WAITING");await e.authorizeCompletion(structuredClone(l),a,structuredClone(c));let u=[...l.receipts,{invocation:l.wait.invocation,result:structuredClone(c)}],d=lu(l,u);return e.store.update(s,i,l.revision,{...l,status:"queued",checkpoint:d,receipts:u,wait:void 0},{type:"task_status",status:"queued"})},async recover(s,i,a=[]){await e.authorize(s,"recover"),await o(s,i);let c=await e.store.interrupt(s,i);if(c.status!=="reconciliation_required"||!e.authorizeRecovery)throw Error("CLOUD_RECONCILIATION_REQUIRED");let l=await e.authorizeRecovery(structuredClone(c),structuredClone(a)),u=structuredClone(c.modelOperations??[]);for(let f of u){if(!["prepared","responding","unknown"].includes(f.status))continue;let p=l?.find(g=>g.requestId===f.requestId);if(!p||p.requestDigest!==f.requestDigest||typeof p.evidenceReference!="string"||!p.evidenceReference.trim())throw Error("CLOUD_MODEL_RECONCILIATION_REQUIRED");if(p.outcome==="rejected"&&p.safeToRetry===!0)f.status="rejected";else if(p.outcome==="completed"&&typeof p.responseId=="string"&&p.responseId.trim()&&Array.isArray(p.response)&&p.response.length&&p.response.some(g=>g?.type==="done"&&typeof g.finishReason=="string"&&g.finishReason)&&!p.response.some(g=>!g||g.type==="error"))f.status="completed",f.responseId=p.responseId,f.response=structuredClone(p.response),f.usage=structuredClone(p.usage),f.finishReason=p.response.findLast(g=>g.type==="done")?.finishReason;else throw Error("CLOUD_MODEL_RECONCILIATION_REQUIRED");f.reconciliationReference=p.evidenceReference}let d=[...c.receipts];for(let f of a){let p=d.find(g=>cu(g)===cu(f));if(p&&he(p)!==he(f))throw Error("CLOUD_RECEIPT_CONFLICT");p||d.push(structuredClone(f))}let m=lu(c,d),h=c.cancellationRequested?"cancelled":"queued";return e.store.update(s,i,c.revision,{...c,checkpoint:m,receipts:d,modelOperations:u,status:h,errorCode:void 0},{type:"task_status",status:h})},async execute(s,i,a){await e.authorize(s,"execute"),await o(s,i);let c=await e.store.claim(s,i);if(!c)return;let l=structuredClone(c.task),u=new AbortController,d=a?AbortSignal.any([u.signal,a]):u.signal,m=au(s,i);n.set(m,u);let h=!1,f=Promise.resolve(),p=(U,y)=>{let $=f.then(async()=>{if(h)throw Error("CLOUD_TASK_LEASE_LOST");l=await e.store.update(s,i,l.revision,U(l),y,c.leaseId)});return f=$,$},g,v,b,w=async()=>{b!==void 0&&(clearTimeout(b),b=void 0);let U=v;v=void 0,U&&await p(y=>y,U)},O=()=>g??(g=(async()=>{try{!h&&!await e.store.renew(s,i,c.leaseId)&&(h=!0,u.abort())}catch{h=!0,u.abort()}})().finally(()=>{g=void 0})),E=setInterval(()=>{O()},t),Y=!1;try{if(!["queued"].includes(l.status)||!di(s,l.request.context))throw Error("CLOUD_TASK_CLAIM_INVALID");await p(y=>({...y,status:"running"}),{type:"task_status",status:"running"});let U=ui({...e.agent,runtime:{...e.agent.runtime,reviewCompletion:async(y,$)=>{let j=e.resolveGoal?await e.resolveGoal(structuredClone(l)):l.request.goal;if(j&&e.goalFeedback){if(await e.authorize(s,"execute"),!e.verifyGoal)throw Error("CLOUD_GOAL_VERIFIER_REQUIRED");let V;try{V=ci(j,await e.verifyGoal(structuredClone(l)))}catch{throw Y=!0,Error("CLOUD_GOAL_VERIFICATION_FAILED")}if(await p(W=>({...W,outcome:V}),{type:"goal_verification",outcome:V}),V.status==="incomplete")return e.goalFeedback(structuredClone(l),V)}return e.agent.runtime?.reviewCompletion?.(y,$)??[]}},onModelOperation:y=>{let{response:$,...j}=y;return w().then(()=>p(V=>{let W=[...V.modelOperations??[]],J=W.findIndex(Ce=>Ce.requestId===y.requestId);return J<0?W.push(y):W[J]=y,{...V,modelOperations:W}},{type:"model_operation",operation:j}))},authorize:async(y,$)=>{if(await O(),h)throw Error("CLOUD_TASK_LEASE_LOST");await e.authorize(s,"execute"),await e.agent.authorize(y,$)},checkpoints:{save:y=>p($=>({...$,checkpoint:y}),{type:"checkpoint",phase:y.phase})},onToolResult:(y,$)=>p(j=>({...j,receipts:[...j.receipts,{invocation:y,result:$}]}),{type:"receipt",callId:y.callId,round:y.round,name:y.name}),onWait:(y,$)=>p(j=>({...j,wait:{invocation:y,descriptor:$}}),{type:"receipt",callId:y.callId,round:y.round,name:y.name})});for await(let y of U.run({...l.request,resume:l.checkpoint?{...l.checkpoint,modelOperations:l.modelOperations}:void 0},d)){if(h||d.aborted)break;if(r&&y.type==="delta"){v=v?{...v,text:v.text+y.text}:y,v.text.length>=r.maxCharacters?await w():b===void 0&&(b=setTimeout(()=>{w().catch(()=>u.abort())},Math.min(r.maxDelayMs,2147483647)));continue}await w();let $=y.type==="error"&&Y?{...y,error:"CLOUD_GOAL_VERIFICATION_FAILED",code:"CLOUD_GOAL_VERIFICATION_FAILED"}:y.type==="error"?{...y,error:y.code??"CLOUD_AGENT_FAILED"}:y,j,V=$.type==="end"?e.resolveGoal?await e.resolveGoal(structuredClone(l)):l.request.goal:void 0;if($.type==="end"&&$.turnStatus!=="stopped"&&V)try{if(!e.verifyGoal)throw Error("CLOUD_GOAL_VERIFIER_REQUIRED");await e.authorize(s,"execute"),j=ci(V,await e.verifyGoal(structuredClone(l)))}catch{$={type:"error",turnId:l.request.turnId,error:"CLOUD_GOAL_VERIFICATION_FAILED",code:"CLOUD_GOAL_VERIFICATION_FAILED"}}let W=j?.status==="incomplete"?"stopped":$.type==="waiting"?`waiting_${$.wait.kind}`:$.type==="end"?$.turnStatus==="stopped"?"stopped":"completed":$.type==="error"?["CLOUD_TOOL_OUTCOME_UNKNOWN","CLOUD_MODEL_RECEIPT_FAILED","CLOUD_GOAL_VERIFICATION_FAILED","CLOUD_DEADLINE_EXCEEDED","MODEL_RECONCILIATION_REQUIRED","PROVIDER_STREAM_ERROR","RETRYABLE_TRANSIENT","LLM_STREAM_TIMEOUT","CLOUD_TOOL_RECEIPT_FAILED","CLOUD_CHECKPOINT_FAILED","CLOUD_RECONCILIATION_REQUIRED","CLOUD_MULTIPLE_WAITS","CLOUD_WAIT_INVALID"].includes($.code??"")?"reconciliation_required":"failed":l.status;if(await p(J=>({...J,status:W,...j?{outcome:j}:{},...$.type==="error"?{errorCode:$.code??"CLOUD_AGENT_FAILED"}:{}}),$),s_.has(W)||W==="reconciliation_required"||W.startsWith("waiting_"))break}await w(),await f,!h&&l.status==="running"&&await p(y=>({...y,status:"reconciliation_required",errorCode:"CLOUD_WORKER_INTERRUPTED"}),{type:"task_status",status:"reconciliation_required"})}catch{if(u.abort(),await O(),!h)throw Error("CLOUD_TASK_PERSISTENCE_FAILED")}finally{b!==void 0&&clearTimeout(b),clearInterval(E),u.abort(),n.get(m)===u&&n.delete(m),await e.store.release(s,i,c.leaseId)}}}}export{L as AgentContentBlockValidationError,Ky as analyzeEngineeringFile,he as canonicalCloudValue,li as completeCloudToolCheckpoint,n_ as corePackageVersion,ui as createCloudAgent,i_ as createCloudTaskRuntime,ai as createEmbeddedAgent,zy as createStandardPresentationToolResult,Gy as isEngineeringFile,$r as parseAgentContentBlock,By as standardPresentationToolDefinitions,eu as standardPresentationToolNames};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiaozhiclaw/qlogicagent-core",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Shared SaaS Agent inference and durable task runtime",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",