@mu-agent/mu 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,25 +1,25 @@
1
1
  // @bun
2
- var QK=Object.create;var{getPrototypeOf:YK,defineProperty:p9,getOwnPropertyNames:WK}=Object;var GK=Object.prototype.hasOwnProperty;function XK($){return this[$]}var JK,KK,j6=($,Z,Q)=>{var Y=$!=null&&typeof $==="object";if(Y){var W=Z?JK??=new WeakMap:KK??=new WeakMap,G=W.get($);if(G)return G}Q=$!=null?QK(YK($)):{};let X=Z||!$||!$.__esModule?p9(Q,"default",{value:$,enumerable:!0}):Q;for(let J of WK($))if(!GK.call(X,J))p9(X,J,{get:XK.bind($,J),enumerable:!0});if(Y)W.set($,X);return X};var O=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var Y1=import.meta.require;var XZ=O((iY)=>{Object.defineProperty(iY,"__esModule",{value:!0});iY.regexpCode=iY.getEsmExportName=iY.getProperty=iY.safeStringify=iY.stringify=iY.strConcat=iY.addCodeArg=iY.str=iY._=iY.nil=iY._Code=iY.Name=iY.IDENTIFIER=iY._CodeOrName=void 0;class R5{}iY._CodeOrName=R5;iY.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class K$ extends R5{constructor($){super();if(!iY.IDENTIFIER.test($))throw Error("CodeGen: name must be a valid identifier");this.str=$}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}iY.Name=K$;class E0 extends R5{constructor($){super();this._items=typeof $==="string"?[$]:$}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let $=this._items[0];return $===""||$==='""'}get str(){var $;return($=this._str)!==null&&$!==void 0?$:this._str=this._items.reduce((Z,Q)=>`${Z}${Q}`,"")}get names(){var $;return($=this._names)!==null&&$!==void 0?$:this._names=this._items.reduce((Z,Q)=>{if(Q instanceof K$)Z[Q.str]=(Z[Q.str]||0)+1;return Z},{})}}iY._Code=E0;iY.nil=new E0("");function cY($,...Z){let Q=[$[0]],Y=0;while(Y<Z.length)X8(Q,Z[Y]),Q.push($[++Y]);return new E0(Q)}iY._=cY;var G8=new E0("+");function dY($,...Z){let Q=[GZ($[0])],Y=0;while(Y<Z.length)Q.push(G8),X8(Q,Z[Y]),Q.push(G8,GZ($[++Y]));return VF(Q),new E0(Q)}iY.str=dY;function X8($,Z){if(Z instanceof E0)$.push(...Z._items);else if(Z instanceof K$)$.push(Z);else $.push(LF(Z))}iY.addCodeArg=X8;function VF($){let Z=1;while(Z<$.length-1){if($[Z]===G8){let Q=zF($[Z-1],$[Z+1]);if(Q!==void 0){$.splice(Z-1,3,Q);continue}$[Z++]="+"}Z++}}function zF($,Z){if(Z==='""')return $;if($==='""')return Z;if(typeof $=="string"){if(Z instanceof K$||$[$.length-1]!=='"')return;if(typeof Z!="string")return`${$.slice(0,-1)}${Z}"`;if(Z[0]==='"')return $.slice(0,-1)+Z.slice(1);return}if(typeof Z=="string"&&Z[0]==='"'&&!($ instanceof K$))return`"${$}${Z.slice(1)}`;return}function FF($,Z){return Z.emptyStr()?$:$.emptyStr()?Z:dY`${$}${Z}`}iY.strConcat=FF;function LF($){return typeof $=="number"||typeof $=="boolean"||$===null?$:GZ(Array.isArray($)?$.join(","):$)}function DF($){return new E0(GZ($))}iY.stringify=DF;function GZ($){return JSON.stringify($).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}iY.safeStringify=GZ;function UF($){return typeof $=="string"&&iY.IDENTIFIER.test($)?new E0(`.${$}`):cY`[${$}]`}iY.getProperty=UF;function qF($){if(typeof $=="string"&&iY.IDENTIFIER.test($))return new E0(`${$}`);throw Error(`CodeGen: invalid export name: ${$}, use explicit $id name mapping`)}iY.getEsmExportName=qF;function AF($){return new E0($.toString())}iY.regexpCode=AF});var H8=O((tY)=>{Object.defineProperty(tY,"__esModule",{value:!0});tY.ValueScope=tY.ValueScopeName=tY.Scope=tY.varKinds=tY.UsedValueState=void 0;var z0=XZ();class aY extends Error{constructor($){super(`CodeGen: "code" for ${$} not defined`);this.value=$.value}}var S5;(function($){$[$.Started=0]="Started",$[$.Completed=1]="Completed"})(S5||(tY.UsedValueState=S5={}));tY.varKinds={const:new z0.Name("const"),let:new z0.Name("let"),var:new z0.Name("var")};class K8{constructor({prefixes:$,parent:Z}={}){this._names={},this._prefixes=$,this._parent=Z}toName($){return $ instanceof z0.Name?$:this.name($)}name($){return new z0.Name(this._newName($))}_newName($){let Z=this._names[$]||this._nameGroup($);return`${$}${Z.index++}`}_nameGroup($){var Z,Q;if(((Q=(Z=this._parent)===null||Z===void 0?void 0:Z._prefixes)===null||Q===void 0?void 0:Q.has($))||this._prefixes&&!this._prefixes.has($))throw Error(`CodeGen: prefix "${$}" is not allowed in this scope`);return this._names[$]={prefix:$,index:0}}}tY.Scope=K8;class B8 extends z0.Name{constructor($,Z){super(Z);this.prefix=$}setValue($,{property:Z,itemIndex:Q}){this.value=$,this.scopePath=z0._`.${new z0.Name(Z)}[${Q}]`}}tY.ValueScopeName=B8;var yF=z0._`\n`;class rY extends K8{constructor($){super($);this._values={},this._scope=$.scope,this.opts={...$,_n:$.lines?yF:z0.nil}}get(){return this._scope}name($){return new B8($,this._newName($))}value($,Z){var Q;if(Z.ref===void 0)throw Error("CodeGen: ref must be passed in value");let Y=this.toName($),{prefix:W}=Y,G=(Q=Z.key)!==null&&Q!==void 0?Q:Z.ref,X=this._values[W];if(X){let K=X.get(G);if(K)return K}else X=this._values[W]=new Map;X.set(G,Y);let J=this._scope[W]||(this._scope[W]=[]),B=J.length;return J[B]=Z.ref,Y.setValue(Z,{property:W,itemIndex:B}),Y}getValue($,Z){let Q=this._values[$];if(!Q)return;return Q.get(Z)}scopeRefs($,Z=this._values){return this._reduceValues(Z,(Q)=>{if(Q.scopePath===void 0)throw Error(`CodeGen: name "${Q}" has no value`);return z0._`${$}${Q.scopePath}`})}scopeCode($=this._values,Z,Q){return this._reduceValues($,(Y)=>{if(Y.value===void 0)throw Error(`CodeGen: name "${Y}" has no value`);return Y.value.code},Z,Q)}_reduceValues($,Z,Q={},Y){let W=z0.nil;for(let G in $){let X=$[G];if(!X)continue;let J=Q[G]=Q[G]||new Map;X.forEach((B)=>{if(J.has(B))return;J.set(B,S5.Started);let K=Z(B);if(K){let V=this.opts.es5?tY.varKinds.var:tY.varKinds.const;W=z0._`${W}${V} ${B} = ${K};${this.opts._n}`}else if(K=Y===null||Y===void 0?void 0:Y(B))W=z0._`${W}${K}${this.opts._n}`;else throw new aY(B);J.set(B,S5.Completed)})}return W}}tY.ValueScope=rY});var b=O((F0)=>{Object.defineProperty(F0,"__esModule",{value:!0});F0.or=F0.and=F0.not=F0.CodeGen=F0.operators=F0.varKinds=F0.ValueScopeName=F0.ValueScope=F0.Scope=F0.Name=F0.regexpCode=F0.stringify=F0.getProperty=F0.nil=F0.strConcat=F0.str=F0._=void 0;var x=XZ(),S0=H8(),U1=XZ();Object.defineProperty(F0,"_",{enumerable:!0,get:function(){return U1._}});Object.defineProperty(F0,"str",{enumerable:!0,get:function(){return U1.str}});Object.defineProperty(F0,"strConcat",{enumerable:!0,get:function(){return U1.strConcat}});Object.defineProperty(F0,"nil",{enumerable:!0,get:function(){return U1.nil}});Object.defineProperty(F0,"getProperty",{enumerable:!0,get:function(){return U1.getProperty}});Object.defineProperty(F0,"stringify",{enumerable:!0,get:function(){return U1.stringify}});Object.defineProperty(F0,"regexpCode",{enumerable:!0,get:function(){return U1.regexpCode}});Object.defineProperty(F0,"Name",{enumerable:!0,get:function(){return U1.Name}});var k5=H8();Object.defineProperty(F0,"Scope",{enumerable:!0,get:function(){return k5.Scope}});Object.defineProperty(F0,"ValueScope",{enumerable:!0,get:function(){return k5.ValueScope}});Object.defineProperty(F0,"ValueScopeName",{enumerable:!0,get:function(){return k5.ValueScopeName}});Object.defineProperty(F0,"varKinds",{enumerable:!0,get:function(){return k5.varKinds}});F0.operators={GT:new x._Code(">"),GTE:new x._Code(">="),LT:new x._Code("<"),LTE:new x._Code("<="),EQ:new x._Code("==="),NEQ:new x._Code("!=="),NOT:new x._Code("!"),OR:new x._Code("||"),AND:new x._Code("&&"),ADD:new x._Code("+")};class q1{optimizeNodes(){return this}optimizeNames($,Z){return this}}class sY extends q1{constructor($,Z,Q){super();this.varKind=$,this.name=Z,this.rhs=Q}render({es5:$,_n:Z}){let Q=$?S0.varKinds.var:this.varKind,Y=this.rhs===void 0?"":` = ${this.rhs}`;return`${Q} ${this.name}${Y};`+Z}optimizeNames($,Z){if(!$[this.name.str])return;if(this.rhs)this.rhs=H$(this.rhs,$,Z);return this}get names(){return this.rhs instanceof x._CodeOrName?this.rhs.names:{}}}class F8 extends q1{constructor($,Z,Q){super();this.lhs=$,this.rhs=Z,this.sideEffects=Q}render({_n:$}){return`${this.lhs} = ${this.rhs};`+$}optimizeNames($,Z){if(this.lhs instanceof x.Name&&!$[this.lhs.str]&&!this.sideEffects)return;return this.rhs=H$(this.rhs,$,Z),this}get names(){let $=this.lhs instanceof x.Name?{}:{...this.lhs.names};return x5($,this.rhs)}}class eY extends F8{constructor($,Z,Q,Y){super($,Q,Y);this.op=Z}render({_n:$}){return`${this.lhs} ${this.op}= ${this.rhs};`+$}}class $7 extends q1{constructor($){super();this.label=$,this.names={}}render({_n:$}){return`${this.label}:`+$}}class Z7 extends q1{constructor($){super();this.label=$,this.names={}}render({_n:$}){return`break${this.label?` ${this.label}`:""};`+$}}class Q7 extends q1{constructor($){super();this.error=$}render({_n:$}){return`throw ${this.error};`+$}get names(){return this.error.names}}class Y7 extends q1{constructor($){super();this.code=$}render({_n:$}){return`${this.code};`+$}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames($,Z){return this.code=H$(this.code,$,Z),this}get names(){return this.code instanceof x._CodeOrName?this.code.names:{}}}class f5 extends q1{constructor($=[]){super();this.nodes=$}render($){return this.nodes.reduce((Z,Q)=>Z+Q.render($),"")}optimizeNodes(){let{nodes:$}=this,Z=$.length;while(Z--){let Q=$[Z].optimizeNodes();if(Array.isArray(Q))$.splice(Z,1,...Q);else if(Q)$[Z]=Q;else $.splice(Z,1)}return $.length>0?this:void 0}optimizeNames($,Z){let{nodes:Q}=this,Y=Q.length;while(Y--){let W=Q[Y];if(W.optimizeNames($,Z))continue;kF($,W.names),Q.splice(Y,1)}return Q.length>0?this:void 0}get names(){return this.nodes.reduce(($,Z)=>f1($,Z.names),{})}}class A1 extends f5{render($){return"{"+$._n+super.render($)+"}"+$._n}}class W7 extends f5{}class JZ extends A1{}JZ.kind="else";class o0 extends A1{constructor($,Z){super(Z);this.condition=$}render($){let Z=`if(${this.condition})`+super.render($);if(this.else)Z+="else "+this.else.render($);return Z}optimizeNodes(){super.optimizeNodes();let $=this.condition;if($===!0)return this.nodes;let Z=this.else;if(Z){let Q=Z.optimizeNodes();Z=this.else=Array.isArray(Q)?new JZ(Q):Q}if(Z){if($===!1)return Z instanceof o0?Z:Z.nodes;if(this.nodes.length)return this;return new o0(B7($),Z instanceof o0?[Z]:Z.nodes)}if($===!1||!this.nodes.length)return;return this}optimizeNames($,Z){var Q;if(this.else=(Q=this.else)===null||Q===void 0?void 0:Q.optimizeNames($,Z),!(super.optimizeNames($,Z)||this.else))return;return this.condition=H$(this.condition,$,Z),this}get names(){let $=super.names;if(x5($,this.condition),this.else)f1($,this.else.names);return $}}o0.kind="if";class B$ extends A1{}B$.kind="for";class G7 extends B${constructor($){super();this.iteration=$}render($){return`for(${this.iteration})`+super.render($)}optimizeNames($,Z){if(!super.optimizeNames($,Z))return;return this.iteration=H$(this.iteration,$,Z),this}get names(){return f1(super.names,this.iteration.names)}}class X7 extends B${constructor($,Z,Q,Y){super();this.varKind=$,this.name=Z,this.from=Q,this.to=Y}render($){let Z=$.es5?S0.varKinds.var:this.varKind,{name:Q,from:Y,to:W}=this;return`for(${Z} ${Q}=${Y}; ${Q}<${W}; ${Q}++)`+super.render($)}get names(){let $=x5(super.names,this.from);return x5($,this.to)}}class V8 extends B${constructor($,Z,Q,Y){super();this.loop=$,this.varKind=Z,this.name=Q,this.iterable=Y}render($){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render($)}optimizeNames($,Z){if(!super.optimizeNames($,Z))return;return this.iterable=H$(this.iterable,$,Z),this}get names(){return f1(super.names,this.iterable.names)}}class C5 extends A1{constructor($,Z,Q){super();this.name=$,this.args=Z,this.async=Q}render($){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render($)}}C5.kind="func";class y5 extends f5{render($){return"return "+super.render($)}}y5.kind="return";class J7 extends A1{render($){let Z="try"+super.render($);if(this.catch)Z+=this.catch.render($);if(this.finally)Z+=this.finally.render($);return Z}optimizeNodes(){var $,Z;return super.optimizeNodes(),($=this.catch)===null||$===void 0||$.optimizeNodes(),(Z=this.finally)===null||Z===void 0||Z.optimizeNodes(),this}optimizeNames($,Z){var Q,Y;return super.optimizeNames($,Z),(Q=this.catch)===null||Q===void 0||Q.optimizeNames($,Z),(Y=this.finally)===null||Y===void 0||Y.optimizeNames($,Z),this}get names(){let $=super.names;if(this.catch)f1($,this.catch.names);if(this.finally)f1($,this.finally.names);return $}}class b5 extends A1{constructor($){super();this.error=$}render($){return`catch(${this.error})`+super.render($)}}b5.kind="catch";class _5 extends A1{render($){return"finally"+super.render($)}}_5.kind="finally";class K7{constructor($,Z={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...Z,_n:Z.lines?`
3
- `:""},this._extScope=$,this._scope=new S0.Scope({parent:$}),this._nodes=[new W7]}toString(){return this._root.render(this.opts)}name($){return this._scope.name($)}scopeName($){return this._extScope.name($)}scopeValue($,Z){let Q=this._extScope.value($,Z);return(this._values[Q.prefix]||(this._values[Q.prefix]=new Set)).add(Q),Q}getScopeValue($,Z){return this._extScope.getValue($,Z)}scopeRefs($){return this._extScope.scopeRefs($,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def($,Z,Q,Y){let W=this._scope.toName(Z);if(Q!==void 0&&Y)this._constants[W.str]=Q;return this._leafNode(new sY($,W,Q)),W}const($,Z,Q){return this._def(S0.varKinds.const,$,Z,Q)}let($,Z,Q){return this._def(S0.varKinds.let,$,Z,Q)}var($,Z,Q){return this._def(S0.varKinds.var,$,Z,Q)}assign($,Z,Q){return this._leafNode(new F8($,Z,Q))}add($,Z){return this._leafNode(new eY($,F0.operators.ADD,Z))}code($){if(typeof $=="function")$();else if($!==x.nil)this._leafNode(new Y7($));return this}object(...$){let Z=["{"];for(let[Q,Y]of $){if(Z.length>1)Z.push(",");if(Z.push(Q),Q!==Y||this.opts.es5)Z.push(":"),(0,x.addCodeArg)(Z,Y)}return Z.push("}"),new x._Code(Z)}if($,Z,Q){if(this._blockNode(new o0($)),Z&&Q)this.code(Z).else().code(Q).endIf();else if(Z)this.code(Z).endIf();else if(Q)throw Error('CodeGen: "else" body without "then" body');return this}elseIf($){return this._elseNode(new o0($))}else(){return this._elseNode(new JZ)}endIf(){return this._endBlockNode(o0,JZ)}_for($,Z){if(this._blockNode($),Z)this.code(Z).endFor();return this}for($,Z){return this._for(new G7($),Z)}forRange($,Z,Q,Y,W=this.opts.es5?S0.varKinds.var:S0.varKinds.let){let G=this._scope.toName($);return this._for(new X7(W,G,Z,Q),()=>Y(G))}forOf($,Z,Q,Y=S0.varKinds.const){let W=this._scope.toName($);if(this.opts.es5){let G=Z instanceof x.Name?Z:this.var("_arr",Z);return this.forRange("_i",0,x._`${G}.length`,(X)=>{this.var(W,x._`${G}[${X}]`),Q(W)})}return this._for(new V8("of",Y,W,Z),()=>Q(W))}forIn($,Z,Q,Y=this.opts.es5?S0.varKinds.var:S0.varKinds.const){if(this.opts.ownProperties)return this.forOf($,x._`Object.keys(${Z})`,Q);let W=this._scope.toName($);return this._for(new V8("in",Y,W,Z),()=>Q(W))}endFor(){return this._endBlockNode(B$)}label($){return this._leafNode(new $7($))}break($){return this._leafNode(new Z7($))}return($){let Z=new y5;if(this._blockNode(Z),this.code($),Z.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(y5)}try($,Z,Q){if(!Z&&!Q)throw Error('CodeGen: "try" without "catch" and "finally"');let Y=new J7;if(this._blockNode(Y),this.code($),Z){let W=this.name("e");this._currNode=Y.catch=new b5(W),Z(W)}if(Q)this._currNode=Y.finally=new _5,this.code(Q);return this._endBlockNode(b5,_5)}throw($){return this._leafNode(new Q7($))}block($,Z){if(this._blockStarts.push(this._nodes.length),$)this.code($).endBlock(Z);return this}endBlock($){let Z=this._blockStarts.pop();if(Z===void 0)throw Error("CodeGen: not in self-balancing block");let Q=this._nodes.length-Z;if(Q<0||$!==void 0&&Q!==$)throw Error(`CodeGen: wrong number of nodes: ${Q} vs ${$} expected`);return this._nodes.length=Z,this}func($,Z=x.nil,Q,Y){if(this._blockNode(new C5($,Z,Q)),Y)this.code(Y).endFunc();return this}endFunc(){return this._endBlockNode(C5)}optimize($=1){while($-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode($){return this._currNode.nodes.push($),this}_blockNode($){this._currNode.nodes.push($),this._nodes.push($)}_endBlockNode($,Z){let Q=this._currNode;if(Q instanceof $||Z&&Q instanceof Z)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${Z?`${$.kind}/${Z.kind}`:$.kind}"`)}_elseNode($){let Z=this._currNode;if(!(Z instanceof o0))throw Error('CodeGen: "else" without "if"');return this._currNode=Z.else=$,this}get _root(){return this._nodes[0]}get _currNode(){let $=this._nodes;return $[$.length-1]}set _currNode($){let Z=this._nodes;Z[Z.length-1]=$}}F0.CodeGen=K7;function f1($,Z){for(let Q in Z)$[Q]=($[Q]||0)+(Z[Q]||0);return $}function x5($,Z){return Z instanceof x._CodeOrName?f1($,Z.names):$}function H$($,Z,Q){if($ instanceof x.Name)return Y($);if(!W($))return $;return new x._Code($._items.reduce((G,X)=>{if(X instanceof x.Name)X=Y(X);if(X instanceof x._Code)G.push(...X._items);else G.push(X);return G},[]));function Y(G){let X=Q[G.str];if(X===void 0||Z[G.str]!==1)return G;return delete Z[G.str],X}function W(G){return G instanceof x._Code&&G._items.some((X)=>X instanceof x.Name&&Z[X.str]===1&&Q[X.str]!==void 0)}}function kF($,Z){for(let Q in Z)$[Q]=($[Q]||0)-(Z[Q]||0)}function B7($){return typeof $=="boolean"||typeof $=="number"||$===null?!$:x._`!${z8($)}`}F0.not=B7;var fF=H7(F0.operators.AND);function vF(...$){return $.reduce(fF)}F0.and=vF;var gF=H7(F0.operators.OR);function hF(...$){return $.reduce(gF)}F0.or=hF;function H7($){return(Z,Q)=>Z===x.nil?Q:Q===x.nil?Z:x._`${z8(Z)} ${$} ${z8(Q)}`}function z8($){return $ instanceof x.Name?$:x._`(${$})`}});var k=O((N7)=>{Object.defineProperty(N7,"__esModule",{value:!0});N7.checkStrictMode=N7.getErrorPath=N7.Type=N7.useFunc=N7.setEvaluated=N7.evaluatedPropsToName=N7.mergeEvaluated=N7.eachItem=N7.unescapeJsonPointer=N7.escapeJsonPointer=N7.escapeFragment=N7.unescapeFragment=N7.schemaRefOrVal=N7.schemaHasRulesButRef=N7.schemaHasRules=N7.checkUnknownRules=N7.alwaysValidSchema=N7.toHash=void 0;var m=b(),pF=XZ();function cF($){let Z={};for(let Q of $)Z[Q]=!0;return Z}N7.toHash=cF;function dF($,Z){if(typeof Z=="boolean")return Z;if(Object.keys(Z).length===0)return!0;return L7($,Z),!D7(Z,$.self.RULES.all)}N7.alwaysValidSchema=dF;function L7($,Z=$.schema){let{opts:Q,self:Y}=$;if(!Q.strictSchema)return;if(typeof Z==="boolean")return;let W=Y.RULES.keywords;for(let G in Z)if(!W[G])A7($,`unknown keyword: "${G}"`)}N7.checkUnknownRules=L7;function D7($,Z){if(typeof $=="boolean")return!$;for(let Q in $)if(Z[Q])return!0;return!1}N7.schemaHasRules=D7;function iF($,Z){if(typeof $=="boolean")return!$;for(let Q in $)if(Q!=="$ref"&&Z.all[Q])return!0;return!1}N7.schemaHasRulesButRef=iF;function nF({topSchemaRef:$,schemaPath:Z},Q,Y,W){if(!W){if(typeof Q=="number"||typeof Q=="boolean")return Q;if(typeof Q=="string")return m._`${Q}`}return m._`${$}${Z}${(0,m.getProperty)(Y)}`}N7.schemaRefOrVal=nF;function aF($){return U7(decodeURIComponent($))}N7.unescapeFragment=aF;function rF($){return encodeURIComponent(D8($))}N7.escapeFragment=rF;function D8($){if(typeof $=="number")return`${$}`;return $.replace(/~/g,"~0").replace(/\//g,"~1")}N7.escapeJsonPointer=D8;function U7($){return $.replace(/~1/g,"/").replace(/~0/g,"~")}N7.unescapeJsonPointer=U7;function tF($,Z){if(Array.isArray($))for(let Q of $)Z(Q);else Z($)}N7.eachItem=tF;function z7({mergeNames:$,mergeToName:Z,mergeValues:Q,resultToName:Y}){return(W,G,X,J)=>{let B=X===void 0?G:X instanceof m.Name?(G instanceof m.Name?$(W,G,X):Z(W,G,X),X):G instanceof m.Name?(Z(W,X,G),G):Q(G,X);return J===m.Name&&!(B instanceof m.Name)?Y(W,B):B}}N7.mergeEvaluated={props:z7({mergeNames:($,Z,Q)=>$.if(m._`${Q} !== true && ${Z} !== undefined`,()=>{$.if(m._`${Z} === true`,()=>$.assign(Q,!0),()=>$.assign(Q,m._`${Q} || {}`).code(m._`Object.assign(${Q}, ${Z})`))}),mergeToName:($,Z,Q)=>$.if(m._`${Q} !== true`,()=>{if(Z===!0)$.assign(Q,!0);else $.assign(Q,m._`${Q} || {}`),U8($,Q,Z)}),mergeValues:($,Z)=>$===!0?!0:{...$,...Z},resultToName:q7}),items:z7({mergeNames:($,Z,Q)=>$.if(m._`${Q} !== true && ${Z} !== undefined`,()=>$.assign(Q,m._`${Z} === true ? true : ${Q} > ${Z} ? ${Q} : ${Z}`)),mergeToName:($,Z,Q)=>$.if(m._`${Q} !== true`,()=>$.assign(Q,Z===!0?!0:m._`${Q} > ${Z} ? ${Q} : ${Z}`)),mergeValues:($,Z)=>$===!0?!0:Math.max($,Z),resultToName:($,Z)=>$.var("items",Z)})};function q7($,Z){if(Z===!0)return $.var("props",!0);let Q=$.var("props",m._`{}`);if(Z!==void 0)U8($,Q,Z);return Q}N7.evaluatedPropsToName=q7;function U8($,Z,Q){Object.keys(Q).forEach((Y)=>$.assign(m._`${Z}${(0,m.getProperty)(Y)}`,!0))}N7.setEvaluated=U8;var F7={};function oF($,Z){return $.scopeValue("func",{ref:Z,code:F7[Z.code]||(F7[Z.code]=new pF._Code(Z.code))})}N7.useFunc=oF;var L8;(function($){$[$.Num=0]="Num",$[$.Str=1]="Str"})(L8||(N7.Type=L8={}));function sF($,Z,Q){if($ instanceof m.Name){let Y=Z===L8.Num;return Q?Y?m._`"[" + ${$} + "]"`:m._`"['" + ${$} + "']"`:Y?m._`"/" + ${$}`:m._`"/" + ${$}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return Q?(0,m.getProperty)($).toString():"/"+D8($)}N7.getErrorPath=sF;function A7($,Z,Q=$.opts.strictSchema){if(!Q)return;if(Z=`strict mode: ${Z}`,Q===!0)throw Error(Z);$.self.logger.warn(Z)}N7.checkStrictMode=A7});var s0=O((O7)=>{Object.defineProperty(O7,"__esModule",{value:!0});var Y0=b(),UL={data:new Y0.Name("data"),valCxt:new Y0.Name("valCxt"),instancePath:new Y0.Name("instancePath"),parentData:new Y0.Name("parentData"),parentDataProperty:new Y0.Name("parentDataProperty"),rootData:new Y0.Name("rootData"),dynamicAnchors:new Y0.Name("dynamicAnchors"),vErrors:new Y0.Name("vErrors"),errors:new Y0.Name("errors"),this:new Y0.Name("this"),self:new Y0.Name("self"),scope:new Y0.Name("scope"),json:new Y0.Name("json"),jsonPos:new Y0.Name("jsonPos"),jsonLen:new Y0.Name("jsonLen"),jsonPart:new Y0.Name("jsonPart")};O7.default=UL});var KZ=O((T7)=>{Object.defineProperty(T7,"__esModule",{value:!0});T7.extendErrors=T7.resetErrorsCount=T7.reportExtraError=T7.reportError=T7.keyword$DataError=T7.keywordError=void 0;var f=b(),g5=k(),J0=s0();T7.keywordError={message:({keyword:$})=>f.str`must pass "${$}" keyword validation`};T7.keyword$DataError={message:({keyword:$,schemaType:Z})=>Z?f.str`"${$}" keyword must be ${Z} ($data)`:f.str`"${$}" keyword is invalid ($data)`};function AL($,Z=T7.keywordError,Q,Y){let{it:W}=$,{gen:G,compositeRule:X,allErrors:J}=W,B=w7($,Z,Q);if(Y!==null&&Y!==void 0?Y:X||J)j7(G,B);else P7(W,f._`[${B}]`)}T7.reportError=AL;function NL($,Z=T7.keywordError,Q){let{it:Y}=$,{gen:W,compositeRule:G,allErrors:X}=Y,J=w7($,Z,Q);if(j7(W,J),!(G||X))P7(Y,J0.default.vErrors)}T7.reportExtraError=NL;function ML($,Z){$.assign(J0.default.errors,Z),$.if(f._`${J0.default.vErrors} !== null`,()=>$.if(Z,()=>$.assign(f._`${J0.default.vErrors}.length`,Z),()=>$.assign(J0.default.vErrors,null)))}T7.resetErrorsCount=ML;function OL({gen:$,keyword:Z,schemaValue:Q,data:Y,errsCount:W,it:G}){if(W===void 0)throw Error("ajv implementation error");let X=$.name("err");$.forRange("i",W,J0.default.errors,(J)=>{if($.const(X,f._`${J0.default.vErrors}[${J}]`),$.if(f._`${X}.instancePath === undefined`,()=>$.assign(f._`${X}.instancePath`,(0,f.strConcat)(J0.default.instancePath,G.errorPath))),$.assign(f._`${X}.schemaPath`,f.str`${G.errSchemaPath}/${Z}`),G.opts.verbose)$.assign(f._`${X}.schema`,Q),$.assign(f._`${X}.data`,Y)})}T7.extendErrors=OL;function j7($,Z){let Q=$.const("err",Z);$.if(f._`${J0.default.vErrors} === null`,()=>$.assign(J0.default.vErrors,f._`[${Q}]`),f._`${J0.default.vErrors}.push(${Q})`),$.code(f._`${J0.default.errors}++`)}function P7($,Z){let{gen:Q,validateName:Y,schemaEnv:W}=$;if(W.$async)Q.throw(f._`new ${$.ValidationError}(${Z})`);else Q.assign(f._`${Y}.errors`,Z),Q.return(!1)}var v1={keyword:new f.Name("keyword"),schemaPath:new f.Name("schemaPath"),params:new f.Name("params"),propertyName:new f.Name("propertyName"),message:new f.Name("message"),schema:new f.Name("schema"),parentSchema:new f.Name("parentSchema")};function w7($,Z,Q){let{createErrors:Y}=$.it;if(Y===!1)return f._`{}`;return jL($,Z,Q)}function jL($,Z,Q={}){let{gen:Y,it:W}=$,G=[PL(W,Q),wL($,Q)];return TL($,Z,G),Y.object(...G)}function PL({errorPath:$},{instancePath:Z}){let Q=Z?f.str`${$}${(0,g5.getErrorPath)(Z,g5.Type.Str)}`:$;return[J0.default.instancePath,(0,f.strConcat)(J0.default.instancePath,Q)]}function wL({keyword:$,it:{errSchemaPath:Z}},{schemaPath:Q,parentSchema:Y}){let W=Y?Z:f.str`${Z}/${$}`;if(Q)W=f.str`${W}${(0,g5.getErrorPath)(Q,g5.Type.Str)}`;return[v1.schemaPath,W]}function TL($,{params:Z,message:Q},Y){let{keyword:W,data:G,schemaValue:X,it:J}=$,{opts:B,propertyName:K,topSchemaRef:V,schemaPath:z}=J;if(Y.push([v1.keyword,W],[v1.params,typeof Z=="function"?Z($):Z||f._`{}`]),B.messages)Y.push([v1.message,typeof Q=="function"?Q($):Q]);if(B.verbose)Y.push([v1.schema,X],[v1.parentSchema,f._`${V}${z}`],[J0.default.data,G]);if(K)Y.push([v1.propertyName,K])}});var C7=O((E7)=>{Object.defineProperty(E7,"__esModule",{value:!0});E7.boolOrEmptySchema=E7.topBoolOrEmptySchema=void 0;var CL=KZ(),yL=b(),bL=s0(),_L={message:"boolean schema is false"};function xL($){let{gen:Z,schema:Q,validateName:Y}=$;if(Q===!1)R7($,!1);else if(typeof Q=="object"&&Q.$async===!0)Z.return(bL.default.data);else Z.assign(yL._`${Y}.errors`,null),Z.return(!0)}E7.topBoolOrEmptySchema=xL;function kL($,Z){let{gen:Q,schema:Y}=$;if(Y===!1)Q.var(Z,!1),R7($);else Q.var(Z,!0)}E7.boolOrEmptySchema=kL;function R7($,Z){let{gen:Q,data:Y}=$,W={gen:Q,keyword:"false schema",data:Y,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:$};(0,CL.reportError)(W,_L,void 0,Z)}});var A8=O((y7)=>{Object.defineProperty(y7,"__esModule",{value:!0});y7.getRules=y7.isJSONType=void 0;var vL=["string","number","integer","boolean","null","object","array"],gL=new Set(vL);function hL($){return typeof $=="string"&&gL.has($)}y7.isJSONType=hL;function uL(){let $={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...$,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},$.number,$.string,$.array,$.object],post:{rules:[]},all:{},keywords:{}}}y7.getRules=uL});var N8=O((k7)=>{Object.defineProperty(k7,"__esModule",{value:!0});k7.shouldUseRule=k7.shouldUseGroup=k7.schemaHasRulesForType=void 0;function lL({schema:$,self:Z},Q){let Y=Z.RULES.types[Q];return Y&&Y!==!0&&_7($,Y)}k7.schemaHasRulesForType=lL;function _7($,Z){return Z.rules.some((Q)=>x7($,Q))}k7.shouldUseGroup=_7;function x7($,Z){var Q;return $[Z.keyword]!==void 0||((Q=Z.definition.implements)===null||Q===void 0?void 0:Q.some((Y)=>$[Y]!==void 0))}k7.shouldUseRule=x7});var BZ=O((u7)=>{Object.defineProperty(u7,"__esModule",{value:!0});u7.reportTypeError=u7.checkDataTypes=u7.checkDataType=u7.coerceAndCheckDataType=u7.getJSONTypes=u7.getSchemaTypes=u7.DataType=void 0;var dL=A8(),iL=N8(),nL=KZ(),C=b(),v7=k(),V$;(function($){$[$.Correct=0]="Correct",$[$.Wrong=1]="Wrong"})(V$||(u7.DataType=V$={}));function aL($){let Z=g7($.type);if(Z.includes("null")){if($.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!Z.length&&$.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if($.nullable===!0)Z.push("null")}return Z}u7.getSchemaTypes=aL;function g7($){let Z=Array.isArray($)?$:$?[$]:[];if(Z.every(dL.isJSONType))return Z;throw Error("type must be JSONType or JSONType[]: "+Z.join(","))}u7.getJSONTypes=g7;function rL($,Z){let{gen:Q,data:Y,opts:W}=$,G=tL(Z,W.coerceTypes),X=Z.length>0&&!(G.length===0&&Z.length===1&&(0,iL.schemaHasRulesForType)($,Z[0]));if(X){let J=O8(Z,Y,W.strictNumbers,V$.Wrong);Q.if(J,()=>{if(G.length)oL($,Z,G);else j8($)})}return X}u7.coerceAndCheckDataType=rL;var h7=new Set(["string","number","integer","boolean","null"]);function tL($,Z){return Z?$.filter((Q)=>h7.has(Q)||Z==="array"&&Q==="array"):[]}function oL($,Z,Q){let{gen:Y,data:W,opts:G}=$,X=Y.let("dataType",C._`typeof ${W}`),J=Y.let("coerced",C._`undefined`);if(G.coerceTypes==="array")Y.if(C._`${X} == 'object' && Array.isArray(${W}) && ${W}.length == 1`,()=>Y.assign(W,C._`${W}[0]`).assign(X,C._`typeof ${W}`).if(O8(Z,W,G.strictNumbers),()=>Y.assign(J,W)));Y.if(C._`${J} !== undefined`);for(let K of Q)if(h7.has(K)||K==="array"&&G.coerceTypes==="array")B(K);Y.else(),j8($),Y.endIf(),Y.if(C._`${J} !== undefined`,()=>{Y.assign(W,J),sL($,J)});function B(K){switch(K){case"string":Y.elseIf(C._`${X} == "number" || ${X} == "boolean"`).assign(J,C._`"" + ${W}`).elseIf(C._`${W} === null`).assign(J,C._`""`);return;case"number":Y.elseIf(C._`${X} == "boolean" || ${W} === null
2
+ var XK=Object.create;var{getPrototypeOf:JK,defineProperty:d9,getOwnPropertyNames:KK}=Object;var BK=Object.prototype.hasOwnProperty;function HK($){return this[$]}var VK,zK,T6=($,Z,Q)=>{var Y=$!=null&&typeof $==="object";if(Y){var W=Z?VK??=new WeakMap:zK??=new WeakMap,G=W.get($);if(G)return G}Q=$!=null?XK(JK($)):{};let X=Z||!$||!$.__esModule?d9(Q,"default",{value:$,enumerable:!0}):Q;for(let J of KK($))if(!BK.call(X,J))d9(X,J,{get:HK.bind($,J),enumerable:!0});if(Y)W.set($,X);return X};var O=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var W1=import.meta.require;var KZ=O((tY)=>{Object.defineProperty(tY,"__esModule",{value:!0});tY.regexpCode=tY.getEsmExportName=tY.getProperty=tY.safeStringify=tY.stringify=tY.strConcat=tY.addCodeArg=tY.str=tY._=tY.nil=tY._Code=tY.Name=tY.IDENTIFIER=tY._CodeOrName=void 0;class C5{}tY._CodeOrName=C5;tY.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class B$ extends C5{constructor($){super();if(!tY.IDENTIFIER.test($))throw Error("CodeGen: name must be a valid identifier");this.str=$}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}tY.Name=B$;class R0 extends C5{constructor($){super();this._items=typeof $==="string"?[$]:$}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let $=this._items[0];return $===""||$==='""'}get str(){var $;return($=this._str)!==null&&$!==void 0?$:this._str=this._items.reduce((Z,Q)=>`${Z}${Q}`,"")}get names(){var $;return($=this._names)!==null&&$!==void 0?$:this._names=this._items.reduce((Z,Q)=>{if(Q instanceof B$)Z[Q.str]=(Z[Q.str]||0)+1;return Z},{})}}tY._Code=R0;tY.nil=new R0("");function aY($,...Z){let Q=[$[0]],Y=0;while(Y<Z.length)K8(Q,Z[Y]),Q.push($[++Y]);return new R0(Q)}tY._=aY;var J8=new R0("+");function rY($,...Z){let Q=[JZ($[0])],Y=0;while(Y<Z.length)Q.push(J8),K8(Q,Z[Y]),Q.push(J8,JZ($[++Y]));return jF(Q),new R0(Q)}tY.str=rY;function K8($,Z){if(Z instanceof R0)$.push(...Z._items);else if(Z instanceof B$)$.push(Z);else $.push(TF(Z))}tY.addCodeArg=K8;function jF($){let Z=1;while(Z<$.length-1){if($[Z]===J8){let Q=PF($[Z-1],$[Z+1]);if(Q!==void 0){$.splice(Z-1,3,Q);continue}$[Z++]="+"}Z++}}function PF($,Z){if(Z==='""')return $;if($==='""')return Z;if(typeof $=="string"){if(Z instanceof B$||$[$.length-1]!=='"')return;if(typeof Z!="string")return`${$.slice(0,-1)}${Z}"`;if(Z[0]==='"')return $.slice(0,-1)+Z.slice(1);return}if(typeof Z=="string"&&Z[0]==='"'&&!($ instanceof B$))return`"${$}${Z.slice(1)}`;return}function wF($,Z){return Z.emptyStr()?$:$.emptyStr()?Z:rY`${$}${Z}`}tY.strConcat=wF;function TF($){return typeof $=="number"||typeof $=="boolean"||$===null?$:JZ(Array.isArray($)?$.join(","):$)}function EF($){return new R0(JZ($))}tY.stringify=EF;function JZ($){return JSON.stringify($).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}tY.safeStringify=JZ;function IF($){return typeof $=="string"&&tY.IDENTIFIER.test($)?new R0(`.${$}`):aY`[${$}]`}tY.getProperty=IF;function RF($){if(typeof $=="string"&&tY.IDENTIFIER.test($))return new R0(`${$}`);throw Error(`CodeGen: invalid export name: ${$}, use explicit $id name mapping`)}tY.getEsmExportName=RF;function SF($){return new R0($.toString())}tY.regexpCode=SF});var z8=O(($7)=>{Object.defineProperty($7,"__esModule",{value:!0});$7.ValueScope=$7.ValueScopeName=$7.Scope=$7.varKinds=$7.UsedValueState=void 0;var z0=KZ();class sY extends Error{constructor($){super(`CodeGen: "code" for ${$} not defined`);this.value=$.value}}var b5;(function($){$[$.Started=0]="Started",$[$.Completed=1]="Completed"})(b5||($7.UsedValueState=b5={}));$7.varKinds={const:new z0.Name("const"),let:new z0.Name("let"),var:new z0.Name("var")};class H8{constructor({prefixes:$,parent:Z}={}){this._names={},this._prefixes=$,this._parent=Z}toName($){return $ instanceof z0.Name?$:this.name($)}name($){return new z0.Name(this._newName($))}_newName($){let Z=this._names[$]||this._nameGroup($);return`${$}${Z.index++}`}_nameGroup($){var Z,Q;if(((Q=(Z=this._parent)===null||Z===void 0?void 0:Z._prefixes)===null||Q===void 0?void 0:Q.has($))||this._prefixes&&!this._prefixes.has($))throw Error(`CodeGen: prefix "${$}" is not allowed in this scope`);return this._names[$]={prefix:$,index:0}}}$7.Scope=H8;class V8 extends z0.Name{constructor($,Z){super(Z);this.prefix=$}setValue($,{property:Z,itemIndex:Q}){this.value=$,this.scopePath=z0._`.${new z0.Name(Z)}[${Q}]`}}$7.ValueScopeName=V8;var pF=z0._`\n`;class eY extends H8{constructor($){super($);this._values={},this._scope=$.scope,this.opts={...$,_n:$.lines?pF:z0.nil}}get(){return this._scope}name($){return new V8($,this._newName($))}value($,Z){var Q;if(Z.ref===void 0)throw Error("CodeGen: ref must be passed in value");let Y=this.toName($),{prefix:W}=Y,G=(Q=Z.key)!==null&&Q!==void 0?Q:Z.ref,X=this._values[W];if(X){let K=X.get(G);if(K)return K}else X=this._values[W]=new Map;X.set(G,Y);let J=this._scope[W]||(this._scope[W]=[]),B=J.length;return J[B]=Z.ref,Y.setValue(Z,{property:W,itemIndex:B}),Y}getValue($,Z){let Q=this._values[$];if(!Q)return;return Q.get(Z)}scopeRefs($,Z=this._values){return this._reduceValues(Z,(Q)=>{if(Q.scopePath===void 0)throw Error(`CodeGen: name "${Q}" has no value`);return z0._`${$}${Q.scopePath}`})}scopeCode($=this._values,Z,Q){return this._reduceValues($,(Y)=>{if(Y.value===void 0)throw Error(`CodeGen: name "${Y}" has no value`);return Y.value.code},Z,Q)}_reduceValues($,Z,Q={},Y){let W=z0.nil;for(let G in $){let X=$[G];if(!X)continue;let J=Q[G]=Q[G]||new Map;X.forEach((B)=>{if(J.has(B))return;J.set(B,b5.Started);let K=Z(B);if(K){let V=this.opts.es5?$7.varKinds.var:$7.varKinds.const;W=z0._`${W}${V} ${B} = ${K};${this.opts._n}`}else if(K=Y===null||Y===void 0?void 0:Y(B))W=z0._`${W}${K}${this.opts._n}`;else throw new sY(B);J.set(B,b5.Completed)})}return W}}$7.ValueScope=eY});var b=O((F0)=>{Object.defineProperty(F0,"__esModule",{value:!0});F0.or=F0.and=F0.not=F0.CodeGen=F0.operators=F0.varKinds=F0.ValueScopeName=F0.ValueScope=F0.Scope=F0.Name=F0.regexpCode=F0.stringify=F0.getProperty=F0.nil=F0.strConcat=F0.str=F0._=void 0;var x=KZ(),S0=z8(),U1=KZ();Object.defineProperty(F0,"_",{enumerable:!0,get:function(){return U1._}});Object.defineProperty(F0,"str",{enumerable:!0,get:function(){return U1.str}});Object.defineProperty(F0,"strConcat",{enumerable:!0,get:function(){return U1.strConcat}});Object.defineProperty(F0,"nil",{enumerable:!0,get:function(){return U1.nil}});Object.defineProperty(F0,"getProperty",{enumerable:!0,get:function(){return U1.getProperty}});Object.defineProperty(F0,"stringify",{enumerable:!0,get:function(){return U1.stringify}});Object.defineProperty(F0,"regexpCode",{enumerable:!0,get:function(){return U1.regexpCode}});Object.defineProperty(F0,"Name",{enumerable:!0,get:function(){return U1.Name}});var h5=z8();Object.defineProperty(F0,"Scope",{enumerable:!0,get:function(){return h5.Scope}});Object.defineProperty(F0,"ValueScope",{enumerable:!0,get:function(){return h5.ValueScope}});Object.defineProperty(F0,"ValueScopeName",{enumerable:!0,get:function(){return h5.ValueScopeName}});Object.defineProperty(F0,"varKinds",{enumerable:!0,get:function(){return h5.varKinds}});F0.operators={GT:new x._Code(">"),GTE:new x._Code(">="),LT:new x._Code("<"),LTE:new x._Code("<="),EQ:new x._Code("==="),NEQ:new x._Code("!=="),NOT:new x._Code("!"),OR:new x._Code("||"),AND:new x._Code("&&"),ADD:new x._Code("+")};class A1{optimizeNodes(){return this}optimizeNames($,Z){return this}}class Q7 extends A1{constructor($,Z,Q){super();this.varKind=$,this.name=Z,this.rhs=Q}render({es5:$,_n:Z}){let Q=$?S0.varKinds.var:this.varKind,Y=this.rhs===void 0?"":` = ${this.rhs}`;return`${Q} ${this.name}${Y};`+Z}optimizeNames($,Z){if(!$[this.name.str])return;if(this.rhs)this.rhs=V$(this.rhs,$,Z);return this}get names(){return this.rhs instanceof x._CodeOrName?this.rhs.names:{}}}class D8 extends A1{constructor($,Z,Q){super();this.lhs=$,this.rhs=Z,this.sideEffects=Q}render({_n:$}){return`${this.lhs} = ${this.rhs};`+$}optimizeNames($,Z){if(this.lhs instanceof x.Name&&!$[this.lhs.str]&&!this.sideEffects)return;return this.rhs=V$(this.rhs,$,Z),this}get names(){let $=this.lhs instanceof x.Name?{}:{...this.lhs.names};return v5($,this.rhs)}}class Y7 extends D8{constructor($,Z,Q,Y){super($,Q,Y);this.op=Z}render({_n:$}){return`${this.lhs} ${this.op}= ${this.rhs};`+$}}class W7 extends A1{constructor($){super();this.label=$,this.names={}}render({_n:$}){return`${this.label}:`+$}}class G7 extends A1{constructor($){super();this.label=$,this.names={}}render({_n:$}){return`break${this.label?` ${this.label}`:""};`+$}}class X7 extends A1{constructor($){super();this.error=$}render({_n:$}){return`throw ${this.error};`+$}get names(){return this.error.names}}class J7 extends A1{constructor($){super();this.code=$}render({_n:$}){return`${this.code};`+$}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames($,Z){return this.code=V$(this.code,$,Z),this}get names(){return this.code instanceof x._CodeOrName?this.code.names:{}}}class g5 extends A1{constructor($=[]){super();this.nodes=$}render($){return this.nodes.reduce((Z,Q)=>Z+Q.render($),"")}optimizeNodes(){let{nodes:$}=this,Z=$.length;while(Z--){let Q=$[Z].optimizeNodes();if(Array.isArray(Q))$.splice(Z,1,...Q);else if(Q)$[Z]=Q;else $.splice(Z,1)}return $.length>0?this:void 0}optimizeNames($,Z){let{nodes:Q}=this,Y=Q.length;while(Y--){let W=Q[Y];if(W.optimizeNames($,Z))continue;iF($,W.names),Q.splice(Y,1)}return Q.length>0?this:void 0}get names(){return this.nodes.reduce(($,Z)=>v1($,Z.names),{})}}class N1 extends g5{render($){return"{"+$._n+super.render($)+"}"+$._n}}class K7 extends g5{}class BZ extends N1{}BZ.kind="else";class s0 extends N1{constructor($,Z){super(Z);this.condition=$}render($){let Z=`if(${this.condition})`+super.render($);if(this.else)Z+="else "+this.else.render($);return Z}optimizeNodes(){super.optimizeNodes();let $=this.condition;if($===!0)return this.nodes;let Z=this.else;if(Z){let Q=Z.optimizeNodes();Z=this.else=Array.isArray(Q)?new BZ(Q):Q}if(Z){if($===!1)return Z instanceof s0?Z:Z.nodes;if(this.nodes.length)return this;return new s0(F7($),Z instanceof s0?[Z]:Z.nodes)}if($===!1||!this.nodes.length)return;return this}optimizeNames($,Z){var Q;if(this.else=(Q=this.else)===null||Q===void 0?void 0:Q.optimizeNames($,Z),!(super.optimizeNames($,Z)||this.else))return;return this.condition=V$(this.condition,$,Z),this}get names(){let $=super.names;if(v5($,this.condition),this.else)v1($,this.else.names);return $}}s0.kind="if";class H$ extends N1{}H$.kind="for";class B7 extends H${constructor($){super();this.iteration=$}render($){return`for(${this.iteration})`+super.render($)}optimizeNames($,Z){if(!super.optimizeNames($,Z))return;return this.iteration=V$(this.iteration,$,Z),this}get names(){return v1(super.names,this.iteration.names)}}class H7 extends H${constructor($,Z,Q,Y){super();this.varKind=$,this.name=Z,this.from=Q,this.to=Y}render($){let Z=$.es5?S0.varKinds.var:this.varKind,{name:Q,from:Y,to:W}=this;return`for(${Z} ${Q}=${Y}; ${Q}<${W}; ${Q}++)`+super.render($)}get names(){let $=v5(super.names,this.from);return v5($,this.to)}}class F8 extends H${constructor($,Z,Q,Y){super();this.loop=$,this.varKind=Z,this.name=Q,this.iterable=Y}render($){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render($)}optimizeNames($,Z){if(!super.optimizeNames($,Z))return;return this.iterable=V$(this.iterable,$,Z),this}get names(){return v1(super.names,this.iterable.names)}}class _5 extends N1{constructor($,Z,Q){super();this.name=$,this.args=Z,this.async=Q}render($){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render($)}}_5.kind="func";class x5 extends g5{render($){return"return "+super.render($)}}x5.kind="return";class V7 extends N1{render($){let Z="try"+super.render($);if(this.catch)Z+=this.catch.render($);if(this.finally)Z+=this.finally.render($);return Z}optimizeNodes(){var $,Z;return super.optimizeNodes(),($=this.catch)===null||$===void 0||$.optimizeNodes(),(Z=this.finally)===null||Z===void 0||Z.optimizeNodes(),this}optimizeNames($,Z){var Q,Y;return super.optimizeNames($,Z),(Q=this.catch)===null||Q===void 0||Q.optimizeNames($,Z),(Y=this.finally)===null||Y===void 0||Y.optimizeNames($,Z),this}get names(){let $=super.names;if(this.catch)v1($,this.catch.names);if(this.finally)v1($,this.finally.names);return $}}class k5 extends N1{constructor($){super();this.error=$}render($){return`catch(${this.error})`+super.render($)}}k5.kind="catch";class f5 extends N1{render($){return"finally"+super.render($)}}f5.kind="finally";class z7{constructor($,Z={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...Z,_n:Z.lines?`
3
+ `:""},this._extScope=$,this._scope=new S0.Scope({parent:$}),this._nodes=[new K7]}toString(){return this._root.render(this.opts)}name($){return this._scope.name($)}scopeName($){return this._extScope.name($)}scopeValue($,Z){let Q=this._extScope.value($,Z);return(this._values[Q.prefix]||(this._values[Q.prefix]=new Set)).add(Q),Q}getScopeValue($,Z){return this._extScope.getValue($,Z)}scopeRefs($){return this._extScope.scopeRefs($,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def($,Z,Q,Y){let W=this._scope.toName(Z);if(Q!==void 0&&Y)this._constants[W.str]=Q;return this._leafNode(new Q7($,W,Q)),W}const($,Z,Q){return this._def(S0.varKinds.const,$,Z,Q)}let($,Z,Q){return this._def(S0.varKinds.let,$,Z,Q)}var($,Z,Q){return this._def(S0.varKinds.var,$,Z,Q)}assign($,Z,Q){return this._leafNode(new D8($,Z,Q))}add($,Z){return this._leafNode(new Y7($,F0.operators.ADD,Z))}code($){if(typeof $=="function")$();else if($!==x.nil)this._leafNode(new J7($));return this}object(...$){let Z=["{"];for(let[Q,Y]of $){if(Z.length>1)Z.push(",");if(Z.push(Q),Q!==Y||this.opts.es5)Z.push(":"),(0,x.addCodeArg)(Z,Y)}return Z.push("}"),new x._Code(Z)}if($,Z,Q){if(this._blockNode(new s0($)),Z&&Q)this.code(Z).else().code(Q).endIf();else if(Z)this.code(Z).endIf();else if(Q)throw Error('CodeGen: "else" body without "then" body');return this}elseIf($){return this._elseNode(new s0($))}else(){return this._elseNode(new BZ)}endIf(){return this._endBlockNode(s0,BZ)}_for($,Z){if(this._blockNode($),Z)this.code(Z).endFor();return this}for($,Z){return this._for(new B7($),Z)}forRange($,Z,Q,Y,W=this.opts.es5?S0.varKinds.var:S0.varKinds.let){let G=this._scope.toName($);return this._for(new H7(W,G,Z,Q),()=>Y(G))}forOf($,Z,Q,Y=S0.varKinds.const){let W=this._scope.toName($);if(this.opts.es5){let G=Z instanceof x.Name?Z:this.var("_arr",Z);return this.forRange("_i",0,x._`${G}.length`,(X)=>{this.var(W,x._`${G}[${X}]`),Q(W)})}return this._for(new F8("of",Y,W,Z),()=>Q(W))}forIn($,Z,Q,Y=this.opts.es5?S0.varKinds.var:S0.varKinds.const){if(this.opts.ownProperties)return this.forOf($,x._`Object.keys(${Z})`,Q);let W=this._scope.toName($);return this._for(new F8("in",Y,W,Z),()=>Q(W))}endFor(){return this._endBlockNode(H$)}label($){return this._leafNode(new W7($))}break($){return this._leafNode(new G7($))}return($){let Z=new x5;if(this._blockNode(Z),this.code($),Z.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(x5)}try($,Z,Q){if(!Z&&!Q)throw Error('CodeGen: "try" without "catch" and "finally"');let Y=new V7;if(this._blockNode(Y),this.code($),Z){let W=this.name("e");this._currNode=Y.catch=new k5(W),Z(W)}if(Q)this._currNode=Y.finally=new f5,this.code(Q);return this._endBlockNode(k5,f5)}throw($){return this._leafNode(new X7($))}block($,Z){if(this._blockStarts.push(this._nodes.length),$)this.code($).endBlock(Z);return this}endBlock($){let Z=this._blockStarts.pop();if(Z===void 0)throw Error("CodeGen: not in self-balancing block");let Q=this._nodes.length-Z;if(Q<0||$!==void 0&&Q!==$)throw Error(`CodeGen: wrong number of nodes: ${Q} vs ${$} expected`);return this._nodes.length=Z,this}func($,Z=x.nil,Q,Y){if(this._blockNode(new _5($,Z,Q)),Y)this.code(Y).endFunc();return this}endFunc(){return this._endBlockNode(_5)}optimize($=1){while($-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode($){return this._currNode.nodes.push($),this}_blockNode($){this._currNode.nodes.push($),this._nodes.push($)}_endBlockNode($,Z){let Q=this._currNode;if(Q instanceof $||Z&&Q instanceof Z)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${Z?`${$.kind}/${Z.kind}`:$.kind}"`)}_elseNode($){let Z=this._currNode;if(!(Z instanceof s0))throw Error('CodeGen: "else" without "if"');return this._currNode=Z.else=$,this}get _root(){return this._nodes[0]}get _currNode(){let $=this._nodes;return $[$.length-1]}set _currNode($){let Z=this._nodes;Z[Z.length-1]=$}}F0.CodeGen=z7;function v1($,Z){for(let Q in Z)$[Q]=($[Q]||0)+(Z[Q]||0);return $}function v5($,Z){return Z instanceof x._CodeOrName?v1($,Z.names):$}function V$($,Z,Q){if($ instanceof x.Name)return Y($);if(!W($))return $;return new x._Code($._items.reduce((G,X)=>{if(X instanceof x.Name)X=Y(X);if(X instanceof x._Code)G.push(...X._items);else G.push(X);return G},[]));function Y(G){let X=Q[G.str];if(X===void 0||Z[G.str]!==1)return G;return delete Z[G.str],X}function W(G){return G instanceof x._Code&&G._items.some((X)=>X instanceof x.Name&&Z[X.str]===1&&Q[X.str]!==void 0)}}function iF($,Z){for(let Q in Z)$[Q]=($[Q]||0)-(Z[Q]||0)}function F7($){return typeof $=="boolean"||typeof $=="number"||$===null?!$:x._`!${L8($)}`}F0.not=F7;var nF=L7(F0.operators.AND);function aF(...$){return $.reduce(nF)}F0.and=aF;var rF=L7(F0.operators.OR);function tF(...$){return $.reduce(rF)}F0.or=tF;function L7($){return(Z,Q)=>Z===x.nil?Q:Q===x.nil?Z:x._`${L8(Z)} ${$} ${L8(Q)}`}function L8($){return $ instanceof x.Name?$:x._`(${$})`}});var k=O((P7)=>{Object.defineProperty(P7,"__esModule",{value:!0});P7.checkStrictMode=P7.getErrorPath=P7.Type=P7.useFunc=P7.setEvaluated=P7.evaluatedPropsToName=P7.mergeEvaluated=P7.eachItem=P7.unescapeJsonPointer=P7.escapeJsonPointer=P7.escapeFragment=P7.unescapeFragment=P7.schemaRefOrVal=P7.schemaHasRulesButRef=P7.schemaHasRules=P7.checkUnknownRules=P7.alwaysValidSchema=P7.toHash=void 0;var m=b(),$L=KZ();function ZL($){let Z={};for(let Q of $)Z[Q]=!0;return Z}P7.toHash=ZL;function QL($,Z){if(typeof Z=="boolean")return Z;if(Object.keys(Z).length===0)return!0;return A7($,Z),!N7(Z,$.self.RULES.all)}P7.alwaysValidSchema=QL;function A7($,Z=$.schema){let{opts:Q,self:Y}=$;if(!Q.strictSchema)return;if(typeof Z==="boolean")return;let W=Y.RULES.keywords;for(let G in Z)if(!W[G])j7($,`unknown keyword: "${G}"`)}P7.checkUnknownRules=A7;function N7($,Z){if(typeof $=="boolean")return!$;for(let Q in $)if(Z[Q])return!0;return!1}P7.schemaHasRules=N7;function YL($,Z){if(typeof $=="boolean")return!$;for(let Q in $)if(Q!=="$ref"&&Z.all[Q])return!0;return!1}P7.schemaHasRulesButRef=YL;function WL({topSchemaRef:$,schemaPath:Z},Q,Y,W){if(!W){if(typeof Q=="number"||typeof Q=="boolean")return Q;if(typeof Q=="string")return m._`${Q}`}return m._`${$}${Z}${(0,m.getProperty)(Y)}`}P7.schemaRefOrVal=WL;function GL($){return M7(decodeURIComponent($))}P7.unescapeFragment=GL;function XL($){return encodeURIComponent(U8($))}P7.escapeFragment=XL;function U8($){if(typeof $=="number")return`${$}`;return $.replace(/~/g,"~0").replace(/\//g,"~1")}P7.escapeJsonPointer=U8;function M7($){return $.replace(/~1/g,"/").replace(/~0/g,"~")}P7.unescapeJsonPointer=M7;function JL($,Z){if(Array.isArray($))for(let Q of $)Z(Q);else Z($)}P7.eachItem=JL;function q7({mergeNames:$,mergeToName:Z,mergeValues:Q,resultToName:Y}){return(W,G,X,J)=>{let B=X===void 0?G:X instanceof m.Name?(G instanceof m.Name?$(W,G,X):Z(W,G,X),X):G instanceof m.Name?(Z(W,X,G),G):Q(G,X);return J===m.Name&&!(B instanceof m.Name)?Y(W,B):B}}P7.mergeEvaluated={props:q7({mergeNames:($,Z,Q)=>$.if(m._`${Q} !== true && ${Z} !== undefined`,()=>{$.if(m._`${Z} === true`,()=>$.assign(Q,!0),()=>$.assign(Q,m._`${Q} || {}`).code(m._`Object.assign(${Q}, ${Z})`))}),mergeToName:($,Z,Q)=>$.if(m._`${Q} !== true`,()=>{if(Z===!0)$.assign(Q,!0);else $.assign(Q,m._`${Q} || {}`),A8($,Q,Z)}),mergeValues:($,Z)=>$===!0?!0:{...$,...Z},resultToName:O7}),items:q7({mergeNames:($,Z,Q)=>$.if(m._`${Q} !== true && ${Z} !== undefined`,()=>$.assign(Q,m._`${Z} === true ? true : ${Q} > ${Z} ? ${Q} : ${Z}`)),mergeToName:($,Z,Q)=>$.if(m._`${Q} !== true`,()=>$.assign(Q,Z===!0?!0:m._`${Q} > ${Z} ? ${Q} : ${Z}`)),mergeValues:($,Z)=>$===!0?!0:Math.max($,Z),resultToName:($,Z)=>$.var("items",Z)})};function O7($,Z){if(Z===!0)return $.var("props",!0);let Q=$.var("props",m._`{}`);if(Z!==void 0)A8($,Q,Z);return Q}P7.evaluatedPropsToName=O7;function A8($,Z,Q){Object.keys(Q).forEach((Y)=>$.assign(m._`${Z}${(0,m.getProperty)(Y)}`,!0))}P7.setEvaluated=A8;var U7={};function KL($,Z){return $.scopeValue("func",{ref:Z,code:U7[Z.code]||(U7[Z.code]=new $L._Code(Z.code))})}P7.useFunc=KL;var q8;(function($){$[$.Num=0]="Num",$[$.Str=1]="Str"})(q8||(P7.Type=q8={}));function BL($,Z,Q){if($ instanceof m.Name){let Y=Z===q8.Num;return Q?Y?m._`"[" + ${$} + "]"`:m._`"['" + ${$} + "']"`:Y?m._`"/" + ${$}`:m._`"/" + ${$}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return Q?(0,m.getProperty)($).toString():"/"+U8($)}P7.getErrorPath=BL;function j7($,Z,Q=$.opts.strictSchema){if(!Q)return;if(Z=`strict mode: ${Z}`,Q===!0)throw Error(Z);$.self.logger.warn(Z)}P7.checkStrictMode=j7});var e0=O((T7)=>{Object.defineProperty(T7,"__esModule",{value:!0});var Y0=b(),IL={data:new Y0.Name("data"),valCxt:new Y0.Name("valCxt"),instancePath:new Y0.Name("instancePath"),parentData:new Y0.Name("parentData"),parentDataProperty:new Y0.Name("parentDataProperty"),rootData:new Y0.Name("rootData"),dynamicAnchors:new Y0.Name("dynamicAnchors"),vErrors:new Y0.Name("vErrors"),errors:new Y0.Name("errors"),this:new Y0.Name("this"),self:new Y0.Name("self"),scope:new Y0.Name("scope"),json:new Y0.Name("json"),jsonPos:new Y0.Name("jsonPos"),jsonLen:new Y0.Name("jsonLen"),jsonPart:new Y0.Name("jsonPart")};T7.default=IL});var HZ=O((S7)=>{Object.defineProperty(S7,"__esModule",{value:!0});S7.extendErrors=S7.resetErrorsCount=S7.reportExtraError=S7.reportError=S7.keyword$DataError=S7.keywordError=void 0;var f=b(),m5=k(),J0=e0();S7.keywordError={message:({keyword:$})=>f.str`must pass "${$}" keyword validation`};S7.keyword$DataError={message:({keyword:$,schemaType:Z})=>Z?f.str`"${$}" keyword must be ${Z} ($data)`:f.str`"${$}" keyword is invalid ($data)`};function SL($,Z=S7.keywordError,Q,Y){let{it:W}=$,{gen:G,compositeRule:X,allErrors:J}=W,B=R7($,Z,Q);if(Y!==null&&Y!==void 0?Y:X||J)E7(G,B);else I7(W,f._`[${B}]`)}S7.reportError=SL;function CL($,Z=S7.keywordError,Q){let{it:Y}=$,{gen:W,compositeRule:G,allErrors:X}=Y,J=R7($,Z,Q);if(E7(W,J),!(G||X))I7(Y,J0.default.vErrors)}S7.reportExtraError=CL;function yL($,Z){$.assign(J0.default.errors,Z),$.if(f._`${J0.default.vErrors} !== null`,()=>$.if(Z,()=>$.assign(f._`${J0.default.vErrors}.length`,Z),()=>$.assign(J0.default.vErrors,null)))}S7.resetErrorsCount=yL;function bL({gen:$,keyword:Z,schemaValue:Q,data:Y,errsCount:W,it:G}){if(W===void 0)throw Error("ajv implementation error");let X=$.name("err");$.forRange("i",W,J0.default.errors,(J)=>{if($.const(X,f._`${J0.default.vErrors}[${J}]`),$.if(f._`${X}.instancePath === undefined`,()=>$.assign(f._`${X}.instancePath`,(0,f.strConcat)(J0.default.instancePath,G.errorPath))),$.assign(f._`${X}.schemaPath`,f.str`${G.errSchemaPath}/${Z}`),G.opts.verbose)$.assign(f._`${X}.schema`,Q),$.assign(f._`${X}.data`,Y)})}S7.extendErrors=bL;function E7($,Z){let Q=$.const("err",Z);$.if(f._`${J0.default.vErrors} === null`,()=>$.assign(J0.default.vErrors,f._`[${Q}]`),f._`${J0.default.vErrors}.push(${Q})`),$.code(f._`${J0.default.errors}++`)}function I7($,Z){let{gen:Q,validateName:Y,schemaEnv:W}=$;if(W.$async)Q.throw(f._`new ${$.ValidationError}(${Z})`);else Q.assign(f._`${Y}.errors`,Z),Q.return(!1)}var h1={keyword:new f.Name("keyword"),schemaPath:new f.Name("schemaPath"),params:new f.Name("params"),propertyName:new f.Name("propertyName"),message:new f.Name("message"),schema:new f.Name("schema"),parentSchema:new f.Name("parentSchema")};function R7($,Z,Q){let{createErrors:Y}=$.it;if(Y===!1)return f._`{}`;return _L($,Z,Q)}function _L($,Z,Q={}){let{gen:Y,it:W}=$,G=[xL(W,Q),kL($,Q)];return fL($,Z,G),Y.object(...G)}function xL({errorPath:$},{instancePath:Z}){let Q=Z?f.str`${$}${(0,m5.getErrorPath)(Z,m5.Type.Str)}`:$;return[J0.default.instancePath,(0,f.strConcat)(J0.default.instancePath,Q)]}function kL({keyword:$,it:{errSchemaPath:Z}},{schemaPath:Q,parentSchema:Y}){let W=Y?Z:f.str`${Z}/${$}`;if(Q)W=f.str`${W}${(0,m5.getErrorPath)(Q,m5.Type.Str)}`;return[h1.schemaPath,W]}function fL($,{params:Z,message:Q},Y){let{keyword:W,data:G,schemaValue:X,it:J}=$,{opts:B,propertyName:K,topSchemaRef:V,schemaPath:z}=J;if(Y.push([h1.keyword,W],[h1.params,typeof Z=="function"?Z($):Z||f._`{}`]),B.messages)Y.push([h1.message,typeof Q=="function"?Q($):Q]);if(B.verbose)Y.push([h1.schema,X],[h1.parentSchema,f._`${V}${z}`],[J0.default.data,G]);if(K)Y.push([h1.propertyName,K])}});var x7=O((b7)=>{Object.defineProperty(b7,"__esModule",{value:!0});b7.boolOrEmptySchema=b7.topBoolOrEmptySchema=void 0;var mL=HZ(),pL=b(),lL=e0(),cL={message:"boolean schema is false"};function dL($){let{gen:Z,schema:Q,validateName:Y}=$;if(Q===!1)y7($,!1);else if(typeof Q=="object"&&Q.$async===!0)Z.return(lL.default.data);else Z.assign(pL._`${Y}.errors`,null),Z.return(!0)}b7.topBoolOrEmptySchema=dL;function iL($,Z){let{gen:Q,schema:Y}=$;if(Y===!1)Q.var(Z,!1),y7($);else Q.var(Z,!0)}b7.boolOrEmptySchema=iL;function y7($,Z){let{gen:Q,data:Y}=$,W={gen:Q,keyword:"false schema",data:Y,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:$};(0,mL.reportError)(W,cL,void 0,Z)}});var M8=O((k7)=>{Object.defineProperty(k7,"__esModule",{value:!0});k7.getRules=k7.isJSONType=void 0;var aL=["string","number","integer","boolean","null","object","array"],rL=new Set(aL);function tL($){return typeof $=="string"&&rL.has($)}k7.isJSONType=tL;function oL(){let $={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...$,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},$.number,$.string,$.array,$.object],post:{rules:[]},all:{},keywords:{}}}k7.getRules=oL});var O8=O((g7)=>{Object.defineProperty(g7,"__esModule",{value:!0});g7.shouldUseRule=g7.shouldUseGroup=g7.schemaHasRulesForType=void 0;function eL({schema:$,self:Z},Q){let Y=Z.RULES.types[Q];return Y&&Y!==!0&&v7($,Y)}g7.schemaHasRulesForType=eL;function v7($,Z){return Z.rules.some((Q)=>h7($,Q))}g7.shouldUseGroup=v7;function h7($,Z){var Q;return $[Z.keyword]!==void 0||((Q=Z.definition.implements)===null||Q===void 0?void 0:Q.some((Y)=>$[Y]!==void 0))}g7.shouldUseRule=h7});var VZ=O((c7)=>{Object.defineProperty(c7,"__esModule",{value:!0});c7.reportTypeError=c7.checkDataTypes=c7.checkDataType=c7.coerceAndCheckDataType=c7.getJSONTypes=c7.getSchemaTypes=c7.DataType=void 0;var QD=M8(),YD=O8(),WD=HZ(),C=b(),m7=k(),z$;(function($){$[$.Correct=0]="Correct",$[$.Wrong=1]="Wrong"})(z$||(c7.DataType=z$={}));function GD($){let Z=p7($.type);if(Z.includes("null")){if($.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!Z.length&&$.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if($.nullable===!0)Z.push("null")}return Z}c7.getSchemaTypes=GD;function p7($){let Z=Array.isArray($)?$:$?[$]:[];if(Z.every(QD.isJSONType))return Z;throw Error("type must be JSONType or JSONType[]: "+Z.join(","))}c7.getJSONTypes=p7;function XD($,Z){let{gen:Q,data:Y,opts:W}=$,G=JD(Z,W.coerceTypes),X=Z.length>0&&!(G.length===0&&Z.length===1&&(0,YD.schemaHasRulesForType)($,Z[0]));if(X){let J=P8(Z,Y,W.strictNumbers,z$.Wrong);Q.if(J,()=>{if(G.length)KD($,Z,G);else w8($)})}return X}c7.coerceAndCheckDataType=XD;var l7=new Set(["string","number","integer","boolean","null"]);function JD($,Z){return Z?$.filter((Q)=>l7.has(Q)||Z==="array"&&Q==="array"):[]}function KD($,Z,Q){let{gen:Y,data:W,opts:G}=$,X=Y.let("dataType",C._`typeof ${W}`),J=Y.let("coerced",C._`undefined`);if(G.coerceTypes==="array")Y.if(C._`${X} == 'object' && Array.isArray(${W}) && ${W}.length == 1`,()=>Y.assign(W,C._`${W}[0]`).assign(X,C._`typeof ${W}`).if(P8(Z,W,G.strictNumbers),()=>Y.assign(J,W)));Y.if(C._`${J} !== undefined`);for(let K of Q)if(l7.has(K)||K==="array"&&G.coerceTypes==="array")B(K);Y.else(),w8($),Y.endIf(),Y.if(C._`${J} !== undefined`,()=>{Y.assign(W,J),BD($,J)});function B(K){switch(K){case"string":Y.elseIf(C._`${X} == "number" || ${X} == "boolean"`).assign(J,C._`"" + ${W}`).elseIf(C._`${W} === null`).assign(J,C._`""`);return;case"number":Y.elseIf(C._`${X} == "boolean" || ${W} === null
4
4
  || (${X} == "string" && ${W} && ${W} == +${W})`).assign(J,C._`+${W}`);return;case"integer":Y.elseIf(C._`${X} === "boolean" || ${W} === null
5
5
  || (${X} === "string" && ${W} && ${W} == +${W} && !(${W} % 1))`).assign(J,C._`+${W}`);return;case"boolean":Y.elseIf(C._`${W} === "false" || ${W} === 0 || ${W} === null`).assign(J,!1).elseIf(C._`${W} === "true" || ${W} === 1`).assign(J,!0);return;case"null":Y.elseIf(C._`${W} === "" || ${W} === 0 || ${W} === false`),Y.assign(J,null);return;case"array":Y.elseIf(C._`${X} === "string" || ${X} === "number"
6
- || ${X} === "boolean" || ${W} === null`).assign(J,C._`[${W}]`)}}}function sL({gen:$,parentData:Z,parentDataProperty:Q},Y){$.if(C._`${Z} !== undefined`,()=>$.assign(C._`${Z}[${Q}]`,Y))}function M8($,Z,Q,Y=V$.Correct){let W=Y===V$.Correct?C.operators.EQ:C.operators.NEQ,G;switch($){case"null":return C._`${Z} ${W} null`;case"array":G=C._`Array.isArray(${Z})`;break;case"object":G=C._`${Z} && typeof ${Z} == "object" && !Array.isArray(${Z})`;break;case"integer":G=X(C._`!(${Z} % 1) && !isNaN(${Z})`);break;case"number":G=X();break;default:return C._`typeof ${Z} ${W} ${$}`}return Y===V$.Correct?G:(0,C.not)(G);function X(J=C.nil){return(0,C.and)(C._`typeof ${Z} == "number"`,J,Q?C._`isFinite(${Z})`:C.nil)}}u7.checkDataType=M8;function O8($,Z,Q,Y){if($.length===1)return M8($[0],Z,Q,Y);let W,G=(0,v7.toHash)($);if(G.array&&G.object){let X=C._`typeof ${Z} != "object"`;W=G.null?X:C._`!${Z} || ${X}`,delete G.null,delete G.array,delete G.object}else W=C.nil;if(G.number)delete G.integer;for(let X in G)W=(0,C.and)(W,M8(X,Z,Q,Y));return W}u7.checkDataTypes=O8;var eL={message:({schema:$})=>`must be ${$}`,params:({schema:$,schemaValue:Z})=>typeof $=="string"?C._`{type: ${$}}`:C._`{type: ${Z}}`};function j8($){let Z=$D($);(0,nL.reportError)(Z,eL)}u7.reportTypeError=j8;function $D($){let{gen:Z,data:Q,schema:Y}=$,W=(0,v7.schemaRefOrVal)($,Y,"type");return{gen:Z,keyword:"type",data:Q,schema:Y.type,schemaCode:W,schemaValue:W,parentSchema:Y,params:{},it:$}}});var d7=O((p7)=>{Object.defineProperty(p7,"__esModule",{value:!0});p7.assignDefaults=void 0;var z$=b(),JD=k();function KD($,Z){let{properties:Q,items:Y}=$.schema;if(Z==="object"&&Q)for(let W in Q)l7($,W,Q[W].default);else if(Z==="array"&&Array.isArray(Y))Y.forEach((W,G)=>l7($,G,W.default))}p7.assignDefaults=KD;function l7($,Z,Q){let{gen:Y,compositeRule:W,data:G,opts:X}=$;if(Q===void 0)return;let J=z$._`${G}${(0,z$.getProperty)(Z)}`;if(W){(0,JD.checkStrictMode)($,`default is ignored for: ${J}`);return}let B=z$._`${J} === undefined`;if(X.useDefaults==="empty")B=z$._`${B} || ${J} === null || ${J} === ""`;Y.if(B,z$._`${J} = ${(0,z$.stringify)(Q)}`)}});var P0=O((a7)=>{Object.defineProperty(a7,"__esModule",{value:!0});a7.validateUnion=a7.validateArray=a7.usePattern=a7.callValidateCode=a7.schemaProperties=a7.allSchemaProperties=a7.noPropertyInData=a7.propertyInData=a7.isOwnProperty=a7.hasPropFunc=a7.reportMissingProp=a7.checkMissingProp=a7.checkReportMissingProp=void 0;var p=b(),P8=k(),N1=s0(),BD=k();function HD($,Z){let{gen:Q,data:Y,it:W}=$;Q.if(T8(Q,Y,Z,W.opts.ownProperties),()=>{$.setParams({missingProperty:p._`${Z}`},!0),$.error()})}a7.checkReportMissingProp=HD;function VD({gen:$,data:Z,it:{opts:Q}},Y,W){return(0,p.or)(...Y.map((G)=>(0,p.and)(T8($,Z,G,Q.ownProperties),p._`${W} = ${G}`)))}a7.checkMissingProp=VD;function zD($,Z){$.setParams({missingProperty:Z},!0),$.error()}a7.reportMissingProp=zD;function i7($){return $.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:p._`Object.prototype.hasOwnProperty`})}a7.hasPropFunc=i7;function w8($,Z,Q){return p._`${i7($)}.call(${Z}, ${Q})`}a7.isOwnProperty=w8;function FD($,Z,Q,Y){let W=p._`${Z}${(0,p.getProperty)(Q)} !== undefined`;return Y?p._`${W} && ${w8($,Z,Q)}`:W}a7.propertyInData=FD;function T8($,Z,Q,Y){let W=p._`${Z}${(0,p.getProperty)(Q)} === undefined`;return Y?(0,p.or)(W,(0,p.not)(w8($,Z,Q))):W}a7.noPropertyInData=T8;function n7($){return $?Object.keys($).filter((Z)=>Z!=="__proto__"):[]}a7.allSchemaProperties=n7;function LD($,Z){return n7(Z).filter((Q)=>!(0,P8.alwaysValidSchema)($,Z[Q]))}a7.schemaProperties=LD;function DD({schemaCode:$,data:Z,it:{gen:Q,topSchemaRef:Y,schemaPath:W,errorPath:G},it:X},J,B,K){let V=K?p._`${$}, ${Z}, ${Y}${W}`:Z,z=[[N1.default.instancePath,(0,p.strConcat)(N1.default.instancePath,G)],[N1.default.parentData,X.parentData],[N1.default.parentDataProperty,X.parentDataProperty],[N1.default.rootData,N1.default.rootData]];if(X.opts.dynamicRef)z.push([N1.default.dynamicAnchors,N1.default.dynamicAnchors]);let F=p._`${V}, ${Q.object(...z)}`;return B!==p.nil?p._`${J}.call(${B}, ${F})`:p._`${J}(${F})`}a7.callValidateCode=DD;var UD=p._`new RegExp`;function qD({gen:$,it:{opts:Z}},Q){let Y=Z.unicodeRegExp?"u":"",{regExp:W}=Z.code,G=W(Q,Y);return $.scopeValue("pattern",{key:G.toString(),ref:G,code:p._`${W.code==="new RegExp"?UD:(0,BD.useFunc)($,W)}(${Q}, ${Y})`})}a7.usePattern=qD;function AD($){let{gen:Z,data:Q,keyword:Y,it:W}=$,G=Z.name("valid");if(W.allErrors){let J=Z.let("valid",!0);return X(()=>Z.assign(J,!1)),J}return Z.var(G,!0),X(()=>Z.break()),G;function X(J){let B=Z.const("len",p._`${Q}.length`);Z.forRange("i",0,B,(K)=>{$.subschema({keyword:Y,dataProp:K,dataPropType:P8.Type.Num},G),Z.if((0,p.not)(G),J)})}}a7.validateArray=AD;function ND($){let{gen:Z,schema:Q,keyword:Y,it:W}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");if(Q.some((B)=>(0,P8.alwaysValidSchema)(W,B))&&!W.opts.unevaluated)return;let X=Z.let("valid",!1),J=Z.name("_valid");Z.block(()=>Q.forEach((B,K)=>{let V=$.subschema({keyword:Y,schemaProp:K,compositeRule:!0},J);if(Z.assign(X,p._`${X} || ${J}`),!$.mergeValidEvaluated(V,J))Z.if((0,p.not)(X))})),$.result(X,()=>$.reset(),()=>$.error(!0))}a7.validateUnion=ND});var $W=O((s7)=>{Object.defineProperty(s7,"__esModule",{value:!0});s7.validateKeywordUsage=s7.validSchemaType=s7.funcKeywordCode=s7.macroKeywordCode=void 0;var K0=b(),g1=s0(),bD=P0(),_D=KZ();function xD($,Z){let{gen:Q,keyword:Y,schema:W,parentSchema:G,it:X}=$,J=Z.macro.call(X.self,W,G,X),B=o7(Q,Y,J);if(X.opts.validateSchema!==!1)X.self.validateSchema(J,!0);let K=Q.name("valid");$.subschema({schema:J,schemaPath:K0.nil,errSchemaPath:`${X.errSchemaPath}/${Y}`,topSchemaRef:B,compositeRule:!0},K),$.pass(K,()=>$.error(!0))}s7.macroKeywordCode=xD;function kD($,Z){var Q;let{gen:Y,keyword:W,schema:G,parentSchema:X,$data:J,it:B}=$;vD(B,Z);let K=!J&&Z.compile?Z.compile.call(B.self,G,X,B):Z.validate,V=o7(Y,W,K),z=Y.let("valid");$.block$data(z,F),$.ok((Q=Z.valid)!==null&&Q!==void 0?Q:z);function F(){if(Z.errors===!1){if(U(),Z.modifying)t7($);q(()=>$.error())}else{let A=Z.async?D():L();if(Z.modifying)t7($);q(()=>fD($,A))}}function D(){let A=Y.let("ruleErrs",null);return Y.try(()=>U(K0._`await `),(N)=>Y.assign(z,!1).if(K0._`${N} instanceof ${B.ValidationError}`,()=>Y.assign(A,K0._`${N}.errors`),()=>Y.throw(N))),A}function L(){let A=K0._`${V}.errors`;return Y.assign(A,null),U(K0.nil),A}function U(A=Z.async?K0._`await `:K0.nil){let N=B.opts.passContext?g1.default.this:g1.default.self,j=!(("compile"in Z)&&!J||Z.schema===!1);Y.assign(z,K0._`${A}${(0,bD.callValidateCode)($,V,N,j)}`,Z.modifying)}function q(A){var N;Y.if((0,K0.not)((N=Z.valid)!==null&&N!==void 0?N:z),A)}}s7.funcKeywordCode=kD;function t7($){let{gen:Z,data:Q,it:Y}=$;Z.if(Y.parentData,()=>Z.assign(Q,K0._`${Y.parentData}[${Y.parentDataProperty}]`))}function fD($,Z){let{gen:Q}=$;Q.if(K0._`Array.isArray(${Z})`,()=>{Q.assign(g1.default.vErrors,K0._`${g1.default.vErrors} === null ? ${Z} : ${g1.default.vErrors}.concat(${Z})`).assign(g1.default.errors,K0._`${g1.default.vErrors}.length`),(0,_D.extendErrors)($)},()=>$.error())}function vD({schemaEnv:$},Z){if(Z.async&&!$.$async)throw Error("async keyword in sync schema")}function o7($,Z,Q){if(Q===void 0)throw Error(`keyword "${Z}" failed to compile`);return $.scopeValue("keyword",typeof Q=="function"?{ref:Q}:{ref:Q,code:(0,K0.stringify)(Q)})}function gD($,Z,Q=!1){return!Z.length||Z.some((Y)=>Y==="array"?Array.isArray($):Y==="object"?$&&typeof $=="object"&&!Array.isArray($):typeof $==Y||Q&&typeof $>"u")}s7.validSchemaType=gD;function hD({schema:$,opts:Z,self:Q,errSchemaPath:Y},W,G){if(Array.isArray(W.keyword)?!W.keyword.includes(G):W.keyword!==G)throw Error("ajv implementation error");let X=W.dependencies;if(X===null||X===void 0?void 0:X.some((J)=>!Object.prototype.hasOwnProperty.call($,J)))throw Error(`parent schema must have dependencies of ${G}: ${X.join(",")}`);if(W.validateSchema){if(!W.validateSchema($[G])){let B=`keyword "${G}" value is invalid at path "${Y}": `+Q.errorsText(W.validateSchema.errors);if(Z.validateSchema==="log")Q.logger.error(B);else throw Error(B)}}}s7.validateKeywordUsage=hD});var WW=O((QW)=>{Object.defineProperty(QW,"__esModule",{value:!0});QW.extendSubschemaMode=QW.extendSubschemaData=QW.getSubschema=void 0;var g0=b(),ZW=k();function pD($,{keyword:Z,schemaProp:Q,schema:Y,schemaPath:W,errSchemaPath:G,topSchemaRef:X}){if(Z!==void 0&&Y!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(Z!==void 0){let J=$.schema[Z];return Q===void 0?{schema:J,schemaPath:g0._`${$.schemaPath}${(0,g0.getProperty)(Z)}`,errSchemaPath:`${$.errSchemaPath}/${Z}`}:{schema:J[Q],schemaPath:g0._`${$.schemaPath}${(0,g0.getProperty)(Z)}${(0,g0.getProperty)(Q)}`,errSchemaPath:`${$.errSchemaPath}/${Z}/${(0,ZW.escapeFragment)(Q)}`}}if(Y!==void 0){if(W===void 0||G===void 0||X===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:Y,schemaPath:W,topSchemaRef:X,errSchemaPath:G}}throw Error('either "keyword" or "schema" must be passed')}QW.getSubschema=pD;function cD($,Z,{dataProp:Q,dataPropType:Y,data:W,dataTypes:G,propertyName:X}){if(W!==void 0&&Q!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:J}=Z;if(Q!==void 0){let{errorPath:K,dataPathArr:V,opts:z}=Z,F=J.let("data",g0._`${Z.data}${(0,g0.getProperty)(Q)}`,!0);B(F),$.errorPath=g0.str`${K}${(0,ZW.getErrorPath)(Q,Y,z.jsPropertySyntax)}`,$.parentDataProperty=g0._`${Q}`,$.dataPathArr=[...V,$.parentDataProperty]}if(W!==void 0){let K=W instanceof g0.Name?W:J.let("data",W,!0);if(B(K),X!==void 0)$.propertyName=X}if(G)$.dataTypes=G;function B(K){$.data=K,$.dataLevel=Z.dataLevel+1,$.dataTypes=[],Z.definedProperties=new Set,$.parentData=Z.data,$.dataNames=[...Z.dataNames,K]}}QW.extendSubschemaData=cD;function dD($,{jtdDiscriminator:Z,jtdMetadata:Q,compositeRule:Y,createErrors:W,allErrors:G}){if(Y!==void 0)$.compositeRule=Y;if(W!==void 0)$.createErrors=W;if(G!==void 0)$.allErrors=G;$.jtdDiscriminator=Z,$.jtdMetadata=Q}QW.extendSubschemaMode=dD});var I8=O((G2,GW)=>{GW.exports=function $(Z,Q){if(Z===Q)return!0;if(Z&&Q&&typeof Z=="object"&&typeof Q=="object"){if(Z.constructor!==Q.constructor)return!1;var Y,W,G;if(Array.isArray(Z)){if(Y=Z.length,Y!=Q.length)return!1;for(W=Y;W--!==0;)if(!$(Z[W],Q[W]))return!1;return!0}if(Z.constructor===RegExp)return Z.source===Q.source&&Z.flags===Q.flags;if(Z.valueOf!==Object.prototype.valueOf)return Z.valueOf()===Q.valueOf();if(Z.toString!==Object.prototype.toString)return Z.toString()===Q.toString();if(G=Object.keys(Z),Y=G.length,Y!==Object.keys(Q).length)return!1;for(W=Y;W--!==0;)if(!Object.prototype.hasOwnProperty.call(Q,G[W]))return!1;for(W=Y;W--!==0;){var X=G[W];if(!$(Z[X],Q[X]))return!1}return!0}return Z!==Z&&Q!==Q}});var JW=O((X2,XW)=>{var M1=XW.exports=function($,Z,Q){if(typeof Z=="function")Q=Z,Z={};Q=Z.cb||Q;var Y=typeof Q=="function"?Q:Q.pre||function(){},W=Q.post||function(){};h5(Z,Y,W,$,"",$)};M1.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};M1.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};M1.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};M1.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function h5($,Z,Q,Y,W,G,X,J,B,K){if(Y&&typeof Y=="object"&&!Array.isArray(Y)){Z(Y,W,G,X,J,B,K);for(var V in Y){var z=Y[V];if(Array.isArray(z)){if(V in M1.arrayKeywords)for(var F=0;F<z.length;F++)h5($,Z,Q,z[F],W+"/"+V+"/"+F,G,W,V,Y,F)}else if(V in M1.propsKeywords){if(z&&typeof z=="object")for(var D in z)h5($,Z,Q,z[D],W+"/"+V+"/"+aD(D),G,W,V,Y,D)}else if(V in M1.keywords||$.allKeys&&!(V in M1.skipKeywords))h5($,Z,Q,z,W+"/"+V,G,W,V,Y)}Q(Y,W,G,X,J,B,K)}}function aD($){return $.replace(/~/g,"~0").replace(/\//g,"~1")}});var HZ=O((VW)=>{Object.defineProperty(VW,"__esModule",{value:!0});VW.getSchemaRefs=VW.resolveUrl=VW.normalizeId=VW._getFullPath=VW.getFullPath=VW.inlineRef=void 0;var rD=k(),tD=I8(),oD=JW(),sD=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function eD($,Z=!0){if(typeof $=="boolean")return!0;if(Z===!0)return!R8($);if(!Z)return!1;return KW($)<=Z}VW.inlineRef=eD;var $U=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function R8($){for(let Z in $){if($U.has(Z))return!0;let Q=$[Z];if(Array.isArray(Q)&&Q.some(R8))return!0;if(typeof Q=="object"&&R8(Q))return!0}return!1}function KW($){let Z=0;for(let Q in $){if(Q==="$ref")return 1/0;if(Z++,sD.has(Q))continue;if(typeof $[Q]=="object")(0,rD.eachItem)($[Q],(Y)=>Z+=KW(Y));if(Z===1/0)return 1/0}return Z}function BW($,Z="",Q){if(Q!==!1)Z=F$(Z);let Y=$.parse(Z);return HW($,Y)}VW.getFullPath=BW;function HW($,Z){return $.serialize(Z).split("#")[0]+"#"}VW._getFullPath=HW;var ZU=/#\/?$/;function F$($){return $?$.replace(ZU,""):""}VW.normalizeId=F$;function QU($,Z,Q){return Q=F$(Q),$.resolve(Z,Q)}VW.resolveUrl=QU;var YU=/^[a-z_][-a-z0-9._]*$/i;function WU($,Z){if(typeof $=="boolean")return{};let{schemaId:Q,uriResolver:Y}=this.opts,W=F$($[Q]||Z),G={"":W},X=BW(Y,W,!1),J={},B=new Set;return oD($,{allKeys:!0},(z,F,D,L)=>{if(L===void 0)return;let U=X+F,q=G[L];if(typeof z[Q]=="string")q=A.call(this,z[Q]);N.call(this,z.$anchor),N.call(this,z.$dynamicAnchor),G[F]=q;function A(j){let P=this.opts.uriResolver.resolve;if(j=F$(q?P(q,j):j),B.has(j))throw V(j);B.add(j);let M=this.refs[j];if(typeof M=="string")M=this.refs[M];if(typeof M=="object")K(z,M.schema,j);else if(j!==F$(U))if(j[0]==="#")K(z,J[j],j),J[j]=z;else this.refs[j]=U;return j}function N(j){if(typeof j=="string"){if(!YU.test(j))throw Error(`invalid anchor "${j}"`);A.call(this,`#${j}`)}}}),J;function K(z,F,D){if(F!==void 0&&!tD(z,F))throw V(D)}function V(z){return Error(`reference "${z}" resolves to more than one schema`)}}VW.getSchemaRefs=WU});var FZ=O((RW)=>{Object.defineProperty(RW,"__esModule",{value:!0});RW.getData=RW.KeywordCxt=RW.validateFunctionCode=void 0;var qW=C7(),FW=BZ(),S8=N8(),u5=BZ(),HU=d7(),zZ=$W(),E8=WW(),T=b(),E=s0(),VU=HZ(),e0=k(),VZ=KZ();function zU($){if(MW($)){if(OW($),NW($)){DU($);return}}AW($,()=>(0,qW.topBoolOrEmptySchema)($))}RW.validateFunctionCode=zU;function AW({gen:$,validateName:Z,schema:Q,schemaEnv:Y,opts:W},G){if(W.code.es5)$.func(Z,T._`${E.default.data}, ${E.default.valCxt}`,Y.$async,()=>{$.code(T._`"use strict"; ${LW(Q,W)}`),LU($,W),$.code(G)});else $.func(Z,T._`${E.default.data}, ${FU(W)}`,Y.$async,()=>$.code(LW(Q,W)).code(G))}function FU($){return T._`{${E.default.instancePath}="", ${E.default.parentData}, ${E.default.parentDataProperty}, ${E.default.rootData}=${E.default.data}${$.dynamicRef?T._`, ${E.default.dynamicAnchors}={}`:T.nil}}={}`}function LU($,Z){$.if(E.default.valCxt,()=>{if($.var(E.default.instancePath,T._`${E.default.valCxt}.${E.default.instancePath}`),$.var(E.default.parentData,T._`${E.default.valCxt}.${E.default.parentData}`),$.var(E.default.parentDataProperty,T._`${E.default.valCxt}.${E.default.parentDataProperty}`),$.var(E.default.rootData,T._`${E.default.valCxt}.${E.default.rootData}`),Z.dynamicRef)$.var(E.default.dynamicAnchors,T._`${E.default.valCxt}.${E.default.dynamicAnchors}`)},()=>{if($.var(E.default.instancePath,T._`""`),$.var(E.default.parentData,T._`undefined`),$.var(E.default.parentDataProperty,T._`undefined`),$.var(E.default.rootData,E.default.data),Z.dynamicRef)$.var(E.default.dynamicAnchors,T._`{}`)})}function DU($){let{schema:Z,opts:Q,gen:Y}=$;AW($,()=>{if(Q.$comment&&Z.$comment)PW($);if(MU($),Y.let(E.default.vErrors,null),Y.let(E.default.errors,0),Q.unevaluated)UU($);jW($),PU($)});return}function UU($){let{gen:Z,validateName:Q}=$;$.evaluated=Z.const("evaluated",T._`${Q}.evaluated`),Z.if(T._`${$.evaluated}.dynamicProps`,()=>Z.assign(T._`${$.evaluated}.props`,T._`undefined`)),Z.if(T._`${$.evaluated}.dynamicItems`,()=>Z.assign(T._`${$.evaluated}.items`,T._`undefined`))}function LW($,Z){let Q=typeof $=="object"&&$[Z.schemaId];return Q&&(Z.code.source||Z.code.process)?T._`/*# sourceURL=${Q} */`:T.nil}function qU($,Z){if(MW($)){if(OW($),NW($)){AU($,Z);return}}(0,qW.boolOrEmptySchema)($,Z)}function NW({schema:$,self:Z}){if(typeof $=="boolean")return!$;for(let Q in $)if(Z.RULES.all[Q])return!0;return!1}function MW($){return typeof $.schema!="boolean"}function AU($,Z){let{schema:Q,gen:Y,opts:W}=$;if(W.$comment&&Q.$comment)PW($);OU($),jU($);let G=Y.const("_errs",E.default.errors);jW($,G),Y.var(Z,T._`${G} === ${E.default.errors}`)}function OW($){(0,e0.checkUnknownRules)($),NU($)}function jW($,Z){if($.opts.jtd)return DW($,[],!1,Z);let Q=(0,FW.getSchemaTypes)($.schema),Y=(0,FW.coerceAndCheckDataType)($,Q);DW($,Q,!Y,Z)}function NU($){let{schema:Z,errSchemaPath:Q,opts:Y,self:W}=$;if(Z.$ref&&Y.ignoreKeywordsWithRef&&(0,e0.schemaHasRulesButRef)(Z,W.RULES))W.logger.warn(`$ref: keywords ignored in schema at path "${Q}"`)}function MU($){let{schema:Z,opts:Q}=$;if(Z.default!==void 0&&Q.useDefaults&&Q.strictSchema)(0,e0.checkStrictMode)($,"default is ignored in the schema root")}function OU($){let Z=$.schema[$.opts.schemaId];if(Z)$.baseId=(0,VU.resolveUrl)($.opts.uriResolver,$.baseId,Z)}function jU($){if($.schema.$async&&!$.schemaEnv.$async)throw Error("async schema in sync schema")}function PW({gen:$,schemaEnv:Z,schema:Q,errSchemaPath:Y,opts:W}){let G=Q.$comment;if(W.$comment===!0)$.code(T._`${E.default.self}.logger.log(${G})`);else if(typeof W.$comment=="function"){let X=T.str`${Y}/$comment`,J=$.scopeValue("root",{ref:Z.root});$.code(T._`${E.default.self}.opts.$comment(${G}, ${X}, ${J}.schema)`)}}function PU($){let{gen:Z,schemaEnv:Q,validateName:Y,ValidationError:W,opts:G}=$;if(Q.$async)Z.if(T._`${E.default.errors} === 0`,()=>Z.return(E.default.data),()=>Z.throw(T._`new ${W}(${E.default.vErrors})`));else{if(Z.assign(T._`${Y}.errors`,E.default.vErrors),G.unevaluated)wU($);Z.return(T._`${E.default.errors} === 0`)}}function wU({gen:$,evaluated:Z,props:Q,items:Y}){if(Q instanceof T.Name)$.assign(T._`${Z}.props`,Q);if(Y instanceof T.Name)$.assign(T._`${Z}.items`,Y)}function DW($,Z,Q,Y){let{gen:W,schema:G,data:X,allErrors:J,opts:B,self:K}=$,{RULES:V}=K;if(G.$ref&&(B.ignoreKeywordsWithRef||!(0,e0.schemaHasRulesButRef)(G,V))){W.block(()=>TW($,"$ref",V.all.$ref.definition));return}if(!B.jtd)TU($,Z);W.block(()=>{for(let F of V.rules)z(F);z(V.post)});function z(F){if(!(0,S8.shouldUseGroup)(G,F))return;if(F.type){if(W.if((0,u5.checkDataType)(F.type,X,B.strictNumbers)),UW($,F),Z.length===1&&Z[0]===F.type&&Q)W.else(),(0,u5.reportTypeError)($);W.endIf()}else UW($,F);if(!J)W.if(T._`${E.default.errors} === ${Y||0}`)}}function UW($,Z){let{gen:Q,schema:Y,opts:{useDefaults:W}}=$;if(W)(0,HU.assignDefaults)($,Z.type);Q.block(()=>{for(let G of Z.rules)if((0,S8.shouldUseRule)(Y,G))TW($,G.keyword,G.definition,Z.type)})}function TU($,Z){if($.schemaEnv.meta||!$.opts.strictTypes)return;if(IU($,Z),!$.opts.allowUnionTypes)RU($,Z);EU($,$.dataTypes)}function IU($,Z){if(!Z.length)return;if(!$.dataTypes.length){$.dataTypes=Z;return}Z.forEach((Q)=>{if(!wW($.dataTypes,Q))C8($,`type "${Q}" not allowed by context "${$.dataTypes.join(",")}"`)}),CU($,Z)}function RU($,Z){if(Z.length>1&&!(Z.length===2&&Z.includes("null")))C8($,"use allowUnionTypes to allow union type keyword")}function EU($,Z){let Q=$.self.RULES.all;for(let Y in Q){let W=Q[Y];if(typeof W=="object"&&(0,S8.shouldUseRule)($.schema,W)){let{type:G}=W.definition;if(G.length&&!G.some((X)=>SU(Z,X)))C8($,`missing type "${G.join(",")}" for keyword "${Y}"`)}}}function SU($,Z){return $.includes(Z)||Z==="number"&&$.includes("integer")}function wW($,Z){return $.includes(Z)||Z==="integer"&&$.includes("number")}function CU($,Z){let Q=[];for(let Y of $.dataTypes)if(wW(Z,Y))Q.push(Y);else if(Z.includes("integer")&&Y==="number")Q.push("integer");$.dataTypes=Q}function C8($,Z){let Q=$.schemaEnv.baseId+$.errSchemaPath;Z+=` at "${Q}" (strictTypes)`,(0,e0.checkStrictMode)($,Z,$.opts.strictTypes)}class y8{constructor($,Z,Q){if((0,zZ.validateKeywordUsage)($,Z,Q),this.gen=$.gen,this.allErrors=$.allErrors,this.keyword=Q,this.data=$.data,this.schema=$.schema[Q],this.$data=Z.$data&&$.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,e0.schemaRefOrVal)($,this.schema,Q,this.$data),this.schemaType=Z.schemaType,this.parentSchema=$.schema,this.params={},this.it=$,this.def=Z,this.$data)this.schemaCode=$.gen.const("vSchema",IW(this.$data,$));else if(this.schemaCode=this.schemaValue,!(0,zZ.validSchemaType)(this.schema,Z.schemaType,Z.allowUndefined))throw Error(`${Q} value must be ${JSON.stringify(Z.schemaType)}`);if("code"in Z?Z.trackErrors:Z.errors!==!1)this.errsCount=$.gen.const("_errs",E.default.errors)}result($,Z,Q){this.failResult((0,T.not)($),Z,Q)}failResult($,Z,Q){if(this.gen.if($),Q)Q();else this.error();if(Z){if(this.gen.else(),Z(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass($,Z){this.failResult((0,T.not)($),void 0,Z)}fail($){if($===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if($),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data($){if(!this.$data)return this.fail($);let{schemaCode:Z}=this;this.fail(T._`${Z} !== undefined && (${(0,T.or)(this.invalid$data(),$)})`)}error($,Z,Q){if(Z){this.setParams(Z),this._error($,Q),this.setParams({});return}this._error($,Q)}_error($,Z){($?VZ.reportExtraError:VZ.reportError)(this,this.def.error,Z)}$dataError(){(0,VZ.reportError)(this,this.def.$dataError||VZ.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,VZ.resetErrorsCount)(this.gen,this.errsCount)}ok($){if(!this.allErrors)this.gen.if($)}setParams($,Z){if(Z)Object.assign(this.params,$);else this.params=$}block$data($,Z,Q=T.nil){this.gen.block(()=>{this.check$data($,Q),Z()})}check$data($=T.nil,Z=T.nil){if(!this.$data)return;let{gen:Q,schemaCode:Y,schemaType:W,def:G}=this;if(Q.if((0,T.or)(T._`${Y} === undefined`,Z)),$!==T.nil)Q.assign($,!0);if(W.length||G.validateSchema){if(Q.elseIf(this.invalid$data()),this.$dataError(),$!==T.nil)Q.assign($,!1)}Q.else()}invalid$data(){let{gen:$,schemaCode:Z,schemaType:Q,def:Y,it:W}=this;return(0,T.or)(G(),X());function G(){if(Q.length){if(!(Z instanceof T.Name))throw Error("ajv implementation error");let J=Array.isArray(Q)?Q:[Q];return T._`${(0,u5.checkDataTypes)(J,Z,W.opts.strictNumbers,u5.DataType.Wrong)}`}return T.nil}function X(){if(Y.validateSchema){let J=$.scopeValue("validate$data",{ref:Y.validateSchema});return T._`!${J}(${Z})`}return T.nil}}subschema($,Z){let Q=(0,E8.getSubschema)(this.it,$);(0,E8.extendSubschemaData)(Q,this.it,$),(0,E8.extendSubschemaMode)(Q,$);let Y={...this.it,...Q,items:void 0,props:void 0};return qU(Y,Z),Y}mergeEvaluated($,Z){let{it:Q,gen:Y}=this;if(!Q.opts.unevaluated)return;if(Q.props!==!0&&$.props!==void 0)Q.props=e0.mergeEvaluated.props(Y,$.props,Q.props,Z);if(Q.items!==!0&&$.items!==void 0)Q.items=e0.mergeEvaluated.items(Y,$.items,Q.items,Z)}mergeValidEvaluated($,Z){let{it:Q,gen:Y}=this;if(Q.opts.unevaluated&&(Q.props!==!0||Q.items!==!0))return Y.if(Z,()=>this.mergeEvaluated($,T.Name)),!0}}RW.KeywordCxt=y8;function TW($,Z,Q,Y){let W=new y8($,Q,Z);if("code"in Q)Q.code(W,Y);else if(W.$data&&Q.validate)(0,zZ.funcKeywordCode)(W,Q);else if("macro"in Q)(0,zZ.macroKeywordCode)(W,Q);else if(Q.compile||Q.validate)(0,zZ.funcKeywordCode)(W,Q)}var yU=/^\/(?:[^~]|~0|~1)*$/,bU=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function IW($,{dataLevel:Z,dataNames:Q,dataPathArr:Y}){let W,G;if($==="")return E.default.rootData;if($[0]==="/"){if(!yU.test($))throw Error(`Invalid JSON-pointer: ${$}`);W=$,G=E.default.rootData}else{let K=bU.exec($);if(!K)throw Error(`Invalid JSON-pointer: ${$}`);let V=+K[1];if(W=K[2],W==="#"){if(V>=Z)throw Error(B("property/index",V));return Y[Z-V]}if(V>Z)throw Error(B("data",V));if(G=Q[Z-V],!W)return G}let X=G,J=W.split("/");for(let K of J)if(K)G=T._`${G}${(0,T.getProperty)((0,e0.unescapeJsonPointer)(K))}`,X=T._`${X} && ${G}`;return X;function B(K,V){return`Cannot access ${K} ${V} levels up, current level is ${Z}`}}RW.getData=IW});var m5=O((CW)=>{Object.defineProperty(CW,"__esModule",{value:!0});class SW extends Error{constructor($){super("validation failed");this.errors=$,this.ajv=this.validation=!0}}CW.default=SW});var LZ=O((bW)=>{Object.defineProperty(bW,"__esModule",{value:!0});var b8=HZ();class yW extends Error{constructor($,Z,Q,Y){super(Y||`can't resolve reference ${Q} from id ${Z}`);this.missingRef=(0,b8.resolveUrl)($,Z,Q),this.missingSchema=(0,b8.normalizeId)((0,b8.getFullPath)($,this.missingRef))}}bW.default=yW});var p5=O((kW)=>{Object.defineProperty(kW,"__esModule",{value:!0});kW.resolveSchema=kW.getCompilingSchema=kW.resolveRef=kW.compileSchema=kW.SchemaEnv=void 0;var C0=b(),vU=m5(),h1=s0(),y0=HZ(),_W=k(),gU=FZ();class DZ{constructor($){var Z;this.refs={},this.dynamicAnchors={};let Q;if(typeof $.schema=="object")Q=$.schema;this.schema=$.schema,this.schemaId=$.schemaId,this.root=$.root||this,this.baseId=(Z=$.baseId)!==null&&Z!==void 0?Z:(0,y0.normalizeId)(Q===null||Q===void 0?void 0:Q[$.schemaId||"$id"]),this.schemaPath=$.schemaPath,this.localRefs=$.localRefs,this.meta=$.meta,this.$async=Q===null||Q===void 0?void 0:Q.$async,this.refs={}}}kW.SchemaEnv=DZ;function x8($){let Z=xW.call(this,$);if(Z)return Z;let Q=(0,y0.getFullPath)(this.opts.uriResolver,$.root.baseId),{es5:Y,lines:W}=this.opts.code,{ownProperties:G}=this.opts,X=new C0.CodeGen(this.scope,{es5:Y,lines:W,ownProperties:G}),J;if($.$async)J=X.scopeValue("Error",{ref:vU.default,code:C0._`require("ajv/dist/runtime/validation_error").default`});let B=X.scopeName("validate");$.validateName=B;let K={gen:X,allErrors:this.opts.allErrors,data:h1.default.data,parentData:h1.default.parentData,parentDataProperty:h1.default.parentDataProperty,dataNames:[h1.default.data],dataPathArr:[C0.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:X.scopeValue("schema",this.opts.code.source===!0?{ref:$.schema,code:(0,C0.stringify)($.schema)}:{ref:$.schema}),validateName:B,ValidationError:J,schema:$.schema,schemaEnv:$,rootId:Q,baseId:$.baseId||Q,schemaPath:C0.nil,errSchemaPath:$.schemaPath||(this.opts.jtd?"":"#"),errorPath:C0._`""`,opts:this.opts,self:this},V;try{this._compilations.add($),(0,gU.validateFunctionCode)(K),X.optimize(this.opts.code.optimize);let z=X.toString();if(V=`${X.scopeRefs(h1.default.scope)}return ${z}`,this.opts.code.process)V=this.opts.code.process(V,$);let D=Function(`${h1.default.self}`,`${h1.default.scope}`,V)(this,this.scope.get());if(this.scope.value(B,{ref:D}),D.errors=null,D.schema=$.schema,D.schemaEnv=$,$.$async)D.$async=!0;if(this.opts.code.source===!0)D.source={validateName:B,validateCode:z,scopeValues:X._values};if(this.opts.unevaluated){let{props:L,items:U}=K;if(D.evaluated={props:L instanceof C0.Name?void 0:L,items:U instanceof C0.Name?void 0:U,dynamicProps:L instanceof C0.Name,dynamicItems:U instanceof C0.Name},D.source)D.source.evaluated=(0,C0.stringify)(D.evaluated)}return $.validate=D,$}catch(z){if(delete $.validate,delete $.validateName,V)this.logger.error("Error compiling schema, function code:",V);throw z}finally{this._compilations.delete($)}}kW.compileSchema=x8;function hU($,Z,Q){var Y;Q=(0,y0.resolveUrl)(this.opts.uriResolver,Z,Q);let W=$.refs[Q];if(W)return W;let G=lU.call(this,$,Q);if(G===void 0){let X=(Y=$.localRefs)===null||Y===void 0?void 0:Y[Q],{schemaId:J}=this.opts;if(X)G=new DZ({schema:X,schemaId:J,root:$,baseId:Z})}if(G===void 0)return;return $.refs[Q]=uU.call(this,G)}kW.resolveRef=hU;function uU($){if((0,y0.inlineRef)($.schema,this.opts.inlineRefs))return $.schema;return $.validate?$:x8.call(this,$)}function xW($){for(let Z of this._compilations)if(mU(Z,$))return Z}kW.getCompilingSchema=xW;function mU($,Z){return $.schema===Z.schema&&$.root===Z.root&&$.baseId===Z.baseId}function lU($,Z){let Q;while(typeof(Q=this.refs[Z])=="string")Z=Q;return Q||this.schemas[Z]||l5.call(this,$,Z)}function l5($,Z){let Q=this.opts.uriResolver.parse(Z),Y=(0,y0._getFullPath)(this.opts.uriResolver,Q),W=(0,y0.getFullPath)(this.opts.uriResolver,$.baseId,void 0);if(Object.keys($.schema).length>0&&Y===W)return _8.call(this,Q,$);let G=(0,y0.normalizeId)(Y),X=this.refs[G]||this.schemas[G];if(typeof X=="string"){let J=l5.call(this,$,X);if(typeof(J===null||J===void 0?void 0:J.schema)!=="object")return;return _8.call(this,Q,J)}if(typeof(X===null||X===void 0?void 0:X.schema)!=="object")return;if(!X.validate)x8.call(this,X);if(G===(0,y0.normalizeId)(Z)){let{schema:J}=X,{schemaId:B}=this.opts,K=J[B];if(K)W=(0,y0.resolveUrl)(this.opts.uriResolver,W,K);return new DZ({schema:J,schemaId:B,root:$,baseId:W})}return _8.call(this,Q,X)}kW.resolveSchema=l5;var pU=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function _8($,{baseId:Z,schema:Q,root:Y}){var W;if(((W=$.fragment)===null||W===void 0?void 0:W[0])!=="/")return;for(let J of $.fragment.slice(1).split("/")){if(typeof Q==="boolean")return;let B=Q[(0,_W.unescapeFragment)(J)];if(B===void 0)return;Q=B;let K=typeof Q==="object"&&Q[this.opts.schemaId];if(!pU.has(J)&&K)Z=(0,y0.resolveUrl)(this.opts.uriResolver,Z,K)}let G;if(typeof Q!="boolean"&&Q.$ref&&!(0,_W.schemaHasRulesButRef)(Q,this.RULES)){let J=(0,y0.resolveUrl)(this.opts.uriResolver,Z,Q.$ref);G=l5.call(this,Y,J)}let{schemaId:X}=this.opts;if(G=G||new DZ({schema:Q,schemaId:X,root:Y,baseId:Z}),G.schema!==G.root.schema)return G;return}});var vW=O((z2,aU)=>{aU.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var v8=O((F2,pW)=>{var rU=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),hW=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),k8=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),uW=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),tU=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function f8($){let Z="",Q=0,Y=0;for(Y=0;Y<$.length;Y++){if(Q=$[Y].charCodeAt(0),Q===48)continue;if(!(Q>=48&&Q<=57||Q>=65&&Q<=70||Q>=97&&Q<=102))return"";Z+=$[Y];break}for(Y+=1;Y<$.length;Y++){if(Q=$[Y].charCodeAt(0),!(Q>=48&&Q<=57||Q>=65&&Q<=70||Q>=97&&Q<=102))return"";Z+=$[Y]}return Z}var oU=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function gW($){return $.length=0,!0}function sU($,Z,Q){if($.length){let Y=f8($);if(Y!=="")Z.push(Y);else return Q.error=!0,!1;$.length=0}return!0}function eU($){let Z=0,Q={error:!1,address:"",zone:""},Y=[],W=[],G=!1,X=!1,J=sU;for(let B=0;B<$.length;B++){let K=$[B];if(K==="["||K==="]")continue;if(K===":"){if(G===!0)X=!0;if(!J(W,Y,Q))break;if(++Z>7){Q.error=!0;break}if(B>0&&$[B-1]===":")G=!0;Y.push(":");continue}else if(K==="%"){if(!J(W,Y,Q))break;J=gW}else{W.push(K);continue}}if(W.length)if(J===gW)Q.zone=W.join("");else if(X)Y.push(W.join(""));else Y.push(f8(W));return Q.address=Y.join(""),Q}function mW($){if($q($,":")<2)return{host:$,isIPV6:!1};let Z=eU($);if(!Z.error){let{address:Q,address:Y}=Z;if(Z.zone)Q+="%"+Z.zone,Y+="%25"+Z.zone;return{host:Q,isIPV6:!0,escapedHost:Y}}else return{host:$,isIPV6:!1}}function $q($,Z){let Q=0;for(let Y=0;Y<$.length;Y++)if($[Y]===Z)Q++;return Q}function Zq($){let Z=$,Q=[],Y=-1,W=0;while(W=Z.length){if(W===1)if(Z===".")break;else if(Z==="/"){Q.push("/");break}else{Q.push(Z);break}else if(W===2){if(Z[0]==="."){if(Z[1]===".")break;else if(Z[1]==="/"){Z=Z.slice(2);continue}}else if(Z[0]==="/"){if(Z[1]==="."||Z[1]==="/"){Q.push("/");break}}}else if(W===3){if(Z==="/.."){if(Q.length!==0)Q.pop();Q.push("/");break}}if(Z[0]==="."){if(Z[1]==="."){if(Z[2]==="/"){Z=Z.slice(3);continue}}else if(Z[1]==="/"){Z=Z.slice(2);continue}}else if(Z[0]==="/"){if(Z[1]==="."){if(Z[2]==="/"){Z=Z.slice(2);continue}else if(Z[2]==="."){if(Z[3]==="/"){if(Z=Z.slice(3),Q.length!==0)Q.pop();continue}}}}if((Y=Z.indexOf("/",1))===-1){Q.push(Z);break}else Q.push(Z.slice(0,Y)),Z=Z.slice(Y)}return Q.join("")}var Qq={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},Yq=/[@/?#:]/g,Wq=/[@/?#]/g;function lW($,Z){let Q=Z?Wq:Yq;return Q.lastIndex=0,$.replace(Q,(Y)=>Qq[Y])}function Gq($,Z=!1){if($.indexOf("%")===-1)return $;let Q="";for(let Y=0;Y<$.length;Y++){if($[Y]==="%"&&Y+2<$.length){let W=$.slice(Y+1,Y+3);if(k8(W)){let G=W.toUpperCase(),X=String.fromCharCode(parseInt(G,16));if(Z&&uW(X))Q+=X;else Q+="%"+G;Y+=2;continue}}Q+=$[Y]}return Q}function Xq($){let Z="";for(let Q=0;Q<$.length;Q++){if($[Q]==="%"&&Q+2<$.length){let Y=$.slice(Q+1,Q+3);if(k8(Y)){let W=Y.toUpperCase(),G=String.fromCharCode(parseInt(W,16));if(G!=="."&&uW(G))Z+=G;else Z+="%"+W;Q+=2;continue}}if(tU($[Q]))Z+=$[Q];else Z+=escape($[Q])}return Z}function Jq($){let Z="";for(let Q=0;Q<$.length;Q++){if($[Q]==="%"&&Q+2<$.length){let Y=$.slice(Q+1,Q+3);if(k8(Y)){Z+="%"+Y.toUpperCase(),Q+=2;continue}}Z+=escape($[Q])}return Z}function Kq($){let Z=[];if($.userinfo!==void 0)Z.push($.userinfo),Z.push("@");if($.host!==void 0){let Q=unescape($.host);if(!hW(Q)){let Y=mW(Q);if(Y.isIPV6===!0)Q=`[${Y.escapedHost}]`;else Q=lW(Q,!1)}Z.push(Q)}if(typeof $.port==="number"||typeof $.port==="string")Z.push(":"),Z.push(String($.port));return Z.length?Z.join(""):void 0}pW.exports={nonSimpleDomain:oU,recomposeAuthority:Kq,reescapeHostDelimiters:lW,normalizePercentEncoding:Gq,normalizePathEncoding:Xq,escapePreservingEscapes:Jq,removeDotSegments:Zq,isIPv4:hW,isUUID:rU,normalizeIPv6:mW,stringArrayToHexStripped:f8}});var aW=O((L2,nW)=>{var{isUUID:Bq}=v8(),Hq=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,Vq=["http","https","ws","wss","urn","urn:uuid"];function zq($){return Vq.indexOf($)!==-1}function g8($){if($.secure===!0)return!0;else if($.secure===!1)return!1;else if($.scheme)return $.scheme.length===3&&($.scheme[0]==="w"||$.scheme[0]==="W")&&($.scheme[1]==="s"||$.scheme[1]==="S")&&($.scheme[2]==="s"||$.scheme[2]==="S");else return!1}function cW($){if(!$.host)$.error=$.error||"HTTP URIs must have a host.";return $}function dW($){let Z=String($.scheme).toLowerCase()==="https";if($.port===(Z?443:80)||$.port==="")$.port=void 0;if(!$.path)$.path="/";return $}function Fq($){return $.secure=g8($),$.resourceName=($.path||"/")+($.query?"?"+$.query:""),$.path=void 0,$.query=void 0,$}function Lq($){if($.port===(g8($)?443:80)||$.port==="")$.port=void 0;if(typeof $.secure==="boolean")$.scheme=$.secure?"wss":"ws",$.secure=void 0;if($.resourceName){let[Z,Q]=$.resourceName.split("?");$.path=Z&&Z!=="/"?Z:void 0,$.query=Q,$.resourceName=void 0}return $.fragment=void 0,$}function Dq($,Z){if(!$.path)return $.error="URN can not be parsed",$;let Q=$.path.match(Hq);if(Q){let Y=Z.scheme||$.scheme||"urn";$.nid=Q[1].toLowerCase(),$.nss=Q[2];let W=`${Y}:${Z.nid||$.nid}`,G=h8(W);if($.path=void 0,G)$=G.parse($,Z)}else $.error=$.error||"URN can not be parsed.";return $}function Uq($,Z){if($.nid===void 0)throw Error("URN without nid cannot be serialized");let Q=Z.scheme||$.scheme||"urn",Y=$.nid.toLowerCase(),W=`${Q}:${Z.nid||Y}`,G=h8(W);if(G)$=G.serialize($,Z);let X=$,J=$.nss;return X.path=`${Y||Z.nid}:${J}`,Z.skipEscape=!0,X}function qq($,Z){let Q=$;if(Q.uuid=Q.nss,Q.nss=void 0,!Z.tolerant&&(!Q.uuid||!Bq(Q.uuid)))Q.error=Q.error||"UUID is not valid.";return Q}function Aq($){let Z=$;return Z.nss=($.uuid||"").toLowerCase(),Z}var iW={scheme:"http",domainHost:!0,parse:cW,serialize:dW},Nq={scheme:"https",domainHost:iW.domainHost,parse:cW,serialize:dW},c5={scheme:"ws",domainHost:!0,parse:Fq,serialize:Lq},Mq={scheme:"wss",domainHost:c5.domainHost,parse:c5.parse,serialize:c5.serialize},Oq={scheme:"urn",parse:Dq,serialize:Uq,skipNormalize:!0},jq={scheme:"urn:uuid",parse:qq,serialize:Aq,skipNormalize:!0},d5={http:iW,https:Nq,ws:c5,wss:Mq,urn:Oq,"urn:uuid":jq};Object.setPrototypeOf(d5,null);function h8($){return $&&(d5[$]||d5[$.toLowerCase()])||void 0}nW.exports={wsIsSecure:g8,SCHEMES:d5,isValidSchemeName:zq,getSchemeHandler:h8}});var $G=O((D2,i5)=>{var{normalizeIPv6:Pq,removeDotSegments:UZ,recomposeAuthority:wq,normalizePercentEncoding:Tq,normalizePathEncoding:Iq,escapePreservingEscapes:Rq,reescapeHostDelimiters:Eq,isIPv4:Sq,nonSimpleDomain:Cq}=v8(),{SCHEMES:yq,getSchemeHandler:tW}=aW();function bq($,Z){if(typeof $==="string")$=gq($,Z);else if(typeof $==="object")$=L$(u1($,Z),Z);return $}function _q($,Z,Q){let Y=Q?Object.assign({scheme:"null"},Q):{scheme:"null"},W=oW(L$($,Y),L$(Z,Y),Y,!0);return Y.skipEscape=!0,u1(W,Y)}function oW($,Z,Q,Y){let W={};if(!Y)$=L$(u1($,Q),Q),Z=L$(u1(Z,Q),Q);if(Q=Q||{},!Q.tolerant&&Z.scheme)W.scheme=Z.scheme,W.userinfo=Z.userinfo,W.host=Z.host,W.port=Z.port,W.path=UZ(Z.path||""),W.query=Z.query;else{if(Z.userinfo!==void 0||Z.host!==void 0||Z.port!==void 0)W.userinfo=Z.userinfo,W.host=Z.host,W.port=Z.port,W.path=UZ(Z.path||""),W.query=Z.query;else{if(!Z.path)if(W.path=$.path,Z.query!==void 0)W.query=Z.query;else W.query=$.query;else{if(Z.path[0]==="/")W.path=UZ(Z.path);else{if(($.userinfo!==void 0||$.host!==void 0||$.port!==void 0)&&!$.path)W.path="/"+Z.path;else if(!$.path)W.path=Z.path;else W.path=$.path.slice(0,$.path.lastIndexOf("/")+1)+Z.path;W.path=UZ(W.path)}W.query=Z.query}W.userinfo=$.userinfo,W.host=$.host,W.port=$.port}W.scheme=$.scheme}return W.fragment=Z.fragment,W}function xq($,Z,Q){let Y=rW($,Q),W=rW(Z,Q);return Y!==void 0&&W!==void 0&&Y.toLowerCase()===W.toLowerCase()}function u1($,Z){let Q={host:$.host,scheme:$.scheme,userinfo:$.userinfo,port:$.port,path:$.path,query:$.query,nid:$.nid,nss:$.nss,uuid:$.uuid,fragment:$.fragment,reference:$.reference,resourceName:$.resourceName,secure:$.secure,error:""},Y=Object.assign({},Z),W=[],G=tW(Y.scheme||Q.scheme);if(G&&G.serialize)G.serialize(Q,Y);if(Q.path!==void 0)if(!Y.skipEscape){if(Q.path=Rq(Q.path),Q.scheme!==void 0)Q.path=Q.path.split("%3A").join(":")}else Q.path=Tq(Q.path);if(Y.reference!=="suffix"&&Q.scheme)W.push(Q.scheme,":");let X=wq(Q);if(X!==void 0){if(Y.reference!=="suffix")W.push("//");if(W.push(X),Q.path&&Q.path[0]!=="/")W.push("/")}if(Q.path!==void 0){let J=Q.path;if(!Y.absolutePath&&(!G||!G.absolutePath))J=UZ(J);if(X===void 0&&J[0]==="/"&&J[1]==="/")J="/%2F"+J.slice(2);W.push(J)}if(Q.query!==void 0)W.push("?",Q.query);if(Q.fragment!==void 0)W.push("#",Q.fragment);return W.join("")}var kq=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,fq=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/;function vq($,Z){if(Z[2]!==void 0&&$.path&&$.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof $.port==="number"&&($.port<0||$.port>65535))return"URI port is malformed.";return}function sW($,Z){let Q=Object.assign({},Z),Y={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},W=!1,G=!1;if(Q.reference==="suffix")if(Q.scheme)$=Q.scheme+":"+$;else $="//"+$;let X=$.match(fq);if(X!==null&&X[1].indexOf("\\")!==-1)Y.error="URI authority must not contain a literal backslash.",W=!0;let J=$.match(kq);if(J){if(Y.scheme=J[1],Y.userinfo=J[3],Y.host=J[4],Y.port=parseInt(J[5],10),Y.path=J[6]||"",Y.query=J[7],Y.fragment=J[8],isNaN(Y.port))Y.port=J[5];let B=vq(Y,J);if(B!==void 0)Y.error=Y.error||B,W=!0;if(Y.host)if(Sq(Y.host)===!1){let z=Pq(Y.host);Y.host=z.host.toLowerCase(),G=z.isIPV6}else G=!0;if(Y.scheme===void 0&&Y.userinfo===void 0&&Y.host===void 0&&Y.port===void 0&&Y.query===void 0&&!Y.path)Y.reference="same-document";else if(Y.scheme===void 0)Y.reference="relative";else if(Y.fragment===void 0)Y.reference="absolute";else Y.reference="uri";if(Q.reference&&Q.reference!=="suffix"&&Q.reference!==Y.reference)Y.error=Y.error||"URI is not a "+Q.reference+" reference.";let K=tW(Q.scheme||Y.scheme);if(!Q.unicodeSupport&&(!K||!K.unicodeSupport)){if(Y.host&&(Q.domainHost||K&&K.domainHost)&&G===!1&&Cq(Y.host))try{Y.host=new URL("http://"+Y.host).hostname}catch(V){Y.error=Y.error||"Host's domain name can not be converted to ASCII: "+V}}if(!K||K&&!K.skipNormalize){if($.indexOf("%")!==-1){if(Y.scheme!==void 0)Y.scheme=unescape(Y.scheme);if(Y.host!==void 0)Y.host=Eq(unescape(Y.host),G)}if(Y.path)Y.path=Iq(Y.path);if(Y.fragment)try{Y.fragment=encodeURI(decodeURIComponent(Y.fragment))}catch{Y.error=Y.error||"URI malformed"}}if(K&&K.parse)K.parse(Y,Q)}else Y.error=Y.error||"URI can not be parsed.";return{parsed:Y,malformedAuthorityOrPort:W}}function L$($,Z){return sW($,Z).parsed}function gq($,Z){return eW($,Z).normalized}function eW($,Z){let{parsed:Q,malformedAuthorityOrPort:Y}=sW($,Z);return{normalized:Y?$:u1(Q,Z),malformedAuthorityOrPort:Y}}function rW($,Z){if(typeof $==="string"){let{normalized:Q,malformedAuthorityOrPort:Y}=eW($,Z);return Y?void 0:Q}if(typeof $==="object")return u1($,Z)}var u8={SCHEMES:yq,normalize:bq,resolve:_q,resolveComponent:oW,equal:xq,serialize:u1,parse:L$};i5.exports=u8;i5.exports.default=u8;i5.exports.fastUri=u8});var YG=O((QG)=>{Object.defineProperty(QG,"__esModule",{value:!0});var ZG=$G();ZG.code='require("ajv/dist/runtime/uri").default';QG.default=ZG});var VG=O(($1)=>{Object.defineProperty($1,"__esModule",{value:!0});$1.CodeGen=$1.Name=$1.nil=$1.stringify=$1.str=$1._=$1.KeywordCxt=void 0;var uq=FZ();Object.defineProperty($1,"KeywordCxt",{enumerable:!0,get:function(){return uq.KeywordCxt}});var D$=b();Object.defineProperty($1,"_",{enumerable:!0,get:function(){return D$._}});Object.defineProperty($1,"str",{enumerable:!0,get:function(){return D$.str}});Object.defineProperty($1,"stringify",{enumerable:!0,get:function(){return D$.stringify}});Object.defineProperty($1,"nil",{enumerable:!0,get:function(){return D$.nil}});Object.defineProperty($1,"Name",{enumerable:!0,get:function(){return D$.Name}});Object.defineProperty($1,"CodeGen",{enumerable:!0,get:function(){return D$.CodeGen}});var mq=m5(),KG=LZ(),lq=A8(),qZ=p5(),pq=b(),AZ=HZ(),n5=BZ(),l8=k(),WG=vW(),cq=YG(),BG=($,Z)=>new RegExp($,Z);BG.code="new RegExp";var dq=["removeAdditional","useDefaults","coerceTypes"],iq=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),nq={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},aq={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},GG=200;function rq($){var Z,Q,Y,W,G,X,J,B,K,V,z,F,D,L,U,q,A,N,j,P,M,S,g,n,w;let _=$.strict,t=(Z=$.code)===null||Z===void 0?void 0:Z.optimize,h=t===!0||t===void 0?1:t||0,r=(Y=(Q=$.code)===null||Q===void 0?void 0:Q.regExp)!==null&&Y!==void 0?Y:BG,xZ=(W=$.uriResolver)!==null&&W!==void 0?W:cq.default;return{strictSchema:(X=(G=$.strictSchema)!==null&&G!==void 0?G:_)!==null&&X!==void 0?X:!0,strictNumbers:(B=(J=$.strictNumbers)!==null&&J!==void 0?J:_)!==null&&B!==void 0?B:!0,strictTypes:(V=(K=$.strictTypes)!==null&&K!==void 0?K:_)!==null&&V!==void 0?V:"log",strictTuples:(F=(z=$.strictTuples)!==null&&z!==void 0?z:_)!==null&&F!==void 0?F:"log",strictRequired:(L=(D=$.strictRequired)!==null&&D!==void 0?D:_)!==null&&L!==void 0?L:!1,code:$.code?{...$.code,optimize:h,regExp:r}:{optimize:h,regExp:r},loopRequired:(U=$.loopRequired)!==null&&U!==void 0?U:GG,loopEnum:(q=$.loopEnum)!==null&&q!==void 0?q:GG,meta:(A=$.meta)!==null&&A!==void 0?A:!0,messages:(N=$.messages)!==null&&N!==void 0?N:!0,inlineRefs:(j=$.inlineRefs)!==null&&j!==void 0?j:!0,schemaId:(P=$.schemaId)!==null&&P!==void 0?P:"$id",addUsedSchema:(M=$.addUsedSchema)!==null&&M!==void 0?M:!0,validateSchema:(S=$.validateSchema)!==null&&S!==void 0?S:!0,validateFormats:(g=$.validateFormats)!==null&&g!==void 0?g:!0,unicodeRegExp:(n=$.unicodeRegExp)!==null&&n!==void 0?n:!0,int32range:(w=$.int32range)!==null&&w!==void 0?w:!0,uriResolver:xZ}}class a5{constructor($={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,$=this.opts={...$,...rq($)};let{es5:Z,lines:Q}=this.opts.code;this.scope=new pq.ValueScope({scope:{},prefixes:iq,es5:Z,lines:Q}),this.logger=ZA($.logger);let Y=$.validateFormats;if($.validateFormats=!1,this.RULES=(0,lq.getRules)(),XG.call(this,nq,$,"NOT SUPPORTED"),XG.call(this,aq,$,"DEPRECATED","warn"),this._metaOpts=eq.call(this),$.formats)oq.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),$.keywords)sq.call(this,$.keywords);if(typeof $.meta=="object")this.addMetaSchema($.meta);tq.call(this),$.validateFormats=Y}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:$,meta:Z,schemaId:Q}=this.opts,Y=WG;if(Q==="id")Y={...WG},Y.id=Y.$id,delete Y.$id;if(Z&&$)this.addMetaSchema(Y,Y[Q],!1)}defaultMeta(){let{meta:$,schemaId:Z}=this.opts;return this.opts.defaultMeta=typeof $=="object"?$[Z]||$:void 0}validate($,Z){let Q;if(typeof $=="string"){if(Q=this.getSchema($),!Q)throw Error(`no schema with key or ref "${$}"`)}else Q=this.compile($);let Y=Q(Z);if(!("$async"in Q))this.errors=Q.errors;return Y}compile($,Z){let Q=this._addSchema($,Z);return Q.validate||this._compileSchemaEnv(Q)}compileAsync($,Z){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:Q}=this.opts;return Y.call(this,$,Z);async function Y(K,V){await W.call(this,K.$schema);let z=this._addSchema(K,V);return z.validate||G.call(this,z)}async function W(K){if(K&&!this.getSchema(K))await Y.call(this,{$ref:K},!0)}async function G(K){try{return this._compileSchemaEnv(K)}catch(V){if(!(V instanceof KG.default))throw V;return X.call(this,V),await J.call(this,V.missingSchema),G.call(this,K)}}function X({missingSchema:K,missingRef:V}){if(this.refs[K])throw Error(`AnySchema ${K} is loaded but ${V} cannot be resolved`)}async function J(K){let V=await B.call(this,K);if(!this.refs[K])await W.call(this,V.$schema);if(!this.refs[K])this.addSchema(V,K,Z)}async function B(K){let V=this._loading[K];if(V)return V;try{return await(this._loading[K]=Q(K))}finally{delete this._loading[K]}}}addSchema($,Z,Q,Y=this.opts.validateSchema){if(Array.isArray($)){for(let G of $)this.addSchema(G,void 0,Q,Y);return this}let W;if(typeof $==="object"){let{schemaId:G}=this.opts;if(W=$[G],W!==void 0&&typeof W!="string")throw Error(`schema ${G} must be string`)}return Z=(0,AZ.normalizeId)(Z||W),this._checkUnique(Z),this.schemas[Z]=this._addSchema($,Q,Z,Y,!0),this}addMetaSchema($,Z,Q=this.opts.validateSchema){return this.addSchema($,Z,!0,Q),this}validateSchema($,Z){if(typeof $=="boolean")return!0;let Q;if(Q=$.$schema,Q!==void 0&&typeof Q!="string")throw Error("$schema must be a string");if(Q=Q||this.opts.defaultMeta||this.defaultMeta(),!Q)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let Y=this.validate(Q,$);if(!Y&&Z){let W="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(W);else throw Error(W)}return Y}getSchema($){let Z;while(typeof(Z=JG.call(this,$))=="string")$=Z;if(Z===void 0){let{schemaId:Q}=this.opts,Y=new qZ.SchemaEnv({schema:{},schemaId:Q});if(Z=qZ.resolveSchema.call(this,Y,$),!Z)return;this.refs[$]=Z}return Z.validate||this._compileSchemaEnv(Z)}removeSchema($){if($ instanceof RegExp)return this._removeAllSchemas(this.schemas,$),this._removeAllSchemas(this.refs,$),this;switch(typeof $){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let Z=JG.call(this,$);if(typeof Z=="object")this._cache.delete(Z.schema);return delete this.schemas[$],delete this.refs[$],this}case"object":{let Z=$;this._cache.delete(Z);let Q=$[this.opts.schemaId];if(Q)Q=(0,AZ.normalizeId)(Q),delete this.schemas[Q],delete this.refs[Q];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary($){for(let Z of $)this.addKeyword(Z);return this}addKeyword($,Z){let Q;if(typeof $=="string"){if(Q=$,typeof Z=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),Z.keyword=Q}else if(typeof $=="object"&&Z===void 0){if(Z=$,Q=Z.keyword,Array.isArray(Q)&&!Q.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(YA.call(this,Q,Z),!Z)return(0,l8.eachItem)(Q,(W)=>m8.call(this,W)),this;GA.call(this,Z);let Y={...Z,type:(0,n5.getJSONTypes)(Z.type),schemaType:(0,n5.getJSONTypes)(Z.schemaType)};return(0,l8.eachItem)(Q,Y.type.length===0?(W)=>m8.call(this,W,Y):(W)=>Y.type.forEach((G)=>m8.call(this,W,Y,G))),this}getKeyword($){let Z=this.RULES.all[$];return typeof Z=="object"?Z.definition:!!Z}removeKeyword($){let{RULES:Z}=this;delete Z.keywords[$],delete Z.all[$];for(let Q of Z.rules){let Y=Q.rules.findIndex((W)=>W.keyword===$);if(Y>=0)Q.rules.splice(Y,1)}return this}addFormat($,Z){if(typeof Z=="string")Z=new RegExp(Z);return this.formats[$]=Z,this}errorsText($=this.errors,{separator:Z=", ",dataVar:Q="data"}={}){if(!$||$.length===0)return"No errors";return $.map((Y)=>`${Q}${Y.instancePath} ${Y.message}`).reduce((Y,W)=>Y+Z+W)}$dataMetaSchema($,Z){let Q=this.RULES.all;$=JSON.parse(JSON.stringify($));for(let Y of Z){let W=Y.split("/").slice(1),G=$;for(let X of W)G=G[X];for(let X in Q){let J=Q[X];if(typeof J!="object")continue;let{$data:B}=J.definition,K=G[X];if(B&&K)G[X]=HG(K)}}return $}_removeAllSchemas($,Z){for(let Q in $){let Y=$[Q];if(!Z||Z.test(Q)){if(typeof Y=="string")delete $[Q];else if(Y&&!Y.meta)this._cache.delete(Y.schema),delete $[Q]}}}_addSchema($,Z,Q,Y=this.opts.validateSchema,W=this.opts.addUsedSchema){let G,{schemaId:X}=this.opts;if(typeof $=="object")G=$[X];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof $!="boolean")throw Error("schema must be object or boolean");let J=this._cache.get($);if(J!==void 0)return J;Q=(0,AZ.normalizeId)(G||Q);let B=AZ.getSchemaRefs.call(this,$,Q);if(J=new qZ.SchemaEnv({schema:$,schemaId:X,meta:Z,baseId:Q,localRefs:B}),this._cache.set(J.schema,J),W&&!Q.startsWith("#")){if(Q)this._checkUnique(Q);this.refs[Q]=J}if(Y)this.validateSchema($,!0);return J}_checkUnique($){if(this.schemas[$]||this.refs[$])throw Error(`schema with key or id "${$}" already exists`)}_compileSchemaEnv($){if($.meta)this._compileMetaSchema($);else qZ.compileSchema.call(this,$);if(!$.validate)throw Error("ajv implementation error");return $.validate}_compileMetaSchema($){let Z=this.opts;this.opts=this._metaOpts;try{qZ.compileSchema.call(this,$)}finally{this.opts=Z}}}a5.ValidationError=mq.default;a5.MissingRefError=KG.default;$1.default=a5;function XG($,Z,Q,Y="error"){for(let W in $){let G=W;if(G in Z)this.logger[Y](`${Q}: option ${W}. ${$[G]}`)}}function JG($){return $=(0,AZ.normalizeId)($),this.schemas[$]||this.refs[$]}function tq(){let $=this.opts.schemas;if(!$)return;if(Array.isArray($))this.addSchema($);else for(let Z in $)this.addSchema($[Z],Z)}function oq(){for(let $ in this.opts.formats){let Z=this.opts.formats[$];if(Z)this.addFormat($,Z)}}function sq($){if(Array.isArray($)){this.addVocabulary($);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let Z in $){let Q=$[Z];if(!Q.keyword)Q.keyword=Z;this.addKeyword(Q)}}function eq(){let $={...this.opts};for(let Z of dq)delete $[Z];return $}var $A={log(){},warn(){},error(){}};function ZA($){if($===!1)return $A;if($===void 0)return console;if($.log&&$.warn&&$.error)return $;throw Error("logger must implement log, warn and error methods")}var QA=/^[a-z_$][a-z0-9_$:-]*$/i;function YA($,Z){let{RULES:Q}=this;if((0,l8.eachItem)($,(Y)=>{if(Q.keywords[Y])throw Error(`Keyword ${Y} is already defined`);if(!QA.test(Y))throw Error(`Keyword ${Y} has invalid name`)}),!Z)return;if(Z.$data&&!(("code"in Z)||("validate"in Z)))throw Error('$data keyword must have "code" or "validate" function')}function m8($,Z,Q){var Y;let W=Z===null||Z===void 0?void 0:Z.post;if(Q&&W)throw Error('keyword with "post" flag cannot have "type"');let{RULES:G}=this,X=W?G.post:G.rules.find(({type:B})=>B===Q);if(!X)X={type:Q,rules:[]},G.rules.push(X);if(G.keywords[$]=!0,!Z)return;let J={keyword:$,definition:{...Z,type:(0,n5.getJSONTypes)(Z.type),schemaType:(0,n5.getJSONTypes)(Z.schemaType)}};if(Z.before)WA.call(this,X,J,Z.before);else X.rules.push(J);G.all[$]=J,(Y=Z.implements)===null||Y===void 0||Y.forEach((B)=>this.addKeyword(B))}function WA($,Z,Q){let Y=$.rules.findIndex((W)=>W.keyword===Q);if(Y>=0)$.rules.splice(Y,0,Z);else $.rules.push(Z),this.logger.warn(`rule ${Q} is not defined`)}function GA($){let{metaSchema:Z}=$;if(Z===void 0)return;if($.$data&&this.opts.$data)Z=HG(Z);$.validateSchema=this.compile(Z,!0)}var XA={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function HG($){return{anyOf:[$,XA]}}});var FG=O((zG)=>{Object.defineProperty(zG,"__esModule",{value:!0});var BA={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};zG.default=BA});var NG=O((qG)=>{Object.defineProperty(qG,"__esModule",{value:!0});qG.callRef=qG.getValidate=void 0;var VA=LZ(),LG=P0(),L0=b(),U$=s0(),DG=p5(),r5=k(),zA={keyword:"$ref",schemaType:"string",code($){let{gen:Z,schema:Q,it:Y}=$,{baseId:W,schemaEnv:G,validateName:X,opts:J,self:B}=Y,{root:K}=G;if((Q==="#"||Q==="#/")&&W===K.baseId)return z();let V=DG.resolveRef.call(B,K,W,Q);if(V===void 0)throw new VA.default(Y.opts.uriResolver,W,Q);if(V instanceof DG.SchemaEnv)return F(V);return D(V);function z(){if(G===K)return t5($,X,G,G.$async);let L=Z.scopeValue("root",{ref:K});return t5($,L0._`${L}.validate`,K,K.$async)}function F(L){let U=UG($,L);t5($,U,L,L.$async)}function D(L){let U=Z.scopeValue("schema",J.code.source===!0?{ref:L,code:(0,L0.stringify)(L)}:{ref:L}),q=Z.name("valid"),A=$.subschema({schema:L,dataTypes:[],schemaPath:L0.nil,topSchemaRef:U,errSchemaPath:Q},q);$.mergeEvaluated(A),$.ok(q)}}};function UG($,Z){let{gen:Q}=$;return Z.validate?Q.scopeValue("validate",{ref:Z.validate}):L0._`${Q.scopeValue("wrapper",{ref:Z})}.validate`}qG.getValidate=UG;function t5($,Z,Q,Y){let{gen:W,it:G}=$,{allErrors:X,schemaEnv:J,opts:B}=G,K=B.passContext?U$.default.this:L0.nil;if(Y)V();else z();function V(){if(!J.$async)throw Error("async schema referenced by sync schema");let L=W.let("valid");W.try(()=>{if(W.code(L0._`await ${(0,LG.callValidateCode)($,Z,K)}`),D(Z),!X)W.assign(L,!0)},(U)=>{if(W.if(L0._`!(${U} instanceof ${G.ValidationError})`,()=>W.throw(U)),F(U),!X)W.assign(L,!1)}),$.ok(L)}function z(){$.result((0,LG.callValidateCode)($,Z,K),()=>D(Z),()=>F(Z))}function F(L){let U=L0._`${L}.errors`;W.assign(U$.default.vErrors,L0._`${U$.default.vErrors} === null ? ${U} : ${U$.default.vErrors}.concat(${U})`),W.assign(U$.default.errors,L0._`${U$.default.vErrors}.length`)}function D(L){var U;if(!G.opts.unevaluated)return;let q=(U=Q===null||Q===void 0?void 0:Q.validate)===null||U===void 0?void 0:U.evaluated;if(G.props!==!0)if(q&&!q.dynamicProps){if(q.props!==void 0)G.props=r5.mergeEvaluated.props(W,q.props,G.props)}else{let A=W.var("props",L0._`${L}.evaluated.props`);G.props=r5.mergeEvaluated.props(W,A,G.props,L0.Name)}if(G.items!==!0)if(q&&!q.dynamicItems){if(q.items!==void 0)G.items=r5.mergeEvaluated.items(W,q.items,G.items)}else{let A=W.var("items",L0._`${L}.evaluated.items`);G.items=r5.mergeEvaluated.items(W,A,G.items,L0.Name)}}}qG.callRef=t5;qG.default=zA});var OG=O((MG)=>{Object.defineProperty(MG,"__esModule",{value:!0});var DA=FG(),UA=NG(),qA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",DA.default,UA.default];MG.default=qA});var PG=O((jG)=>{Object.defineProperty(jG,"__esModule",{value:!0});var o5=b(),O1=o5.operators,s5={maximum:{okStr:"<=",ok:O1.LTE,fail:O1.GT},minimum:{okStr:">=",ok:O1.GTE,fail:O1.LT},exclusiveMaximum:{okStr:"<",ok:O1.LT,fail:O1.GTE},exclusiveMinimum:{okStr:">",ok:O1.GT,fail:O1.LTE}},NA={message:({keyword:$,schemaCode:Z})=>o5.str`must be ${s5[$].okStr} ${Z}`,params:({keyword:$,schemaCode:Z})=>o5._`{comparison: ${s5[$].okStr}, limit: ${Z}}`},MA={keyword:Object.keys(s5),type:"number",schemaType:"number",$data:!0,error:NA,code($){let{keyword:Z,data:Q,schemaCode:Y}=$;$.fail$data(o5._`${Q} ${s5[Z].fail} ${Y} || isNaN(${Q})`)}};jG.default=MA});var TG=O((wG)=>{Object.defineProperty(wG,"__esModule",{value:!0});var NZ=b(),jA={message:({schemaCode:$})=>NZ.str`must be multiple of ${$}`,params:({schemaCode:$})=>NZ._`{multipleOf: ${$}}`},PA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:jA,code($){let{gen:Z,data:Q,schemaCode:Y,it:W}=$,G=W.opts.multipleOfPrecision,X=Z.let("res"),J=G?NZ._`Math.abs(Math.round(${X}) - ${X}) > 1e-${G}`:NZ._`${X} !== parseInt(${X})`;$.fail$data(NZ._`(${Y} === 0 || (${X} = ${Q}/${Y}, ${J}))`)}};wG.default=PA});var EG=O((RG)=>{Object.defineProperty(RG,"__esModule",{value:!0});function IG($){let Z=$.length,Q=0,Y=0,W;while(Y<Z)if(Q++,W=$.charCodeAt(Y++),W>=55296&&W<=56319&&Y<Z){if(W=$.charCodeAt(Y),(W&64512)===56320)Y++}return Q}RG.default=IG;IG.code='require("ajv/dist/runtime/ucs2length").default'});var CG=O((SG)=>{Object.defineProperty(SG,"__esModule",{value:!0});var m1=b(),IA=k(),RA=EG(),EA={message({keyword:$,schemaCode:Z}){let Q=$==="maxLength"?"more":"fewer";return m1.str`must NOT have ${Q} than ${Z} characters`},params:({schemaCode:$})=>m1._`{limit: ${$}}`},SA={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:EA,code($){let{keyword:Z,data:Q,schemaCode:Y,it:W}=$,G=Z==="maxLength"?m1.operators.GT:m1.operators.LT,X=W.opts.unicode===!1?m1._`${Q}.length`:m1._`${(0,IA.useFunc)($.gen,RA.default)}(${Q})`;$.fail$data(m1._`${X} ${G} ${Y}`)}};SG.default=SA});var bG=O((yG)=>{Object.defineProperty(yG,"__esModule",{value:!0});var yA=P0(),bA=k(),q$=b(),_A={message:({schemaCode:$})=>q$.str`must match pattern "${$}"`,params:({schemaCode:$})=>q$._`{pattern: ${$}}`},xA={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:_A,code($){let{gen:Z,data:Q,$data:Y,schema:W,schemaCode:G,it:X}=$,J=X.opts.unicodeRegExp?"u":"";if(Y){let{regExp:B}=X.opts.code,K=B.code==="new RegExp"?q$._`new RegExp`:(0,bA.useFunc)(Z,B),V=Z.let("valid");Z.try(()=>Z.assign(V,q$._`${K}(${G}, ${J}).test(${Q})`),()=>Z.assign(V,!1)),$.fail$data(q$._`!${V}`)}else{let B=(0,yA.usePattern)($,W);$.fail$data(q$._`!${B}.test(${Q})`)}}};yG.default=xA});var xG=O((_G)=>{Object.defineProperty(_G,"__esModule",{value:!0});var MZ=b(),fA={message({keyword:$,schemaCode:Z}){let Q=$==="maxProperties"?"more":"fewer";return MZ.str`must NOT have ${Q} than ${Z} properties`},params:({schemaCode:$})=>MZ._`{limit: ${$}}`},vA={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:fA,code($){let{keyword:Z,data:Q,schemaCode:Y}=$,W=Z==="maxProperties"?MZ.operators.GT:MZ.operators.LT;$.fail$data(MZ._`Object.keys(${Q}).length ${W} ${Y}`)}};_G.default=vA});var fG=O((kG)=>{Object.defineProperty(kG,"__esModule",{value:!0});var OZ=P0(),jZ=b(),hA=k(),uA={message:({params:{missingProperty:$}})=>jZ.str`must have required property '${$}'`,params:({params:{missingProperty:$}})=>jZ._`{missingProperty: ${$}}`},mA={keyword:"required",type:"object",schemaType:"array",$data:!0,error:uA,code($){let{gen:Z,schema:Q,schemaCode:Y,data:W,$data:G,it:X}=$,{opts:J}=X;if(!G&&Q.length===0)return;let B=Q.length>=J.loopRequired;if(X.allErrors)K();else V();if(J.strictRequired){let D=$.parentSchema.properties,{definedProperties:L}=$.it;for(let U of Q)if((D===null||D===void 0?void 0:D[U])===void 0&&!L.has(U)){let q=X.schemaEnv.baseId+X.errSchemaPath,A=`required property "${U}" is not defined at "${q}" (strictRequired)`;(0,hA.checkStrictMode)(X,A,X.opts.strictRequired)}}function K(){if(B||G)$.block$data(jZ.nil,z);else for(let D of Q)(0,OZ.checkReportMissingProp)($,D)}function V(){let D=Z.let("missing");if(B||G){let L=Z.let("valid",!0);$.block$data(L,()=>F(D,L)),$.ok(L)}else Z.if((0,OZ.checkMissingProp)($,Q,D)),(0,OZ.reportMissingProp)($,D),Z.else()}function z(){Z.forOf("prop",Y,(D)=>{$.setParams({missingProperty:D}),Z.if((0,OZ.noPropertyInData)(Z,W,D,J.ownProperties),()=>$.error())})}function F(D,L){$.setParams({missingProperty:D}),Z.forOf(D,Y,()=>{Z.assign(L,(0,OZ.propertyInData)(Z,W,D,J.ownProperties)),Z.if((0,jZ.not)(L),()=>{$.error(),Z.break()})},jZ.nil)}}};kG.default=mA});var gG=O((vG)=>{Object.defineProperty(vG,"__esModule",{value:!0});var PZ=b(),pA={message({keyword:$,schemaCode:Z}){let Q=$==="maxItems"?"more":"fewer";return PZ.str`must NOT have ${Q} than ${Z} items`},params:({schemaCode:$})=>PZ._`{limit: ${$}}`},cA={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:pA,code($){let{keyword:Z,data:Q,schemaCode:Y}=$,W=Z==="maxItems"?PZ.operators.GT:PZ.operators.LT;$.fail$data(PZ._`${Q}.length ${W} ${Y}`)}};vG.default=cA});var e5=O((uG)=>{Object.defineProperty(uG,"__esModule",{value:!0});var hG=I8();hG.code='require("ajv/dist/runtime/equal").default';uG.default=hG});var lG=O((mG)=>{Object.defineProperty(mG,"__esModule",{value:!0});var p8=BZ(),Z0=b(),nA=k(),aA=e5(),rA={message:({params:{i:$,j:Z}})=>Z0.str`must NOT have duplicate items (items ## ${Z} and ${$} are identical)`,params:({params:{i:$,j:Z}})=>Z0._`{i: ${$}, j: ${Z}}`},tA={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:rA,code($){let{gen:Z,data:Q,$data:Y,schema:W,parentSchema:G,schemaCode:X,it:J}=$;if(!Y&&!W)return;let B=Z.let("valid"),K=G.items?(0,p8.getSchemaTypes)(G.items):[];$.block$data(B,V,Z0._`${X} === false`),$.ok(B);function V(){let L=Z.let("i",Z0._`${Q}.length`),U=Z.let("j");$.setParams({i:L,j:U}),Z.assign(B,!0),Z.if(Z0._`${L} > 1`,()=>(z()?F:D)(L,U))}function z(){return K.length>0&&!K.some((L)=>L==="object"||L==="array")}function F(L,U){let q=Z.name("item"),A=(0,p8.checkDataTypes)(K,q,J.opts.strictNumbers,p8.DataType.Wrong),N=Z.const("indices",Z0._`{}`);Z.for(Z0._`;${L}--;`,()=>{if(Z.let(q,Z0._`${Q}[${L}]`),Z.if(A,Z0._`continue`),K.length>1)Z.if(Z0._`typeof ${q} == "string"`,Z0._`${q} += "_"`);Z.if(Z0._`typeof ${N}[${q}] == "number"`,()=>{Z.assign(U,Z0._`${N}[${q}]`),$.error(),Z.assign(B,!1).break()}).code(Z0._`${N}[${q}] = ${L}`)})}function D(L,U){let q=(0,nA.useFunc)(Z,aA.default),A=Z.name("outer");Z.label(A).for(Z0._`;${L}--;`,()=>Z.for(Z0._`${U} = ${L}; ${U}--;`,()=>Z.if(Z0._`${q}(${Q}[${L}], ${Q}[${U}])`,()=>{$.error(),Z.assign(B,!1).break(A)})))}}};mG.default=tA});var cG=O((pG)=>{Object.defineProperty(pG,"__esModule",{value:!0});var c8=b(),sA=k(),eA=e5(),$N={message:"must be equal to constant",params:({schemaCode:$})=>c8._`{allowedValue: ${$}}`},ZN={keyword:"const",$data:!0,error:$N,code($){let{gen:Z,data:Q,$data:Y,schemaCode:W,schema:G}=$;if(Y||G&&typeof G=="object")$.fail$data(c8._`!${(0,sA.useFunc)(Z,eA.default)}(${Q}, ${W})`);else $.fail(c8._`${G} !== ${Q}`)}};pG.default=ZN});var iG=O((dG)=>{Object.defineProperty(dG,"__esModule",{value:!0});var wZ=b(),YN=k(),WN=e5(),GN={message:"must be equal to one of the allowed values",params:({schemaCode:$})=>wZ._`{allowedValues: ${$}}`},XN={keyword:"enum",schemaType:"array",$data:!0,error:GN,code($){let{gen:Z,data:Q,$data:Y,schema:W,schemaCode:G,it:X}=$;if(!Y&&W.length===0)throw Error("enum must have non-empty array");let J=W.length>=X.opts.loopEnum,B,K=()=>B!==null&&B!==void 0?B:B=(0,YN.useFunc)(Z,WN.default),V;if(J||Y)V=Z.let("valid"),$.block$data(V,z);else{if(!Array.isArray(W))throw Error("ajv implementation error");let D=Z.const("vSchema",G);V=(0,wZ.or)(...W.map((L,U)=>F(D,U)))}$.pass(V);function z(){Z.assign(V,!1),Z.forOf("v",G,(D)=>Z.if(wZ._`${K()}(${Q}, ${D})`,()=>Z.assign(V,!0).break()))}function F(D,L){let U=W[L];return typeof U==="object"&&U!==null?wZ._`${K()}(${Q}, ${D}[${L}])`:wZ._`${Q} === ${U}`}}};dG.default=XN});var aG=O((nG)=>{Object.defineProperty(nG,"__esModule",{value:!0});var KN=PG(),BN=TG(),HN=CG(),VN=bG(),zN=xG(),FN=fG(),LN=gG(),DN=lG(),UN=cG(),qN=iG(),AN=[KN.default,BN.default,HN.default,VN.default,zN.default,FN.default,LN.default,DN.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},UN.default,qN.default];nG.default=AN});var i8=O((tG)=>{Object.defineProperty(tG,"__esModule",{value:!0});tG.validateAdditionalItems=void 0;var l1=b(),d8=k(),MN={message:({params:{len:$}})=>l1.str`must NOT have more than ${$} items`,params:({params:{len:$}})=>l1._`{limit: ${$}}`},ON={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:MN,code($){let{parentSchema:Z,it:Q}=$,{items:Y}=Z;if(!Array.isArray(Y)){(0,d8.checkStrictMode)(Q,'"additionalItems" is ignored when "items" is not an array of schemas');return}rG($,Y)}};function rG($,Z){let{gen:Q,schema:Y,data:W,keyword:G,it:X}=$;X.items=!0;let J=Q.const("len",l1._`${W}.length`);if(Y===!1)$.setParams({len:Z.length}),$.pass(l1._`${J} <= ${Z.length}`);else if(typeof Y=="object"&&!(0,d8.alwaysValidSchema)(X,Y)){let K=Q.var("valid",l1._`${J} <= ${Z.length}`);Q.if((0,l1.not)(K),()=>B(K)),$.ok(K)}function B(K){Q.forRange("i",Z.length,J,(V)=>{if($.subschema({keyword:G,dataProp:V,dataPropType:d8.Type.Num},K),!X.allErrors)Q.if((0,l1.not)(K),()=>Q.break())})}}tG.validateAdditionalItems=rG;tG.default=ON});var n8=O(($X)=>{Object.defineProperty($X,"__esModule",{value:!0});$X.validateTuple=void 0;var sG=b(),$6=k(),PN=P0(),wN={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code($){let{schema:Z,it:Q}=$;if(Array.isArray(Z))return eG($,"additionalItems",Z);if(Q.items=!0,(0,$6.alwaysValidSchema)(Q,Z))return;$.ok((0,PN.validateArray)($))}};function eG($,Z,Q=$.schema){let{gen:Y,parentSchema:W,data:G,keyword:X,it:J}=$;if(V(W),J.opts.unevaluated&&Q.length&&J.items!==!0)J.items=$6.mergeEvaluated.items(Y,Q.length,J.items);let B=Y.name("valid"),K=Y.const("len",sG._`${G}.length`);Q.forEach((z,F)=>{if((0,$6.alwaysValidSchema)(J,z))return;Y.if(sG._`${K} > ${F}`,()=>$.subschema({keyword:X,schemaProp:F,dataProp:F},B)),$.ok(B)});function V(z){let{opts:F,errSchemaPath:D}=J,L=Q.length,U=L===z.minItems&&(L===z.maxItems||z[Z]===!1);if(F.strictTuples&&!U){let q=`"${X}" is ${L}-tuple, but minItems or maxItems/${Z} are not specified or different at path "${D}"`;(0,$6.checkStrictMode)(J,q,F.strictTuples)}}}$X.validateTuple=eG;$X.default=wN});var YX=O((QX)=>{Object.defineProperty(QX,"__esModule",{value:!0});var IN=n8(),RN={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:($)=>(0,IN.validateTuple)($,"items")};QX.default=RN});var XX=O((GX)=>{Object.defineProperty(GX,"__esModule",{value:!0});var WX=b(),SN=k(),CN=P0(),yN=i8(),bN={message:({params:{len:$}})=>WX.str`must NOT have more than ${$} items`,params:({params:{len:$}})=>WX._`{limit: ${$}}`},_N={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:bN,code($){let{schema:Z,parentSchema:Q,it:Y}=$,{prefixItems:W}=Q;if(Y.items=!0,(0,SN.alwaysValidSchema)(Y,Z))return;if(W)(0,yN.validateAdditionalItems)($,W);else $.ok((0,CN.validateArray)($))}};GX.default=_N});var KX=O((JX)=>{Object.defineProperty(JX,"__esModule",{value:!0});var w0=b(),Z6=k(),kN={message:({params:{min:$,max:Z}})=>Z===void 0?w0.str`must contain at least ${$} valid item(s)`:w0.str`must contain at least ${$} and no more than ${Z} valid item(s)`,params:({params:{min:$,max:Z}})=>Z===void 0?w0._`{minContains: ${$}}`:w0._`{minContains: ${$}, maxContains: ${Z}}`},fN={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:kN,code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,it:G}=$,X,J,{minContains:B,maxContains:K}=Y;if(G.opts.next)X=B===void 0?1:B,J=K;else X=1;let V=Z.const("len",w0._`${W}.length`);if($.setParams({min:X,max:J}),J===void 0&&X===0){(0,Z6.checkStrictMode)(G,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(J!==void 0&&X>J){(0,Z6.checkStrictMode)(G,'"minContains" > "maxContains" is always invalid'),$.fail();return}if((0,Z6.alwaysValidSchema)(G,Q)){let U=w0._`${V} >= ${X}`;if(J!==void 0)U=w0._`${U} && ${V} <= ${J}`;$.pass(U);return}G.items=!0;let z=Z.name("valid");if(J===void 0&&X===1)D(z,()=>Z.if(z,()=>Z.break()));else if(X===0){if(Z.let(z,!0),J!==void 0)Z.if(w0._`${W}.length > 0`,F)}else Z.let(z,!1),F();$.result(z,()=>$.reset());function F(){let U=Z.name("_valid"),q=Z.let("count",0);D(U,()=>Z.if(U,()=>L(q)))}function D(U,q){Z.forRange("i",0,V,(A)=>{$.subschema({keyword:"contains",dataProp:A,dataPropType:Z6.Type.Num,compositeRule:!0},U),q()})}function L(U){if(Z.code(w0._`${U}++`),J===void 0)Z.if(w0._`${U} >= ${X}`,()=>Z.assign(z,!0).break());else if(Z.if(w0._`${U} > ${J}`,()=>Z.assign(z,!1).break()),X===1)Z.assign(z,!0);else Z.if(w0._`${U} >= ${X}`,()=>Z.assign(z,!0))}}};JX.default=fN});var LX=O((VX)=>{Object.defineProperty(VX,"__esModule",{value:!0});VX.validateSchemaDeps=VX.validatePropertyDeps=VX.error=void 0;var a8=b(),gN=k(),TZ=P0();VX.error={message:({params:{property:$,depsCount:Z,deps:Q}})=>{let Y=Z===1?"property":"properties";return a8.str`must have ${Y} ${Q} when property ${$} is present`},params:({params:{property:$,depsCount:Z,deps:Q,missingProperty:Y}})=>a8._`{property: ${$},
6
+ || ${X} === "boolean" || ${W} === null`).assign(J,C._`[${W}]`)}}}function BD({gen:$,parentData:Z,parentDataProperty:Q},Y){$.if(C._`${Z} !== undefined`,()=>$.assign(C._`${Z}[${Q}]`,Y))}function j8($,Z,Q,Y=z$.Correct){let W=Y===z$.Correct?C.operators.EQ:C.operators.NEQ,G;switch($){case"null":return C._`${Z} ${W} null`;case"array":G=C._`Array.isArray(${Z})`;break;case"object":G=C._`${Z} && typeof ${Z} == "object" && !Array.isArray(${Z})`;break;case"integer":G=X(C._`!(${Z} % 1) && !isNaN(${Z})`);break;case"number":G=X();break;default:return C._`typeof ${Z} ${W} ${$}`}return Y===z$.Correct?G:(0,C.not)(G);function X(J=C.nil){return(0,C.and)(C._`typeof ${Z} == "number"`,J,Q?C._`isFinite(${Z})`:C.nil)}}c7.checkDataType=j8;function P8($,Z,Q,Y){if($.length===1)return j8($[0],Z,Q,Y);let W,G=(0,m7.toHash)($);if(G.array&&G.object){let X=C._`typeof ${Z} != "object"`;W=G.null?X:C._`!${Z} || ${X}`,delete G.null,delete G.array,delete G.object}else W=C.nil;if(G.number)delete G.integer;for(let X in G)W=(0,C.and)(W,j8(X,Z,Q,Y));return W}c7.checkDataTypes=P8;var HD={message:({schema:$})=>`must be ${$}`,params:({schema:$,schemaValue:Z})=>typeof $=="string"?C._`{type: ${$}}`:C._`{type: ${Z}}`};function w8($){let Z=VD($);(0,WD.reportError)(Z,HD)}c7.reportTypeError=w8;function VD($){let{gen:Z,data:Q,schema:Y}=$,W=(0,m7.schemaRefOrVal)($,Y,"type");return{gen:Z,keyword:"type",data:Q,schema:Y.type,schemaCode:W,schemaValue:W,parentSchema:Y,params:{},it:$}}});var r7=O((n7)=>{Object.defineProperty(n7,"__esModule",{value:!0});n7.assignDefaults=void 0;var F$=b(),AD=k();function ND($,Z){let{properties:Q,items:Y}=$.schema;if(Z==="object"&&Q)for(let W in Q)i7($,W,Q[W].default);else if(Z==="array"&&Array.isArray(Y))Y.forEach((W,G)=>i7($,G,W.default))}n7.assignDefaults=ND;function i7($,Z,Q){let{gen:Y,compositeRule:W,data:G,opts:X}=$;if(Q===void 0)return;let J=F$._`${G}${(0,F$.getProperty)(Z)}`;if(W){(0,AD.checkStrictMode)($,`default is ignored for: ${J}`);return}let B=F$._`${J} === undefined`;if(X.useDefaults==="empty")B=F$._`${B} || ${J} === null || ${J} === ""`;Y.if(B,F$._`${J} = ${(0,F$.stringify)(Q)}`)}});var P0=O((s7)=>{Object.defineProperty(s7,"__esModule",{value:!0});s7.validateUnion=s7.validateArray=s7.usePattern=s7.callValidateCode=s7.schemaProperties=s7.allSchemaProperties=s7.noPropertyInData=s7.propertyInData=s7.isOwnProperty=s7.hasPropFunc=s7.reportMissingProp=s7.checkMissingProp=s7.checkReportMissingProp=void 0;var l=b(),T8=k(),M1=e0(),MD=k();function OD($,Z){let{gen:Q,data:Y,it:W}=$;Q.if(I8(Q,Y,Z,W.opts.ownProperties),()=>{$.setParams({missingProperty:l._`${Z}`},!0),$.error()})}s7.checkReportMissingProp=OD;function jD({gen:$,data:Z,it:{opts:Q}},Y,W){return(0,l.or)(...Y.map((G)=>(0,l.and)(I8($,Z,G,Q.ownProperties),l._`${W} = ${G}`)))}s7.checkMissingProp=jD;function PD($,Z){$.setParams({missingProperty:Z},!0),$.error()}s7.reportMissingProp=PD;function t7($){return $.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:l._`Object.prototype.hasOwnProperty`})}s7.hasPropFunc=t7;function E8($,Z,Q){return l._`${t7($)}.call(${Z}, ${Q})`}s7.isOwnProperty=E8;function wD($,Z,Q,Y){let W=l._`${Z}${(0,l.getProperty)(Q)} !== undefined`;return Y?l._`${W} && ${E8($,Z,Q)}`:W}s7.propertyInData=wD;function I8($,Z,Q,Y){let W=l._`${Z}${(0,l.getProperty)(Q)} === undefined`;return Y?(0,l.or)(W,(0,l.not)(E8($,Z,Q))):W}s7.noPropertyInData=I8;function o7($){return $?Object.keys($).filter((Z)=>Z!=="__proto__"):[]}s7.allSchemaProperties=o7;function TD($,Z){return o7(Z).filter((Q)=>!(0,T8.alwaysValidSchema)($,Z[Q]))}s7.schemaProperties=TD;function ED({schemaCode:$,data:Z,it:{gen:Q,topSchemaRef:Y,schemaPath:W,errorPath:G},it:X},J,B,K){let V=K?l._`${$}, ${Z}, ${Y}${W}`:Z,z=[[M1.default.instancePath,(0,l.strConcat)(M1.default.instancePath,G)],[M1.default.parentData,X.parentData],[M1.default.parentDataProperty,X.parentDataProperty],[M1.default.rootData,M1.default.rootData]];if(X.opts.dynamicRef)z.push([M1.default.dynamicAnchors,M1.default.dynamicAnchors]);let F=l._`${V}, ${Q.object(...z)}`;return B!==l.nil?l._`${J}.call(${B}, ${F})`:l._`${J}(${F})`}s7.callValidateCode=ED;var ID=l._`new RegExp`;function RD({gen:$,it:{opts:Z}},Q){let Y=Z.unicodeRegExp?"u":"",{regExp:W}=Z.code,G=W(Q,Y);return $.scopeValue("pattern",{key:G.toString(),ref:G,code:l._`${W.code==="new RegExp"?ID:(0,MD.useFunc)($,W)}(${Q}, ${Y})`})}s7.usePattern=RD;function SD($){let{gen:Z,data:Q,keyword:Y,it:W}=$,G=Z.name("valid");if(W.allErrors){let J=Z.let("valid",!0);return X(()=>Z.assign(J,!1)),J}return Z.var(G,!0),X(()=>Z.break()),G;function X(J){let B=Z.const("len",l._`${Q}.length`);Z.forRange("i",0,B,(K)=>{$.subschema({keyword:Y,dataProp:K,dataPropType:T8.Type.Num},G),Z.if((0,l.not)(G),J)})}}s7.validateArray=SD;function CD($){let{gen:Z,schema:Q,keyword:Y,it:W}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");if(Q.some((B)=>(0,T8.alwaysValidSchema)(W,B))&&!W.opts.unevaluated)return;let X=Z.let("valid",!1),J=Z.name("_valid");Z.block(()=>Q.forEach((B,K)=>{let V=$.subschema({keyword:Y,schemaProp:K,compositeRule:!0},J);if(Z.assign(X,l._`${X} || ${J}`),!$.mergeValidEvaluated(V,J))Z.if((0,l.not)(X))})),$.result(X,()=>$.reset(),()=>$.error(!0))}s7.validateUnion=CD});var WW=O((QW)=>{Object.defineProperty(QW,"__esModule",{value:!0});QW.validateKeywordUsage=QW.validSchemaType=QW.funcKeywordCode=QW.macroKeywordCode=void 0;var K0=b(),g1=e0(),lD=P0(),cD=HZ();function dD($,Z){let{gen:Q,keyword:Y,schema:W,parentSchema:G,it:X}=$,J=Z.macro.call(X.self,W,G,X),B=ZW(Q,Y,J);if(X.opts.validateSchema!==!1)X.self.validateSchema(J,!0);let K=Q.name("valid");$.subschema({schema:J,schemaPath:K0.nil,errSchemaPath:`${X.errSchemaPath}/${Y}`,topSchemaRef:B,compositeRule:!0},K),$.pass(K,()=>$.error(!0))}QW.macroKeywordCode=dD;function iD($,Z){var Q;let{gen:Y,keyword:W,schema:G,parentSchema:X,$data:J,it:B}=$;aD(B,Z);let K=!J&&Z.compile?Z.compile.call(B.self,G,X,B):Z.validate,V=ZW(Y,W,K),z=Y.let("valid");$.block$data(z,F),$.ok((Q=Z.valid)!==null&&Q!==void 0?Q:z);function F(){if(Z.errors===!1){if(q(),Z.modifying)$W($);U(()=>$.error())}else{let A=Z.async?D():L();if(Z.modifying)$W($);U(()=>nD($,A))}}function D(){let A=Y.let("ruleErrs",null);return Y.try(()=>q(K0._`await `),(N)=>Y.assign(z,!1).if(K0._`${N} instanceof ${B.ValidationError}`,()=>Y.assign(A,K0._`${N}.errors`),()=>Y.throw(N))),A}function L(){let A=K0._`${V}.errors`;return Y.assign(A,null),q(K0.nil),A}function q(A=Z.async?K0._`await `:K0.nil){let N=B.opts.passContext?g1.default.this:g1.default.self,j=!(("compile"in Z)&&!J||Z.schema===!1);Y.assign(z,K0._`${A}${(0,lD.callValidateCode)($,V,N,j)}`,Z.modifying)}function U(A){var N;Y.if((0,K0.not)((N=Z.valid)!==null&&N!==void 0?N:z),A)}}QW.funcKeywordCode=iD;function $W($){let{gen:Z,data:Q,it:Y}=$;Z.if(Y.parentData,()=>Z.assign(Q,K0._`${Y.parentData}[${Y.parentDataProperty}]`))}function nD($,Z){let{gen:Q}=$;Q.if(K0._`Array.isArray(${Z})`,()=>{Q.assign(g1.default.vErrors,K0._`${g1.default.vErrors} === null ? ${Z} : ${g1.default.vErrors}.concat(${Z})`).assign(g1.default.errors,K0._`${g1.default.vErrors}.length`),(0,cD.extendErrors)($)},()=>$.error())}function aD({schemaEnv:$},Z){if(Z.async&&!$.$async)throw Error("async keyword in sync schema")}function ZW($,Z,Q){if(Q===void 0)throw Error(`keyword "${Z}" failed to compile`);return $.scopeValue("keyword",typeof Q=="function"?{ref:Q}:{ref:Q,code:(0,K0.stringify)(Q)})}function rD($,Z,Q=!1){return!Z.length||Z.some((Y)=>Y==="array"?Array.isArray($):Y==="object"?$&&typeof $=="object"&&!Array.isArray($):typeof $==Y||Q&&typeof $>"u")}QW.validSchemaType=rD;function tD({schema:$,opts:Z,self:Q,errSchemaPath:Y},W,G){if(Array.isArray(W.keyword)?!W.keyword.includes(G):W.keyword!==G)throw Error("ajv implementation error");let X=W.dependencies;if(X===null||X===void 0?void 0:X.some((J)=>!Object.prototype.hasOwnProperty.call($,J)))throw Error(`parent schema must have dependencies of ${G}: ${X.join(",")}`);if(W.validateSchema){if(!W.validateSchema($[G])){let B=`keyword "${G}" value is invalid at path "${Y}": `+Q.errorsText(W.validateSchema.errors);if(Z.validateSchema==="log")Q.logger.error(B);else throw Error(B)}}}QW.validateKeywordUsage=tD});var KW=O((XW)=>{Object.defineProperty(XW,"__esModule",{value:!0});XW.extendSubschemaMode=XW.extendSubschemaData=XW.getSubschema=void 0;var u0=b(),GW=k();function $q($,{keyword:Z,schemaProp:Q,schema:Y,schemaPath:W,errSchemaPath:G,topSchemaRef:X}){if(Z!==void 0&&Y!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(Z!==void 0){let J=$.schema[Z];return Q===void 0?{schema:J,schemaPath:u0._`${$.schemaPath}${(0,u0.getProperty)(Z)}`,errSchemaPath:`${$.errSchemaPath}/${Z}`}:{schema:J[Q],schemaPath:u0._`${$.schemaPath}${(0,u0.getProperty)(Z)}${(0,u0.getProperty)(Q)}`,errSchemaPath:`${$.errSchemaPath}/${Z}/${(0,GW.escapeFragment)(Q)}`}}if(Y!==void 0){if(W===void 0||G===void 0||X===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:Y,schemaPath:W,topSchemaRef:X,errSchemaPath:G}}throw Error('either "keyword" or "schema" must be passed')}XW.getSubschema=$q;function Zq($,Z,{dataProp:Q,dataPropType:Y,data:W,dataTypes:G,propertyName:X}){if(W!==void 0&&Q!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:J}=Z;if(Q!==void 0){let{errorPath:K,dataPathArr:V,opts:z}=Z,F=J.let("data",u0._`${Z.data}${(0,u0.getProperty)(Q)}`,!0);B(F),$.errorPath=u0.str`${K}${(0,GW.getErrorPath)(Q,Y,z.jsPropertySyntax)}`,$.parentDataProperty=u0._`${Q}`,$.dataPathArr=[...V,$.parentDataProperty]}if(W!==void 0){let K=W instanceof u0.Name?W:J.let("data",W,!0);if(B(K),X!==void 0)$.propertyName=X}if(G)$.dataTypes=G;function B(K){$.data=K,$.dataLevel=Z.dataLevel+1,$.dataTypes=[],Z.definedProperties=new Set,$.parentData=Z.data,$.dataNames=[...Z.dataNames,K]}}XW.extendSubschemaData=Zq;function Qq($,{jtdDiscriminator:Z,jtdMetadata:Q,compositeRule:Y,createErrors:W,allErrors:G}){if(Y!==void 0)$.compositeRule=Y;if(W!==void 0)$.createErrors=W;if(G!==void 0)$.allErrors=G;$.jtdDiscriminator=Z,$.jtdMetadata=Q}XW.extendSubschemaMode=Qq});var R8=O((M2,BW)=>{BW.exports=function $(Z,Q){if(Z===Q)return!0;if(Z&&Q&&typeof Z=="object"&&typeof Q=="object"){if(Z.constructor!==Q.constructor)return!1;var Y,W,G;if(Array.isArray(Z)){if(Y=Z.length,Y!=Q.length)return!1;for(W=Y;W--!==0;)if(!$(Z[W],Q[W]))return!1;return!0}if(Z.constructor===RegExp)return Z.source===Q.source&&Z.flags===Q.flags;if(Z.valueOf!==Object.prototype.valueOf)return Z.valueOf()===Q.valueOf();if(Z.toString!==Object.prototype.toString)return Z.toString()===Q.toString();if(G=Object.keys(Z),Y=G.length,Y!==Object.keys(Q).length)return!1;for(W=Y;W--!==0;)if(!Object.prototype.hasOwnProperty.call(Q,G[W]))return!1;for(W=Y;W--!==0;){var X=G[W];if(!$(Z[X],Q[X]))return!1}return!0}return Z!==Z&&Q!==Q}});var VW=O((O2,HW)=>{var O1=HW.exports=function($,Z,Q){if(typeof Z=="function")Q=Z,Z={};Q=Z.cb||Q;var Y=typeof Q=="function"?Q:Q.pre||function(){},W=Q.post||function(){};p5(Z,Y,W,$,"",$)};O1.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};O1.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};O1.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};O1.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function p5($,Z,Q,Y,W,G,X,J,B,K){if(Y&&typeof Y=="object"&&!Array.isArray(Y)){Z(Y,W,G,X,J,B,K);for(var V in Y){var z=Y[V];if(Array.isArray(z)){if(V in O1.arrayKeywords)for(var F=0;F<z.length;F++)p5($,Z,Q,z[F],W+"/"+V+"/"+F,G,W,V,Y,F)}else if(V in O1.propsKeywords){if(z&&typeof z=="object")for(var D in z)p5($,Z,Q,z[D],W+"/"+V+"/"+Gq(D),G,W,V,Y,D)}else if(V in O1.keywords||$.allKeys&&!(V in O1.skipKeywords))p5($,Z,Q,z,W+"/"+V,G,W,V,Y)}Q(Y,W,G,X,J,B,K)}}function Gq($){return $.replace(/~/g,"~0").replace(/\//g,"~1")}});var zZ=O((DW)=>{Object.defineProperty(DW,"__esModule",{value:!0});DW.getSchemaRefs=DW.resolveUrl=DW.normalizeId=DW._getFullPath=DW.getFullPath=DW.inlineRef=void 0;var Xq=k(),Jq=R8(),Kq=VW(),Bq=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function Hq($,Z=!0){if(typeof $=="boolean")return!0;if(Z===!0)return!S8($);if(!Z)return!1;return zW($)<=Z}DW.inlineRef=Hq;var Vq=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function S8($){for(let Z in $){if(Vq.has(Z))return!0;let Q=$[Z];if(Array.isArray(Q)&&Q.some(S8))return!0;if(typeof Q=="object"&&S8(Q))return!0}return!1}function zW($){let Z=0;for(let Q in $){if(Q==="$ref")return 1/0;if(Z++,Bq.has(Q))continue;if(typeof $[Q]=="object")(0,Xq.eachItem)($[Q],(Y)=>Z+=zW(Y));if(Z===1/0)return 1/0}return Z}function FW($,Z="",Q){if(Q!==!1)Z=L$(Z);let Y=$.parse(Z);return LW($,Y)}DW.getFullPath=FW;function LW($,Z){return $.serialize(Z).split("#")[0]+"#"}DW._getFullPath=LW;var zq=/#\/?$/;function L$($){return $?$.replace(zq,""):""}DW.normalizeId=L$;function Fq($,Z,Q){return Q=L$(Q),$.resolve(Z,Q)}DW.resolveUrl=Fq;var Lq=/^[a-z_][-a-z0-9._]*$/i;function Dq($,Z){if(typeof $=="boolean")return{};let{schemaId:Q,uriResolver:Y}=this.opts,W=L$($[Q]||Z),G={"":W},X=FW(Y,W,!1),J={},B=new Set;return Kq($,{allKeys:!0},(z,F,D,L)=>{if(L===void 0)return;let q=X+F,U=G[L];if(typeof z[Q]=="string")U=A.call(this,z[Q]);N.call(this,z.$anchor),N.call(this,z.$dynamicAnchor),G[F]=U;function A(j){let P=this.opts.uriResolver.resolve;if(j=L$(U?P(U,j):j),B.has(j))throw V(j);B.add(j);let M=this.refs[j];if(typeof M=="string")M=this.refs[M];if(typeof M=="object")K(z,M.schema,j);else if(j!==L$(q))if(j[0]==="#")K(z,J[j],j),J[j]=z;else this.refs[j]=q;return j}function N(j){if(typeof j=="string"){if(!Lq.test(j))throw Error(`invalid anchor "${j}"`);A.call(this,`#${j}`)}}}),J;function K(z,F,D){if(F!==void 0&&!Jq(z,F))throw V(D)}function V(z){return Error(`reference "${z}" resolves to more than one schema`)}}DW.getSchemaRefs=Dq});var DZ=O((yW)=>{Object.defineProperty(yW,"__esModule",{value:!0});yW.getData=yW.KeywordCxt=yW.validateFunctionCode=void 0;var OW=x7(),UW=VZ(),y8=O8(),l5=VZ(),Oq=r7(),LZ=WW(),C8=KW(),T=b(),S=e0(),jq=zZ(),$1=k(),FZ=HZ();function Pq($){if(wW($)){if(TW($),PW($)){Eq($);return}}jW($,()=>(0,OW.topBoolOrEmptySchema)($))}yW.validateFunctionCode=Pq;function jW({gen:$,validateName:Z,schema:Q,schemaEnv:Y,opts:W},G){if(W.code.es5)$.func(Z,T._`${S.default.data}, ${S.default.valCxt}`,Y.$async,()=>{$.code(T._`"use strict"; ${AW(Q,W)}`),Tq($,W),$.code(G)});else $.func(Z,T._`${S.default.data}, ${wq(W)}`,Y.$async,()=>$.code(AW(Q,W)).code(G))}function wq($){return T._`{${S.default.instancePath}="", ${S.default.parentData}, ${S.default.parentDataProperty}, ${S.default.rootData}=${S.default.data}${$.dynamicRef?T._`, ${S.default.dynamicAnchors}={}`:T.nil}}={}`}function Tq($,Z){$.if(S.default.valCxt,()=>{if($.var(S.default.instancePath,T._`${S.default.valCxt}.${S.default.instancePath}`),$.var(S.default.parentData,T._`${S.default.valCxt}.${S.default.parentData}`),$.var(S.default.parentDataProperty,T._`${S.default.valCxt}.${S.default.parentDataProperty}`),$.var(S.default.rootData,T._`${S.default.valCxt}.${S.default.rootData}`),Z.dynamicRef)$.var(S.default.dynamicAnchors,T._`${S.default.valCxt}.${S.default.dynamicAnchors}`)},()=>{if($.var(S.default.instancePath,T._`""`),$.var(S.default.parentData,T._`undefined`),$.var(S.default.parentDataProperty,T._`undefined`),$.var(S.default.rootData,S.default.data),Z.dynamicRef)$.var(S.default.dynamicAnchors,T._`{}`)})}function Eq($){let{schema:Z,opts:Q,gen:Y}=$;jW($,()=>{if(Q.$comment&&Z.$comment)IW($);if(yq($),Y.let(S.default.vErrors,null),Y.let(S.default.errors,0),Q.unevaluated)Iq($);EW($),xq($)});return}function Iq($){let{gen:Z,validateName:Q}=$;$.evaluated=Z.const("evaluated",T._`${Q}.evaluated`),Z.if(T._`${$.evaluated}.dynamicProps`,()=>Z.assign(T._`${$.evaluated}.props`,T._`undefined`)),Z.if(T._`${$.evaluated}.dynamicItems`,()=>Z.assign(T._`${$.evaluated}.items`,T._`undefined`))}function AW($,Z){let Q=typeof $=="object"&&$[Z.schemaId];return Q&&(Z.code.source||Z.code.process)?T._`/*# sourceURL=${Q} */`:T.nil}function Rq($,Z){if(wW($)){if(TW($),PW($)){Sq($,Z);return}}(0,OW.boolOrEmptySchema)($,Z)}function PW({schema:$,self:Z}){if(typeof $=="boolean")return!$;for(let Q in $)if(Z.RULES.all[Q])return!0;return!1}function wW($){return typeof $.schema!="boolean"}function Sq($,Z){let{schema:Q,gen:Y,opts:W}=$;if(W.$comment&&Q.$comment)IW($);bq($),_q($);let G=Y.const("_errs",S.default.errors);EW($,G),Y.var(Z,T._`${G} === ${S.default.errors}`)}function TW($){(0,$1.checkUnknownRules)($),Cq($)}function EW($,Z){if($.opts.jtd)return NW($,[],!1,Z);let Q=(0,UW.getSchemaTypes)($.schema),Y=(0,UW.coerceAndCheckDataType)($,Q);NW($,Q,!Y,Z)}function Cq($){let{schema:Z,errSchemaPath:Q,opts:Y,self:W}=$;if(Z.$ref&&Y.ignoreKeywordsWithRef&&(0,$1.schemaHasRulesButRef)(Z,W.RULES))W.logger.warn(`$ref: keywords ignored in schema at path "${Q}"`)}function yq($){let{schema:Z,opts:Q}=$;if(Z.default!==void 0&&Q.useDefaults&&Q.strictSchema)(0,$1.checkStrictMode)($,"default is ignored in the schema root")}function bq($){let Z=$.schema[$.opts.schemaId];if(Z)$.baseId=(0,jq.resolveUrl)($.opts.uriResolver,$.baseId,Z)}function _q($){if($.schema.$async&&!$.schemaEnv.$async)throw Error("async schema in sync schema")}function IW({gen:$,schemaEnv:Z,schema:Q,errSchemaPath:Y,opts:W}){let G=Q.$comment;if(W.$comment===!0)$.code(T._`${S.default.self}.logger.log(${G})`);else if(typeof W.$comment=="function"){let X=T.str`${Y}/$comment`,J=$.scopeValue("root",{ref:Z.root});$.code(T._`${S.default.self}.opts.$comment(${G}, ${X}, ${J}.schema)`)}}function xq($){let{gen:Z,schemaEnv:Q,validateName:Y,ValidationError:W,opts:G}=$;if(Q.$async)Z.if(T._`${S.default.errors} === 0`,()=>Z.return(S.default.data),()=>Z.throw(T._`new ${W}(${S.default.vErrors})`));else{if(Z.assign(T._`${Y}.errors`,S.default.vErrors),G.unevaluated)kq($);Z.return(T._`${S.default.errors} === 0`)}}function kq({gen:$,evaluated:Z,props:Q,items:Y}){if(Q instanceof T.Name)$.assign(T._`${Z}.props`,Q);if(Y instanceof T.Name)$.assign(T._`${Z}.items`,Y)}function NW($,Z,Q,Y){let{gen:W,schema:G,data:X,allErrors:J,opts:B,self:K}=$,{RULES:V}=K;if(G.$ref&&(B.ignoreKeywordsWithRef||!(0,$1.schemaHasRulesButRef)(G,V))){W.block(()=>SW($,"$ref",V.all.$ref.definition));return}if(!B.jtd)fq($,Z);W.block(()=>{for(let F of V.rules)z(F);z(V.post)});function z(F){if(!(0,y8.shouldUseGroup)(G,F))return;if(F.type){if(W.if((0,l5.checkDataType)(F.type,X,B.strictNumbers)),MW($,F),Z.length===1&&Z[0]===F.type&&Q)W.else(),(0,l5.reportTypeError)($);W.endIf()}else MW($,F);if(!J)W.if(T._`${S.default.errors} === ${Y||0}`)}}function MW($,Z){let{gen:Q,schema:Y,opts:{useDefaults:W}}=$;if(W)(0,Oq.assignDefaults)($,Z.type);Q.block(()=>{for(let G of Z.rules)if((0,y8.shouldUseRule)(Y,G))SW($,G.keyword,G.definition,Z.type)})}function fq($,Z){if($.schemaEnv.meta||!$.opts.strictTypes)return;if(vq($,Z),!$.opts.allowUnionTypes)hq($,Z);gq($,$.dataTypes)}function vq($,Z){if(!Z.length)return;if(!$.dataTypes.length){$.dataTypes=Z;return}Z.forEach((Q)=>{if(!RW($.dataTypes,Q))b8($,`type "${Q}" not allowed by context "${$.dataTypes.join(",")}"`)}),mq($,Z)}function hq($,Z){if(Z.length>1&&!(Z.length===2&&Z.includes("null")))b8($,"use allowUnionTypes to allow union type keyword")}function gq($,Z){let Q=$.self.RULES.all;for(let Y in Q){let W=Q[Y];if(typeof W=="object"&&(0,y8.shouldUseRule)($.schema,W)){let{type:G}=W.definition;if(G.length&&!G.some((X)=>uq(Z,X)))b8($,`missing type "${G.join(",")}" for keyword "${Y}"`)}}}function uq($,Z){return $.includes(Z)||Z==="number"&&$.includes("integer")}function RW($,Z){return $.includes(Z)||Z==="integer"&&$.includes("number")}function mq($,Z){let Q=[];for(let Y of $.dataTypes)if(RW(Z,Y))Q.push(Y);else if(Z.includes("integer")&&Y==="number")Q.push("integer");$.dataTypes=Q}function b8($,Z){let Q=$.schemaEnv.baseId+$.errSchemaPath;Z+=` at "${Q}" (strictTypes)`,(0,$1.checkStrictMode)($,Z,$.opts.strictTypes)}class _8{constructor($,Z,Q){if((0,LZ.validateKeywordUsage)($,Z,Q),this.gen=$.gen,this.allErrors=$.allErrors,this.keyword=Q,this.data=$.data,this.schema=$.schema[Q],this.$data=Z.$data&&$.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,$1.schemaRefOrVal)($,this.schema,Q,this.$data),this.schemaType=Z.schemaType,this.parentSchema=$.schema,this.params={},this.it=$,this.def=Z,this.$data)this.schemaCode=$.gen.const("vSchema",CW(this.$data,$));else if(this.schemaCode=this.schemaValue,!(0,LZ.validSchemaType)(this.schema,Z.schemaType,Z.allowUndefined))throw Error(`${Q} value must be ${JSON.stringify(Z.schemaType)}`);if("code"in Z?Z.trackErrors:Z.errors!==!1)this.errsCount=$.gen.const("_errs",S.default.errors)}result($,Z,Q){this.failResult((0,T.not)($),Z,Q)}failResult($,Z,Q){if(this.gen.if($),Q)Q();else this.error();if(Z){if(this.gen.else(),Z(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass($,Z){this.failResult((0,T.not)($),void 0,Z)}fail($){if($===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if($),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data($){if(!this.$data)return this.fail($);let{schemaCode:Z}=this;this.fail(T._`${Z} !== undefined && (${(0,T.or)(this.invalid$data(),$)})`)}error($,Z,Q){if(Z){this.setParams(Z),this._error($,Q),this.setParams({});return}this._error($,Q)}_error($,Z){($?FZ.reportExtraError:FZ.reportError)(this,this.def.error,Z)}$dataError(){(0,FZ.reportError)(this,this.def.$dataError||FZ.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,FZ.resetErrorsCount)(this.gen,this.errsCount)}ok($){if(!this.allErrors)this.gen.if($)}setParams($,Z){if(Z)Object.assign(this.params,$);else this.params=$}block$data($,Z,Q=T.nil){this.gen.block(()=>{this.check$data($,Q),Z()})}check$data($=T.nil,Z=T.nil){if(!this.$data)return;let{gen:Q,schemaCode:Y,schemaType:W,def:G}=this;if(Q.if((0,T.or)(T._`${Y} === undefined`,Z)),$!==T.nil)Q.assign($,!0);if(W.length||G.validateSchema){if(Q.elseIf(this.invalid$data()),this.$dataError(),$!==T.nil)Q.assign($,!1)}Q.else()}invalid$data(){let{gen:$,schemaCode:Z,schemaType:Q,def:Y,it:W}=this;return(0,T.or)(G(),X());function G(){if(Q.length){if(!(Z instanceof T.Name))throw Error("ajv implementation error");let J=Array.isArray(Q)?Q:[Q];return T._`${(0,l5.checkDataTypes)(J,Z,W.opts.strictNumbers,l5.DataType.Wrong)}`}return T.nil}function X(){if(Y.validateSchema){let J=$.scopeValue("validate$data",{ref:Y.validateSchema});return T._`!${J}(${Z})`}return T.nil}}subschema($,Z){let Q=(0,C8.getSubschema)(this.it,$);(0,C8.extendSubschemaData)(Q,this.it,$),(0,C8.extendSubschemaMode)(Q,$);let Y={...this.it,...Q,items:void 0,props:void 0};return Rq(Y,Z),Y}mergeEvaluated($,Z){let{it:Q,gen:Y}=this;if(!Q.opts.unevaluated)return;if(Q.props!==!0&&$.props!==void 0)Q.props=$1.mergeEvaluated.props(Y,$.props,Q.props,Z);if(Q.items!==!0&&$.items!==void 0)Q.items=$1.mergeEvaluated.items(Y,$.items,Q.items,Z)}mergeValidEvaluated($,Z){let{it:Q,gen:Y}=this;if(Q.opts.unevaluated&&(Q.props!==!0||Q.items!==!0))return Y.if(Z,()=>this.mergeEvaluated($,T.Name)),!0}}yW.KeywordCxt=_8;function SW($,Z,Q,Y){let W=new _8($,Q,Z);if("code"in Q)Q.code(W,Y);else if(W.$data&&Q.validate)(0,LZ.funcKeywordCode)(W,Q);else if("macro"in Q)(0,LZ.macroKeywordCode)(W,Q);else if(Q.compile||Q.validate)(0,LZ.funcKeywordCode)(W,Q)}var pq=/^\/(?:[^~]|~0|~1)*$/,lq=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function CW($,{dataLevel:Z,dataNames:Q,dataPathArr:Y}){let W,G;if($==="")return S.default.rootData;if($[0]==="/"){if(!pq.test($))throw Error(`Invalid JSON-pointer: ${$}`);W=$,G=S.default.rootData}else{let K=lq.exec($);if(!K)throw Error(`Invalid JSON-pointer: ${$}`);let V=+K[1];if(W=K[2],W==="#"){if(V>=Z)throw Error(B("property/index",V));return Y[Z-V]}if(V>Z)throw Error(B("data",V));if(G=Q[Z-V],!W)return G}let X=G,J=W.split("/");for(let K of J)if(K)G=T._`${G}${(0,T.getProperty)((0,$1.unescapeJsonPointer)(K))}`,X=T._`${X} && ${G}`;return X;function B(K,V){return`Cannot access ${K} ${V} levels up, current level is ${Z}`}}yW.getData=CW});var c5=O((xW)=>{Object.defineProperty(xW,"__esModule",{value:!0});class _W extends Error{constructor($){super("validation failed");this.errors=$,this.ajv=this.validation=!0}}xW.default=_W});var qZ=O((fW)=>{Object.defineProperty(fW,"__esModule",{value:!0});var x8=zZ();class kW extends Error{constructor($,Z,Q,Y){super(Y||`can't resolve reference ${Q} from id ${Z}`);this.missingRef=(0,x8.resolveUrl)($,Z,Q),this.missingSchema=(0,x8.normalizeId)((0,x8.getFullPath)($,this.missingRef))}}fW.default=kW});var i5=O((gW)=>{Object.defineProperty(gW,"__esModule",{value:!0});gW.resolveSchema=gW.getCompilingSchema=gW.resolveRef=gW.compileSchema=gW.SchemaEnv=void 0;var C0=b(),aq=c5(),u1=e0(),y0=zZ(),vW=k(),rq=DZ();class UZ{constructor($){var Z;this.refs={},this.dynamicAnchors={};let Q;if(typeof $.schema=="object")Q=$.schema;this.schema=$.schema,this.schemaId=$.schemaId,this.root=$.root||this,this.baseId=(Z=$.baseId)!==null&&Z!==void 0?Z:(0,y0.normalizeId)(Q===null||Q===void 0?void 0:Q[$.schemaId||"$id"]),this.schemaPath=$.schemaPath,this.localRefs=$.localRefs,this.meta=$.meta,this.$async=Q===null||Q===void 0?void 0:Q.$async,this.refs={}}}gW.SchemaEnv=UZ;function f8($){let Z=hW.call(this,$);if(Z)return Z;let Q=(0,y0.getFullPath)(this.opts.uriResolver,$.root.baseId),{es5:Y,lines:W}=this.opts.code,{ownProperties:G}=this.opts,X=new C0.CodeGen(this.scope,{es5:Y,lines:W,ownProperties:G}),J;if($.$async)J=X.scopeValue("Error",{ref:aq.default,code:C0._`require("ajv/dist/runtime/validation_error").default`});let B=X.scopeName("validate");$.validateName=B;let K={gen:X,allErrors:this.opts.allErrors,data:u1.default.data,parentData:u1.default.parentData,parentDataProperty:u1.default.parentDataProperty,dataNames:[u1.default.data],dataPathArr:[C0.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:X.scopeValue("schema",this.opts.code.source===!0?{ref:$.schema,code:(0,C0.stringify)($.schema)}:{ref:$.schema}),validateName:B,ValidationError:J,schema:$.schema,schemaEnv:$,rootId:Q,baseId:$.baseId||Q,schemaPath:C0.nil,errSchemaPath:$.schemaPath||(this.opts.jtd?"":"#"),errorPath:C0._`""`,opts:this.opts,self:this},V;try{this._compilations.add($),(0,rq.validateFunctionCode)(K),X.optimize(this.opts.code.optimize);let z=X.toString();if(V=`${X.scopeRefs(u1.default.scope)}return ${z}`,this.opts.code.process)V=this.opts.code.process(V,$);let D=Function(`${u1.default.self}`,`${u1.default.scope}`,V)(this,this.scope.get());if(this.scope.value(B,{ref:D}),D.errors=null,D.schema=$.schema,D.schemaEnv=$,$.$async)D.$async=!0;if(this.opts.code.source===!0)D.source={validateName:B,validateCode:z,scopeValues:X._values};if(this.opts.unevaluated){let{props:L,items:q}=K;if(D.evaluated={props:L instanceof C0.Name?void 0:L,items:q instanceof C0.Name?void 0:q,dynamicProps:L instanceof C0.Name,dynamicItems:q instanceof C0.Name},D.source)D.source.evaluated=(0,C0.stringify)(D.evaluated)}return $.validate=D,$}catch(z){if(delete $.validate,delete $.validateName,V)this.logger.error("Error compiling schema, function code:",V);throw z}finally{this._compilations.delete($)}}gW.compileSchema=f8;function tq($,Z,Q){var Y;Q=(0,y0.resolveUrl)(this.opts.uriResolver,Z,Q);let W=$.refs[Q];if(W)return W;let G=eq.call(this,$,Q);if(G===void 0){let X=(Y=$.localRefs)===null||Y===void 0?void 0:Y[Q],{schemaId:J}=this.opts;if(X)G=new UZ({schema:X,schemaId:J,root:$,baseId:Z})}if(G===void 0)return;return $.refs[Q]=oq.call(this,G)}gW.resolveRef=tq;function oq($){if((0,y0.inlineRef)($.schema,this.opts.inlineRefs))return $.schema;return $.validate?$:f8.call(this,$)}function hW($){for(let Z of this._compilations)if(sq(Z,$))return Z}gW.getCompilingSchema=hW;function sq($,Z){return $.schema===Z.schema&&$.root===Z.root&&$.baseId===Z.baseId}function eq($,Z){let Q;while(typeof(Q=this.refs[Z])=="string")Z=Q;return Q||this.schemas[Z]||d5.call(this,$,Z)}function d5($,Z){let Q=this.opts.uriResolver.parse(Z),Y=(0,y0._getFullPath)(this.opts.uriResolver,Q),W=(0,y0.getFullPath)(this.opts.uriResolver,$.baseId,void 0);if(Object.keys($.schema).length>0&&Y===W)return k8.call(this,Q,$);let G=(0,y0.normalizeId)(Y),X=this.refs[G]||this.schemas[G];if(typeof X=="string"){let J=d5.call(this,$,X);if(typeof(J===null||J===void 0?void 0:J.schema)!=="object")return;return k8.call(this,Q,J)}if(typeof(X===null||X===void 0?void 0:X.schema)!=="object")return;if(!X.validate)f8.call(this,X);if(G===(0,y0.normalizeId)(Z)){let{schema:J}=X,{schemaId:B}=this.opts,K=J[B];if(K)W=(0,y0.resolveUrl)(this.opts.uriResolver,W,K);return new UZ({schema:J,schemaId:B,root:$,baseId:W})}return k8.call(this,Q,X)}gW.resolveSchema=d5;var $U=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function k8($,{baseId:Z,schema:Q,root:Y}){var W;if(((W=$.fragment)===null||W===void 0?void 0:W[0])!=="/")return;for(let J of $.fragment.slice(1).split("/")){if(typeof Q==="boolean")return;let B=Q[(0,vW.unescapeFragment)(J)];if(B===void 0)return;Q=B;let K=typeof Q==="object"&&Q[this.opts.schemaId];if(!$U.has(J)&&K)Z=(0,y0.resolveUrl)(this.opts.uriResolver,Z,K)}let G;if(typeof Q!="boolean"&&Q.$ref&&!(0,vW.schemaHasRulesButRef)(Q,this.RULES)){let J=(0,y0.resolveUrl)(this.opts.uriResolver,Z,Q.$ref);G=d5.call(this,Y,J)}let{schemaId:X}=this.opts;if(G=G||new UZ({schema:Q,schemaId:X,root:Y,baseId:Z}),G.schema!==G.root.schema)return G;return}});var mW=O((I2,GU)=>{GU.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var g8=O((R2,nW)=>{var XU=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),lW=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),v8=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),cW=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),JU=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function h8($){let Z="",Q=0,Y=0;for(Y=0;Y<$.length;Y++){if(Q=$[Y].charCodeAt(0),Q===48)continue;if(!(Q>=48&&Q<=57||Q>=65&&Q<=70||Q>=97&&Q<=102))return"";Z+=$[Y];break}for(Y+=1;Y<$.length;Y++){if(Q=$[Y].charCodeAt(0),!(Q>=48&&Q<=57||Q>=65&&Q<=70||Q>=97&&Q<=102))return"";Z+=$[Y]}return Z}var KU=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function pW($){return $.length=0,!0}function BU($,Z,Q){if($.length){let Y=h8($);if(Y!=="")Z.push(Y);else return Q.error=!0,!1;$.length=0}return!0}function HU($){let Z=0,Q={error:!1,address:"",zone:""},Y=[],W=[],G=!1,X=!1,J=BU;for(let B=0;B<$.length;B++){let K=$[B];if(K==="["||K==="]")continue;if(K===":"){if(G===!0)X=!0;if(!J(W,Y,Q))break;if(++Z>7){Q.error=!0;break}if(B>0&&$[B-1]===":")G=!0;Y.push(":");continue}else if(K==="%"){if(!J(W,Y,Q))break;J=pW}else{W.push(K);continue}}if(W.length)if(J===pW)Q.zone=W.join("");else if(X)Y.push(W.join(""));else Y.push(h8(W));return Q.address=Y.join(""),Q}function dW($){if(VU($,":")<2)return{host:$,isIPV6:!1};let Z=HU($);if(!Z.error){let{address:Q,address:Y}=Z;if(Z.zone)Q+="%"+Z.zone,Y+="%25"+Z.zone;return{host:Q,isIPV6:!0,escapedHost:Y}}else return{host:$,isIPV6:!1}}function VU($,Z){let Q=0;for(let Y=0;Y<$.length;Y++)if($[Y]===Z)Q++;return Q}function zU($){let Z=$,Q=[],Y=-1,W=0;while(W=Z.length){if(W===1)if(Z===".")break;else if(Z==="/"){Q.push("/");break}else{Q.push(Z);break}else if(W===2){if(Z[0]==="."){if(Z[1]===".")break;else if(Z[1]==="/"){Z=Z.slice(2);continue}}else if(Z[0]==="/"){if(Z[1]==="."||Z[1]==="/"){Q.push("/");break}}}else if(W===3){if(Z==="/.."){if(Q.length!==0)Q.pop();Q.push("/");break}}if(Z[0]==="."){if(Z[1]==="."){if(Z[2]==="/"){Z=Z.slice(3);continue}}else if(Z[1]==="/"){Z=Z.slice(2);continue}}else if(Z[0]==="/"){if(Z[1]==="."){if(Z[2]==="/"){Z=Z.slice(2);continue}else if(Z[2]==="."){if(Z[3]==="/"){if(Z=Z.slice(3),Q.length!==0)Q.pop();continue}}}}if((Y=Z.indexOf("/",1))===-1){Q.push(Z);break}else Q.push(Z.slice(0,Y)),Z=Z.slice(Y)}return Q.join("")}var FU={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},LU=/[@/?#:]/g,DU=/[@/?#]/g;function iW($,Z){let Q=Z?DU:LU;return Q.lastIndex=0,$.replace(Q,(Y)=>FU[Y])}function qU($,Z=!1){if($.indexOf("%")===-1)return $;let Q="";for(let Y=0;Y<$.length;Y++){if($[Y]==="%"&&Y+2<$.length){let W=$.slice(Y+1,Y+3);if(v8(W)){let G=W.toUpperCase(),X=String.fromCharCode(parseInt(G,16));if(Z&&cW(X))Q+=X;else Q+="%"+G;Y+=2;continue}}Q+=$[Y]}return Q}function UU($){let Z="";for(let Q=0;Q<$.length;Q++){if($[Q]==="%"&&Q+2<$.length){let Y=$.slice(Q+1,Q+3);if(v8(Y)){let W=Y.toUpperCase(),G=String.fromCharCode(parseInt(W,16));if(G!=="."&&cW(G))Z+=G;else Z+="%"+W;Q+=2;continue}}if(JU($[Q]))Z+=$[Q];else Z+=escape($[Q])}return Z}function AU($){let Z="";for(let Q=0;Q<$.length;Q++){if($[Q]==="%"&&Q+2<$.length){let Y=$.slice(Q+1,Q+3);if(v8(Y)){Z+="%"+Y.toUpperCase(),Q+=2;continue}}Z+=escape($[Q])}return Z}function NU($){let Z=[];if($.userinfo!==void 0)Z.push($.userinfo),Z.push("@");if($.host!==void 0){let Q=unescape($.host);if(!lW(Q)){let Y=dW(Q);if(Y.isIPV6===!0)Q=`[${Y.escapedHost}]`;else Q=iW(Q,!1)}Z.push(Q)}if(typeof $.port==="number"||typeof $.port==="string")Z.push(":"),Z.push(String($.port));return Z.length?Z.join(""):void 0}nW.exports={nonSimpleDomain:KU,recomposeAuthority:NU,reescapeHostDelimiters:iW,normalizePercentEncoding:qU,normalizePathEncoding:UU,escapePreservingEscapes:AU,removeDotSegments:zU,isIPv4:lW,isUUID:XU,normalizeIPv6:dW,stringArrayToHexStripped:h8}});var sW=O((S2,oW)=>{var{isUUID:MU}=g8(),OU=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,jU=["http","https","ws","wss","urn","urn:uuid"];function PU($){return jU.indexOf($)!==-1}function u8($){if($.secure===!0)return!0;else if($.secure===!1)return!1;else if($.scheme)return $.scheme.length===3&&($.scheme[0]==="w"||$.scheme[0]==="W")&&($.scheme[1]==="s"||$.scheme[1]==="S")&&($.scheme[2]==="s"||$.scheme[2]==="S");else return!1}function aW($){if(!$.host)$.error=$.error||"HTTP URIs must have a host.";return $}function rW($){let Z=String($.scheme).toLowerCase()==="https";if($.port===(Z?443:80)||$.port==="")$.port=void 0;if(!$.path)$.path="/";return $}function wU($){return $.secure=u8($),$.resourceName=($.path||"/")+($.query?"?"+$.query:""),$.path=void 0,$.query=void 0,$}function TU($){if($.port===(u8($)?443:80)||$.port==="")$.port=void 0;if(typeof $.secure==="boolean")$.scheme=$.secure?"wss":"ws",$.secure=void 0;if($.resourceName){let[Z,Q]=$.resourceName.split("?");$.path=Z&&Z!=="/"?Z:void 0,$.query=Q,$.resourceName=void 0}return $.fragment=void 0,$}function EU($,Z){if(!$.path)return $.error="URN can not be parsed",$;let Q=$.path.match(OU);if(Q){let Y=Z.scheme||$.scheme||"urn";$.nid=Q[1].toLowerCase(),$.nss=Q[2];let W=`${Y}:${Z.nid||$.nid}`,G=m8(W);if($.path=void 0,G)$=G.parse($,Z)}else $.error=$.error||"URN can not be parsed.";return $}function IU($,Z){if($.nid===void 0)throw Error("URN without nid cannot be serialized");let Q=Z.scheme||$.scheme||"urn",Y=$.nid.toLowerCase(),W=`${Q}:${Z.nid||Y}`,G=m8(W);if(G)$=G.serialize($,Z);let X=$,J=$.nss;return X.path=`${Y||Z.nid}:${J}`,Z.skipEscape=!0,X}function RU($,Z){let Q=$;if(Q.uuid=Q.nss,Q.nss=void 0,!Z.tolerant&&(!Q.uuid||!MU(Q.uuid)))Q.error=Q.error||"UUID is not valid.";return Q}function SU($){let Z=$;return Z.nss=($.uuid||"").toLowerCase(),Z}var tW={scheme:"http",domainHost:!0,parse:aW,serialize:rW},CU={scheme:"https",domainHost:tW.domainHost,parse:aW,serialize:rW},n5={scheme:"ws",domainHost:!0,parse:wU,serialize:TU},yU={scheme:"wss",domainHost:n5.domainHost,parse:n5.parse,serialize:n5.serialize},bU={scheme:"urn",parse:EU,serialize:IU,skipNormalize:!0},_U={scheme:"urn:uuid",parse:RU,serialize:SU,skipNormalize:!0},a5={http:tW,https:CU,ws:n5,wss:yU,urn:bU,"urn:uuid":_U};Object.setPrototypeOf(a5,null);function m8($){return $&&(a5[$]||a5[$.toLowerCase()])||void 0}oW.exports={wsIsSecure:u8,SCHEMES:a5,isValidSchemeName:PU,getSchemeHandler:m8}});var WG=O((C2,r5)=>{var{normalizeIPv6:xU,removeDotSegments:AZ,recomposeAuthority:kU,normalizePercentEncoding:fU,normalizePathEncoding:vU,escapePreservingEscapes:hU,reescapeHostDelimiters:gU,isIPv4:uU,nonSimpleDomain:mU}=g8(),{SCHEMES:pU,getSchemeHandler:$G}=sW();function lU($,Z){if(typeof $==="string")$=rU($,Z);else if(typeof $==="object")$=D$(m1($,Z),Z);return $}function cU($,Z,Q){let Y=Q?Object.assign({scheme:"null"},Q):{scheme:"null"},W=ZG(D$($,Y),D$(Z,Y),Y,!0);return Y.skipEscape=!0,m1(W,Y)}function ZG($,Z,Q,Y){let W={};if(!Y)$=D$(m1($,Q),Q),Z=D$(m1(Z,Q),Q);if(Q=Q||{},!Q.tolerant&&Z.scheme)W.scheme=Z.scheme,W.userinfo=Z.userinfo,W.host=Z.host,W.port=Z.port,W.path=AZ(Z.path||""),W.query=Z.query;else{if(Z.userinfo!==void 0||Z.host!==void 0||Z.port!==void 0)W.userinfo=Z.userinfo,W.host=Z.host,W.port=Z.port,W.path=AZ(Z.path||""),W.query=Z.query;else{if(!Z.path)if(W.path=$.path,Z.query!==void 0)W.query=Z.query;else W.query=$.query;else{if(Z.path[0]==="/")W.path=AZ(Z.path);else{if(($.userinfo!==void 0||$.host!==void 0||$.port!==void 0)&&!$.path)W.path="/"+Z.path;else if(!$.path)W.path=Z.path;else W.path=$.path.slice(0,$.path.lastIndexOf("/")+1)+Z.path;W.path=AZ(W.path)}W.query=Z.query}W.userinfo=$.userinfo,W.host=$.host,W.port=$.port}W.scheme=$.scheme}return W.fragment=Z.fragment,W}function dU($,Z,Q){let Y=eW($,Q),W=eW(Z,Q);return Y!==void 0&&W!==void 0&&Y.toLowerCase()===W.toLowerCase()}function m1($,Z){let Q={host:$.host,scheme:$.scheme,userinfo:$.userinfo,port:$.port,path:$.path,query:$.query,nid:$.nid,nss:$.nss,uuid:$.uuid,fragment:$.fragment,reference:$.reference,resourceName:$.resourceName,secure:$.secure,error:""},Y=Object.assign({},Z),W=[],G=$G(Y.scheme||Q.scheme);if(G&&G.serialize)G.serialize(Q,Y);if(Q.path!==void 0)if(!Y.skipEscape){if(Q.path=hU(Q.path),Q.scheme!==void 0)Q.path=Q.path.split("%3A").join(":")}else Q.path=fU(Q.path);if(Y.reference!=="suffix"&&Q.scheme)W.push(Q.scheme,":");let X=kU(Q);if(X!==void 0){if(Y.reference!=="suffix")W.push("//");if(W.push(X),Q.path&&Q.path[0]!=="/")W.push("/")}if(Q.path!==void 0){let J=Q.path;if(!Y.absolutePath&&(!G||!G.absolutePath))J=AZ(J);if(X===void 0&&J[0]==="/"&&J[1]==="/")J="/%2F"+J.slice(2);W.push(J)}if(Q.query!==void 0)W.push("?",Q.query);if(Q.fragment!==void 0)W.push("#",Q.fragment);return W.join("")}var iU=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,nU=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/;function aU($,Z){if(Z[2]!==void 0&&$.path&&$.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof $.port==="number"&&($.port<0||$.port>65535))return"URI port is malformed.";return}function QG($,Z){let Q=Object.assign({},Z),Y={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},W=!1,G=!1;if(Q.reference==="suffix")if(Q.scheme)$=Q.scheme+":"+$;else $="//"+$;let X=$.match(nU);if(X!==null&&X[1].indexOf("\\")!==-1)Y.error="URI authority must not contain a literal backslash.",W=!0;let J=$.match(iU);if(J){if(Y.scheme=J[1],Y.userinfo=J[3],Y.host=J[4],Y.port=parseInt(J[5],10),Y.path=J[6]||"",Y.query=J[7],Y.fragment=J[8],isNaN(Y.port))Y.port=J[5];let B=aU(Y,J);if(B!==void 0)Y.error=Y.error||B,W=!0;if(Y.host)if(uU(Y.host)===!1){let z=xU(Y.host);Y.host=z.host.toLowerCase(),G=z.isIPV6}else G=!0;if(Y.scheme===void 0&&Y.userinfo===void 0&&Y.host===void 0&&Y.port===void 0&&Y.query===void 0&&!Y.path)Y.reference="same-document";else if(Y.scheme===void 0)Y.reference="relative";else if(Y.fragment===void 0)Y.reference="absolute";else Y.reference="uri";if(Q.reference&&Q.reference!=="suffix"&&Q.reference!==Y.reference)Y.error=Y.error||"URI is not a "+Q.reference+" reference.";let K=$G(Q.scheme||Y.scheme);if(!Q.unicodeSupport&&(!K||!K.unicodeSupport)){if(Y.host&&(Q.domainHost||K&&K.domainHost)&&G===!1&&mU(Y.host))try{Y.host=new URL("http://"+Y.host).hostname}catch(V){Y.error=Y.error||"Host's domain name can not be converted to ASCII: "+V}}if(!K||K&&!K.skipNormalize){if($.indexOf("%")!==-1){if(Y.scheme!==void 0)Y.scheme=unescape(Y.scheme);if(Y.host!==void 0)Y.host=gU(unescape(Y.host),G)}if(Y.path)Y.path=vU(Y.path);if(Y.fragment)try{Y.fragment=encodeURI(decodeURIComponent(Y.fragment))}catch{Y.error=Y.error||"URI malformed"}}if(K&&K.parse)K.parse(Y,Q)}else Y.error=Y.error||"URI can not be parsed.";return{parsed:Y,malformedAuthorityOrPort:W}}function D$($,Z){return QG($,Z).parsed}function rU($,Z){return YG($,Z).normalized}function YG($,Z){let{parsed:Q,malformedAuthorityOrPort:Y}=QG($,Z);return{normalized:Y?$:m1(Q,Z),malformedAuthorityOrPort:Y}}function eW($,Z){if(typeof $==="string"){let{normalized:Q,malformedAuthorityOrPort:Y}=YG($,Z);return Y?void 0:Q}if(typeof $==="object")return m1($,Z)}var p8={SCHEMES:pU,normalize:lU,resolve:cU,resolveComponent:ZG,equal:dU,serialize:m1,parse:D$};r5.exports=p8;r5.exports.default=p8;r5.exports.fastUri=p8});var JG=O((XG)=>{Object.defineProperty(XG,"__esModule",{value:!0});var GG=WG();GG.code='require("ajv/dist/runtime/uri").default';XG.default=GG});var DG=O((Z1)=>{Object.defineProperty(Z1,"__esModule",{value:!0});Z1.CodeGen=Z1.Name=Z1.nil=Z1.stringify=Z1.str=Z1._=Z1.KeywordCxt=void 0;var oU=DZ();Object.defineProperty(Z1,"KeywordCxt",{enumerable:!0,get:function(){return oU.KeywordCxt}});var q$=b();Object.defineProperty(Z1,"_",{enumerable:!0,get:function(){return q$._}});Object.defineProperty(Z1,"str",{enumerable:!0,get:function(){return q$.str}});Object.defineProperty(Z1,"stringify",{enumerable:!0,get:function(){return q$.stringify}});Object.defineProperty(Z1,"nil",{enumerable:!0,get:function(){return q$.nil}});Object.defineProperty(Z1,"Name",{enumerable:!0,get:function(){return q$.Name}});Object.defineProperty(Z1,"CodeGen",{enumerable:!0,get:function(){return q$.CodeGen}});var sU=c5(),zG=qZ(),eU=M8(),NZ=i5(),$A=b(),MZ=zZ(),t5=VZ(),c8=k(),KG=mW(),ZA=JG(),FG=($,Z)=>new RegExp($,Z);FG.code="new RegExp";var QA=["removeAdditional","useDefaults","coerceTypes"],YA=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),WA={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},GA={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},BG=200;function XA($){var Z,Q,Y,W,G,X,J,B,K,V,z,F,D,L,q,U,A,N,j,P,M,I,v,d,w;let _=$.strict,t=(Z=$.code)===null||Z===void 0?void 0:Z.optimize,g=t===!0||t===void 0?1:t||0,r=(Y=(Q=$.code)===null||Q===void 0?void 0:Q.regExp)!==null&&Y!==void 0?Y:FG,fZ=(W=$.uriResolver)!==null&&W!==void 0?W:ZA.default;return{strictSchema:(X=(G=$.strictSchema)!==null&&G!==void 0?G:_)!==null&&X!==void 0?X:!0,strictNumbers:(B=(J=$.strictNumbers)!==null&&J!==void 0?J:_)!==null&&B!==void 0?B:!0,strictTypes:(V=(K=$.strictTypes)!==null&&K!==void 0?K:_)!==null&&V!==void 0?V:"log",strictTuples:(F=(z=$.strictTuples)!==null&&z!==void 0?z:_)!==null&&F!==void 0?F:"log",strictRequired:(L=(D=$.strictRequired)!==null&&D!==void 0?D:_)!==null&&L!==void 0?L:!1,code:$.code?{...$.code,optimize:g,regExp:r}:{optimize:g,regExp:r},loopRequired:(q=$.loopRequired)!==null&&q!==void 0?q:BG,loopEnum:(U=$.loopEnum)!==null&&U!==void 0?U:BG,meta:(A=$.meta)!==null&&A!==void 0?A:!0,messages:(N=$.messages)!==null&&N!==void 0?N:!0,inlineRefs:(j=$.inlineRefs)!==null&&j!==void 0?j:!0,schemaId:(P=$.schemaId)!==null&&P!==void 0?P:"$id",addUsedSchema:(M=$.addUsedSchema)!==null&&M!==void 0?M:!0,validateSchema:(I=$.validateSchema)!==null&&I!==void 0?I:!0,validateFormats:(v=$.validateFormats)!==null&&v!==void 0?v:!0,unicodeRegExp:(d=$.unicodeRegExp)!==null&&d!==void 0?d:!0,int32range:(w=$.int32range)!==null&&w!==void 0?w:!0,uriResolver:fZ}}class o5{constructor($={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,$=this.opts={...$,...XA($)};let{es5:Z,lines:Q}=this.opts.code;this.scope=new $A.ValueScope({scope:{},prefixes:YA,es5:Z,lines:Q}),this.logger=zA($.logger);let Y=$.validateFormats;if($.validateFormats=!1,this.RULES=(0,eU.getRules)(),HG.call(this,WA,$,"NOT SUPPORTED"),HG.call(this,GA,$,"DEPRECATED","warn"),this._metaOpts=HA.call(this),$.formats)KA.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),$.keywords)BA.call(this,$.keywords);if(typeof $.meta=="object")this.addMetaSchema($.meta);JA.call(this),$.validateFormats=Y}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:$,meta:Z,schemaId:Q}=this.opts,Y=KG;if(Q==="id")Y={...KG},Y.id=Y.$id,delete Y.$id;if(Z&&$)this.addMetaSchema(Y,Y[Q],!1)}defaultMeta(){let{meta:$,schemaId:Z}=this.opts;return this.opts.defaultMeta=typeof $=="object"?$[Z]||$:void 0}validate($,Z){let Q;if(typeof $=="string"){if(Q=this.getSchema($),!Q)throw Error(`no schema with key or ref "${$}"`)}else Q=this.compile($);let Y=Q(Z);if(!("$async"in Q))this.errors=Q.errors;return Y}compile($,Z){let Q=this._addSchema($,Z);return Q.validate||this._compileSchemaEnv(Q)}compileAsync($,Z){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:Q}=this.opts;return Y.call(this,$,Z);async function Y(K,V){await W.call(this,K.$schema);let z=this._addSchema(K,V);return z.validate||G.call(this,z)}async function W(K){if(K&&!this.getSchema(K))await Y.call(this,{$ref:K},!0)}async function G(K){try{return this._compileSchemaEnv(K)}catch(V){if(!(V instanceof zG.default))throw V;return X.call(this,V),await J.call(this,V.missingSchema),G.call(this,K)}}function X({missingSchema:K,missingRef:V}){if(this.refs[K])throw Error(`AnySchema ${K} is loaded but ${V} cannot be resolved`)}async function J(K){let V=await B.call(this,K);if(!this.refs[K])await W.call(this,V.$schema);if(!this.refs[K])this.addSchema(V,K,Z)}async function B(K){let V=this._loading[K];if(V)return V;try{return await(this._loading[K]=Q(K))}finally{delete this._loading[K]}}}addSchema($,Z,Q,Y=this.opts.validateSchema){if(Array.isArray($)){for(let G of $)this.addSchema(G,void 0,Q,Y);return this}let W;if(typeof $==="object"){let{schemaId:G}=this.opts;if(W=$[G],W!==void 0&&typeof W!="string")throw Error(`schema ${G} must be string`)}return Z=(0,MZ.normalizeId)(Z||W),this._checkUnique(Z),this.schemas[Z]=this._addSchema($,Q,Z,Y,!0),this}addMetaSchema($,Z,Q=this.opts.validateSchema){return this.addSchema($,Z,!0,Q),this}validateSchema($,Z){if(typeof $=="boolean")return!0;let Q;if(Q=$.$schema,Q!==void 0&&typeof Q!="string")throw Error("$schema must be a string");if(Q=Q||this.opts.defaultMeta||this.defaultMeta(),!Q)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let Y=this.validate(Q,$);if(!Y&&Z){let W="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(W);else throw Error(W)}return Y}getSchema($){let Z;while(typeof(Z=VG.call(this,$))=="string")$=Z;if(Z===void 0){let{schemaId:Q}=this.opts,Y=new NZ.SchemaEnv({schema:{},schemaId:Q});if(Z=NZ.resolveSchema.call(this,Y,$),!Z)return;this.refs[$]=Z}return Z.validate||this._compileSchemaEnv(Z)}removeSchema($){if($ instanceof RegExp)return this._removeAllSchemas(this.schemas,$),this._removeAllSchemas(this.refs,$),this;switch(typeof $){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let Z=VG.call(this,$);if(typeof Z=="object")this._cache.delete(Z.schema);return delete this.schemas[$],delete this.refs[$],this}case"object":{let Z=$;this._cache.delete(Z);let Q=$[this.opts.schemaId];if(Q)Q=(0,MZ.normalizeId)(Q),delete this.schemas[Q],delete this.refs[Q];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary($){for(let Z of $)this.addKeyword(Z);return this}addKeyword($,Z){let Q;if(typeof $=="string"){if(Q=$,typeof Z=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),Z.keyword=Q}else if(typeof $=="object"&&Z===void 0){if(Z=$,Q=Z.keyword,Array.isArray(Q)&&!Q.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(LA.call(this,Q,Z),!Z)return(0,c8.eachItem)(Q,(W)=>l8.call(this,W)),this;qA.call(this,Z);let Y={...Z,type:(0,t5.getJSONTypes)(Z.type),schemaType:(0,t5.getJSONTypes)(Z.schemaType)};return(0,c8.eachItem)(Q,Y.type.length===0?(W)=>l8.call(this,W,Y):(W)=>Y.type.forEach((G)=>l8.call(this,W,Y,G))),this}getKeyword($){let Z=this.RULES.all[$];return typeof Z=="object"?Z.definition:!!Z}removeKeyword($){let{RULES:Z}=this;delete Z.keywords[$],delete Z.all[$];for(let Q of Z.rules){let Y=Q.rules.findIndex((W)=>W.keyword===$);if(Y>=0)Q.rules.splice(Y,1)}return this}addFormat($,Z){if(typeof Z=="string")Z=new RegExp(Z);return this.formats[$]=Z,this}errorsText($=this.errors,{separator:Z=", ",dataVar:Q="data"}={}){if(!$||$.length===0)return"No errors";return $.map((Y)=>`${Q}${Y.instancePath} ${Y.message}`).reduce((Y,W)=>Y+Z+W)}$dataMetaSchema($,Z){let Q=this.RULES.all;$=JSON.parse(JSON.stringify($));for(let Y of Z){let W=Y.split("/").slice(1),G=$;for(let X of W)G=G[X];for(let X in Q){let J=Q[X];if(typeof J!="object")continue;let{$data:B}=J.definition,K=G[X];if(B&&K)G[X]=LG(K)}}return $}_removeAllSchemas($,Z){for(let Q in $){let Y=$[Q];if(!Z||Z.test(Q)){if(typeof Y=="string")delete $[Q];else if(Y&&!Y.meta)this._cache.delete(Y.schema),delete $[Q]}}}_addSchema($,Z,Q,Y=this.opts.validateSchema,W=this.opts.addUsedSchema){let G,{schemaId:X}=this.opts;if(typeof $=="object")G=$[X];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof $!="boolean")throw Error("schema must be object or boolean");let J=this._cache.get($);if(J!==void 0)return J;Q=(0,MZ.normalizeId)(G||Q);let B=MZ.getSchemaRefs.call(this,$,Q);if(J=new NZ.SchemaEnv({schema:$,schemaId:X,meta:Z,baseId:Q,localRefs:B}),this._cache.set(J.schema,J),W&&!Q.startsWith("#")){if(Q)this._checkUnique(Q);this.refs[Q]=J}if(Y)this.validateSchema($,!0);return J}_checkUnique($){if(this.schemas[$]||this.refs[$])throw Error(`schema with key or id "${$}" already exists`)}_compileSchemaEnv($){if($.meta)this._compileMetaSchema($);else NZ.compileSchema.call(this,$);if(!$.validate)throw Error("ajv implementation error");return $.validate}_compileMetaSchema($){let Z=this.opts;this.opts=this._metaOpts;try{NZ.compileSchema.call(this,$)}finally{this.opts=Z}}}o5.ValidationError=sU.default;o5.MissingRefError=zG.default;Z1.default=o5;function HG($,Z,Q,Y="error"){for(let W in $){let G=W;if(G in Z)this.logger[Y](`${Q}: option ${W}. ${$[G]}`)}}function VG($){return $=(0,MZ.normalizeId)($),this.schemas[$]||this.refs[$]}function JA(){let $=this.opts.schemas;if(!$)return;if(Array.isArray($))this.addSchema($);else for(let Z in $)this.addSchema($[Z],Z)}function KA(){for(let $ in this.opts.formats){let Z=this.opts.formats[$];if(Z)this.addFormat($,Z)}}function BA($){if(Array.isArray($)){this.addVocabulary($);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let Z in $){let Q=$[Z];if(!Q.keyword)Q.keyword=Z;this.addKeyword(Q)}}function HA(){let $={...this.opts};for(let Z of QA)delete $[Z];return $}var VA={log(){},warn(){},error(){}};function zA($){if($===!1)return VA;if($===void 0)return console;if($.log&&$.warn&&$.error)return $;throw Error("logger must implement log, warn and error methods")}var FA=/^[a-z_$][a-z0-9_$:-]*$/i;function LA($,Z){let{RULES:Q}=this;if((0,c8.eachItem)($,(Y)=>{if(Q.keywords[Y])throw Error(`Keyword ${Y} is already defined`);if(!FA.test(Y))throw Error(`Keyword ${Y} has invalid name`)}),!Z)return;if(Z.$data&&!(("code"in Z)||("validate"in Z)))throw Error('$data keyword must have "code" or "validate" function')}function l8($,Z,Q){var Y;let W=Z===null||Z===void 0?void 0:Z.post;if(Q&&W)throw Error('keyword with "post" flag cannot have "type"');let{RULES:G}=this,X=W?G.post:G.rules.find(({type:B})=>B===Q);if(!X)X={type:Q,rules:[]},G.rules.push(X);if(G.keywords[$]=!0,!Z)return;let J={keyword:$,definition:{...Z,type:(0,t5.getJSONTypes)(Z.type),schemaType:(0,t5.getJSONTypes)(Z.schemaType)}};if(Z.before)DA.call(this,X,J,Z.before);else X.rules.push(J);G.all[$]=J,(Y=Z.implements)===null||Y===void 0||Y.forEach((B)=>this.addKeyword(B))}function DA($,Z,Q){let Y=$.rules.findIndex((W)=>W.keyword===Q);if(Y>=0)$.rules.splice(Y,0,Z);else $.rules.push(Z),this.logger.warn(`rule ${Q} is not defined`)}function qA($){let{metaSchema:Z}=$;if(Z===void 0)return;if($.$data&&this.opts.$data)Z=LG(Z);$.validateSchema=this.compile(Z,!0)}var UA={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function LG($){return{anyOf:[$,UA]}}});var UG=O((qG)=>{Object.defineProperty(qG,"__esModule",{value:!0});var MA={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};qG.default=MA});var PG=O((OG)=>{Object.defineProperty(OG,"__esModule",{value:!0});OG.callRef=OG.getValidate=void 0;var jA=qZ(),AG=P0(),L0=b(),U$=e0(),NG=i5(),s5=k(),PA={keyword:"$ref",schemaType:"string",code($){let{gen:Z,schema:Q,it:Y}=$,{baseId:W,schemaEnv:G,validateName:X,opts:J,self:B}=Y,{root:K}=G;if((Q==="#"||Q==="#/")&&W===K.baseId)return z();let V=NG.resolveRef.call(B,K,W,Q);if(V===void 0)throw new jA.default(Y.opts.uriResolver,W,Q);if(V instanceof NG.SchemaEnv)return F(V);return D(V);function z(){if(G===K)return e5($,X,G,G.$async);let L=Z.scopeValue("root",{ref:K});return e5($,L0._`${L}.validate`,K,K.$async)}function F(L){let q=MG($,L);e5($,q,L,L.$async)}function D(L){let q=Z.scopeValue("schema",J.code.source===!0?{ref:L,code:(0,L0.stringify)(L)}:{ref:L}),U=Z.name("valid"),A=$.subschema({schema:L,dataTypes:[],schemaPath:L0.nil,topSchemaRef:q,errSchemaPath:Q},U);$.mergeEvaluated(A),$.ok(U)}}};function MG($,Z){let{gen:Q}=$;return Z.validate?Q.scopeValue("validate",{ref:Z.validate}):L0._`${Q.scopeValue("wrapper",{ref:Z})}.validate`}OG.getValidate=MG;function e5($,Z,Q,Y){let{gen:W,it:G}=$,{allErrors:X,schemaEnv:J,opts:B}=G,K=B.passContext?U$.default.this:L0.nil;if(Y)V();else z();function V(){if(!J.$async)throw Error("async schema referenced by sync schema");let L=W.let("valid");W.try(()=>{if(W.code(L0._`await ${(0,AG.callValidateCode)($,Z,K)}`),D(Z),!X)W.assign(L,!0)},(q)=>{if(W.if(L0._`!(${q} instanceof ${G.ValidationError})`,()=>W.throw(q)),F(q),!X)W.assign(L,!1)}),$.ok(L)}function z(){$.result((0,AG.callValidateCode)($,Z,K),()=>D(Z),()=>F(Z))}function F(L){let q=L0._`${L}.errors`;W.assign(U$.default.vErrors,L0._`${U$.default.vErrors} === null ? ${q} : ${U$.default.vErrors}.concat(${q})`),W.assign(U$.default.errors,L0._`${U$.default.vErrors}.length`)}function D(L){var q;if(!G.opts.unevaluated)return;let U=(q=Q===null||Q===void 0?void 0:Q.validate)===null||q===void 0?void 0:q.evaluated;if(G.props!==!0)if(U&&!U.dynamicProps){if(U.props!==void 0)G.props=s5.mergeEvaluated.props(W,U.props,G.props)}else{let A=W.var("props",L0._`${L}.evaluated.props`);G.props=s5.mergeEvaluated.props(W,A,G.props,L0.Name)}if(G.items!==!0)if(U&&!U.dynamicItems){if(U.items!==void 0)G.items=s5.mergeEvaluated.items(W,U.items,G.items)}else{let A=W.var("items",L0._`${L}.evaluated.items`);G.items=s5.mergeEvaluated.items(W,A,G.items,L0.Name)}}}OG.callRef=e5;OG.default=PA});var TG=O((wG)=>{Object.defineProperty(wG,"__esModule",{value:!0});var EA=UG(),IA=PG(),RA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",EA.default,IA.default];wG.default=RA});var IG=O((EG)=>{Object.defineProperty(EG,"__esModule",{value:!0});var $6=b(),j1=$6.operators,Z6={maximum:{okStr:"<=",ok:j1.LTE,fail:j1.GT},minimum:{okStr:">=",ok:j1.GTE,fail:j1.LT},exclusiveMaximum:{okStr:"<",ok:j1.LT,fail:j1.GTE},exclusiveMinimum:{okStr:">",ok:j1.GT,fail:j1.LTE}},CA={message:({keyword:$,schemaCode:Z})=>$6.str`must be ${Z6[$].okStr} ${Z}`,params:({keyword:$,schemaCode:Z})=>$6._`{comparison: ${Z6[$].okStr}, limit: ${Z}}`},yA={keyword:Object.keys(Z6),type:"number",schemaType:"number",$data:!0,error:CA,code($){let{keyword:Z,data:Q,schemaCode:Y}=$;$.fail$data($6._`${Q} ${Z6[Z].fail} ${Y} || isNaN(${Q})`)}};EG.default=yA});var SG=O((RG)=>{Object.defineProperty(RG,"__esModule",{value:!0});var OZ=b(),_A={message:({schemaCode:$})=>OZ.str`must be multiple of ${$}`,params:({schemaCode:$})=>OZ._`{multipleOf: ${$}}`},xA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:_A,code($){let{gen:Z,data:Q,schemaCode:Y,it:W}=$,G=W.opts.multipleOfPrecision,X=Z.let("res"),J=G?OZ._`Math.abs(Math.round(${X}) - ${X}) > 1e-${G}`:OZ._`${X} !== parseInt(${X})`;$.fail$data(OZ._`(${Y} === 0 || (${X} = ${Q}/${Y}, ${J}))`)}};RG.default=xA});var bG=O((yG)=>{Object.defineProperty(yG,"__esModule",{value:!0});function CG($){let Z=$.length,Q=0,Y=0,W;while(Y<Z)if(Q++,W=$.charCodeAt(Y++),W>=55296&&W<=56319&&Y<Z){if(W=$.charCodeAt(Y),(W&64512)===56320)Y++}return Q}yG.default=CG;CG.code='require("ajv/dist/runtime/ucs2length").default'});var xG=O((_G)=>{Object.defineProperty(_G,"__esModule",{value:!0});var p1=b(),vA=k(),hA=bG(),gA={message({keyword:$,schemaCode:Z}){let Q=$==="maxLength"?"more":"fewer";return p1.str`must NOT have ${Q} than ${Z} characters`},params:({schemaCode:$})=>p1._`{limit: ${$}}`},uA={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:gA,code($){let{keyword:Z,data:Q,schemaCode:Y,it:W}=$,G=Z==="maxLength"?p1.operators.GT:p1.operators.LT,X=W.opts.unicode===!1?p1._`${Q}.length`:p1._`${(0,vA.useFunc)($.gen,hA.default)}(${Q})`;$.fail$data(p1._`${X} ${G} ${Y}`)}};_G.default=uA});var fG=O((kG)=>{Object.defineProperty(kG,"__esModule",{value:!0});var pA=P0(),lA=k(),A$=b(),cA={message:({schemaCode:$})=>A$.str`must match pattern "${$}"`,params:({schemaCode:$})=>A$._`{pattern: ${$}}`},dA={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:cA,code($){let{gen:Z,data:Q,$data:Y,schema:W,schemaCode:G,it:X}=$,J=X.opts.unicodeRegExp?"u":"";if(Y){let{regExp:B}=X.opts.code,K=B.code==="new RegExp"?A$._`new RegExp`:(0,lA.useFunc)(Z,B),V=Z.let("valid");Z.try(()=>Z.assign(V,A$._`${K}(${G}, ${J}).test(${Q})`),()=>Z.assign(V,!1)),$.fail$data(A$._`!${V}`)}else{let B=(0,pA.usePattern)($,W);$.fail$data(A$._`!${B}.test(${Q})`)}}};kG.default=dA});var hG=O((vG)=>{Object.defineProperty(vG,"__esModule",{value:!0});var jZ=b(),nA={message({keyword:$,schemaCode:Z}){let Q=$==="maxProperties"?"more":"fewer";return jZ.str`must NOT have ${Q} than ${Z} properties`},params:({schemaCode:$})=>jZ._`{limit: ${$}}`},aA={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:nA,code($){let{keyword:Z,data:Q,schemaCode:Y}=$,W=Z==="maxProperties"?jZ.operators.GT:jZ.operators.LT;$.fail$data(jZ._`Object.keys(${Q}).length ${W} ${Y}`)}};vG.default=aA});var uG=O((gG)=>{Object.defineProperty(gG,"__esModule",{value:!0});var PZ=P0(),wZ=b(),tA=k(),oA={message:({params:{missingProperty:$}})=>wZ.str`must have required property '${$}'`,params:({params:{missingProperty:$}})=>wZ._`{missingProperty: ${$}}`},sA={keyword:"required",type:"object",schemaType:"array",$data:!0,error:oA,code($){let{gen:Z,schema:Q,schemaCode:Y,data:W,$data:G,it:X}=$,{opts:J}=X;if(!G&&Q.length===0)return;let B=Q.length>=J.loopRequired;if(X.allErrors)K();else V();if(J.strictRequired){let D=$.parentSchema.properties,{definedProperties:L}=$.it;for(let q of Q)if((D===null||D===void 0?void 0:D[q])===void 0&&!L.has(q)){let U=X.schemaEnv.baseId+X.errSchemaPath,A=`required property "${q}" is not defined at "${U}" (strictRequired)`;(0,tA.checkStrictMode)(X,A,X.opts.strictRequired)}}function K(){if(B||G)$.block$data(wZ.nil,z);else for(let D of Q)(0,PZ.checkReportMissingProp)($,D)}function V(){let D=Z.let("missing");if(B||G){let L=Z.let("valid",!0);$.block$data(L,()=>F(D,L)),$.ok(L)}else Z.if((0,PZ.checkMissingProp)($,Q,D)),(0,PZ.reportMissingProp)($,D),Z.else()}function z(){Z.forOf("prop",Y,(D)=>{$.setParams({missingProperty:D}),Z.if((0,PZ.noPropertyInData)(Z,W,D,J.ownProperties),()=>$.error())})}function F(D,L){$.setParams({missingProperty:D}),Z.forOf(D,Y,()=>{Z.assign(L,(0,PZ.propertyInData)(Z,W,D,J.ownProperties)),Z.if((0,wZ.not)(L),()=>{$.error(),Z.break()})},wZ.nil)}}};gG.default=sA});var pG=O((mG)=>{Object.defineProperty(mG,"__esModule",{value:!0});var TZ=b(),$N={message({keyword:$,schemaCode:Z}){let Q=$==="maxItems"?"more":"fewer";return TZ.str`must NOT have ${Q} than ${Z} items`},params:({schemaCode:$})=>TZ._`{limit: ${$}}`},ZN={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:$N,code($){let{keyword:Z,data:Q,schemaCode:Y}=$,W=Z==="maxItems"?TZ.operators.GT:TZ.operators.LT;$.fail$data(TZ._`${Q}.length ${W} ${Y}`)}};mG.default=ZN});var Q6=O((cG)=>{Object.defineProperty(cG,"__esModule",{value:!0});var lG=R8();lG.code='require("ajv/dist/runtime/equal").default';cG.default=lG});var iG=O((dG)=>{Object.defineProperty(dG,"__esModule",{value:!0});var d8=VZ(),Z0=b(),WN=k(),GN=Q6(),XN={message:({params:{i:$,j:Z}})=>Z0.str`must NOT have duplicate items (items ## ${Z} and ${$} are identical)`,params:({params:{i:$,j:Z}})=>Z0._`{i: ${$}, j: ${Z}}`},JN={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:XN,code($){let{gen:Z,data:Q,$data:Y,schema:W,parentSchema:G,schemaCode:X,it:J}=$;if(!Y&&!W)return;let B=Z.let("valid"),K=G.items?(0,d8.getSchemaTypes)(G.items):[];$.block$data(B,V,Z0._`${X} === false`),$.ok(B);function V(){let L=Z.let("i",Z0._`${Q}.length`),q=Z.let("j");$.setParams({i:L,j:q}),Z.assign(B,!0),Z.if(Z0._`${L} > 1`,()=>(z()?F:D)(L,q))}function z(){return K.length>0&&!K.some((L)=>L==="object"||L==="array")}function F(L,q){let U=Z.name("item"),A=(0,d8.checkDataTypes)(K,U,J.opts.strictNumbers,d8.DataType.Wrong),N=Z.const("indices",Z0._`{}`);Z.for(Z0._`;${L}--;`,()=>{if(Z.let(U,Z0._`${Q}[${L}]`),Z.if(A,Z0._`continue`),K.length>1)Z.if(Z0._`typeof ${U} == "string"`,Z0._`${U} += "_"`);Z.if(Z0._`typeof ${N}[${U}] == "number"`,()=>{Z.assign(q,Z0._`${N}[${U}]`),$.error(),Z.assign(B,!1).break()}).code(Z0._`${N}[${U}] = ${L}`)})}function D(L,q){let U=(0,WN.useFunc)(Z,GN.default),A=Z.name("outer");Z.label(A).for(Z0._`;${L}--;`,()=>Z.for(Z0._`${q} = ${L}; ${q}--;`,()=>Z.if(Z0._`${U}(${Q}[${L}], ${Q}[${q}])`,()=>{$.error(),Z.assign(B,!1).break(A)})))}}};dG.default=JN});var aG=O((nG)=>{Object.defineProperty(nG,"__esModule",{value:!0});var i8=b(),BN=k(),HN=Q6(),VN={message:"must be equal to constant",params:({schemaCode:$})=>i8._`{allowedValue: ${$}}`},zN={keyword:"const",$data:!0,error:VN,code($){let{gen:Z,data:Q,$data:Y,schemaCode:W,schema:G}=$;if(Y||G&&typeof G=="object")$.fail$data(i8._`!${(0,BN.useFunc)(Z,HN.default)}(${Q}, ${W})`);else $.fail(i8._`${G} !== ${Q}`)}};nG.default=zN});var tG=O((rG)=>{Object.defineProperty(rG,"__esModule",{value:!0});var EZ=b(),LN=k(),DN=Q6(),qN={message:"must be equal to one of the allowed values",params:({schemaCode:$})=>EZ._`{allowedValues: ${$}}`},UN={keyword:"enum",schemaType:"array",$data:!0,error:qN,code($){let{gen:Z,data:Q,$data:Y,schema:W,schemaCode:G,it:X}=$;if(!Y&&W.length===0)throw Error("enum must have non-empty array");let J=W.length>=X.opts.loopEnum,B,K=()=>B!==null&&B!==void 0?B:B=(0,LN.useFunc)(Z,DN.default),V;if(J||Y)V=Z.let("valid"),$.block$data(V,z);else{if(!Array.isArray(W))throw Error("ajv implementation error");let D=Z.const("vSchema",G);V=(0,EZ.or)(...W.map((L,q)=>F(D,q)))}$.pass(V);function z(){Z.assign(V,!1),Z.forOf("v",G,(D)=>Z.if(EZ._`${K()}(${Q}, ${D})`,()=>Z.assign(V,!0).break()))}function F(D,L){let q=W[L];return typeof q==="object"&&q!==null?EZ._`${K()}(${Q}, ${D}[${L}])`:EZ._`${Q} === ${q}`}}};rG.default=UN});var sG=O((oG)=>{Object.defineProperty(oG,"__esModule",{value:!0});var NN=IG(),MN=SG(),ON=xG(),jN=fG(),PN=hG(),wN=uG(),TN=pG(),EN=iG(),IN=aG(),RN=tG(),SN=[NN.default,MN.default,ON.default,jN.default,PN.default,wN.default,TN.default,EN.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},IN.default,RN.default];oG.default=SN});var a8=O(($X)=>{Object.defineProperty($X,"__esModule",{value:!0});$X.validateAdditionalItems=void 0;var l1=b(),n8=k(),yN={message:({params:{len:$}})=>l1.str`must NOT have more than ${$} items`,params:({params:{len:$}})=>l1._`{limit: ${$}}`},bN={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:yN,code($){let{parentSchema:Z,it:Q}=$,{items:Y}=Z;if(!Array.isArray(Y)){(0,n8.checkStrictMode)(Q,'"additionalItems" is ignored when "items" is not an array of schemas');return}eG($,Y)}};function eG($,Z){let{gen:Q,schema:Y,data:W,keyword:G,it:X}=$;X.items=!0;let J=Q.const("len",l1._`${W}.length`);if(Y===!1)$.setParams({len:Z.length}),$.pass(l1._`${J} <= ${Z.length}`);else if(typeof Y=="object"&&!(0,n8.alwaysValidSchema)(X,Y)){let K=Q.var("valid",l1._`${J} <= ${Z.length}`);Q.if((0,l1.not)(K),()=>B(K)),$.ok(K)}function B(K){Q.forRange("i",Z.length,J,(V)=>{if($.subschema({keyword:G,dataProp:V,dataPropType:n8.Type.Num},K),!X.allErrors)Q.if((0,l1.not)(K),()=>Q.break())})}}$X.validateAdditionalItems=eG;$X.default=bN});var r8=O((WX)=>{Object.defineProperty(WX,"__esModule",{value:!0});WX.validateTuple=void 0;var QX=b(),Y6=k(),xN=P0(),kN={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code($){let{schema:Z,it:Q}=$;if(Array.isArray(Z))return YX($,"additionalItems",Z);if(Q.items=!0,(0,Y6.alwaysValidSchema)(Q,Z))return;$.ok((0,xN.validateArray)($))}};function YX($,Z,Q=$.schema){let{gen:Y,parentSchema:W,data:G,keyword:X,it:J}=$;if(V(W),J.opts.unevaluated&&Q.length&&J.items!==!0)J.items=Y6.mergeEvaluated.items(Y,Q.length,J.items);let B=Y.name("valid"),K=Y.const("len",QX._`${G}.length`);Q.forEach((z,F)=>{if((0,Y6.alwaysValidSchema)(J,z))return;Y.if(QX._`${K} > ${F}`,()=>$.subschema({keyword:X,schemaProp:F,dataProp:F},B)),$.ok(B)});function V(z){let{opts:F,errSchemaPath:D}=J,L=Q.length,q=L===z.minItems&&(L===z.maxItems||z[Z]===!1);if(F.strictTuples&&!q){let U=`"${X}" is ${L}-tuple, but minItems or maxItems/${Z} are not specified or different at path "${D}"`;(0,Y6.checkStrictMode)(J,U,F.strictTuples)}}}WX.validateTuple=YX;WX.default=kN});var JX=O((XX)=>{Object.defineProperty(XX,"__esModule",{value:!0});var vN=r8(),hN={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:($)=>(0,vN.validateTuple)($,"items")};XX.default=hN});var HX=O((BX)=>{Object.defineProperty(BX,"__esModule",{value:!0});var KX=b(),uN=k(),mN=P0(),pN=a8(),lN={message:({params:{len:$}})=>KX.str`must NOT have more than ${$} items`,params:({params:{len:$}})=>KX._`{limit: ${$}}`},cN={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:lN,code($){let{schema:Z,parentSchema:Q,it:Y}=$,{prefixItems:W}=Q;if(Y.items=!0,(0,uN.alwaysValidSchema)(Y,Z))return;if(W)(0,pN.validateAdditionalItems)($,W);else $.ok((0,mN.validateArray)($))}};BX.default=cN});var zX=O((VX)=>{Object.defineProperty(VX,"__esModule",{value:!0});var w0=b(),W6=k(),iN={message:({params:{min:$,max:Z}})=>Z===void 0?w0.str`must contain at least ${$} valid item(s)`:w0.str`must contain at least ${$} and no more than ${Z} valid item(s)`,params:({params:{min:$,max:Z}})=>Z===void 0?w0._`{minContains: ${$}}`:w0._`{minContains: ${$}, maxContains: ${Z}}`},nN={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:iN,code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,it:G}=$,X,J,{minContains:B,maxContains:K}=Y;if(G.opts.next)X=B===void 0?1:B,J=K;else X=1;let V=Z.const("len",w0._`${W}.length`);if($.setParams({min:X,max:J}),J===void 0&&X===0){(0,W6.checkStrictMode)(G,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(J!==void 0&&X>J){(0,W6.checkStrictMode)(G,'"minContains" > "maxContains" is always invalid'),$.fail();return}if((0,W6.alwaysValidSchema)(G,Q)){let q=w0._`${V} >= ${X}`;if(J!==void 0)q=w0._`${q} && ${V} <= ${J}`;$.pass(q);return}G.items=!0;let z=Z.name("valid");if(J===void 0&&X===1)D(z,()=>Z.if(z,()=>Z.break()));else if(X===0){if(Z.let(z,!0),J!==void 0)Z.if(w0._`${W}.length > 0`,F)}else Z.let(z,!1),F();$.result(z,()=>$.reset());function F(){let q=Z.name("_valid"),U=Z.let("count",0);D(q,()=>Z.if(q,()=>L(U)))}function D(q,U){Z.forRange("i",0,V,(A)=>{$.subschema({keyword:"contains",dataProp:A,dataPropType:W6.Type.Num,compositeRule:!0},q),U()})}function L(q){if(Z.code(w0._`${q}++`),J===void 0)Z.if(w0._`${q} >= ${X}`,()=>Z.assign(z,!0).break());else if(Z.if(w0._`${q} > ${J}`,()=>Z.assign(z,!1).break()),X===1)Z.assign(z,!0);else Z.if(w0._`${q} >= ${X}`,()=>Z.assign(z,!0))}}};VX.default=nN});var AX=O((DX)=>{Object.defineProperty(DX,"__esModule",{value:!0});DX.validateSchemaDeps=DX.validatePropertyDeps=DX.error=void 0;var t8=b(),rN=k(),IZ=P0();DX.error={message:({params:{property:$,depsCount:Z,deps:Q}})=>{let Y=Z===1?"property":"properties";return t8.str`must have ${Y} ${Q} when property ${$} is present`},params:({params:{property:$,depsCount:Z,deps:Q,missingProperty:Y}})=>t8._`{property: ${$},
7
7
  missingProperty: ${Y},
8
8
  depsCount: ${Z},
9
- deps: ${Q}}`};var hN={keyword:"dependencies",type:"object",schemaType:"object",error:VX.error,code($){let[Z,Q]=uN($);BX($,Z),HX($,Q)}};function uN({schema:$}){let Z={},Q={};for(let Y in $){if(Y==="__proto__")continue;let W=Array.isArray($[Y])?Z:Q;W[Y]=$[Y]}return[Z,Q]}function BX($,Z=$.schema){let{gen:Q,data:Y,it:W}=$;if(Object.keys(Z).length===0)return;let G=Q.let("missing");for(let X in Z){let J=Z[X];if(J.length===0)continue;let B=(0,TZ.propertyInData)(Q,Y,X,W.opts.ownProperties);if($.setParams({property:X,depsCount:J.length,deps:J.join(", ")}),W.allErrors)Q.if(B,()=>{for(let K of J)(0,TZ.checkReportMissingProp)($,K)});else Q.if(a8._`${B} && (${(0,TZ.checkMissingProp)($,J,G)})`),(0,TZ.reportMissingProp)($,G),Q.else()}}VX.validatePropertyDeps=BX;function HX($,Z=$.schema){let{gen:Q,data:Y,keyword:W,it:G}=$,X=Q.name("valid");for(let J in Z){if((0,gN.alwaysValidSchema)(G,Z[J]))continue;Q.if((0,TZ.propertyInData)(Q,Y,J,G.opts.ownProperties),()=>{let B=$.subschema({keyword:W,schemaProp:J},X);$.mergeValidEvaluated(B,X)},()=>Q.var(X,!0)),$.ok(X)}}VX.validateSchemaDeps=HX;VX.default=hN});var qX=O((UX)=>{Object.defineProperty(UX,"__esModule",{value:!0});var DX=b(),pN=k(),cN={message:"property name must be valid",params:({params:$})=>DX._`{propertyName: ${$.propertyName}}`},dN={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:cN,code($){let{gen:Z,schema:Q,data:Y,it:W}=$;if((0,pN.alwaysValidSchema)(W,Q))return;let G=Z.name("valid");Z.forIn("key",Y,(X)=>{$.setParams({propertyName:X}),$.subschema({keyword:"propertyNames",data:X,dataTypes:["string"],propertyName:X,compositeRule:!0},G),Z.if((0,DX.not)(G),()=>{if($.error(!0),!W.allErrors)Z.break()})}),$.ok(G)}};UX.default=dN});var r8=O((AX)=>{Object.defineProperty(AX,"__esModule",{value:!0});var Q6=P0(),b0=b(),nN=s0(),Y6=k(),aN={message:"must NOT have additional properties",params:({params:$})=>b0._`{additionalProperty: ${$.additionalProperty}}`},rN={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:aN,code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,errsCount:G,it:X}=$;if(!G)throw Error("ajv implementation error");let{allErrors:J,opts:B}=X;if(X.props=!0,B.removeAdditional!=="all"&&(0,Y6.alwaysValidSchema)(X,Q))return;let K=(0,Q6.allSchemaProperties)(Y.properties),V=(0,Q6.allSchemaProperties)(Y.patternProperties);z(),$.ok(b0._`${G} === ${nN.default.errors}`);function z(){Z.forIn("key",W,(q)=>{if(!K.length&&!V.length)L(q);else Z.if(F(q),()=>L(q))})}function F(q){let A;if(K.length>8){let N=(0,Y6.schemaRefOrVal)(X,Y.properties,"properties");A=(0,Q6.isOwnProperty)(Z,N,q)}else if(K.length)A=(0,b0.or)(...K.map((N)=>b0._`${q} === ${N}`));else A=b0.nil;if(V.length)A=(0,b0.or)(A,...V.map((N)=>b0._`${(0,Q6.usePattern)($,N)}.test(${q})`));return(0,b0.not)(A)}function D(q){Z.code(b0._`delete ${W}[${q}]`)}function L(q){if(B.removeAdditional==="all"||B.removeAdditional&&Q===!1){D(q);return}if(Q===!1){if($.setParams({additionalProperty:q}),$.error(),!J)Z.break();return}if(typeof Q=="object"&&!(0,Y6.alwaysValidSchema)(X,Q)){let A=Z.name("valid");if(B.removeAdditional==="failing")U(q,A,!1),Z.if((0,b0.not)(A),()=>{$.reset(),D(q)});else if(U(q,A),!J)Z.if((0,b0.not)(A),()=>Z.break())}}function U(q,A,N){let j={keyword:"additionalProperties",dataProp:q,dataPropType:Y6.Type.Str};if(N===!1)Object.assign(j,{compositeRule:!0,createErrors:!1,allErrors:!1});$.subschema(j,A)}}};AX.default=rN});var jX=O((OX)=>{Object.defineProperty(OX,"__esModule",{value:!0});var oN=FZ(),NX=P0(),t8=k(),MX=r8(),sN={keyword:"properties",type:"object",schemaType:"object",code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,it:G}=$;if(G.opts.removeAdditional==="all"&&Y.additionalProperties===void 0)MX.default.code(new oN.KeywordCxt(G,MX.default,"additionalProperties"));let X=(0,NX.allSchemaProperties)(Q);for(let z of X)G.definedProperties.add(z);if(G.opts.unevaluated&&X.length&&G.props!==!0)G.props=t8.mergeEvaluated.props(Z,(0,t8.toHash)(X),G.props);let J=X.filter((z)=>!(0,t8.alwaysValidSchema)(G,Q[z]));if(J.length===0)return;let B=Z.name("valid");for(let z of J){if(K(z))V(z);else{if(Z.if((0,NX.propertyInData)(Z,W,z,G.opts.ownProperties)),V(z),!G.allErrors)Z.else().var(B,!0);Z.endIf()}$.it.definedProperties.add(z),$.ok(B)}function K(z){return G.opts.useDefaults&&!G.compositeRule&&Q[z].default!==void 0}function V(z){$.subschema({keyword:"properties",schemaProp:z,dataProp:z},B)}}};OX.default=sN});var RX=O((IX)=>{Object.defineProperty(IX,"__esModule",{value:!0});var PX=P0(),W6=b(),wX=k(),TX=k(),$M={keyword:"patternProperties",type:"object",schemaType:"object",code($){let{gen:Z,schema:Q,data:Y,parentSchema:W,it:G}=$,{opts:X}=G,J=(0,PX.allSchemaProperties)(Q),B=J.filter((U)=>(0,wX.alwaysValidSchema)(G,Q[U]));if(J.length===0||B.length===J.length&&(!G.opts.unevaluated||G.props===!0))return;let K=X.strictSchema&&!X.allowMatchingProperties&&W.properties,V=Z.name("valid");if(G.props!==!0&&!(G.props instanceof W6.Name))G.props=(0,TX.evaluatedPropsToName)(Z,G.props);let{props:z}=G;F();function F(){for(let U of J){if(K)D(U);if(G.allErrors)L(U);else Z.var(V,!0),L(U),Z.if(V)}}function D(U){for(let q in K)if(new RegExp(U).test(q))(0,wX.checkStrictMode)(G,`property ${q} matches pattern ${U} (use allowMatchingProperties)`)}function L(U){Z.forIn("key",Y,(q)=>{Z.if(W6._`${(0,PX.usePattern)($,U)}.test(${q})`,()=>{let A=B.includes(U);if(!A)$.subschema({keyword:"patternProperties",schemaProp:U,dataProp:q,dataPropType:TX.Type.Str},V);if(G.opts.unevaluated&&z!==!0)Z.assign(W6._`${z}[${q}]`,!0);else if(!A&&!G.allErrors)Z.if((0,W6.not)(V),()=>Z.break())})})}}};IX.default=$M});var SX=O((EX)=>{Object.defineProperty(EX,"__esModule",{value:!0});var QM=k(),YM={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code($){let{gen:Z,schema:Q,it:Y}=$;if((0,QM.alwaysValidSchema)(Y,Q)){$.fail();return}let W=Z.name("valid");$.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},W),$.failResult(W,()=>$.reset(),()=>$.error())},error:{message:"must NOT be valid"}};EX.default=YM});var yX=O((CX)=>{Object.defineProperty(CX,"__esModule",{value:!0});var GM=P0(),XM={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:GM.validateUnion,error:{message:"must match a schema in anyOf"}};CX.default=XM});var _X=O((bX)=>{Object.defineProperty(bX,"__esModule",{value:!0});var G6=b(),KM=k(),BM={message:"must match exactly one schema in oneOf",params:({params:$})=>G6._`{passingSchemas: ${$.passing}}`},HM={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:BM,code($){let{gen:Z,schema:Q,parentSchema:Y,it:W}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");if(W.opts.discriminator&&Y.discriminator)return;let G=Q,X=Z.let("valid",!1),J=Z.let("passing",null),B=Z.name("_valid");$.setParams({passing:J}),Z.block(K),$.result(X,()=>$.reset(),()=>$.error(!0));function K(){G.forEach((V,z)=>{let F;if((0,KM.alwaysValidSchema)(W,V))Z.var(B,!0);else F=$.subschema({keyword:"oneOf",schemaProp:z,compositeRule:!0},B);if(z>0)Z.if(G6._`${B} && ${X}`).assign(X,!1).assign(J,G6._`[${J}, ${z}]`).else();Z.if(B,()=>{if(Z.assign(X,!0),Z.assign(J,z),F)$.mergeEvaluated(F,G6.Name)})})}}};bX.default=HM});var kX=O((xX)=>{Object.defineProperty(xX,"__esModule",{value:!0});var zM=k(),FM={keyword:"allOf",schemaType:"array",code($){let{gen:Z,schema:Q,it:Y}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");let W=Z.name("valid");Q.forEach((G,X)=>{if((0,zM.alwaysValidSchema)(Y,G))return;let J=$.subschema({keyword:"allOf",schemaProp:X},W);$.ok(W),$.mergeEvaluated(J)})}};xX.default=FM});var hX=O((gX)=>{Object.defineProperty(gX,"__esModule",{value:!0});var X6=b(),vX=k(),DM={message:({params:$})=>X6.str`must match "${$.ifClause}" schema`,params:({params:$})=>X6._`{failingKeyword: ${$.ifClause}}`},UM={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:DM,code($){let{gen:Z,parentSchema:Q,it:Y}=$;if(Q.then===void 0&&Q.else===void 0)(0,vX.checkStrictMode)(Y,'"if" without "then" and "else" is ignored');let W=fX(Y,"then"),G=fX(Y,"else");if(!W&&!G)return;let X=Z.let("valid",!0),J=Z.name("_valid");if(B(),$.reset(),W&&G){let V=Z.let("ifClause");$.setParams({ifClause:V}),Z.if(J,K("then",V),K("else",V))}else if(W)Z.if(J,K("then"));else Z.if((0,X6.not)(J),K("else"));$.pass(X,()=>$.error(!0));function B(){let V=$.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},J);$.mergeEvaluated(V)}function K(V,z){return()=>{let F=$.subschema({keyword:V},J);if(Z.assign(X,J),$.mergeValidEvaluated(F,X),z)Z.assign(z,X6._`${V}`);else $.setParams({ifClause:V})}}}};function fX($,Z){let Q=$.schema[Z];return Q!==void 0&&!(0,vX.alwaysValidSchema)($,Q)}gX.default=UM});var mX=O((uX)=>{Object.defineProperty(uX,"__esModule",{value:!0});var AM=k(),NM={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:$,parentSchema:Z,it:Q}){if(Z.if===void 0)(0,AM.checkStrictMode)(Q,`"${$}" without "if" is ignored`)}};uX.default=NM});var pX=O((lX)=>{Object.defineProperty(lX,"__esModule",{value:!0});var OM=i8(),jM=YX(),PM=n8(),wM=XX(),TM=KX(),IM=LX(),RM=qX(),EM=r8(),SM=jX(),CM=RX(),yM=SX(),bM=yX(),_M=_X(),xM=kX(),kM=hX(),fM=mX();function vM($=!1){let Z=[yM.default,bM.default,_M.default,xM.default,kM.default,fM.default,RM.default,EM.default,IM.default,SM.default,CM.default];if($)Z.push(jM.default,wM.default);else Z.push(OM.default,PM.default);return Z.push(TM.default),Z}lX.default=vM});var dX=O((cX)=>{Object.defineProperty(cX,"__esModule",{value:!0});var i=b(),hM={message:({schemaCode:$})=>i.str`must match format "${$}"`,params:({schemaCode:$})=>i._`{format: ${$}}`},uM={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:hM,code($,Z){let{gen:Q,data:Y,$data:W,schema:G,schemaCode:X,it:J}=$,{opts:B,errSchemaPath:K,schemaEnv:V,self:z}=J;if(!B.validateFormats)return;if(W)F();else D();function F(){let L=Q.scopeValue("formats",{ref:z.formats,code:B.code.formats}),U=Q.const("fDef",i._`${L}[${X}]`),q=Q.let("fType"),A=Q.let("format");Q.if(i._`typeof ${U} == "object" && !(${U} instanceof RegExp)`,()=>Q.assign(q,i._`${U}.type || "string"`).assign(A,i._`${U}.validate`),()=>Q.assign(q,i._`"string"`).assign(A,U)),$.fail$data((0,i.or)(N(),j()));function N(){if(B.strictSchema===!1)return i.nil;return i._`${X} && !${A}`}function j(){let P=V.$async?i._`(${U}.async ? await ${A}(${Y}) : ${A}(${Y}))`:i._`${A}(${Y})`,M=i._`(typeof ${A} == "function" ? ${P} : ${A}.test(${Y}))`;return i._`${A} && ${A} !== true && ${q} === ${Z} && !${M}`}}function D(){let L=z.formats[G];if(!L){N();return}if(L===!0)return;let[U,q,A]=j(L);if(U===Z)$.pass(P());function N(){if(B.strictSchema===!1){z.logger.warn(M());return}throw Error(M());function M(){return`unknown format "${G}" ignored in schema at path "${K}"`}}function j(M){let S=M instanceof RegExp?(0,i.regexpCode)(M):B.code.formats?i._`${B.code.formats}${(0,i.getProperty)(G)}`:void 0,g=Q.scopeValue("formats",{key:G,ref:M,code:S});if(typeof M=="object"&&!(M instanceof RegExp))return[M.type||"string",M.validate,i._`${g}.validate`];return["string",M,g]}function P(){if(typeof L=="object"&&!(L instanceof RegExp)&&L.async){if(!V.$async)throw Error("async format in sync schema");return i._`await ${A}(${Y})`}return typeof q=="function"?i._`${A}(${Y})`:i._`${A}.test(${Y})`}}}};cX.default=uM});var nX=O((iX)=>{Object.defineProperty(iX,"__esModule",{value:!0});var lM=dX(),pM=[lM.default];iX.default=pM});var tX=O((aX)=>{Object.defineProperty(aX,"__esModule",{value:!0});aX.contentVocabulary=aX.metadataVocabulary=void 0;aX.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];aX.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var eX=O((sX)=>{Object.defineProperty(sX,"__esModule",{value:!0});var iM=OG(),nM=aG(),aM=pX(),rM=nX(),oX=tX(),tM=[iM.default,nM.default,(0,aM.default)(),rM.default,oX.metadataVocabulary,oX.contentVocabulary];sX.default=tM});var YJ=O((ZJ)=>{Object.defineProperty(ZJ,"__esModule",{value:!0});ZJ.DiscrError=void 0;var $J;(function($){$.Tag="tag",$.Mapping="mapping"})($J||(ZJ.DiscrError=$J={}))});var XJ=O((GJ)=>{Object.defineProperty(GJ,"__esModule",{value:!0});var A$=b(),o8=YJ(),WJ=p5(),sM=LZ(),eM=k(),$O={message:({params:{discrError:$,tagName:Z}})=>$===o8.DiscrError.Tag?`tag "${Z}" must be string`:`value of tag "${Z}" must be in oneOf`,params:({params:{discrError:$,tag:Z,tagName:Q}})=>A$._`{error: ${$}, tag: ${Q}, tagValue: ${Z}}`},ZO={keyword:"discriminator",type:"object",schemaType:"object",error:$O,code($){let{gen:Z,data:Q,schema:Y,parentSchema:W,it:G}=$,{oneOf:X}=W;if(!G.opts.discriminator)throw Error("discriminator: requires discriminator option");let J=Y.propertyName;if(typeof J!="string")throw Error("discriminator: requires propertyName");if(Y.mapping)throw Error("discriminator: mapping is not supported");if(!X)throw Error("discriminator: requires oneOf keyword");let B=Z.let("valid",!1),K=Z.const("tag",A$._`${Q}${(0,A$.getProperty)(J)}`);Z.if(A$._`typeof ${K} == "string"`,()=>V(),()=>$.error(!1,{discrError:o8.DiscrError.Tag,tag:K,tagName:J})),$.ok(B);function V(){let D=F();Z.if(!1);for(let L in D)Z.elseIf(A$._`${K} === ${L}`),Z.assign(B,z(D[L]));Z.else(),$.error(!1,{discrError:o8.DiscrError.Mapping,tag:K,tagName:J}),Z.endIf()}function z(D){let L=Z.name("valid"),U=$.subschema({keyword:"oneOf",schemaProp:D},L);return $.mergeEvaluated(U,A$.Name),L}function F(){var D;let L={},U=A(W),q=!0;for(let P=0;P<X.length;P++){let M=X[P];if((M===null||M===void 0?void 0:M.$ref)&&!(0,eM.schemaHasRulesButRef)(M,G.self.RULES)){let g=M.$ref;if(M=WJ.resolveRef.call(G.self,G.schemaEnv.root,G.baseId,g),M instanceof WJ.SchemaEnv)M=M.schema;if(M===void 0)throw new sM.default(G.opts.uriResolver,G.baseId,g)}let S=(D=M===null||M===void 0?void 0:M.properties)===null||D===void 0?void 0:D[J];if(typeof S!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${J}"`);q=q&&(U||A(M)),N(S,P)}if(!q)throw Error(`discriminator: "${J}" must be required`);return L;function A({required:P}){return Array.isArray(P)&&P.includes(J)}function N(P,M){if(P.const)j(P.const,M);else if(P.enum)for(let S of P.enum)j(S,M);else throw Error(`discriminator: "properties/${J}" must have "const" or "enum"`)}function j(P,M){if(typeof P!="string"||P in L)throw Error(`discriminator: "${J}" values must be unique strings`);L[P]=M}}}};GJ.default=ZO});var JJ=O((By,YO)=>{YO.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var e8=O((D0,s8)=>{Object.defineProperty(D0,"__esModule",{value:!0});D0.MissingRefError=D0.ValidationError=D0.CodeGen=D0.Name=D0.nil=D0.stringify=D0.str=D0._=D0.KeywordCxt=D0.Ajv=void 0;var WO=VG(),GO=eX(),XO=XJ(),KJ=JJ(),JO=["/properties"],J6="http://json-schema.org/draft-07/schema";class IZ extends WO.default{_addVocabularies(){if(super._addVocabularies(),GO.default.forEach(($)=>this.addVocabulary($)),this.opts.discriminator)this.addKeyword(XO.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let $=this.opts.$data?this.$dataMetaSchema(KJ,JO):KJ;this.addMetaSchema($,J6,!1),this.refs["http://json-schema.org/schema"]=J6}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(J6)?J6:void 0)}}D0.Ajv=IZ;s8.exports=D0=IZ;s8.exports.Ajv=IZ;Object.defineProperty(D0,"__esModule",{value:!0});D0.default=IZ;var KO=FZ();Object.defineProperty(D0,"KeywordCxt",{enumerable:!0,get:function(){return KO.KeywordCxt}});var N$=b();Object.defineProperty(D0,"_",{enumerable:!0,get:function(){return N$._}});Object.defineProperty(D0,"str",{enumerable:!0,get:function(){return N$.str}});Object.defineProperty(D0,"stringify",{enumerable:!0,get:function(){return N$.stringify}});Object.defineProperty(D0,"nil",{enumerable:!0,get:function(){return N$.nil}});Object.defineProperty(D0,"Name",{enumerable:!0,get:function(){return N$.Name}});Object.defineProperty(D0,"CodeGen",{enumerable:!0,get:function(){return N$.CodeGen}});var BO=m5();Object.defineProperty(D0,"ValidationError",{enumerable:!0,get:function(){return BO.default}});var HO=LZ();Object.defineProperty(D0,"MissingRefError",{enumerable:!0,get:function(){return HO.default}})});var AJ=O((UJ)=>{Object.defineProperty(UJ,"__esModule",{value:!0});UJ.formatNames=UJ.fastFormats=UJ.fullFormats=void 0;function h0($,Z){return{validate:$,compare:Z}}UJ.fullFormats={date:h0(zJ,Y9),time:h0(Z9(!0),W9),"date-time":h0(BJ(!0),LJ),"iso-time":h0(Z9(),FJ),"iso-date-time":h0(BJ(),DJ),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:AO,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:TO,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:NO,int32:{type:"number",validate:jO},int64:{type:"number",validate:PO},float:{type:"number",validate:VJ},double:{type:"number",validate:VJ},password:!0,binary:!0};UJ.fastFormats={...UJ.fullFormats,date:h0(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,Y9),time:h0(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,W9),"date-time":h0(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,LJ),"iso-time":h0(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,FJ),"iso-date-time":h0(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,DJ),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};UJ.formatNames=Object.keys(UJ.fullFormats);function FO($){return $%4===0&&($%100!==0||$%400===0)}var LO=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,DO=[0,31,28,31,30,31,30,31,31,30,31,30,31];function zJ($){let Z=LO.exec($);if(!Z)return!1;let Q=+Z[1],Y=+Z[2],W=+Z[3];return Y>=1&&Y<=12&&W>=1&&W<=(Y===2&&FO(Q)?29:DO[Y])}function Y9($,Z){if(!($&&Z))return;if($>Z)return 1;if($<Z)return-1;return 0}var $9=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function Z9($){return function(Q){let Y=$9.exec(Q);if(!Y)return!1;let W=+Y[1],G=+Y[2],X=+Y[3],J=Y[4],B=Y[5]==="-"?-1:1,K=+(Y[6]||0),V=+(Y[7]||0);if(K>23||V>59||$&&!J)return!1;if(W<=23&&G<=59&&X<60)return!0;let z=G-V*B,F=W-K*B-(z<0?1:0);return(F===23||F===-1)&&(z===59||z===-1)&&X<61}}function W9($,Z){if(!($&&Z))return;let Q=new Date("2020-01-01T"+$).valueOf(),Y=new Date("2020-01-01T"+Z).valueOf();if(!(Q&&Y))return;return Q-Y}function FJ($,Z){if(!($&&Z))return;let Q=$9.exec($),Y=$9.exec(Z);if(!(Q&&Y))return;if($=Q[1]+Q[2]+Q[3],Z=Y[1]+Y[2]+Y[3],$>Z)return 1;if($<Z)return-1;return 0}var Q9=/t|\s/i;function BJ($){let Z=Z9($);return function(Y){let W=Y.split(Q9);return W.length===2&&zJ(W[0])&&Z(W[1])}}function LJ($,Z){if(!($&&Z))return;let Q=new Date($).valueOf(),Y=new Date(Z).valueOf();if(!(Q&&Y))return;return Q-Y}function DJ($,Z){if(!($&&Z))return;let[Q,Y]=$.split(Q9),[W,G]=Z.split(Q9),X=Y9(Q,W);if(X===void 0)return;return X||W9(Y,G)}var UO=/\/|:/,qO=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function AO($){return UO.test($)&&qO.test($)}var HJ=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function NO($){return HJ.lastIndex=0,HJ.test($)}var MO=-2147483648,OO=2147483647;function jO($){return Number.isInteger($)&&$<=OO&&$>=MO}function PO($){return Number.isInteger($)}function VJ(){return!0}var wO=/[^\\]\\Z/;function TO($){if(wO.test($))return!1;try{return new RegExp($),!0}catch(Z){return!1}}});var MJ=O((NJ)=>{Object.defineProperty(NJ,"__esModule",{value:!0});NJ.formatLimitDefinition=void 0;var RO=e8(),_0=b(),j1=_0.operators,K6={formatMaximum:{okStr:"<=",ok:j1.LTE,fail:j1.GT},formatMinimum:{okStr:">=",ok:j1.GTE,fail:j1.LT},formatExclusiveMaximum:{okStr:"<",ok:j1.LT,fail:j1.GTE},formatExclusiveMinimum:{okStr:">",ok:j1.GT,fail:j1.LTE}},EO={message:({keyword:$,schemaCode:Z})=>_0.str`should be ${K6[$].okStr} ${Z}`,params:({keyword:$,schemaCode:Z})=>_0._`{comparison: ${K6[$].okStr}, limit: ${Z}}`};NJ.formatLimitDefinition={keyword:Object.keys(K6),type:"string",schemaType:"string",$data:!0,error:EO,code($){let{gen:Z,data:Q,schemaCode:Y,keyword:W,it:G}=$,{opts:X,self:J}=G;if(!X.validateFormats)return;let B=new RO.KeywordCxt(G,J.RULES.all.format.definition,"format");if(B.$data)K();else V();function K(){let F=Z.scopeValue("formats",{ref:J.formats,code:X.code.formats}),D=Z.const("fmt",_0._`${F}[${B.schemaCode}]`);$.fail$data((0,_0.or)(_0._`typeof ${D} != "object"`,_0._`${D} instanceof RegExp`,_0._`typeof ${D}.compare != "function"`,z(D)))}function V(){let F=B.schema,D=J.formats[F];if(!D||D===!0)return;if(typeof D!="object"||D instanceof RegExp||typeof D.compare!="function")throw Error(`"${W}": format "${F}" does not define "compare" function`);let L=Z.scopeValue("formats",{key:F,ref:D,code:X.code.formats?_0._`${X.code.formats}${(0,_0.getProperty)(F)}`:void 0});$.fail$data(z(L))}function z(F){return _0._`${F}.compare(${Q}, ${Y}) ${K6[W].fail} 0`}},dependencies:["format"]};var SO=($)=>{return $.addKeyword(NJ.formatLimitDefinition),$};NJ.default=SO});var wJ=O((RZ,PJ)=>{Object.defineProperty(RZ,"__esModule",{value:!0});var M$=AJ(),yO=MJ(),J9=b(),OJ=new J9.Name("fullFormats"),bO=new J9.Name("fastFormats"),K9=($,Z={keywords:!0})=>{if(Array.isArray(Z))return jJ($,Z,M$.fullFormats,OJ),$;let[Q,Y]=Z.mode==="fast"?[M$.fastFormats,bO]:[M$.fullFormats,OJ],W=Z.formats||M$.formatNames;if(jJ($,W,Q,Y),Z.keywords)(0,yO.default)($);return $};K9.get=($,Z="full")=>{let Y=(Z==="fast"?M$.fastFormats:M$.fullFormats)[$];if(!Y)throw Error(`Unknown format "${$}"`);return Y};function jJ($,Z,Q,Y){var W,G;(W=(G=$.opts.code).formats)!==null&&W!==void 0||(G.formats=J9._`require("ajv-formats/dist/formats").${Y}`);for(let X of Z)$.addFormat(X,Q[X])}PJ.exports=RZ=K9;Object.defineProperty(RZ,"__esModule",{value:!0});RZ.default=K9});var _J=O((yy,bJ)=>{bJ.exports=yJ;yJ.sync=fO;var SJ=Y1("fs");function kO($,Z){var Q=Z.pathExt!==void 0?Z.pathExt:process.env.PATHEXT;if(!Q)return!0;if(Q=Q.split(";"),Q.indexOf("")!==-1)return!0;for(var Y=0;Y<Q.length;Y++){var W=Q[Y].toLowerCase();if(W&&$.substr(-W.length).toLowerCase()===W)return!0}return!1}function CJ($,Z,Q){if(!$.isSymbolicLink()&&!$.isFile())return!1;return kO(Z,Q)}function yJ($,Z,Q){SJ.stat($,function(Y,W){Q(Y,Y?!1:CJ(W,$,Z))})}function fO($,Z){return CJ(SJ.statSync($),$,Z)}});var gJ=O((by,vJ)=>{vJ.exports=kJ;kJ.sync=vO;var xJ=Y1("fs");function kJ($,Z,Q){xJ.stat($,function(Y,W){Q(Y,Y?!1:fJ(W,Z))})}function vO($,Z){return fJ(xJ.statSync($),Z)}function fJ($,Z){return $.isFile()&&gO($,Z)}function gO($,Z){var{mode:Q,uid:Y,gid:W}=$,G=Z.uid!==void 0?Z.uid:process.getuid&&process.getuid(),X=Z.gid!==void 0?Z.gid:process.getgid&&process.getgid(),J=parseInt("100",8),B=parseInt("010",8),K=parseInt("001",8),V=J|B,z=Q&K||Q&B&&W===X||Q&J&&Y===G||Q&V&&G===0;return z}});var uJ=O((xy,hJ)=>{var _y=Y1("fs"),H6;if(process.platform==="win32"||global.TESTING_WINDOWS)H6=_J();else H6=gJ();hJ.exports=z9;z9.sync=hO;function z9($,Z,Q){if(typeof Z==="function")Q=Z,Z={};if(!Q){if(typeof Promise!=="function")throw TypeError("callback not provided");return new Promise(function(Y,W){z9($,Z||{},function(G,X){if(G)W(G);else Y(X)})})}H6($,Z||{},function(Y,W){if(Y){if(Y.code==="EACCES"||Z&&Z.ignoreErrors)Y=null,W=!1}Q(Y,W)})}function hO($,Z){try{return H6.sync($,Z||{})}catch(Q){if(Z&&Z.ignoreErrors||Q.code==="EACCES")return!1;else throw Q}}});var nJ=O((ky,iJ)=>{var O$=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",mJ=Y1("path"),uO=O$?";":":",lJ=uJ(),pJ=($)=>Object.assign(Error(`not found: ${$}`),{code:"ENOENT"}),cJ=($,Z)=>{let Q=Z.colon||uO,Y=$.match(/\//)||O$&&$.match(/\\/)?[""]:[...O$?[process.cwd()]:[],...(Z.path||process.env.PATH||"").split(Q)],W=O$?Z.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",G=O$?W.split(Q):[""];if(O$){if($.indexOf(".")!==-1&&G[0]!=="")G.unshift("")}return{pathEnv:Y,pathExt:G,pathExtExe:W}},dJ=($,Z,Q)=>{if(typeof Z==="function")Q=Z,Z={};if(!Z)Z={};let{pathEnv:Y,pathExt:W,pathExtExe:G}=cJ($,Z),X=[],J=(K)=>new Promise((V,z)=>{if(K===Y.length)return Z.all&&X.length?V(X):z(pJ($));let F=Y[K],D=/^".*"$/.test(F)?F.slice(1,-1):F,L=mJ.join(D,$),U=!D&&/^\.[\\\/]/.test($)?$.slice(0,2)+L:L;V(B(U,K,0))}),B=(K,V,z)=>new Promise((F,D)=>{if(z===W.length)return F(J(V+1));let L=W[z];lJ(K+L,{pathExt:G},(U,q)=>{if(!U&&q)if(Z.all)X.push(K+L);else return F(K+L);return F(B(K,V,z+1))})});return Q?J(0).then((K)=>Q(null,K),Q):J(0)},mO=($,Z)=>{Z=Z||{};let{pathEnv:Q,pathExt:Y,pathExtExe:W}=cJ($,Z),G=[];for(let X=0;X<Q.length;X++){let J=Q[X],B=/^".*"$/.test(J)?J.slice(1,-1):J,K=mJ.join(B,$),V=!B&&/^\.[\\\/]/.test($)?$.slice(0,2)+K:K;for(let z=0;z<Y.length;z++){let F=V+Y[z];try{if(lJ.sync(F,{pathExt:W}))if(Z.all)G.push(F);else return F}catch(D){}}}if(Z.all&&G.length)return G;if(Z.nothrow)return null;throw pJ($)};iJ.exports=dJ;dJ.sync=mO});var rJ=O((fy,F9)=>{var aJ=($={})=>{let Z=$.env||process.env;if(($.platform||process.platform)!=="win32")return"PATH";return Object.keys(Z).reverse().find((Y)=>Y.toUpperCase()==="PATH")||"Path"};F9.exports=aJ;F9.exports.default=aJ});var eJ=O((vy,sJ)=>{var tJ=Y1("path"),lO=nJ(),pO=rJ();function oJ($,Z){let Q=$.options.env||process.env,Y=process.cwd(),W=$.options.cwd!=null,G=W&&process.chdir!==void 0&&!process.chdir.disabled;if(G)try{process.chdir($.options.cwd)}catch(J){}let X;try{X=lO.sync($.command,{path:Q[pO({env:Q})],pathExt:Z?tJ.delimiter:void 0})}catch(J){}finally{if(G)process.chdir(Y)}if(X)X=tJ.resolve(W?$.options.cwd:"",X);return X}function cO($){return oJ($)||oJ($,!0)}sJ.exports=cO});var $3=O((nO,D9)=>{var L9=/([()\][%!^"`<>&|;, *?])/g;function dO($){return $=$.replace(L9,"^$1"),$}function iO($,Z){if($=`${$}`,$=$.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),$=$.replace(/(?=(\\+?)?)\1$/,"$1$1"),$=`"${$}"`,$=$.replace(L9,"^$1"),Z)$=$.replace(L9,"^$1");return $}nO.command=dO;nO.argument=iO});var Q3=O((gy,Z3)=>{Z3.exports=/^#!(.*)/});var W3=O((hy,Y3)=>{var tO=Q3();Y3.exports=($="")=>{let Z=$.match(tO);if(!Z)return null;let[Q,Y]=Z[0].replace(/#! ?/,"").split(" "),W=Q.split("/").pop();if(W==="env")return Y;return Y?`${W} ${Y}`:W}});var X3=O((uy,G3)=>{var U9=Y1("fs"),oO=W3();function sO($){let Q=Buffer.alloc(150),Y;try{Y=U9.openSync($,"r"),U9.readSync(Y,Q,0,150,0),U9.closeSync(Y)}catch(W){}return oO(Q.toString())}G3.exports=sO});var H3=O((my,B3)=>{var eO=Y1("path"),J3=eJ(),K3=$3(),$j=X3(),Zj=process.platform==="win32",Qj=/\.(?:com|exe)$/i,Yj=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Wj($){$.file=J3($);let Z=$.file&&$j($.file);if(Z)return $.args.unshift($.file),$.command=Z,J3($);return $.file}function Gj($){if(!Zj)return $;let Z=Wj($),Q=!Qj.test(Z);if($.options.forceShell||Q){let Y=Yj.test(Z);$.command=eO.normalize($.command),$.command=K3.command($.command),$.args=$.args.map((G)=>K3.argument(G,Y));let W=[$.command].concat($.args).join(" ");$.args=["/d","/s","/c",`"${W}"`],$.command=process.env.comspec||"cmd.exe",$.options.windowsVerbatimArguments=!0}return $}function Xj($,Z,Q){if(Z&&!Array.isArray(Z))Q=Z,Z=null;Z=Z?Z.slice(0):[],Q=Object.assign({},Q);let Y={command:$,args:Z,options:Q,file:void 0,original:{command:$,args:Z}};return Q.shell?Y:Gj(Y)}B3.exports=Xj});var F3=O((ly,z3)=>{var q9=process.platform==="win32";function A9($,Z){return Object.assign(Error(`${Z} ${$.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${Z} ${$.command}`,path:$.command,spawnargs:$.args})}function Jj($,Z){if(!q9)return;let Q=$.emit;$.emit=function(Y,W){if(Y==="exit"){let G=V3(W,Z);if(G)return Q.call($,"error",G)}return Q.apply($,arguments)}}function V3($,Z){if(q9&&$===1&&!Z.file)return A9(Z.original,"spawn");return null}function Kj($,Z){if(q9&&$===1&&!Z.file)return A9(Z.original,"spawnSync");return null}z3.exports={hookChildProcess:Jj,verifyENOENT:V3,verifyENOENTSync:Kj,notFoundError:A9}});var U3=O((py,j$)=>{var L3=Y1("child_process"),N9=H3(),M9=F3();function D3($,Z,Q){let Y=N9($,Z,Q),W=L3.spawn(Y.command,Y.args,Y.options);return M9.hookChildProcess(W,Y),W}function Bj($,Z,Q){let Y=N9($,Z,Q),W=L3.spawnSync(Y.command,Y.args,Y.options);return W.error=W.error||M9.verifyENOENTSync(W.status,Y),W}j$.exports=D3;j$.exports.spawn=D3;j$.exports.sync=Bj;j$.exports._parse=N9;j$.exports._enoent=M9});import{readFile as jP}from"fs/promises";import{homedir as PP}from"os";import{join as wP,resolve as $K}from"path";class fZ{done=[];undone=[];record($){this.done.push($),this.undone=[]}get canUndo(){return this.done.length>0}get canRedo(){return this.undone.length>0}peekUndo(){return this.done[this.done.length-1]}commitUndo($,Z){if(this.peekUndo()?.id!==$.id)throw Error("Checkpoint history changed during undo");this.done.pop(),this.undone.push({...$,...Z?{redoRef:Z}:{}})}peekRedo(){return this.undone[this.undone.length-1]}commitRedo($){if(this.peekRedo()?.id!==$.id)throw Error("Checkpoint history changed during redo");this.undone.pop();let{redoRef:Z,...Q}=$;this.done.push(Q)}restore($,Z=[]){this.done=[...$],this.undone=[...Z]}state(){return{done:[...this.done],undone:[...this.undone]}}all(){return[...this.done]}first(){return this.done[0]}last(){return this.done[this.done.length-1]}}class I1{commands=new Map;register($){this.commands.set($.name,$)}get($){return this.commands.get($)}list(){return[...this.commands.values()].sort(($,Z)=>$.name.localeCompare(Z.name))}has($){return this.commands.has($)}parse($){if(!$.startsWith("/"))return;let Z=$.slice(1),Q=Z.search(/\s/);return Q===-1?{name:Z,args:""}:{name:Z.slice(0,Q),args:Z.slice(Q+1).trim()}}async execute($,Z){let Q=this.parse($);if(!Q)return{handled:!1};let Y=this.commands.get(Q.name);if(!Y)return{handled:!0,message:`Unknown command: /${Q.name}`};return await Y.run({...Z,args:Q.args})??{handled:!0}}}var BK=new Set(["rate_limit","overloaded","network"]);class c extends Error{kind;status;retryAfterMs;constructor($,Z,Q){super(Z);if(this.name="AiError",this.kind=$,Q?.status!==void 0)this.status=Q.status;if(Q?.retryAfterMs!==void 0)this.retryAfterMs=Q.retryAfterMs}get retryable(){return BK.has(this.kind)}}var HK=[/prompt is too long/i,/context window/i,/context[_ ]length[_ ]exceeded/i,/exceeds the maximum number of tokens/i,/input token count.*exceeds/i,/too many total text bytes/i];function vZ($){return HK.some((Z)=>Z.test($))}function VK($){let Z=$.get("retry-after-ms");if(Z){let Y=Number.parseFloat(Z);if(!Number.isNaN(Y))return Y}let Q=$.get("retry-after");if(Q){let Y=Number.parseFloat(Q);if(!Number.isNaN(Y))return Y*1000;let W=Date.parse(Q);if(!Number.isNaN(W))return W-Date.now()}return}function R$($,Z,Q){let Y={status:$,retryAfterMs:VK(Q)};if($===401||$===403)return new c("auth",Z,Y);if($===404)return new c("not_found",Z,Y);if($===429)return new c("rate_limit",Z,Y);if($===529||$===503)return new c("overloaded",Z,Y);if($>=500)return new c("api",Z,Y);if(vZ(Z))return new c("context_too_long",Z,Y);return new c("bad_request",Z,Y)}var c9={models:[{provider:"anthropic",id:"claude-opus-5",name:"Claude Opus 5",contextWindow:1e6,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingMode:"adaptive",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite:6.25}},{provider:"anthropic",id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindow:1e6,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingMode:"adaptive",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite:3.75}},{provider:"anthropic",id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindow:200000,maxOutput:64000,modalities:["text","image"],thinking:!0,thinkingMode:"budget",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite:1.25}},{provider:"openai",id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:5,output:30,cacheRead:0.5,cacheWrite:6.25}},{provider:"openai",id:"gpt-5.1",name:"GPT-5.1",contextWindow:400000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:1.25,output:10,cacheRead:0.125,cacheWrite:0}},{provider:"openai",id:"gpt-5-mini",name:"GPT-5 mini",contextWindow:400000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:0.25,output:2,cacheRead:0.025,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max","ultra"],defaultThinkingLevel:"low",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max","ultra"],defaultThinkingLevel:"medium",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max"],defaultThinkingLevel:"medium",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"google",id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",contextWindow:1048576,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:{input:1.25,output:10,cacheRead:0.31,cacheWrite:0}},{provider:"google",id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",contextWindow:1048576,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:{input:0.3,output:2.5,cacheRead:0.075,cacheWrite:0}}]};var FK=[{id:"amazon-bedrock",name:"Amazon Bedrock",api:"openai-responses",env:["AWS_BEARER_TOKEN_BEDROCK"]},{id:"anthropic",name:"Anthropic",api:"anthropic-messages",baseUrl:"https://api.anthropic.com",env:["ANTHROPIC_API_KEY"],auth:"anthropic"},{id:"azure-openai-responses",name:"Azure OpenAI",api:"openai-responses",env:["AZURE_OPENAI_API_KEY"],auth:"azure"},{id:"cerebras",name:"Cerebras",api:"openai-completions",baseUrl:"https://api.cerebras.ai/v1",env:["CEREBRAS_API_KEY"]},{id:"cloudflare-ai-gateway",name:"Cloudflare AI Gateway",api:"openai-completions",env:["CLOUDFLARE_API_KEY"],auth:"cloudflare"},{id:"cloudflare-workers-ai",name:"Cloudflare Workers AI",api:"openai-completions",env:["CLOUDFLARE_API_KEY"]},{id:"deepseek",name:"DeepSeek",api:"openai-completions",baseUrl:"https://api.deepseek.com",env:["DEEPSEEK_API_KEY"]},{id:"fireworks",name:"Fireworks",api:"anthropic-messages",baseUrl:"https://api.fireworks.ai/inference",env:["FIREWORKS_API_KEY"],auth:"anthropic"},{id:"github-copilot",name:"GitHub Copilot",api:"openai-responses",baseUrl:"https://api.individual.githubcopilot.com",env:["COPILOT_GITHUB_TOKEN"],headers:{"user-agent":"GitHubCopilotChat/0.35.0","editor-version":"vscode/1.107.0","editor-plugin-version":"copilot-chat/0.35.0","copilot-integration-id":"vscode-chat"}},{id:"google",name:"Google",api:"google-generative-ai",baseUrl:"https://generativelanguage.googleapis.com/v1beta",env:["GEMINI_API_KEY"],auth:"google"},{id:"google-vertex",name:"Google Vertex AI",api:"google-vertex",env:["GOOGLE_CLOUD_API_KEY"],auth:"google"},{id:"groq",name:"Groq",api:"openai-completions",baseUrl:"https://api.groq.com/openai/v1",env:["GROQ_API_KEY"]},{id:"huggingface",name:"Hugging Face",api:"openai-completions",baseUrl:"https://router.huggingface.co/v1",env:["HF_TOKEN"]},{id:"kimi-coding",name:"Kimi For Coding",api:"anthropic-messages",baseUrl:"https://api.kimi.com/coding",env:["KIMI_API_KEY"],auth:"anthropic",headers:{"user-agent":"KimiCLI/1.5"}},{id:"minimax",name:"MiniMax",api:"anthropic-messages",baseUrl:"https://api.minimax.io/anthropic",env:["MINIMAX_API_KEY"],auth:"anthropic"},{id:"mistral",name:"Mistral",api:"openai-completions",baseUrl:"https://api.mistral.ai/v1",env:["MISTRAL_API_KEY"]},{id:"moonshotai",name:"Moonshot AI",api:"openai-completions",baseUrl:"https://api.moonshot.ai/v1",env:["MOONSHOT_API_KEY"]},{id:"nvidia",name:"NVIDIA NIM",api:"openai-completions",baseUrl:"https://integrate.api.nvidia.com/v1",env:["NVIDIA_API_KEY"],headers:{"nvcf-poll-seconds":"3600"}},{id:"openai",name:"OpenAI",api:"openai-responses",baseUrl:"https://api.openai.com/v1",env:["OPENAI_API_KEY"]},{id:"openai-codex",name:"OpenAI Codex",api:"openai-responses",baseUrl:"https://chatgpt.com/backend-api/codex",env:[]},{id:"opencode",name:"OpenCode Zen",api:"openai-completions",baseUrl:"https://opencode.ai/zen/v1",env:["OPENCODE_API_KEY"]},{id:"opencode-go",name:"OpenCode Go",api:"openai-completions",baseUrl:"https://opencode.ai/zen/go/v1",env:["OPENCODE_API_KEY"]},{id:"openrouter",name:"OpenRouter",api:"openai-completions",baseUrl:"https://openrouter.ai/api/v1",env:["OPENROUTER_API_KEY"]},{id:"qwen-token-plan",name:"Qwen Token Plan",api:"openai-completions",baseUrl:"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",env:["QWEN_TOKEN_PLAN_API_KEY"]},{id:"vercel-ai-gateway",name:"Vercel AI Gateway",api:"anthropic-messages",baseUrl:"https://ai-gateway.vercel.sh",env:["AI_GATEWAY_API_KEY"],auth:"anthropic"},{id:"xai",name:"xAI",api:"openai-completions",baseUrl:"https://api.x.ai/v1",env:["XAI_API_KEY"]},{id:"zai",name:"Z.AI Coding Plan",api:"openai-completions",baseUrl:"https://api.z.ai/api/coding/paas/v4",env:["ZAI_API_KEY"]}],m0=new Map(FK.map(($)=>[$.id,$]));function n1($){return m0.get($)}function E$($){return $.api??n1($.provider)?.api??"openai-completions"}function P6($){return $.baseUrl??n1($.provider)?.baseUrl}function a1($){return n1($)?.env??[]}var LK=new Set(['"',"\\","/","b","f","n","r","t","u"]),DK={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};function w6($){let Z="",Q=!1;for(let Y=0;Y<$.length;Y++){let W=$[Y];if(!Q){if(Z+=W,W==='"')Q=!0;continue}if(W==='"'){Z+=W,Q=!1;continue}if(W==="\\"){let X=$[Y+1];if(X===void 0){Z+="\\\\";continue}if(X==="u"&&/^[0-9a-fA-F]{4}$/.test($.slice(Y+2,Y+6))){Z+=$.slice(Y,Y+6),Y+=5;continue}if(X!=="u"&&LK.has(X)){Z+=`\\${X}`,Y+=1;continue}Z+="\\\\";continue}let G=W.codePointAt(0)??0;if(G<=31)Z+=DK[W]??`\\u${G.toString(16).padStart(4,"0")}`;else Z+=W}return Z}function d9($){try{return JSON.parse($)}catch(Z){let Q=w6($);if(Q!==$)return JSON.parse(Q);throw Z}}class i9{text;pos=0;constructor($){this.text=$}ws(){while(this.pos<this.text.length&&/\s/.test(this.text[this.pos]))this.pos++}peek(){return this.text[this.pos]}value(){this.ws();let $=this.peek();if($===void 0)return;if($==="{")return this.object();if($==="[")return this.array();if($==='"')return this.string();if($==="t"||$==="f"||$==="n")return this.literal();if($==="-"||/[0-9]/.test($))return this.number();return}object(){let $={};this.pos++;for(;;){if(this.ws(),this.peek()===void 0)return $;if(this.peek()==="}")return this.pos++,$;if(this.peek()===","){this.pos++;continue}if(this.peek()!=='"')return $;let Z=this.pos,Q=this.string();if(this.pos>=this.text.length&&!this.closedString(Z))return $;if(this.ws(),this.peek()!==":")return $;if(this.pos++,this.ws(),this.peek()===void 0)return $;let Y=this.pos,W=this.value();if(W!==void 0||this.consumedNull(Y))$[Q]=W??null}}array(){let $=[];this.pos++;for(;;){if(this.ws(),this.peek()===void 0)return $;if(this.peek()==="]")return this.pos++,$;if(this.peek()===","){this.pos++;continue}let Z=this.pos,Q=this.value();if(Q===void 0&&!this.consumedNull(Z))return $;$.push(Q??null)}}closedString($){let Z=$+1;while(Z<this.text.length)if(this.text[Z]==="\\")Z+=2;else if(this.text[Z]==='"')return!0;else Z+=1;return!1}consumedNull($){return this.text.slice($,this.pos).trim().startsWith("null")}string(){this.pos++;let $="";while(this.pos<this.text.length){let Z=this.text[this.pos];if(Z==='"')return this.pos++,$;if(Z==="\\"){let Q=this.text[this.pos+1];if(Q===void 0)return this.pos++,$;if(Q==="u"){let W=this.text.slice(this.pos+2,this.pos+6);if(/^[0-9a-fA-F]{4}$/.test(W))$+=String.fromCharCode(Number.parseInt(W,16)),this.pos+=6;else return this.pos=this.text.length,$;continue}$+={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
10
- `,r:"\r",t:"\t"}[Q]??Q,this.pos+=2;continue}$+=Z,this.pos++}return $}literal(){for(let[$,Z]of[["true",!0],["false",!1],["null",null]])if($.startsWith(this.text.slice(this.pos,this.pos+$.length))){let Q=this.text.slice(this.pos);if($.startsWith(Q))return this.pos=this.text.length,Z;if(Q.startsWith($))return this.pos+=$.length,Z}this.pos=this.text.length;return}number(){let Z=/^-?[0-9]*\.?[0-9]*(?:[eE][+-]?[0-9]*)?/.exec(this.text.slice(this.pos))?.[0]??"";this.pos+=Z.length;let Q=Number(Z);return Number.isNaN(Q)?void 0:Q}}function n9($){return new i9($).value()}function f0($){if(!$||$.trim()==="")return{};try{let Z=d9($);if(Z!==null&&typeof Z==="object"&&!Array.isArray(Z))return Z;return{}}catch{for(let Z of[$,w6($)])try{let Q=n9(Z);if(Q!==null&&typeof Q==="object"&&!Array.isArray(Q))return Q}catch{}return{}}}var UK=60000;function T6(){let $=Error("Request aborted");return $.name="AbortError",$}function qK($,Z){return new Promise((Q,Y)=>{if(Z?.aborted){Y(T6());return}let W=()=>{clearTimeout(G),Y(T6())},G=setTimeout(()=>{Z?.removeEventListener("abort",W),Q()},Math.max(0,$));Z?.addEventListener("abort",W,{once:!0})})}function AK($,Z,Q){if($.retryAfterMs!==void 0&&$.retryAfterMs>0)return Math.min($.retryAfterMs,Q);return Math.min(0.5*2**Z,8)*1000*(1-Math.random()*0.25)}async function l0($,Z={}){let Q=Z.maxRetries??2,Y=Z.maxRetryDelayMs??UK,W=Q;for(;;)try{return await $()}catch(G){if(Z.signal?.aborted)throw T6();if(W<=0||!(G instanceof c)||!G.retryable)throw G;let X=Q-W;W--,await qK(AK(G,X,Y),Z.signal)}}function r9($){if(!$.event&&$.data.length===0)return null;let Z={event:$.event,data:$.data.join(`
11
- `)};return $.event=null,$.data=[],Z}function a9($,Z){if($==="")return r9(Z);if($.startsWith(":"))return null;let Q=$.indexOf(":"),Y=Q===-1?$:$.slice(0,Q),W=Q===-1?"":$.slice(Q+1);if(W.startsWith(" "))W=W.slice(1);if(Y==="event")Z.event=W;else if(Y==="data")Z.data.push(W);return null}async function*p0($,Z){let Q=$.getReader(),Y=new TextDecoder,W={event:null,data:[]},G="",X=function*(){let J=G.search(/[\r\n]/);while(J!==-1){let B=G.slice(0,J),K=J+1;if(G[J]==="\r"&&G[K]===`
12
- `)K+=1;G=G.slice(K);let V=a9(B,W);if(V)yield V;J=G.search(/[\r\n]/)}};try{while(!0){if(Z?.aborted)throw Error("Request was aborted");let{value:B,done:K}=await Q.read();if(K)break;G+=Y.decode(B,{stream:!0}),yield*X()}if(G+=Y.decode(),yield*X(),G.length>0){let B=a9(G,W);if(B)yield B}let J=r9(W);if(J)yield J}finally{Q.releaseLock()}}function c0($){return $.replace(/\/+$/,"")}function NK($){for(let Z of $){let Q=process.env[Z];if(Q)return Q}return}async function W1($,Z){let Q=await Z?.getCredentials?.();if(Q){if($.provider==="anthropic"&&Q.type==="oauth")throw new c("auth","Anthropic account-plan authentication is not supported");return Q}let Y=Z?.apiKey??NK(a1($.provider));if(!Y){let W=a1($.provider),G=W.length>0?`set ${W.join(" or ")} or run /login`:"run /login";throw new c("auth",`No credentials for provider "${$.provider}" (${G})`)}return{type:"apiKey",apiKey:Y}}function MK($){let Z=process.env.CLOUDFLARE_ACCOUNT_ID;if(!Z)return;if($.provider==="cloudflare-workers-ai")return`https://api.cloudflare.com/client/v4/accounts/${Z}/ai/v1`;let Q=process.env.CLOUDFLARE_GATEWAY_ID;if(!Q)return;let Y=`https://gateway.ai.cloudflare.com/v1/${Z}/${Q}`;if($.api==="anthropic-messages")return`${Y}/anthropic`;if($.api==="openai-responses")return`${Y}/openai`;return`${Y}/compat`}function OK(){let $=process.env.AZURE_OPENAI_BASE_URL,Z=process.env.AZURE_OPENAI_RESOURCE_NAME;if(!$&&!Z)return;let Q=c0($??`https://${Z}.openai.azure.com`);return Q.endsWith("/openai/v1")?Q:`${Q}/openai/v1`}function jK(){let $=process.env.GOOGLE_CLOUD_PROJECT??process.env.GCLOUD_PROJECT,Z=process.env.GOOGLE_CLOUD_LOCATION;if(!$||!Z)return"https://aiplatform.googleapis.com/v1/publishers/google";return`https://${Z}-aiplatform.googleapis.com/v1/projects/${$}/locations/${Z}/publishers/google`}function PK(){return`https://bedrock-runtime.${process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION??"us-east-1"}.amazonaws.com/openai/v1`}function wK($,Z){if(Z?.baseUrl)return c0(Z.baseUrl);if($.provider.startsWith("cloudflare-")){let Q=MK($);if(Q)return c0(Q)}if($.provider==="azure-openai-responses"){let Q=OK();if(Q)return c0(Q)}if($.provider==="google-vertex"){let Q=jK();if(Q)return c0(Q)}if($.provider==="amazon-bedrock")return PK();return c0(P6($)??"")}function r1($,Z){let Q=c0($),Y=Z.startsWith("/")?Z:`/${Z}`;if(!Q)return Y;if(Y.startsWith("/v1/")&&Q.endsWith("/v1"))return`${Q}${Y.slice(3)}`;return`${Q}${Y}`}function G1($,Z){let Q=n1($.provider),Y={...Q?.headers,...$.headers};if(Z.type==="oauth")return{...Y,authorization:`Bearer ${Z.accessToken}`,...Z.headers};if(Q?.auth==="anthropic")return{...Y,"x-api-key":Z.apiKey};if(Q?.auth==="google")return{...Y,"x-goog-api-key":Z.apiKey};if(Q?.auth==="azure")return{...Y,"api-key":Z.apiKey};if(Q?.auth==="cloudflare")return{...Y,"cf-aig-authorization":`Bearer ${Z.apiKey}`};return{...Y,authorization:`Bearer ${Z.apiKey}`}}function X1($,Z,Q){if(Q?.baseUrl)return c0(Q.baseUrl);if(Z.type==="oauth"&&Z.baseUrl)return c0(Z.baseUrl);return wK($,Q)}function I6($,Z){return(Z.inputTokens*$.input+Z.outputTokens*$.output+Z.cacheReadTokens*$.cacheRead+Z.cacheWriteTokens*$.cacheWrite)/1e6}function S$(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0}}function J1($,Z){return{inputTokens:$.inputTokens+Z.inputTokens,outputTokens:$.outputTokens+Z.outputTokens,cacheReadTokens:$.cacheReadTokens+Z.cacheReadTokens,cacheWriteTokens:$.cacheWriteTokens+Z.cacheWriteTokens,costUsd:($.costUsd??0)+(Z.costUsd??0)}}class gZ{isComplete;extractResult;queue=[];waiting=[];done=!1;finalResult;resolveFinal;constructor($,Z){this.isComplete=$;this.extractResult=Z;this.finalResult=new Promise((Q)=>{this.resolveFinal=Q})}push($){if(this.done)return;if(this.isComplete($))this.done=!0,this.resolveFinal(this.extractResult($));let Z=this.waiting.shift();if(Z)Z({value:$,done:!1});else this.queue.push($)}end(){this.done=!0;while(this.waiting.length>0)this.waiting.shift()?.({value:void 0,done:!0})}async*[Symbol.asyncIterator](){while(!0)if(this.queue.length>0)yield this.queue.shift();else if(this.done)return;else{let $=await new Promise((Z)=>this.waiting.push(Z));if($.done)return;yield $.value}}result(){return this.finalResult}}class hZ extends gZ{constructor(){super(($)=>$.type==="done"||$.type==="error",($)=>{if($.type==="done")return $.message;if($.type==="error")return $.error;throw Error("unexpected final event")})}}function TK($){return{role:"assistant",content:[],model:`${$.provider}/${$.id}`,usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0},stopReason:"end",timestamp:Date.now()}}function d0($,Z){Z.usage.costUsd=I6($.pricing,Z.usage)}function K1($,Z,Q){let Y=new hZ,W=TK($);return(async()=>{try{if(await Q(Y,W),Z?.signal?.aborted)throw Error("Request was aborted");if(W.stopReason==="error")throw new c("api",W.errorMessage??"provider reported an error");Y.push({type:"done",message:W})}catch(G){W.stopReason=Z?.signal?.aborted?"aborted":"error",W.errorMessage=G instanceof Error?G.message:JSON.stringify(G),Y.push({type:"error",reason:W.stopReason,...G instanceof c?{errorKind:G.kind}:{},error:W})}finally{Y.end()}})(),Y}async function B1($,Z,Q,Y){let W=Y?.fetch??fetch,G;try{G=await W($,{method:"POST",headers:{"content-type":"application/json",accept:"text/event-stream",...Z},body:JSON.stringify(Q),...Y?.signal?{signal:Y.signal}:{}})}catch(X){if(Y?.signal?.aborted)throw X;let J=X instanceof Error?X.message:String(X);throw new c("network",J)}if(!G.ok){let X=await G.text();throw R$(G.status,X,G.headers)}if(!G.body)throw new c("api","response has no body");return G}var IK="2023-06-01",R6={type:"ephemeral"};function t9($){return $.filter((Z)=>Z.type!=="text"||Z.text.trim().length>0).map((Z)=>Z.type==="text"?{type:"text",text:Z.text}:{type:"image",source:{type:"base64",media_type:Z.mimeType,data:Z.data}})}function RK($){let Z=[];for(let Q of $)if(Q.type==="text"){if(Q.text.trim().length===0)continue;Z.push({type:"text",text:Q.text})}else if(Q.type==="thinking"){if(Q.redacted)Z.push({type:"redacted_thinking",data:Q.signature??""});else if(Q.signature)Z.push({type:"thinking",thinking:Q.thinking,signature:Q.signature});else if(Q.thinking.trim().length>0)Z.push({type:"text",text:Q.thinking})}else Z.push({type:"tool_use",id:Q.id,name:Q.name,input:Q.arguments??{}});return Z}function EK($,Z){let Q=[];for(let W=0;W<$.length;W++){let G=$[W];if(G.role==="user"){let X=t9(G.content);if(X.length>0)Q.push({role:"user",content:X})}else if(G.role==="assistant"){let X=RK(G.content);if(X.length>0)Q.push({role:"assistant",content:X})}else{let X=[];while(W<$.length){let J=$[W];if(!J||J.role!=="toolResult")break;X.push({type:"tool_result",tool_use_id:J.toolCallId,content:t9(J.content),is_error:J.isError}),W++}W--,Q.push({role:"user",content:X})}}let Y=Q[Q.length-1];if(Z&&Y&&Y.role==="user"){let W=Y.content,G=W[W.length-1];if(G)G.cache_control=R6}return Q}function SK($,Z,Q){if(!$.thinking||Z===void 0)return;if(Z==="off"){Q.thinking={type:"disabled"};return}if($.thinkingMode==="budget"){let Y={low:4096,medium:8192,high:16384};Q.thinking={type:"enabled",budget_tokens:Y[Z]??8192,display:"summarized"};return}Q.thinking={type:"adaptive",display:"summarized"},Q.output_config={effort:Z}}function CK($,Z,Q){let Y=$.provider==="anthropic",W={model:$.id,max_tokens:Q?.maxTokens??$.maxOutput,messages:EK(Z.messages,Y),stream:!0};if(Z.systemPrompt&&Z.systemPrompt.length>0){let G=Z.systemPrompt.reduce((X,J,B)=>J.dynamic?X:B,-1);W.system=Z.systemPrompt.map((X,J)=>({type:"text",text:X.text,...Y&&J===G?{cache_control:R6}:{}}))}if(Z.tools&&Z.tools.length>0)W.tools=Z.tools.map((G,X)=>({name:G.name,description:G.description,input_schema:G.inputSchema,...Y&&X===(Z.tools?.length??0)-1?{cache_control:R6}:{}}));if(Q?.temperature!==void 0)W.temperature=Q.temperature;return SK($,Q?.thinkingLevel,W),W}function yK($){switch($){case"end_turn":case"stop_sequence":case"pause_turn":return{stopReason:"end"};case"max_tokens":return{stopReason:"length"};case"tool_use":return{stopReason:"toolUse"};case"refusal":return{stopReason:"error",errorMessage:"The model refused to complete the request"};case"model_context_window_exceeded":return{stopReason:"error",errorMessage:"Context window exceeded"};default:return{stopReason:"end"}}}function o9($,Z,Q){return K1($,Q,async(Y,W)=>{let G=CK($,Z,Q),X=await l0(async()=>{let K=await W1($,Q),V=X1($,K,Q),z={"anthropic-version":IK,...G1($,K),...Q?.headers};return B1(r1(V,"/v1/messages"),z,G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=new Map,B=X.body;for await(let K of p0(B,Q?.signal)){if(K.event==="error")throw Error(K.data);if(!K.data)continue;let V=JSON.parse(K.data),z=V.type;if(z==="message_start"){let F=V.message?.usage;if(F)W.usage.inputTokens=F.input_tokens??0,W.usage.outputTokens=F.output_tokens??0,W.usage.cacheReadTokens=F.cache_read_input_tokens??0,W.usage.cacheWriteTokens=F.cache_creation_input_tokens??0,d0($,W)}else if(z==="content_block_start"){let{index:F,content_block:D}=V,L=W.content.length;J.set(F,{contentIndex:L,partialJson:""});let U=D.type;if(U==="text")W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:L,partial:W});else if(U==="thinking")W.content.push({type:"thinking",thinking:"",signature:""}),Y.push({type:"thinking_start",contentIndex:L,partial:W});else if(U==="redacted_thinking")W.content.push({type:"thinking",thinking:"[reasoning redacted]",signature:D.data??"",redacted:!0}),Y.push({type:"thinking_start",contentIndex:L,partial:W});else if(U==="tool_use")W.content.push({type:"toolCall",id:D.id,name:D.name,arguments:D.input??{}}),Y.push({type:"toolcall_start",contentIndex:L,partial:W});else J.delete(F)}else if(z==="content_block_delta"){let F=J.get(V.index);if(!F)continue;let D=W.content[F.contentIndex],L=V.delta,U=L.type;if(U==="text_delta"&&D?.type==="text")D.text+=L.text,Y.push({type:"text_delta",contentIndex:F.contentIndex,delta:L.text,partial:W});else if(U==="thinking_delta"&&D?.type==="thinking")D.thinking+=L.thinking,Y.push({type:"thinking_delta",contentIndex:F.contentIndex,delta:L.thinking,partial:W});else if(U==="input_json_delta"&&D?.type==="toolCall")F.partialJson+=L.partial_json,D.arguments=f0(F.partialJson),Y.push({type:"toolcall_delta",contentIndex:F.contentIndex,delta:L.partial_json,partial:W});else if(U==="signature_delta"&&D?.type==="thinking")D.signature=(D.signature??"")+L.signature}else if(z==="content_block_stop"){let F=J.get(V.index);if(!F)continue;let D=W.content[F.contentIndex];if(D?.type==="text")Y.push({type:"text_end",contentIndex:F.contentIndex,content:D.text,partial:W});else if(D?.type==="thinking")Y.push({type:"thinking_end",contentIndex:F.contentIndex,content:D.thinking,partial:W});else if(D?.type==="toolCall")D.arguments=f0(F.partialJson),Y.push({type:"toolcall_end",contentIndex:F.contentIndex,toolCall:D,partial:W})}else if(z==="message_delta"){let F=V.delta;if(F?.stop_reason){let L=yK(F.stop_reason);if(W.stopReason=L.stopReason,L.errorMessage)W.errorMessage=L.errorMessage}let D=V.usage;if(D){if(D.input_tokens!=null)W.usage.inputTokens=D.input_tokens;if(D.output_tokens!=null)W.usage.outputTokens=D.output_tokens;if(D.cache_read_input_tokens!=null)W.usage.cacheReadTokens=D.cache_read_input_tokens;if(D.cache_creation_input_tokens!=null)W.usage.cacheWriteTokens=D.cache_creation_input_tokens;d0($,W)}}}})}var C$={id:"anthropic",stream:o9};function bK($){let Z=[],Q=new Map,Y=(W,G)=>{if(G.length===0)return;let X=Z[Z.length-1];if(X&&X.role===W)X.parts.push(...G);else Z.push({role:W,parts:G})};for(let W of $)if(W.role==="user")Y("user",W.content.map((G)=>G.type==="text"?{text:G.text}:{inlineData:{mimeType:G.mimeType,data:G.data}}));else if(W.role==="assistant"){let G=[];for(let X of W.content)if(X.type==="text"){if(X.text.trim().length>0)G.push({text:X.text})}else if(X.type==="thinking");else Q.set(X.id,X.name),G.push({functionCall:{name:X.name,args:X.arguments??{}},...X.signature?{thoughtSignature:X.signature}:{}});Y("model",G)}else{let G=Q.get(W.toolCallId)??W.toolName,X=W.content.filter((B)=>B.type==="text").map((B)=>B.text).join(`
13
- `),J=[{functionResponse:{name:G,response:W.isError?{error:X}:{output:X}}}];for(let B of W.content)if(B.type==="image")J.push({inlineData:{mimeType:B.mimeType,data:B.data}});Y("user",J)}return{contents:Z,toolNames:Q}}function _K($){switch($){case"off":case"none":return 0;case"minimal":return 512;case"low":return 2048;case"medium":return 8192;case"high":return 24576;case"xhigh":return 32768;case"max":return 49152;case"ultra":return 65536;default:return 8192}}function xK($,Z,Q){let Y={contents:bK(Z.messages).contents};if(Z.systemPrompt&&Z.systemPrompt.length>0)Y.systemInstruction={parts:Z.systemPrompt.map((G)=>({text:G.text}))};if(Z.tools&&Z.tools.length>0)Y.tools=[{functionDeclarations:Z.tools.map((G)=>({name:G.name,description:G.description,parameters:G.inputSchema}))}];let W={maxOutputTokens:Q?.maxTokens??$.maxOutput};if(Q?.temperature!==void 0)W.temperature=Q.temperature;if($.thinking&&Q?.thinkingLevel)W.thinkingConfig={thinkingBudget:_K(Q.thinkingLevel),includeThoughts:Q.thinkingLevel!=="off"&&Q.thinkingLevel!=="none"};return Y.generationConfig=W,Y}function kK($,Z){switch($){case"STOP":return{stopReason:Z?"toolUse":"end"};case"MAX_TOKENS":return{stopReason:"length"};case"SAFETY":case"RECITATION":case"PROHIBITED_CONTENT":case"BLOCKLIST":return{stopReason:"error",errorMessage:`Generation stopped: ${$}`};default:return{stopReason:Z?"toolUse":"end"}}}function s9($,Z,Q){return K1($,Q,async(Y,W)=>{let G=xK($,Z,Q),X=await l0(async()=>{let U=await W1($,Q);if(U.type!=="apiKey")throw new c("auth",`${$.provider} requires API-key auth`);let q=X1($,U,Q).replace(/\/+$/,""),A=$.provider==="google-vertex"?`/models/${$.id}:streamGenerateContent?alt=sse`:`/models/${$.id}:streamGenerateContent?alt=sse`,N=`${q}${A}`;return B1(N,{...G1($,U),...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=-1,B=-1,K=0,V=!1,z,F=X.body,D=()=>{if(J!==-1){let U=W.content[J];if(U?.type==="text")Y.push({type:"text_end",contentIndex:J,content:U.text,partial:W});J=-1}if(B!==-1){let U=W.content[B];if(U?.type==="thinking")Y.push({type:"thinking_end",contentIndex:B,content:U.thinking,partial:W});B=-1}};for await(let U of p0(F,Q?.signal)){if(!U.data)continue;let q=JSON.parse(U.data),A=q.candidates?.[0],N=q.usageMetadata;if(N){let P=N.cachedContentTokenCount??0;W.usage.inputTokens=(N.promptTokenCount??0)-P,W.usage.cacheReadTokens=P,W.usage.outputTokens=(N.candidatesTokenCount??0)+(N.thoughtsTokenCount??0),d0($,W)}if(!A)continue;let j=A.content?.parts??[];for(let P of j)if(typeof P.text==="string")if(P.thought===!0){if(B===-1)B=W.content.length,W.content.push({type:"thinking",thinking:""}),Y.push({type:"thinking_start",contentIndex:B,partial:W});let M=W.content[B];if(M?.type==="thinking"){if(M.thinking+=P.text,typeof P.thoughtSignature==="string")M.signature=P.thoughtSignature;Y.push({type:"thinking_delta",contentIndex:B,delta:P.text,partial:W})}}else{if(J===-1)J=W.content.length,W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:J,partial:W});let M=W.content[J];if(M?.type==="text")M.text+=P.text,Y.push({type:"text_delta",contentIndex:J,delta:P.text,partial:W})}else if(P.functionCall){V=!0;let M=P.functionCall,S=W.content.length,g={type:"toolCall",id:`call_${K++}_${M.name}`,name:M.name,arguments:M.args??{},...typeof P.thoughtSignature==="string"?{signature:P.thoughtSignature}:{}};W.content.push(g),Y.push({type:"toolcall_start",contentIndex:S,partial:W}),Y.push({type:"toolcall_end",contentIndex:S,toolCall:g,partial:W})}if(typeof A.finishReason==="string")z=A.finishReason}D();let L=kK(z??"STOP",V);if(W.stopReason=L.stopReason,L.errorMessage)W.errorMessage=L.errorMessage})}var y$={id:"google",stream:s9};async function E6($){let Z=await $.getCredentials?.();if(!Z||Z.type!=="oauth"||Z.availableModelIds===void 0)return;let Q=new Set(Z.availableModelIds);return $.currentModels.filter((Y)=>Y.provider==="github-copilot"&&Q.has(Y.id))}var ZQ="https://chatgpt.com/backend-api/codex",fK=64,vK=128000,gK={input:0,output:0,cacheRead:0,cacheWrite:0};function QQ($){let Z=$?.trim();return Z?Z.slice(0,fK):void 0}function e9($){return typeof $==="number"&&Number.isFinite($)&&$>0?$:void 0}function hK($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function $Q($){return typeof $==="string"&&$.length>0?$:void 0}function uK($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return;let Q=$;if(typeof Q.slug!=="string"||Q.slug.length===0||Q.supported_in_api===!1||typeof Q.visibility==="string"&&Q.visibility!=="list")return;let Y=Z.find((F)=>F.provider==="openai-codex"&&F.id===Q.slug),W=e9(Q.context_window)??e9(Q.max_context_window)??Y?.contextWindow;if(!W)return;let G=Array.isArray(Q.input_modalities)?Q.input_modalities.filter((F)=>typeof F==="string"):[],X=["text"];if(G.includes("image")||Y?.modalities.includes("image"))X.push("image");let J=Array.isArray(Q.supported_reasoning_levels)?Q.supported_reasoning_levels.map((F)=>typeof F==="object"&&F!==null?$Q(F.effort):void 0).filter((F)=>F!==void 0):[],B=Y?.thinkingLevels,K=J.length>0?J:B,V=$Q(Q.default_reasoning_level)??Y?.defaultThinkingLevel,z=V&&(!K||K.includes(V))?V:void 0;return{provider:"openai-codex",id:Q.slug,...typeof Q.display_name==="string"?{name:Q.display_name}:{},contextWindow:W,maxOutput:Y?.maxOutput??vK,modalities:X,...K?.length||z||Y?.thinking?{thinking:!0}:{},...K&&K.length>0?{thinkingLevels:K}:{},...z?{defaultThinkingLevel:z}:{},pricing:Y?.pricing??gK,priority:hK(Q.priority)??Number.MAX_SAFE_INTEGER}}async function YQ($){let Z=await $.getCredentials?.();if(!Z||Z.type!=="oauth"||!Z.accountId)return;let Q=new URL(`${ZQ}/models`);Q.searchParams.set("client_version",$.clientVersion??"0.0.0");let Y=await($.fetch??fetch)(Q,{headers:{accept:"application/json",authorization:`Bearer ${Z.accessToken}`,"chatgpt-account-id":Z.accountId,originator:"mu"},...$.signal?{signal:$.signal}:{}});if(!Y.ok)throw R$(Y.status,await Y.text(),Y.headers);let W=await Y.json();if(typeof W!=="object"||W===null||!Array.isArray(W.models))throw Error("Could not discover ChatGPT models: invalid catalog response");let G=W.models;if(G.length===0)return;let X=G.map((J)=>uK(J,$.currentModels)).filter((J)=>J!==void 0).sort((J,B)=>J.priority-B.priority).map(({priority:J,...B})=>B);if(X.length===0)throw Error("Could not discover ChatGPT models: catalog contained no compatible models");return X}function mK($,Z,Q){if(Q?.provider==="openai-codex"){if($.type!=="oauth"||!$.accountId)throw Error("OpenAI Codex requires a ChatGPT account credential");let W=(Z?.baseUrl??ZQ).replace(/\/+$/,""),G=QQ(Z?.sessionId);return{url:`${W}/responses`,headers:{authorization:`Bearer ${$.accessToken}`,"chatgpt-account-id":$.accountId,originator:"mu","openai-beta":"responses=experimental",...G?{"session-id":G,"x-client-request-id":G}:{}}}}if(!Q)throw Error("A model is required");let Y=X1(Q,$,Z);return{url:r1(Y,"/responses"),headers:G1(Q,$)}}function lK($){let Z=[];for(let Q of $)if(Q.role==="user")Z.push({role:"user",content:Q.content.map((Y)=>Y.type==="text"?{type:"input_text",text:Y.text}:{type:"input_image",image_url:`data:${Y.mimeType};base64,${Y.data}`})});else if(Q.role==="assistant")for(let Y of Q.content)if(Y.type==="text"){if(Y.text.trim().length===0)continue;Z.push({role:"assistant",content:[{type:"output_text",text:Y.text}]})}else if(Y.type==="thinking"){if(!Y.signature)continue;try{let W=JSON.parse(Y.signature);Z.push({type:"reasoning",id:W.id,summary:[],...W.encrypted_content?{encrypted_content:W.encrypted_content}:{}})}catch{}}else Z.push({type:"function_call",call_id:Y.id,name:Y.name,arguments:JSON.stringify(Y.arguments??{})});else{let Y=Q.content.every((W)=>W.type==="text")?Q.content.map((W)=>W.text).join(`
14
- `):Q.content.map((W)=>W.type==="text"?{type:"input_text",text:W.text}:{type:"input_image",image_url:`data:${W.mimeType};base64,${W.data}`});Z.push({type:"function_call_output",call_id:Q.toolCallId,output:Y})}return Z}function pK($,Z,Q){let Y=$.provider==="openai-codex",W={model:$.id,input:lK(Z.messages),stream:!0,store:!1};if(!Y)W.max_output_tokens=Q?.maxTokens??$.maxOutput;if(Z.systemPrompt&&Z.systemPrompt.length>0)W.instructions=Z.systemPrompt.map((G)=>G.text).join(`
15
-
16
- `);else if(Y)W.instructions="You are a helpful assistant.";if(Z.tools&&Z.tools.length>0)W.tools=Z.tools.map((G)=>({type:"function",name:G.name,description:G.description,parameters:G.inputSchema,strict:Y?null:!1}));if(Y){W.text={verbosity:"low"},W.include=["reasoning.encrypted_content"],W.tool_choice="auto",W.parallel_tool_calls=!0;let G=QQ(Q?.sessionId);if(G)W.prompt_cache_key=G}if(Q?.temperature!==void 0)W.temperature=Q.temperature;if($.thinking&&Q?.thinkingLevel&&Q.thinkingLevel!=="off"){if(W.reasoning={effort:Q.thinkingLevel,summary:"auto"},!Y)W.include=["reasoning.encrypted_content"]}return W}function S6($,Z,Q){return K1($,Q,async(Y,W)=>{let G=pK($,Z,Q),X=await l0(async()=>{let V=await W1($,Q),{url:z,headers:F}=mK(V,Q,$);return B1(z,{...F,...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=new Map,B=!1,K=X.body;for await(let V of p0(K,Q?.signal)){if(!V.data||V.data==="[DONE]")continue;let z=JSON.parse(V.data),F=z.type;if(F==="response.output_item.added"){let{item:D,output_index:L}=z,U=D.type,q=W.content.length;if(U==="message")J.set(L,{contentIndex:q,kind:"text",partialJson:""}),W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:q,partial:W});else if(U==="reasoning")J.set(L,{contentIndex:q,kind:"reasoning",partialJson:""}),W.content.push({type:"thinking",thinking:"",signature:JSON.stringify({id:D.id})}),Y.push({type:"thinking_start",contentIndex:q,partial:W});else if(U==="function_call")B=!0,J.set(L,{contentIndex:q,kind:"function_call",partialJson:""}),W.content.push({type:"toolCall",id:D.call_id??D.id,name:D.name,arguments:{}}),Y.push({type:"toolcall_start",contentIndex:q,partial:W})}else if(F==="response.output_text.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="text")L.text+=z.delta,Y.push({type:"text_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.reasoning_summary_text.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="thinking")L.thinking+=z.delta,Y.push({type:"thinking_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.function_call_arguments.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="toolCall")D.partialJson+=z.delta,L.arguments=f0(D.partialJson),Y.push({type:"toolcall_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.output_item.done"){let D=J.get(z.output_index);if(!D)continue;let L=z.item,U=W.content[D.contentIndex];if(U?.type==="text")Y.push({type:"text_end",contentIndex:D.contentIndex,content:U.text,partial:W});else if(U?.type==="thinking")U.signature=JSON.stringify({id:L.id,...L.encrypted_content?{encrypted_content:L.encrypted_content}:{}}),Y.push({type:"thinking_end",contentIndex:D.contentIndex,content:U.thinking,partial:W});else if(U?.type==="toolCall"){let q=L.arguments??D.partialJson;U.arguments=f0(q),Y.push({type:"toolcall_end",contentIndex:D.contentIndex,toolCall:U,partial:W})}}else if(F==="response.completed"||F==="response.incomplete"||F==="response.failed"){let D=z.response,L=D.usage;if(L){let q=L.input_tokens_details?.cached_tokens??0;W.usage.inputTokens=(L.input_tokens??0)-q,W.usage.cacheReadTokens=q,W.usage.outputTokens=L.output_tokens??0,d0($,W)}if(F==="response.completed")W.stopReason=B?"toolUse":"end";else if(F==="response.incomplete"){let U=D.incomplete_details?.reason;W.stopReason=U==="max_output_tokens"?"length":"end"}else{let U=D.error;W.stopReason="error",W.errorMessage=U?.message??"response failed"}}else if(F==="error")throw Error(z.message??V.data)}})}var b$={id:"openai",stream:S6},t1={id:"openai-codex",stream:S6,discoverModels:YQ};function cK($){return $.content.filter((Q)=>Q.type==="text").map((Q)=>Q.text).join(`
17
- `)||"(image result attached in the following user message)"}function dK($){if($.content.every((Z)=>Z.type==="text"))return $.content.map((Z)=>Z.text).join(`
18
- `);return $.content.map((Z)=>Z.type==="text"?{type:"text",text:Z.text}:{type:"image_url",image_url:{url:`data:${Z.mimeType};base64,${Z.data}`}})}function iK($,Z){let Q=[];if(Z&&Z.length>0)Q.push({role:"system",content:Z.map((G)=>G.text).join(`
19
-
20
- `)});let Y=[],W=()=>{let G=Y.filter((X)=>X.type==="image");if(G.length>0)Q.push({role:"user",content:[{type:"text",text:"Images returned by the preceding tool calls:"},...G.map((X)=>({type:"image_url",image_url:{url:`data:${X.mimeType};base64,${X.data}`}}))]});Y=[]};for(let G of $){if(G.role!=="toolResult")W();if(G.role==="user"){Q.push({role:"user",content:dK(G)});continue}if(G.role==="toolResult"){Q.push({role:"tool",tool_call_id:G.toolCallId,content:cK(G)}),Y.push(...G.content);continue}let X=G.content.filter((K)=>K.type==="text").map((K)=>K.text).join(`
9
+ deps: ${Q}}`};var tN={keyword:"dependencies",type:"object",schemaType:"object",error:DX.error,code($){let[Z,Q]=oN($);FX($,Z),LX($,Q)}};function oN({schema:$}){let Z={},Q={};for(let Y in $){if(Y==="__proto__")continue;let W=Array.isArray($[Y])?Z:Q;W[Y]=$[Y]}return[Z,Q]}function FX($,Z=$.schema){let{gen:Q,data:Y,it:W}=$;if(Object.keys(Z).length===0)return;let G=Q.let("missing");for(let X in Z){let J=Z[X];if(J.length===0)continue;let B=(0,IZ.propertyInData)(Q,Y,X,W.opts.ownProperties);if($.setParams({property:X,depsCount:J.length,deps:J.join(", ")}),W.allErrors)Q.if(B,()=>{for(let K of J)(0,IZ.checkReportMissingProp)($,K)});else Q.if(t8._`${B} && (${(0,IZ.checkMissingProp)($,J,G)})`),(0,IZ.reportMissingProp)($,G),Q.else()}}DX.validatePropertyDeps=FX;function LX($,Z=$.schema){let{gen:Q,data:Y,keyword:W,it:G}=$,X=Q.name("valid");for(let J in Z){if((0,rN.alwaysValidSchema)(G,Z[J]))continue;Q.if((0,IZ.propertyInData)(Q,Y,J,G.opts.ownProperties),()=>{let B=$.subschema({keyword:W,schemaProp:J},X);$.mergeValidEvaluated(B,X)},()=>Q.var(X,!0)),$.ok(X)}}DX.validateSchemaDeps=LX;DX.default=tN});var OX=O((MX)=>{Object.defineProperty(MX,"__esModule",{value:!0});var NX=b(),$M=k(),ZM={message:"property name must be valid",params:({params:$})=>NX._`{propertyName: ${$.propertyName}}`},QM={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:ZM,code($){let{gen:Z,schema:Q,data:Y,it:W}=$;if((0,$M.alwaysValidSchema)(W,Q))return;let G=Z.name("valid");Z.forIn("key",Y,(X)=>{$.setParams({propertyName:X}),$.subschema({keyword:"propertyNames",data:X,dataTypes:["string"],propertyName:X,compositeRule:!0},G),Z.if((0,NX.not)(G),()=>{if($.error(!0),!W.allErrors)Z.break()})}),$.ok(G)}};MX.default=QM});var o8=O((jX)=>{Object.defineProperty(jX,"__esModule",{value:!0});var G6=P0(),b0=b(),WM=e0(),X6=k(),GM={message:"must NOT have additional properties",params:({params:$})=>b0._`{additionalProperty: ${$.additionalProperty}}`},XM={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:GM,code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,errsCount:G,it:X}=$;if(!G)throw Error("ajv implementation error");let{allErrors:J,opts:B}=X;if(X.props=!0,B.removeAdditional!=="all"&&(0,X6.alwaysValidSchema)(X,Q))return;let K=(0,G6.allSchemaProperties)(Y.properties),V=(0,G6.allSchemaProperties)(Y.patternProperties);z(),$.ok(b0._`${G} === ${WM.default.errors}`);function z(){Z.forIn("key",W,(U)=>{if(!K.length&&!V.length)L(U);else Z.if(F(U),()=>L(U))})}function F(U){let A;if(K.length>8){let N=(0,X6.schemaRefOrVal)(X,Y.properties,"properties");A=(0,G6.isOwnProperty)(Z,N,U)}else if(K.length)A=(0,b0.or)(...K.map((N)=>b0._`${U} === ${N}`));else A=b0.nil;if(V.length)A=(0,b0.or)(A,...V.map((N)=>b0._`${(0,G6.usePattern)($,N)}.test(${U})`));return(0,b0.not)(A)}function D(U){Z.code(b0._`delete ${W}[${U}]`)}function L(U){if(B.removeAdditional==="all"||B.removeAdditional&&Q===!1){D(U);return}if(Q===!1){if($.setParams({additionalProperty:U}),$.error(),!J)Z.break();return}if(typeof Q=="object"&&!(0,X6.alwaysValidSchema)(X,Q)){let A=Z.name("valid");if(B.removeAdditional==="failing")q(U,A,!1),Z.if((0,b0.not)(A),()=>{$.reset(),D(U)});else if(q(U,A),!J)Z.if((0,b0.not)(A),()=>Z.break())}}function q(U,A,N){let j={keyword:"additionalProperties",dataProp:U,dataPropType:X6.Type.Str};if(N===!1)Object.assign(j,{compositeRule:!0,createErrors:!1,allErrors:!1});$.subschema(j,A)}}};jX.default=XM});var EX=O((TX)=>{Object.defineProperty(TX,"__esModule",{value:!0});var KM=DZ(),PX=P0(),s8=k(),wX=o8(),BM={keyword:"properties",type:"object",schemaType:"object",code($){let{gen:Z,schema:Q,parentSchema:Y,data:W,it:G}=$;if(G.opts.removeAdditional==="all"&&Y.additionalProperties===void 0)wX.default.code(new KM.KeywordCxt(G,wX.default,"additionalProperties"));let X=(0,PX.allSchemaProperties)(Q);for(let z of X)G.definedProperties.add(z);if(G.opts.unevaluated&&X.length&&G.props!==!0)G.props=s8.mergeEvaluated.props(Z,(0,s8.toHash)(X),G.props);let J=X.filter((z)=>!(0,s8.alwaysValidSchema)(G,Q[z]));if(J.length===0)return;let B=Z.name("valid");for(let z of J){if(K(z))V(z);else{if(Z.if((0,PX.propertyInData)(Z,W,z,G.opts.ownProperties)),V(z),!G.allErrors)Z.else().var(B,!0);Z.endIf()}$.it.definedProperties.add(z),$.ok(B)}function K(z){return G.opts.useDefaults&&!G.compositeRule&&Q[z].default!==void 0}function V(z){$.subschema({keyword:"properties",schemaProp:z,dataProp:z},B)}}};TX.default=BM});var yX=O((CX)=>{Object.defineProperty(CX,"__esModule",{value:!0});var IX=P0(),J6=b(),RX=k(),SX=k(),VM={keyword:"patternProperties",type:"object",schemaType:"object",code($){let{gen:Z,schema:Q,data:Y,parentSchema:W,it:G}=$,{opts:X}=G,J=(0,IX.allSchemaProperties)(Q),B=J.filter((q)=>(0,RX.alwaysValidSchema)(G,Q[q]));if(J.length===0||B.length===J.length&&(!G.opts.unevaluated||G.props===!0))return;let K=X.strictSchema&&!X.allowMatchingProperties&&W.properties,V=Z.name("valid");if(G.props!==!0&&!(G.props instanceof J6.Name))G.props=(0,SX.evaluatedPropsToName)(Z,G.props);let{props:z}=G;F();function F(){for(let q of J){if(K)D(q);if(G.allErrors)L(q);else Z.var(V,!0),L(q),Z.if(V)}}function D(q){for(let U in K)if(new RegExp(q).test(U))(0,RX.checkStrictMode)(G,`property ${U} matches pattern ${q} (use allowMatchingProperties)`)}function L(q){Z.forIn("key",Y,(U)=>{Z.if(J6._`${(0,IX.usePattern)($,q)}.test(${U})`,()=>{let A=B.includes(q);if(!A)$.subschema({keyword:"patternProperties",schemaProp:q,dataProp:U,dataPropType:SX.Type.Str},V);if(G.opts.unevaluated&&z!==!0)Z.assign(J6._`${z}[${U}]`,!0);else if(!A&&!G.allErrors)Z.if((0,J6.not)(V),()=>Z.break())})})}}};CX.default=VM});var _X=O((bX)=>{Object.defineProperty(bX,"__esModule",{value:!0});var FM=k(),LM={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code($){let{gen:Z,schema:Q,it:Y}=$;if((0,FM.alwaysValidSchema)(Y,Q)){$.fail();return}let W=Z.name("valid");$.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},W),$.failResult(W,()=>$.reset(),()=>$.error())},error:{message:"must NOT be valid"}};bX.default=LM});var kX=O((xX)=>{Object.defineProperty(xX,"__esModule",{value:!0});var qM=P0(),UM={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:qM.validateUnion,error:{message:"must match a schema in anyOf"}};xX.default=UM});var vX=O((fX)=>{Object.defineProperty(fX,"__esModule",{value:!0});var K6=b(),NM=k(),MM={message:"must match exactly one schema in oneOf",params:({params:$})=>K6._`{passingSchemas: ${$.passing}}`},OM={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:MM,code($){let{gen:Z,schema:Q,parentSchema:Y,it:W}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");if(W.opts.discriminator&&Y.discriminator)return;let G=Q,X=Z.let("valid",!1),J=Z.let("passing",null),B=Z.name("_valid");$.setParams({passing:J}),Z.block(K),$.result(X,()=>$.reset(),()=>$.error(!0));function K(){G.forEach((V,z)=>{let F;if((0,NM.alwaysValidSchema)(W,V))Z.var(B,!0);else F=$.subschema({keyword:"oneOf",schemaProp:z,compositeRule:!0},B);if(z>0)Z.if(K6._`${B} && ${X}`).assign(X,!1).assign(J,K6._`[${J}, ${z}]`).else();Z.if(B,()=>{if(Z.assign(X,!0),Z.assign(J,z),F)$.mergeEvaluated(F,K6.Name)})})}}};fX.default=OM});var gX=O((hX)=>{Object.defineProperty(hX,"__esModule",{value:!0});var PM=k(),wM={keyword:"allOf",schemaType:"array",code($){let{gen:Z,schema:Q,it:Y}=$;if(!Array.isArray(Q))throw Error("ajv implementation error");let W=Z.name("valid");Q.forEach((G,X)=>{if((0,PM.alwaysValidSchema)(Y,G))return;let J=$.subschema({keyword:"allOf",schemaProp:X},W);$.ok(W),$.mergeEvaluated(J)})}};hX.default=wM});var lX=O((pX)=>{Object.defineProperty(pX,"__esModule",{value:!0});var B6=b(),mX=k(),EM={message:({params:$})=>B6.str`must match "${$.ifClause}" schema`,params:({params:$})=>B6._`{failingKeyword: ${$.ifClause}}`},IM={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:EM,code($){let{gen:Z,parentSchema:Q,it:Y}=$;if(Q.then===void 0&&Q.else===void 0)(0,mX.checkStrictMode)(Y,'"if" without "then" and "else" is ignored');let W=uX(Y,"then"),G=uX(Y,"else");if(!W&&!G)return;let X=Z.let("valid",!0),J=Z.name("_valid");if(B(),$.reset(),W&&G){let V=Z.let("ifClause");$.setParams({ifClause:V}),Z.if(J,K("then",V),K("else",V))}else if(W)Z.if(J,K("then"));else Z.if((0,B6.not)(J),K("else"));$.pass(X,()=>$.error(!0));function B(){let V=$.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},J);$.mergeEvaluated(V)}function K(V,z){return()=>{let F=$.subschema({keyword:V},J);if(Z.assign(X,J),$.mergeValidEvaluated(F,X),z)Z.assign(z,B6._`${V}`);else $.setParams({ifClause:V})}}}};function uX($,Z){let Q=$.schema[Z];return Q!==void 0&&!(0,mX.alwaysValidSchema)($,Q)}pX.default=IM});var dX=O((cX)=>{Object.defineProperty(cX,"__esModule",{value:!0});var SM=k(),CM={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:$,parentSchema:Z,it:Q}){if(Z.if===void 0)(0,SM.checkStrictMode)(Q,`"${$}" without "if" is ignored`)}};cX.default=CM});var nX=O((iX)=>{Object.defineProperty(iX,"__esModule",{value:!0});var bM=a8(),_M=JX(),xM=r8(),kM=HX(),fM=zX(),vM=AX(),hM=OX(),gM=o8(),uM=EX(),mM=yX(),pM=_X(),lM=kX(),cM=vX(),dM=gX(),iM=lX(),nM=dX();function aM($=!1){let Z=[pM.default,lM.default,cM.default,dM.default,iM.default,nM.default,hM.default,gM.default,vM.default,uM.default,mM.default];if($)Z.push(_M.default,kM.default);else Z.push(bM.default,xM.default);return Z.push(fM.default),Z}iX.default=aM});var rX=O((aX)=>{Object.defineProperty(aX,"__esModule",{value:!0});var n=b(),tM={message:({schemaCode:$})=>n.str`must match format "${$}"`,params:({schemaCode:$})=>n._`{format: ${$}}`},oM={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:tM,code($,Z){let{gen:Q,data:Y,$data:W,schema:G,schemaCode:X,it:J}=$,{opts:B,errSchemaPath:K,schemaEnv:V,self:z}=J;if(!B.validateFormats)return;if(W)F();else D();function F(){let L=Q.scopeValue("formats",{ref:z.formats,code:B.code.formats}),q=Q.const("fDef",n._`${L}[${X}]`),U=Q.let("fType"),A=Q.let("format");Q.if(n._`typeof ${q} == "object" && !(${q} instanceof RegExp)`,()=>Q.assign(U,n._`${q}.type || "string"`).assign(A,n._`${q}.validate`),()=>Q.assign(U,n._`"string"`).assign(A,q)),$.fail$data((0,n.or)(N(),j()));function N(){if(B.strictSchema===!1)return n.nil;return n._`${X} && !${A}`}function j(){let P=V.$async?n._`(${q}.async ? await ${A}(${Y}) : ${A}(${Y}))`:n._`${A}(${Y})`,M=n._`(typeof ${A} == "function" ? ${P} : ${A}.test(${Y}))`;return n._`${A} && ${A} !== true && ${U} === ${Z} && !${M}`}}function D(){let L=z.formats[G];if(!L){N();return}if(L===!0)return;let[q,U,A]=j(L);if(q===Z)$.pass(P());function N(){if(B.strictSchema===!1){z.logger.warn(M());return}throw Error(M());function M(){return`unknown format "${G}" ignored in schema at path "${K}"`}}function j(M){let I=M instanceof RegExp?(0,n.regexpCode)(M):B.code.formats?n._`${B.code.formats}${(0,n.getProperty)(G)}`:void 0,v=Q.scopeValue("formats",{key:G,ref:M,code:I});if(typeof M=="object"&&!(M instanceof RegExp))return[M.type||"string",M.validate,n._`${v}.validate`];return["string",M,v]}function P(){if(typeof L=="object"&&!(L instanceof RegExp)&&L.async){if(!V.$async)throw Error("async format in sync schema");return n._`await ${A}(${Y})`}return typeof U=="function"?n._`${A}(${Y})`:n._`${A}.test(${Y})`}}}};aX.default=oM});var oX=O((tX)=>{Object.defineProperty(tX,"__esModule",{value:!0});var eM=rX(),$O=[eM.default];tX.default=$O});var $J=O((sX)=>{Object.defineProperty(sX,"__esModule",{value:!0});sX.contentVocabulary=sX.metadataVocabulary=void 0;sX.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];sX.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var YJ=O((QJ)=>{Object.defineProperty(QJ,"__esModule",{value:!0});var YO=TG(),WO=sG(),GO=nX(),XO=oX(),ZJ=$J(),JO=[YO.default,WO.default,(0,GO.default)(),XO.default,ZJ.metadataVocabulary,ZJ.contentVocabulary];QJ.default=JO});var JJ=O((GJ)=>{Object.defineProperty(GJ,"__esModule",{value:!0});GJ.DiscrError=void 0;var WJ;(function($){$.Tag="tag",$.Mapping="mapping"})(WJ||(GJ.DiscrError=WJ={}))});var HJ=O((BJ)=>{Object.defineProperty(BJ,"__esModule",{value:!0});var N$=b(),e8=JJ(),KJ=i5(),BO=qZ(),HO=k(),VO={message:({params:{discrError:$,tagName:Z}})=>$===e8.DiscrError.Tag?`tag "${Z}" must be string`:`value of tag "${Z}" must be in oneOf`,params:({params:{discrError:$,tag:Z,tagName:Q}})=>N$._`{error: ${$}, tag: ${Q}, tagValue: ${Z}}`},zO={keyword:"discriminator",type:"object",schemaType:"object",error:VO,code($){let{gen:Z,data:Q,schema:Y,parentSchema:W,it:G}=$,{oneOf:X}=W;if(!G.opts.discriminator)throw Error("discriminator: requires discriminator option");let J=Y.propertyName;if(typeof J!="string")throw Error("discriminator: requires propertyName");if(Y.mapping)throw Error("discriminator: mapping is not supported");if(!X)throw Error("discriminator: requires oneOf keyword");let B=Z.let("valid",!1),K=Z.const("tag",N$._`${Q}${(0,N$.getProperty)(J)}`);Z.if(N$._`typeof ${K} == "string"`,()=>V(),()=>$.error(!1,{discrError:e8.DiscrError.Tag,tag:K,tagName:J})),$.ok(B);function V(){let D=F();Z.if(!1);for(let L in D)Z.elseIf(N$._`${K} === ${L}`),Z.assign(B,z(D[L]));Z.else(),$.error(!1,{discrError:e8.DiscrError.Mapping,tag:K,tagName:J}),Z.endIf()}function z(D){let L=Z.name("valid"),q=$.subschema({keyword:"oneOf",schemaProp:D},L);return $.mergeEvaluated(q,N$.Name),L}function F(){var D;let L={},q=A(W),U=!0;for(let P=0;P<X.length;P++){let M=X[P];if((M===null||M===void 0?void 0:M.$ref)&&!(0,HO.schemaHasRulesButRef)(M,G.self.RULES)){let v=M.$ref;if(M=KJ.resolveRef.call(G.self,G.schemaEnv.root,G.baseId,v),M instanceof KJ.SchemaEnv)M=M.schema;if(M===void 0)throw new BO.default(G.opts.uriResolver,G.baseId,v)}let I=(D=M===null||M===void 0?void 0:M.properties)===null||D===void 0?void 0:D[J];if(typeof I!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${J}"`);U=U&&(q||A(M)),N(I,P)}if(!U)throw Error(`discriminator: "${J}" must be required`);return L;function A({required:P}){return Array.isArray(P)&&P.includes(J)}function N(P,M){if(P.const)j(P.const,M);else if(P.enum)for(let I of P.enum)j(I,M);else throw Error(`discriminator: "properties/${J}" must have "const" or "enum"`)}function j(P,M){if(typeof P!="string"||P in L)throw Error(`discriminator: "${J}" values must be unique strings`);L[P]=M}}}};BJ.default=zO});var VJ=O((wy,LO)=>{LO.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Z9=O((D0,$9)=>{Object.defineProperty(D0,"__esModule",{value:!0});D0.MissingRefError=D0.ValidationError=D0.CodeGen=D0.Name=D0.nil=D0.stringify=D0.str=D0._=D0.KeywordCxt=D0.Ajv=void 0;var DO=DG(),qO=YJ(),UO=HJ(),zJ=VJ(),AO=["/properties"],H6="http://json-schema.org/draft-07/schema";class RZ extends DO.default{_addVocabularies(){if(super._addVocabularies(),qO.default.forEach(($)=>this.addVocabulary($)),this.opts.discriminator)this.addKeyword(UO.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let $=this.opts.$data?this.$dataMetaSchema(zJ,AO):zJ;this.addMetaSchema($,H6,!1),this.refs["http://json-schema.org/schema"]=H6}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(H6)?H6:void 0)}}D0.Ajv=RZ;$9.exports=D0=RZ;$9.exports.Ajv=RZ;Object.defineProperty(D0,"__esModule",{value:!0});D0.default=RZ;var NO=DZ();Object.defineProperty(D0,"KeywordCxt",{enumerable:!0,get:function(){return NO.KeywordCxt}});var M$=b();Object.defineProperty(D0,"_",{enumerable:!0,get:function(){return M$._}});Object.defineProperty(D0,"str",{enumerable:!0,get:function(){return M$.str}});Object.defineProperty(D0,"stringify",{enumerable:!0,get:function(){return M$.stringify}});Object.defineProperty(D0,"nil",{enumerable:!0,get:function(){return M$.nil}});Object.defineProperty(D0,"Name",{enumerable:!0,get:function(){return M$.Name}});Object.defineProperty(D0,"CodeGen",{enumerable:!0,get:function(){return M$.CodeGen}});var MO=c5();Object.defineProperty(D0,"ValidationError",{enumerable:!0,get:function(){return MO.default}});var OO=qZ();Object.defineProperty(D0,"MissingRefError",{enumerable:!0,get:function(){return OO.default}})});var jJ=O((MJ)=>{Object.defineProperty(MJ,"__esModule",{value:!0});MJ.formatNames=MJ.fastFormats=MJ.fullFormats=void 0;function m0($,Z){return{validate:$,compare:Z}}MJ.fullFormats={date:m0(qJ,G9),time:m0(Y9(!0),X9),"date-time":m0(FJ(!0),AJ),"iso-time":m0(Y9(),UJ),"iso-date-time":m0(FJ(),NJ),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:SO,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:fO,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:CO,int32:{type:"number",validate:_O},int64:{type:"number",validate:xO},float:{type:"number",validate:DJ},double:{type:"number",validate:DJ},password:!0,binary:!0};MJ.fastFormats={...MJ.fullFormats,date:m0(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,G9),time:m0(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,X9),"date-time":m0(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,AJ),"iso-time":m0(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,UJ),"iso-date-time":m0(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,NJ),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};MJ.formatNames=Object.keys(MJ.fullFormats);function wO($){return $%4===0&&($%100!==0||$%400===0)}var TO=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,EO=[0,31,28,31,30,31,30,31,31,30,31,30,31];function qJ($){let Z=TO.exec($);if(!Z)return!1;let Q=+Z[1],Y=+Z[2],W=+Z[3];return Y>=1&&Y<=12&&W>=1&&W<=(Y===2&&wO(Q)?29:EO[Y])}function G9($,Z){if(!($&&Z))return;if($>Z)return 1;if($<Z)return-1;return 0}var Q9=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function Y9($){return function(Q){let Y=Q9.exec(Q);if(!Y)return!1;let W=+Y[1],G=+Y[2],X=+Y[3],J=Y[4],B=Y[5]==="-"?-1:1,K=+(Y[6]||0),V=+(Y[7]||0);if(K>23||V>59||$&&!J)return!1;if(W<=23&&G<=59&&X<60)return!0;let z=G-V*B,F=W-K*B-(z<0?1:0);return(F===23||F===-1)&&(z===59||z===-1)&&X<61}}function X9($,Z){if(!($&&Z))return;let Q=new Date("2020-01-01T"+$).valueOf(),Y=new Date("2020-01-01T"+Z).valueOf();if(!(Q&&Y))return;return Q-Y}function UJ($,Z){if(!($&&Z))return;let Q=Q9.exec($),Y=Q9.exec(Z);if(!(Q&&Y))return;if($=Q[1]+Q[2]+Q[3],Z=Y[1]+Y[2]+Y[3],$>Z)return 1;if($<Z)return-1;return 0}var W9=/t|\s/i;function FJ($){let Z=Y9($);return function(Y){let W=Y.split(W9);return W.length===2&&qJ(W[0])&&Z(W[1])}}function AJ($,Z){if(!($&&Z))return;let Q=new Date($).valueOf(),Y=new Date(Z).valueOf();if(!(Q&&Y))return;return Q-Y}function NJ($,Z){if(!($&&Z))return;let[Q,Y]=$.split(W9),[W,G]=Z.split(W9),X=G9(Q,W);if(X===void 0)return;return X||X9(Y,G)}var IO=/\/|:/,RO=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function SO($){return IO.test($)&&RO.test($)}var LJ=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function CO($){return LJ.lastIndex=0,LJ.test($)}var yO=-2147483648,bO=2147483647;function _O($){return Number.isInteger($)&&$<=bO&&$>=yO}function xO($){return Number.isInteger($)}function DJ(){return!0}var kO=/[^\\]\\Z/;function fO($){if(kO.test($))return!1;try{return new RegExp($),!0}catch(Z){return!1}}});var wJ=O((PJ)=>{Object.defineProperty(PJ,"__esModule",{value:!0});PJ.formatLimitDefinition=void 0;var hO=Z9(),_0=b(),P1=_0.operators,V6={formatMaximum:{okStr:"<=",ok:P1.LTE,fail:P1.GT},formatMinimum:{okStr:">=",ok:P1.GTE,fail:P1.LT},formatExclusiveMaximum:{okStr:"<",ok:P1.LT,fail:P1.GTE},formatExclusiveMinimum:{okStr:">",ok:P1.GT,fail:P1.LTE}},gO={message:({keyword:$,schemaCode:Z})=>_0.str`should be ${V6[$].okStr} ${Z}`,params:({keyword:$,schemaCode:Z})=>_0._`{comparison: ${V6[$].okStr}, limit: ${Z}}`};PJ.formatLimitDefinition={keyword:Object.keys(V6),type:"string",schemaType:"string",$data:!0,error:gO,code($){let{gen:Z,data:Q,schemaCode:Y,keyword:W,it:G}=$,{opts:X,self:J}=G;if(!X.validateFormats)return;let B=new hO.KeywordCxt(G,J.RULES.all.format.definition,"format");if(B.$data)K();else V();function K(){let F=Z.scopeValue("formats",{ref:J.formats,code:X.code.formats}),D=Z.const("fmt",_0._`${F}[${B.schemaCode}]`);$.fail$data((0,_0.or)(_0._`typeof ${D} != "object"`,_0._`${D} instanceof RegExp`,_0._`typeof ${D}.compare != "function"`,z(D)))}function V(){let F=B.schema,D=J.formats[F];if(!D||D===!0)return;if(typeof D!="object"||D instanceof RegExp||typeof D.compare!="function")throw Error(`"${W}": format "${F}" does not define "compare" function`);let L=Z.scopeValue("formats",{key:F,ref:D,code:X.code.formats?_0._`${X.code.formats}${(0,_0.getProperty)(F)}`:void 0});$.fail$data(z(L))}function z(F){return _0._`${F}.compare(${Q}, ${Y}) ${V6[W].fail} 0`}},dependencies:["format"]};var uO=($)=>{return $.addKeyword(PJ.formatLimitDefinition),$};PJ.default=uO});var RJ=O((SZ,IJ)=>{Object.defineProperty(SZ,"__esModule",{value:!0});var O$=jJ(),pO=wJ(),B9=b(),TJ=new B9.Name("fullFormats"),lO=new B9.Name("fastFormats"),H9=($,Z={keywords:!0})=>{if(Array.isArray(Z))return EJ($,Z,O$.fullFormats,TJ),$;let[Q,Y]=Z.mode==="fast"?[O$.fastFormats,lO]:[O$.fullFormats,TJ],W=Z.formats||O$.formatNames;if(EJ($,W,Q,Y),Z.keywords)(0,pO.default)($);return $};H9.get=($,Z="full")=>{let Y=(Z==="fast"?O$.fastFormats:O$.fullFormats)[$];if(!Y)throw Error(`Unknown format "${$}"`);return Y};function EJ($,Z,Q,Y){var W,G;(W=(G=$.opts.code).formats)!==null&&W!==void 0||(G.formats=B9._`require("ajv-formats/dist/formats").${Y}`);for(let X of Z)$.addFormat(X,Q[X])}IJ.exports=SZ=H9;Object.defineProperty(SZ,"__esModule",{value:!0});SZ.default=H9});var vJ=O((iy,fJ)=>{fJ.exports=kJ;kJ.sync=nO;var _J=W1("fs");function iO($,Z){var Q=Z.pathExt!==void 0?Z.pathExt:process.env.PATHEXT;if(!Q)return!0;if(Q=Q.split(";"),Q.indexOf("")!==-1)return!0;for(var Y=0;Y<Q.length;Y++){var W=Q[Y].toLowerCase();if(W&&$.substr(-W.length).toLowerCase()===W)return!0}return!1}function xJ($,Z,Q){if(!$.isSymbolicLink()&&!$.isFile())return!1;return iO(Z,Q)}function kJ($,Z,Q){_J.stat($,function(Y,W){Q(Y,Y?!1:xJ(W,$,Z))})}function nO($,Z){return xJ(_J.statSync($),$,Z)}});var pJ=O((ny,mJ)=>{mJ.exports=gJ;gJ.sync=aO;var hJ=W1("fs");function gJ($,Z,Q){hJ.stat($,function(Y,W){Q(Y,Y?!1:uJ(W,Z))})}function aO($,Z){return uJ(hJ.statSync($),Z)}function uJ($,Z){return $.isFile()&&rO($,Z)}function rO($,Z){var{mode:Q,uid:Y,gid:W}=$,G=Z.uid!==void 0?Z.uid:process.getuid&&process.getuid(),X=Z.gid!==void 0?Z.gid:process.getgid&&process.getgid(),J=parseInt("100",8),B=parseInt("010",8),K=parseInt("001",8),V=J|B,z=Q&K||Q&B&&W===X||Q&J&&Y===G||Q&V&&G===0;return z}});var cJ=O((ry,lJ)=>{var ay=W1("fs"),F6;if(process.platform==="win32"||global.TESTING_WINDOWS)F6=vJ();else F6=pJ();lJ.exports=L9;L9.sync=tO;function L9($,Z,Q){if(typeof Z==="function")Q=Z,Z={};if(!Q){if(typeof Promise!=="function")throw TypeError("callback not provided");return new Promise(function(Y,W){L9($,Z||{},function(G,X){if(G)W(G);else Y(X)})})}F6($,Z||{},function(Y,W){if(Y){if(Y.code==="EACCES"||Z&&Z.ignoreErrors)Y=null,W=!1}Q(Y,W)})}function tO($,Z){try{return F6.sync($,Z||{})}catch(Q){if(Z&&Z.ignoreErrors||Q.code==="EACCES")return!1;else throw Q}}});var oJ=O((ty,tJ)=>{var j$=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",dJ=W1("path"),oO=j$?";":":",iJ=cJ(),nJ=($)=>Object.assign(Error(`not found: ${$}`),{code:"ENOENT"}),aJ=($,Z)=>{let Q=Z.colon||oO,Y=$.match(/\//)||j$&&$.match(/\\/)?[""]:[...j$?[process.cwd()]:[],...(Z.path||process.env.PATH||"").split(Q)],W=j$?Z.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",G=j$?W.split(Q):[""];if(j$){if($.indexOf(".")!==-1&&G[0]!=="")G.unshift("")}return{pathEnv:Y,pathExt:G,pathExtExe:W}},rJ=($,Z,Q)=>{if(typeof Z==="function")Q=Z,Z={};if(!Z)Z={};let{pathEnv:Y,pathExt:W,pathExtExe:G}=aJ($,Z),X=[],J=(K)=>new Promise((V,z)=>{if(K===Y.length)return Z.all&&X.length?V(X):z(nJ($));let F=Y[K],D=/^".*"$/.test(F)?F.slice(1,-1):F,L=dJ.join(D,$),q=!D&&/^\.[\\\/]/.test($)?$.slice(0,2)+L:L;V(B(q,K,0))}),B=(K,V,z)=>new Promise((F,D)=>{if(z===W.length)return F(J(V+1));let L=W[z];iJ(K+L,{pathExt:G},(q,U)=>{if(!q&&U)if(Z.all)X.push(K+L);else return F(K+L);return F(B(K,V,z+1))})});return Q?J(0).then((K)=>Q(null,K),Q):J(0)},sO=($,Z)=>{Z=Z||{};let{pathEnv:Q,pathExt:Y,pathExtExe:W}=aJ($,Z),G=[];for(let X=0;X<Q.length;X++){let J=Q[X],B=/^".*"$/.test(J)?J.slice(1,-1):J,K=dJ.join(B,$),V=!B&&/^\.[\\\/]/.test($)?$.slice(0,2)+K:K;for(let z=0;z<Y.length;z++){let F=V+Y[z];try{if(iJ.sync(F,{pathExt:W}))if(Z.all)G.push(F);else return F}catch(D){}}}if(Z.all&&G.length)return G;if(Z.nothrow)return null;throw nJ($)};tJ.exports=rJ;rJ.sync=sO});var eJ=O((oy,D9)=>{var sJ=($={})=>{let Z=$.env||process.env;if(($.platform||process.platform)!=="win32")return"PATH";return Object.keys(Z).reverse().find((Y)=>Y.toUpperCase()==="PATH")||"Path"};D9.exports=sJ;D9.exports.default=sJ});var Y3=O((sy,Q3)=>{var $3=W1("path"),eO=oJ(),$j=eJ();function Z3($,Z){let Q=$.options.env||process.env,Y=process.cwd(),W=$.options.cwd!=null,G=W&&process.chdir!==void 0&&!process.chdir.disabled;if(G)try{process.chdir($.options.cwd)}catch(J){}let X;try{X=eO.sync($.command,{path:Q[$j({env:Q})],pathExt:Z?$3.delimiter:void 0})}catch(J){}finally{if(G)process.chdir(Y)}if(X)X=$3.resolve(W?$.options.cwd:"",X);return X}function Zj($){return Z3($)||Z3($,!0)}Q3.exports=Zj});var W3=O((Wj,U9)=>{var q9=/([()\][%!^"`<>&|;, *?])/g;function Qj($){return $=$.replace(q9,"^$1"),$}function Yj($,Z){if($=`${$}`,$=$.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),$=$.replace(/(?=(\\+?)?)\1$/,"$1$1"),$=`"${$}"`,$=$.replace(q9,"^$1"),Z)$=$.replace(q9,"^$1");return $}Wj.command=Qj;Wj.argument=Yj});var X3=O((ey,G3)=>{G3.exports=/^#!(.*)/});var K3=O(($b,J3)=>{var Jj=X3();J3.exports=($="")=>{let Z=$.match(Jj);if(!Z)return null;let[Q,Y]=Z[0].replace(/#! ?/,"").split(" "),W=Q.split("/").pop();if(W==="env")return Y;return Y?`${W} ${Y}`:W}});var H3=O((Zb,B3)=>{var A9=W1("fs"),Kj=K3();function Bj($){let Q=Buffer.alloc(150),Y;try{Y=A9.openSync($,"r"),A9.readSync(Y,Q,0,150,0),A9.closeSync(Y)}catch(W){}return Kj(Q.toString())}B3.exports=Bj});var L3=O((Qb,F3)=>{var Hj=W1("path"),V3=Y3(),z3=W3(),Vj=H3(),zj=process.platform==="win32",Fj=/\.(?:com|exe)$/i,Lj=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Dj($){$.file=V3($);let Z=$.file&&Vj($.file);if(Z)return $.args.unshift($.file),$.command=Z,V3($);return $.file}function qj($){if(!zj)return $;let Z=Dj($),Q=!Fj.test(Z);if($.options.forceShell||Q){let Y=Lj.test(Z);$.command=Hj.normalize($.command),$.command=z3.command($.command),$.args=$.args.map((G)=>z3.argument(G,Y));let W=[$.command].concat($.args).join(" ");$.args=["/d","/s","/c",`"${W}"`],$.command=process.env.comspec||"cmd.exe",$.options.windowsVerbatimArguments=!0}return $}function Uj($,Z,Q){if(Z&&!Array.isArray(Z))Q=Z,Z=null;Z=Z?Z.slice(0):[],Q=Object.assign({},Q);let Y={command:$,args:Z,options:Q,file:void 0,original:{command:$,args:Z}};return Q.shell?Y:qj(Y)}F3.exports=Uj});var U3=O((Yb,q3)=>{var N9=process.platform==="win32";function M9($,Z){return Object.assign(Error(`${Z} ${$.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${Z} ${$.command}`,path:$.command,spawnargs:$.args})}function Aj($,Z){if(!N9)return;let Q=$.emit;$.emit=function(Y,W){if(Y==="exit"){let G=D3(W,Z);if(G)return Q.call($,"error",G)}return Q.apply($,arguments)}}function D3($,Z){if(N9&&$===1&&!Z.file)return M9(Z.original,"spawn");return null}function Nj($,Z){if(N9&&$===1&&!Z.file)return M9(Z.original,"spawnSync");return null}q3.exports={hookChildProcess:Aj,verifyENOENT:D3,verifyENOENTSync:Nj,notFoundError:M9}});var M3=O((Wb,P$)=>{var A3=W1("child_process"),O9=L3(),j9=U3();function N3($,Z,Q){let Y=O9($,Z,Q),W=A3.spawn(Y.command,Y.args,Y.options);return j9.hookChildProcess(W,Y),W}function Mj($,Z,Q){let Y=O9($,Z,Q),W=A3.spawnSync(Y.command,Y.args,Y.options);return W.error=W.error||j9.verifyENOENTSync(W.status,Y),W}P$.exports=N3;P$.exports.spawn=N3;P$.exports.sync=Mj;P$.exports._parse=O9;P$.exports._enoent=j9});import{readFile as _P}from"fs/promises";import{homedir as xP}from"os";import{join as kP,resolve as WK}from"path";class hZ{done=[];undone=[];record($){this.done.push($),this.undone=[]}get canUndo(){return this.done.length>0}get canRedo(){return this.undone.length>0}peekUndo(){return this.done[this.done.length-1]}commitUndo($,Z){if(this.peekUndo()?.id!==$.id)throw Error("Checkpoint history changed during undo");this.done.pop(),this.undone.push({...$,...Z?{redoRef:Z}:{}})}peekRedo(){return this.undone[this.undone.length-1]}commitRedo($){if(this.peekRedo()?.id!==$.id)throw Error("Checkpoint history changed during redo");this.undone.pop();let{redoRef:Z,...Q}=$;this.done.push(Q)}restore($,Z=[]){this.done=[...$],this.undone=[...Z]}state(){return{done:[...this.done],undone:[...this.undone]}}all(){return[...this.done]}first(){return this.done[0]}last(){return this.done[this.done.length-1]}}class I1{commands=new Map;register($){this.commands.set($.name,$)}get($){return this.commands.get($)}list(){return[...this.commands.values()].sort(($,Z)=>$.name.localeCompare(Z.name))}has($){return this.commands.has($)}parse($){if(!$.startsWith("/"))return;let Z=$.slice(1),Q=Z.search(/\s/);return Q===-1?{name:Z,args:""}:{name:Z.slice(0,Q),args:Z.slice(Q+1).trim()}}async execute($,Z){let Q=this.parse($);if(!Q)return{handled:!1};let Y=this.commands.get(Q.name);if(!Y)return{handled:!0,message:`Unknown command: /${Q.name}`};return await Y.run({...Z,args:Q.args})??{handled:!0}}}var FK=new Set(["rate_limit","overloaded","network"]);class c extends Error{kind;status;retryAfterMs;constructor($,Z,Q){super(Z);if(this.name="AiError",this.kind=$,Q?.status!==void 0)this.status=Q.status;if(Q?.retryAfterMs!==void 0)this.retryAfterMs=Q.retryAfterMs}get retryable(){return FK.has(this.kind)}}var LK=[/prompt is too long/i,/context window/i,/context[_ ]length[_ ]exceeded/i,/exceeds the maximum number of tokens/i,/input token count.*exceeds/i,/too many total text bytes/i];function gZ($){return LK.some((Z)=>Z.test($))}function DK($){let Z=$.get("retry-after-ms");if(Z){let Y=Number.parseFloat(Z);if(!Number.isNaN(Y))return Y}let Q=$.get("retry-after");if(Q){let Y=Number.parseFloat(Q);if(!Number.isNaN(Y))return Y*1000;let W=Date.parse(Q);if(!Number.isNaN(W))return W-Date.now()}return}function R$($,Z,Q){let Y={status:$,retryAfterMs:DK(Q)};if($===401||$===403)return new c("auth",Z,Y);if($===404)return new c("not_found",Z,Y);if($===429)return new c("rate_limit",Z,Y);if($===529||$===503)return new c("overloaded",Z,Y);if($>=500)return new c("api",Z,Y);if(gZ(Z))return new c("context_too_long",Z,Y);return new c("bad_request",Z,Y)}var i9={models:[{provider:"anthropic",id:"claude-opus-5",name:"Claude Opus 5",contextWindow:1e6,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingMode:"adaptive",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite:6.25}},{provider:"anthropic",id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindow:1e6,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingMode:"adaptive",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite:3.75}},{provider:"anthropic",id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindow:200000,maxOutput:64000,modalities:["text","image"],thinking:!0,thinkingMode:"budget",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite:1.25}},{provider:"openai",id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:5,output:30,cacheRead:0.5,cacheWrite:6.25}},{provider:"openai",id:"gpt-5.1",name:"GPT-5.1",contextWindow:400000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:1.25,output:10,cacheRead:0.125,cacheWrite:0}},{provider:"openai",id:"gpt-5-mini",name:"GPT-5 mini",contextWindow:400000,maxOutput:128000,modalities:["text","image"],thinking:!0,pricing:{input:0.25,output:2,cacheRead:0.025,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max","ultra"],defaultThinkingLevel:"low",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max","ultra"],defaultThinkingLevel:"medium",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"openai-codex",id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindow:272000,maxOutput:128000,modalities:["text","image"],thinking:!0,thinkingLevels:["low","medium","high","xhigh","max"],defaultThinkingLevel:"medium",pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}},{provider:"google",id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",contextWindow:1048576,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:{input:1.25,output:10,cacheRead:0.31,cacheWrite:0}},{provider:"google",id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",contextWindow:1048576,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:{input:0.3,output:2.5,cacheRead:0.075,cacheWrite:0}}]};var UK=[{id:"amazon-bedrock",name:"Amazon Bedrock",api:"openai-responses",env:["AWS_BEARER_TOKEN_BEDROCK"]},{id:"anthropic",name:"Anthropic",api:"anthropic-messages",baseUrl:"https://api.anthropic.com",env:["ANTHROPIC_API_KEY"],auth:"anthropic"},{id:"azure-openai-responses",name:"Azure OpenAI",api:"openai-responses",env:["AZURE_OPENAI_API_KEY"],auth:"azure"},{id:"cerebras",name:"Cerebras",api:"openai-completions",baseUrl:"https://api.cerebras.ai/v1",env:["CEREBRAS_API_KEY"]},{id:"cloudflare-ai-gateway",name:"Cloudflare AI Gateway",api:"openai-completions",env:["CLOUDFLARE_API_KEY"],auth:"cloudflare"},{id:"cloudflare-workers-ai",name:"Cloudflare Workers AI",api:"openai-completions",env:["CLOUDFLARE_API_KEY"]},{id:"deepseek",name:"DeepSeek",api:"openai-completions",baseUrl:"https://api.deepseek.com",env:["DEEPSEEK_API_KEY"]},{id:"fireworks",name:"Fireworks",api:"anthropic-messages",baseUrl:"https://api.fireworks.ai/inference",env:["FIREWORKS_API_KEY"],auth:"anthropic"},{id:"github-copilot",name:"GitHub Copilot",api:"openai-responses",baseUrl:"https://api.individual.githubcopilot.com",env:["COPILOT_GITHUB_TOKEN"],headers:{"user-agent":"GitHubCopilotChat/0.35.0","editor-version":"vscode/1.107.0","editor-plugin-version":"copilot-chat/0.35.0","copilot-integration-id":"vscode-chat"}},{id:"google",name:"Google",api:"google-generative-ai",baseUrl:"https://generativelanguage.googleapis.com/v1beta",env:["GEMINI_API_KEY"],auth:"google"},{id:"google-vertex",name:"Google Vertex AI",api:"google-vertex",env:["GOOGLE_CLOUD_API_KEY"],auth:"google"},{id:"groq",name:"Groq",api:"openai-completions",baseUrl:"https://api.groq.com/openai/v1",env:["GROQ_API_KEY"]},{id:"huggingface",name:"Hugging Face",api:"openai-completions",baseUrl:"https://router.huggingface.co/v1",env:["HF_TOKEN"]},{id:"kimi-coding",name:"Kimi For Coding",api:"anthropic-messages",baseUrl:"https://api.kimi.com/coding",env:["KIMI_API_KEY"],auth:"anthropic",headers:{"user-agent":"KimiCLI/1.5"}},{id:"llama-cpp",name:"llama.cpp",api:"openai-completions",baseUrl:"http://127.0.0.1:8000/v1",env:["LLAMA_CPP_API_KEY"],auth:"none"},{id:"minimax",name:"MiniMax",api:"anthropic-messages",baseUrl:"https://api.minimax.io/anthropic",env:["MINIMAX_API_KEY"],auth:"anthropic"},{id:"mistral",name:"Mistral",api:"openai-completions",baseUrl:"https://api.mistral.ai/v1",env:["MISTRAL_API_KEY"]},{id:"moonshotai",name:"Moonshot AI",api:"openai-completions",baseUrl:"https://api.moonshot.ai/v1",env:["MOONSHOT_API_KEY"]},{id:"nvidia",name:"NVIDIA NIM",api:"openai-completions",baseUrl:"https://integrate.api.nvidia.com/v1",env:["NVIDIA_API_KEY"],headers:{"nvcf-poll-seconds":"3600"}},{id:"openai",name:"OpenAI",api:"openai-responses",baseUrl:"https://api.openai.com/v1",env:["OPENAI_API_KEY"]},{id:"openai-codex",name:"OpenAI Codex",api:"openai-responses",baseUrl:"https://chatgpt.com/backend-api/codex",env:[]},{id:"opencode",name:"OpenCode Zen",api:"openai-completions",baseUrl:"https://opencode.ai/zen/v1",env:["OPENCODE_API_KEY"]},{id:"opencode-go",name:"OpenCode Go",api:"openai-completions",baseUrl:"https://opencode.ai/zen/go/v1",env:["OPENCODE_API_KEY"]},{id:"openrouter",name:"OpenRouter",api:"openai-completions",baseUrl:"https://openrouter.ai/api/v1",env:["OPENROUTER_API_KEY"]},{id:"qwen-token-plan",name:"Qwen Token Plan",api:"openai-completions",baseUrl:"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",env:["QWEN_TOKEN_PLAN_API_KEY"]},{id:"vercel-ai-gateway",name:"Vercel AI Gateway",api:"anthropic-messages",baseUrl:"https://ai-gateway.vercel.sh",env:["AI_GATEWAY_API_KEY"],auth:"anthropic"},{id:"xai",name:"xAI",api:"openai-completions",baseUrl:"https://api.x.ai/v1",env:["XAI_API_KEY"]},{id:"zai",name:"Z.AI Coding Plan",api:"openai-completions",baseUrl:"https://api.z.ai/api/coding/paas/v4",env:["ZAI_API_KEY"]}],l0=new Map(UK.map(($)=>[$.id,$]));function f0($){return l0.get($)}function S$($){return $.api??f0($.provider)?.api??"openai-completions"}function E6($){return $.baseUrl??f0($.provider)?.baseUrl}function a1($){return f0($)?.env??[]}var AK=new Set(['"',"\\","/","b","f","n","r","t","u"]),NK={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};function I6($){let Z="",Q=!1;for(let Y=0;Y<$.length;Y++){let W=$[Y];if(!Q){if(Z+=W,W==='"')Q=!0;continue}if(W==='"'){Z+=W,Q=!1;continue}if(W==="\\"){let X=$[Y+1];if(X===void 0){Z+="\\\\";continue}if(X==="u"&&/^[0-9a-fA-F]{4}$/.test($.slice(Y+2,Y+6))){Z+=$.slice(Y,Y+6),Y+=5;continue}if(X!=="u"&&AK.has(X)){Z+=`\\${X}`,Y+=1;continue}Z+="\\\\";continue}let G=W.codePointAt(0)??0;if(G<=31)Z+=NK[W]??`\\u${G.toString(16).padStart(4,"0")}`;else Z+=W}return Z}function n9($){try{return JSON.parse($)}catch(Z){let Q=I6($);if(Q!==$)return JSON.parse(Q);throw Z}}class a9{text;pos=0;constructor($){this.text=$}ws(){while(this.pos<this.text.length&&/\s/.test(this.text[this.pos]))this.pos++}peek(){return this.text[this.pos]}value(){this.ws();let $=this.peek();if($===void 0)return;if($==="{")return this.object();if($==="[")return this.array();if($==='"')return this.string();if($==="t"||$==="f"||$==="n")return this.literal();if($==="-"||/[0-9]/.test($))return this.number();return}object(){let $={};this.pos++;for(;;){if(this.ws(),this.peek()===void 0)return $;if(this.peek()==="}")return this.pos++,$;if(this.peek()===","){this.pos++;continue}if(this.peek()!=='"')return $;let Z=this.pos,Q=this.string();if(this.pos>=this.text.length&&!this.closedString(Z))return $;if(this.ws(),this.peek()!==":")return $;if(this.pos++,this.ws(),this.peek()===void 0)return $;let Y=this.pos,W=this.value();if(W!==void 0||this.consumedNull(Y))$[Q]=W??null}}array(){let $=[];this.pos++;for(;;){if(this.ws(),this.peek()===void 0)return $;if(this.peek()==="]")return this.pos++,$;if(this.peek()===","){this.pos++;continue}let Z=this.pos,Q=this.value();if(Q===void 0&&!this.consumedNull(Z))return $;$.push(Q??null)}}closedString($){let Z=$+1;while(Z<this.text.length)if(this.text[Z]==="\\")Z+=2;else if(this.text[Z]==='"')return!0;else Z+=1;return!1}consumedNull($){return this.text.slice($,this.pos).trim().startsWith("null")}string(){this.pos++;let $="";while(this.pos<this.text.length){let Z=this.text[this.pos];if(Z==='"')return this.pos++,$;if(Z==="\\"){let Q=this.text[this.pos+1];if(Q===void 0)return this.pos++,$;if(Q==="u"){let W=this.text.slice(this.pos+2,this.pos+6);if(/^[0-9a-fA-F]{4}$/.test(W))$+=String.fromCharCode(Number.parseInt(W,16)),this.pos+=6;else return this.pos=this.text.length,$;continue}$+={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
10
+ `,r:"\r",t:"\t"}[Q]??Q,this.pos+=2;continue}$+=Z,this.pos++}return $}literal(){for(let[$,Z]of[["true",!0],["false",!1],["null",null]])if($.startsWith(this.text.slice(this.pos,this.pos+$.length))){let Q=this.text.slice(this.pos);if($.startsWith(Q))return this.pos=this.text.length,Z;if(Q.startsWith($))return this.pos+=$.length,Z}this.pos=this.text.length;return}number(){let Z=/^-?[0-9]*\.?[0-9]*(?:[eE][+-]?[0-9]*)?/.exec(this.text.slice(this.pos))?.[0]??"";this.pos+=Z.length;let Q=Number(Z);return Number.isNaN(Q)?void 0:Q}}function r9($){return new a9($).value()}function v0($){if(!$||$.trim()==="")return{};try{let Z=n9($);if(Z!==null&&typeof Z==="object"&&!Array.isArray(Z))return Z;return{}}catch{for(let Z of[$,I6($)])try{let Q=r9(Z);if(Q!==null&&typeof Q==="object"&&!Array.isArray(Q))return Q}catch{}return{}}}var MK=60000;function R6(){let $=Error("Request aborted");return $.name="AbortError",$}function OK($,Z){return new Promise((Q,Y)=>{if(Z?.aborted){Y(R6());return}let W=()=>{clearTimeout(G),Y(R6())},G=setTimeout(()=>{Z?.removeEventListener("abort",W),Q()},Math.max(0,$));Z?.addEventListener("abort",W,{once:!0})})}function jK($,Z,Q){if($.retryAfterMs!==void 0&&$.retryAfterMs>0)return Math.min($.retryAfterMs,Q);return Math.min(0.5*2**Z,8)*1000*(1-Math.random()*0.25)}async function c0($,Z={}){let Q=Z.maxRetries??2,Y=Z.maxRetryDelayMs??MK,W=Q;for(;;)try{return await $()}catch(G){if(Z.signal?.aborted)throw R6();if(W<=0||!(G instanceof c)||!G.retryable)throw G;let X=Q-W;W--,await OK(jK(G,X,Y),Z.signal)}}function o9($){if(!$.event&&$.data.length===0)return null;let Z={event:$.event,data:$.data.join(`
11
+ `)};return $.event=null,$.data=[],Z}function t9($,Z){if($==="")return o9(Z);if($.startsWith(":"))return null;let Q=$.indexOf(":"),Y=Q===-1?$:$.slice(0,Q),W=Q===-1?"":$.slice(Q+1);if(W.startsWith(" "))W=W.slice(1);if(Y==="event")Z.event=W;else if(Y==="data")Z.data.push(W);return null}async function*d0($,Z){let Q=$.getReader(),Y=new TextDecoder,W={event:null,data:[]},G="",X=function*(){let J=G.search(/[\r\n]/);while(J!==-1){let B=G.slice(0,J),K=J+1;if(G[J]==="\r"&&G[K]===`
12
+ `)K+=1;G=G.slice(K);let V=t9(B,W);if(V)yield V;J=G.search(/[\r\n]/)}};try{while(!0){if(Z?.aborted)throw Error("Request was aborted");let{value:B,done:K}=await Q.read();if(K)break;G+=Y.decode(B,{stream:!0}),yield*X()}if(G+=Y.decode(),yield*X(),G.length>0){let B=t9(G,W);if(B)yield B}let J=o9(W);if(J)yield J}finally{Q.releaseLock()}}function h0($){return $.replace(/\/+$/,"")}function PK($){for(let Z of $){let Q=process.env[Z];if(Q)return Q}return}async function G1($,Z){let Q=await Z?.getCredentials?.();if(Q){if($.provider==="anthropic"&&Q.type==="oauth")throw new c("auth","Anthropic account-plan authentication is not supported");return Q}let Y=Z?.apiKey??PK(a1($.provider));if(!Y&&f0($.provider)?.auth==="none")return{type:"apiKey",apiKey:""};if(!Y){let W=a1($.provider),G=W.length>0?`set ${W.join(" or ")} or run /login`:"run /login";throw new c("auth",`No credentials for provider "${$.provider}" (${G})`)}return{type:"apiKey",apiKey:Y}}function wK($){let Z=process.env.CLOUDFLARE_ACCOUNT_ID;if(!Z)return;if($.provider==="cloudflare-workers-ai")return`https://api.cloudflare.com/client/v4/accounts/${Z}/ai/v1`;let Q=process.env.CLOUDFLARE_GATEWAY_ID;if(!Q)return;let Y=`https://gateway.ai.cloudflare.com/v1/${Z}/${Q}`;if($.api==="anthropic-messages")return`${Y}/anthropic`;if($.api==="openai-responses")return`${Y}/openai`;return`${Y}/compat`}function TK(){let $=process.env.AZURE_OPENAI_BASE_URL,Z=process.env.AZURE_OPENAI_RESOURCE_NAME;if(!$&&!Z)return;let Q=h0($??`https://${Z}.openai.azure.com`);return Q.endsWith("/openai/v1")?Q:`${Q}/openai/v1`}function EK(){let $=process.env.GOOGLE_CLOUD_PROJECT??process.env.GCLOUD_PROJECT,Z=process.env.GOOGLE_CLOUD_LOCATION;if(!$||!Z)return"https://aiplatform.googleapis.com/v1/publishers/google";return`https://${Z}-aiplatform.googleapis.com/v1/projects/${$}/locations/${Z}/publishers/google`}function IK(){return`https://bedrock-runtime.${process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION??"us-east-1"}.amazonaws.com/openai/v1`}function RK($,Z){if(Z?.baseUrl)return h0(Z.baseUrl);if($.provider==="llama-cpp"&&process.env.LLAMA_CPP_BASE_URL){let Q=h0(process.env.LLAMA_CPP_BASE_URL);return Q.endsWith("/v1")?Q:`${Q}/v1`}if($.provider.startsWith("cloudflare-")){let Q=wK($);if(Q)return h0(Q)}if($.provider==="azure-openai-responses"){let Q=TK();if(Q)return h0(Q)}if($.provider==="google-vertex"){let Q=EK();if(Q)return h0(Q)}if($.provider==="amazon-bedrock")return IK();return h0(E6($)??"")}function r1($,Z){let Q=h0($),Y=Z.startsWith("/")?Z:`/${Z}`;if(!Q)return Y;if(Y.startsWith("/v1/")&&Q.endsWith("/v1"))return`${Q}${Y.slice(3)}`;return`${Q}${Y}`}function X1($,Z){let Q=f0($.provider),Y={...Q?.headers,...$.headers};if(Q?.auth==="none"&&Z.type==="apiKey"&&!Z.apiKey)return Y;if(Z.type==="oauth")return{...Y,authorization:`Bearer ${Z.accessToken}`,...Z.headers};if(Q?.auth==="anthropic")return{...Y,"x-api-key":Z.apiKey};if(Q?.auth==="google")return{...Y,"x-goog-api-key":Z.apiKey};if(Q?.auth==="azure")return{...Y,"api-key":Z.apiKey};if(Q?.auth==="cloudflare")return{...Y,"cf-aig-authorization":`Bearer ${Z.apiKey}`};return{...Y,authorization:`Bearer ${Z.apiKey}`}}function J1($,Z,Q){if(Q?.baseUrl)return h0(Q.baseUrl);if(Z.type==="oauth"&&Z.baseUrl)return h0(Z.baseUrl);return RK($,Q)}function S6($,Z){return(Z.inputTokens*$.input+Z.outputTokens*$.output+Z.cacheReadTokens*$.cacheRead+Z.cacheWriteTokens*$.cacheWrite)/1e6}function C$(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0}}function K1($,Z){return{inputTokens:$.inputTokens+Z.inputTokens,outputTokens:$.outputTokens+Z.outputTokens,cacheReadTokens:$.cacheReadTokens+Z.cacheReadTokens,cacheWriteTokens:$.cacheWriteTokens+Z.cacheWriteTokens,costUsd:($.costUsd??0)+(Z.costUsd??0)}}class uZ{isComplete;extractResult;queue=[];waiting=[];done=!1;finalResult;resolveFinal;constructor($,Z){this.isComplete=$;this.extractResult=Z;this.finalResult=new Promise((Q)=>{this.resolveFinal=Q})}push($){if(this.done)return;if(this.isComplete($))this.done=!0,this.resolveFinal(this.extractResult($));let Z=this.waiting.shift();if(Z)Z({value:$,done:!1});else this.queue.push($)}end(){this.done=!0;while(this.waiting.length>0)this.waiting.shift()?.({value:void 0,done:!0})}async*[Symbol.asyncIterator](){while(!0)if(this.queue.length>0)yield this.queue.shift();else if(this.done)return;else{let $=await new Promise((Z)=>this.waiting.push(Z));if($.done)return;yield $.value}}result(){return this.finalResult}}class mZ extends uZ{constructor(){super(($)=>$.type==="done"||$.type==="error",($)=>{if($.type==="done")return $.message;if($.type==="error")return $.error;throw Error("unexpected final event")})}}function SK($){return{role:"assistant",content:[],model:`${$.provider}/${$.id}`,usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0},stopReason:"end",timestamp:Date.now()}}function i0($,Z){Z.usage.costUsd=S6($.pricing,Z.usage)}function B1($,Z,Q){let Y=new mZ,W=SK($);return(async()=>{try{if(await Q(Y,W),Z?.signal?.aborted)throw Error("Request was aborted");if(W.stopReason==="error")throw new c("api",W.errorMessage??"provider reported an error");Y.push({type:"done",message:W})}catch(G){W.stopReason=Z?.signal?.aborted?"aborted":"error",W.errorMessage=G instanceof Error?G.message:JSON.stringify(G),Y.push({type:"error",reason:W.stopReason,...G instanceof c?{errorKind:G.kind}:{},error:W})}finally{Y.end()}})(),Y}async function H1($,Z,Q,Y){let W=Y?.fetch??fetch,G;try{G=await W($,{method:"POST",headers:{"content-type":"application/json",accept:"text/event-stream",...Z},body:JSON.stringify(Q),...Y?.signal?{signal:Y.signal}:{}})}catch(X){if(Y?.signal?.aborted)throw X;let J=X instanceof Error?X.message:String(X);throw new c("network",J)}if(!G.ok){let X=await G.text();throw R$(G.status,X,G.headers)}if(!G.body)throw new c("api","response has no body");return G}var CK="2023-06-01",C6={type:"ephemeral"};function s9($){return $.filter((Z)=>Z.type!=="text"||Z.text.trim().length>0).map((Z)=>Z.type==="text"?{type:"text",text:Z.text}:{type:"image",source:{type:"base64",media_type:Z.mimeType,data:Z.data}})}function yK($){let Z=[];for(let Q of $)if(Q.type==="text"){if(Q.text.trim().length===0)continue;Z.push({type:"text",text:Q.text})}else if(Q.type==="thinking"){if(Q.redacted)Z.push({type:"redacted_thinking",data:Q.signature??""});else if(Q.signature)Z.push({type:"thinking",thinking:Q.thinking,signature:Q.signature});else if(Q.thinking.trim().length>0)Z.push({type:"text",text:Q.thinking})}else Z.push({type:"tool_use",id:Q.id,name:Q.name,input:Q.arguments??{}});return Z}function bK($,Z){let Q=[];for(let W=0;W<$.length;W++){let G=$[W];if(G.role==="user"){let X=s9(G.content);if(X.length>0)Q.push({role:"user",content:X})}else if(G.role==="assistant"){let X=yK(G.content);if(X.length>0)Q.push({role:"assistant",content:X})}else{let X=[];while(W<$.length){let J=$[W];if(!J||J.role!=="toolResult")break;X.push({type:"tool_result",tool_use_id:J.toolCallId,content:s9(J.content),is_error:J.isError}),W++}W--,Q.push({role:"user",content:X})}}let Y=Q[Q.length-1];if(Z&&Y&&Y.role==="user"){let W=Y.content,G=W[W.length-1];if(G)G.cache_control=C6}return Q}function _K($,Z,Q){if(!$.thinking||Z===void 0)return;if(Z==="off"){Q.thinking={type:"disabled"};return}if($.thinkingMode==="budget"){let Y={low:4096,medium:8192,high:16384};Q.thinking={type:"enabled",budget_tokens:Y[Z]??8192,display:"summarized"};return}Q.thinking={type:"adaptive",display:"summarized"},Q.output_config={effort:Z}}function xK($,Z,Q){let Y=$.provider==="anthropic",W={model:$.id,max_tokens:Q?.maxTokens??$.maxOutput,messages:bK(Z.messages,Y),stream:!0};if(Z.systemPrompt&&Z.systemPrompt.length>0){let G=Z.systemPrompt.reduce((X,J,B)=>J.dynamic?X:B,-1);W.system=Z.systemPrompt.map((X,J)=>({type:"text",text:X.text,...Y&&J===G?{cache_control:C6}:{}}))}if(Z.tools&&Z.tools.length>0)W.tools=Z.tools.map((G,X)=>({name:G.name,description:G.description,input_schema:G.inputSchema,...Y&&X===(Z.tools?.length??0)-1?{cache_control:C6}:{}}));if(Q?.temperature!==void 0)W.temperature=Q.temperature;return _K($,Q?.thinkingLevel,W),W}function kK($){switch($){case"end_turn":case"stop_sequence":case"pause_turn":return{stopReason:"end"};case"max_tokens":return{stopReason:"length"};case"tool_use":return{stopReason:"toolUse"};case"refusal":return{stopReason:"error",errorMessage:"The model refused to complete the request"};case"model_context_window_exceeded":return{stopReason:"error",errorMessage:"Context window exceeded"};default:return{stopReason:"end"}}}function e9($,Z,Q){return B1($,Q,async(Y,W)=>{let G=xK($,Z,Q),X=await c0(async()=>{let K=await G1($,Q),V=J1($,K,Q),z={"anthropic-version":CK,...X1($,K),...Q?.headers};return H1(r1(V,"/v1/messages"),z,G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=new Map,B=X.body;for await(let K of d0(B,Q?.signal)){if(K.event==="error")throw Error(K.data);if(!K.data)continue;let V=JSON.parse(K.data),z=V.type;if(z==="message_start"){let F=V.message?.usage;if(F)W.usage.inputTokens=F.input_tokens??0,W.usage.outputTokens=F.output_tokens??0,W.usage.cacheReadTokens=F.cache_read_input_tokens??0,W.usage.cacheWriteTokens=F.cache_creation_input_tokens??0,i0($,W)}else if(z==="content_block_start"){let{index:F,content_block:D}=V,L=W.content.length;J.set(F,{contentIndex:L,partialJson:""});let q=D.type;if(q==="text")W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:L,partial:W});else if(q==="thinking")W.content.push({type:"thinking",thinking:"",signature:""}),Y.push({type:"thinking_start",contentIndex:L,partial:W});else if(q==="redacted_thinking")W.content.push({type:"thinking",thinking:"[reasoning redacted]",signature:D.data??"",redacted:!0}),Y.push({type:"thinking_start",contentIndex:L,partial:W});else if(q==="tool_use")W.content.push({type:"toolCall",id:D.id,name:D.name,arguments:D.input??{}}),Y.push({type:"toolcall_start",contentIndex:L,partial:W});else J.delete(F)}else if(z==="content_block_delta"){let F=J.get(V.index);if(!F)continue;let D=W.content[F.contentIndex],L=V.delta,q=L.type;if(q==="text_delta"&&D?.type==="text")D.text+=L.text,Y.push({type:"text_delta",contentIndex:F.contentIndex,delta:L.text,partial:W});else if(q==="thinking_delta"&&D?.type==="thinking")D.thinking+=L.thinking,Y.push({type:"thinking_delta",contentIndex:F.contentIndex,delta:L.thinking,partial:W});else if(q==="input_json_delta"&&D?.type==="toolCall")F.partialJson+=L.partial_json,D.arguments=v0(F.partialJson),Y.push({type:"toolcall_delta",contentIndex:F.contentIndex,delta:L.partial_json,partial:W});else if(q==="signature_delta"&&D?.type==="thinking")D.signature=(D.signature??"")+L.signature}else if(z==="content_block_stop"){let F=J.get(V.index);if(!F)continue;let D=W.content[F.contentIndex];if(D?.type==="text")Y.push({type:"text_end",contentIndex:F.contentIndex,content:D.text,partial:W});else if(D?.type==="thinking")Y.push({type:"thinking_end",contentIndex:F.contentIndex,content:D.thinking,partial:W});else if(D?.type==="toolCall")D.arguments=v0(F.partialJson),Y.push({type:"toolcall_end",contentIndex:F.contentIndex,toolCall:D,partial:W})}else if(z==="message_delta"){let F=V.delta;if(F?.stop_reason){let L=kK(F.stop_reason);if(W.stopReason=L.stopReason,L.errorMessage)W.errorMessage=L.errorMessage}let D=V.usage;if(D){if(D.input_tokens!=null)W.usage.inputTokens=D.input_tokens;if(D.output_tokens!=null)W.usage.outputTokens=D.output_tokens;if(D.cache_read_input_tokens!=null)W.usage.cacheReadTokens=D.cache_read_input_tokens;if(D.cache_creation_input_tokens!=null)W.usage.cacheWriteTokens=D.cache_creation_input_tokens;i0($,W)}}}})}var y$={id:"anthropic",stream:e9};function fK($){let Z=[],Q=new Map,Y=(W,G)=>{if(G.length===0)return;let X=Z[Z.length-1];if(X&&X.role===W)X.parts.push(...G);else Z.push({role:W,parts:G})};for(let W of $)if(W.role==="user")Y("user",W.content.map((G)=>G.type==="text"?{text:G.text}:{inlineData:{mimeType:G.mimeType,data:G.data}}));else if(W.role==="assistant"){let G=[];for(let X of W.content)if(X.type==="text"){if(X.text.trim().length>0)G.push({text:X.text})}else if(X.type==="thinking");else Q.set(X.id,X.name),G.push({functionCall:{name:X.name,args:X.arguments??{}},...X.signature?{thoughtSignature:X.signature}:{}});Y("model",G)}else{let G=Q.get(W.toolCallId)??W.toolName,X=W.content.filter((B)=>B.type==="text").map((B)=>B.text).join(`
13
+ `),J=[{functionResponse:{name:G,response:W.isError?{error:X}:{output:X}}}];for(let B of W.content)if(B.type==="image")J.push({inlineData:{mimeType:B.mimeType,data:B.data}});Y("user",J)}return{contents:Z,toolNames:Q}}function vK($){switch($){case"off":case"none":return 0;case"minimal":return 512;case"low":return 2048;case"medium":return 8192;case"high":return 24576;case"xhigh":return 32768;case"max":return 49152;case"ultra":return 65536;default:return 8192}}function hK($,Z,Q){let Y={contents:fK(Z.messages).contents};if(Z.systemPrompt&&Z.systemPrompt.length>0)Y.systemInstruction={parts:Z.systemPrompt.map((G)=>({text:G.text}))};if(Z.tools&&Z.tools.length>0)Y.tools=[{functionDeclarations:Z.tools.map((G)=>({name:G.name,description:G.description,parameters:G.inputSchema}))}];let W={maxOutputTokens:Q?.maxTokens??$.maxOutput};if(Q?.temperature!==void 0)W.temperature=Q.temperature;if($.thinking&&Q?.thinkingLevel)W.thinkingConfig={thinkingBudget:vK(Q.thinkingLevel),includeThoughts:Q.thinkingLevel!=="off"&&Q.thinkingLevel!=="none"};return Y.generationConfig=W,Y}function gK($,Z){switch($){case"STOP":return{stopReason:Z?"toolUse":"end"};case"MAX_TOKENS":return{stopReason:"length"};case"SAFETY":case"RECITATION":case"PROHIBITED_CONTENT":case"BLOCKLIST":return{stopReason:"error",errorMessage:`Generation stopped: ${$}`};default:return{stopReason:Z?"toolUse":"end"}}}function $Q($,Z,Q){return B1($,Q,async(Y,W)=>{let G=hK($,Z,Q),X=await c0(async()=>{let q=await G1($,Q);if(q.type!=="apiKey")throw new c("auth",`${$.provider} requires API-key auth`);let U=J1($,q,Q).replace(/\/+$/,""),A=$.provider==="google-vertex"?`/models/${$.id}:streamGenerateContent?alt=sse`:`/models/${$.id}:streamGenerateContent?alt=sse`,N=`${U}${A}`;return H1(N,{...X1($,q),...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=-1,B=-1,K=0,V=!1,z,F=X.body,D=()=>{if(J!==-1){let q=W.content[J];if(q?.type==="text")Y.push({type:"text_end",contentIndex:J,content:q.text,partial:W});J=-1}if(B!==-1){let q=W.content[B];if(q?.type==="thinking")Y.push({type:"thinking_end",contentIndex:B,content:q.thinking,partial:W});B=-1}};for await(let q of d0(F,Q?.signal)){if(!q.data)continue;let U=JSON.parse(q.data),A=U.candidates?.[0],N=U.usageMetadata;if(N){let P=N.cachedContentTokenCount??0;W.usage.inputTokens=(N.promptTokenCount??0)-P,W.usage.cacheReadTokens=P,W.usage.outputTokens=(N.candidatesTokenCount??0)+(N.thoughtsTokenCount??0),i0($,W)}if(!A)continue;let j=A.content?.parts??[];for(let P of j)if(typeof P.text==="string")if(P.thought===!0){if(B===-1)B=W.content.length,W.content.push({type:"thinking",thinking:""}),Y.push({type:"thinking_start",contentIndex:B,partial:W});let M=W.content[B];if(M?.type==="thinking"){if(M.thinking+=P.text,typeof P.thoughtSignature==="string")M.signature=P.thoughtSignature;Y.push({type:"thinking_delta",contentIndex:B,delta:P.text,partial:W})}}else{if(J===-1)J=W.content.length,W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:J,partial:W});let M=W.content[J];if(M?.type==="text")M.text+=P.text,Y.push({type:"text_delta",contentIndex:J,delta:P.text,partial:W})}else if(P.functionCall){V=!0;let M=P.functionCall,I=W.content.length,v={type:"toolCall",id:`call_${K++}_${M.name}`,name:M.name,arguments:M.args??{},...typeof P.thoughtSignature==="string"?{signature:P.thoughtSignature}:{}};W.content.push(v),Y.push({type:"toolcall_start",contentIndex:I,partial:W}),Y.push({type:"toolcall_end",contentIndex:I,toolCall:v,partial:W})}if(typeof A.finishReason==="string")z=A.finishReason}D();let L=gK(z??"STOP",V);if(W.stopReason=L.stopReason,L.errorMessage)W.errorMessage=L.errorMessage})}var b$={id:"google",stream:$Q};async function y6($){let Z=await $.getCredentials?.();if(!Z||Z.type!=="oauth"||Z.availableModelIds===void 0)return;let Q=new Set(Z.availableModelIds);return $.currentModels.filter((Y)=>Y.provider==="github-copilot"&&Q.has(Y.id))}function uK($){return $.content.filter((Q)=>Q.type==="text").map((Q)=>Q.text).join(`
14
+ `)||"(image result attached in the following user message)"}function mK($){if($.content.every((Z)=>Z.type==="text"))return $.content.map((Z)=>Z.text).join(`
15
+ `);return $.content.map((Z)=>Z.type==="text"?{type:"text",text:Z.text}:{type:"image_url",image_url:{url:`data:${Z.mimeType};base64,${Z.data}`}})}function pK($,Z){let Q=[];if(Z&&Z.length>0)Q.push({role:"system",content:Z.map((G)=>G.text).join(`
16
+
17
+ `)});let Y=[],W=()=>{let G=Y.filter((X)=>X.type==="image");if(G.length>0)Q.push({role:"user",content:[{type:"text",text:"Images returned by the preceding tool calls:"},...G.map((X)=>({type:"image_url",image_url:{url:`data:${X.mimeType};base64,${X.data}`}}))]});Y=[]};for(let G of $){if(G.role!=="toolResult")W();if(G.role==="user"){Q.push({role:"user",content:mK(G)});continue}if(G.role==="toolResult"){Q.push({role:"tool",tool_call_id:G.toolCallId,content:uK(G)}),Y.push(...G.content);continue}let X=G.content.filter((K)=>K.type==="text").map((K)=>K.text).join(`
21
18
  `),J=G.content.filter((K)=>K.type==="thinking").map((K)=>K.thinking).join(`
22
- `),B=G.content.filter((K)=>K.type==="toolCall").map((K)=>({id:K.id,type:"function",function:{name:K.name,arguments:JSON.stringify(K.arguments??{})}}));if(!X&&!J&&B.length===0)continue;Q.push({role:"assistant",content:X||null,...J?{reasoning_content:J}:{},...B.length>0?{tool_calls:B}:{}})}return W(),Q}function R1($){return $!==void 0&&$!=="off"}function nK($,Z,Q){if(!Z.thinking||Q===void 0)return;if(Z.provider==="zai"){if($.thinking={type:R1(Q)?"enabled":"disabled"},R1(Q)&&Z.id==="glm-5.2")$.reasoning_effort=Q;return}if(Z.provider.startsWith("qwen-token-plan")){$.enable_thinking=R1(Q);return}if(Z.provider==="deepseek"||Z.provider==="moonshotai"){if($.thinking={type:R1(Q)?"enabled":"disabled"},R1(Q))$.reasoning_effort=Q;return}if(Z.provider==="openrouter"){if(R1(Q))$.reasoning={effort:Q};return}if(R1(Q))$.reasoning_effort=Q}function aK($,Z,Q){let Y={model:$.id,messages:iK(Z.messages,Z.systemPrompt),stream:!0,stream_options:{include_usage:!0},max_tokens:Q?.maxTokens??$.maxOutput};if(Z.tools&&Z.tools.length>0)Y.tools=Z.tools.map((W)=>({type:"function",function:{name:W.name,description:W.description,parameters:W.inputSchema}})),Y.tool_choice="auto";if(Q?.temperature!==void 0)Y.temperature=Q.temperature;if(Q?.sessionId)if($.provider==="openrouter")Y.user=Q.sessionId;else Y.prompt_cache_key=Q.sessionId;return nK(Y,$,Q?.thinkingLevel),Y}function uZ($){return typeof $==="number"&&Number.isFinite($)?$:0}function C6($,Z,Q){return K1($,Q,async(Y,W)=>{let G=aK($,Z,Q),X=await l0(async()=>{let z=await W1($,Q),F=X1($,z,Q);return B1(r1(F,"/chat/completions"),{...G1($,z),...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=-1,B=-1,K=new Map,V=X.body;for await(let z of p0(V,Q?.signal)){if(!z.data||z.data==="[DONE]")continue;let F=JSON.parse(z.data),D=F.usage;if(D){let N=D.prompt_tokens_details,j=uZ(N?.cached_tokens);W.usage.inputTokens=Math.max(0,uZ(D.prompt_tokens)-j),W.usage.cacheReadTokens=j,W.usage.outputTokens=uZ(D.completion_tokens),d0($,W)}let L=F.choices?.[0];if(!L)continue;let U=L.delta??{},q=typeof U.reasoning_content==="string"?U.reasoning_content:typeof U.reasoning==="string"?U.reasoning:"";if(q){if(B===-1)B=W.content.length,W.content.push({type:"thinking",thinking:""}),Y.push({type:"thinking_start",contentIndex:B,partial:W});let N=W.content[B];if(N?.type==="thinking")N.thinking+=q,Y.push({type:"thinking_delta",contentIndex:B,delta:q,partial:W})}if(typeof U.content==="string"&&U.content){if(J===-1)J=W.content.length,W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:J,partial:W});let N=W.content[J];if(N?.type==="text")N.text+=U.content,Y.push({type:"text_delta",contentIndex:J,delta:U.content,partial:W})}for(let N of U.tool_calls??[]){let j=uZ(N.index),P=K.get(j),M=N.function??{};if(!P){let g=W.content.length;P={contentIndex:g,partialJson:""},K.set(j,P),W.content.push({type:"toolCall",id:String(N.id??`call_${j}`),name:String(M.name??""),arguments:{}}),Y.push({type:"toolcall_start",contentIndex:g,partial:W})}let S=W.content[P.contentIndex];if(S?.type!=="toolCall")continue;if(typeof N.id==="string")S.id=N.id;if(typeof M.name==="string"&&M.name)S.name+=M.name;if(typeof M.arguments==="string")P.partialJson+=M.arguments,S.arguments=f0(P.partialJson),Y.push({type:"toolcall_delta",contentIndex:P.contentIndex,delta:M.arguments,partial:W})}let A=L.finish_reason;if(typeof A==="string")W.stopReason=A==="length"?"length":A==="tool_calls"||K.size>0?"toolUse":"end"}if(B!==-1){let z=W.content[B];if(z?.type==="thinking")Y.push({type:"thinking_end",contentIndex:B,content:z.thinking,partial:W})}if(J!==-1){let z=W.content[J];if(z?.type==="text")Y.push({type:"text_end",contentIndex:J,content:z.text,partial:W})}for(let z of K.values()){let F=W.content[z.contentIndex];if(F?.type!=="toolCall")continue;F.arguments=f0(z.partialJson),Y.push({type:"toolcall_end",contentIndex:z.contentIndex,toolCall:F,partial:W})}if(K.size>0&&W.stopReason==="end")W.stopReason="toolUse"})}var rK=new Map([[C$.id,C$],[b$.id,b$],[t1.id,t1],[y$.id,y$]]);function tK($){let Z=rK.get($);if(Z)return Z;return{id:$,stream:(Q,Y,W)=>{switch(E$(Q)){case"anthropic-messages":return C$.stream(Q,Y,W);case"google-generative-ai":case"google-vertex":return y$.stream(Q,Y,W);case"openai-responses":return b$.stream(Q,Y,W);default:return C6(Q,Y,W)}},...$==="github-copilot"?{discoverModels:E6}:{}}}var o1=new Map([...m0.keys()].map(($)=>[$,tK($)]));o1.set(t1.id,t1);function y6($){let Z=o1.get($);if(!Z)throw Error(`Unknown provider: ${$}`);return Z}function WQ($){o1.set($.id,$)}var oK="https://models.dev/api.json",sK=15000,s1={input:0,output:0,cacheRead:0,cacheWrite:0},eK=[{source:"amazon-bedrock",providers:["amazon-bedrock"]},{source:"anthropic",providers:["anthropic"]},{source:"cerebras",providers:["cerebras"]},{source:"cloudflare-ai-gateway",providers:["cloudflare-ai-gateway"]},{source:"cloudflare-workers-ai",providers:["cloudflare-workers-ai"]},{source:"deepseek",providers:["deepseek"]},{source:"fireworks-ai",providers:["fireworks"]},{source:"github-copilot",providers:["github-copilot"]},{source:"google",providers:["google"]},{source:"google-vertex",providers:["google-vertex"]},{source:"groq",providers:["groq"]},{source:"huggingface",providers:["huggingface"]},{source:"kimi-for-coding",providers:["kimi-coding"]},{source:"minimax",providers:["minimax"]},{source:"mistral",providers:["mistral"]},{source:"moonshotai",providers:["moonshotai"]},{source:"nvidia",providers:["nvidia"]},{source:"openai",providers:["openai","azure-openai-responses"]},{source:"opencode",providers:["opencode"]},{source:"opencode-go",providers:["opencode-go"]},{source:"openrouter",providers:["openrouter"]},{source:"alibaba-token-plan",providers:["qwen-token-plan"]},{source:"vercel-ai-gateway",providers:["vercel-ai-gateway"]},{source:"xai",providers:["xai"]},{source:"zai-coding-plan",providers:["zai"]}],$B=[{provider:"github-copilot",id:"gpt-5.3-codex",name:"GPT-5.3 Codex",api:"openai-responses",contextWindow:128000,maxOutput:32000,modalities:["text","image"],thinking:!0,pricing:s1},{provider:"kimi-coding",id:"kimi-for-coding",name:"Kimi For Coding",api:"anthropic-messages",contextWindow:262144,maxOutput:65536,modalities:["text"],thinking:!0,pricing:s1},{provider:"openrouter",id:"auto",name:"OpenRouter Auto",api:"openai-completions",contextWindow:2000000,maxOutput:30000,modalities:["text","image"],thinking:!0,pricing:s1},{provider:"xai",id:"grok-4.3",name:"Grok 4.3",api:"openai-completions",contextWindow:256000,maxOutput:64000,modalities:["text","image"],thinking:!0,pricing:s1},{provider:"zai",id:"glm-5.1",name:"GLM-5.1",api:"openai-completions",contextWindow:202752,maxOutput:65536,modalities:["text"],thinking:!0,pricing:s1},{provider:"qwen-token-plan",id:"qwen3.7-max",name:"Qwen3.7 Max",api:"openai-completions",contextWindow:1e6,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:s1}],_6=[...c9.models,...$B],U0=[..._6],JQ=new Set;function N0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function H1($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function b6($){return Array.isArray($)?$.filter((Z)=>typeof Z==="string"):[]}function ZB($){if($.tool_call!==!0||$.status==="deprecated")return!1;let Z=N0($.limit)?$.limit:{};if((H1(Z.context)??0)<=0||(H1(Z.output)??0)<=0)return!1;if(!N0($.modalities))return!0;let Q=b6($.modalities.input),Y=b6($.modalities.output);return Q.includes("text")&&Y.includes("text")}function QB($){if(!Array.isArray($.reasoning_options))return"budget";return $.reasoning_options.some((Z)=>N0(Z)&&Z.type==="effort")?"adaptive":"budget"}function YB($){if(!Array.isArray($.reasoning_options))return;let Z=[];for(let Q of $.reasoning_options){if(!N0(Q)||Q.type!=="effort"||!Array.isArray(Q.values))continue;for(let Y of Q.values){if(typeof Y!=="string"||Y.length===0||Y==="default")continue;if(!Z.includes(Y))Z.push(Y)}}return Z.length>0?Z:void 0}function WB($,Z){if($==="cloudflare-ai-gateway"&&typeof Z.id==="string"){if(Z.id.startsWith("openai/"))return"openai-responses";if(Z.id.startsWith("anthropic/"))return"anthropic-messages";return"openai-completions"}if($==="fireworks"&&typeof Z.id==="string"&&Z.id.includes("glm-5p2"))return"openai-completions";if($==="github-copilot"){if(typeof Z.id==="string"&&/^claude-(haiku|sonnet|opus)-[45](?=[.-]|$)/.test(Z.id))return"anthropic-messages";if(typeof Z.id==="string"&&(Z.id.startsWith("gpt-5")||Z.id.startsWith("oswe")||Z.id.startsWith("mai-")))return"openai-responses";return"openai-completions"}if($==="xai"&&Z.id==="grok-4.5")return"openai-responses";if($==="opencode"||$==="opencode-go"){let Q=N0(Z.provider)?Z.provider.npm:void 0;if(Q==="@ai-sdk/openai")return"openai-responses";if(Q==="@ai-sdk/anthropic")return"anthropic-messages";if(Q==="@ai-sdk/google")return"google-generative-ai";return"openai-completions"}return E$({provider:$,id:"",contextWindow:1,maxOutput:1,modalities:["text"],pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}})}function KQ($,Z){if(typeof Z.id!=="string")return;let Q=WB($,Z),Y=Z.id,W=m0.get($)?.baseUrl;if($==="cloudflare-ai-gateway"){let G=Y.indexOf("/"),X=G===-1?"":Y.slice(0,G);if(X==="openai"||X==="anthropic")Y=Y.slice(G+1)}else if($==="fireworks"&&Q==="openai-completions")W="https://api.fireworks.ai/inference/v1";else if(($==="opencode"||$==="opencode-go")&&Q==="anthropic-messages")W=W?.replace(/\/v1$/,"");return{id:Y,api:Q,...W?{baseUrl:W}:{}}}function GB($,Z){if(!ZB(Z)||typeof Z.id!=="string")return;let Q=N0(Z.limit)?Z.limit:{},Y=H1(Q.context),W=H1(Q.output);if(Y===void 0||W===void 0)return;let G=N0(Z.cost)?Z.cost:{},X=N0(Z.modalities)?b6(Z.modalities.input):["text"],J=["text"];if(X.includes("image"))J.push("image");let B=Z.reasoning===!0,K=B?YB(Z):void 0,V=KQ($,Z);if(!V)return;return{provider:$,id:V.id,...typeof Z.name==="string"?{name:Z.name}:{},api:V.api,...V.baseUrl?{baseUrl:V.baseUrl}:{},contextWindow:Y,maxOutput:W,modalities:J,...B?{thinking:!0}:{},...K?{thinkingLevels:K}:{},...B&&$==="anthropic"?{thinkingMode:QB(Z)}:{},pricing:{input:H1(G.input)??0,output:H1(G.output)??0,cacheRead:H1(G.cache_read)??0,cacheWrite:H1(G.cache_write)??0}}}async function XB($){let Z=await($.fetch??fetch)($.url??oK,{headers:{accept:"application/json"},signal:$.signal??AbortSignal.timeout(sK)});if(!Z.ok)throw Error(`Could not discover models: ${Z.status} ${Z.statusText}`.trim());let Q=await Z.json();if(!N0(Q))throw Error("Could not discover models: invalid catalog response");let Y=[],W=new Set;for(let G of eK){let X=Q[G.source];if(!N0(X)||!N0(X.models))continue;for(let J of G.providers){let B=0;for(let[K,V]of Object.entries(X.models)){if(!N0(V))continue;let z=typeof V.id==="string"?V:{...V,id:K},F=GB(J,z);if(F)Y.push(F),B++}if(B>0)W.add(J)}}if(Y.length===0)throw Error("Could not discover models: catalog contained no compatible models");return{models:Y,authoritativeProviders:W}}function GQ($){return $ instanceof Error?$.message:String($)}async function BQ($){let Z=[],Q=new Set,Y=[],W=U0;try{let B=await XB($);Z.push(...B.models);for(let V of B.authoritativeProviders)Q.add(V);let K=new Map(U0.map((V)=>[`${V.provider}/${V.id}`,V]));for(let V of B.models)K.set(`${V.provider}/${V.id}`,V);W=[...K.values()]}catch(B){Y.push(GQ(B))}let G=[],X=$.getCredentials;for(let B of $.providers??o1.values()){if(!B.discoverModels)continue;G.push(B.discoverModels({...$.fetch?{fetch:$.fetch}:{},...$.signal?{signal:$.signal}:{},...X?{getCredentials:()=>X(B.id)}:{},...$.clientVersion?{clientVersion:$.clientVersion}:{},currentModels:W}).then((K)=>{if(K===void 0)return;if(K.length===0)throw Error(`Could not discover ${B.id} models: catalog returned no models`);return{models:K,authoritativeProviders:new Set([B.id])}}))}let J=await Promise.allSettled(G);for(let B of J){if(B.status==="rejected"){Y.push(GQ(B.reason));continue}if(!B.value)continue;for(let K of B.value.authoritativeProviders){for(let V=Z.length-1;V>=0;V--)if(Z[V]?.provider===K)Z.splice(V,1);Q.add(K)}Z.push(...B.value.models)}if(Q.size===0)throw Error(Y[0]??"Could not discover models: no discovery source was available");for(let B of Y)$.onWarning?.(B);return{models:Z,authoritativeProviders:Q}}async function HQ($={}){return(await BQ($)).models}async function VQ($={}){let Z=await BQ($);for(let Y of Z.authoritativeProviders)JQ.add(Y);let Q=U0.filter((Y)=>!Z.authoritativeProviders.has(Y.provider));for(let Y of _6){if(Z.authoritativeProviders.has(Y.provider))continue;if(!Q.some((W)=>W.provider===Y.provider&&W.id===Y.id))Q.push(Y)}for(let Y of Z.models){let W=Q.findIndex((G)=>G.provider===Y.provider&&G.id===Y.id);if(W===-1)Q.push(Y);else Q[W]=Y}return U0=Q,x6()}function x6(){return[...U0]}function zQ($){for(let Z of $){let Q=U0.findIndex((Y)=>Y.provider===Z.provider&&Y.id===Z.id);if(Q===-1)U0.push(Z);else U0[Q]=Z}}function mZ($){let Z=$.indexOf("/");if(Z!==-1){let Q=$.slice(0,Z),Y=$.slice(Z+1),W=U0.find((J)=>J.provider===Q&&J.id===Y);if(W)return W;if(JQ.has(Q))return;if(!m0.get(Q)||!Y)return;let X=KQ(Q,{id:Y});if(!X)return;return{provider:Q,id:X.id,name:X.id,api:X.api,...X.baseUrl?{baseUrl:X.baseUrl}:{},contextWindow:128000,maxOutput:32000,modalities:["text","image"],thinking:!0,pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}}}return U0.find((Q)=>Q.id===$)}function FQ($){return`${$.provider}/${$.id}`}function k6($,Z=process.env){if($==="openai-codex")return!1;let Q=a1($);return Q.length===0||Q.some((Y)=>Boolean(Z[Y]))}var f6={"openai-codex":"gpt-5.6-sol",openai:"gpt-5.6-sol",anthropic:"claude-opus-5",google:"gemini-2.5-pro","github-copilot":"gpt-5.3-codex","kimi-coding":"kimi-for-coding",xai:"grok-4.3"};function LQ($){return f6[$]}function XQ($){for(let Z of $){let Q=U0.filter((G)=>G.provider===Z);if(Q.length===0)continue;let Y=f6[Z];return(Y?Q.find((G)=>G.id===Y):void 0)??Q[0]}return}function e1($=process.env,Z){let Q=Z?[...Z]:[...new Set(U0.map((W)=>W.provider))].filter((W)=>k6(W,$)),Y=XQ(Q)??XQ(Object.keys(f6))??U0[0]??_6[0];if(!Y)throw Error("No models are available");return FQ(Y)}var JB=["off","low","medium","high"];function $$($){if(!$.thinking)return["off"];if($.thinkingLevels&&$.thinkingLevels.length>0)return[...new Set($.thinkingLevels)];return[...JB]}function v6($){let Z=$$($);if($.defaultThinkingLevel&&Z.includes($.defaultThinkingLevel))return $.defaultThinkingLevel;return Z[0]??"off"}function i0($,Z){let Q=$$($);if(Z&&Q.includes(Z))return Z;return v6($)}function _$($){if($.stopReason!=="error")return!1;return vZ($.errorMessage??"")}var UQ=3.5;function pZ($){return Math.ceil($.length/UQ)}function l($){let Z=0;for(let Q of $)if(Q.role==="toolResult"||Q.role==="user"||Q.role==="custom")for(let Y of Q.content)Z+=Y.type==="text"?Y.text.length:1500;else for(let Y of Q.content)if(Y.type==="text")Z+=Y.text.length;else if(Y.type==="thinking")Z+=Y.thinking.length;else Z+=JSON.stringify(Y.arguments).length+Y.name.length;return Math.ceil(Z/UQ)}function k$($,Z,Q,Y){let W=l(Z),G=Q?Q.inputTokens+Q.cacheReadTokens+Q.cacheWriteTokens:0,X=Q&&Y!==void 0?Math.max(0,W-Y):0,J=Math.max(G+X,W),B=$.contextWindow;return{tokens:J,limit:B,percent:B>0?J/B:0}}var E1=0.85;function u6($,Z=E1){return $.percent>=Z}class v0 extends Error{usage;constructor($,Z){super($);this.usage=Z;this.name="CompactionError"}}var Z$=20000;function KB($,Z){for(let Q=Math.min(Z,$.length-1);Q>=0;Q--)if($[Q]?.role==="user")return Q;return null}function qQ($,Z=Z$){if($.length<=4&&l($)<=Z)return{keepFromIndex:$.length,keptTokens:0,isSplitTurn:!1,turnStartIndex:null};let Q=0,Y=$.length;while(Y>0&&Q<Z){let X=Y-1,J=l([$[X]]);if(Q>0&&Q+J>Z)break;Y=X,Q+=J}while(Y>0&&$[Y]?.role==="toolResult")Y--,Q+=l([$[Y]]);if(Y===0){if($.length===1)Y=$.length;else if(Y=$.findIndex((X,J)=>J>0&&X.role!=="toolResult"),Y<0)Y=$.length;Q=l($.slice(Y))}let W=Y<$.length?KB($,Y):null,G=W!==null&&W<Y;return{keepFromIndex:Y,keptTokens:Q,isSplitTurn:G,turnStartIndex:W}}var g6=`Summarize the conversation so far so that work can continue without the original transcript.
19
+ `),B=G.content.filter((K)=>K.type==="toolCall").map((K)=>({id:K.id,type:"function",function:{name:K.name,arguments:JSON.stringify(K.arguments??{})}}));if(!X&&!J&&B.length===0)continue;Q.push({role:"assistant",content:X||null,...J?{reasoning_content:J}:{},...B.length>0?{tool_calls:B}:{}})}return W(),Q}function R1($){return $!==void 0&&$!=="off"}function lK($,Z,Q){if(!Z.thinking||Q===void 0)return;if(Z.provider==="zai"){if($.thinking={type:R1(Q)?"enabled":"disabled"},R1(Q)&&Z.id==="glm-5.2")$.reasoning_effort=Q;return}if(Z.provider.startsWith("qwen-token-plan")){$.enable_thinking=R1(Q);return}if(Z.provider==="deepseek"||Z.provider==="moonshotai"){if($.thinking={type:R1(Q)?"enabled":"disabled"},R1(Q))$.reasoning_effort=Q;return}if(Z.provider==="openrouter"){if(R1(Q))$.reasoning={effort:Q};return}if(R1(Q))$.reasoning_effort=Q}function cK($,Z,Q){let Y={model:$.id,messages:pK(Z.messages,Z.systemPrompt),stream:!0,stream_options:{include_usage:!0},max_tokens:Q?.maxTokens??$.maxOutput};if(Z.tools&&Z.tools.length>0)Y.tools=Z.tools.map((W)=>({type:"function",function:{name:W.name,description:W.description,parameters:W.inputSchema}})),Y.tool_choice="auto";if(Q?.temperature!==void 0)Y.temperature=Q.temperature;if(Q?.sessionId)if($.provider==="openrouter")Y.user=Q.sessionId;else Y.prompt_cache_key=Q.sessionId;return lK(Y,$,Q?.thinkingLevel),Y}function dK($,Z,Q){if(!$)return Z;if(Q.has($)&&(Z===$||Z.startsWith($)))return $;if(Z.startsWith($))return Z;if($.endsWith(Z))return $;return $+Z}function pZ($){return typeof $==="number"&&Number.isFinite($)?$:0}function _$($,Z,Q){return B1($,Q,async(Y,W)=>{let G=cK($,Z,Q),X=await c0(async()=>{let F=await G1($,Q),D=J1($,F,Q);return H1(r1(D,"/chat/completions"),{...X1($,F),...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=-1,B=-1,K=new Map,V=new Set(Z.tools?.map((F)=>F.name)??[]),z=X.body;for await(let F of d0(z,Q?.signal)){if(!F.data||F.data==="[DONE]")continue;let D=JSON.parse(F.data),L=D.usage;if(L){let j=L.prompt_tokens_details,P=pZ(j?.cached_tokens);W.usage.inputTokens=Math.max(0,pZ(L.prompt_tokens)-P),W.usage.cacheReadTokens=P,W.usage.outputTokens=pZ(L.completion_tokens),i0($,W)}let q=D.choices?.[0];if(!q)continue;let U=q.delta??{},A=typeof U.reasoning_content==="string"?U.reasoning_content:typeof U.reasoning==="string"?U.reasoning:"";if(A){if(B===-1)B=W.content.length,W.content.push({type:"thinking",thinking:""}),Y.push({type:"thinking_start",contentIndex:B,partial:W});let j=W.content[B];if(j?.type==="thinking")j.thinking+=A,Y.push({type:"thinking_delta",contentIndex:B,delta:A,partial:W})}if(typeof U.content==="string"&&U.content){if(J===-1)J=W.content.length,W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:J,partial:W});let j=W.content[J];if(j?.type==="text")j.text+=U.content,Y.push({type:"text_delta",contentIndex:J,delta:U.content,partial:W})}for(let j of U.tool_calls??[]){let P=pZ(j.index),M=K.get(P),I=j.function??{};if(!M){let d=W.content.length;M={contentIndex:d,partialJson:""},K.set(P,M),W.content.push({type:"toolCall",id:String(j.id??`call_${P}`),name:String(I.name??""),arguments:{}}),Y.push({type:"toolcall_start",contentIndex:d,partial:W})}let v=W.content[M.contentIndex];if(v?.type!=="toolCall")continue;if(typeof j.id==="string")v.id=j.id;if(typeof I.name==="string"&&I.name)v.name=dK(v.name,I.name,V);if(typeof I.arguments==="string")M.partialJson+=I.arguments,v.arguments=v0(M.partialJson),Y.push({type:"toolcall_delta",contentIndex:M.contentIndex,delta:I.arguments,partial:W})}let N=q.finish_reason;if(typeof N==="string")W.stopReason=N==="length"?"length":N==="tool_calls"||K.size>0?"toolUse":"end"}if(B!==-1){let F=W.content[B];if(F?.type==="thinking")Y.push({type:"thinking_end",contentIndex:B,content:F.thinking,partial:W})}if(J!==-1){let F=W.content[J];if(F?.type==="text")Y.push({type:"text_end",contentIndex:J,content:F.text,partial:W})}for(let F of K.values()){let D=W.content[F.contentIndex];if(D?.type!=="toolCall")continue;D.arguments=v0(F.partialJson),Y.push({type:"toolcall_end",contentIndex:F.contentIndex,toolCall:D,partial:W})}if(K.size>0&&W.stopReason==="end")W.stopReason="toolUse"})}var iK="http://127.0.0.1:8000/v1",nK={input:0,output:0,cacheRead:0,cacheWrite:0};function t1($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function ZQ($){return typeof $==="number"&&Number.isInteger($)&&$>0?$:void 0}function aK(){let $=(process.env.LLAMA_CPP_BASE_URL??iK).replace(/\/+$/,"");return $.endsWith("/v1")?$:`${$}/v1`}function rK($){return $.endsWith("/v1")?$.slice(0,-3):$}async function tK($){return await $.getCredentials?.()??(process.env.LLAMA_CPP_API_KEY?{type:"apiKey",apiKey:process.env.LLAMA_CPP_API_KEY}:void 0)}function oK($){if(!$)return{accept:"application/json"};let Z=$.type==="oauth"?$.accessToken:$.apiKey;return{accept:"application/json",...Z?{authorization:`Bearer ${Z}`}:{}}}async function QQ($){let Z=$.fetch??fetch,Q=aK(),Y=await tK($),W=oK(Y),G=await Z(`${Q}/models`,{headers:W,...$.signal?{signal:$.signal}:{}});if(!G.ok)throw Error(`Could not discover llama.cpp models: ${G.status} ${G.statusText}`.trim());let X=await G.json();if(!t1(X)||!Array.isArray(X.data))throw Error("Could not discover llama.cpp models: invalid /v1/models response");let J;try{let F=await Z(`${rK(Q)}/props`,{headers:W,...$.signal?{signal:$.signal}:{}});if(F.ok){let D=await F.json();if(t1(D))J=D}}catch{}let B=t1(J?.default_generation_settings)?J.default_generation_settings:void 0,K=ZQ(B?.n_ctx),z=(t1(J?.modalities)?J.modalities:void 0)?.vision===!0;return X.data.flatMap((F)=>{if(!t1(F)||typeof F.id!=="string"||F.id.length===0)return[];let D=t1(F.meta)?F.meta:void 0,L=K??ZQ(D?.n_ctx_train)??131072;return[{provider:"llama-cpp",id:F.id,name:F.id,api:"openai-completions",baseUrl:Q,contextWindow:L,maxOutput:Math.min(32768,L),modalities:z?["text","image"]:["text"],pricing:nK}]})}var lZ={id:"llama-cpp",stream:_$,discoverModels:QQ};var GQ="https://chatgpt.com/backend-api/codex",sK=64,eK=128000,$B={input:0,output:0,cacheRead:0,cacheWrite:0};function XQ($){let Z=$?.trim();return Z?Z.slice(0,sK):void 0}function YQ($){return typeof $==="number"&&Number.isFinite($)&&$>0?$:void 0}function ZB($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function WQ($){return typeof $==="string"&&$.length>0?$:void 0}function QB($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return;let Q=$;if(typeof Q.slug!=="string"||Q.slug.length===0||Q.supported_in_api===!1||typeof Q.visibility==="string"&&Q.visibility!=="list")return;let Y=Z.find((F)=>F.provider==="openai-codex"&&F.id===Q.slug),W=YQ(Q.context_window)??YQ(Q.max_context_window)??Y?.contextWindow;if(!W)return;let G=Array.isArray(Q.input_modalities)?Q.input_modalities.filter((F)=>typeof F==="string"):[],X=["text"];if(G.includes("image")||Y?.modalities.includes("image"))X.push("image");let J=Array.isArray(Q.supported_reasoning_levels)?Q.supported_reasoning_levels.map((F)=>typeof F==="object"&&F!==null?WQ(F.effort):void 0).filter((F)=>F!==void 0):[],B=Y?.thinkingLevels,K=J.length>0?J:B,V=WQ(Q.default_reasoning_level)??Y?.defaultThinkingLevel,z=V&&(!K||K.includes(V))?V:void 0;return{provider:"openai-codex",id:Q.slug,...typeof Q.display_name==="string"?{name:Q.display_name}:{},contextWindow:W,maxOutput:Y?.maxOutput??eK,modalities:X,...K?.length||z||Y?.thinking?{thinking:!0}:{},...K&&K.length>0?{thinkingLevels:K}:{},...z?{defaultThinkingLevel:z}:{},pricing:Y?.pricing??$B,priority:ZB(Q.priority)??Number.MAX_SAFE_INTEGER}}async function JQ($){let Z=await $.getCredentials?.();if(!Z||Z.type!=="oauth"||!Z.accountId)return;let Q=new URL(`${GQ}/models`);Q.searchParams.set("client_version",$.clientVersion??"0.0.0");let Y=await($.fetch??fetch)(Q,{headers:{accept:"application/json",authorization:`Bearer ${Z.accessToken}`,"chatgpt-account-id":Z.accountId,originator:"mu"},...$.signal?{signal:$.signal}:{}});if(!Y.ok)throw R$(Y.status,await Y.text(),Y.headers);let W=await Y.json();if(typeof W!=="object"||W===null||!Array.isArray(W.models))throw Error("Could not discover ChatGPT models: invalid catalog response");let G=W.models;if(G.length===0)return;let X=G.map((J)=>QB(J,$.currentModels)).filter((J)=>J!==void 0).sort((J,B)=>J.priority-B.priority).map(({priority:J,...B})=>B);if(X.length===0)throw Error("Could not discover ChatGPT models: catalog contained no compatible models");return X}function YB($,Z,Q){if(Q?.provider==="openai-codex"){if($.type!=="oauth"||!$.accountId)throw Error("OpenAI Codex requires a ChatGPT account credential");let W=(Z?.baseUrl??GQ).replace(/\/+$/,""),G=XQ(Z?.sessionId);return{url:`${W}/responses`,headers:{authorization:`Bearer ${$.accessToken}`,"chatgpt-account-id":$.accountId,originator:"mu","openai-beta":"responses=experimental",...G?{"session-id":G,"x-client-request-id":G}:{}}}}if(!Q)throw Error("A model is required");let Y=J1(Q,$,Z);return{url:r1(Y,"/responses"),headers:X1(Q,$)}}function WB($){let Z=[];for(let Q of $)if(Q.role==="user")Z.push({role:"user",content:Q.content.map((Y)=>Y.type==="text"?{type:"input_text",text:Y.text}:{type:"input_image",image_url:`data:${Y.mimeType};base64,${Y.data}`})});else if(Q.role==="assistant")for(let Y of Q.content)if(Y.type==="text"){if(Y.text.trim().length===0)continue;Z.push({role:"assistant",content:[{type:"output_text",text:Y.text}]})}else if(Y.type==="thinking"){if(!Y.signature)continue;try{let W=JSON.parse(Y.signature);Z.push({type:"reasoning",id:W.id,summary:[],...W.encrypted_content?{encrypted_content:W.encrypted_content}:{}})}catch{}}else Z.push({type:"function_call",call_id:Y.id,name:Y.name,arguments:JSON.stringify(Y.arguments??{})});else{let Y=Q.content.every((W)=>W.type==="text")?Q.content.map((W)=>W.text).join(`
20
+ `):Q.content.map((W)=>W.type==="text"?{type:"input_text",text:W.text}:{type:"input_image",image_url:`data:${W.mimeType};base64,${W.data}`});Z.push({type:"function_call_output",call_id:Q.toolCallId,output:Y})}return Z}function GB($,Z,Q){let Y=$.provider==="openai-codex",W={model:$.id,input:WB(Z.messages),stream:!0,store:!1};if(!Y)W.max_output_tokens=Q?.maxTokens??$.maxOutput;if(Z.systemPrompt&&Z.systemPrompt.length>0)W.instructions=Z.systemPrompt.map((G)=>G.text).join(`
21
+
22
+ `);else if(Y)W.instructions="You are a helpful assistant.";if(Z.tools&&Z.tools.length>0)W.tools=Z.tools.map((G)=>({type:"function",name:G.name,description:G.description,parameters:G.inputSchema,strict:Y?null:!1}));if(Y){W.text={verbosity:"low"},W.include=["reasoning.encrypted_content"],W.tool_choice="auto",W.parallel_tool_calls=!0;let G=XQ(Q?.sessionId);if(G)W.prompt_cache_key=G}if(Q?.temperature!==void 0)W.temperature=Q.temperature;if($.thinking&&Q?.thinkingLevel&&Q.thinkingLevel!=="off"){if(W.reasoning={effort:Q.thinkingLevel,summary:"auto"},!Y)W.include=["reasoning.encrypted_content"]}return W}function b6($,Z,Q){return B1($,Q,async(Y,W)=>{let G=GB($,Z,Q),X=await c0(async()=>{let V=await G1($,Q),{url:z,headers:F}=YB(V,Q,$);return H1(z,{...F,...Q?.headers},G,Q)},{...Q?.maxRetries!==void 0?{maxRetries:Q.maxRetries}:{},...Q?.signal?{signal:Q.signal}:{}});Y.push({type:"start",partial:W});let J=new Map,B=!1,K=X.body;for await(let V of d0(K,Q?.signal)){if(!V.data||V.data==="[DONE]")continue;let z=JSON.parse(V.data),F=z.type;if(F==="response.output_item.added"){let{item:D,output_index:L}=z,q=D.type,U=W.content.length;if(q==="message")J.set(L,{contentIndex:U,kind:"text",partialJson:""}),W.content.push({type:"text",text:""}),Y.push({type:"text_start",contentIndex:U,partial:W});else if(q==="reasoning")J.set(L,{contentIndex:U,kind:"reasoning",partialJson:""}),W.content.push({type:"thinking",thinking:"",signature:JSON.stringify({id:D.id})}),Y.push({type:"thinking_start",contentIndex:U,partial:W});else if(q==="function_call")B=!0,J.set(L,{contentIndex:U,kind:"function_call",partialJson:""}),W.content.push({type:"toolCall",id:D.call_id??D.id,name:D.name,arguments:{}}),Y.push({type:"toolcall_start",contentIndex:U,partial:W})}else if(F==="response.output_text.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="text")L.text+=z.delta,Y.push({type:"text_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.reasoning_summary_text.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="thinking")L.thinking+=z.delta,Y.push({type:"thinking_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.function_call_arguments.delta"){let D=J.get(z.output_index),L=D&&W.content[D.contentIndex];if(D&&L?.type==="toolCall")D.partialJson+=z.delta,L.arguments=v0(D.partialJson),Y.push({type:"toolcall_delta",contentIndex:D.contentIndex,delta:z.delta,partial:W})}else if(F==="response.output_item.done"){let D=J.get(z.output_index);if(!D)continue;let L=z.item,q=W.content[D.contentIndex];if(q?.type==="text")Y.push({type:"text_end",contentIndex:D.contentIndex,content:q.text,partial:W});else if(q?.type==="thinking")q.signature=JSON.stringify({id:L.id,...L.encrypted_content?{encrypted_content:L.encrypted_content}:{}}),Y.push({type:"thinking_end",contentIndex:D.contentIndex,content:q.thinking,partial:W});else if(q?.type==="toolCall"){let U=L.arguments??D.partialJson;q.arguments=v0(U),Y.push({type:"toolcall_end",contentIndex:D.contentIndex,toolCall:q,partial:W})}}else if(F==="response.completed"||F==="response.incomplete"||F==="response.failed"){let D=z.response,L=D.usage;if(L){let U=L.input_tokens_details?.cached_tokens??0;W.usage.inputTokens=(L.input_tokens??0)-U,W.usage.cacheReadTokens=U,W.usage.outputTokens=L.output_tokens??0,i0($,W)}if(F==="response.completed")W.stopReason=B?"toolUse":"end";else if(F==="response.incomplete"){let q=D.incomplete_details?.reason;W.stopReason=q==="max_output_tokens"?"length":"end"}else{let q=D.error;W.stopReason="error",W.errorMessage=q?.message??"response failed"}}else if(F==="error")throw Error(z.message??V.data)}})}var x$={id:"openai",stream:b6},o1={id:"openai-codex",stream:b6,discoverModels:JQ};var XB=new Map([[y$.id,y$],[x$.id,x$],[o1.id,o1],[b$.id,b$],[lZ.id,lZ]]);function JB($){let Z=XB.get($);if(Z)return Z;return{id:$,stream:(Q,Y,W)=>{switch(S$(Q)){case"anthropic-messages":return y$.stream(Q,Y,W);case"google-generative-ai":case"google-vertex":return b$.stream(Q,Y,W);case"openai-responses":return x$.stream(Q,Y,W);default:return _$(Q,Y,W)}},...$==="github-copilot"?{discoverModels:y6}:{}}}var s1=new Map([...l0.keys()].map(($)=>[$,JB($)]));s1.set(o1.id,o1);function _6($){let Z=s1.get($);if(!Z)throw Error(`Unknown provider: ${$}`);return Z}function KQ($){s1.set($.id,$)}var KB="https://models.dev/api.json",BB=15000,e1={input:0,output:0,cacheRead:0,cacheWrite:0},HB=[{source:"amazon-bedrock",providers:["amazon-bedrock"]},{source:"anthropic",providers:["anthropic"]},{source:"cerebras",providers:["cerebras"]},{source:"cloudflare-ai-gateway",providers:["cloudflare-ai-gateway"]},{source:"cloudflare-workers-ai",providers:["cloudflare-workers-ai"]},{source:"deepseek",providers:["deepseek"]},{source:"fireworks-ai",providers:["fireworks"]},{source:"github-copilot",providers:["github-copilot"]},{source:"google",providers:["google"]},{source:"google-vertex",providers:["google-vertex"]},{source:"groq",providers:["groq"]},{source:"huggingface",providers:["huggingface"]},{source:"kimi-for-coding",providers:["kimi-coding"]},{source:"minimax",providers:["minimax"]},{source:"mistral",providers:["mistral"]},{source:"moonshotai",providers:["moonshotai"]},{source:"nvidia",providers:["nvidia"]},{source:"openai",providers:["openai","azure-openai-responses"]},{source:"opencode",providers:["opencode"]},{source:"opencode-go",providers:["opencode-go"]},{source:"openrouter",providers:["openrouter"]},{source:"alibaba-token-plan",providers:["qwen-token-plan"]},{source:"vercel-ai-gateway",providers:["vercel-ai-gateway"]},{source:"xai",providers:["xai"]},{source:"zai-coding-plan",providers:["zai"]}],VB=[{provider:"github-copilot",id:"gpt-5.3-codex",name:"GPT-5.3 Codex",api:"openai-responses",contextWindow:128000,maxOutput:32000,modalities:["text","image"],thinking:!0,pricing:e1},{provider:"kimi-coding",id:"kimi-for-coding",name:"Kimi For Coding",api:"anthropic-messages",contextWindow:262144,maxOutput:65536,modalities:["text"],thinking:!0,pricing:e1},{provider:"openrouter",id:"auto",name:"OpenRouter Auto",api:"openai-completions",contextWindow:2000000,maxOutput:30000,modalities:["text","image"],thinking:!0,pricing:e1},{provider:"xai",id:"grok-4.3",name:"Grok 4.3",api:"openai-completions",contextWindow:256000,maxOutput:64000,modalities:["text","image"],thinking:!0,pricing:e1},{provider:"zai",id:"glm-5.1",name:"GLM-5.1",api:"openai-completions",contextWindow:202752,maxOutput:65536,modalities:["text"],thinking:!0,pricing:e1},{provider:"qwen-token-plan",id:"qwen3.7-max",name:"Qwen3.7 Max",api:"openai-completions",contextWindow:1e6,maxOutput:65536,modalities:["text","image"],thinking:!0,pricing:e1}],k6=[...i9.models,...VB],q0=[...k6],VQ=new Set;function N0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function V1($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function x6($){return Array.isArray($)?$.filter((Z)=>typeof Z==="string"):[]}function zB($){if($.tool_call!==!0||$.status==="deprecated")return!1;let Z=N0($.limit)?$.limit:{};if((V1(Z.context)??0)<=0||(V1(Z.output)??0)<=0)return!1;if(!N0($.modalities))return!0;let Q=x6($.modalities.input),Y=x6($.modalities.output);return Q.includes("text")&&Y.includes("text")}function FB($){if(!Array.isArray($.reasoning_options))return"budget";return $.reasoning_options.some((Z)=>N0(Z)&&Z.type==="effort")?"adaptive":"budget"}function LB($){if(!Array.isArray($.reasoning_options))return;let Z=[];for(let Q of $.reasoning_options){if(!N0(Q)||Q.type!=="effort"||!Array.isArray(Q.values))continue;for(let Y of Q.values){if(typeof Y!=="string"||Y.length===0||Y==="default")continue;if(!Z.includes(Y))Z.push(Y)}}return Z.length>0?Z:void 0}function DB($,Z){if($==="cloudflare-ai-gateway"&&typeof Z.id==="string"){if(Z.id.startsWith("openai/"))return"openai-responses";if(Z.id.startsWith("anthropic/"))return"anthropic-messages";return"openai-completions"}if($==="fireworks"&&typeof Z.id==="string"&&Z.id.includes("glm-5p2"))return"openai-completions";if($==="github-copilot"){if(typeof Z.id==="string"&&/^claude-(haiku|sonnet|opus)-[45](?=[.-]|$)/.test(Z.id))return"anthropic-messages";if(typeof Z.id==="string"&&(Z.id.startsWith("gpt-5")||Z.id.startsWith("oswe")||Z.id.startsWith("mai-")))return"openai-responses";return"openai-completions"}if($==="xai"&&Z.id==="grok-4.5")return"openai-responses";if($==="opencode"||$==="opencode-go"){let Q=N0(Z.provider)?Z.provider.npm:void 0;if(Q==="@ai-sdk/openai")return"openai-responses";if(Q==="@ai-sdk/anthropic")return"anthropic-messages";if(Q==="@ai-sdk/google")return"google-generative-ai";return"openai-completions"}return S$({provider:$,id:"",contextWindow:1,maxOutput:1,modalities:["text"],pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}})}function zQ($,Z){if(typeof Z.id!=="string")return;let Q=DB($,Z),Y=Z.id,W=l0.get($)?.baseUrl;if($==="cloudflare-ai-gateway"){let G=Y.indexOf("/"),X=G===-1?"":Y.slice(0,G);if(X==="openai"||X==="anthropic")Y=Y.slice(G+1)}else if($==="fireworks"&&Q==="openai-completions")W="https://api.fireworks.ai/inference/v1";else if(($==="opencode"||$==="opencode-go")&&Q==="anthropic-messages")W=W?.replace(/\/v1$/,"");return{id:Y,api:Q,...W?{baseUrl:W}:{}}}function qB($,Z){if(!zB(Z)||typeof Z.id!=="string")return;let Q=N0(Z.limit)?Z.limit:{},Y=V1(Q.context),W=V1(Q.output);if(Y===void 0||W===void 0)return;let G=N0(Z.cost)?Z.cost:{},X=N0(Z.modalities)?x6(Z.modalities.input):["text"],J=["text"];if(X.includes("image"))J.push("image");let B=Z.reasoning===!0,K=B?LB(Z):void 0,V=zQ($,Z);if(!V)return;return{provider:$,id:V.id,...typeof Z.name==="string"?{name:Z.name}:{},api:V.api,...V.baseUrl?{baseUrl:V.baseUrl}:{},contextWindow:Y,maxOutput:W,modalities:J,...B?{thinking:!0}:{},...K?{thinkingLevels:K}:{},...B&&$==="anthropic"?{thinkingMode:FB(Z)}:{},pricing:{input:V1(G.input)??0,output:V1(G.output)??0,cacheRead:V1(G.cache_read)??0,cacheWrite:V1(G.cache_write)??0}}}async function UB($){let Z=await($.fetch??fetch)($.url??KB,{headers:{accept:"application/json"},signal:$.signal??AbortSignal.timeout(BB)});if(!Z.ok)throw Error(`Could not discover models: ${Z.status} ${Z.statusText}`.trim());let Q=await Z.json();if(!N0(Q))throw Error("Could not discover models: invalid catalog response");let Y=[],W=new Set;for(let G of HB){let X=Q[G.source];if(!N0(X)||!N0(X.models))continue;for(let J of G.providers){let B=0;for(let[K,V]of Object.entries(X.models)){if(!N0(V))continue;let z=typeof V.id==="string"?V:{...V,id:K},F=qB(J,z);if(F)Y.push(F),B++}if(B>0)W.add(J)}}if(Y.length===0)throw Error("Could not discover models: catalog contained no compatible models");return{models:Y,authoritativeProviders:W}}function BQ($){return $ instanceof Error?$.message:String($)}async function FQ($){let Z=[],Q=new Set,Y=[],W=q0;try{let B=await UB($);Z.push(...B.models);for(let V of B.authoritativeProviders)Q.add(V);let K=new Map(q0.map((V)=>[`${V.provider}/${V.id}`,V]));for(let V of B.models)K.set(`${V.provider}/${V.id}`,V);W=[...K.values()]}catch(B){Y.push(BQ(B))}let G=[],X=$.getCredentials;for(let B of $.providers??s1.values()){if(!B.discoverModels)continue;G.push(B.discoverModels({...$.fetch?{fetch:$.fetch}:{},...$.signal?{signal:$.signal}:{},...X?{getCredentials:()=>X(B.id)}:{},...$.clientVersion?{clientVersion:$.clientVersion}:{},currentModels:W}).then((K)=>{if(K===void 0)return;if(K.length===0)throw Error(`Could not discover ${B.id} models: catalog returned no models`);return{models:K,authoritativeProviders:new Set([B.id])}}))}let J=await Promise.allSettled(G);for(let B of J){if(B.status==="rejected"){Y.push(BQ(B.reason));continue}if(!B.value)continue;for(let K of B.value.authoritativeProviders){for(let V=Z.length-1;V>=0;V--)if(Z[V]?.provider===K)Z.splice(V,1);Q.add(K)}Z.push(...B.value.models)}if(Q.size===0)throw Error(Y[0]??"Could not discover models: no discovery source was available");for(let B of Y)$.onWarning?.(B);return{models:Z,authoritativeProviders:Q}}async function LQ($={}){return(await FQ($)).models}async function DQ($={}){let Z=await FQ($);for(let Y of Z.authoritativeProviders)VQ.add(Y);let Q=q0.filter((Y)=>!Z.authoritativeProviders.has(Y.provider));for(let Y of k6){if(Z.authoritativeProviders.has(Y.provider))continue;if(!Q.some((W)=>W.provider===Y.provider&&W.id===Y.id))Q.push(Y)}for(let Y of Z.models){let W=Q.findIndex((G)=>G.provider===Y.provider&&G.id===Y.id);if(W===-1)Q.push(Y);else Q[W]=Y}return q0=Q,f6()}function f6(){return[...q0]}function qQ($){for(let Z of $){let Q=q0.findIndex((Y)=>Y.provider===Z.provider&&Y.id===Z.id);if(Q===-1)q0.push(Z);else q0[Q]=Z}}function cZ($){let Z=$.indexOf("/");if(Z!==-1){let Q=$.slice(0,Z),Y=$.slice(Z+1),W=q0.find((J)=>J.provider===Q&&J.id===Y);if(W)return W;if(VQ.has(Q))return;if(!l0.get(Q)||!Y)return;let X=zQ(Q,{id:Y});if(!X)return;return{provider:Q,id:X.id,name:X.id,api:X.api,...X.baseUrl?{baseUrl:X.baseUrl}:{},contextWindow:128000,maxOutput:32000,modalities:["text","image"],thinking:!0,pricing:{input:0,output:0,cacheRead:0,cacheWrite:0}}}return q0.find((Q)=>Q.id===$)}function UQ($){return`${$.provider}/${$.id}`}function v6($,Z=process.env){if($==="openai-codex")return!1;if(f0($)?.auth==="none")return!0;let Q=a1($);return Q.length===0||Q.some((Y)=>Boolean(Z[Y]))}var h6={"openai-codex":"gpt-5.6-sol",openai:"gpt-5.6-sol",anthropic:"claude-opus-5",google:"gemini-2.5-pro","github-copilot":"gpt-5.3-codex","kimi-coding":"kimi-for-coding",xai:"grok-4.3"};function AQ($){return h6[$]}function HQ($){for(let Z of $){let Q=q0.filter((G)=>G.provider===Z);if(Q.length===0)continue;let Y=h6[Z];return(Y?Q.find((G)=>G.id===Y):void 0)??Q[0]}return}function $$($=process.env,Z){let Q=Z?[...Z]:[...new Set(q0.map((W)=>W.provider))].filter((W)=>v6(W,$)),Y=HQ(Q)??HQ(Object.keys(h6))??q0[0]??k6[0];if(!Y)throw Error("No models are available");return UQ(Y)}var AB=["off","low","medium","high"];function Z$($){if(!$.thinking)return["off"];if($.thinkingLevels&&$.thinkingLevels.length>0)return[...new Set($.thinkingLevels)];return[...AB]}function g6($){let Z=Z$($);if($.defaultThinkingLevel&&Z.includes($.defaultThinkingLevel))return $.defaultThinkingLevel;return Z[0]??"off"}function n0($,Z){let Q=Z$($);if(Z&&Q.includes(Z))return Z;return g6($)}function k$($){if($.stopReason!=="error")return!1;return gZ($.errorMessage??"")}var MQ=3.5;function iZ($){return Math.ceil($.length/MQ)}function p($){let Z=0;for(let Q of $)if(Q.role==="toolResult"||Q.role==="user"||Q.role==="custom")for(let Y of Q.content)Z+=Y.type==="text"?Y.text.length:1500;else for(let Y of Q.content)if(Y.type==="text")Z+=Y.text.length;else if(Y.type==="thinking")Z+=Y.thinking.length;else Z+=JSON.stringify(Y.arguments).length+Y.name.length;return Math.ceil(Z/MQ)}function v$($,Z,Q,Y){let W=p(Z),G=Q?Q.inputTokens+Q.cacheReadTokens+Q.cacheWriteTokens:0,X=Q&&Y!==void 0?Math.max(0,W-Y):0,J=Math.max(G+X,W),B=$.contextWindow;return{tokens:J,limit:B,percent:B>0?J/B:0}}var S1=0.85;function p6($,Z=S1){return $.percent>=Z}class g0 extends Error{usage;constructor($,Z){super($);this.usage=Z;this.name="CompactionError"}}var Q$=20000;function NB($,Z){for(let Q=Math.min(Z,$.length-1);Q>=0;Q--)if($[Q]?.role==="user")return Q;return null}function OQ($,Z=Q$){if($.length<=4&&p($)<=Z)return{keepFromIndex:$.length,keptTokens:0,isSplitTurn:!1,turnStartIndex:null};let Q=0,Y=$.length;while(Y>0&&Q<Z){let X=Y-1,J=p([$[X]]);if(Q>0&&Q+J>Z)break;Y=X,Q+=J}while(Y>0&&$[Y]?.role==="toolResult")Y--,Q+=p([$[Y]]);if(Y===0){if($.length===1)Y=$.length;else if(Y=$.findIndex((X,J)=>J>0&&X.role!=="toolResult"),Y<0)Y=$.length;Q=p($.slice(Y))}let W=Y<$.length?NB($,Y):null,G=W!==null&&W<Y;return{keepFromIndex:Y,keptTokens:Q,isSplitTurn:G,turnStartIndex:W}}var u6=`Summarize the conversation so far so that work can continue without the original transcript.
23
23
 
24
24
  Preserve, in this order:
25
25
  1. What the user asked for \u2014 the goal, in their terms, including any constraints they stated.
@@ -28,73 +28,73 @@ Preserve, in this order:
28
28
  4. Concrete facts discovered that would be expensive to rediscover (file locations, API shapes, error messages, command invocations that work).
29
29
  5. Anything the user corrected you on.
30
30
 
31
- Be specific and factual. Do not include pleasantries or narration. This summary replaces the transcript, so anything you omit is lost.`,BB="The retained transcript begins part-way through a large user turn. Preserve the original request and the early progress needed to understand the retained suffix. Do not imply that the retained suffix starts a new task.",HB=2000,VB=4000,zB=3;function DQ($,Z){if($.length<=Z)return $;return`${$.slice(0,Z)}
32
- [... ${$.length-Z} characters omitted]`}function x$($){return $.content.filter((Z)=>Z.type==="text").map((Z)=>Z.text).join(`
33
- `)}function AQ($){let Z=[];for(let Q of $){if(Q.role==="user"){let X=x$(Q);if(X)Z.push(`[User]
34
- ${X}`);if(Q.content.some((J)=>J.type==="image"))Z.push("[User image omitted from compaction input]");continue}if(Q.role==="custom"){let X=x$(Q);if(X)Z.push(`[Injected context: ${Q.customType}]
35
- ${X}`);continue}if(Q.role==="toolResult"){let X=DQ(x$(Q),HB);Z.push(`[Tool result: ${Q.toolName}${Q.isError?" (error)":""}]
31
+ Be specific and factual. Do not include pleasantries or narration. This summary replaces the transcript, so anything you omit is lost.`,MB="The retained transcript begins part-way through a large user turn. Preserve the original request and the early progress needed to understand the retained suffix. Do not imply that the retained suffix starts a new task.",OB=2000,jB=4000,PB=3;function NQ($,Z){if($.length<=Z)return $;return`${$.slice(0,Z)}
32
+ [... ${$.length-Z} characters omitted]`}function f$($){return $.content.filter((Z)=>Z.type==="text").map((Z)=>Z.text).join(`
33
+ `)}function jQ($){let Z=[];for(let Q of $){if(Q.role==="user"){let X=f$(Q);if(X)Z.push(`[User]
34
+ ${X}`);if(Q.content.some((J)=>J.type==="image"))Z.push("[User image omitted from compaction input]");continue}if(Q.role==="custom"){let X=f$(Q);if(X)Z.push(`[Injected context: ${Q.customType}]
35
+ ${X}`);continue}if(Q.role==="toolResult"){let X=NQ(f$(Q),OB);Z.push(`[Tool result: ${Q.toolName}${Q.isError?" (error)":""}]
36
36
  ${X||"(non-text output omitted)"}`);continue}let Y=Q.content.filter((X)=>X.type==="thinking").map((X)=>X.thinking).join(`
37
- `),W=x$(Q),G=Q.content.filter((X)=>X.type==="toolCall").map((X)=>`${X.name}(${DQ(JSON.stringify(X.arguments),VB)})`).join(`
37
+ `),W=f$(Q),G=Q.content.filter((X)=>X.type==="toolCall").map((X)=>`${X.name}(${NQ(JSON.stringify(X.arguments),jB)})`).join(`
38
38
  `);if(Y)Z.push(`[Assistant thinking]
39
39
  ${Y}`);if(W)Z.push(`[Assistant]
40
40
  ${W}`);if(G)Z.push(`[Assistant tool calls]
41
41
  ${G}`)}return Z.join(`
42
42
 
43
- `)}async function cZ($,Z){let Q=Z.keepRecentTokens??Math.min(Z$,Math.max(2,Math.floor(Z.model.contextWindow*0.2))),Y=qQ($,Q),{keepFromIndex:W}=Y,G=$.slice(0,W),X=$.slice(W);if(G.length===0)return{summary:"",keptMessages:$,tokensFreed:0,usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0}};let J=Z.carryoverExtractor?.(G);if(J!==void 0)lZ(J);let B=G.findIndex((U)=>U.role==="custom"&&U.customType==="compaction-summary"),K=B===-1?void 0:x$(G[B]),V=G.filter((U,q)=>q!==B),z,F=0;for(;;){let U=[g6,K?"Update the previous summary with the newly summarized conversation.":"",Y.isSplitTurn?BB:"",Z.customInstructions?`Additional focus from the user: ${Z.customInstructions}`:""].filter(Boolean).join(`
43
+ `)}async function nZ($,Z){let Q=Z.keepRecentTokens??Math.min(Q$,Math.max(2,Math.floor(Z.model.contextWindow*0.2))),Y=OQ($,Q),{keepFromIndex:W}=Y,G=$.slice(0,W),X=$.slice(W);if(G.length===0)return{summary:"",keptMessages:$,tokensFreed:0,usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,costUsd:0}};let J=Z.carryoverExtractor?.(G);if(J!==void 0)dZ(J);let B=G.findIndex((q)=>q.role==="custom"&&q.customType==="compaction-summary"),K=B===-1?void 0:f$(G[B]),V=G.filter((q,U)=>U!==B),z,F=0;for(;;){let q=[u6,K?"Update the previous summary with the newly summarized conversation.":"",Y.isSplitTurn?MB:"",Z.customInstructions?`Additional focus from the user: ${Z.customInstructions}`:""].filter(Boolean).join(`
44
44
 
45
- `),q=[`<conversation>
46
- ${AQ(V)}
45
+ `),U=[`<conversation>
46
+ ${jQ(V)}
47
47
  </conversation>`,...K?[`<previous-summary>
48
48
  ${K}
49
- </previous-summary>`]:[],U,"Produce the summary now."].join(`
49
+ </previous-summary>`]:[],q,"Produce the summary now."].join(`
50
50
 
51
51
  `),A={systemPrompt:[{text:`You are a context summarization assistant. Do not continue the conversation. Output only the requested handoff summary.
52
52
 
53
- ${g6}`}],messages:[{role:"user",content:[{type:"text",text:q}],timestamp:Date.now()}]};if(z=await Z.provider.stream(Z.model,A,{...Z.streamOpts,sessionId:`${Z.streamOpts?.sessionId??"mu"}:compact:${Date.now().toString(36)}:${F}`,maxTokens:Math.min(Z.model.maxOutput,8192),...Z.signal?{signal:Z.signal}:{}}).result(),!_$(z)||V.length<=1||F+1>=zB)break;V=V.slice(Math.max(1,Math.floor(V.length/2))),F++}if(z.stopReason!=="end")throw new v0(`Compaction failed: ${z.errorMessage??`incomplete response (${z.stopReason})`}`,z.usage);let D=z.content.filter((U)=>U.type==="text").map((U)=>U.text).join("").trim();if(D.length===0)throw new v0("Compaction failed: the provider returned no usable summary",z.usage);let L={summary:D,...J!==void 0?{carryover:J}:{},keptMessages:X,tokensFreed:0,usage:z.usage};return L.tokensFreed=Math.max(0,l($)-l(f$(L))),L}function f$($){if($.summary.length===0)return $.keptMessages;return[v$($.summary,$.carryover),...$.keptMessages]}function v$($,Z,Q=Date.now()){let Y=Z===void 0?"":`
53
+ ${u6}`}],messages:[{role:"user",content:[{type:"text",text:U}],timestamp:Date.now()}]};if(z=await Z.provider.stream(Z.model,A,{...Z.streamOpts,sessionId:`${Z.streamOpts?.sessionId??"mu"}:compact:${Date.now().toString(36)}:${F}`,maxTokens:Math.min(Z.model.maxOutput,8192),...Z.signal?{signal:Z.signal}:{}}).result(),!k$(z)||V.length<=1||F+1>=PB)break;V=V.slice(Math.max(1,Math.floor(V.length/2))),F++}if(z.stopReason!=="end")throw new g0(`Compaction failed: ${z.errorMessage??`incomplete response (${z.stopReason})`}`,z.usage);let D=z.content.filter((q)=>q.type==="text").map((q)=>q.text).join("").trim();if(D.length===0)throw new g0("Compaction failed: the provider returned no usable summary",z.usage);let L={summary:D,...J!==void 0?{carryover:J}:{},keptMessages:X,tokensFreed:0,usage:z.usage};return L.tokensFreed=Math.max(0,p($)-p(h$(L))),L}function h$($){if($.summary.length===0)return $.keptMessages;return[g$($.summary,$.carryover),...$.keptMessages]}function g$($,Z,Q=Date.now()){let Y=Z===void 0?"":`
54
54
 
55
55
  Carried forward:
56
- ${NQ(Z)}`;return{role:"custom",customType:"compaction-summary",content:[{type:"text",text:`Summary of the earlier conversation:
56
+ ${PQ(Z)}`;return{role:"custom",customType:"compaction-summary",content:[{type:"text",text:`Summary of the earlier conversation:
57
57
 
58
- ${$}${Y}`}],display:!1,timestamp:Q}}function NQ($){if(typeof $==="string")return $;return lZ($),JSON.stringify(h6($),null,2)}function lZ($,Z=new Set){if($===null||typeof $==="string"||typeof $==="boolean"||typeof $==="number"&&Number.isFinite($))return;if(typeof $!=="object")throw new v0("Compaction failed: carryover must be JSON-serializable");let Q=Object.getPrototypeOf($);if(!Array.isArray($)&&Q!==Object.prototype&&Q!==null)throw new v0("Compaction failed: carryover must contain only plain objects");if(Z.has($))throw new v0("Compaction failed: carryover must not contain cycles");if(Z.add($),Array.isArray($))for(let Y of $)lZ(Y,Z);else for(let Y of Object.values($))lZ(Y,Z);Z.delete($)}function h6($){if(Array.isArray($))return $.map(h6);if($&&typeof $==="object")return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Z<Q?-1:Z>Q?1:0).map(([Z,Q])=>[Z,h6(Q)]));return $}class m6{tools=new Map;commands=new I1;providers=new Map;models=new Map;renderers=new Map;logs=[];extensions=[];eventHandlers=new Map;toolCallHooks=[];toolResultHooks=[];contextHooks=[];inputHooks=[];async register($){let Z={on:(Q,Y)=>{let W=this.eventHandlers.get(Q)??[];W.push(Y),this.eventHandlers.set(Q,W)},onToolCall:(Q)=>void this.toolCallHooks.push(Q),onToolResult:(Q)=>void this.toolResultHooks.push(Q),onContext:(Q)=>void this.contextHooks.push(Q),onInput:(Q)=>void this.inputHooks.push(Q),registerTool:(Q)=>void this.tools.set(Q.name,Q),registerCommand:(Q)=>this.commands.register(Q),registerProvider:(Q)=>void this.providers.set(Q.id,Q),registerModels:(Q)=>{for(let Y of Q)this.models.set(`${Y.provider}/${Y.id}`,Y)},registerRenderer:(Q,Y)=>void this.renderers.set(Q,Y),log:(Q)=>void this.logs.push(`[${$.name}] ${Q}`)};await $.activate(Z),this.extensions.push($)}async shutdown(){for(let $ of this.extensions)await $.deactivate?.();this.extensions=[]}emit($){for(let Z of this.eventHandlers.get($.type)??[])try{Promise.resolve(Z($)).catch((Q)=>{this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)})}catch(Q){this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)}}emitLifecycle($){for(let Z of this.eventHandlers.get($.type)??[])try{Promise.resolve(Z($)).catch((Q)=>{this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)})}catch(Q){this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)}}findModel($){if($.indexOf("/")!==-1)return this.models.get($);return[...this.models.values()].find((Q)=>Q.id===$)}async runToolCallHooks($){let Z=$.args;for(let Q of this.toolCallHooks){let Y=await Q({...$,args:Z});if(Y?.block)return Y;if(Y?.args)Z=Y.args}return Z===$.args?void 0:{args:Z}}async runToolResultHooks($){let Z=$.result.content,Q=$.isError,Y=!1;for(let W of this.toolResultHooks){let G=await W({...$,result:{...$.result,content:Z},isError:Q});if(!G)continue;if(G.content)Z=G.content,Y=!0;if(G.isError!==void 0)Q=G.isError,Y=!0}return Y?{content:Z,isError:Q}:void 0}async runContextHooks($){let Z=$;for(let Q of this.contextHooks)Z=await Q(Z);return Z}async runInputHooks($){let Z=$;for(let Q of this.inputHooks){let Y=await Q(Z);if(Y?.consume)return{consume:!0,...Y.text!==void 0?{text:Y.text}:{}};if(Y?.text!==void 0)Z=Y.text}return Z===$?void 0:{text:Z}}get hasContextHooks(){return this.contextHooks.length>0}}function MQ($){let Z=$.customType,Q=[];for(let Y of $.content)Q.push(Y.type==="text"?{type:"text",text:`<${Z}>
58
+ ${$}${Y}`}],display:!1,timestamp:Q}}function PQ($){if(typeof $==="string")return $;return dZ($),JSON.stringify(m6($),null,2)}function dZ($,Z=new Set){if($===null||typeof $==="string"||typeof $==="boolean"||typeof $==="number"&&Number.isFinite($))return;if(typeof $!=="object")throw new g0("Compaction failed: carryover must be JSON-serializable");let Q=Object.getPrototypeOf($);if(!Array.isArray($)&&Q!==Object.prototype&&Q!==null)throw new g0("Compaction failed: carryover must contain only plain objects");if(Z.has($))throw new g0("Compaction failed: carryover must not contain cycles");if(Z.add($),Array.isArray($))for(let Y of $)dZ(Y,Z);else for(let Y of Object.values($))dZ(Y,Z);Z.delete($)}function m6($){if(Array.isArray($))return $.map(m6);if($&&typeof $==="object")return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Z<Q?-1:Z>Q?1:0).map(([Z,Q])=>[Z,m6(Q)]));return $}class l6{tools=new Map;commands=new I1;providers=new Map;models=new Map;renderers=new Map;logs=[];extensions=[];eventHandlers=new Map;toolCallHooks=[];toolResultHooks=[];contextHooks=[];inputHooks=[];async register($){let Z={on:(Q,Y)=>{let W=this.eventHandlers.get(Q)??[];W.push(Y),this.eventHandlers.set(Q,W)},onToolCall:(Q)=>void this.toolCallHooks.push(Q),onToolResult:(Q)=>void this.toolResultHooks.push(Q),onContext:(Q)=>void this.contextHooks.push(Q),onInput:(Q)=>void this.inputHooks.push(Q),registerTool:(Q)=>void this.tools.set(Q.name,Q),registerCommand:(Q)=>this.commands.register(Q),registerProvider:(Q)=>void this.providers.set(Q.id,Q),registerModels:(Q)=>{for(let Y of Q)this.models.set(`${Y.provider}/${Y.id}`,Y)},registerRenderer:(Q,Y)=>void this.renderers.set(Q,Y),log:(Q)=>void this.logs.push(`[${$.name}] ${Q}`)};await $.activate(Z),this.extensions.push($)}async shutdown(){for(let $ of this.extensions)await $.deactivate?.();this.extensions=[]}emit($){for(let Z of this.eventHandlers.get($.type)??[])try{Promise.resolve(Z($)).catch((Q)=>{this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)})}catch(Q){this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)}}emitLifecycle($){for(let Z of this.eventHandlers.get($.type)??[])try{Promise.resolve(Z($)).catch((Q)=>{this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)})}catch(Q){this.logs.push(`[extension observer] ${$.type}: ${Q instanceof Error?Q.message:String(Q)}`)}}findModel($){if($.indexOf("/")!==-1)return this.models.get($);return[...this.models.values()].find((Q)=>Q.id===$)}async runToolCallHooks($){let Z=$.args;for(let Q of this.toolCallHooks){let Y=await Q({...$,args:Z});if(Y?.block)return Y;if(Y?.args)Z=Y.args}return Z===$.args?void 0:{args:Z}}async runToolResultHooks($){let Z=$.result.content,Q=$.isError,Y=!1;for(let W of this.toolResultHooks){let G=await W({...$,result:{...$.result,content:Z},isError:Q});if(!G)continue;if(G.content)Z=G.content,Y=!0;if(G.isError!==void 0)Q=G.isError,Y=!0}return Y?{content:Z,isError:Q}:void 0}async runContextHooks($){let Z=$;for(let Q of this.contextHooks)Z=await Q(Z);return Z}async runInputHooks($){let Z=$;for(let Q of this.inputHooks){let Y=await Q(Z);if(Y?.consume)return{consume:!0,...Y.text!==void 0?{text:Y.text}:{}};if(Y?.text!==void 0)Z=Y.text}return Z===$?void 0:{text:Z}}get hasContextHooks(){return this.contextHooks.length>0}}function wQ($){let Z=$.customType,Q=[];for(let Y of $.content)Q.push(Y.type==="text"?{type:"text",text:`<${Z}>
59
59
  ${Y.text}
60
- </${Z}>`}:Y);return{role:"user",content:Q,timestamp:$.timestamp}}function l6($){return $.map((Z)=>Z.role==="custom"?MQ(Z):Z)}function Q$($){return{role:"user",content:[{type:"text",text:$}],timestamp:Date.now()}}function g$($,Z,Q=!1){return{role:"custom",customType:$,content:[{type:"text",text:Z}],display:Q,timestamp:Date.now()}}function y($){return{content:[{type:"text",text:$}],isError:!0}}function OQ($){return{content:[{type:"text",text:$}]}}function dZ($,Z){if($.executionMode==="sequential")return!1;if(!$.isConcurrencySafe)return!1;try{return $.isConcurrencySafe(Z)===!0}catch{return!1}}var FB=10,jQ=3;function LB($){return $.content.filter((Z)=>Z.type==="toolCall")}function DB($){return`${$.name}:${JSON.stringify($.arguments)}`}async function p6($,Z,Q,Y,W){let G=W??new AbortController().signal,X=[...$],J={...Z,messages:[...Z.messages,...$]},B=Q,K=0,V=[],z=async(D)=>{return await Y({type:"agent_end",messages:X,reason:D}),{messages:X,reason:D}};await Y({type:"agent_start"});for(let D of $)await Y({type:"message_start",message:D}),await Y({type:"message_end",message:D});let F=await B.getSteeringMessages?.()??[];for(;;){let D=!0;while(D||F.length>0){if(G.aborted)return z("aborted");if(B.maxTurns!==void 0&&K>=B.maxTurns)return z("maxTurns");K++,await Y({type:"turn_start"});for(let M of F)await Y({type:"message_start",message:M}),await Y({type:"message_end",message:M}),J.messages.push(M),X.push(M);if(F=[],B.prepareContext){let M=await B.prepareContext(J.messages),S=Array.isArray(M)?{messages:M}:M;if(J={...J,messages:S.messages},S.stop)return z("budget")}let U=await AB(J,B,Y,G),q=U.message;if(J.messages.push(q),X.push(q),q.stopReason==="error"||q.stopReason==="aborted"){if(await Y({type:"turn_end",message:q,toolResults:[]}),q.stopReason==="error"&&await B.recoverFromError?.(q)===!0){D=!0;continue}return z(q.stopReason==="aborted"?"aborted":"error")}let A=LB(q),N=[];if(D=!1,A.length>0){let M=q.stopReason==="length"?await NB(A,Y):await PB(A,q,J,B,Y,G);N.push(...M.results),F.push(...M.steering),D=!M.terminate;for(let g of M.results)J.messages.push(g),X.push(g);let S=UB(A,V);if(S)J.messages.push(S),X.push(S),await Y({type:"message_start",message:S}),await Y({type:"message_end",message:S})}await Y({type:"turn_end",message:q,toolResults:N});let j={message:q,toolResults:N,context:J,requestMessages:U.messages,newMessages:X},P=await B.prepareNextTurn?.(j);if(P){if(P.context)J=P.context;B={...B,...P.model?{model:P.model}:{},...P.thinkingLevel!==void 0?{thinkingLevel:P.thinkingLevel}:{}}}if(await B.shouldStopAfterTurn?.(j))return z("done");F.push(...await B.getSteeringMessages?.()??[])}let L=await B.getFollowUpMessages?.()??[];if(L.length>0){F=L;continue}break}return z("done")}function UB($,Z){for(let Y of $){let W=DB(Y);if(Z[Z.length-1]===W)Z.push(W);else Z.length=0,Z.push(W)}if(Z.length<jQ)return;let Q=$[$.length-1]?.name??"the tool";return Z.length=0,{role:"custom",customType:"system-reminder",content:[{type:"text",text:`You have called ${Q} with identical arguments ${jQ} times in a row and the result is not changing. Stop repeating it \u2014 try a different approach, or explain what is blocking you.`}],display:!0,timestamp:Date.now()}}function qB($){let Z=$.contentIndex??0;switch($.type){case"text_start":return{kind:"text_start",contentIndex:Z};case"text_delta":return{kind:"text_delta",contentIndex:Z,text:$.delta??""};case"text_end":return{kind:"text_end",contentIndex:Z};case"thinking_start":return{kind:"thinking_start",contentIndex:Z};case"thinking_delta":return{kind:"thinking_delta",contentIndex:Z,text:$.delta??""};case"thinking_end":return{kind:"thinking_end",contentIndex:Z};case"toolcall_start":return{kind:"toolcall_start",contentIndex:Z};case"toolcall_delta":return{kind:"toolcall_delta",contentIndex:Z,argsFragment:$.delta??""};case"toolcall_end":return{kind:"toolcall_end",contentIndex:Z,toolCallId:$.toolCall?.id??""};default:return}}async function AB($,Z,Q,Y){let W=Z.transformContext?await Z.transformContext($.messages):$.messages,G={...$.systemPrompt?{systemPrompt:$.systemPrompt}:{},messages:l6(W),...$.tools?{tools:$.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema}))}:{}},X=Z.provider.stream(Z.model,G,{...Z.streamOpts,...Z.thinkingLevel!==void 0?{thinkingLevel:Z.thinkingLevel}:{},signal:Y}),J=!1;for await(let K of X){if(K.type==="start"){J=!0,await Q({type:"message_start",message:{...K.partial}});continue}if(K.type==="done"||K.type==="error")break;let V=qB(K);if(V)await Q({type:"message_update",message:{...K.partial},delta:V})}let B=await X.result();if(!J)await Q({type:"message_start",message:{...B}});return await Q({type:"message_end",message:B}),{message:B,messages:W}}function c6($,Z,Q){return{role:"toolResult",toolCallId:$.id,toolName:$.name,content:Z.content??[],...Z.details!==void 0?{details:Z.details}:{},isError:Q,timestamp:Date.now()}}async function iZ($,Z){await Z({type:"tool_execution_end",toolCallId:$.toolCallId,result:$}),await Z({type:"message_start",message:$}),await Z({type:"message_end",message:$})}async function NB($,Z){let Q=[];for(let Y of $){await Z({type:"tool_execution_start",toolCallId:Y.id,toolName:Y.name,args:Y.arguments});let W=c6(Y,y(`Tool call "${Y.name}" was not executed: the response hit the output token limit, so its arguments may be truncated. Re-issue the tool call with complete arguments.`),!0);await iZ(W,Z),Q.push(W)}return{results:Q,terminate:!1,steering:[]}}async function MB($,Z){let Q=[];for(let Y of $){await Z({type:"tool_execution_start",toolCallId:Y.id,toolName:Y.name,args:Y.arguments});let W=c6(Y,y(`Tool call "${Y.name}" was not executed because a steering message interrupted the remaining tool calls. Re-evaluate the plan before re-issuing it.`),!0);await iZ(W,Z),Q.push(W)}return Q}async function OB($,Z,Q,Y,W){let G=Q.tools?.find((X)=>X.name===$.name);if(!G)return{kind:"immediate",result:y(`Tool ${$.name} not found`)};try{let X=$.arguments,J=await Y.beforeToolCall?.({assistantMessage:Z,toolCall:$,args:X,context:Q},W);if(W.aborted)return{kind:"immediate",result:y("Operation aborted")};if(J?.block)return{kind:"immediate",result:y(J.reason||"Tool execution was blocked")};if(J?.rewrittenArgs)X=J.rewrittenArgs;return{kind:"prepared",prepared:{call:$,tool:G,args:X}}}catch(X){return{kind:"immediate",result:y(X instanceof Error?X.message:String(X))}}}async function jB($,Z,Q,Y,W,G){let X,J,B=Promise.resolve();try{X=await $.tool.execute($.call.id,$.args,G,(K)=>{B=B.then(()=>W({type:"tool_execution_update",toolCallId:$.call.id,partial:K}))}),await B,J=X.isError===!0}catch(K){X=y(K instanceof Error?K.message:String(K)),J=!0}if(Y.afterToolCall)try{let K=await Y.afterToolCall({assistantMessage:Z,toolCall:$.call,args:$.args,context:Q,result:X,isError:J},G);if(K)X=K,J=K.isError??J}catch(K){X=y(K instanceof Error?K.message:String(K)),J=!0}return{result:X,isError:J}}async function PB($,Z,Q,Y,W,G){let X=[],J=[],B=[],K=async(z)=>{await W({type:"tool_execution_start",toolCallId:z.id,toolName:z.name,args:z.arguments});let F=await OB(z,Z,Q,Y,G),D=F.kind==="immediate"?{result:F.result,isError:!0}:await jB(F.prepared,Z,Q,Y,W,G);return J.push(D.result.terminate===!0),c6(z,D.result,D.isError)},V=0;while(V<$.length){let z=$[V],F=Q.tools?.find((q)=>q.name===z.name);if(!(F?dZ(F,z.arguments):!1)){let q=await K(z);if(await iZ(q,W),X.push(q),V++,G.aborted)break;if(B=await Y.getSteeringMessages?.()??[],B.length>0)break;continue}let L=[];while(V<$.length&&L.length<FB){let q=$[V],A=Q.tools?.find((N)=>N.name===q.name);if(!A||!dZ(A,q.arguments))break;L.push(q),V++}let U=await Promise.all(L.map(K));for(let q of U)await iZ(q,W),X.push(q);if(G.aborted)break;if(B=await Y.getSteeringMessages?.()??[],B.length>0)break}if(B.length>0&&V<$.length)X.push(...await MB($.slice(V),W));return{results:X,terminate:J.length>0&&J.every(Boolean),steering:B}}var d6="[output cleared to save context \u2014 re-run the tool if you need it]",wQ="[image cleared to save context]";function PQ($){return $.type==="image"&&$.evictable!==!1}function nZ($,Z={}){let Q=Z.keepRecent??6,Y=l($),W=Z.targetTokens,G=[...$],X=Math.max(0,G.length-Q),J=0,B=()=>W!==void 0&&l(G)<=W;for(let K=0;K<X;K++){let V=G[K];if(!V||V.role!=="toolResult"||V.evicted)continue;if(B())break;if(!V.content.some(PQ))continue;G[K]={...V,content:V.content.map((F)=>PQ(F)?{type:"text",text:wQ}:F)},J++}for(let K=0;K<X;K++){let V=G[K];if(!V||V.role!=="toolResult"||V.evicted)continue;if(B())break;if(V.isError)continue;if(V.content.filter((F)=>F.type==="text").map((F)=>F.text).join("").length<d6.length)continue;G[K]={...V,content:[{type:"text",text:d6}],evicted:!0},J++}return{messages:G,evicted:J,tokensFreed:Math.max(0,Y-l(G))}}var i6=0.6;function TQ($,Z){if($==="*")return!0;let Q=$.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${Q}$`,"s").test(Z)}function n6($,Z,Q){let Y=typeof Z==="string"?[Z]:Z,W="ask";for(let G of $)if(Y.some((X)=>TQ(G.permission,X))&&TQ(G.pattern,Q))W=G.action;return W}var wB=new TextEncoder,S1=new TextDecoder;function IQ($,Z){if($.length===0)return Z.slice();if(Z.length===0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($),Q.set(Z,$.length),Q}function TB($,Z){let Q=Math.min($.length,Math.max(0,Z));while(Q>0&&($[Q]??0)>=128&&($[Q]??0)<192)Q-=1;if(Q===$.length)return Q;let Y=$[Q]??0,W=Y<128?1:Y<224?2:Y<240?3:4;return Q+W<=Z?Q+W:Q}function IB($,Z){let Q=Math.max(0,Z);while(Q<$.length&&($[Q]??0)>=128&&($[Q]??0)<192)Q+=1;return Q}class C1{headLimit;tailLimit;head=new Uint8Array;tail=new Uint8Array;headComplete=!1;total=0;constructor($=8000,Z=8000){this.headLimit=$;this.tailLimit=Z}append($){let Z=wB.encode($);if(this.total+=Z.length,!this.headComplete&&this.head.length<this.headLimit){let Q=this.headLimit-this.head.length,Y=TB(Z,Q);if(this.head=IQ(this.head,Z.subarray(0,Y)),Z=Z.subarray(Y),Z.length===0)return;this.headComplete=!0}if(this.tail=IQ(this.tail,Z),this.tail.length>this.tailLimit){let Q=this.tail.length-this.tailLimit;this.tail=this.tail.slice(IB(this.tail,Q))}}get bytes(){return this.total}get truncated(){return this.droppedBytes>0}read(){let $=S1.decode(this.head),Z=S1.decode(this.tail);if(this.droppedBytes===0)return $+Z;return`${$}
60
+ </${Z}>`}:Y);return{role:"user",content:Q,timestamp:$.timestamp}}function c6($){return $.map((Z)=>Z.role==="custom"?wQ(Z):Z)}function Y$($){return{role:"user",content:[{type:"text",text:$}],timestamp:Date.now()}}function u$($,Z,Q=!1){return{role:"custom",customType:$,content:[{type:"text",text:Z}],display:Q,timestamp:Date.now()}}function y($){return{content:[{type:"text",text:$}],isError:!0}}function TQ($){return{content:[{type:"text",text:$}]}}function aZ($,Z){if($.executionMode==="sequential")return!1;if(!$.isConcurrencySafe)return!1;try{return $.isConcurrencySafe(Z)===!0}catch{return!1}}var wB=10,EQ=3;function TB($){return $.content.filter((Z)=>Z.type==="toolCall")}function EB($){return`${$.name}:${JSON.stringify($.arguments)}`}async function d6($,Z,Q,Y,W){let G=W??new AbortController().signal,X=[...$],J={...Z,messages:[...Z.messages,...$]},B=Q,K=0,V=[],z=async(D)=>{return await Y({type:"agent_end",messages:X,reason:D}),{messages:X,reason:D}};await Y({type:"agent_start"});for(let D of $)await Y({type:"message_start",message:D}),await Y({type:"message_end",message:D});let F=await B.getSteeringMessages?.()??[];for(;;){let D=!0;while(D||F.length>0){if(G.aborted)return z("aborted");if(B.maxTurns!==void 0&&K>=B.maxTurns)return z("maxTurns");K++,await Y({type:"turn_start"});for(let M of F)await Y({type:"message_start",message:M}),await Y({type:"message_end",message:M}),J.messages.push(M),X.push(M);if(F=[],B.prepareContext){let M=await B.prepareContext(J.messages),I=Array.isArray(M)?{messages:M}:M;if(J={...J,messages:I.messages},I.stop)return z("budget")}let q=await SB(J,B,Y,G),U=q.message;if(J.messages.push(U),X.push(U),U.stopReason==="error"||U.stopReason==="aborted"){if(await Y({type:"turn_end",message:U,toolResults:[]}),U.stopReason==="error"&&await B.recoverFromError?.(U)===!0){D=!0;continue}return z(U.stopReason==="aborted"?"aborted":"error")}let A=TB(U),N=[];if(D=!1,A.length>0){let M=U.stopReason==="length"?await CB(A,Y):await xB(A,U,J,B,Y,G);N.push(...M.results),F.push(...M.steering),D=!M.terminate;for(let v of M.results)J.messages.push(v),X.push(v);let I=IB(A,V);if(I)J.messages.push(I),X.push(I),await Y({type:"message_start",message:I}),await Y({type:"message_end",message:I})}await Y({type:"turn_end",message:U,toolResults:N});let j={message:U,toolResults:N,context:J,requestMessages:q.messages,newMessages:X},P=await B.prepareNextTurn?.(j);if(P){if(P.context)J=P.context;B={...B,...P.model?{model:P.model}:{},...P.thinkingLevel!==void 0?{thinkingLevel:P.thinkingLevel}:{}}}if(await B.shouldStopAfterTurn?.(j))return z("done");F.push(...await B.getSteeringMessages?.()??[])}let L=await B.getFollowUpMessages?.()??[];if(L.length>0){F=L;continue}break}return z("done")}function IB($,Z){for(let Y of $){let W=EB(Y);if(Z[Z.length-1]===W)Z.push(W);else Z.length=0,Z.push(W)}if(Z.length<EQ)return;let Q=$[$.length-1]?.name??"the tool";return Z.length=0,{role:"custom",customType:"system-reminder",content:[{type:"text",text:`You have called ${Q} with identical arguments ${EQ} times in a row and the result is not changing. Stop repeating it \u2014 try a different approach, or explain what is blocking you.`}],display:!0,timestamp:Date.now()}}function RB($){let Z=$.contentIndex??0;switch($.type){case"text_start":return{kind:"text_start",contentIndex:Z};case"text_delta":return{kind:"text_delta",contentIndex:Z,text:$.delta??""};case"text_end":return{kind:"text_end",contentIndex:Z};case"thinking_start":return{kind:"thinking_start",contentIndex:Z};case"thinking_delta":return{kind:"thinking_delta",contentIndex:Z,text:$.delta??""};case"thinking_end":return{kind:"thinking_end",contentIndex:Z};case"toolcall_start":return{kind:"toolcall_start",contentIndex:Z};case"toolcall_delta":return{kind:"toolcall_delta",contentIndex:Z,argsFragment:$.delta??""};case"toolcall_end":return{kind:"toolcall_end",contentIndex:Z,toolCallId:$.toolCall?.id??""};default:return}}async function SB($,Z,Q,Y){let W=Z.transformContext?await Z.transformContext($.messages):$.messages,G={...$.systemPrompt?{systemPrompt:$.systemPrompt}:{},messages:c6(W),...$.tools?{tools:$.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema}))}:{}},X=Z.provider.stream(Z.model,G,{...Z.streamOpts,...Z.thinkingLevel!==void 0?{thinkingLevel:Z.thinkingLevel}:{},signal:Y}),J=!1;for await(let K of X){if(K.type==="start"){J=!0,await Q({type:"message_start",message:{...K.partial}});continue}if(K.type==="done"||K.type==="error")break;let V=RB(K);if(V)await Q({type:"message_update",message:{...K.partial},delta:V})}let B=await X.result();if(!J)await Q({type:"message_start",message:{...B}});return await Q({type:"message_end",message:B}),{message:B,messages:W}}function i6($,Z,Q){return{role:"toolResult",toolCallId:$.id,toolName:$.name,content:Z.content??[],...Z.details!==void 0?{details:Z.details}:{},isError:Q,timestamp:Date.now()}}async function rZ($,Z){await Z({type:"tool_execution_end",toolCallId:$.toolCallId,result:$}),await Z({type:"message_start",message:$}),await Z({type:"message_end",message:$})}async function CB($,Z){let Q=[];for(let Y of $){await Z({type:"tool_execution_start",toolCallId:Y.id,toolName:Y.name,args:Y.arguments});let W=i6(Y,y(`Tool call "${Y.name}" was not executed: the response hit the output token limit, so its arguments may be truncated. Re-issue the tool call with complete arguments.`),!0);await rZ(W,Z),Q.push(W)}return{results:Q,terminate:!1,steering:[]}}async function yB($,Z){let Q=[];for(let Y of $){await Z({type:"tool_execution_start",toolCallId:Y.id,toolName:Y.name,args:Y.arguments});let W=i6(Y,y(`Tool call "${Y.name}" was not executed because a steering message interrupted the remaining tool calls. Re-evaluate the plan before re-issuing it.`),!0);await rZ(W,Z),Q.push(W)}return Q}async function bB($,Z,Q,Y,W){let G=Q.tools?.find((X)=>X.name===$.name);if(!G)return{kind:"immediate",result:y(`Tool ${$.name} not found`)};try{let X=$.arguments,J=await Y.beforeToolCall?.({assistantMessage:Z,toolCall:$,args:X,context:Q},W);if(W.aborted)return{kind:"immediate",result:y("Operation aborted")};if(J?.block)return{kind:"immediate",result:y(J.reason||"Tool execution was blocked")};if(J?.rewrittenArgs)X=J.rewrittenArgs;return{kind:"prepared",prepared:{call:$,tool:G,args:X}}}catch(X){return{kind:"immediate",result:y(X instanceof Error?X.message:String(X))}}}async function _B($,Z,Q,Y,W,G){let X,J,B=Promise.resolve();try{X=await $.tool.execute($.call.id,$.args,G,(K)=>{B=B.then(()=>W({type:"tool_execution_update",toolCallId:$.call.id,partial:K}))}),await B,J=X.isError===!0}catch(K){X=y(K instanceof Error?K.message:String(K)),J=!0}if(Y.afterToolCall)try{let K=await Y.afterToolCall({assistantMessage:Z,toolCall:$.call,args:$.args,context:Q,result:X,isError:J},G);if(K)X=K,J=K.isError??J}catch(K){X=y(K instanceof Error?K.message:String(K)),J=!0}return{result:X,isError:J}}async function xB($,Z,Q,Y,W,G){let X=[],J=[],B=[],K=async(z)=>{await W({type:"tool_execution_start",toolCallId:z.id,toolName:z.name,args:z.arguments});let F=await bB(z,Z,Q,Y,G),D=F.kind==="immediate"?{result:F.result,isError:!0}:await _B(F.prepared,Z,Q,Y,W,G);return J.push(D.result.terminate===!0),i6(z,D.result,D.isError)},V=0;while(V<$.length){let z=$[V],F=Q.tools?.find((U)=>U.name===z.name);if(!(F?aZ(F,z.arguments):!1)){let U=await K(z);if(await rZ(U,W),X.push(U),V++,G.aborted)break;if(B=await Y.getSteeringMessages?.()??[],B.length>0)break;continue}let L=[];while(V<$.length&&L.length<wB){let U=$[V],A=Q.tools?.find((N)=>N.name===U.name);if(!A||!aZ(A,U.arguments))break;L.push(U),V++}let q=await Promise.all(L.map(K));for(let U of q)await rZ(U,W),X.push(U);if(G.aborted)break;if(B=await Y.getSteeringMessages?.()??[],B.length>0)break}if(B.length>0&&V<$.length)X.push(...await yB($.slice(V),W));return{results:X,terminate:J.length>0&&J.every(Boolean),steering:B}}var n6="[output cleared to save context \u2014 re-run the tool if you need it]",RQ="[image cleared to save context]";function IQ($){return $.type==="image"&&$.evictable!==!1}function tZ($,Z={}){let Q=Z.keepRecent??6,Y=p($),W=Z.targetTokens,G=[...$],X=Math.max(0,G.length-Q),J=0,B=()=>W!==void 0&&p(G)<=W;for(let K=0;K<X;K++){let V=G[K];if(!V||V.role!=="toolResult"||V.evicted)continue;if(B())break;if(!V.content.some(IQ))continue;G[K]={...V,content:V.content.map((F)=>IQ(F)?{type:"text",text:RQ}:F)},J++}for(let K=0;K<X;K++){let V=G[K];if(!V||V.role!=="toolResult"||V.evicted)continue;if(B())break;if(V.isError)continue;if(V.content.filter((F)=>F.type==="text").map((F)=>F.text).join("").length<n6.length)continue;G[K]={...V,content:[{type:"text",text:n6}],evicted:!0},J++}return{messages:G,evicted:J,tokensFreed:Math.max(0,Y-p(G))}}var a6=0.6;function SQ($,Z){if($==="*")return!0;let Q=$.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${Q}$`,"s").test(Z)}function r6($,Z,Q){let Y=typeof Z==="string"?[Z]:Z,W="ask";for(let G of $)if(Y.some((X)=>SQ(G.permission,X))&&SQ(G.pattern,Q))W=G.action;return W}var kB=new TextEncoder,C1=new TextDecoder;function CQ($,Z){if($.length===0)return Z.slice();if(Z.length===0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($),Q.set(Z,$.length),Q}function fB($,Z){let Q=Math.min($.length,Math.max(0,Z));while(Q>0&&($[Q]??0)>=128&&($[Q]??0)<192)Q-=1;if(Q===$.length)return Q;let Y=$[Q]??0,W=Y<128?1:Y<224?2:Y<240?3:4;return Q+W<=Z?Q+W:Q}function vB($,Z){let Q=Math.max(0,Z);while(Q<$.length&&($[Q]??0)>=128&&($[Q]??0)<192)Q+=1;return Q}class y1{headLimit;tailLimit;head=new Uint8Array;tail=new Uint8Array;headComplete=!1;total=0;constructor($=8000,Z=8000){this.headLimit=$;this.tailLimit=Z}append($){let Z=kB.encode($);if(this.total+=Z.length,!this.headComplete&&this.head.length<this.headLimit){let Q=this.headLimit-this.head.length,Y=fB(Z,Q);if(this.head=CQ(this.head,Z.subarray(0,Y)),Z=Z.subarray(Y),Z.length===0)return;this.headComplete=!0}if(this.tail=CQ(this.tail,Z),this.tail.length>this.tailLimit){let Q=this.tail.length-this.tailLimit;this.tail=this.tail.slice(vB(this.tail,Q))}}get bytes(){return this.total}get truncated(){return this.droppedBytes>0}read(){let $=C1.decode(this.head),Z=C1.decode(this.tail);if(this.droppedBytes===0)return $+Z;return`${$}
61
61
 
62
62
  \u2026 [${this.droppedBytes} bytes omitted] \u2026
63
63
 
64
- ${Z}`}readSince($){if($>=this.total)return{text:"",offset:this.total,gap:!1};let Z=this.total-this.tail.length;if($<this.head.length){let Q=S1.decode(this.head.slice($)),Y=Z>this.head.length;return{text:Y?`${Q}
64
+ ${Z}`}readSince($){if($>=this.total)return{text:"",offset:this.total,gap:!1};let Z=this.total-this.tail.length;if($<this.head.length){let Q=C1.decode(this.head.slice($)),Y=Z>this.head.length;return{text:Y?`${Q}
65
65
 
66
66
  \u2026 [output omitted] \u2026
67
67
 
68
- ${S1.decode(this.tail)}`:Q+S1.decode(this.tail),offset:this.total,gap:Y}}if($<Z)return{text:`\u2026 [output omitted] \u2026
68
+ ${C1.decode(this.tail)}`:Q+C1.decode(this.tail),offset:this.total,gap:Y}}if($<Z)return{text:`\u2026 [output omitted] \u2026
69
69
 
70
- ${S1.decode(this.tail)}`,offset:this.total,gap:!0};return{text:S1.decode(this.tail.slice($-Z)),offset:this.total,gap:!1}}get droppedBytes(){return this.total-this.head.length-this.tail.length}}class aZ{spawn;events;tasks=new Map;counter=0;constructor($,Z={}){this.spawn=$;this.events=Z}setEvents($){this.events=$}start($,Z={}){let Q=`task_${++this.counter}`,Y=new C1,W={id:Q,command:$,status:"running",exitCode:null,startedAt:Date.now(),outputBytes:0,truncated:!1,detached:!1},G=this.spawn({command:$,cols:Z.cols??80,rows:Z.rows??24,onOutput:(J)=>{Y.append(J),W.outputBytes=Y.bytes,W.truncated=Y.truncated,this.events.onOutput?.(Q,J)}}),X={info:W,buffer:Y,handle:G,readOffset:0,killRequested:!1};return this.tasks.set(Q,X),this.events.onStarted?.({...W}),G.exited.then((J)=>{if(W.status==="running")W.status=X.killRequested||J===null?"killed":"exited";W.exitCode=J,W.endedAt=Date.now(),this.events.onExited?.({...W})}),{...W}}get($){let Z=this.tasks.get($);return Z?{...Z.info}:void 0}list(){return[...this.tasks.values()].map(($)=>({...$.info}))}get runningCount(){return[...this.tasks.values()].filter(($)=>$.info.status==="running").length}output($,Z){let Q=this.tasks.get($);if(!Q)return;if(Z==="new"){let{text:Y,offset:W}=Q.buffer.readSince(Q.readOffset);return Q.readOffset=W,{text:Y,truncated:Q.buffer.truncated}}return Q.readOffset=Q.buffer.bytes,{text:Q.buffer.read(),truncated:Q.buffer.truncated}}writeStdin($,Z){let Q=this.tasks.get($);if(!Q||Q.info.status!=="running")return!1;return Q.handle.write(Z),!0}resize($,Z,Q){let Y=this.tasks.get($);if(!Y||Y.info.status!=="running"||Z<=0||Q<=0)return!1;return Y.handle.resize(Z,Q),!0}resizeAll($,Z){for(let Q of this.tasks.values())if(Q.info.status==="running")Q.handle.resize($,Z)}detach($){let Z=this.tasks.get($);if(!Z||Z.info.status!=="running"||Z.info.detached)return!1;return Z.info.detached=!0,Z.handle.detach(),!0}kill($){let Z=this.tasks.get($);if(!Z||Z.info.status!=="running"||Z.killRequested)return!1;return Z.killRequested=!0,Z.handle.kill(),!0}stopAll(){this.requestStops()}async killAll(){let $=this.requestStops();await Promise.allSettled($)}requestStops(){let $=[];for(let Z of this.tasks.values())if(Z.info.status==="running"&&!Z.info.detached){if($.push(Z.handle.exited),!Z.killRequested)Z.killRequested=!0,Z.handle.kill()}return $}async wait($){let Z=this.tasks.get($);if(!Z)return;return await Z.handle.exited,this.get($)}}function a6($){let Z=$.status==="killed"?"was killed":$.exitCode===0?"finished successfully":`failed with exit code ${$.exitCode}`,Q=$.endedAt?`${$.endedAt-$.startedAt}ms`:"unknown duration";return`Background task ${$.id} (${$.command}) ${Z} after ${Q}. Use task_output to read its output.`}var h$=1;function y1($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function v($){return typeof $==="string"}function rZ($){return typeof $==="string"&&$.length>0}function V0($){return typeof $==="number"&&Number.isFinite($)}function d($,Z){return $===void 0||Z($)}function r6($){if(!y1($))return!1;return V0($.inputTokens)&&$.inputTokens>=0&&V0($.outputTokens)&&$.outputTokens>=0&&V0($.cacheReadTokens)&&$.cacheReadTokens>=0&&V0($.cacheWriteTokens)&&$.cacheWriteTokens>=0&&d($.costUsd,(Z)=>V0(Z)&&Z>=0)}function tZ($,Z){if(!y1($)||!v($.type)||!Z.includes($.type))return!1;if($.type==="text")return v($.text);if($.type==="image")return v($.mimeType)&&v($.data)&&d($.evictable,(Q)=>typeof Q==="boolean");if($.type==="thinking")return v($.thinking)&&d($.signature,v)&&d($.redacted,(Q)=>typeof Q==="boolean");return v($.id)&&v($.name)&&y1($.arguments)&&d($.signature,v)}function RQ($){if(!y1($)||!v($.role)||!Array.isArray($.content))return!1;if(!V0($.timestamp))return!1;if($.role==="user")return $.content.every((Z)=>tZ(Z,["text","image"]));if($.role==="custom")return v($.customType)&&d($.display,(Z)=>typeof Z==="boolean")&&$.content.every((Z)=>tZ(Z,["text","image"]));if($.role==="toolResult")return v($.toolCallId)&&v($.toolName)&&typeof $.isError==="boolean"&&d($.evicted,(Z)=>typeof Z==="boolean")&&$.content.every((Z)=>tZ(Z,["text","image"]));if($.role==="assistant")return v($.model)&&r6($.usage)&&["end","toolUse","length","aborted","error"].includes(String($.stopReason))&&d($.errorMessage,v)&&$.content.every((Z)=>tZ(Z,["text","thinking","toolCall"]));return!1}function t6($){if(!y1($)||!v($.type))throw Error("Invalid session entry: expected an object with a type");if($.type==="session"){if(!V0($.version)||!rZ($.id)||!v($.createdAt)||!v($.profile)||!y1($.environment)||!Object.values($.environment).every(v))throw Error("Invalid session header");return}if(!rZ($.id)||!($.parentId===null||rZ($.parentId)))throw Error(`Invalid ${$.type} session entry identity`);switch($.type){case"message":if(!RQ($.message)||!d($.checkpointRef,v))throw Error("Invalid message session entry");return;case"compaction":if(!v($.summary)||!($.firstKeptEntryId===null||v($.firstKeptEntryId))||!d($.timestamp,V0)||!d($.contextTokensBefore,V0)||!d($.contextTokensAfter,V0)||!d($.model,v)||!d($.compactorModel,v)||!d($.windowNumber,V0)||!d($.keptTokens,V0)||!d($.toolResultsCleared,V0)||!d($.usage,r6))throw Error("Invalid compaction session entry");return;case"microcompaction":if(!Array.isArray($.replacements)||!$.replacements.every((Z)=>y1(Z)&&v(Z.entryId)&&RQ(Z.message)))throw Error("Invalid microcompaction session entry");return;case"compaction-attempt":if(!["failed","cancelled"].includes(String($.status))||!["manual","threshold","overflow","model-change"].includes(String($.trigger))||!v($.model)||!v($.compactorModel)||!V0($.timestamp)||!r6($.usage))throw Error("Invalid compaction-attempt session entry");return;case"checkpoint":if(!($.beforeEntryId===null||v($.beforeEntryId))||!v($.checkpointRef)||!v($.checkpointAfterRef)||!d($.label,v))throw Error("Invalid checkpoint session entry");return;case"settings-change":if(!d($.model,v)||!d($.thinkingLevel,v))throw Error("Invalid settings-change session entry");return;case"custom":if(!rZ($.customType)||!Object.hasOwn($,"data"))throw Error("Invalid custom session entry");return;default:throw Error(`Unknown session entry type: ${$.type}`)}}function SQ($){return $.type!=="session"}function CQ($){return JSON.stringify($)}function yQ($){let Z=JSON.parse($);return t6(Z),Z}function bQ($){return $.map(CQ).join(`
70
+ ${C1.decode(this.tail)}`,offset:this.total,gap:!0};return{text:C1.decode(this.tail.slice($-Z)),offset:this.total,gap:!1}}get droppedBytes(){return this.total-this.head.length-this.tail.length}}class oZ{spawn;events;tasks=new Map;counter=0;constructor($,Z={}){this.spawn=$;this.events=Z}setEvents($){this.events=$}start($,Z={}){let Q=`task_${++this.counter}`,Y=new y1,W={id:Q,command:$,status:"running",exitCode:null,startedAt:Date.now(),outputBytes:0,truncated:!1,detached:!1},G=this.spawn({command:$,cols:Z.cols??80,rows:Z.rows??24,onOutput:(J)=>{Y.append(J),W.outputBytes=Y.bytes,W.truncated=Y.truncated,this.events.onOutput?.(Q,J)}}),X={info:W,buffer:Y,handle:G,readOffset:0,killRequested:!1};return this.tasks.set(Q,X),this.events.onStarted?.({...W}),G.exited.then((J)=>{if(W.status==="running")W.status=X.killRequested||J===null?"killed":"exited";W.exitCode=J,W.endedAt=Date.now(),this.events.onExited?.({...W})}),{...W}}get($){let Z=this.tasks.get($);return Z?{...Z.info}:void 0}list(){return[...this.tasks.values()].map(($)=>({...$.info}))}get runningCount(){return[...this.tasks.values()].filter(($)=>$.info.status==="running").length}output($,Z){let Q=this.tasks.get($);if(!Q)return;if(Z==="new"){let{text:Y,offset:W}=Q.buffer.readSince(Q.readOffset);return Q.readOffset=W,{text:Y,truncated:Q.buffer.truncated}}return Q.readOffset=Q.buffer.bytes,{text:Q.buffer.read(),truncated:Q.buffer.truncated}}writeStdin($,Z){let Q=this.tasks.get($);if(!Q||Q.info.status!=="running")return!1;return Q.handle.write(Z),!0}resize($,Z,Q){let Y=this.tasks.get($);if(!Y||Y.info.status!=="running"||Z<=0||Q<=0)return!1;return Y.handle.resize(Z,Q),!0}resizeAll($,Z){for(let Q of this.tasks.values())if(Q.info.status==="running")Q.handle.resize($,Z)}detach($){let Z=this.tasks.get($);if(!Z||Z.info.status!=="running"||Z.info.detached)return!1;return Z.info.detached=!0,Z.handle.detach(),!0}kill($){let Z=this.tasks.get($);if(!Z||Z.info.status!=="running"||Z.killRequested)return!1;return Z.killRequested=!0,Z.handle.kill(),!0}stopAll(){this.requestStops()}async killAll(){let $=this.requestStops();await Promise.allSettled($)}requestStops(){let $=[];for(let Z of this.tasks.values())if(Z.info.status==="running"&&!Z.info.detached){if($.push(Z.handle.exited),!Z.killRequested)Z.killRequested=!0,Z.handle.kill()}return $}async wait($){let Z=this.tasks.get($);if(!Z)return;return await Z.handle.exited,this.get($)}}function t6($){let Z=$.status==="killed"?"was killed":$.exitCode===0?"finished successfully":`failed with exit code ${$.exitCode}`,Q=$.endedAt?`${$.endedAt-$.startedAt}ms`:"unknown duration";return`Background task ${$.id} (${$.command}) ${Z} after ${Q}. Use task_output to read its output.`}var m$=1;function b1($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function h($){return typeof $==="string"}function sZ($){return typeof $==="string"&&$.length>0}function V0($){return typeof $==="number"&&Number.isFinite($)}function i($,Z){return $===void 0||Z($)}function o6($){if(!b1($))return!1;return V0($.inputTokens)&&$.inputTokens>=0&&V0($.outputTokens)&&$.outputTokens>=0&&V0($.cacheReadTokens)&&$.cacheReadTokens>=0&&V0($.cacheWriteTokens)&&$.cacheWriteTokens>=0&&i($.costUsd,(Z)=>V0(Z)&&Z>=0)}function eZ($,Z){if(!b1($)||!h($.type)||!Z.includes($.type))return!1;if($.type==="text")return h($.text);if($.type==="image")return h($.mimeType)&&h($.data)&&i($.evictable,(Q)=>typeof Q==="boolean");if($.type==="thinking")return h($.thinking)&&i($.signature,h)&&i($.redacted,(Q)=>typeof Q==="boolean");return h($.id)&&h($.name)&&b1($.arguments)&&i($.signature,h)}function yQ($){if(!b1($)||!h($.role)||!Array.isArray($.content))return!1;if(!V0($.timestamp))return!1;if($.role==="user")return $.content.every((Z)=>eZ(Z,["text","image"]));if($.role==="custom")return h($.customType)&&i($.display,(Z)=>typeof Z==="boolean")&&$.content.every((Z)=>eZ(Z,["text","image"]));if($.role==="toolResult")return h($.toolCallId)&&h($.toolName)&&typeof $.isError==="boolean"&&i($.evicted,(Z)=>typeof Z==="boolean")&&$.content.every((Z)=>eZ(Z,["text","image"]));if($.role==="assistant")return h($.model)&&o6($.usage)&&["end","toolUse","length","aborted","error"].includes(String($.stopReason))&&i($.errorMessage,h)&&$.content.every((Z)=>eZ(Z,["text","thinking","toolCall"]));return!1}function s6($){if(!b1($)||!h($.type))throw Error("Invalid session entry: expected an object with a type");if($.type==="session"){if(!V0($.version)||!sZ($.id)||!h($.createdAt)||!h($.profile)||!b1($.environment)||!Object.values($.environment).every(h))throw Error("Invalid session header");return}if(!sZ($.id)||!($.parentId===null||sZ($.parentId)))throw Error(`Invalid ${$.type} session entry identity`);switch($.type){case"message":if(!yQ($.message)||!i($.checkpointRef,h))throw Error("Invalid message session entry");return;case"compaction":if(!h($.summary)||!($.firstKeptEntryId===null||h($.firstKeptEntryId))||!i($.timestamp,V0)||!i($.contextTokensBefore,V0)||!i($.contextTokensAfter,V0)||!i($.model,h)||!i($.compactorModel,h)||!i($.windowNumber,V0)||!i($.keptTokens,V0)||!i($.toolResultsCleared,V0)||!i($.usage,o6))throw Error("Invalid compaction session entry");return;case"microcompaction":if(!Array.isArray($.replacements)||!$.replacements.every((Z)=>b1(Z)&&h(Z.entryId)&&yQ(Z.message)))throw Error("Invalid microcompaction session entry");return;case"compaction-attempt":if(!["failed","cancelled"].includes(String($.status))||!["manual","threshold","overflow","model-change"].includes(String($.trigger))||!h($.model)||!h($.compactorModel)||!V0($.timestamp)||!o6($.usage))throw Error("Invalid compaction-attempt session entry");return;case"checkpoint":if(!($.beforeEntryId===null||h($.beforeEntryId))||!h($.checkpointRef)||!h($.checkpointAfterRef)||!i($.label,h))throw Error("Invalid checkpoint session entry");return;case"settings-change":if(!i($.model,h)||!i($.thinkingLevel,h))throw Error("Invalid settings-change session entry");return;case"custom":if(!sZ($.customType)||!Object.hasOwn($,"data"))throw Error("Invalid custom session entry");return;default:throw Error(`Unknown session entry type: ${$.type}`)}}function _Q($){return $.type!=="session"}function xQ($){return JSON.stringify($)}function kQ($){let Z=JSON.parse($);return s6(Z),Z}function fQ($){return $.map(xQ).join(`
71
71
  `)+($.length>0?`
72
- `:"")}function _Q($){return $.split(`
73
- `).filter((Z)=>Z.trim().length>0).map(yQ)}var EQ=0;function xQ(){return EQ+=1,`e${Date.now().toString(36)}${EQ.toString(36)}`}class o{entries=[];byId=new Map;headId=null;constructor($){if($)t6($),this.entries.push($)}static fromJsonl($){let Z=new o,Q=_Q($);if(Q.length===0||Q[0]?.type!=="session")throw Error("Invalid session: line 1 must be the session header");for(let Y of Q)Z.push(Y);return Z}toJsonl(){return bQ(this.entries)}get header(){let $=this.entries[0];return $?.type==="session"?$:void 0}get head(){return this.headId}all(){return[...this.entries]}get($){return this.byId.get($)}has($){return $===null||this.byId.has($)}push($){if(t6($),$.type==="session"){if(this.entries.length!==0)throw Error("Invalid session: header must appear only on line 1")}else{if(this.entries.length===0||this.entries[0]?.type!=="session")throw Error("Invalid session: missing header");if(this.byId.has($.id))throw Error(`Invalid session: duplicate entry id ${$.id}`);if($.parentId!==null&&!this.byId.has($.parentId))throw Error(`Invalid session: unknown parent ${$.parentId}`)}if(this.entries.push($),SQ($))this.byId.set($.id,$),this.headId=$.id}append($){let Z={...$,id:$.id??xQ(),parentId:$.parentId!==void 0?$.parentId:this.headId};return this.push(Z),Z}appendMessage($,Z){return this.append({type:"message",message:$,...Z?{checkpointRef:Z}:{}})}pathTo($){let Z=[],Q=new Set,Y=$;while(Y){if(Q.has(Y))break;Q.add(Y);let W=this.byId.get(Y);if(!W)break;Z.push(W),Y=W.parentId}return Z.reverse()}activePath(){return this.headId?this.pathTo(this.headId):[]}entryIdForMessage($){let Z=this.activePath();for(let Q=Z.length-1;Q>=0;Q--){let Y=Z[Q];if(Y?.type==="message"&&Y.message===$)return Y.id;if(Y?.type==="microcompaction"){let W=Y.replacements.find((G)=>G.message===$);if(W)return W.entryId}}return}messagesAt($=this.headId){if(!$)return[];let Z=this.pathTo($),Q=[];for(let Y of Z){if(Y.type==="message"){Q.push({message:Y.message,entryId:Y.id});continue}if(Y.type==="microcompaction"){for(let W of Y.replacements){let G=Q.findIndex((X)=>X.entryId===W.entryId);if(G!==-1)Q[G]={message:W.message,entryId:W.entryId}}continue}if(Y.type==="compaction"){if(Y.firstKeptEntryId===null){Q=[{message:v$(Y.summary,Y.carryover,Y.timestamp)}];continue}let W=Q.findIndex((G)=>G.entryId===Y.firstKeptEntryId);if(W===-1)continue;Q=[{message:v$(Y.summary,Y.carryover,Y.timestamp)},...Q.slice(W)]}}return Q.map((Y)=>Y.message)}fork($){if($!==null&&!this.byId.has($))throw Error(`Cannot fork from unknown entry: ${$}`);this.headId=$}}class u${sessions=new Map;async load($){let Z=this.sessions.get($);return Z===void 0?void 0:o.fromJsonl(Z)}async save($,Z){this.sessions.set($,Z.toJsonl())}async list(){return[...this.sessions.keys()]}}import{createHash as RB,randomUUID as EB}from"crypto";import{realpathSync as SB}from"fs";import{chmod as kQ,mkdir as m$,readFile as l$,rename as CB,rm as p$,stat as yB,writeFile as oZ}from"fs/promises";import{homedir as bB}from"os";import{basename as _B,dirname as xB,join as V1,relative as n0,resolve as s6}from"path";function gQ($=process.platform){return $==="win32"?"NUL":"/dev/null"}var kB=async($,Z,Q)=>{let Y=Bun.spawn(["git",...$],{cwd:Q,env:{...process.env,...Z},stdout:"pipe",stderr:"pipe",stdin:"ignore",windowsHide:!0}),[W,G,X]=await Promise.all([new Response(Y.stdout).text(),new Response(Y.stderr).text(),Y.exited]);return{stdout:W,stderr:G,exitCode:X}};function fB($){let Z=[];for(let Q of $.split("\x00")){if(Q.length===0)continue;let Y=Q.indexOf("\t"),W=Q.indexOf("\t",Y+1);if(Y===-1||W===-1)continue;let G=Q.slice(0,Y),X=Q.slice(Y+1,W),J=Q.slice(W+1);Z.push({path:J,added:G==="-"?0:Number(G),removed:X==="-"?0:Number(X),hunks:[]})}return Z}function vB($){let Z=s6($);try{return SB.native(Z)}catch{return Z}}function gB($,Z){let Q=(Z??_B($)).replace(/[^A-Za-z0-9._-]+/g,"-")||"workspace",Y=RB("sha256").update($).digest("hex").slice(0,16);return`${Q}-${Y}`}var hB=new Set([".venv","venv","node_modules","__pycache__",".pytest_cache",".mypy_cache",".ruff_cache",".next",".nuxt",".cache","coverage"]),fQ="2",uB=30000,mB=1000,o6=".mu";function lB($){let Z=$.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/+$/,"").split("/"),Q=Z.findIndex((Y)=>hB.has(Y));if(Q===-1)return;return Z.slice(0,Q+1).join("/")}function vQ($){return`/${$.replaceAll("\\","\\\\").replace(/[?*[#]/g,"\\$&")}/`}class sZ{root;shadowDir;run;lockDir;excludedPathspecs;initialized=!1;constructor($){this.root=vB($.root);let Z=gB(this.root,$.scope);this.shadowDir=$.shadowDir??V1(bB(),".mu","checkpoints",Z),this.lockDir=`${this.shadowDir}.lock`,this.run=$.run??kB;let Q=n0(this.root,this.shadowDir).replaceAll("\\","/"),Y=n0(this.root,this.lockDir).replaceAll("\\","/");this.excludedPathspecs=[":(exclude,literal).git",":(exclude,glob).git/**",`:(exclude,literal)${o6}`,`:(exclude,glob)${o6}/**`,...Q.length>0&&!Q.startsWith("..")?[`:(exclude,literal)${Q}`,`:(exclude,glob)${Q}/**`]:[],...Y.length>0&&!Y.startsWith("..")?[`:(exclude,literal)${Y}`,`:(exclude,glob)${Y}/**`]:[]]}get directory(){return this.shadowDir}env(){return{GIT_DIR:this.shadowDir,GIT_WORK_TREE:this.root,GIT_AUTHOR_NAME:"mu",GIT_AUTHOR_EMAIL:"mu@localhost",GIT_COMMITTER_NAME:"mu",GIT_COMMITTER_EMAIL:"mu@localhost",GIT_CONFIG_GLOBAL:gQ(),GIT_CONFIG_NOSYSTEM:"1"}}async git(...$){return this.run($,this.env(),this.root)}async acquireLock(){await m$(xB(this.lockDir),{recursive:!0});let $=EB(),Z=Date.now()+uB;while(!0){try{await m$(this.lockDir,{mode:448});let X=V1(this.lockDir,"owner.json"),J=V1(this.lockDir,`owner.${$}.tmp`);try{await oZ(J,`${JSON.stringify({pid:process.pid,token:$,createdAt:Date.now()})}
74
- `,{encoding:"utf8",mode:384,flag:"wx"}),await CB(J,X)}catch(B){throw await p$(this.lockDir,{recursive:!0,force:!0}).catch(()=>{}),B}return async()=>{let B=await l$(X,"utf8").catch(()=>{return});if(!B)return;try{if(JSON.parse(B).token===$)await p$(this.lockDir,{recursive:!0,force:!0})}catch{}}}catch(X){if(X.code!=="EEXIST")throw X}let Q=V1(this.lockDir,"owner.json"),Y=await l$(Q,"utf8").catch(()=>{return}),W=!1,G;if(Y)try{let X=JSON.parse(Y);if(G=typeof X.token==="string"?X.token:void 0,typeof X.pid==="number"&&Number.isSafeInteger(X.pid))try{process.kill(X.pid,0)}catch(J){W=J.code==="ESRCH"}else W=!0}catch{W=!0}else W=await yB(this.lockDir).then((J)=>Date.now()-J.mtimeMs).catch(()=>0)>=mB;if(W){let X=await l$(Q,"utf8").catch(()=>{return}),J;try{J=X?JSON.parse(X).token??void 0:void 0}catch{}if(J===G){await p$(this.lockDir,{recursive:!0,force:!0});continue}}if(Date.now()>=Z)throw Error(`Timed out waiting for checkpoint lock ${this.lockDir}`);await new Promise((X)=>setTimeout(X,20))}}async locked($){let Z=await this.acquireLock();try{return await $()}finally{await Z()}}async ensure(){if(this.initialized)return;if(await m$(this.shadowDir,{recursive:!0,mode:448}),process.platform!=="win32")await kQ(this.shadowDir,448);let $=V1(this.shadowDir,"mu-worktree"),Z=!1;try{let G=(await l$($,"utf8")).trim();if(G!==this.root)throw Error(`Checkpoint store belongs to ${G}, not ${this.root}`);Z=!0}catch(G){if(G.code!=="ENOENT")throw G}let Q=V1(this.shadowDir,"mu-checkpoint-version");if(Z){if((await l$(Q,"utf8").catch((X)=>{if(X.code==="ENOENT")return;throw X}))?.trim()!==fQ){if(await p$(this.shadowDir,{recursive:!0,force:!0}),await m$(this.shadowDir,{recursive:!0,mode:448}),process.platform!=="win32")await kQ(this.shadowDir,448)}}if(await oZ($,`${this.root}
75
- `,"utf8"),(await this.git("rev-parse","--git-dir")).exitCode!==0)await this.git("init","--quiet");await oZ(Q,`${fQ}
76
- `,"utf8");let W=n0(this.root,this.shadowDir).replaceAll("\\","/");if(W.length>0&&!W.startsWith("..")){let G=n0(this.root,this.lockDir).replaceAll("\\","/");await m$(V1(this.shadowDir,"info"),{recursive:!0}),await oZ(V1(this.shadowDir,"info","exclude"),`/${W}/
72
+ `:"")}function vQ($){return $.split(`
73
+ `).filter((Z)=>Z.trim().length>0).map(kQ)}var bQ=0;function hQ(){return bQ+=1,`e${Date.now().toString(36)}${bQ.toString(36)}`}class o{entries=[];byId=new Map;headId=null;constructor($){if($)s6($),this.entries.push($)}static fromJsonl($){let Z=new o,Q=vQ($);if(Q.length===0||Q[0]?.type!=="session")throw Error("Invalid session: line 1 must be the session header");for(let Y of Q)Z.push(Y);return Z}toJsonl(){return fQ(this.entries)}get header(){let $=this.entries[0];return $?.type==="session"?$:void 0}get head(){return this.headId}all(){return[...this.entries]}get($){return this.byId.get($)}has($){return $===null||this.byId.has($)}push($){if(s6($),$.type==="session"){if(this.entries.length!==0)throw Error("Invalid session: header must appear only on line 1")}else{if(this.entries.length===0||this.entries[0]?.type!=="session")throw Error("Invalid session: missing header");if(this.byId.has($.id))throw Error(`Invalid session: duplicate entry id ${$.id}`);if($.parentId!==null&&!this.byId.has($.parentId))throw Error(`Invalid session: unknown parent ${$.parentId}`)}if(this.entries.push($),_Q($))this.byId.set($.id,$),this.headId=$.id}append($){let Z={...$,id:$.id??hQ(),parentId:$.parentId!==void 0?$.parentId:this.headId};return this.push(Z),Z}appendMessage($,Z){return this.append({type:"message",message:$,...Z?{checkpointRef:Z}:{}})}pathTo($){let Z=[],Q=new Set,Y=$;while(Y){if(Q.has(Y))break;Q.add(Y);let W=this.byId.get(Y);if(!W)break;Z.push(W),Y=W.parentId}return Z.reverse()}activePath(){return this.headId?this.pathTo(this.headId):[]}entryIdForMessage($){let Z=this.activePath();for(let Q=Z.length-1;Q>=0;Q--){let Y=Z[Q];if(Y?.type==="message"&&Y.message===$)return Y.id;if(Y?.type==="microcompaction"){let W=Y.replacements.find((G)=>G.message===$);if(W)return W.entryId}}return}messagesAt($=this.headId){if(!$)return[];let Z=this.pathTo($),Q=[];for(let Y of Z){if(Y.type==="message"){Q.push({message:Y.message,entryId:Y.id});continue}if(Y.type==="microcompaction"){for(let W of Y.replacements){let G=Q.findIndex((X)=>X.entryId===W.entryId);if(G!==-1)Q[G]={message:W.message,entryId:W.entryId}}continue}if(Y.type==="compaction"){if(Y.firstKeptEntryId===null){Q=[{message:g$(Y.summary,Y.carryover,Y.timestamp)}];continue}let W=Q.findIndex((G)=>G.entryId===Y.firstKeptEntryId);if(W===-1)continue;Q=[{message:g$(Y.summary,Y.carryover,Y.timestamp)},...Q.slice(W)]}}return Q.map((Y)=>Y.message)}fork($){if($!==null&&!this.byId.has($))throw Error(`Cannot fork from unknown entry: ${$}`);this.headId=$}}class p${sessions=new Map;async load($){let Z=this.sessions.get($);return Z===void 0?void 0:o.fromJsonl(Z)}async save($,Z){this.sessions.set($,Z.toJsonl())}async list(){return[...this.sessions.keys()]}}import{createHash as hB,randomUUID as gB}from"crypto";import{realpathSync as uB}from"fs";import{chmod as gQ,mkdir as l$,readFile as c$,rename as mB,rm as d$,stat as pB,writeFile as $5}from"fs/promises";import{homedir as lB}from"os";import{basename as cB,dirname as dB,join as z1,relative as a0,resolve as $4}from"path";function pQ($=process.platform){return $==="win32"?"NUL":"/dev/null"}var iB=async($,Z,Q)=>{let Y=Bun.spawn(["git",...$],{cwd:Q,env:{...process.env,...Z},stdout:"pipe",stderr:"pipe",stdin:"ignore",windowsHide:!0}),[W,G,X]=await Promise.all([new Response(Y.stdout).text(),new Response(Y.stderr).text(),Y.exited]);return{stdout:W,stderr:G,exitCode:X}};function nB($){let Z=[];for(let Q of $.split("\x00")){if(Q.length===0)continue;let Y=Q.indexOf("\t"),W=Q.indexOf("\t",Y+1);if(Y===-1||W===-1)continue;let G=Q.slice(0,Y),X=Q.slice(Y+1,W),J=Q.slice(W+1);Z.push({path:J,added:G==="-"?0:Number(G),removed:X==="-"?0:Number(X),hunks:[]})}return Z}function aB($){let Z=$4($);try{return uB.native(Z)}catch{return Z}}function rB($,Z){let Q=(Z??cB($)).replace(/[^A-Za-z0-9._-]+/g,"-")||"workspace",Y=hB("sha256").update($).digest("hex").slice(0,16);return`${Q}-${Y}`}var tB=new Set([".venv","venv","node_modules","__pycache__",".pytest_cache",".mypy_cache",".ruff_cache",".next",".nuxt",".cache","coverage"]),uQ="2",oB=30000,sB=1000,e6=".mu";function eB($){let Z=$.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/+$/,"").split("/"),Q=Z.findIndex((Y)=>tB.has(Y));if(Q===-1)return;return Z.slice(0,Q+1).join("/")}function mQ($){return`/${$.replaceAll("\\","\\\\").replace(/[?*[#]/g,"\\$&")}/`}class Z5{root;shadowDir;run;lockDir;excludedPathspecs;initialized=!1;constructor($){this.root=aB($.root);let Z=rB(this.root,$.scope);this.shadowDir=$.shadowDir??z1(lB(),".mu","checkpoints",Z),this.lockDir=`${this.shadowDir}.lock`,this.run=$.run??iB;let Q=a0(this.root,this.shadowDir).replaceAll("\\","/"),Y=a0(this.root,this.lockDir).replaceAll("\\","/");this.excludedPathspecs=[":(exclude,literal).git",":(exclude,glob).git/**",`:(exclude,literal)${e6}`,`:(exclude,glob)${e6}/**`,...Q.length>0&&!Q.startsWith("..")?[`:(exclude,literal)${Q}`,`:(exclude,glob)${Q}/**`]:[],...Y.length>0&&!Y.startsWith("..")?[`:(exclude,literal)${Y}`,`:(exclude,glob)${Y}/**`]:[]]}get directory(){return this.shadowDir}env(){return{GIT_DIR:this.shadowDir,GIT_WORK_TREE:this.root,GIT_AUTHOR_NAME:"mu",GIT_AUTHOR_EMAIL:"mu@localhost",GIT_COMMITTER_NAME:"mu",GIT_COMMITTER_EMAIL:"mu@localhost",GIT_CONFIG_GLOBAL:pQ(),GIT_CONFIG_NOSYSTEM:"1"}}async git(...$){return this.run($,this.env(),this.root)}async acquireLock(){await l$(dB(this.lockDir),{recursive:!0});let $=gB(),Z=Date.now()+oB;while(!0){try{await l$(this.lockDir,{mode:448});let X=z1(this.lockDir,"owner.json"),J=z1(this.lockDir,`owner.${$}.tmp`);try{await $5(J,`${JSON.stringify({pid:process.pid,token:$,createdAt:Date.now()})}
74
+ `,{encoding:"utf8",mode:384,flag:"wx"}),await mB(J,X)}catch(B){throw await d$(this.lockDir,{recursive:!0,force:!0}).catch(()=>{}),B}return async()=>{let B=await c$(X,"utf8").catch(()=>{return});if(!B)return;try{if(JSON.parse(B).token===$)await d$(this.lockDir,{recursive:!0,force:!0})}catch{}}}catch(X){if(X.code!=="EEXIST")throw X}let Q=z1(this.lockDir,"owner.json"),Y=await c$(Q,"utf8").catch(()=>{return}),W=!1,G;if(Y)try{let X=JSON.parse(Y);if(G=typeof X.token==="string"?X.token:void 0,typeof X.pid==="number"&&Number.isSafeInteger(X.pid))try{process.kill(X.pid,0)}catch(J){W=J.code==="ESRCH"}else W=!0}catch{W=!0}else W=await pB(this.lockDir).then((J)=>Date.now()-J.mtimeMs).catch(()=>0)>=sB;if(W){let X=await c$(Q,"utf8").catch(()=>{return}),J;try{J=X?JSON.parse(X).token??void 0:void 0}catch{}if(J===G){await d$(this.lockDir,{recursive:!0,force:!0});continue}}if(Date.now()>=Z)throw Error(`Timed out waiting for checkpoint lock ${this.lockDir}`);await new Promise((X)=>setTimeout(X,20))}}async locked($){let Z=await this.acquireLock();try{return await $()}finally{await Z()}}async ensure(){if(this.initialized)return;if(await l$(this.shadowDir,{recursive:!0,mode:448}),process.platform!=="win32")await gQ(this.shadowDir,448);let $=z1(this.shadowDir,"mu-worktree"),Z=!1;try{let G=(await c$($,"utf8")).trim();if(G!==this.root)throw Error(`Checkpoint store belongs to ${G}, not ${this.root}`);Z=!0}catch(G){if(G.code!=="ENOENT")throw G}let Q=z1(this.shadowDir,"mu-checkpoint-version");if(Z){if((await c$(Q,"utf8").catch((X)=>{if(X.code==="ENOENT")return;throw X}))?.trim()!==uQ){if(await d$(this.shadowDir,{recursive:!0,force:!0}),await l$(this.shadowDir,{recursive:!0,mode:448}),process.platform!=="win32")await gQ(this.shadowDir,448)}}if(await $5($,`${this.root}
75
+ `,"utf8"),(await this.git("rev-parse","--git-dir")).exitCode!==0)await this.git("init","--quiet");await $5(Q,`${uQ}
76
+ `,"utf8");let W=a0(this.root,this.shadowDir).replaceAll("\\","/");if(W.length>0&&!W.startsWith("..")){let G=a0(this.root,this.lockDir).replaceAll("\\","/");await l$(z1(this.shadowDir,"info"),{recursive:!0}),await $5(z1(this.shadowDir,"info","exclude"),`/${W}/
77
77
  ${G.length>0&&!G.startsWith("..")?`/${G}/
78
- `:""}`,"utf8")}this.initialized=!0}async ignoredDisposableDirectories(){let $=await this.git("ls-files","--cached","--others","--ignored","--exclude-standard","--directory","-z");if($.exitCode!==0)throw Error(`Could not enumerate ignored checkpoint paths: ${$.stderr.trim()}`);let Z=new Set;for(let Q of $.stdout.split("\x00")){if(Q.length===0)continue;let Y=lB(Q);if(Y)Z.add(Y)}return[...Z].sort()}checkpointPathspecs($){return[...this.excludedPathspecs,...$.map((Z)=>`:(exclude,literal)${Z}`)]}async snapshot($){return this.locked(async()=>{await this.ensure();let Z=await this.ignoredDisposableDirectories();if((await this.git("add","-A","--force","--",".",...this.checkpointPathspecs(Z))).exitCode!==0)return;if((await this.git("commit","--quiet","--allow-empty","--no-verify","-m",$??`checkpoint ${new Date().toISOString()}`)).exitCode!==0)return;let G=(await this.git("rev-parse","HEAD")).stdout.trim();return G.length>0?G:void 0})}async restore($){await this.locked(async()=>{await this.ensure();let Z=await this.git("read-tree","--reset","-u",$);if(Z.exitCode!==0)throw Error(`Could not restore checkpoint ${$}: ${Z.stderr.trim()}`);let Q=await this.ignoredDisposableDirectories(),Y=await this.git("clean","--force","-d","-x","--quiet","-e",".git","-e",vQ(o6),...n0(this.root,this.shadowDir).startsWith("..")?[]:["-e",n0(this.root,this.shadowDir).replaceAll("\\","/")],...n0(this.root,this.lockDir).startsWith("..")?[]:["-e",n0(this.root,this.lockDir).replaceAll("\\","/")],...Q.flatMap((W)=>["-e",vQ(W)]));if(Y.exitCode!==0)throw Error(`Could not clean checkpoint ${$}: ${Y.stderr.trim()}`)})}async restoreResources($,Z){await this.locked(async()=>{await this.ensure();let Q=[...new Set(Z.map((J)=>{let B=s6(this.root,J),K=n0(this.root,B).replaceAll("\\","/");if(K.length===0||K===".."||K.startsWith("../"))throw Error(`Checkpoint resource escapes the workspace: ${J}`);return K}))];if(Q.length===0)return;let Y=Q.map((J)=>`:(literal)${J}`),W=await this.git("reset","--quiet",$,"--",...Y);if(W.exitCode!==0)throw Error(`Could not reset checkpoint ${$}: ${W.stderr.trim()}`);let G=[],X=[];for(let J of Q){let B=await this.git("ls-tree","-z",$,"--",`:(literal)${J}`);if(B.exitCode!==0)throw Error(`Could not inspect checkpoint ${$}: ${B.stderr.trim()}`);(B.stdout.length>0?G:X).push(J)}if(G.length>0){let J=await this.git("checkout","--force",$,"--",...G.map((B)=>`:(literal)${B}`));if(J.exitCode!==0)throw Error(`Could not restore checkpoint ${$}: ${J.stderr.trim()}`)}await Promise.all(X.map((J)=>p$(s6(this.root,J),{recursive:!0,force:!0})))})}async diff($,Z){return this.locked(async()=>{if(await this.ensure(),!Z){let G=await this.ignoredDisposableDirectories(),X=await this.git("add","-A","--force","--",".",...this.checkpointPathspecs(G));if(X.exitCode!==0)throw Error(`Could not stage workspace for checkpoint diff: ${X.stderr.trim()}`)}let Q=Z?["diff","--no-renames","--numstat","-z",$,Z]:["diff","--no-renames","--cached","--numstat","-z",$],Y=await this.git(...Q);if(Y.exitCode!==0)throw Error(`Could not calculate checkpoint diff: ${Y.stderr.trim()}`);let W=fB(Y.stdout);for(let G of W){let X=Z?["diff","--no-renames","--unified=3",$,Z,"--",G.path]:["diff","--no-renames","--cached","--unified=3",$,"--",G.path],J=await this.git(...X);if(J.exitCode!==0)throw Error(`Could not calculate checkpoint patch for ${G.path}: ${J.stderr.trim()}`);G.hunks=J.stdout.split(`
79
- `)}return W})}}import{createHash as pB}from"crypto";import{realpathSync as cB}from"fs";import{open as dB,readdir as dQ,readFile as iB,realpath as hQ,stat as e6}from"fs/promises";import{homedir as nB}from"os";import{basename as Q4,dirname as c$,extname as aB,isAbsolute as $5,join as M0,relative as W4,resolve as I0,sep as rB}from"path";var iQ=[".git"],nQ=[".mu/AGENTS.md","CLAUDE.local.md","CLAUDE.md","CLAUDE.MD",".claude/CLAUDE.md"],tB=["AGENTS.override.md","AGENTS.md","AGENTS.MD"],Y4="project-instructions-",uQ=5,oB=8192,sB=new Set(["",".md",".txt",".json",".yaml",".yml",".toml",".xml",".csv",".html",".css",".scss",".js",".jsx",".ts",".tsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".sh",".bash",".zsh",".fish",".ps1",".sql",".graphql",".proto",".vue",".svelte",".astro",".php",".lua",".r",".R",".dart",".ex",".exs",".erl",".clj",".hs",".ml",".ini",".cfg",".conf",".properties",".lock",".rst",".adoc",".org",".tex",".diff",".patch"]);function d$($,Z){let Q=W4(I0($),I0(Z));return Q===""||!Q.startsWith(`..${rB}`)&&Q!==".."&&!$5(Q)}function $4($){let Z=I0($);try{return cB.native(Z)}catch{return Z}}function eB($){if(!$||$5($))return!1;let Z=$.replaceAll("\\","/");return Z!==".."&&!Z.startsWith("../")&&!Z.includes("/../")}function $H($){return[...new Set($.filter(eB))]}function Z4($,Z){let Q=pB("sha256");Q.update(Z?"enabled\x00":"disabled\x00");for(let Y of $)Q.update(Y.path),Q.update("\x00"),Q.update(Y.scope),Q.update("\x00"),Q.update(Y.parent??""),Q.update("\x00"),Q.update(Y.content),Q.update("\x00");return Q.digest("hex").slice(0,16)}async function ZH($){let Z=await dB($,"r");try{let Q=Buffer.alloc(oB),{bytesRead:Y}=await Z.read(Q,0,Q.length,0);return Q.subarray(0,Y).toString("utf8")}finally{await Z.close()}}function QH($){for(let Z=$.length-1;Z>=0;Z--){let Q=$[Z];if(Q?.role!=="custom"||!Q.customType.startsWith(Y4))continue;return Q.customType.slice(Y4.length)}return}function eZ($,Z){if(d$(Z,$.path))return W4(Z,$.path)||Q4($.path);return $.path}function mQ($,Z){let Q=Z?"This is the complete current instruction snapshot. It supersedes every earlier project-instructions message in this conversation.":"Codebase and user instructions are shown below. Follow them carefully. Sources are ordered from lower to higher precedence; later instructions override conflicting earlier instructions.",Y=$.sources.length===0?"No instruction files are currently active.":$.sources.map((W)=>{let G=W.scope==="import"&&W.parent?`imported by ${eZ({...W,path:W.parent},$.projectRoot)}`:`${W.scope} instructions`;return`Contents of ${eZ(W,$.projectRoot)} (${G}):
78
+ `:""}`,"utf8")}this.initialized=!0}async ignoredDisposableDirectories(){let $=await this.git("ls-files","--cached","--others","--ignored","--exclude-standard","--directory","-z");if($.exitCode!==0)throw Error(`Could not enumerate ignored checkpoint paths: ${$.stderr.trim()}`);let Z=new Set;for(let Q of $.stdout.split("\x00")){if(Q.length===0)continue;let Y=eB(Q);if(Y)Z.add(Y)}return[...Z].sort()}checkpointPathspecs($){return[...this.excludedPathspecs,...$.map((Z)=>`:(exclude,literal)${Z}`)]}async snapshot($){return this.locked(async()=>{await this.ensure();let Z=await this.ignoredDisposableDirectories();if((await this.git("add","-A","--force","--",".",...this.checkpointPathspecs(Z))).exitCode!==0)return;if((await this.git("commit","--quiet","--allow-empty","--no-verify","-m",$??`checkpoint ${new Date().toISOString()}`)).exitCode!==0)return;let G=(await this.git("rev-parse","HEAD")).stdout.trim();return G.length>0?G:void 0})}async restore($){await this.locked(async()=>{await this.ensure();let Z=await this.git("read-tree","--reset","-u",$);if(Z.exitCode!==0)throw Error(`Could not restore checkpoint ${$}: ${Z.stderr.trim()}`);let Q=await this.ignoredDisposableDirectories(),Y=await this.git("clean","--force","-d","-x","--quiet","-e",".git","-e",mQ(e6),...a0(this.root,this.shadowDir).startsWith("..")?[]:["-e",a0(this.root,this.shadowDir).replaceAll("\\","/")],...a0(this.root,this.lockDir).startsWith("..")?[]:["-e",a0(this.root,this.lockDir).replaceAll("\\","/")],...Q.flatMap((W)=>["-e",mQ(W)]));if(Y.exitCode!==0)throw Error(`Could not clean checkpoint ${$}: ${Y.stderr.trim()}`)})}async restoreResources($,Z){await this.locked(async()=>{await this.ensure();let Q=[...new Set(Z.map((J)=>{let B=$4(this.root,J),K=a0(this.root,B).replaceAll("\\","/");if(K.length===0||K===".."||K.startsWith("../"))throw Error(`Checkpoint resource escapes the workspace: ${J}`);return K}))];if(Q.length===0)return;let Y=Q.map((J)=>`:(literal)${J}`),W=await this.git("reset","--quiet",$,"--",...Y);if(W.exitCode!==0)throw Error(`Could not reset checkpoint ${$}: ${W.stderr.trim()}`);let G=[],X=[];for(let J of Q){let B=await this.git("ls-tree","-z",$,"--",`:(literal)${J}`);if(B.exitCode!==0)throw Error(`Could not inspect checkpoint ${$}: ${B.stderr.trim()}`);(B.stdout.length>0?G:X).push(J)}if(G.length>0){let J=await this.git("checkout","--force",$,"--",...G.map((B)=>`:(literal)${B}`));if(J.exitCode!==0)throw Error(`Could not restore checkpoint ${$}: ${J.stderr.trim()}`)}await Promise.all(X.map((J)=>d$($4(this.root,J),{recursive:!0,force:!0})))})}async diff($,Z){return this.locked(async()=>{if(await this.ensure(),!Z){let G=await this.ignoredDisposableDirectories(),X=await this.git("add","-A","--force","--",".",...this.checkpointPathspecs(G));if(X.exitCode!==0)throw Error(`Could not stage workspace for checkpoint diff: ${X.stderr.trim()}`)}let Q=Z?["diff","--no-renames","--numstat","-z",$,Z]:["diff","--no-renames","--cached","--numstat","-z",$],Y=await this.git(...Q);if(Y.exitCode!==0)throw Error(`Could not calculate checkpoint diff: ${Y.stderr.trim()}`);let W=nB(Y.stdout);for(let G of W){let X=Z?["diff","--no-renames","--unified=3",$,Z,"--",G.path]:["diff","--no-renames","--cached","--unified=3",$,"--",G.path],J=await this.git(...X);if(J.exitCode!==0)throw Error(`Could not calculate checkpoint patch for ${G.path}: ${J.stderr.trim()}`);G.hunks=J.stdout.split(`
79
+ `)}return W})}}import{createHash as $H}from"crypto";import{realpathSync as ZH}from"fs";import{open as QH,readdir as rQ,readFile as YH,realpath as lQ,stat as Z4}from"fs/promises";import{homedir as WH}from"os";import{basename as W4,dirname as i$,extname as GH,isAbsolute as Y5,join as M0,relative as X4,resolve as E0,sep as XH}from"path";var tQ=[".git"],oQ=[".mu/AGENTS.md","CLAUDE.local.md","CLAUDE.md","CLAUDE.MD",".claude/CLAUDE.md"],JH=["AGENTS.override.md","AGENTS.md","AGENTS.MD"],G4="project-instructions-",cQ=5,KH=8192,BH=new Set(["",".md",".txt",".json",".yaml",".yml",".toml",".xml",".csv",".html",".css",".scss",".js",".jsx",".ts",".tsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".sh",".bash",".zsh",".fish",".ps1",".sql",".graphql",".proto",".vue",".svelte",".astro",".php",".lua",".r",".R",".dart",".ex",".exs",".erl",".clj",".hs",".ml",".ini",".cfg",".conf",".properties",".lock",".rst",".adoc",".org",".tex",".diff",".patch"]);function n$($,Z){let Q=X4(E0($),E0(Z));return Q===""||!Q.startsWith(`..${XH}`)&&Q!==".."&&!Y5(Q)}function Q4($){let Z=E0($);try{return ZH.native(Z)}catch{return Z}}function HH($){if(!$||Y5($))return!1;let Z=$.replaceAll("\\","/");return Z!==".."&&!Z.startsWith("../")&&!Z.includes("/../")}function VH($){return[...new Set($.filter(HH))]}function Y4($,Z){let Q=$H("sha256");Q.update(Z?"enabled\x00":"disabled\x00");for(let Y of $)Q.update(Y.path),Q.update("\x00"),Q.update(Y.scope),Q.update("\x00"),Q.update(Y.parent??""),Q.update("\x00"),Q.update(Y.content),Q.update("\x00");return Q.digest("hex").slice(0,16)}async function zH($){let Z=await QH($,"r");try{let Q=Buffer.alloc(KH),{bytesRead:Y}=await Z.read(Q,0,Q.length,0);return Q.subarray(0,Y).toString("utf8")}finally{await Z.close()}}function FH($){for(let Z=$.length-1;Z>=0;Z--){let Q=$[Z];if(Q?.role!=="custom"||!Q.customType.startsWith(G4))continue;return Q.customType.slice(G4.length)}return}function Q5($,Z){if(n$(Z,$.path))return X4(Z,$.path)||W4($.path);return $.path}function dQ($,Z){let Q=Z?"This is the complete current instruction snapshot. It supersedes every earlier project-instructions message in this conversation.":"Codebase and user instructions are shown below. Follow them carefully. Sources are ordered from lower to higher precedence; later instructions override conflicting earlier instructions.",Y=$.sources.length===0?"No instruction files are currently active.":$.sources.map((W)=>{let G=W.scope==="import"&&W.parent?`imported by ${Q5({...W,path:W.parent},$.projectRoot)}`:`${W.scope} instructions`;return`Contents of ${Q5(W,$.projectRoot)} (${G}):
80
80
 
81
81
  ${W.content.trim()}`}).join(`
82
82
 
83
- `);return g$(`${Y4}${$.signature}`,`${Q}
83
+ `);return u$(`${G4}${$.signature}`,`${Q}
84
84
 
85
- ${Y}`)}function lQ($){let Z=$.replaceAll(`\r
85
+ ${Y}`)}function iQ($){let Z=$.replaceAll(`\r
86
86
  `,`
87
87
  `);if(!Z.startsWith(`---
88
88
  `))return{content:$};let Q=Z.indexOf(`
89
89
  ---
90
90
  `,4);if(Q===-1)return{content:$};let Y=Z.slice(4,Q),W=Z.slice(Q+5),G=Y.split(`
91
- `),X=[],J=!1;for(let B of G){let K=B.match(/^paths?\s*:\s*(.*)$/i);if(K){J=!0;let z=K[1]?.trim()??"";if(z){let F=z.startsWith("[")&&z.endsWith("]")?z.slice(1,-1):z;X.push(...F.split(",").map((D)=>D.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean))}continue}if(!J)continue;let V=B.match(/^\s*-\s*(.+?)\s*$/);if(V?.[1]){X.push(V[1].replace(/^['"]|['"]$/g,""));continue}if(B.trim())J=!1}return{content:W,...X.length>0?{patterns:X}:{}}}function YH($){let Z="",Q=$.replaceAll("\\","/").replace(/^\.\//,"");if(!Q||Q.startsWith("!"))return;for(let Y=0;Y<Q.length;Y++){let W=Q[Y];if(W==="*")if(Q[Y+1]==="*")if(Y++,Q[Y+1]==="/")Y++,Z+="(?:.*/)?";else Z+=".*";else Z+="[^/]*";else if(W==="?")Z+="[^/]";else Z+=W?.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")??""}try{return new RegExp(`^${Z}$`)}catch{return}}function WH($,Z){if(!$.patterns||$.patterns.length===0)return!0;let Q=W4($.base,Z).replaceAll("\\","/");if(!Q||Q===".."||Q.startsWith("../")||$5(Q))return!1;let Y=!1;for(let W of $.patterns){let G=W.startsWith("!");if(YH(G?W.slice(1):W)?.test(Q))Y=!G}return Y}function GH($){let Z=new Set,Q;for(let Y of $.split(/\r?\n/)){let W=Y.match(/^\s*(`{3,}|~{3,})/);if(W?.[1]){let J=W[1][0];Q=Q===J?void 0:Q??J;continue}if(Q)continue;let G=Y.split(/(`[^`]*`)/g).filter((J)=>!J.startsWith("`")).join(" "),X=/(?:^|\s)@((?:\\ |[^\s`])+)/g;for(let J of G.matchAll(X)){let B=J[1]?.replace(/\\ /g," ");if(!B)continue;B=B.replace(/[),.;:!?]+$/,"");let K=B.indexOf("#");if(K>=0)B=B.slice(0,K);if(B&&!B.startsWith("@"))Z.add(B)}}return[...Z]}function XH($){return $<1024?`${$} B`:`${($/1024).toFixed(1)} KiB`}function pQ($){return $<1000?`~${$} tokens`:`~${($/1000).toFixed(1)}k tokens`}class Z5{root;home;settings;managedPaths;settingDiagnostics;current;nestedSources=new Map;nestedSerial=Promise.resolve();activeSessionId;constructor($){this.root=$4($.root),this.home=$4($.home??nB());let Z=[],Q=(G,X,J)=>{if(G===void 0)return X;if(typeof G==="boolean")return G;return Z.push({level:"warning",message:`instructions.${J} must be a boolean; using ${X}`}),X},Y=(G,X,J)=>{if(G===void 0)return X;if(!Array.isArray(G)||G.some((K)=>typeof K!=="string"))return Z.push({level:"warning",message:`instructions.${J} must be an array of relative filenames; using defaults`}),X;let B=$H(G);if(B.length!==G.length)Z.push({level:"warning",message:`instructions.${J} ignored unsafe or duplicate entries`});return B};this.settings={enabled:Q($.enabled,!0,"enabled"),fallbackFilenames:Y($.fallbackFilenames,nQ,"fallbackFilenames"),projectRootMarkers:Y($.projectRootMarkers,iQ,"projectRootMarkers"),imports:Q($.imports,!0,"imports"),claudeRules:Q($.claudeRules,!0,"claudeRules")},this.settingDiagnostics=Z;let W=process.platform==="win32"?process.env.PROGRAMDATA?[M0(process.env.PROGRAMDATA,"mu","AGENTS.md")]:[]:["/etc/mu/AGENTS.md"];this.managedPaths=($.managedPaths??W).map((G)=>I0(G)),this.current={enabled:this.settings.enabled,projectRoot:this.root,sources:[],diagnostics:[],bytes:0,signature:Z4([],this.settings.enabled)}}get snapshot(){return{...this.current,sources:this.current.sources.map(($)=>({...$})),diagnostics:this.current.diagnostics.map(($)=>({...$}))}}async reload($={}){if($.resetNested)this.nestedSources.clear();let Z=this.settingDiagnostics.map((J)=>({...J})),Q=await this.findProjectRoot(Z);if(!this.settings.enabled)return this.current={enabled:!1,projectRoot:Q,sources:[],diagnostics:Z,bytes:0,signature:Z4([],!1)},this.snapshot;let Y={processed:new Set,diagnostics:Z,sources:[]};for(let J of this.managedPaths)await this.loadSource(J,"managed",Y,void 0,c$(J),0);let W=await this.firstReadableCandidate([M0(this.home,".mu","AGENTS.override.md"),M0(this.home,".mu","AGENTS.md"),M0(this.home,".mu","AGENTS.MD"),M0(this.home,".claude","CLAUDE.md")],Z);if(W)await this.loadSource(W,"global",Y,void 0,this.home,0);let G=this.dirsBetween(Q,this.root);for(let J of G){for(let K of await this.rulesForDirectory(J,Z))if(!K.patterns)await this.loadSource(K.path,"rule",Y,void 0,Q,0);let B=await this.primaryForDirectory(J,Z);if(B){let K=Q4(B)==="CLAUDE.local.md"?"local":"project";await this.loadSource(B,K,Y,void 0,Q,0)}}let X=Y.sources.reduce((J,B)=>J+Buffer.byteLength(B.content),0);return this.current={enabled:!0,projectRoot:Q,sources:Y.sources,diagnostics:Z,bytes:X,signature:Z4(Y.sources,!0)},this.snapshot}async refreshedMessages($,Z){let Q=QH($);if(Z!==void 0&&Z!==this.activeSessionId)this.activeSessionId=Z,this.nestedSources.clear();else if(Z===void 0&&$.length===0)this.nestedSources.clear();let Y=await this.reload();if(Y.sources.length===0&&Q===void 0)return[];if(Q===Y.signature)return[];return[mQ(Y,Q!==void 0)]}async instructionsForPath($){let Z={text:"",sources:[]},Q=this.nestedSerial,Y;this.nestedSerial=new Promise((W)=>{Y=W}),await Q;try{Z=await this.loadNested($)}finally{Y?.()}return Z}formatStatus($="instructions"){if(!this.current.enabled)return`${$} disabled
92
- Use project/user config or remove --no-instructions to enable loading.`;let Z=[...this.current.sources,...this.nestedSources.values()],Q=this.current.bytes+[...this.nestedSources.values()].reduce((G,X)=>G+Buffer.byteLength(X.content),0),Y=l([mQ(this.current,!1)])+[...this.nestedSources.values()].reduce((G,X)=>G+pZ(X.content),0),W=[`${$} \xB7 ${Z.length} file${Z.length===1?"":"s"} \xB7 ${pQ(Y)} \xB7 ${XH(Q)}`,...Z.map((G)=>` ${G.scope.padEnd(7)} ${eZ(G,this.current.projectRoot)} \xB7 ${pQ(pZ(G.content))}`)];if(Z.length===0)W.push(" no instruction files found");if(this.current.diagnostics.length>0)W.push("warnings:",...this.current.diagnostics.map((G)=>` ${G.path?`${G.path}: `:""}${G.message}`));return W.push("precedence: managed < global < outer project < inner project; AGENTS.override.md wins within one directory"),W.join(`
93
- `)}async discoverPrimaryFiles($){let Z=[],Q=$?I0($):await this.findProjectRoot(Z),Y=[];for(let W of this.dirsBetween(Q,this.root)){let G=await this.primaryForDirectory(W,Z);if(G)Y.push(G)}return Y}async findProjectRoot($){if(this.settings.projectRootMarkers.length===0)return this.root;let Z=this.root;for(;;){for(let Y of this.settings.projectRootMarkers){let W=M0(Z,Y);try{return await e6(W),Z}catch(G){let X=G.code;if(X!=="ENOENT"&&X!=="ENOTDIR")$.push({level:"warning",path:W,message:`could not inspect project-root marker: ${G instanceof Error?G.message:String(G)}`})}}let Q=c$(Z);if(Q===Z)return this.root;Z=Q}}dirsBetween($,Z){if(!d$($,Z))return[Z];let Q=[],Y=Z;for(;;){if(Q.push(Y),Y===$)break;let W=c$(Y);if(W===Y)break;Y=W}return Q.reverse()}async primaryForDirectory($,Z){return this.firstReadableCandidate([...tB.map((Q)=>M0($,Q)),...this.settings.fallbackFilenames.map((Q)=>M0($,Q))],Z)}async firstReadableCandidate($,Z){for(let Q of $)try{if((await e6(Q)).isFile())return Q;Z.push({level:"warning",path:Q,message:"instruction candidate is not a file"})}catch(Y){let W=Y.code;if(W==="ENOENT"||W==="ENOTDIR")continue;Z.push({level:"warning",path:Q,message:`could not inspect instruction file: ${Y instanceof Error?Y.message:String(Y)}`})}return}async ruleFiles($,Z){let Q=[],Y=async(W,G)=>{let X;try{X=await hQ(W)}catch(B){let K=B.code;if(K==="ENOENT"||K==="ENOTDIR")return;Z.push({level:"warning",path:W,message:`could not read rules directory: ${B instanceof Error?B.message:String(B)}`});return}if(G.has(X))return;G.add(X);let J;try{J=await dQ(W,{withFileTypes:!0})}catch(B){Z.push({level:"warning",path:W,message:`could not list rules directory: ${B instanceof Error?B.message:String(B)}`});return}for(let B of J.sort((K,V)=>K.name.localeCompare(V.name))){let K=M0(W,B.name),V=B.isDirectory(),z=B.isFile();if(B.isSymbolicLink())try{let F=await e6(K);V=F.isDirectory(),z=F.isFile()}catch(F){Z.push({level:"warning",path:K,message:`could not inspect rule symlink: ${F instanceof Error?F.message:String(F)}`});continue}if(V)await Y(K,G);else if(z&&B.name.toLowerCase().endsWith(".md"))Q.push(K)}};return await Y($,new Set),Q}async rulesForDirectory($,Z){let Q=[M0($,".mu","rules")];if(this.settings.claudeRules)Q.push(M0($,".claude","rules"));let Y=[];for(let W of Q)for(let G of await this.ruleFiles(W,Z))try{let X=lQ(await ZH(G));Y.push({path:G,base:$,...X.patterns?{patterns:X.patterns}:{}})}catch(X){Z.push({level:"warning",path:G,message:`could not read rule frontmatter: ${X instanceof Error?X.message:String(X)}`})}return Y}async loadSource($,Z,Q,Y,W,G){if(G>uQ){Q.diagnostics.push({level:"warning",path:$,message:`import depth exceeds ${uQ}`});return}let X;try{X=await hQ($)}catch(z){let F=z.code;if(Y||F!=="ENOENT"&&F!=="ENOTDIR")Q.diagnostics.push({level:"warning",path:$,message:F==="ENOENT"?`import referenced by ${Y} does not exist`:`could not resolve instruction file: ${z instanceof Error?z.message:String(z)}`});return}if(Q.processed.has(X))return;if(!d$(W,X)){Q.diagnostics.push({level:"warning",path:$,message:`external import is outside the allowed instruction root ${W}`});return}if(!sB.has(aB(X))){Q.diagnostics.push({level:"warning",path:$,message:"skipped non-text instruction import"});return}Q.processed.add(X);let J;try{J=await iB(X,"utf8")}catch(z){Q.diagnostics.push({level:"warning",path:$,message:`could not read instruction file: ${z instanceof Error?z.message:String(z)}`});return}if(J.includes("\x00")){Q.diagnostics.push({level:"warning",path:$,message:"skipped binary instruction file"});return}let B=lQ(J),K=B.content.trim(),V=K?{path:X,content:K,scope:Z,...Y?{parent:Y}:{}}:void 0;if(this.settings.imports)for(let z of GH(B.content)){let F=z.startsWith("~/")?M0(this.home,z.slice(2)):$5(z)?z:I0(c$(X),z);await this.loadSource(F,"import",Q,X,Z==="global"?this.home:W,G+1)}if(V)Q.sources.push(V)}async loadNested($){if(!this.settings.enabled)return{text:"",sources:[]};let Z=I0($);if(!d$(this.root,Z))return{text:"",sources:[]};let Q=c$(Z),Y=this.current.projectRoot,W=this.current.diagnostics,G=[];for(let K of this.dirsBetween(Y,Q)){for(let V of await this.rulesForDirectory(K,W))if(I0(V.path)!==Z&&WH(V,Z))G.push({path:V.path,scope:"rule",allowedRoot:Y});if(d$(this.root,K)&&K!==this.root){let V=await this.primaryForDirectory(K,W);if(V&&I0(V)!==Z)G.push({path:V,scope:Q4(V)==="CLAUDE.local.md"?"local":"project",allowedRoot:Y})}}let J={processed:new Set([...this.current.sources.map((K)=>$4(K.path)),...this.nestedSources.keys()]),diagnostics:W,sources:[]};for(let K of G)await this.loadSource(K.path,K.scope,J,void 0,K.allowedRoot,0);for(let K of J.sources)this.nestedSources.set(I0(K.path),K);if(J.sources.length===0)return{text:"",sources:[]};return{text:["<system-reminder>","Additional instructions apply to the file just read. Later sources have higher precedence:","",...J.sources.flatMap((K)=>[`Contents of ${eZ(K,Y)}:`,K.content.trim(),""]),"</system-reminder>"].join(`
94
- `),sources:J.sources.map((K)=>K.path)}}}async function cQ($,Z){try{let Q=Bun.spawn(["git",...$],{cwd:Z,stdout:"pipe",stderr:"ignore",windowsHide:!0}),Y=await new Response(Q.stdout).text();return await Q.exited===0?Y:void 0}catch{return}}async function G4($){let Z={directory:I0($),platform:process.platform,date:new Date().toISOString().slice(0,10)},Y=(await cQ(["rev-parse","--abbrev-ref","HEAD"],$))?.trim().split(/\r?\n/)[0];if(Y){Z.branch=Y;let W=await cQ(["status","--porcelain"],$);if(W!==void 0)Z.uncommittedFiles=String(W.split(/\r?\n/).filter(Boolean).length)}try{let W=await dQ($);Z.topLevelEntries=W.filter((G)=>!G.startsWith(".")).sort().slice(0,40).join(", ")}catch{}return Z}function X4($){let Z=Object.entries($).map(([Q,Y])=>`${Q}: ${Y}`);return g$("environment",`Session environment:
91
+ `),X=[],J=!1;for(let B of G){let K=B.match(/^paths?\s*:\s*(.*)$/i);if(K){J=!0;let z=K[1]?.trim()??"";if(z){let F=z.startsWith("[")&&z.endsWith("]")?z.slice(1,-1):z;X.push(...F.split(",").map((D)=>D.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean))}continue}if(!J)continue;let V=B.match(/^\s*-\s*(.+?)\s*$/);if(V?.[1]){X.push(V[1].replace(/^['"]|['"]$/g,""));continue}if(B.trim())J=!1}return{content:W,...X.length>0?{patterns:X}:{}}}function LH($){let Z="",Q=$.replaceAll("\\","/").replace(/^\.\//,"");if(!Q||Q.startsWith("!"))return;for(let Y=0;Y<Q.length;Y++){let W=Q[Y];if(W==="*")if(Q[Y+1]==="*")if(Y++,Q[Y+1]==="/")Y++,Z+="(?:.*/)?";else Z+=".*";else Z+="[^/]*";else if(W==="?")Z+="[^/]";else Z+=W?.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")??""}try{return new RegExp(`^${Z}$`)}catch{return}}function DH($,Z){if(!$.patterns||$.patterns.length===0)return!0;let Q=X4($.base,Z).replaceAll("\\","/");if(!Q||Q===".."||Q.startsWith("../")||Y5(Q))return!1;let Y=!1;for(let W of $.patterns){let G=W.startsWith("!");if(LH(G?W.slice(1):W)?.test(Q))Y=!G}return Y}function qH($){let Z=new Set,Q;for(let Y of $.split(/\r?\n/)){let W=Y.match(/^\s*(`{3,}|~{3,})/);if(W?.[1]){let J=W[1][0];Q=Q===J?void 0:Q??J;continue}if(Q)continue;let G=Y.split(/(`[^`]*`)/g).filter((J)=>!J.startsWith("`")).join(" "),X=/(?:^|\s)@((?:\\ |[^\s`])+)/g;for(let J of G.matchAll(X)){let B=J[1]?.replace(/\\ /g," ");if(!B)continue;B=B.replace(/[),.;:!?]+$/,"");let K=B.indexOf("#");if(K>=0)B=B.slice(0,K);if(B&&!B.startsWith("@"))Z.add(B)}}return[...Z]}function UH($){return $<1024?`${$} B`:`${($/1024).toFixed(1)} KiB`}function nQ($){return $<1000?`~${$} tokens`:`~${($/1000).toFixed(1)}k tokens`}class W5{root;home;settings;managedPaths;settingDiagnostics;current;nestedSources=new Map;nestedSerial=Promise.resolve();activeSessionId;constructor($){this.root=Q4($.root),this.home=Q4($.home??WH());let Z=[],Q=(G,X,J)=>{if(G===void 0)return X;if(typeof G==="boolean")return G;return Z.push({level:"warning",message:`instructions.${J} must be a boolean; using ${X}`}),X},Y=(G,X,J)=>{if(G===void 0)return X;if(!Array.isArray(G)||G.some((K)=>typeof K!=="string"))return Z.push({level:"warning",message:`instructions.${J} must be an array of relative filenames; using defaults`}),X;let B=VH(G);if(B.length!==G.length)Z.push({level:"warning",message:`instructions.${J} ignored unsafe or duplicate entries`});return B};this.settings={enabled:Q($.enabled,!0,"enabled"),fallbackFilenames:Y($.fallbackFilenames,oQ,"fallbackFilenames"),projectRootMarkers:Y($.projectRootMarkers,tQ,"projectRootMarkers"),imports:Q($.imports,!0,"imports"),claudeRules:Q($.claudeRules,!0,"claudeRules")},this.settingDiagnostics=Z;let W=process.platform==="win32"?process.env.PROGRAMDATA?[M0(process.env.PROGRAMDATA,"mu","AGENTS.md")]:[]:["/etc/mu/AGENTS.md"];this.managedPaths=($.managedPaths??W).map((G)=>E0(G)),this.current={enabled:this.settings.enabled,projectRoot:this.root,sources:[],diagnostics:[],bytes:0,signature:Y4([],this.settings.enabled)}}get snapshot(){return{...this.current,sources:this.current.sources.map(($)=>({...$})),diagnostics:this.current.diagnostics.map(($)=>({...$}))}}async reload($={}){if($.resetNested)this.nestedSources.clear();let Z=this.settingDiagnostics.map((J)=>({...J})),Q=await this.findProjectRoot(Z);if(!this.settings.enabled)return this.current={enabled:!1,projectRoot:Q,sources:[],diagnostics:Z,bytes:0,signature:Y4([],!1)},this.snapshot;let Y={processed:new Set,diagnostics:Z,sources:[]};for(let J of this.managedPaths)await this.loadSource(J,"managed",Y,void 0,i$(J),0);let W=await this.firstReadableCandidate([M0(this.home,".mu","AGENTS.override.md"),M0(this.home,".mu","AGENTS.md"),M0(this.home,".mu","AGENTS.MD"),M0(this.home,".claude","CLAUDE.md")],Z);if(W)await this.loadSource(W,"global",Y,void 0,this.home,0);let G=this.dirsBetween(Q,this.root);for(let J of G){for(let K of await this.rulesForDirectory(J,Z))if(!K.patterns)await this.loadSource(K.path,"rule",Y,void 0,Q,0);let B=await this.primaryForDirectory(J,Z);if(B){let K=W4(B)==="CLAUDE.local.md"?"local":"project";await this.loadSource(B,K,Y,void 0,Q,0)}}let X=Y.sources.reduce((J,B)=>J+Buffer.byteLength(B.content),0);return this.current={enabled:!0,projectRoot:Q,sources:Y.sources,diagnostics:Z,bytes:X,signature:Y4(Y.sources,!0)},this.snapshot}async refreshedMessages($,Z){let Q=FH($);if(Z!==void 0&&Z!==this.activeSessionId)this.activeSessionId=Z,this.nestedSources.clear();else if(Z===void 0&&$.length===0)this.nestedSources.clear();let Y=await this.reload();if(Y.sources.length===0&&Q===void 0)return[];if(Q===Y.signature)return[];return[dQ(Y,Q!==void 0)]}async instructionsForPath($){let Z={text:"",sources:[]},Q=this.nestedSerial,Y;this.nestedSerial=new Promise((W)=>{Y=W}),await Q;try{Z=await this.loadNested($)}finally{Y?.()}return Z}formatStatus($="instructions"){if(!this.current.enabled)return`${$} disabled
92
+ Use project/user config or remove --no-instructions to enable loading.`;let Z=[...this.current.sources,...this.nestedSources.values()],Q=this.current.bytes+[...this.nestedSources.values()].reduce((G,X)=>G+Buffer.byteLength(X.content),0),Y=p([dQ(this.current,!1)])+[...this.nestedSources.values()].reduce((G,X)=>G+iZ(X.content),0),W=[`${$} \xB7 ${Z.length} file${Z.length===1?"":"s"} \xB7 ${nQ(Y)} \xB7 ${UH(Q)}`,...Z.map((G)=>` ${G.scope.padEnd(7)} ${Q5(G,this.current.projectRoot)} \xB7 ${nQ(iZ(G.content))}`)];if(Z.length===0)W.push(" no instruction files found");if(this.current.diagnostics.length>0)W.push("warnings:",...this.current.diagnostics.map((G)=>` ${G.path?`${G.path}: `:""}${G.message}`));return W.push("precedence: managed < global < outer project < inner project; AGENTS.override.md wins within one directory"),W.join(`
93
+ `)}async discoverPrimaryFiles($){let Z=[],Q=$?E0($):await this.findProjectRoot(Z),Y=[];for(let W of this.dirsBetween(Q,this.root)){let G=await this.primaryForDirectory(W,Z);if(G)Y.push(G)}return Y}async findProjectRoot($){if(this.settings.projectRootMarkers.length===0)return this.root;let Z=this.root;for(;;){for(let Y of this.settings.projectRootMarkers){let W=M0(Z,Y);try{return await Z4(W),Z}catch(G){let X=G.code;if(X!=="ENOENT"&&X!=="ENOTDIR")$.push({level:"warning",path:W,message:`could not inspect project-root marker: ${G instanceof Error?G.message:String(G)}`})}}let Q=i$(Z);if(Q===Z)return this.root;Z=Q}}dirsBetween($,Z){if(!n$($,Z))return[Z];let Q=[],Y=Z;for(;;){if(Q.push(Y),Y===$)break;let W=i$(Y);if(W===Y)break;Y=W}return Q.reverse()}async primaryForDirectory($,Z){return this.firstReadableCandidate([...JH.map((Q)=>M0($,Q)),...this.settings.fallbackFilenames.map((Q)=>M0($,Q))],Z)}async firstReadableCandidate($,Z){for(let Q of $)try{if((await Z4(Q)).isFile())return Q;Z.push({level:"warning",path:Q,message:"instruction candidate is not a file"})}catch(Y){let W=Y.code;if(W==="ENOENT"||W==="ENOTDIR")continue;Z.push({level:"warning",path:Q,message:`could not inspect instruction file: ${Y instanceof Error?Y.message:String(Y)}`})}return}async ruleFiles($,Z){let Q=[],Y=async(W,G)=>{let X;try{X=await lQ(W)}catch(B){let K=B.code;if(K==="ENOENT"||K==="ENOTDIR")return;Z.push({level:"warning",path:W,message:`could not read rules directory: ${B instanceof Error?B.message:String(B)}`});return}if(G.has(X))return;G.add(X);let J;try{J=await rQ(W,{withFileTypes:!0})}catch(B){Z.push({level:"warning",path:W,message:`could not list rules directory: ${B instanceof Error?B.message:String(B)}`});return}for(let B of J.sort((K,V)=>K.name.localeCompare(V.name))){let K=M0(W,B.name),V=B.isDirectory(),z=B.isFile();if(B.isSymbolicLink())try{let F=await Z4(K);V=F.isDirectory(),z=F.isFile()}catch(F){Z.push({level:"warning",path:K,message:`could not inspect rule symlink: ${F instanceof Error?F.message:String(F)}`});continue}if(V)await Y(K,G);else if(z&&B.name.toLowerCase().endsWith(".md"))Q.push(K)}};return await Y($,new Set),Q}async rulesForDirectory($,Z){let Q=[M0($,".mu","rules")];if(this.settings.claudeRules)Q.push(M0($,".claude","rules"));let Y=[];for(let W of Q)for(let G of await this.ruleFiles(W,Z))try{let X=iQ(await zH(G));Y.push({path:G,base:$,...X.patterns?{patterns:X.patterns}:{}})}catch(X){Z.push({level:"warning",path:G,message:`could not read rule frontmatter: ${X instanceof Error?X.message:String(X)}`})}return Y}async loadSource($,Z,Q,Y,W,G){if(G>cQ){Q.diagnostics.push({level:"warning",path:$,message:`import depth exceeds ${cQ}`});return}let X;try{X=await lQ($)}catch(z){let F=z.code;if(Y||F!=="ENOENT"&&F!=="ENOTDIR")Q.diagnostics.push({level:"warning",path:$,message:F==="ENOENT"?`import referenced by ${Y} does not exist`:`could not resolve instruction file: ${z instanceof Error?z.message:String(z)}`});return}if(Q.processed.has(X))return;if(!n$(W,X)){Q.diagnostics.push({level:"warning",path:$,message:`external import is outside the allowed instruction root ${W}`});return}if(!BH.has(GH(X))){Q.diagnostics.push({level:"warning",path:$,message:"skipped non-text instruction import"});return}Q.processed.add(X);let J;try{J=await YH(X,"utf8")}catch(z){Q.diagnostics.push({level:"warning",path:$,message:`could not read instruction file: ${z instanceof Error?z.message:String(z)}`});return}if(J.includes("\x00")){Q.diagnostics.push({level:"warning",path:$,message:"skipped binary instruction file"});return}let B=iQ(J),K=B.content.trim(),V=K?{path:X,content:K,scope:Z,...Y?{parent:Y}:{}}:void 0;if(this.settings.imports)for(let z of qH(B.content)){let F=z.startsWith("~/")?M0(this.home,z.slice(2)):Y5(z)?z:E0(i$(X),z);await this.loadSource(F,"import",Q,X,Z==="global"?this.home:W,G+1)}if(V)Q.sources.push(V)}async loadNested($){if(!this.settings.enabled)return{text:"",sources:[]};let Z=E0($);if(!n$(this.root,Z))return{text:"",sources:[]};let Q=i$(Z),Y=this.current.projectRoot,W=this.current.diagnostics,G=[];for(let K of this.dirsBetween(Y,Q)){for(let V of await this.rulesForDirectory(K,W))if(E0(V.path)!==Z&&DH(V,Z))G.push({path:V.path,scope:"rule",allowedRoot:Y});if(n$(this.root,K)&&K!==this.root){let V=await this.primaryForDirectory(K,W);if(V&&E0(V)!==Z)G.push({path:V,scope:W4(V)==="CLAUDE.local.md"?"local":"project",allowedRoot:Y})}}let J={processed:new Set([...this.current.sources.map((K)=>Q4(K.path)),...this.nestedSources.keys()]),diagnostics:W,sources:[]};for(let K of G)await this.loadSource(K.path,K.scope,J,void 0,K.allowedRoot,0);for(let K of J.sources)this.nestedSources.set(E0(K.path),K);if(J.sources.length===0)return{text:"",sources:[]};return{text:["<system-reminder>","Additional instructions apply to the file just read. Later sources have higher precedence:","",...J.sources.flatMap((K)=>[`Contents of ${Q5(K,Y)}:`,K.content.trim(),""]),"</system-reminder>"].join(`
94
+ `),sources:J.sources.map((K)=>K.path)}}}async function aQ($,Z){try{let Q=Bun.spawn(["git",...$],{cwd:Z,stdout:"pipe",stderr:"ignore",windowsHide:!0}),Y=await new Response(Q.stdout).text();return await Q.exited===0?Y:void 0}catch{return}}async function J4($){let Z={directory:E0($),platform:process.platform,date:new Date().toISOString().slice(0,10)},Y=(await aQ(["rev-parse","--abbrev-ref","HEAD"],$))?.trim().split(/\r?\n/)[0];if(Y){Z.branch=Y;let W=await aQ(["status","--porcelain"],$);if(W!==void 0)Z.uncommittedFiles=String(W.split(/\r?\n/).filter(Boolean).length)}try{let W=await rQ($);Z.topLevelEntries=W.filter((G)=>!G.startsWith(".")).sort().slice(0,40).join(", ")}catch{}return Z}function K4($){let Z=Object.entries($).map(([Q,Y])=>`${Q}: ${Y}`);return u$("environment",`Session environment:
95
95
  ${Z.join(`
96
- `)}`)}import{mkdir as JH,readFile as KH,writeFile as BH}from"fs/promises";import{dirname as HH,join as VH}from"path";import{z as X0}from"zod";var K4=[{permission:"*",pattern:"*",action:"ask"},{permission:"read",pattern:"*",action:"allow"},{permission:"ls",pattern:"*",action:"allow"},{permission:"todo",pattern:"*",action:"allow"},{permission:"task_output",pattern:"*",action:"allow"},{permission:"task_list",pattern:"*",action:"allow"},{permission:"bash:inspect",pattern:"*",action:"allow"}],B4=[{id:"default",label:"default",description:"Read freely; ask before edits and commands.",rules:[]},{id:"accept-edits",label:"accept edits",description:"Read and edit files freely; ask before commands.",tone:"permissive",rules:[{permission:"write",pattern:"*",action:"allow"},{permission:"edit",pattern:"*",action:"allow"}]},{id:"plan-readonly",label:"plan (read-only)",description:"Allow inspection and planning; deny file, command, and task mutations.",tone:"restrictive",rules:[{permission:"write",pattern:"*",action:"deny"},{permission:"edit",pattern:"*",action:"deny"},{permission:"bash",pattern:"*",action:"deny"},{permission:"bash:inspect",pattern:"*",action:"allow"},{permission:"task_write_stdin",pattern:"*",action:"deny"},{permission:"task_kill",pattern:"*",action:"deny"},{permission:"task_detach",pattern:"*",action:"deny"}]},{id:"yolo",label:"full access",description:"Allow every tool call without asking.",tone:"unrestricted",rules:[{permission:"*",pattern:"*",action:"allow"}]}],zH=X0.object({permission:X0.string().min(1),pattern:X0.string(),action:X0.enum(["allow","ask","deny"])}),H4=X0.object({enabled:X0.boolean().optional(),fallbackFilenames:X0.array(X0.string().min(1)).optional(),projectRootMarkers:X0.array(X0.string().min(1)).optional(),imports:X0.boolean().optional(),claudeRules:X0.boolean().optional()}),FH=X0.object({permissions:X0.array(zH).optional(),model:X0.string().min(1).optional(),instructions:H4.optional()}).loose();function J4($){return VH($,".mu","config.json")}async function Q5($,Z){try{let Q=await KH(J4($),"utf8"),Y=JSON.parse(Q),W=FH.safeParse(Y);if(!W.success){let V=W.error.issues.map((z)=>`${z.path.join(".")||"config"}: ${z.message}`).join("; ");throw Error(`Invalid project config at ${J4($)}: ${V}`)}let{permissions:G,model:X,instructions:J,...B}=W.data,K=J?{...J.enabled!==void 0?{enabled:J.enabled}:{},...J.fallbackFilenames!==void 0?{fallbackFilenames:J.fallbackFilenames}:{},...J.projectRootMarkers!==void 0?{projectRootMarkers:J.projectRootMarkers}:{},...J.imports!==void 0?{imports:J.imports}:{},...J.claudeRules!==void 0?{claudeRules:J.claudeRules}:{}}:void 0;return{...B,...G!==void 0?{permissions:G}:{},...X!==void 0?{model:X}:{},...K!==void 0?{instructions:K}:{}}}catch(Q){if(Q.code==="ENOENT")return{};if(!Z)throw Q;return Z(Q instanceof Error?Q.message:String(Q)),{}}}function V4(...$){return $.flatMap((Z)=>Z??[])}async function z4($,Z,Q){let Y=J4($),W=await Q5($),G=W.permissions??[];if(!G.some((J)=>J.permission===Z&&J.pattern===Q&&J.action==="allow"))G.push({permission:Z,pattern:Q,action:"allow"});await JH(HH(Y),{recursive:!0}),await BH(Y,`${JSON.stringify({...W,permissions:G},null,2)}
97
- `,"utf8")}function F4($){let Z=[{text:`You are mu, an expert software engineer working in a codebase through tools.
96
+ `)}`)}import{mkdir as AH,readFile as NH,writeFile as MH}from"fs/promises";import{dirname as OH,join as jH}from"path";import{z as X0}from"zod";var H4=[{permission:"*",pattern:"*",action:"ask"},{permission:"read",pattern:"*",action:"allow"},{permission:"ls",pattern:"*",action:"allow"},{permission:"todo",pattern:"*",action:"allow"},{permission:"task_output",pattern:"*",action:"allow"},{permission:"task_list",pattern:"*",action:"allow"},{permission:"bash:inspect",pattern:"*",action:"allow"}],V4=[{id:"default",label:"default",description:"Read freely; ask before edits and commands.",rules:[]},{id:"accept-edits",label:"accept edits",description:"Read and edit files freely; ask before commands.",tone:"permissive",rules:[{permission:"write",pattern:"*",action:"allow"},{permission:"edit",pattern:"*",action:"allow"}]},{id:"plan-readonly",label:"plan (read-only)",description:"Allow inspection and planning; deny file, command, and task mutations.",tone:"restrictive",rules:[{permission:"write",pattern:"*",action:"deny"},{permission:"edit",pattern:"*",action:"deny"},{permission:"bash",pattern:"*",action:"deny"},{permission:"bash:inspect",pattern:"*",action:"allow"},{permission:"task_write_stdin",pattern:"*",action:"deny"},{permission:"task_kill",pattern:"*",action:"deny"},{permission:"task_detach",pattern:"*",action:"deny"}]},{id:"yolo",label:"full access",description:"Allow every tool call without asking.",tone:"unrestricted",rules:[{permission:"*",pattern:"*",action:"allow"}]}],PH=X0.object({permission:X0.string().min(1),pattern:X0.string(),action:X0.enum(["allow","ask","deny"])}),z4=X0.object({enabled:X0.boolean().optional(),fallbackFilenames:X0.array(X0.string().min(1)).optional(),projectRootMarkers:X0.array(X0.string().min(1)).optional(),imports:X0.boolean().optional(),claudeRules:X0.boolean().optional()}),wH=X0.object({permissions:X0.array(PH).optional(),model:X0.string().min(1).optional(),instructions:z4.optional()}).loose();function B4($){return jH($,".mu","config.json")}async function G5($,Z){try{let Q=await NH(B4($),"utf8"),Y=JSON.parse(Q),W=wH.safeParse(Y);if(!W.success){let V=W.error.issues.map((z)=>`${z.path.join(".")||"config"}: ${z.message}`).join("; ");throw Error(`Invalid project config at ${B4($)}: ${V}`)}let{permissions:G,model:X,instructions:J,...B}=W.data,K=J?{...J.enabled!==void 0?{enabled:J.enabled}:{},...J.fallbackFilenames!==void 0?{fallbackFilenames:J.fallbackFilenames}:{},...J.projectRootMarkers!==void 0?{projectRootMarkers:J.projectRootMarkers}:{},...J.imports!==void 0?{imports:J.imports}:{},...J.claudeRules!==void 0?{claudeRules:J.claudeRules}:{}}:void 0;return{...B,...G!==void 0?{permissions:G}:{},...X!==void 0?{model:X}:{},...K!==void 0?{instructions:K}:{}}}catch(Q){if(Q.code==="ENOENT")return{};if(!Z)throw Q;return Z(Q instanceof Error?Q.message:String(Q)),{}}}function F4(...$){return $.flatMap((Z)=>Z??[])}async function L4($,Z,Q){let Y=B4($),W=await G5($),G=W.permissions??[];if(!G.some((J)=>J.permission===Z&&J.pattern===Q&&J.action==="allow"))G.push({permission:Z,pattern:Q,action:"allow"});await AH(OH(Y),{recursive:!0}),await MH(Y,`${JSON.stringify({...W,permissions:G},null,2)}
97
+ `,"utf8")}function D4($){let Z=[{text:`You are mu, an expert software engineer working in a codebase through tools.
98
98
 
99
99
  Approach:
100
100
  - Understand before you change: read the relevant files and search the codebase rather than guessing at names or APIs.
@@ -126,14 +126,14 @@ Communication:
126
126
  - Only write code comments that state something the code cannot \u2014 never narrate what a line does.
127
127
  - If you cannot complete something, say so plainly and explain what is blocking you.`}],Q=$.toLowerCase();if(Q.includes("gpt")||Q.includes("openai"))Z.push({text:`
128
128
  Be explicit and literal in your tool use. State briefly what you are about to do before a batch of tool calls, then do it. Do not ask for confirmation for steps that follow directly from the request.`.trim()});else if(Q.includes("gemini")||Q.includes("google"))Z.push({text:`
129
- Prefer a small number of well-chosen tool calls over many exploratory ones. When editing, reproduce the exact surrounding text in oldString so the match is unambiguous.`.trim()});return Z}import{createHash as LH}from"crypto";import{readFileSync as DH,statSync as UH}from"fs";import{resolve as Y5}from"path";function qH($){return LH("sha256").update($).digest("hex")}function aQ($,Z){try{let Q=UH($);return{exists:!0,device:Q.dev,inode:Q.ino,size:Q.size,mtimeMs:Q.mtimeMs,ctimeMs:Q.ctimeMs,digest:qH(Z??DH($))}}catch{return{exists:!1}}}class W5{reads=new Map;modified=new Set;markRead($,Z){let Q=Y5($);this.reads.set(Q,aQ(Q,Z))}markWritten($){let Z=Y5($);this.modified.add(Z),this.markRead(Z)}hasRead($){return this.reads.has(Y5($))}isStale($,Z){let Q=Y5($),Y=this.reads.get(Q);if(Y===void 0)return!1;let W=aQ(Q,Z);return W.exists!==Y.exists||W.device!==Y.device||W.inode!==Y.inode||W.size!==Y.size||W.mtimeMs!==Y.mtimeMs||W.ctimeMs!==Y.ctimeMs||W.digest!==Y.digest}readFiles(){return[...this.reads.keys()]}modifiedFiles(){return[...this.modified]}}import{randomUUID as NH}from"crypto";function rQ($){return $.inputTokens+$.outputTokens+$.cacheReadTokens+$.cacheWriteTokens}function L4($,Z){if(!$)return;if($.maxCostUsd!==void 0&&(Z.costUsd??0)>=$.maxCostUsd)return"maxCostUsd";if($.maxTokens!==void 0&&rQ(Z)>=$.maxTokens)return"maxTokens";return}import{z as AH}from"zod";var Y$="structured_output";function D4($,Z){let Q=AH.toJSONSchema($,{io:"input"});return{name:Y$,description:"Report the final answer. Call this exactly once, when you have the complete result. Do not call any other tool afterwards.",inputSchema:Q,execute:async(Y,W)=>{let G=$.safeParse(W);if(!G.success)return{content:[{type:"text",text:`Output did not match the required schema: ${G.error.issues.map((J)=>`${J.path.join(".")||"(root)"}: ${J.message}`).join("; ")}. Call ${Y$} again with corrected values.`}],isError:!0};return Z(G.data),{content:[{type:"text",text:"Final answer recorded."}],terminate:!0}}}}function U4(){return`When you have the final answer, call the ${Y$} tool with it. That call ends the task.`}var MH=[{permission:"*",pattern:"*",action:"allow"}],OH="You are mu, a capable and direct assistant. Use the tools available to you to complete the user's task. Be concise: answer what was asked without padding. When a task is done, say so plainly.";function i$($,Z){if($&&typeof $!=="string")return $;let Q=$??e1(),Y=Z?.findModel(Q)??mZ(Q);if(!Y)throw Error(`Unknown model: ${Q}. Pass a ModelInfo to use a custom model.`);return Y}function jH($){if($===void 0)return[{text:OH}];return typeof $==="string"?[{text:$}]:$}function PH($){for(let Z=$.length-1;Z>=0;Z--){let Q=$[Z];if(Q?.role!=="assistant")continue;let Y=Q.content.filter((W)=>W.type==="text").map((W)=>W.text).join("");if(Y.trim().length>0)return Y}return""}function tQ(){return`s${Date.now().toString(36)}-${NH().slice(0,8)}`}class n${options;model;provider;store;tree;_sessionId;controller=new AbortController;steering=[];followUps=[];totals=S$();compactRequested=!1;compactRequestedFocus;queuedManualCompactionFocus;manualCompactionQueued=!1;compacting=!1;compactorOverride;lastContextPercent=0;lastContextTokens=0;lastContextUsage;checkpoints=new fZ;recoveryAttempted=!1;reactiveRecoveryPending=!1;pendingCheckpoint;currentThinking;running=!1;stopping=!1;activeEmit;activeExecution;autonomousScheduled=!1;subscribers=new Set;subscriberQueues=new Map;idleWaiters=new Set;shutdownPromise;sessionStarted=!1;permissionRules;constructor($={}){this.options=$,this.permissionRules=[...$.permissions??MH],this.model=i$($.model,$.extensions),this.currentThinking=i0(this.model,$.thinkingLevel),this.provider=this.providerFor(this.model),this.store=$.session??new u$,this._sessionId=$.sessionId??tQ(),this.tree=new o({type:"session",version:h$,id:this._sessionId,createdAt:new Date().toISOString(),profile:$.sessionProfile??"default",environment:{...$.sessionEnvironment??{}}}),$.runtime?.attach({emit:(Z)=>this.emitTaskEvent(Z),followUp:(Z)=>this.followUp(Z)})}get sessionId(){return this._sessionId}get usage(){return this.totals}get session(){return this.tree}get sessionStore(){return this.store}get modelRef(){return`${this.model.provider}/${this.model.id}`}get contextWindow(){return this.model.contextWindow}get thinking(){return this.currentThinking}get thinkingLevels(){return $$(this.model)}get isRunning(){return this.running}get isCompacting(){return this.compacting}get permissions(){return[...this.permissionRules]}setPermissions($){this.permissionRules=[...$]}addPermissionRule($){this.permissionRules.push($)}setModel($){let Z={model:this.model,provider:this.provider},Q=i$($,this.options.extensions),Y=this.tree.messagesAt();if(Y.length>0&&l(Y)>=Q.contextWindow*(this.options.compactThreshold??E1))this.compactRequested=!0,this.compactorOverride=Z;this.model=Q,this.provider=this.providerFor(Q);let W=i0(Q,this.currentThinking),G=W!==this.currentThinking;this.currentThinking=W,this.lastContextUsage=void 0,this.refreshContextAccounting(),this.tree.append({type:"settings-change",model:this.modelRef,...G?{thinkingLevel:W}:{}}),this.options.extensions?.emitLifecycle({type:"model_select",model:this.modelRef})}setThinking($){let Z=i0(this.model,$);if(Z===this.currentThinking)return;this.currentThinking=Z,this.tree.append({type:"settings-change",thinkingLevel:Z})}resume($){if(this.running)throw Error("Cannot resume a session while a run is active.");let Z;try{Z=o.fromJsonl($.toJsonl())}catch(W){throw Error("Cannot resume an invalid or unsupported session.",{cause:W})}let Q=Z.header;if(!Q||Q.version!==h$)throw Error("Cannot resume an invalid or unsupported session.");this.tree=Z,this._sessionId=Q.id;let Y=S$();for(let W of Z.all())if(W.type==="message"&&W.message.role==="assistant")Y=J1(Y,W.message.usage);else if(W.type==="compaction"&&W.usage)Y=J1(Y,W.usage);else if(W.type==="compaction-attempt")Y=J1(Y,W.usage);this.totals=Y,this.lastContextUsage=void 0,this.compactRequested=!1,this.compactRequestedFocus=void 0,this.queuedManualCompactionFocus=void 0,this.manualCompactionQueued=!1,this.compacting=!1,this.compactorOverride=void 0,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1,this.steering=[],this.followUps=[],this.pendingCheckpoint=void 0,this.sessionStarted=!1,this.controller=new AbortController,this.model=i$(this.options.model,this.options.extensions),this.provider=this.providerFor(this.model),this.currentThinking=i0(this.model,this.options.thinkingLevel);for(let W of Z.activePath()){if(W.type!=="settings-change")continue;if(W.model)try{this.model=i$(W.model,this.options.extensions),this.provider=this.providerFor(this.model)}catch{}if(typeof W.thinkingLevel==="string"&&W.thinkingLevel.length>0)this.currentThinking=W.thinkingLevel}this.currentThinking=i0(this.model,this.currentThinking),this.rebuildCheckpointHistory(),this.refreshContextAccounting()}newSession($=tQ()){if(this.running)throw Error("Cannot start a new session while a run is active.");this._sessionId=$,this.tree=new o({type:"session",version:h$,id:$,createdAt:new Date().toISOString(),profile:this.options.sessionProfile??"default",environment:{...this.options.sessionEnvironment??{}}}),this.tree.append({type:"settings-change",model:this.modelRef,thinkingLevel:this.currentThinking}),this.totals=S$(),this.lastContextUsage=void 0,this.compactRequested=!1,this.compactRequestedFocus=void 0,this.queuedManualCompactionFocus=void 0,this.manualCompactionQueued=!1,this.compacting=!1,this.compactorOverride=void 0,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1,this.steering=[],this.followUps=[],this.pendingCheckpoint=void 0,this.checkpoints.restore([]),this.sessionStarted=!1,this.controller=new AbortController,this.refreshContextAccounting()}send($){this.steering.push(Q$($))}followUp($){if(this.stopping)return;if(this.followUps.push(Q$($)),!this.running)this.scheduleAutonomousRun()}removeQueuedMessage($,Z){let Q=$==="steer"?this.steering:this.followUps;for(let Y=Q.length-1;Y>=0;Y--){let W=Q[Y];if(W?.role!=="user")continue;if(W.content.filter((X)=>X.type==="text").map((X)=>X.text).join("")!==Z)continue;return Q.splice(Y,1),this.resolveIdleIfDone(),!0}return!1}emitTaskEvent($){this.publishEvent($)}subscribe($){return this.subscribers.add($),()=>{this.subscribers.delete($),this.subscriberQueues.delete($)}}resize($,Z){if($>0&&Z>0)this.options.runtime?.resize?.($,Z)}waitForIdle(){if(!this.running&&!this.autonomousScheduled&&!this.manualCompactionQueued&&this.followUps.length===0)return Promise.resolve();return new Promise(($)=>this.idleWaiters.add($))}stop(){if(this.stopping)return;this.stopping=!0,this.followUps=[],this.manualCompactionQueued=!1,this.queuedManualCompactionFocus=void 0;try{this.options.runtime?.stop?.()}catch{}this.controller.abort(),this.resolveIdleIfDone()}shutdown(){if(this.shutdownPromise)return this.shutdownPromise;return this.stop(),this.shutdownPromise=(async()=>{await this.activeExecution?.catch(()=>{}),this.options.extensions?.emitLifecycle({type:"session_shutdown",sessionId:this._sessionId}),await Promise.allSettled([Promise.resolve().then(()=>this.options.runtime?.shutdown?.()),Promise.resolve().then(()=>this.options.extensions?.shutdown())]),this.resolveIdleIfDone()})(),this.shutdownPromise}abort(){this.controller.abort()}requestCompaction($){this.compactRequested=!0,this.compactRequestedFocus=$?.trim()||void 0}compactNow($){let Z=$?.trim()||void 0;if(this.stopping)return Promise.resolve({status:"failed",message:"Compaction is unavailable after stop."});if(this.running)return this.manualCompactionQueued=!0,this.queuedManualCompactionFocus=Z,Promise.resolve({status:"queued",message:"Compaction queued \u2014 it will run after the current turn."});this.running=!0,this.compacting=!0,this.controller=new AbortController;let Q=(W)=>{if(this.publishToSubscribers(W),W.type==="agent_start"&&!this.sessionStarted)this.sessionStarted=!0,this.options.extensions?.emitLifecycle({type:"session_start",sessionId:this._sessionId});this.options.extensions?.emit(W)};this.activeEmit=Q;let Y=this.executeManualCompaction(Z,Q).finally(()=>{if(this.running=!1,this.compacting=!1,this.activeEmit=void 0,this.activeExecution=void 0,this.manualCompactionQueued&&!this.stopping)this.scheduleManualCompaction();else if(this.followUps.length>0&&!this.stopping)this.scheduleAutonomousRun();this.resolveIdleIfDone()});return this.activeExecution=Y,Y}async executeManualCompaction($,Z){Z({type:"agent_start"});let Q=this.tree.messagesAt(),Y=k$(this.model,Q,this.lastContextUsage?.usage,this.lastContextUsage?.estimatedTokensAtUsage).tokens;Z({type:"compaction_start",layer:2,trigger:"manual",contextTokensBefore:Y});let W=nZ(Q,{targetTokens:Math.floor(this.model.contextWindow*(this.options.compactThreshold??E1)*0.8)}),G=Q,X=[];if(W.evicted>0){Z({type:"compaction_update",layer:2,stage:"clearing-tool-output",toolResultsCleared:W.evicted}),X=W.messages.flatMap((z,F)=>{let D=Q[F];if(!D||z===D)return[];let L=this.tree.entryIdForMessage(D);return L?[{entryId:L,message:z}]:[]});let V=W.messages.filter((z,F)=>z!==Q[F]).length;if(X.length===V)G=W.messages;else X=[]}let J=this.compactorOverride??{model:this.model,provider:this.provider};this.compactorOverride=void 0,Z({type:"compaction_update",layer:2,stage:"summarizing"});let B,K=!1;try{let V=this.options.getCredentials,z=await cZ(G,{provider:J.provider,model:J.model,keepRecentTokens:Math.min(Z$,Math.max(2,Math.floor(this.model.contextWindow*0.2))),...$?{customInstructions:$}:{},...this.options.carryoverExtractor?{carryoverExtractor:this.options.carryoverExtractor}:{},signal:this.controller.signal,streamOpts:{sessionId:this._sessionId,...this.options.apiKey?{apiKey:this.options.apiKey}:{},...V?{getCredentials:()=>V(J.model.provider)}:{}}});if(B=z.usage,z.summary.length===0){let n=l(Q);return Z({type:"compaction_end",layer:2,trigger:"manual",status:"noop",tokensFreed:0,contextTokensBefore:Y,contextTokensAfter:n}),Z({type:"agent_end",messages:Q,reason:"done"}),{status:"noop",message:"Context is already compact enough \u2014 no changes made.",tokensBefore:Y,tokensAfter:n,tokensFreed:0}}Z({type:"compaction_update",layer:2,stage:"installing"});let F=f$(z),D=z.keptMessages[0],L=null;if(D){let n=G.indexOf(D),w=n===-1?D:Q[n],_=w?this.tree.entryIdForMessage(w):void 0;if(!_)throw Error("Compaction tail could not be mapped to the session");L=_}let U=F[0],q=await this.options.refreshContext?.(F,{sessionId:this._sessionId})??[],A=l([...F,...q]),N=o.fromJsonl(this.tree.toJsonl());if(X.length>0)N.append({type:"microcompaction",replacements:X});let j=N.activePath().filter((n)=>n.type==="compaction").length+1,P=N.append({type:"compaction",summary:z.summary,...z.carryover!==void 0?{carryover:z.carryover}:{},firstKeptEntryId:L,...U?{timestamp:U.timestamp}:{},trigger:"manual",contextTokensBefore:Y,contextTokensAfter:A,model:this.modelRef,compactorModel:`${J.model.provider}/${J.model.id}`,windowNumber:j,strategy:"summary-tail",keptTokens:l(z.keptMessages),toolResultsCleared:X.length,usage:z.usage});for(let n of q)N.appendMessage(n);let M=N.messagesAt(),S=l(M),g=Math.max(0,Y-S);return await this.store.save(this._sessionId,N),this.tree=N,this.totals=J1(this.totals,z.usage),K=!0,this.lastContextUsage=void 0,this.lastContextPercent=this.model.contextWindow>0?S/this.model.contextWindow:0,this.lastContextTokens=S,Z({type:"usage_updated",sessionTotals:this.totals,contextTokens:S,contextPercent:this.lastContextPercent}),Z({type:"compaction_end",layer:2,trigger:"manual",status:"completed",tokensFreed:g,summaryEntryId:P.id,contextTokensBefore:Y,contextTokensAfter:S,toolResultsCleared:X.length,keptTokens:l(z.keptMessages)}),Z({type:"agent_end",messages:M,reason:"done"}),{status:"completed",message:`Context compacted: ${Y.toLocaleString()} \u2192 ${S.toLocaleString()} tokens (${g.toLocaleString()} freed).`,tokensBefore:Y,tokensAfter:S,tokensFreed:g,toolResultsCleared:X.length,summaryEntryId:P.id}}catch(V){let z=B??(V instanceof v0?V.usage:void 0);if(z&&!K)this.tree.append({type:"compaction-attempt",status:this.controller.signal.aborted?"cancelled":"failed",trigger:"manual",model:this.modelRef,compactorModel:`${J.model.provider}/${J.model.id}`,timestamp:Date.now(),usage:z}),await this.store.save(this._sessionId,this.tree).catch(()=>{}),this.totals=J1(this.totals,z),Z({type:"usage_updated",sessionTotals:this.totals,contextTokens:Y,contextPercent:this.model.contextWindow>0?Y/this.model.contextWindow:0});let F=this.controller.signal.aborted,D=F?"Compaction cancelled \u2014 original conversation preserved.":`Compaction failed: ${V instanceof Error?V.message:String(V)} Original conversation preserved.`;return Z({type:"compaction_end",layer:2,trigger:"manual",status:F?"cancelled":"failed",tokensFreed:0,contextTokensBefore:Y,contextTokensAfter:Y,errorMessage:D}),Z({type:"agent_end",messages:Q,reason:F?"aborted":"done"}),{status:F?"cancelled":"failed",message:D,tokensBefore:Y,tokensAfter:Y,tokensFreed:0}}}get checkpointHistory(){return this.checkpoints}async undo(){if(this.running)return{ok:!1,message:"Cannot undo while a run is active."};let $=this.options.checkpointProvider;if(!$)return{ok:!1,message:"This profile does not support undo."};let Z=this.checkpoints.peekUndo();if(!Z)return{ok:!1,message:"Nothing to undo."};if(!this.tree.has(Z.beforeEntryId))return{ok:!1,message:"Could not undo: the conversation checkpoint is missing."};let Q;try{Q=await $.diff(Z.beforeRef,Z.afterRef)}catch(V){return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}let Y;try{Y=await $.snapshot("before undo of last turn")}catch(V){return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}if(!Y)return{ok:!1,message:"Could not undo: failed to capture current state."};try{await this.restoreCheckpointResources($,Z.beforeRef,Q)}catch(V){let z=await this.restoreCheckpointResources($,Y,Q).then(()=>{return}).catch((F)=>F);return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}${z?`; rollback failed: ${z instanceof Error?z.message:String(z)}`:""}`}}let W=this.tree,G=o.fromJsonl(W.toJsonl());G.fork(Z.beforeEntryId);let X=this.checkpoints.state(),J=X.done.slice(0,-1),B=[...X.undone,{...Z,redoRef:Y}];this.appendCheckpointCursor(G,J,B);try{await this.store.save(this._sessionId,G)}catch(V){return await this.restoreCheckpointResources($,Y,Q).catch(()=>{}),await this.store.save(this._sessionId,W).catch(()=>{}),{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}let K=this.checkpointDetails(Z);return this.checkpoints.restore(J,B),this.tree=G,this.refreshContextAccounting(),{ok:!0,message:"Undid the last turn.",data:{kind:"checkpoint",action:"undo",files:Q,messageCount:K.messageCount,...K.prompt!==void 0?{prompt:K.prompt}:{}}}}async redo(){if(this.running)return{ok:!1,message:"Cannot redo while a run is active."};let $=this.options.checkpointProvider;if(!$)return{ok:!1,message:"This profile does not support redo."};let Z=this.checkpoints.peekRedo();if(!Z)return{ok:!1,message:"Nothing to redo."};if(!this.tree.has(Z.id))return{ok:!1,message:"Could not redo: the conversation checkpoint is missing."};let Q;try{Q=await $.diff(Z.beforeRef,Z.afterRef)}catch(F){return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}let Y;try{Y=await $.snapshot("before redo of last turn")}catch(F){return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}if(!Y)return{ok:!1,message:"Could not redo: failed to capture current state."};try{await this.restoreCheckpointResources($,Z.redoRef??Z.afterRef,Q)}catch(F){let D=await this.restoreCheckpointResources($,Y,Q).then(()=>{return}).catch((L)=>L);return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}${D?`; rollback failed: ${D instanceof Error?D.message:String(D)}`:""}`}}let W=this.tree,G=o.fromJsonl(W.toJsonl());G.fork(Z.id);let X=this.checkpoints.state(),{redoRef:J,...B}=Z,K=[...X.done,B],V=X.undone.slice(0,-1);this.appendCheckpointCursor(G,K,V);try{await this.store.save(this._sessionId,G)}catch(F){return await this.restoreCheckpointResources($,Y,Q).catch(()=>{}),await this.store.save(this._sessionId,W).catch(()=>{}),{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}let z=this.checkpointDetails(Z);return this.checkpoints.restore(K,V),this.tree=G,this.refreshContextAccounting(),{ok:!0,message:"Redid the turn.",data:{kind:"checkpoint",action:"redo",files:Q,messageCount:z.messageCount}}}async sessionDiff(){let $=this.options.checkpointProvider,Z=this.checkpoints.first();if(!$||!Z)return[];return $.diff(Z.beforeRef)}forkPoints(){let $=[];for(let Z of this.tree.activePath()){if(Z.type!=="message")continue;let Q=Z.message;if(Q.role==="toolResult")continue;if(Q.role==="assistant"&&Q.content.some((G)=>G.type==="toolCall"))continue;let Y=Q.content.filter((G)=>G.type==="text").map((G)=>G.text).join("").replace(/\s+/g," ").trim(),W=Q.role==="assistant"?"mu":Q.role;$.push({id:Z.id,description:`${W} \xB7 ${Y.slice(0,80)||"(no text)"}`})}return $}async fork($){if(this.running)return{ok:!1,message:"Cannot fork while a run is active."};if(!this.tree.get($))return{ok:!1,message:`Could not fork: unknown entry ${$}.`};let Z=o.fromJsonl(this.tree.toJsonl());Z.fork($),Z.append({type:"custom",customType:"fork",data:{fromEntryId:this.tree.head,targetEntryId:$}});try{await this.store.save(this._sessionId,Z)}catch(Q){return{ok:!1,message:`Could not fork: ${Q instanceof Error?Q.message:String(Q)}`}}return this.tree=Z,this.rebuildCheckpointHistory(),this.refreshContextAccounting(),{ok:!0,message:`Forked from ${$}.`}}get contextPercent(){return this.lastContextPercent}get contextTokens(){return this.lastContextTokens}async run($,Z){return this.execute($,Z,()=>{})}stream($,Z){let Q=[],Y=[],W=!1,G=(J)=>{let B=Y.shift();if(B)B({value:J,done:!1});else Q.push(J)},X=this.execute($,Z,G).finally(()=>{W=!0;while(Y.length>0)Y.shift()?.({value:void 0,done:!0})});return{async*[Symbol.asyncIterator](){for(;;){if(Q.length>0){yield Q.shift();continue}if(W)return;let J=await new Promise((B)=>Y.push(B));if(J.done)return;yield J.value}},result:()=>X}}async beginCheckpoint($){let Z=this.options.checkpointProvider;if(this.pendingCheckpoint=void 0,!Z)return;try{let Q=await Z.snapshot("before user turn");if(Q)this.pendingCheckpoint={beforeEntryId:$,beforeRef:Q}}catch{}}async finishCheckpoint(){let $=this.pendingCheckpoint,Z=this.options.checkpointProvider;if(this.pendingCheckpoint=void 0,!$||!Z)return;let Q=await Z.snapshot("after user turn").catch(()=>{return});if(!Q)return;let W={id:this.tree.append({type:"checkpoint",beforeEntryId:$.beforeEntryId,checkpointRef:$.beforeRef,checkpointAfterRef:Q,label:"turn"}).id,beforeEntryId:$.beforeEntryId,beforeRef:$.beforeRef,afterRef:Q,label:"turn"};this.checkpoints.record(W);let G=this.checkpoints.state();this.appendCheckpointCursor(this.tree,G.done,G.undone)}appendCheckpointCursor($,Z,Q){let Y=(W)=>({id:W.id,...W.redoRef?{redoRef:W.redoRef}:{}});$.append({type:"custom",customType:"checkpoint-cursor",data:{done:Z.map(Y),undone:Q.map(Y)}})}async restoreCheckpointResources($,Z,Q){if(Q.length===0)return;let Y=Q.map((W)=>W.path);if($.restoreResources){await $.restoreResources(Z,Y);return}await $.restore(Z)}checkpointDetails($){let Z=this.tree.pathTo($.id),Q=$.beforeEntryId?Z.findIndex((X)=>X.id===$.beforeEntryId):-1,Y=Z.slice(Q+1),W=Y.find((X)=>X.type==="message"&&X.message.role==="user"),G=W?.type==="message"?W.message.content.filter((X)=>X.type==="text").map((X)=>X.text).join(`
130
- `):void 0;return{messageCount:Y.filter((X)=>X.type==="message").length,...G!==void 0?{prompt:G}:{}}}rebuildCheckpointHistory(){let $=new Map;for(let W of this.tree.all()){if(W.type!=="checkpoint")continue;$.set(W.id,{id:W.id,beforeEntryId:W.beforeEntryId,beforeRef:W.checkpointRef,afterRef:W.checkpointAfterRef,...W.label?{label:W.label}:{}})}let Z=this.tree.activePath(),Q=Z.findLastIndex((W)=>W.type==="custom"&&W.customType==="checkpoint-cursor"),Y=Q===-1?void 0:Z[Q];if(Y?.type==="custom"){let W=Y.data,G=(B)=>Array.isArray(B)?B.map((K)=>{let V=typeof K==="string"?K:typeof K==="object"&&K!==null&&typeof K.id==="string"?K.id:void 0,z=V?$.get(V):void 0;if(!z)return;let F=typeof K==="object"&&K!==null&&typeof K.redoRef==="string"?K.redoRef:void 0;return{...z,...F?{redoRef:F}:{}}}).filter((K)=>K!==void 0):[],X=G(W.done),J=G(W.undone);for(let B of Z.slice(Q+1)){if(B.type!=="checkpoint")continue;let K=$.get(B.id);if(K)X.push(K);J=[]}this.checkpoints.restore(X,J);return}this.checkpoints.restore(Z.filter((W)=>W.type==="checkpoint").map((W)=>$.get(W.id)).filter((W)=>W!==void 0))}execute($,Z,Q){if(this.stopping)return Promise.reject(Error("Agent has been stopped."));if(this.running)return Promise.reject(Error("Agent already has an active run; use send() to steer it."));this.running=!0;let Y=(G)=>{if(Q(G),this.publishToSubscribers(G),G.type==="agent_start"&&!this.sessionStarted)this.sessionStarted=!0,this.options.extensions?.emitLifecycle({type:"session_start",sessionId:this._sessionId});this.options.extensions?.emit(G)};this.activeEmit=Y;let W=this.executeRun($,Z,Y).finally(()=>{if(this.running=!1,this.activeEmit=void 0,this.activeExecution=void 0,this.manualCompactionQueued&&!this.stopping)this.scheduleManualCompaction();else if(this.followUps.length>0&&!this.stopping)this.scheduleAutonomousRun();this.resolveIdleIfDone()});return this.activeExecution=W,W}async executeRun($,Z,Q){this.controller=new AbortController,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1;let Y=this.options.extensions,W=$;if(typeof $==="string"&&Y){Y.emitLifecycle({type:"input",text:$});let w=await Y.runInputHooks($);if(w?.consume){if(Z?.output)throw Error("Structured output is unavailable because an extension consumed the input.");let _=[{type:"agent_start"},{type:"agent_end",messages:[],reason:"done"}];for(let t of _)Q(t);return{text:"",messages:[],usage:this.totals,reason:"done",sessionId:this._sessionId}}if(w?.text!==void 0)W=w.text}let G=typeof W==="string"?Q$(W):{role:"user",content:W,timestamp:Date.now()},X,J=[...this.options.tools??[],...Y?[...Y.tools.values()]:[]];if(Z?.allowedTools){let w=new Set(J.map((h)=>h.name)),_=Z.allowedTools.filter((h)=>!w.has(h));if(_.length>0)throw Error(`Unknown allowed tool${_.length===1?"":"s"}: ${_.join(", ")}`);let t=new Set(Z.allowedTools);J=J.filter((h)=>t.has(h.name))}let B=Z?.model?i$(Z.model,this.options.extensions):this.model,K=Z?.model?this.providerFor(B):this.provider,V=i0(B,this.currentThinking),z=Z?.model?void 0:this.lastContextUsage;if(Z?.model)this.lastContextUsage=void 0;let F=jH(this.options.systemPrompt);if(Z?.output)J.push(D4(Z.output,(w)=>{X=w})),F.push({text:U4(),dynamic:!0});let D=this.tree.messagesAt(),L=D.length===0&&this.options.initialMessages?this.options.initialMessages:[];for(let w of L)this.tree.appendMessage(w);let U=await this.options.refreshContext?.([...D,...L],{sessionId:this._sessionId})??[];for(let w of U)this.tree.appendMessage(w);let q={systemPrompt:F,messages:[...D,...L,...U],...J.length>0?{tools:J}:{}};await this.beginCheckpoint(this.tree.head);let A,N=(w)=>k$(B,w,z?.usage,z?.estimatedTokensAtUsage),j=(w,_,t)=>{if(this.totals=J1(this.totals,w),t){if(z={usage:w,estimatedTokensAtUsage:l(t)},!Z?.model)this.lastContextUsage=z}let h=N(_);this.lastContextPercent=h.percent,this.lastContextTokens=h.tokens,Q({type:"usage_updated",sessionTotals:this.totals,contextTokens:h.tokens,contextPercent:h.percent});let r=L4(this.options.budget,this.totals);if(r)A=r;return r},P=this.options.getCredentials,M={provider:K,model:B,streamOpts:{sessionId:this._sessionId,...this.options.apiKey?{apiKey:this.options.apiKey}:{},...P?{getCredentials:()=>P(B.provider)}:{}},thinkingLevel:V,...this.options.budget?.maxTurns!==void 0?{maxTurns:this.options.budget.maxTurns}:{},getSteeringMessages:()=>{let w=this.steering;return this.steering=[],w},getFollowUpMessages:()=>{let w=this.followUps.shift();return w?[w]:[]},beforeToolCall:async(w)=>{if(w.toolCall.name===Y$)return;let _=w.args;if(Y){let A0=await Y.runToolCallHooks({toolName:w.toolCall.name,toolCallId:w.toolCall.id,args:_});if(A0?.block)return{block:!0,reason:A0.reason??"Blocked by an extension"};if(A0?.args)_=A0.args}let t=J.find((A0)=>A0.name===w.toolCall.name),h=w.toolCall.name;try{h=t?.permissionScope?.(_)??h}catch{}let r=JSON.stringify(_);try{r=t?.permissionPattern?.(_)??r}catch{}let xZ=h===w.toolCall.name?[w.toolCall.name]:[w.toolCall.name,h],Q1=n6(this.permissionRules,xZ,r),I$=_===w.args?void 0:{rewrittenArgs:_};if(Q1==="allow")return I$;if(Q1==="deny")return{block:!0,reason:`Permission denied for ${w.toolCall.name}`};let T0=await Promise.resolve(t?.permissionDetails?.(_)).catch(()=>{return}),u0={id:`p${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,toolCallId:w.toolCall.id,toolName:w.toolCall.name,permission:h,pattern:r,description:T0?.description??`Run ${w.toolCall.name}`,...T0?.preview?{preview:T0.preview}:{}};Q({type:"permission_asked",request:u0});let c1="deny";if(this.options.onPermission&&!this.controller.signal.aborted){let A0=this.controller.signal,u,H0=new Promise((T1)=>{u=()=>T1("deny"),A0.addEventListener("abort",u,{once:!0})});try{c1=await Promise.race([this.options.onPermission(u0),H0])}finally{if(u)A0.removeEventListener("abort",u)}}if(Q({type:"permission_resolved",requestId:u0.id,outcome:c1}),c1==="allow")return I$;return{block:!0,reason:`Permission denied for ${w.toolCall.name}`}},prepareContext:async(w)=>{let _=N(w);this.lastContextPercent=_.percent,this.lastContextTokens=_.tokens;let t=this.options.autoCompact!==!1,h=w;if(t&&_.percent>=i6&&!this.compactRequested){let u=nZ(h,{targetTokens:Math.floor(B.contextWindow*(this.options.compactThreshold??E1)*0.8)});if(u.evicted>0){let H0=u.messages.flatMap((k0,d1)=>{let i1=h[d1];if(!i1||k0===i1)return[];let O6=this.tree.entryIdForMessage(i1);return O6?[{entryId:O6,message:k0}]:[]}),T1=u.messages.filter((k0,d1)=>k0!==h[d1]).length;if(H0.length===T1){Q({type:"compaction_start",layer:1}),this.tree.append({type:"microcompaction",replacements:H0}),h=u.messages,z=void 0,this.lastContextUsage=void 0;let k0=N(h);this.lastContextPercent=k0.percent,this.lastContextTokens=k0.tokens,Q({type:"compaction_end",layer:1,tokensFreed:u.tokensFreed})}}}let r=N(h);if(!(this.compactRequested||t&&u6(r,this.options.compactThreshold??E1)))return{messages:h};let Q1=this.reactiveRecoveryPending?"overflow":this.compactorOverride?"model-change":this.compactRequested?"manual":"threshold",I$=this.compactRequestedFocus,T0=this.compactorOverride??{model:B,provider:K};this.compactRequested=!1,this.compactRequestedFocus=void 0,this.compactorOverride=void 0;let u0=this.reactiveRecoveryPending?3:2;if(u0===2)Q({type:"compaction_start",layer:u0,trigger:Q1,contextTokensBefore:r.tokens});let c1,A0=!1;try{Q({type:"compaction_update",layer:u0,stage:"summarizing"});let u=await cZ(h,{provider:T0.provider,model:T0.model,keepRecentTokens:Math.min(Z$,Math.max(2,Math.floor(B.contextWindow*0.2))),...M.streamOpts?{streamOpts:{...M.streamOpts,...P?{getCredentials:()=>P(T0.model.provider)}:{}}}:{},...this.options.carryoverExtractor?{carryoverExtractor:this.options.carryoverExtractor}:{},...I$?{customInstructions:I$}:{},signal:this.controller.signal});c1=u.usage;let H0=f$(u),T1;if(u.summary.length>0){let k0=u.keptMessages[0],d1=null;if(k0){let kZ=this.tree.entryIdForMessage(k0);if(!kZ)throw Error("Compaction tail could not be mapped to the session");d1=kZ}let i1=H0[0];T1=this.tree.append({type:"compaction",summary:u.summary,...u.carryover!==void 0?{carryover:u.carryover}:{},firstKeptEntryId:d1,...i1?{timestamp:i1.timestamp}:{},trigger:Q1,contextTokensBefore:r.tokens,contextTokensAfter:l(H0),model:`${B.provider}/${B.id}`,compactorModel:`${T0.model.provider}/${T0.model.id}`,windowNumber:this.tree.activePath().filter((kZ)=>kZ.type==="compaction").length+1,strategy:"summary-tail",keptTokens:l(u.keptMessages),usage:u.usage}).id}return z=void 0,this.lastContextUsage=void 0,j(u.usage,H0),A0=!0,Q({type:"compaction_end",layer:u0,tokensFreed:u.tokensFreed,trigger:Q1,status:u.summary.length>0?"completed":"noop",contextTokensBefore:r.tokens,contextTokensAfter:N(H0).tokens,keptTokens:l(u.keptMessages),...T1?{summaryEntryId:T1}:{}}),this.reactiveRecoveryPending=!1,{messages:H0,stop:A!==void 0}}catch(u){let H0=c1??(u instanceof v0?u.usage:void 0);if(H0&&!A0)this.tree.append({type:"compaction-attempt",status:this.controller.signal.aborted?"cancelled":"failed",trigger:Q1,model:`${B.provider}/${B.id}`,compactorModel:`${T0.model.provider}/${T0.model.id}`,timestamp:Date.now(),usage:H0}),j(H0,h);return Q({type:"compaction_end",layer:u0,tokensFreed:0,trigger:Q1,status:this.controller.signal.aborted?"cancelled":"failed",contextTokensBefore:r.tokens,contextTokensAfter:r.tokens,errorMessage:u instanceof Error?u.message:"Compaction failed for an unknown reason"}),this.reactiveRecoveryPending=!1,{messages:h,stop:A!==void 0}}},...Y?{transformContext:(w)=>Y.runContextHooks(w)}:{},...Y?{afterToolCall:async(w)=>{let _=await Y.runToolResultHooks({toolName:w.toolCall.name,toolCallId:w.toolCall.id,result:w.result,isError:w.isError});if(!_)return;return{...w.result,..._.content?{content:_.content}:{},..._.isError!==void 0?{isError:_.isError}:{}}}}:{},recoverFromError:(w)=>{if(this.recoveryAttempted||!_$(w))return!1;return this.recoveryAttempted=!0,this.compactRequested=!0,this.reactiveRecoveryPending=!0,Q({type:"compaction_start",layer:3,trigger:"overflow"}),!0},shouldStopAfterTurn:async(w)=>{if(this.recoveryAttempted=!1,j(w.message.usage,w.context.messages,w.requestMessages))return!0;return!1}},S=await(async()=>{try{return await p6([G],q,M,async(w)=>{if(Q(w),w.type==="message_end")this.tree.appendMessage(w.message);if(w.type==="message_end"&&w.message===G||w.type==="turn_end")await this.store.save(this._sessionId,this.tree)},this.controller.signal)}finally{await this.finishCheckpoint()}})();await this.store.save(this._sessionId,this.tree);let g=A??(S.reason==="budget"?"maxCostUsd":S.reason),n={text:PH(S.messages),messages:S.messages,usage:this.totals,reason:g,sessionId:this._sessionId};if(!Z?.output)return n;if(X===void 0)throw Error(`Structured output was requested but the model never produced a valid one (run ended: ${g}).`);return{...n,output:X}}providerFor($){return this.options.provider??this.options.extensions?.providers.get($.provider)??y6($.provider)}publishEvent($){if(this.activeEmit){this.activeEmit($);return}this.publishToSubscribers($),this.options.extensions?.emit($)}refreshContextAccounting(){let $=k$(this.model,this.tree.messagesAt(),this.lastContextUsage?.usage,this.lastContextUsage?.estimatedTokensAtUsage);this.lastContextPercent=$.percent,this.lastContextTokens=$.tokens,this.publishEvent({type:"usage_updated",sessionTotals:this.totals,contextTokens:$.tokens,contextPercent:$.percent})}publishToSubscribers($){for(let Z of this.subscribers){let Y=(this.subscriberQueues.get(Z)??Promise.resolve()).then(()=>Z($)).catch(()=>{});this.subscriberQueues.set(Z,Y),Y.finally(()=>{if(this.subscriberQueues.get(Z)===Y&&!this.subscribers.has(Z))this.subscriberQueues.delete(Z)})}}scheduleAutonomousRun(){if(this.running||this.autonomousScheduled||this.stopping||this.followUps.length===0)return;this.autonomousScheduled=!0,queueMicrotask(()=>{if(this.autonomousScheduled=!1,this.running||this.stopping){this.resolveIdleIfDone();return}let $=this.followUps.shift();if(!$||$.role!=="user"){this.resolveIdleIfDone();return}this.execute($.content,void 0,()=>{}).catch(()=>{})})}scheduleManualCompaction(){if(this.running||this.autonomousScheduled||this.stopping||!this.manualCompactionQueued)return;let $=this.queuedManualCompactionFocus;this.manualCompactionQueued=!1,this.queuedManualCompactionFocus=void 0,this.autonomousScheduled=!0,queueMicrotask(()=>{if(this.autonomousScheduled=!1,this.running||this.stopping){this.resolveIdleIfDone();return}this.compactNow($).catch(()=>{})})}resolveIdleIfDone(){if(this.running||this.autonomousScheduled||this.manualCompactionQueued||this.followUps.length>0)return;for(let $ of this.idleWaiters)$();this.idleWaiters.clear()}}import{createHash as IH,randomBytes as K5}from"crypto";import{chmod as N4,mkdir as RH,readFile as EH,rename as SH,stat as CH,unlink as yH,writeFile as bH}from"fs/promises";import{createServer as QY}from"http";import{homedir as _H}from"os";import{dirname as xH,join as YY}from"path";var wH=[{x:0,y:0,w:5,h:1},{x:0,y:1,w:1,h:4},{x:2,y:1,w:1,h:4},{x:4,y:1,w:1,h:4},{x:6,y:0,w:1,h:5},{x:9,y:0,w:1,h:5},{x:7,y:4,w:2,h:1}];function q4($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function TH(){return`<svg class="mark" viewBox="0 0 10 5" role="img" aria-label="mu">${wH.map((Z)=>`<rect x="${Z.x}" y="${Z.y}" width="${Z.w}" height="${Z.h}"/>`).join("")}</svg>`}function A4($){let Z=$.status==="success"?"#fff":"#f87171";return`<!doctype html>
129
+ Prefer a small number of well-chosen tool calls over many exploratory ones. When editing, reproduce the exact surrounding text in oldString so the match is unambiguous.`.trim()});return Z}import{createHash as TH}from"crypto";import{readFileSync as EH,statSync as IH}from"fs";import{resolve as X5}from"path";function RH($){return TH("sha256").update($).digest("hex")}function sQ($,Z){try{let Q=IH($);return{exists:!0,device:Q.dev,inode:Q.ino,size:Q.size,mtimeMs:Q.mtimeMs,ctimeMs:Q.ctimeMs,digest:RH(Z??EH($))}}catch{return{exists:!1}}}class J5{reads=new Map;modified=new Set;markRead($,Z){let Q=X5($);this.reads.set(Q,sQ(Q,Z))}markWritten($){let Z=X5($);this.modified.add(Z),this.markRead(Z)}hasRead($){return this.reads.has(X5($))}isStale($,Z){let Q=X5($),Y=this.reads.get(Q);if(Y===void 0)return!1;let W=sQ(Q,Z);return W.exists!==Y.exists||W.device!==Y.device||W.inode!==Y.inode||W.size!==Y.size||W.mtimeMs!==Y.mtimeMs||W.ctimeMs!==Y.ctimeMs||W.digest!==Y.digest}readFiles(){return[...this.reads.keys()]}modifiedFiles(){return[...this.modified]}}import{randomUUID as CH}from"crypto";function eQ($){return $.inputTokens+$.outputTokens+$.cacheReadTokens+$.cacheWriteTokens}function q4($,Z){if(!$)return;if($.maxCostUsd!==void 0&&(Z.costUsd??0)>=$.maxCostUsd)return"maxCostUsd";if($.maxTokens!==void 0&&eQ(Z)>=$.maxTokens)return"maxTokens";return}import{z as SH}from"zod";var W$="structured_output";function U4($,Z){let Q=SH.toJSONSchema($,{io:"input"});return{name:W$,description:"Report the final answer. Call this exactly once, when you have the complete result. Do not call any other tool afterwards.",inputSchema:Q,execute:async(Y,W)=>{let G=$.safeParse(W);if(!G.success)return{content:[{type:"text",text:`Output did not match the required schema: ${G.error.issues.map((J)=>`${J.path.join(".")||"(root)"}: ${J.message}`).join("; ")}. Call ${W$} again with corrected values.`}],isError:!0};return Z(G.data),{content:[{type:"text",text:"Final answer recorded."}],terminate:!0}}}}function A4(){return`When you have the final answer, call the ${W$} tool with it. That call ends the task.`}var yH=[{permission:"*",pattern:"*",action:"allow"}],bH="You are mu, a capable and direct assistant. Use the tools available to you to complete the user's task. Be concise: answer what was asked without padding. When a task is done, say so plainly.";function a$($,Z){if($&&typeof $!=="string")return $;let Q=$??$$(),Y=Z?.findModel(Q)??cZ(Q);if(!Y)throw Error(`Unknown model: ${Q}. Pass a ModelInfo to use a custom model.`);return Y}function _H($){if($===void 0)return[{text:bH}];return typeof $==="string"?[{text:$}]:$}function xH($){for(let Z=$.length-1;Z>=0;Z--){let Q=$[Z];if(Q?.role!=="assistant")continue;let Y=Q.content.filter((W)=>W.type==="text").map((W)=>W.text).join("");if(Y.trim().length>0)return Y}return""}function $Y(){return`s${Date.now().toString(36)}-${CH().slice(0,8)}`}class r${options;model;provider;store;tree;_sessionId;controller=new AbortController;steering=[];followUps=[];totals=C$();compactRequested=!1;compactRequestedFocus;queuedManualCompactionFocus;manualCompactionQueued=!1;compacting=!1;compactorOverride;lastContextPercent=0;lastContextTokens=0;lastContextUsage;checkpoints=new hZ;recoveryAttempted=!1;reactiveRecoveryPending=!1;pendingCheckpoint;currentThinking;running=!1;stopping=!1;activeEmit;activeExecution;autonomousScheduled=!1;subscribers=new Set;subscriberQueues=new Map;idleWaiters=new Set;shutdownPromise;sessionStarted=!1;permissionRules;constructor($={}){this.options=$,this.permissionRules=[...$.permissions??yH],this.model=a$($.model,$.extensions),this.currentThinking=n0(this.model,$.thinkingLevel),this.provider=this.providerFor(this.model),this.store=$.session??new p$,this._sessionId=$.sessionId??$Y(),this.tree=new o({type:"session",version:m$,id:this._sessionId,createdAt:new Date().toISOString(),profile:$.sessionProfile??"default",environment:{...$.sessionEnvironment??{}}}),$.runtime?.attach({emit:(Z)=>this.emitTaskEvent(Z),followUp:(Z)=>this.followUp(Z)})}get sessionId(){return this._sessionId}get usage(){return this.totals}get session(){return this.tree}get sessionStore(){return this.store}get modelRef(){return`${this.model.provider}/${this.model.id}`}get contextWindow(){return this.model.contextWindow}get thinking(){return this.currentThinking}get thinkingLevels(){return Z$(this.model)}get isRunning(){return this.running}get isCompacting(){return this.compacting}get permissions(){return[...this.permissionRules]}setPermissions($){this.permissionRules=[...$]}addPermissionRule($){this.permissionRules.push($)}setModel($){let Z={model:this.model,provider:this.provider},Q=a$($,this.options.extensions),Y=this.tree.messagesAt();if(Y.length>0&&p(Y)>=Q.contextWindow*(this.options.compactThreshold??S1))this.compactRequested=!0,this.compactorOverride=Z;this.model=Q,this.provider=this.providerFor(Q);let W=n0(Q,this.currentThinking),G=W!==this.currentThinking;this.currentThinking=W,this.lastContextUsage=void 0,this.refreshContextAccounting(),this.tree.append({type:"settings-change",model:this.modelRef,...G?{thinkingLevel:W}:{}}),this.options.extensions?.emitLifecycle({type:"model_select",model:this.modelRef})}setThinking($){let Z=n0(this.model,$);if(Z===this.currentThinking)return;this.currentThinking=Z,this.tree.append({type:"settings-change",thinkingLevel:Z})}resume($){if(this.running)throw Error("Cannot resume a session while a run is active.");let Z;try{Z=o.fromJsonl($.toJsonl())}catch(W){throw Error("Cannot resume an invalid or unsupported session.",{cause:W})}let Q=Z.header;if(!Q||Q.version!==m$)throw Error("Cannot resume an invalid or unsupported session.");this.tree=Z,this._sessionId=Q.id;let Y=C$();for(let W of Z.all())if(W.type==="message"&&W.message.role==="assistant")Y=K1(Y,W.message.usage);else if(W.type==="compaction"&&W.usage)Y=K1(Y,W.usage);else if(W.type==="compaction-attempt")Y=K1(Y,W.usage);this.totals=Y,this.lastContextUsage=void 0,this.compactRequested=!1,this.compactRequestedFocus=void 0,this.queuedManualCompactionFocus=void 0,this.manualCompactionQueued=!1,this.compacting=!1,this.compactorOverride=void 0,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1,this.steering=[],this.followUps=[],this.pendingCheckpoint=void 0,this.sessionStarted=!1,this.controller=new AbortController,this.model=a$(this.options.model,this.options.extensions),this.provider=this.providerFor(this.model),this.currentThinking=n0(this.model,this.options.thinkingLevel);for(let W of Z.activePath()){if(W.type!=="settings-change")continue;if(W.model)try{this.model=a$(W.model,this.options.extensions),this.provider=this.providerFor(this.model)}catch{}if(typeof W.thinkingLevel==="string"&&W.thinkingLevel.length>0)this.currentThinking=W.thinkingLevel}this.currentThinking=n0(this.model,this.currentThinking),this.rebuildCheckpointHistory(),this.refreshContextAccounting()}newSession($=$Y()){if(this.running)throw Error("Cannot start a new session while a run is active.");this._sessionId=$,this.tree=new o({type:"session",version:m$,id:$,createdAt:new Date().toISOString(),profile:this.options.sessionProfile??"default",environment:{...this.options.sessionEnvironment??{}}}),this.tree.append({type:"settings-change",model:this.modelRef,thinkingLevel:this.currentThinking}),this.totals=C$(),this.lastContextUsage=void 0,this.compactRequested=!1,this.compactRequestedFocus=void 0,this.queuedManualCompactionFocus=void 0,this.manualCompactionQueued=!1,this.compacting=!1,this.compactorOverride=void 0,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1,this.steering=[],this.followUps=[],this.pendingCheckpoint=void 0,this.checkpoints.restore([]),this.sessionStarted=!1,this.controller=new AbortController,this.refreshContextAccounting()}send($){this.steering.push(Y$($))}followUp($){if(this.stopping)return;if(this.followUps.push(Y$($)),!this.running)this.scheduleAutonomousRun()}removeQueuedMessage($,Z){let Q=$==="steer"?this.steering:this.followUps;for(let Y=Q.length-1;Y>=0;Y--){let W=Q[Y];if(W?.role!=="user")continue;if(W.content.filter((X)=>X.type==="text").map((X)=>X.text).join("")!==Z)continue;return Q.splice(Y,1),this.resolveIdleIfDone(),!0}return!1}emitTaskEvent($){this.publishEvent($)}subscribe($){return this.subscribers.add($),()=>{this.subscribers.delete($),this.subscriberQueues.delete($)}}resize($,Z){if($>0&&Z>0)this.options.runtime?.resize?.($,Z)}waitForIdle(){if(!this.running&&!this.autonomousScheduled&&!this.manualCompactionQueued&&this.followUps.length===0)return Promise.resolve();return new Promise(($)=>this.idleWaiters.add($))}stop(){if(this.stopping)return;this.stopping=!0,this.followUps=[],this.manualCompactionQueued=!1,this.queuedManualCompactionFocus=void 0;try{this.options.runtime?.stop?.()}catch{}this.controller.abort(),this.resolveIdleIfDone()}shutdown(){if(this.shutdownPromise)return this.shutdownPromise;return this.stop(),this.shutdownPromise=(async()=>{await this.activeExecution?.catch(()=>{}),this.options.extensions?.emitLifecycle({type:"session_shutdown",sessionId:this._sessionId}),await Promise.allSettled([Promise.resolve().then(()=>this.options.runtime?.shutdown?.()),Promise.resolve().then(()=>this.options.extensions?.shutdown())]),this.resolveIdleIfDone()})(),this.shutdownPromise}abort(){this.controller.abort()}requestCompaction($){this.compactRequested=!0,this.compactRequestedFocus=$?.trim()||void 0}compactNow($){let Z=$?.trim()||void 0;if(this.stopping)return Promise.resolve({status:"failed",message:"Compaction is unavailable after stop."});if(this.running)return this.manualCompactionQueued=!0,this.queuedManualCompactionFocus=Z,Promise.resolve({status:"queued",message:"Compaction queued \u2014 it will run after the current turn."});this.running=!0,this.compacting=!0,this.controller=new AbortController;let Q=(W)=>{if(this.publishToSubscribers(W),W.type==="agent_start"&&!this.sessionStarted)this.sessionStarted=!0,this.options.extensions?.emitLifecycle({type:"session_start",sessionId:this._sessionId});this.options.extensions?.emit(W)};this.activeEmit=Q;let Y=this.executeManualCompaction(Z,Q).finally(()=>{if(this.running=!1,this.compacting=!1,this.activeEmit=void 0,this.activeExecution=void 0,this.manualCompactionQueued&&!this.stopping)this.scheduleManualCompaction();else if(this.followUps.length>0&&!this.stopping)this.scheduleAutonomousRun();this.resolveIdleIfDone()});return this.activeExecution=Y,Y}async executeManualCompaction($,Z){Z({type:"agent_start"});let Q=this.tree.messagesAt(),Y=v$(this.model,Q,this.lastContextUsage?.usage,this.lastContextUsage?.estimatedTokensAtUsage).tokens;Z({type:"compaction_start",layer:2,trigger:"manual",contextTokensBefore:Y});let W=tZ(Q,{targetTokens:Math.floor(this.model.contextWindow*(this.options.compactThreshold??S1)*0.8)}),G=Q,X=[];if(W.evicted>0){Z({type:"compaction_update",layer:2,stage:"clearing-tool-output",toolResultsCleared:W.evicted}),X=W.messages.flatMap((z,F)=>{let D=Q[F];if(!D||z===D)return[];let L=this.tree.entryIdForMessage(D);return L?[{entryId:L,message:z}]:[]});let V=W.messages.filter((z,F)=>z!==Q[F]).length;if(X.length===V)G=W.messages;else X=[]}let J=this.compactorOverride??{model:this.model,provider:this.provider};this.compactorOverride=void 0,Z({type:"compaction_update",layer:2,stage:"summarizing"});let B,K=!1;try{let V=this.options.getCredentials,z=await nZ(G,{provider:J.provider,model:J.model,keepRecentTokens:Math.min(Q$,Math.max(2,Math.floor(this.model.contextWindow*0.2))),...$?{customInstructions:$}:{},...this.options.carryoverExtractor?{carryoverExtractor:this.options.carryoverExtractor}:{},signal:this.controller.signal,streamOpts:{sessionId:this._sessionId,...this.options.apiKey?{apiKey:this.options.apiKey}:{},...V?{getCredentials:()=>V(J.model.provider)}:{}}});if(B=z.usage,z.summary.length===0){let d=p(Q);return Z({type:"compaction_end",layer:2,trigger:"manual",status:"noop",tokensFreed:0,contextTokensBefore:Y,contextTokensAfter:d}),Z({type:"agent_end",messages:Q,reason:"done"}),{status:"noop",message:"Context is already compact enough \u2014 no changes made.",tokensBefore:Y,tokensAfter:d,tokensFreed:0}}Z({type:"compaction_update",layer:2,stage:"installing"});let F=h$(z),D=z.keptMessages[0],L=null;if(D){let d=G.indexOf(D),w=d===-1?D:Q[d],_=w?this.tree.entryIdForMessage(w):void 0;if(!_)throw Error("Compaction tail could not be mapped to the session");L=_}let q=F[0],U=await this.options.refreshContext?.(F,{sessionId:this._sessionId})??[],A=p([...F,...U]),N=o.fromJsonl(this.tree.toJsonl());if(X.length>0)N.append({type:"microcompaction",replacements:X});let j=N.activePath().filter((d)=>d.type==="compaction").length+1,P=N.append({type:"compaction",summary:z.summary,...z.carryover!==void 0?{carryover:z.carryover}:{},firstKeptEntryId:L,...q?{timestamp:q.timestamp}:{},trigger:"manual",contextTokensBefore:Y,contextTokensAfter:A,model:this.modelRef,compactorModel:`${J.model.provider}/${J.model.id}`,windowNumber:j,strategy:"summary-tail",keptTokens:p(z.keptMessages),toolResultsCleared:X.length,usage:z.usage});for(let d of U)N.appendMessage(d);let M=N.messagesAt(),I=p(M),v=Math.max(0,Y-I);return await this.store.save(this._sessionId,N),this.tree=N,this.totals=K1(this.totals,z.usage),K=!0,this.lastContextUsage=void 0,this.lastContextPercent=this.model.contextWindow>0?I/this.model.contextWindow:0,this.lastContextTokens=I,Z({type:"usage_updated",sessionTotals:this.totals,contextTokens:I,contextPercent:this.lastContextPercent}),Z({type:"compaction_end",layer:2,trigger:"manual",status:"completed",tokensFreed:v,summaryEntryId:P.id,contextTokensBefore:Y,contextTokensAfter:I,toolResultsCleared:X.length,keptTokens:p(z.keptMessages)}),Z({type:"agent_end",messages:M,reason:"done"}),{status:"completed",message:`Context compacted: ${Y.toLocaleString()} \u2192 ${I.toLocaleString()} tokens (${v.toLocaleString()} freed).`,tokensBefore:Y,tokensAfter:I,tokensFreed:v,toolResultsCleared:X.length,summaryEntryId:P.id}}catch(V){let z=B??(V instanceof g0?V.usage:void 0);if(z&&!K)this.tree.append({type:"compaction-attempt",status:this.controller.signal.aborted?"cancelled":"failed",trigger:"manual",model:this.modelRef,compactorModel:`${J.model.provider}/${J.model.id}`,timestamp:Date.now(),usage:z}),await this.store.save(this._sessionId,this.tree).catch(()=>{}),this.totals=K1(this.totals,z),Z({type:"usage_updated",sessionTotals:this.totals,contextTokens:Y,contextPercent:this.model.contextWindow>0?Y/this.model.contextWindow:0});let F=this.controller.signal.aborted,D=F?"Compaction cancelled \u2014 original conversation preserved.":`Compaction failed: ${V instanceof Error?V.message:String(V)} Original conversation preserved.`;return Z({type:"compaction_end",layer:2,trigger:"manual",status:F?"cancelled":"failed",tokensFreed:0,contextTokensBefore:Y,contextTokensAfter:Y,errorMessage:D}),Z({type:"agent_end",messages:Q,reason:F?"aborted":"done"}),{status:F?"cancelled":"failed",message:D,tokensBefore:Y,tokensAfter:Y,tokensFreed:0}}}get checkpointHistory(){return this.checkpoints}async undo(){if(this.running)return{ok:!1,message:"Cannot undo while a run is active."};let $=this.options.checkpointProvider;if(!$)return{ok:!1,message:"This profile does not support undo."};let Z=this.checkpoints.peekUndo();if(!Z)return{ok:!1,message:"Nothing to undo."};if(!this.tree.has(Z.beforeEntryId))return{ok:!1,message:"Could not undo: the conversation checkpoint is missing."};let Q;try{Q=await $.diff(Z.beforeRef,Z.afterRef)}catch(V){return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}let Y;try{Y=await $.snapshot("before undo of last turn")}catch(V){return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}if(!Y)return{ok:!1,message:"Could not undo: failed to capture current state."};try{await this.restoreCheckpointResources($,Z.beforeRef,Q)}catch(V){let z=await this.restoreCheckpointResources($,Y,Q).then(()=>{return}).catch((F)=>F);return{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}${z?`; rollback failed: ${z instanceof Error?z.message:String(z)}`:""}`}}let W=this.tree,G=o.fromJsonl(W.toJsonl());G.fork(Z.beforeEntryId);let X=this.checkpoints.state(),J=X.done.slice(0,-1),B=[...X.undone,{...Z,redoRef:Y}];this.appendCheckpointCursor(G,J,B);try{await this.store.save(this._sessionId,G)}catch(V){return await this.restoreCheckpointResources($,Y,Q).catch(()=>{}),await this.store.save(this._sessionId,W).catch(()=>{}),{ok:!1,message:`Could not undo: ${V instanceof Error?V.message:String(V)}`}}let K=this.checkpointDetails(Z);return this.checkpoints.restore(J,B),this.tree=G,this.refreshContextAccounting(),{ok:!0,message:"Undid the last turn.",data:{kind:"checkpoint",action:"undo",files:Q,messageCount:K.messageCount,...K.prompt!==void 0?{prompt:K.prompt}:{}}}}async redo(){if(this.running)return{ok:!1,message:"Cannot redo while a run is active."};let $=this.options.checkpointProvider;if(!$)return{ok:!1,message:"This profile does not support redo."};let Z=this.checkpoints.peekRedo();if(!Z)return{ok:!1,message:"Nothing to redo."};if(!this.tree.has(Z.id))return{ok:!1,message:"Could not redo: the conversation checkpoint is missing."};let Q;try{Q=await $.diff(Z.beforeRef,Z.afterRef)}catch(F){return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}let Y;try{Y=await $.snapshot("before redo of last turn")}catch(F){return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}if(!Y)return{ok:!1,message:"Could not redo: failed to capture current state."};try{await this.restoreCheckpointResources($,Z.redoRef??Z.afterRef,Q)}catch(F){let D=await this.restoreCheckpointResources($,Y,Q).then(()=>{return}).catch((L)=>L);return{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}${D?`; rollback failed: ${D instanceof Error?D.message:String(D)}`:""}`}}let W=this.tree,G=o.fromJsonl(W.toJsonl());G.fork(Z.id);let X=this.checkpoints.state(),{redoRef:J,...B}=Z,K=[...X.done,B],V=X.undone.slice(0,-1);this.appendCheckpointCursor(G,K,V);try{await this.store.save(this._sessionId,G)}catch(F){return await this.restoreCheckpointResources($,Y,Q).catch(()=>{}),await this.store.save(this._sessionId,W).catch(()=>{}),{ok:!1,message:`Could not redo: ${F instanceof Error?F.message:String(F)}`}}let z=this.checkpointDetails(Z);return this.checkpoints.restore(K,V),this.tree=G,this.refreshContextAccounting(),{ok:!0,message:"Redid the turn.",data:{kind:"checkpoint",action:"redo",files:Q,messageCount:z.messageCount}}}async sessionDiff(){let $=this.options.checkpointProvider,Z=this.checkpoints.first();if(!$||!Z)return[];return $.diff(Z.beforeRef)}forkPoints(){let $=[];for(let Z of this.tree.activePath()){if(Z.type!=="message")continue;let Q=Z.message;if(Q.role==="toolResult")continue;if(Q.role==="assistant"&&Q.content.some((G)=>G.type==="toolCall"))continue;let Y=Q.content.filter((G)=>G.type==="text").map((G)=>G.text).join("").replace(/\s+/g," ").trim(),W=Q.role==="assistant"?"mu":Q.role;$.push({id:Z.id,description:`${W} \xB7 ${Y.slice(0,80)||"(no text)"}`})}return $}async fork($){if(this.running)return{ok:!1,message:"Cannot fork while a run is active."};if(!this.tree.get($))return{ok:!1,message:`Could not fork: unknown entry ${$}.`};let Z=o.fromJsonl(this.tree.toJsonl());Z.fork($),Z.append({type:"custom",customType:"fork",data:{fromEntryId:this.tree.head,targetEntryId:$}});try{await this.store.save(this._sessionId,Z)}catch(Q){return{ok:!1,message:`Could not fork: ${Q instanceof Error?Q.message:String(Q)}`}}return this.tree=Z,this.rebuildCheckpointHistory(),this.refreshContextAccounting(),{ok:!0,message:`Forked from ${$}.`}}get contextPercent(){return this.lastContextPercent}get contextTokens(){return this.lastContextTokens}async run($,Z){return this.execute($,Z,()=>{})}stream($,Z){let Q=[],Y=[],W=!1,G=(J)=>{let B=Y.shift();if(B)B({value:J,done:!1});else Q.push(J)},X=this.execute($,Z,G).finally(()=>{W=!0;while(Y.length>0)Y.shift()?.({value:void 0,done:!0})});return{async*[Symbol.asyncIterator](){for(;;){if(Q.length>0){yield Q.shift();continue}if(W)return;let J=await new Promise((B)=>Y.push(B));if(J.done)return;yield J.value}},result:()=>X}}async beginCheckpoint($){let Z=this.options.checkpointProvider;if(this.pendingCheckpoint=void 0,!Z)return;try{let Q=await Z.snapshot("before user turn");if(Q)this.pendingCheckpoint={beforeEntryId:$,beforeRef:Q}}catch{}}async finishCheckpoint(){let $=this.pendingCheckpoint,Z=this.options.checkpointProvider;if(this.pendingCheckpoint=void 0,!$||!Z)return;let Q=await Z.snapshot("after user turn").catch(()=>{return});if(!Q)return;let W={id:this.tree.append({type:"checkpoint",beforeEntryId:$.beforeEntryId,checkpointRef:$.beforeRef,checkpointAfterRef:Q,label:"turn"}).id,beforeEntryId:$.beforeEntryId,beforeRef:$.beforeRef,afterRef:Q,label:"turn"};this.checkpoints.record(W);let G=this.checkpoints.state();this.appendCheckpointCursor(this.tree,G.done,G.undone)}appendCheckpointCursor($,Z,Q){let Y=(W)=>({id:W.id,...W.redoRef?{redoRef:W.redoRef}:{}});$.append({type:"custom",customType:"checkpoint-cursor",data:{done:Z.map(Y),undone:Q.map(Y)}})}async restoreCheckpointResources($,Z,Q){if(Q.length===0)return;let Y=Q.map((W)=>W.path);if($.restoreResources){await $.restoreResources(Z,Y);return}await $.restore(Z)}checkpointDetails($){let Z=this.tree.pathTo($.id),Q=$.beforeEntryId?Z.findIndex((X)=>X.id===$.beforeEntryId):-1,Y=Z.slice(Q+1),W=Y.find((X)=>X.type==="message"&&X.message.role==="user"),G=W?.type==="message"?W.message.content.filter((X)=>X.type==="text").map((X)=>X.text).join(`
130
+ `):void 0;return{messageCount:Y.filter((X)=>X.type==="message").length,...G!==void 0?{prompt:G}:{}}}rebuildCheckpointHistory(){let $=new Map;for(let W of this.tree.all()){if(W.type!=="checkpoint")continue;$.set(W.id,{id:W.id,beforeEntryId:W.beforeEntryId,beforeRef:W.checkpointRef,afterRef:W.checkpointAfterRef,...W.label?{label:W.label}:{}})}let Z=this.tree.activePath(),Q=Z.findLastIndex((W)=>W.type==="custom"&&W.customType==="checkpoint-cursor"),Y=Q===-1?void 0:Z[Q];if(Y?.type==="custom"){let W=Y.data,G=(B)=>Array.isArray(B)?B.map((K)=>{let V=typeof K==="string"?K:typeof K==="object"&&K!==null&&typeof K.id==="string"?K.id:void 0,z=V?$.get(V):void 0;if(!z)return;let F=typeof K==="object"&&K!==null&&typeof K.redoRef==="string"?K.redoRef:void 0;return{...z,...F?{redoRef:F}:{}}}).filter((K)=>K!==void 0):[],X=G(W.done),J=G(W.undone);for(let B of Z.slice(Q+1)){if(B.type!=="checkpoint")continue;let K=$.get(B.id);if(K)X.push(K);J=[]}this.checkpoints.restore(X,J);return}this.checkpoints.restore(Z.filter((W)=>W.type==="checkpoint").map((W)=>$.get(W.id)).filter((W)=>W!==void 0))}execute($,Z,Q){if(this.stopping)return Promise.reject(Error("Agent has been stopped."));if(this.running)return Promise.reject(Error("Agent already has an active run; use send() to steer it."));this.running=!0;let Y=(G)=>{if(Q(G),this.publishToSubscribers(G),G.type==="agent_start"&&!this.sessionStarted)this.sessionStarted=!0,this.options.extensions?.emitLifecycle({type:"session_start",sessionId:this._sessionId});this.options.extensions?.emit(G)};this.activeEmit=Y;let W=this.executeRun($,Z,Y).finally(()=>{if(this.running=!1,this.activeEmit=void 0,this.activeExecution=void 0,this.manualCompactionQueued&&!this.stopping)this.scheduleManualCompaction();else if(this.followUps.length>0&&!this.stopping)this.scheduleAutonomousRun();this.resolveIdleIfDone()});return this.activeExecution=W,W}async executeRun($,Z,Q){this.controller=new AbortController,this.recoveryAttempted=!1,this.reactiveRecoveryPending=!1;let Y=this.options.extensions,W=$;if(typeof $==="string"&&Y){Y.emitLifecycle({type:"input",text:$});let w=await Y.runInputHooks($);if(w?.consume){if(Z?.output)throw Error("Structured output is unavailable because an extension consumed the input.");let _=[{type:"agent_start"},{type:"agent_end",messages:[],reason:"done"}];for(let t of _)Q(t);return{text:"",messages:[],usage:this.totals,reason:"done",sessionId:this._sessionId}}if(w?.text!==void 0)W=w.text}let G=typeof W==="string"?Y$(W):{role:"user",content:W,timestamp:Date.now()},X,J=[...this.options.tools??[],...Y?[...Y.tools.values()]:[]];if(Z?.allowedTools){let w=new Set(J.map((g)=>g.name)),_=Z.allowedTools.filter((g)=>!w.has(g));if(_.length>0)throw Error(`Unknown allowed tool${_.length===1?"":"s"}: ${_.join(", ")}`);let t=new Set(Z.allowedTools);J=J.filter((g)=>t.has(g.name))}let B=Z?.model?a$(Z.model,this.options.extensions):this.model,K=Z?.model?this.providerFor(B):this.provider,V=n0(B,this.currentThinking),z=Z?.model?void 0:this.lastContextUsage;if(Z?.model)this.lastContextUsage=void 0;let F=_H(this.options.systemPrompt);if(Z?.output)J.push(U4(Z.output,(w)=>{X=w})),F.push({text:A4(),dynamic:!0});let D=this.tree.messagesAt(),L=D.length===0&&this.options.initialMessages?this.options.initialMessages:[];for(let w of L)this.tree.appendMessage(w);let q=await this.options.refreshContext?.([...D,...L],{sessionId:this._sessionId})??[];for(let w of q)this.tree.appendMessage(w);let U={systemPrompt:F,messages:[...D,...L,...q],...J.length>0?{tools:J}:{}};await this.beginCheckpoint(this.tree.head);let A,N=(w)=>v$(B,w,z?.usage,z?.estimatedTokensAtUsage),j=(w,_,t)=>{if(this.totals=K1(this.totals,w),t){if(z={usage:w,estimatedTokensAtUsage:p(t)},!Z?.model)this.lastContextUsage=z}let g=N(_);this.lastContextPercent=g.percent,this.lastContextTokens=g.tokens,Q({type:"usage_updated",sessionTotals:this.totals,contextTokens:g.tokens,contextPercent:g.percent});let r=q4(this.options.budget,this.totals);if(r)A=r;return r},P=this.options.getCredentials,M={provider:K,model:B,streamOpts:{sessionId:this._sessionId,...this.options.apiKey?{apiKey:this.options.apiKey}:{},...P?{getCredentials:()=>P(B.provider)}:{}},thinkingLevel:V,...this.options.budget?.maxTurns!==void 0?{maxTurns:this.options.budget.maxTurns}:{},getSteeringMessages:()=>{let w=this.steering;return this.steering=[],w},getFollowUpMessages:()=>{let w=this.followUps.shift();return w?[w]:[]},beforeToolCall:async(w)=>{if(w.toolCall.name===W$)return;let _=w.args;if(Y){let A0=await Y.runToolCallHooks({toolName:w.toolCall.name,toolCallId:w.toolCall.id,args:_});if(A0?.block)return{block:!0,reason:A0.reason??"Blocked by an extension"};if(A0?.args)_=A0.args}let t=J.find((A0)=>A0.name===w.toolCall.name),g=w.toolCall.name;try{g=t?.permissionScope?.(_)??g}catch{}let r=JSON.stringify(_);try{r=t?.permissionPattern?.(_)??r}catch{}let fZ=g===w.toolCall.name?[w.toolCall.name]:[w.toolCall.name,g],Y1=r6(this.permissionRules,fZ,r),I$=_===w.args?void 0:{rewrittenArgs:_};if(Y1==="allow")return I$;if(Y1==="deny")return{block:!0,reason:`Permission denied for ${w.toolCall.name}`};let T0=await Promise.resolve(t?.permissionDetails?.(_)).catch(()=>{return}),p0={id:`p${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,toolCallId:w.toolCall.id,toolName:w.toolCall.name,permission:g,pattern:r,description:T0?.description??`Run ${w.toolCall.name}`,...T0?.preview?{preview:T0.preview}:{}};Q({type:"permission_asked",request:p0});let d1="deny";if(this.options.onPermission&&!this.controller.signal.aborted){let A0=this.controller.signal,u,H0=new Promise((E1)=>{u=()=>E1("deny"),A0.addEventListener("abort",u,{once:!0})});try{d1=await Promise.race([this.options.onPermission(p0),H0])}finally{if(u)A0.removeEventListener("abort",u)}}if(Q({type:"permission_resolved",requestId:p0.id,outcome:d1}),d1==="allow")return I$;return{block:!0,reason:`Permission denied for ${w.toolCall.name}`}},prepareContext:async(w)=>{let _=N(w);this.lastContextPercent=_.percent,this.lastContextTokens=_.tokens;let t=this.options.autoCompact!==!1,g=w;if(t&&_.percent>=a6&&!this.compactRequested){let u=tZ(g,{targetTokens:Math.floor(B.contextWindow*(this.options.compactThreshold??S1)*0.8)});if(u.evicted>0){let H0=u.messages.flatMap((k0,i1)=>{let n1=g[i1];if(!n1||k0===n1)return[];let w6=this.tree.entryIdForMessage(n1);return w6?[{entryId:w6,message:k0}]:[]}),E1=u.messages.filter((k0,i1)=>k0!==g[i1]).length;if(H0.length===E1){Q({type:"compaction_start",layer:1}),this.tree.append({type:"microcompaction",replacements:H0}),g=u.messages,z=void 0,this.lastContextUsage=void 0;let k0=N(g);this.lastContextPercent=k0.percent,this.lastContextTokens=k0.tokens,Q({type:"compaction_end",layer:1,tokensFreed:u.tokensFreed})}}}let r=N(g);if(!(this.compactRequested||t&&p6(r,this.options.compactThreshold??S1)))return{messages:g};let Y1=this.reactiveRecoveryPending?"overflow":this.compactorOverride?"model-change":this.compactRequested?"manual":"threshold",I$=this.compactRequestedFocus,T0=this.compactorOverride??{model:B,provider:K};this.compactRequested=!1,this.compactRequestedFocus=void 0,this.compactorOverride=void 0;let p0=this.reactiveRecoveryPending?3:2;if(p0===2)Q({type:"compaction_start",layer:p0,trigger:Y1,contextTokensBefore:r.tokens});let d1,A0=!1;try{Q({type:"compaction_update",layer:p0,stage:"summarizing"});let u=await nZ(g,{provider:T0.provider,model:T0.model,keepRecentTokens:Math.min(Q$,Math.max(2,Math.floor(B.contextWindow*0.2))),...M.streamOpts?{streamOpts:{...M.streamOpts,...P?{getCredentials:()=>P(T0.model.provider)}:{}}}:{},...this.options.carryoverExtractor?{carryoverExtractor:this.options.carryoverExtractor}:{},...I$?{customInstructions:I$}:{},signal:this.controller.signal});d1=u.usage;let H0=h$(u),E1;if(u.summary.length>0){let k0=u.keptMessages[0],i1=null;if(k0){let vZ=this.tree.entryIdForMessage(k0);if(!vZ)throw Error("Compaction tail could not be mapped to the session");i1=vZ}let n1=H0[0];E1=this.tree.append({type:"compaction",summary:u.summary,...u.carryover!==void 0?{carryover:u.carryover}:{},firstKeptEntryId:i1,...n1?{timestamp:n1.timestamp}:{},trigger:Y1,contextTokensBefore:r.tokens,contextTokensAfter:p(H0),model:`${B.provider}/${B.id}`,compactorModel:`${T0.model.provider}/${T0.model.id}`,windowNumber:this.tree.activePath().filter((vZ)=>vZ.type==="compaction").length+1,strategy:"summary-tail",keptTokens:p(u.keptMessages),usage:u.usage}).id}return z=void 0,this.lastContextUsage=void 0,j(u.usage,H0),A0=!0,Q({type:"compaction_end",layer:p0,tokensFreed:u.tokensFreed,trigger:Y1,status:u.summary.length>0?"completed":"noop",contextTokensBefore:r.tokens,contextTokensAfter:N(H0).tokens,keptTokens:p(u.keptMessages),...E1?{summaryEntryId:E1}:{}}),this.reactiveRecoveryPending=!1,{messages:H0,stop:A!==void 0}}catch(u){let H0=d1??(u instanceof g0?u.usage:void 0);if(H0&&!A0)this.tree.append({type:"compaction-attempt",status:this.controller.signal.aborted?"cancelled":"failed",trigger:Y1,model:`${B.provider}/${B.id}`,compactorModel:`${T0.model.provider}/${T0.model.id}`,timestamp:Date.now(),usage:H0}),j(H0,g);return Q({type:"compaction_end",layer:p0,tokensFreed:0,trigger:Y1,status:this.controller.signal.aborted?"cancelled":"failed",contextTokensBefore:r.tokens,contextTokensAfter:r.tokens,errorMessage:u instanceof Error?u.message:"Compaction failed for an unknown reason"}),this.reactiveRecoveryPending=!1,{messages:g,stop:A!==void 0}}},...Y?{transformContext:(w)=>Y.runContextHooks(w)}:{},...Y?{afterToolCall:async(w)=>{let _=await Y.runToolResultHooks({toolName:w.toolCall.name,toolCallId:w.toolCall.id,result:w.result,isError:w.isError});if(!_)return;return{...w.result,..._.content?{content:_.content}:{},..._.isError!==void 0?{isError:_.isError}:{}}}}:{},recoverFromError:(w)=>{if(this.recoveryAttempted||!k$(w))return!1;return this.recoveryAttempted=!0,this.compactRequested=!0,this.reactiveRecoveryPending=!0,Q({type:"compaction_start",layer:3,trigger:"overflow"}),!0},shouldStopAfterTurn:async(w)=>{if(this.recoveryAttempted=!1,j(w.message.usage,w.context.messages,w.requestMessages))return!0;return!1}},I=await(async()=>{try{return await d6([G],U,M,async(w)=>{if(Q(w),w.type==="message_end")this.tree.appendMessage(w.message);if(w.type==="message_end"&&w.message===G||w.type==="turn_end")await this.store.save(this._sessionId,this.tree)},this.controller.signal)}finally{await this.finishCheckpoint()}})();await this.store.save(this._sessionId,this.tree);let v=A??(I.reason==="budget"?"maxCostUsd":I.reason),d={text:xH(I.messages),messages:I.messages,usage:this.totals,reason:v,sessionId:this._sessionId};if(!Z?.output)return d;if(X===void 0)throw Error(`Structured output was requested but the model never produced a valid one (run ended: ${v}).`);return{...d,output:X}}providerFor($){return this.options.provider??this.options.extensions?.providers.get($.provider)??_6($.provider)}publishEvent($){if(this.activeEmit){this.activeEmit($);return}this.publishToSubscribers($),this.options.extensions?.emit($)}refreshContextAccounting(){let $=v$(this.model,this.tree.messagesAt(),this.lastContextUsage?.usage,this.lastContextUsage?.estimatedTokensAtUsage);this.lastContextPercent=$.percent,this.lastContextTokens=$.tokens,this.publishEvent({type:"usage_updated",sessionTotals:this.totals,contextTokens:$.tokens,contextPercent:$.percent})}publishToSubscribers($){for(let Z of this.subscribers){let Y=(this.subscriberQueues.get(Z)??Promise.resolve()).then(()=>Z($)).catch(()=>{});this.subscriberQueues.set(Z,Y),Y.finally(()=>{if(this.subscriberQueues.get(Z)===Y&&!this.subscribers.has(Z))this.subscriberQueues.delete(Z)})}}scheduleAutonomousRun(){if(this.running||this.autonomousScheduled||this.stopping||this.followUps.length===0)return;this.autonomousScheduled=!0,queueMicrotask(()=>{if(this.autonomousScheduled=!1,this.running||this.stopping){this.resolveIdleIfDone();return}let $=this.followUps.shift();if(!$||$.role!=="user"){this.resolveIdleIfDone();return}this.execute($.content,void 0,()=>{}).catch(()=>{})})}scheduleManualCompaction(){if(this.running||this.autonomousScheduled||this.stopping||!this.manualCompactionQueued)return;let $=this.queuedManualCompactionFocus;this.manualCompactionQueued=!1,this.queuedManualCompactionFocus=void 0,this.autonomousScheduled=!0,queueMicrotask(()=>{if(this.autonomousScheduled=!1,this.running||this.stopping){this.resolveIdleIfDone();return}this.compactNow($).catch(()=>{})})}resolveIdleIfDone(){if(this.running||this.autonomousScheduled||this.manualCompactionQueued||this.followUps.length>0)return;for(let $ of this.idleWaiters)$();this.idleWaiters.clear()}}import{createHash as vH,randomBytes as V5}from"crypto";import{chmod as O4,mkdir as hH,readFile as gH,rename as uH,stat as mH,unlink as pH,writeFile as lH}from"fs/promises";import{createServer as XY}from"http";import{homedir as cH}from"os";import{dirname as dH,join as JY}from"path";var kH=[{x:0,y:0,w:5,h:1},{x:0,y:1,w:1,h:4},{x:2,y:1,w:1,h:4},{x:4,y:1,w:1,h:4},{x:6,y:0,w:1,h:5},{x:9,y:0,w:1,h:5},{x:7,y:4,w:2,h:1}];function N4($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function fH(){return`<svg class="mark" viewBox="0 0 10 5" role="img" aria-label="mu">${kH.map((Z)=>`<rect x="${Z.x}" y="${Z.y}" width="${Z.w}" height="${Z.h}"/>`).join("")}</svg>`}function M4($){let Z=$.status==="success"?"#fff":"#f87171";return`<!doctype html>
131
131
  <html lang="en">
132
132
  <head>
133
133
  <meta charset="utf-8">
134
134
  <meta name="viewport" content="width=device-width, initial-scale=1">
135
135
  <meta name="color-scheme" content="dark">
136
- <title>mu \u2014 ${q4($.heading.toLowerCase())}</title>
136
+ <title>mu \u2014 ${N4($.heading.toLowerCase())}</title>
137
137
  <style>
138
138
  :root { color-scheme: dark; }
139
139
  html, body { height: 100%; }
@@ -185,92 +185,92 @@ Prefer a small number of well-chosen tool calls over many exploratory ones. When
185
185
  </head>
186
186
  <body>
187
187
  <main>
188
- ${TH()}
189
- <h1>${q4($.heading)}</h1>
190
- <p>${q4($.detail)}</p>
188
+ ${fH()}
189
+ <h1>${N4($.heading)}</h1>
190
+ <p>${N4($.detail)}</p>
191
191
  </main>
192
192
  </body>
193
193
  </html>
194
- `}function G5($){return A4({provider:$,status:"success",heading:"Authentication successful",detail:`${$} authentication completed. You can close this window.`})}function b1($,Z){return A4({provider:$,status:"error",heading:"Authentication failed",detail:Z})}var M4=1,O4="app_EMoamEEZ73f0CkXaXp7hrann",X5="OpenAI",WY="https://auth.openai.com",kH="openid profile email offline_access api.connectors.read api.connectors.invoke",fH="https://api.openai.com/auth",z1="openai-codex",j4="github-copilot",B5={"user-agent":"GitHubCopilotChat/0.35.0","editor-version":"vscode/1.107.0","editor-plugin-version":"copilot-chat/0.35.0","copilot-integration-id":"vscode-chat"},vH="2026-06-01",gH=60000,_1=15000,hH=300000,uH=[1455,1457];function P4(){return YY(_H(),".mu","auth.json")}function mH(){return{version:M4,providers:{}}}function a$($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function lH($,Z){if(!a$($))throw Error(`Invalid stored credentials for "${Z}"`);if($.type==="apiKey"&&typeof $.apiKey==="string"&&$.apiKey.length>0)return{type:"apiKey",apiKey:$.apiKey};if($.type==="oauth"&&typeof $.accessToken==="string"&&typeof $.refreshToken==="string"&&typeof $.expiresAt==="number"&&Number.isFinite($.expiresAt)){if((Z==="openai"||Z===z1)&&(typeof $.accountId!=="string"||$.accountId.length===0))throw Error(`Invalid stored credentials for "${Z}"`);return{type:"oauth",accessToken:$.accessToken,refreshToken:$.refreshToken,...typeof $.idToken==="string"?{idToken:$.idToken}:{},expiresAt:$.expiresAt,...typeof $.accountId==="string"?{accountId:$.accountId}:{},...typeof $.baseUrl==="string"?{baseUrl:$.baseUrl}:{},...Array.isArray($.availableModelIds)&&$.availableModelIds.every((Q)=>typeof Q==="string")?{availableModelIds:$.availableModelIds}:{}}}throw Error(`Invalid stored credentials for "${Z}"`)}async function r0($={}){let Z=$.authFile??P4(),Q;try{Q=await EH(Z,"utf8")}catch(X){if(X.code==="ENOENT")return mH();throw X}let Y;try{Y=JSON.parse(Q)}catch{throw Error(`Could not parse authentication file: ${Z}`)}if(!a$(Y)||Y.version!==M4||!a$(Y.providers))throw Error(`Unsupported authentication file: ${Z}`);let W={};for(let[X,J]of Object.entries(Y.providers)){let B=lH(J,X),K=X==="openai"&&B.type==="oauth"?z1:X;if(K===X)W[K]=B;else W[K]??=B}let G=Y.activeProvider==="openai"&&!W.openai&&W[z1]?.type==="oauth"?z1:Y.activeProvider;if(process.platform!=="win32"){if(((await CH(Z)).mode&63)!==0)await N4(Z,384)}return{version:M4,...typeof G==="string"?{activeProvider:G}:{},providers:W}}async function r$($,Z={}){let Q=Z.authFile??P4(),Y=xH(Q);if(await RH(Y,{recursive:!0,mode:448}),process.platform!=="win32")await N4(Y,448);let W=YY(Y,`.auth-${process.pid}-${K5(8).toString("hex")}.tmp`);try{if(await bH(W,`${JSON.stringify($,null,2)}
195
- `,{encoding:"utf8",mode:384,flag:"wx"}),await SH(W,Q),process.platform!=="win32")await N4(Q,384)}catch(G){throw await yH(W).catch(()=>{}),G}}async function pH($,Z,Q={}){let Y=$.trim(),W=Z.trim();if(!Y)throw Error("Provider is required");if(!W)throw Error("API key cannot be empty");let G=await r0(Q);G.providers[Y]={type:"apiKey",apiKey:W},G.activeProvider=Y,await r$(G,Q)}async function cH($,Z={}){let Q=$.trim();if(!Q)throw Error("Provider is required");let Y=await r0(Z);if(!Y.providers[Q])return!1;if(delete Y.providers[Q],Y.activeProvider===Q){let W=Object.keys(Y.providers)[0];if(W)Y.activeProvider=W;else delete Y.activeProvider}return await r$(Y,Z),!0}async function dH($={}){return Object.keys((await r0($)).providers)}async function iH($={}){let Z=await r0($);return Z.activeProvider&&Z.providers[Z.activeProvider]?Z.activeProvider:Object.keys(Z.providers)[0]}async function H5($,Z,Q){let Y=await r0(Q);Y.providers[$]=Z,Y.activeProvider=$,await r$(Y,Q)}function GY($){let Z=$.split(".")[1];if(!Z)return;try{let Q=JSON.parse(Buffer.from(Z,"base64url").toString("utf8"));return a$(Q)?Q:void 0}catch{return}}function oQ($){let Z=GY($)?.[fH]?.chatgpt_account_id;return typeof Z==="string"&&Z.length>0?Z:void 0}function nH($){let Z=GY($)?.exp;return typeof Z==="number"&&Number.isFinite(Z)?Z*1000:void 0}function aH($,Z,Q){let Y=Q.trim()?`: ${Q.trim().slice(0,1000)}`:"";return Error(`OpenAI token ${$} failed (${Z.status})${Y}`)}async function XY($,Z){if(!$.ok)throw aH(Z,$,await $.text().catch(()=>""));let Q=await $.json();if(!a$(Q))throw Error(`OpenAI token ${Z} returned invalid JSON`);return Q}function JY($,Z,Q){let Y=typeof $.access_token==="string"?$.access_token:Q?.accessToken,W=typeof $.refresh_token==="string"?$.refresh_token:Q?.refreshToken,G=typeof $.id_token==="string"?$.id_token:Q?.idToken;if(!Y||!W)throw Error("OpenAI token response is missing access or refresh token");let X=oQ(Y)??(G?oQ(G):void 0)??Q?.accountId;if(!X)throw Error("OpenAI token did not include a ChatGPT account");if(Q?.accountId&&X!==Q.accountId)throw Error("Refusing to rotate OpenAI credentials across ChatGPT accounts");let J=typeof $.expires_in==="number"&&Number.isFinite($.expires_in)?$.expires_in*1000:void 0,B=nH(Y)??(J!==void 0?Z+J:Z+3600000);return{type:"oauth",accessToken:Y,refreshToken:W,...G?{idToken:G}:{},expiresAt:B,accountId:X}}async function rH($,Z){let Q=(Z.openAiIssuer??WY).replace(/\/+$/,""),Y=await(Z.fetch??fetch)(`${Q}/oauth/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_id:Z.openAiClientId??O4,grant_type:"refresh_token",refresh_token:$.refreshToken}),signal:AbortSignal.timeout(_1)});return JY(await XY(Y,"refresh"),(Z.now??Date.now)(),$)}function sQ($){return{type:"oauth",accessToken:$.accessToken,...$.accountId?{accountId:$.accountId}:{},...$.baseUrl?{baseUrl:$.baseUrl}:{},...$.availableModelIds?{availableModelIds:$.availableModelIds}:{}}}function eQ($,Z,Q){return Z.expiresAt>Q+gH&&($!==j4||Z.availableModelIds!==void 0)}async function F1($,Z){let Q=await $.text(),Y;try{Y=JSON.parse(Q)}catch{throw Error(`${Z} returned invalid JSON (${$.status})`)}if(!$.ok){let W=typeof Y==="object"&&Y!==null?Y:{},G=W.error_description??W.message??W.error;throw Error(`${Z} failed (${$.status})${typeof G==="string"?`: ${G}`:""}`)}if(typeof Y!=="object"||Y===null||Array.isArray(Y))throw Error(`${Z} returned invalid JSON`);return Y}function $Y($,Z,Q=60000){let Y=typeof $.access_token==="string"?$.access_token:Z.accessToken,W=typeof $.refresh_token==="string"?$.refresh_token:Z.refreshToken,G=typeof $.expires_in==="number"&&Number.isFinite($.expires_in)?$.expires_in:3600;if(!Y||!W)throw Error("OAuth response is missing tokens");return{...Z,accessToken:Y,refreshToken:W,expiresAt:Date.now()+G*1000-Q}}function KY($){let Z=$.match(/(?:^|;)proxy-ep=([^;]+)/)?.[1];return Z?`https://${Z.replace(/^proxy\./,"api.")}`:"https://api.individual.githubcopilot.com"}function tH($){if(typeof $!=="object"||$===null||!Array.isArray($.data))throw Error("GitHub Copilot models response is invalid");return $.data.filter((Z)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z))}function oH($){let Z=typeof $.policy==="object"&&$.policy!==null?$.policy:void 0,Q=typeof $.capabilities==="object"&&$.capabilities!==null?$.capabilities:void 0,Y=typeof Q?.supports==="object"&&Q.supports!==null?Q.supports:void 0;return $.model_picker_enabled===!0&&Z?.state!=="disabled"&&Y?.tool_calls!==!1}async function BY($,Z,Q,Y){let W=await Q(`${Z.replace(/\/+$/,"")}/models`,{headers:{accept:"application/json",authorization:`Bearer ${$}`,...B5,"x-github-api-version":vH},...Y?{signal:Y}:{}});return tH(await F1(W,"GitHub Copilot model discovery"))}async function HY($,Z,Q,Y){return(await BY($,Z,Q,Y)).filter(oH).map((W)=>W.id).filter((W)=>typeof W==="string"&&W.length>0)}async function VY($,Z,Q,Y){let W=await BY($,Z,Q,Y);return await Promise.all(W.map(async(G)=>{if(typeof G.id!=="string"||G.id.length===0)return;await Q(`${Z.replace(/\/+$/,"")}/models/${encodeURIComponent(G.id)}/policy`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${$}`,...B5,"openai-intent":"chat-policy","x-interaction-type":"chat-policy"},body:JSON.stringify({state:"enabled"}),...Y?{signal:Y}:{}}).catch(()=>{return})})),HY($,Z,Q,Y)}async function sH($,Z,Q){let Y=Q.fetch??fetch;if($==="kimi-coding"){let W=await Y("https://auth.kimi.com/api/oauth/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"17e5f671-d194-4dfb-9706-5516cb48c098",grant_type:"refresh_token",refresh_token:Z.refreshToken}),signal:AbortSignal.timeout(_1)});return $Y(await F1(W,"Kimi Code token refresh"),Z)}if($==="xai"){let W=await Y("https://auth.x.ai/oauth2/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"b1a00492-073a-47ea-816f-4c329264a828",grant_type:"refresh_token",refresh_token:Z.refreshToken}),signal:AbortSignal.timeout(_1)});return $Y(await F1(W,"xAI token refresh"),Z,300000)}if($===j4){let W=await Y("https://api.github.com/copilot_internal/v2/token",{headers:{accept:"application/json",authorization:`Bearer ${Z.refreshToken}`,...B5},signal:AbortSignal.timeout(_1)}),G=await F1(W,"GitHub Copilot token refresh");if(typeof G.token!=="string"||typeof G.expires_at!=="number")throw Error("GitHub Copilot token refresh returned invalid credentials");let X=G.token,J=KY(X),B=AbortSignal.timeout(_1),K=Z.availableModelIds?await HY(X,J,Y,B):await VY(X,J,Y,B);return{...Z,accessToken:X,expiresAt:G.expires_at*1000-300000,baseUrl:J,availableModelIds:K}}if($===z1){if(!Z.accountId)throw Error("OpenAI login is missing its ChatGPT account");return rH(Z,Q)}throw Error(`OAuth refresh is not implemented for provider "${$}"`)}function eH($={}){let Z=new Map;return async(Q)=>{let W=(await r0($)).providers[Q];if(!W)return;if(W.type==="apiKey")return{type:"apiKey",apiKey:W.apiKey};let G=($.now??Date.now)();if(eQ(Q,W,G))return sQ(W);let X=Z.get(Q);if(X)return X;let J=(async()=>{let B=await r0($),K=B.providers[Q];if(!K||K.type!=="oauth")throw Error(`${Q} login is no longer available`);let V=($.now??Date.now)(),z=eQ(Q,K,V)?K:await sH(Q,K,$);if(z!==K)B.providers[Q]=z,await r$(B,$);return sQ(z)})().finally(()=>{Z.delete(Q)});return Z.set(Q,J),J}}function zY(){let $=K5(64).toString("base64url");return{verifier:$,challenge:IH("sha256").update($).digest("base64url")}}function FY($,Z){return new Promise((Q,Y)=>{let W=(X)=>{$.off("listening",G),Y(X)},G=()=>{$.off("error",W);let X=$.address();if(!X||typeof X==="string"){Y(Error("Could not determine OAuth callback port"));return}Q(X.port)};$.once("error",W),$.once("listening",G),$.listen(Z,"127.0.0.1")})}async function $V($,Z,Q){if(Q.aborted)throw Error("OpenAI login cancelled");let Y=Z===void 0?uH:[Z],W;for(let G of Y){let X=()=>{},J=()=>{},B=new Promise((z,F)=>{X=z,J=F}),K=!1,V=QY((z,F)=>{let D=new URL(z.url??"/","http://localhost");if(F.setHeader("content-type","text/html; charset=utf-8"),D.pathname!=="/auth/callback"){F.statusCode=404,F.end(b1(X5,"That page does not exist."));return}if(D.searchParams.get("state")!==$){F.statusCode=400,F.end(b1(X5,"State mismatch. Return to mu and try again."));return}let L=D.searchParams.get("error"),U=D.searchParams.get("code");if(L||!U){if(F.statusCode=400,F.end(b1(X5,"Return to mu and try again.")),!K)K=!0,J(Error(`OpenAI login failed: ${L??"missing authorization code"}`));return}if(F.end(G5(X5)),!K)K=!0,X(U)});try{let z=await FY(V,G),F=()=>{if(!K)K=!0,J(Error("OpenAI login cancelled"));V.close()};if(Q.addEventListener("abort",F,{once:!0}),Q.aborted)F();return{redirectUri:`http://localhost:${z}/auth/callback`,callback:B.finally(()=>Q.removeEventListener("abort",F)),close:()=>V.close()}}catch(z){W=z,V.close()}}throw Error(`Could not start OpenAI login callback server: ${W instanceof Error?W.message:String(W)}`)}async function ZV($={}){let Z=new AbortController,Q=()=>Z.abort();if($.signal?.addEventListener("abort",Q,{once:!0}),$.signal?.aborted)Z.abort();let Y=setTimeout(Q,$.timeoutMs??hH);Y.unref?.();let W=K5(32).toString("base64url"),G=zY(),X=($.openAiIssuer??WY).replace(/\/+$/,""),J;try{J=$.callbackServer?await $.callbackServer(W,Z.signal):await $V(W,$.port,Z.signal);let B=new URL(`${X}/oauth/authorize`);B.search=new URLSearchParams({response_type:"code",client_id:$.openAiClientId??O4,redirect_uri:J.redirectUri,scope:kH,code_challenge:G.challenge,code_challenge_method:"S256",id_token_add_organizations:"true",codex_cli_simplified_flow:"true",state:W,originator:"mu"}).toString(),await $.onAuthUrl?.(B.toString());let K=await J.callback,V=await($.fetch??fetch)(`${X}/oauth/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:$.openAiClientId??O4,code:K,code_verifier:G.verifier,redirect_uri:J.redirectUri}),signal:Z.signal}),z=JY(await XY(V,"exchange"),($.now??Date.now)()),F=await r0($);return F.providers[z1]=z,F.activeProvider=z1,await r$(F,$),{provider:z1,accountId:z.accountId}}finally{clearTimeout(Y),$.signal?.removeEventListener("abort",Q),J?.close()}}function Q0($,Z,Q){let Y=$[Z];if(typeof Y!=="string"||Y.length===0)throw Error(`${Q} response is missing ${Z}`);return Y}function J5($,Z){let Q;try{Q=new URL($)}catch{throw Error(`${Z} returned an invalid authorization URL`)}if(Q.protocol!=="https:"&&Q.protocol!=="http:")throw Error(`${Z} returned an unsafe authorization URL`);return Q.toString()}function ZY($,Z){let Q=J5($,Z);if(!Q.startsWith("https:"))throw Error(`${Z} returned an unsafe authorization URL`);return Q}function a0($,Z,Q){let Y=$[Z];return typeof Y==="number"&&Number.isFinite(Y)&&Y>0?Y:Q}async function QV($,Z){if(Z?.aborted)throw Error("Login cancelled");await new Promise((Q,Y)=>{let G=setTimeout(()=>{Z?.removeEventListener("abort",X),Q()},$),X=()=>{clearTimeout(G),Z?.removeEventListener("abort",X),Y(Error("Login cancelled"))};if(Z?.addEventListener("abort",X,{once:!0}),Z?.aborted)X()})}async function w4($){let Z=Date.now()+$.expiresInSeconds*1000,Q=Math.max(0.05,$.intervalSeconds);while(Date.now()<Z){await QV(Q*1000,$.signal);let Y=await $.fetch($.url,{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams($.fields),...$.signal?{signal:$.signal}:{}}),W=await F1(Y.status>=400&&Y.status<500?new Response(await Y.text(),{status:200,headers:Y.headers}):Y,`${$.provider} device token request`);if(Y.ok&&typeof W.access_token==="string")return W;if(W.error==="authorization_pending")continue;if(W.error==="slow_down"){Q=a0(W,"interval",Q+5);continue}throw Error(`${$.provider} login failed${typeof W.error_description==="string"?`: ${W.error_description}`:typeof W.error==="string"?`: ${W.error}`:""}`)}throw Error(`${$.provider} login timed out`)}async function T4($,Z,Q,Y){let W=await($.fetch??fetch)(Q,{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Y),...$.signal?{signal:$.signal}:{}});return F1(W,`${Z} device authorization`)}async function YV($={}){let Q=$.fetch??fetch,Y=await T4($,"Kimi Code","https://auth.kimi.com/api/oauth/device_authorization",{client_id:"17e5f671-d194-4dfb-9706-5516cb48c098"}),W=typeof Y.verification_uri_complete==="string"?J5(Y.verification_uri_complete,"Kimi Code"):J5(Q0(Y,"verification_uri","Kimi Code"),"Kimi Code"),G=Q0(Y,"user_code","Kimi Code");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await w4({fetch:Q,url:"https://auth.kimi.com/api/oauth/token",fields:{client_id:"17e5f671-d194-4dfb-9706-5516cb48c098",device_code:Q0(Y,"device_code","Kimi Code"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:a0(Y,"interval",5),expiresInSeconds:a0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"Kimi Code"}),J=a0(X,"expires_in",3600);return await H5("kimi-coding",{type:"oauth",accessToken:Q0(X,"access_token","Kimi Code"),refreshToken:Q0(X,"refresh_token","Kimi Code"),expiresAt:($.now??Date.now)()+J*1000},$),{provider:"kimi-coding"}}async function WV($={}){let Q=$.fetch??fetch,Y=await T4($,"xAI","https://auth.x.ai/oauth2/device/code",{client_id:"b1a00492-073a-47ea-816f-4c329264a828",scope:"openid profile email offline_access grok-cli:access api:access",referrer:"mu"}),W=typeof Y.verification_uri_complete==="string"?ZY(Y.verification_uri_complete,"xAI"):ZY(Q0(Y,"verification_uri","xAI"),"xAI"),G=Q0(Y,"user_code","xAI");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await w4({fetch:Q,url:"https://auth.x.ai/oauth2/token",fields:{client_id:"b1a00492-073a-47ea-816f-4c329264a828",device_code:Q0(Y,"device_code","xAI"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:a0(Y,"interval",5),expiresInSeconds:a0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"xAI"}),J=a0(X,"expires_in",3600);return await H5("xai",{type:"oauth",accessToken:Q0(X,"access_token","xAI"),refreshToken:Q0(X,"refresh_token","xAI"),expiresAt:($.now??Date.now)()+J*1000-300000},$),{provider:"xai"}}async function GV($={}){let Z=Buffer.from("SXYxLmI1MDdhMDhjODdlY2ZlOTg=","base64").toString("utf8"),Q=$.fetch??fetch,Y=await T4($,"GitHub Copilot","https://github.com/login/device/code",{client_id:Z,scope:"read:user"}),W=J5(Q0(Y,"verification_uri","GitHub Copilot"),"GitHub Copilot"),G=Q0(Y,"user_code","GitHub Copilot");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await w4({fetch:Q,url:"https://github.com/login/oauth/access_token",fields:{client_id:Z,device_code:Q0(Y,"device_code","GitHub Copilot"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:a0(Y,"interval",5),expiresInSeconds:a0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"GitHub Copilot"}),J=Q0(X,"access_token","GitHub Copilot"),B=await Q("https://api.github.com/copilot_internal/v2/token",{headers:{accept:"application/json",authorization:`Bearer ${J}`,...B5},...$.signal?{signal:$.signal}:{}}),K=await F1(B,"GitHub Copilot token exchange"),V=Q0(K,"token","GitHub Copilot"),z=K.expires_at;if(typeof z!=="number"||!Number.isFinite(z))throw Error("GitHub Copilot response is missing expires_at");let F=KY(V),D=$.signal?AbortSignal.any([$.signal,AbortSignal.timeout(_1)]):AbortSignal.timeout(_1),L=await VY(V,F,Q,D);return await H5(j4,{type:"oauth",accessToken:V,refreshToken:J,expiresAt:z*1000-300000,baseUrl:F,availableModelIds:L},$),{provider:"github-copilot"}}async function XV($,Z){let Q=`/oauth/callback/${K5(18).toString("base64url")}`,Y=()=>{},W=()=>{},G=new Promise((V,z)=>{Y=V,W=z}),X=!1,J=QY((V,z)=>{let F=new URL(V.url??"/","http://127.0.0.1");if(z.setHeader("content-type","text/html; charset=utf-8"),F.pathname!==Q){z.statusCode=404,z.end(b1($,"That page does not exist."));return}let D=F.searchParams.get("error"),L=F.searchParams.get("code");if(D||!L){if(z.statusCode=400,z.end(b1($,"Authorization was not completed.")),!X)X=!0,W(Error(`${$} login failed: ${D??"missing authorization code"}`));return}if(z.end(G5($)),!X)X=!0,Y(L)});await FY(J,0);let B=J.address();if(!B||typeof B==="string")throw J.close(),Error(`Could not start the ${$} callback server`);let K=()=>{if(!X)X=!0,W(Error(`${$} login cancelled`));J.close()};if(Z?.addEventListener("abort",K,{once:!0}),Z?.aborted)K();return{callbackUrl:`http://127.0.0.1:${B.port}${Q}`,code:G.finally(()=>Z?.removeEventListener("abort",K)),close:()=>J.close()}}async function JV($={}){let Z=zY(),Q=$.callbackServer?await $.callbackServer("OpenRouter",$.signal):await XV("OpenRouter",$.signal);try{let Y=new URL("https://openrouter.ai/auth");Y.search=new URLSearchParams({callback_url:Q.callbackUrl,code_challenge:Z.challenge,code_challenge_method:"S256"}).toString(),await $.onAuthUrl?.(Y.toString());let W=await Q.code,G=await($.fetch??fetch)("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({code:W,code_verifier:Z.verifier,code_challenge_method:"S256"}),...$.signal?{signal:$.signal}:{}}),X=await F1(G,"OpenRouter key exchange");return await H5("openrouter",{type:"oauth",accessToken:Q0(X,"key","OpenRouter"),refreshToken:"",expiresAt:Number.MAX_SAFE_INTEGER},$),{provider:"openrouter"}}finally{Q.close()}}function KV($){let Z=$.inputTokens+$.outputTokens+$.cacheReadTokens+$.cacheWriteTokens,Q=(Y)=>Math.max(0,Math.trunc(Y)).toLocaleString("en-US");return["Session usage",` Input tokens: ${Q($.inputTokens)}`,` Output tokens: ${Q($.outputTokens)}`,` Cache read tokens: ${Q($.cacheReadTokens)}`,` Cache write tokens: ${Q($.cacheWriteTokens)}`,` Total tokens: ${Q(Z)}`,` Cost: $${($.costUsd??0).toFixed(6)}`,` Active context: ${(Math.max(0,$.contextPercent)*100).toFixed(1)}%`].join(`
196
- `)}function LY($={}){return[{name:"help",description:"List available commands",run:(Z)=>{return Z.print("Commands are listed by the registry that owns them."),{handled:!0}}},{name:"model",description:"Show or switch the active model",run:(Z)=>{let Q=Z.args.trim();if(!Q)return Z.print(`Current model: ${Z.getModel()}`),{handled:!0};try{Z.setModel(Q)}catch(Y){return{handled:!0,message:Y instanceof Error?Y.message:String(Y)}}return{handled:!0,message:`Model set to ${Z.getModel()}`}}},{name:"compact",description:"Summarize older context now while preserving recent work: /compact [focus]",run:async(Z)=>{if(!$.requestCompaction)return{handled:!0,message:"Compaction is not available on this surface."};let Q=await $.requestCompaction(Z.args.trim()||void 0);if(!Q)return{handled:!0,message:"Compaction requested."};return{handled:!0,message:Q.message,data:{kind:"compaction",...Q}}}},{name:"undo",description:"Revert the last step \u2014 both the workspace and the conversation",run:async()=>{if(!$.undo)return{handled:!0,message:"Undo is not available here."};let Z=await $.undo();return{handled:!0,message:Z.message,...Z.data?{data:Z.data}:{}}}},{name:"redo",description:"Re-apply the step that was undone",run:async()=>{if(!$.redo)return{handled:!0,message:"Redo is not available here."};let Z=await $.redo();return{handled:!0,message:Z.message,...Z.data?{data:Z.data}:{}}}},{name:"fork",description:"Branch the conversation from an earlier point",run:async(Z)=>{if(!$.fork)return{handled:!0,message:"Fork is not available here."};let Q=Z.args.trim();if(!Q){let W=$.forkPoints?.()??[];if(W.length===0)return{handled:!0,message:"No branch points yet."};return{handled:!0,message:W.map((G)=>`${G.id} \xB7 ${G.description}`).join(`
197
- `),data:{kind:"fork-points",points:W}}}return{handled:!0,message:(await $.fork(Q)).message}}},{name:"diff",description:"Show everything this session has changed",run:async()=>{if(!$.diff)return{handled:!0,message:"Diff is not available here."};let Z=await $.diff();if(Z.length===0)return{handled:!0,message:"No changes yet."};return{handled:!0,data:{kind:"diff",files:Z}}}},{name:"cost",description:"Show token usage and cost for this session",run:()=>{let Z=$.usage?.();return{handled:!0,message:Z?KV(Z):"Usage is reported by the surface that owns the session."}}}]}function BV($={}){let Z=new I1;for(let Q of LY($))Z.register(Q);return Z.register({name:"help",description:"List available commands",run:(Q)=>{let Y=Z.list().map((W)=>` /${W.name.padEnd(12)} ${W.description}`);return Q.print(`Available commands:
194
+ `}function K5($){return M4({provider:$,status:"success",heading:"Authentication successful",detail:`${$} authentication completed. You can close this window.`})}function _1($,Z){return M4({provider:$,status:"error",heading:"Authentication failed",detail:Z})}var j4=1,P4="app_EMoamEEZ73f0CkXaXp7hrann",B5="OpenAI",KY="https://auth.openai.com",iH="openid profile email offline_access api.connectors.read api.connectors.invoke",nH="https://api.openai.com/auth",F1="openai-codex",w4="github-copilot",z5={"user-agent":"GitHubCopilotChat/0.35.0","editor-version":"vscode/1.107.0","editor-plugin-version":"copilot-chat/0.35.0","copilot-integration-id":"vscode-chat"},aH="2026-06-01",rH=60000,x1=15000,tH=300000,oH=[1455,1457];function T4(){return JY(cH(),".mu","auth.json")}function sH(){return{version:j4,providers:{}}}function t$($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function eH($,Z){if(!t$($))throw Error(`Invalid stored credentials for "${Z}"`);if($.type==="apiKey"&&typeof $.apiKey==="string"&&$.apiKey.length>0)return{type:"apiKey",apiKey:$.apiKey};if($.type==="oauth"&&typeof $.accessToken==="string"&&typeof $.refreshToken==="string"&&typeof $.expiresAt==="number"&&Number.isFinite($.expiresAt)){if((Z==="openai"||Z===F1)&&(typeof $.accountId!=="string"||$.accountId.length===0))throw Error(`Invalid stored credentials for "${Z}"`);return{type:"oauth",accessToken:$.accessToken,refreshToken:$.refreshToken,...typeof $.idToken==="string"?{idToken:$.idToken}:{},expiresAt:$.expiresAt,...typeof $.accountId==="string"?{accountId:$.accountId}:{},...typeof $.baseUrl==="string"?{baseUrl:$.baseUrl}:{},...Array.isArray($.availableModelIds)&&$.availableModelIds.every((Q)=>typeof Q==="string")?{availableModelIds:$.availableModelIds}:{}}}throw Error(`Invalid stored credentials for "${Z}"`)}async function t0($={}){let Z=$.authFile??T4(),Q;try{Q=await gH(Z,"utf8")}catch(X){if(X.code==="ENOENT")return sH();throw X}let Y;try{Y=JSON.parse(Q)}catch{throw Error(`Could not parse authentication file: ${Z}`)}if(!t$(Y)||Y.version!==j4||!t$(Y.providers))throw Error(`Unsupported authentication file: ${Z}`);let W={};for(let[X,J]of Object.entries(Y.providers)){let B=eH(J,X),K=X==="openai"&&B.type==="oauth"?F1:X;if(K===X)W[K]=B;else W[K]??=B}let G=Y.activeProvider==="openai"&&!W.openai&&W[F1]?.type==="oauth"?F1:Y.activeProvider;if(process.platform!=="win32"){if(((await mH(Z)).mode&63)!==0)await O4(Z,384)}return{version:j4,...typeof G==="string"?{activeProvider:G}:{},providers:W}}async function o$($,Z={}){let Q=Z.authFile??T4(),Y=dH(Q);if(await hH(Y,{recursive:!0,mode:448}),process.platform!=="win32")await O4(Y,448);let W=JY(Y,`.auth-${process.pid}-${V5(8).toString("hex")}.tmp`);try{if(await lH(W,`${JSON.stringify($,null,2)}
195
+ `,{encoding:"utf8",mode:384,flag:"wx"}),await uH(W,Q),process.platform!=="win32")await O4(Q,384)}catch(G){throw await pH(W).catch(()=>{}),G}}async function $V($,Z,Q={}){let Y=$.trim(),W=Z.trim();if(!Y)throw Error("Provider is required");if(!W)throw Error("API key cannot be empty");let G=await t0(Q);G.providers[Y]={type:"apiKey",apiKey:W},G.activeProvider=Y,await o$(G,Q)}async function ZV($,Z={}){let Q=$.trim();if(!Q)throw Error("Provider is required");let Y=await t0(Z);if(!Y.providers[Q])return!1;if(delete Y.providers[Q],Y.activeProvider===Q){let W=Object.keys(Y.providers)[0];if(W)Y.activeProvider=W;else delete Y.activeProvider}return await o$(Y,Z),!0}async function QV($={}){return Object.keys((await t0($)).providers)}async function YV($={}){let Z=await t0($);return Z.activeProvider&&Z.providers[Z.activeProvider]?Z.activeProvider:Object.keys(Z.providers)[0]}async function F5($,Z,Q){let Y=await t0(Q);Y.providers[$]=Z,Y.activeProvider=$,await o$(Y,Q)}function BY($){let Z=$.split(".")[1];if(!Z)return;try{let Q=JSON.parse(Buffer.from(Z,"base64url").toString("utf8"));return t$(Q)?Q:void 0}catch{return}}function ZY($){let Z=BY($)?.[nH]?.chatgpt_account_id;return typeof Z==="string"&&Z.length>0?Z:void 0}function WV($){let Z=BY($)?.exp;return typeof Z==="number"&&Number.isFinite(Z)?Z*1000:void 0}function GV($,Z,Q){let Y=Q.trim()?`: ${Q.trim().slice(0,1000)}`:"";return Error(`OpenAI token ${$} failed (${Z.status})${Y}`)}async function HY($,Z){if(!$.ok)throw GV(Z,$,await $.text().catch(()=>""));let Q=await $.json();if(!t$(Q))throw Error(`OpenAI token ${Z} returned invalid JSON`);return Q}function VY($,Z,Q){let Y=typeof $.access_token==="string"?$.access_token:Q?.accessToken,W=typeof $.refresh_token==="string"?$.refresh_token:Q?.refreshToken,G=typeof $.id_token==="string"?$.id_token:Q?.idToken;if(!Y||!W)throw Error("OpenAI token response is missing access or refresh token");let X=ZY(Y)??(G?ZY(G):void 0)??Q?.accountId;if(!X)throw Error("OpenAI token did not include a ChatGPT account");if(Q?.accountId&&X!==Q.accountId)throw Error("Refusing to rotate OpenAI credentials across ChatGPT accounts");let J=typeof $.expires_in==="number"&&Number.isFinite($.expires_in)?$.expires_in*1000:void 0,B=WV(Y)??(J!==void 0?Z+J:Z+3600000);return{type:"oauth",accessToken:Y,refreshToken:W,...G?{idToken:G}:{},expiresAt:B,accountId:X}}async function XV($,Z){let Q=(Z.openAiIssuer??KY).replace(/\/+$/,""),Y=await(Z.fetch??fetch)(`${Q}/oauth/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_id:Z.openAiClientId??P4,grant_type:"refresh_token",refresh_token:$.refreshToken}),signal:AbortSignal.timeout(x1)});return VY(await HY(Y,"refresh"),(Z.now??Date.now)(),$)}function QY($){return{type:"oauth",accessToken:$.accessToken,...$.accountId?{accountId:$.accountId}:{},...$.baseUrl?{baseUrl:$.baseUrl}:{},...$.availableModelIds?{availableModelIds:$.availableModelIds}:{}}}function YY($,Z,Q){return Z.expiresAt>Q+rH&&($!==w4||Z.availableModelIds!==void 0)}async function L1($,Z){let Q=await $.text(),Y;try{Y=JSON.parse(Q)}catch{throw Error(`${Z} returned invalid JSON (${$.status})`)}if(!$.ok){let W=typeof Y==="object"&&Y!==null?Y:{},G=W.error_description??W.message??W.error;throw Error(`${Z} failed (${$.status})${typeof G==="string"?`: ${G}`:""}`)}if(typeof Y!=="object"||Y===null||Array.isArray(Y))throw Error(`${Z} returned invalid JSON`);return Y}function WY($,Z,Q=60000){let Y=typeof $.access_token==="string"?$.access_token:Z.accessToken,W=typeof $.refresh_token==="string"?$.refresh_token:Z.refreshToken,G=typeof $.expires_in==="number"&&Number.isFinite($.expires_in)?$.expires_in:3600;if(!Y||!W)throw Error("OAuth response is missing tokens");return{...Z,accessToken:Y,refreshToken:W,expiresAt:Date.now()+G*1000-Q}}function zY($){let Z=$.match(/(?:^|;)proxy-ep=([^;]+)/)?.[1];return Z?`https://${Z.replace(/^proxy\./,"api.")}`:"https://api.individual.githubcopilot.com"}function JV($){if(typeof $!=="object"||$===null||!Array.isArray($.data))throw Error("GitHub Copilot models response is invalid");return $.data.filter((Z)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z))}function KV($){let Z=typeof $.policy==="object"&&$.policy!==null?$.policy:void 0,Q=typeof $.capabilities==="object"&&$.capabilities!==null?$.capabilities:void 0,Y=typeof Q?.supports==="object"&&Q.supports!==null?Q.supports:void 0;return $.model_picker_enabled===!0&&Z?.state!=="disabled"&&Y?.tool_calls!==!1}async function FY($,Z,Q,Y){let W=await Q(`${Z.replace(/\/+$/,"")}/models`,{headers:{accept:"application/json",authorization:`Bearer ${$}`,...z5,"x-github-api-version":aH},...Y?{signal:Y}:{}});return JV(await L1(W,"GitHub Copilot model discovery"))}async function LY($,Z,Q,Y){return(await FY($,Z,Q,Y)).filter(KV).map((W)=>W.id).filter((W)=>typeof W==="string"&&W.length>0)}async function DY($,Z,Q,Y){let W=await FY($,Z,Q,Y);return await Promise.all(W.map(async(G)=>{if(typeof G.id!=="string"||G.id.length===0)return;await Q(`${Z.replace(/\/+$/,"")}/models/${encodeURIComponent(G.id)}/policy`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${$}`,...z5,"openai-intent":"chat-policy","x-interaction-type":"chat-policy"},body:JSON.stringify({state:"enabled"}),...Y?{signal:Y}:{}}).catch(()=>{return})})),LY($,Z,Q,Y)}async function BV($,Z,Q){let Y=Q.fetch??fetch;if($==="kimi-coding"){let W=await Y("https://auth.kimi.com/api/oauth/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"17e5f671-d194-4dfb-9706-5516cb48c098",grant_type:"refresh_token",refresh_token:Z.refreshToken}),signal:AbortSignal.timeout(x1)});return WY(await L1(W,"Kimi Code token refresh"),Z)}if($==="xai"){let W=await Y("https://auth.x.ai/oauth2/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"b1a00492-073a-47ea-816f-4c329264a828",grant_type:"refresh_token",refresh_token:Z.refreshToken}),signal:AbortSignal.timeout(x1)});return WY(await L1(W,"xAI token refresh"),Z,300000)}if($===w4){let W=await Y("https://api.github.com/copilot_internal/v2/token",{headers:{accept:"application/json",authorization:`Bearer ${Z.refreshToken}`,...z5},signal:AbortSignal.timeout(x1)}),G=await L1(W,"GitHub Copilot token refresh");if(typeof G.token!=="string"||typeof G.expires_at!=="number")throw Error("GitHub Copilot token refresh returned invalid credentials");let X=G.token,J=zY(X),B=AbortSignal.timeout(x1),K=Z.availableModelIds?await LY(X,J,Y,B):await DY(X,J,Y,B);return{...Z,accessToken:X,expiresAt:G.expires_at*1000-300000,baseUrl:J,availableModelIds:K}}if($===F1){if(!Z.accountId)throw Error("OpenAI login is missing its ChatGPT account");return XV(Z,Q)}throw Error(`OAuth refresh is not implemented for provider "${$}"`)}function HV($={}){let Z=new Map;return async(Q)=>{let W=(await t0($)).providers[Q];if(!W)return;if(W.type==="apiKey")return{type:"apiKey",apiKey:W.apiKey};let G=($.now??Date.now)();if(YY(Q,W,G))return QY(W);let X=Z.get(Q);if(X)return X;let J=(async()=>{let B=await t0($),K=B.providers[Q];if(!K||K.type!=="oauth")throw Error(`${Q} login is no longer available`);let V=($.now??Date.now)(),z=YY(Q,K,V)?K:await BV(Q,K,$);if(z!==K)B.providers[Q]=z,await o$(B,$);return QY(z)})().finally(()=>{Z.delete(Q)});return Z.set(Q,J),J}}function qY(){let $=V5(64).toString("base64url");return{verifier:$,challenge:vH("sha256").update($).digest("base64url")}}function UY($,Z){return new Promise((Q,Y)=>{let W=(X)=>{$.off("listening",G),Y(X)},G=()=>{$.off("error",W);let X=$.address();if(!X||typeof X==="string"){Y(Error("Could not determine OAuth callback port"));return}Q(X.port)};$.once("error",W),$.once("listening",G),$.listen(Z,"127.0.0.1")})}async function VV($,Z,Q){if(Q.aborted)throw Error("OpenAI login cancelled");let Y=Z===void 0?oH:[Z],W;for(let G of Y){let X=()=>{},J=()=>{},B=new Promise((z,F)=>{X=z,J=F}),K=!1,V=XY((z,F)=>{let D=new URL(z.url??"/","http://localhost");if(F.setHeader("content-type","text/html; charset=utf-8"),D.pathname!=="/auth/callback"){F.statusCode=404,F.end(_1(B5,"That page does not exist."));return}if(D.searchParams.get("state")!==$){F.statusCode=400,F.end(_1(B5,"State mismatch. Return to mu and try again."));return}let L=D.searchParams.get("error"),q=D.searchParams.get("code");if(L||!q){if(F.statusCode=400,F.end(_1(B5,"Return to mu and try again.")),!K)K=!0,J(Error(`OpenAI login failed: ${L??"missing authorization code"}`));return}if(F.end(K5(B5)),!K)K=!0,X(q)});try{let z=await UY(V,G),F=()=>{if(!K)K=!0,J(Error("OpenAI login cancelled"));V.close()};if(Q.addEventListener("abort",F,{once:!0}),Q.aborted)F();return{redirectUri:`http://localhost:${z}/auth/callback`,callback:B.finally(()=>Q.removeEventListener("abort",F)),close:()=>V.close()}}catch(z){W=z,V.close()}}throw Error(`Could not start OpenAI login callback server: ${W instanceof Error?W.message:String(W)}`)}async function zV($={}){let Z=new AbortController,Q=()=>Z.abort();if($.signal?.addEventListener("abort",Q,{once:!0}),$.signal?.aborted)Z.abort();let Y=setTimeout(Q,$.timeoutMs??tH);Y.unref?.();let W=V5(32).toString("base64url"),G=qY(),X=($.openAiIssuer??KY).replace(/\/+$/,""),J;try{J=$.callbackServer?await $.callbackServer(W,Z.signal):await VV(W,$.port,Z.signal);let B=new URL(`${X}/oauth/authorize`);B.search=new URLSearchParams({response_type:"code",client_id:$.openAiClientId??P4,redirect_uri:J.redirectUri,scope:iH,code_challenge:G.challenge,code_challenge_method:"S256",id_token_add_organizations:"true",codex_cli_simplified_flow:"true",state:W,originator:"mu"}).toString(),await $.onAuthUrl?.(B.toString());let K=await J.callback,V=await($.fetch??fetch)(`${X}/oauth/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:$.openAiClientId??P4,code:K,code_verifier:G.verifier,redirect_uri:J.redirectUri}),signal:Z.signal}),z=VY(await HY(V,"exchange"),($.now??Date.now)()),F=await t0($);return F.providers[F1]=z,F.activeProvider=F1,await o$(F,$),{provider:F1,accountId:z.accountId}}finally{clearTimeout(Y),$.signal?.removeEventListener("abort",Q),J?.close()}}function Q0($,Z,Q){let Y=$[Z];if(typeof Y!=="string"||Y.length===0)throw Error(`${Q} response is missing ${Z}`);return Y}function H5($,Z){let Q;try{Q=new URL($)}catch{throw Error(`${Z} returned an invalid authorization URL`)}if(Q.protocol!=="https:"&&Q.protocol!=="http:")throw Error(`${Z} returned an unsafe authorization URL`);return Q.toString()}function GY($,Z){let Q=H5($,Z);if(!Q.startsWith("https:"))throw Error(`${Z} returned an unsafe authorization URL`);return Q}function r0($,Z,Q){let Y=$[Z];return typeof Y==="number"&&Number.isFinite(Y)&&Y>0?Y:Q}async function FV($,Z){if(Z?.aborted)throw Error("Login cancelled");await new Promise((Q,Y)=>{let G=setTimeout(()=>{Z?.removeEventListener("abort",X),Q()},$),X=()=>{clearTimeout(G),Z?.removeEventListener("abort",X),Y(Error("Login cancelled"))};if(Z?.addEventListener("abort",X,{once:!0}),Z?.aborted)X()})}async function E4($){let Z=Date.now()+$.expiresInSeconds*1000,Q=Math.max(0.05,$.intervalSeconds);while(Date.now()<Z){await FV(Q*1000,$.signal);let Y=await $.fetch($.url,{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams($.fields),...$.signal?{signal:$.signal}:{}}),W=await L1(Y.status>=400&&Y.status<500?new Response(await Y.text(),{status:200,headers:Y.headers}):Y,`${$.provider} device token request`);if(Y.ok&&typeof W.access_token==="string")return W;if(W.error==="authorization_pending")continue;if(W.error==="slow_down"){Q=r0(W,"interval",Q+5);continue}throw Error(`${$.provider} login failed${typeof W.error_description==="string"?`: ${W.error_description}`:typeof W.error==="string"?`: ${W.error}`:""}`)}throw Error(`${$.provider} login timed out`)}async function I4($,Z,Q,Y){let W=await($.fetch??fetch)(Q,{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Y),...$.signal?{signal:$.signal}:{}});return L1(W,`${Z} device authorization`)}async function LV($={}){let Q=$.fetch??fetch,Y=await I4($,"Kimi Code","https://auth.kimi.com/api/oauth/device_authorization",{client_id:"17e5f671-d194-4dfb-9706-5516cb48c098"}),W=typeof Y.verification_uri_complete==="string"?H5(Y.verification_uri_complete,"Kimi Code"):H5(Q0(Y,"verification_uri","Kimi Code"),"Kimi Code"),G=Q0(Y,"user_code","Kimi Code");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await E4({fetch:Q,url:"https://auth.kimi.com/api/oauth/token",fields:{client_id:"17e5f671-d194-4dfb-9706-5516cb48c098",device_code:Q0(Y,"device_code","Kimi Code"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:r0(Y,"interval",5),expiresInSeconds:r0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"Kimi Code"}),J=r0(X,"expires_in",3600);return await F5("kimi-coding",{type:"oauth",accessToken:Q0(X,"access_token","Kimi Code"),refreshToken:Q0(X,"refresh_token","Kimi Code"),expiresAt:($.now??Date.now)()+J*1000},$),{provider:"kimi-coding"}}async function DV($={}){let Q=$.fetch??fetch,Y=await I4($,"xAI","https://auth.x.ai/oauth2/device/code",{client_id:"b1a00492-073a-47ea-816f-4c329264a828",scope:"openid profile email offline_access grok-cli:access api:access",referrer:"mu"}),W=typeof Y.verification_uri_complete==="string"?GY(Y.verification_uri_complete,"xAI"):GY(Q0(Y,"verification_uri","xAI"),"xAI"),G=Q0(Y,"user_code","xAI");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await E4({fetch:Q,url:"https://auth.x.ai/oauth2/token",fields:{client_id:"b1a00492-073a-47ea-816f-4c329264a828",device_code:Q0(Y,"device_code","xAI"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:r0(Y,"interval",5),expiresInSeconds:r0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"xAI"}),J=r0(X,"expires_in",3600);return await F5("xai",{type:"oauth",accessToken:Q0(X,"access_token","xAI"),refreshToken:Q0(X,"refresh_token","xAI"),expiresAt:($.now??Date.now)()+J*1000-300000},$),{provider:"xai"}}async function qV($={}){let Z=Buffer.from("SXYxLmI1MDdhMDhjODdlY2ZlOTg=","base64").toString("utf8"),Q=$.fetch??fetch,Y=await I4($,"GitHub Copilot","https://github.com/login/device/code",{client_id:Z,scope:"read:user"}),W=H5(Q0(Y,"verification_uri","GitHub Copilot"),"GitHub Copilot"),G=Q0(Y,"user_code","GitHub Copilot");await $.onDeviceCode?.(W,G),await $.onAuthUrl?.(W);let X=await E4({fetch:Q,url:"https://github.com/login/oauth/access_token",fields:{client_id:Z,device_code:Q0(Y,"device_code","GitHub Copilot"),grant_type:"urn:ietf:params:oauth:grant-type:device_code"},intervalSeconds:r0(Y,"interval",5),expiresInSeconds:r0(Y,"expires_in",900),...$.signal?{signal:$.signal}:{},provider:"GitHub Copilot"}),J=Q0(X,"access_token","GitHub Copilot"),B=await Q("https://api.github.com/copilot_internal/v2/token",{headers:{accept:"application/json",authorization:`Bearer ${J}`,...z5},...$.signal?{signal:$.signal}:{}}),K=await L1(B,"GitHub Copilot token exchange"),V=Q0(K,"token","GitHub Copilot"),z=K.expires_at;if(typeof z!=="number"||!Number.isFinite(z))throw Error("GitHub Copilot response is missing expires_at");let F=zY(V),D=$.signal?AbortSignal.any([$.signal,AbortSignal.timeout(x1)]):AbortSignal.timeout(x1),L=await DY(V,F,Q,D);return await F5(w4,{type:"oauth",accessToken:V,refreshToken:J,expiresAt:z*1000-300000,baseUrl:F,availableModelIds:L},$),{provider:"github-copilot"}}async function UV($,Z){let Q=`/oauth/callback/${V5(18).toString("base64url")}`,Y=()=>{},W=()=>{},G=new Promise((V,z)=>{Y=V,W=z}),X=!1,J=XY((V,z)=>{let F=new URL(V.url??"/","http://127.0.0.1");if(z.setHeader("content-type","text/html; charset=utf-8"),F.pathname!==Q){z.statusCode=404,z.end(_1($,"That page does not exist."));return}let D=F.searchParams.get("error"),L=F.searchParams.get("code");if(D||!L){if(z.statusCode=400,z.end(_1($,"Authorization was not completed.")),!X)X=!0,W(Error(`${$} login failed: ${D??"missing authorization code"}`));return}if(z.end(K5($)),!X)X=!0,Y(L)});await UY(J,0);let B=J.address();if(!B||typeof B==="string")throw J.close(),Error(`Could not start the ${$} callback server`);let K=()=>{if(!X)X=!0,W(Error(`${$} login cancelled`));J.close()};if(Z?.addEventListener("abort",K,{once:!0}),Z?.aborted)K();return{callbackUrl:`http://127.0.0.1:${B.port}${Q}`,code:G.finally(()=>Z?.removeEventListener("abort",K)),close:()=>J.close()}}async function AV($={}){let Z=qY(),Q=$.callbackServer?await $.callbackServer("OpenRouter",$.signal):await UV("OpenRouter",$.signal);try{let Y=new URL("https://openrouter.ai/auth");Y.search=new URLSearchParams({callback_url:Q.callbackUrl,code_challenge:Z.challenge,code_challenge_method:"S256"}).toString(),await $.onAuthUrl?.(Y.toString());let W=await Q.code,G=await($.fetch??fetch)("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({code:W,code_verifier:Z.verifier,code_challenge_method:"S256"}),...$.signal?{signal:$.signal}:{}}),X=await L1(G,"OpenRouter key exchange");return await F5("openrouter",{type:"oauth",accessToken:Q0(X,"key","OpenRouter"),refreshToken:"",expiresAt:Number.MAX_SAFE_INTEGER},$),{provider:"openrouter"}}finally{Q.close()}}function NV($){let Z=$.inputTokens+$.outputTokens+$.cacheReadTokens+$.cacheWriteTokens,Q=(Y)=>Math.max(0,Math.trunc(Y)).toLocaleString("en-US");return["Session usage",` Input tokens: ${Q($.inputTokens)}`,` Output tokens: ${Q($.outputTokens)}`,` Cache read tokens: ${Q($.cacheReadTokens)}`,` Cache write tokens: ${Q($.cacheWriteTokens)}`,` Total tokens: ${Q(Z)}`,` Cost: $${($.costUsd??0).toFixed(6)}`,` Active context: ${(Math.max(0,$.contextPercent)*100).toFixed(1)}%`].join(`
196
+ `)}function AY($={}){return[{name:"help",description:"List available commands",run:(Z)=>{return Z.print("Commands are listed by the registry that owns them."),{handled:!0}}},{name:"model",description:"Show or switch the active model",run:(Z)=>{let Q=Z.args.trim();if(!Q)return Z.print(`Current model: ${Z.getModel()}`),{handled:!0};try{Z.setModel(Q)}catch(Y){return{handled:!0,message:Y instanceof Error?Y.message:String(Y)}}return{handled:!0,message:`Model set to ${Z.getModel()}`}}},{name:"compact",description:"Summarize older context now while preserving recent work: /compact [focus]",run:async(Z)=>{if(!$.requestCompaction)return{handled:!0,message:"Compaction is not available on this surface."};let Q=await $.requestCompaction(Z.args.trim()||void 0);if(!Q)return{handled:!0,message:"Compaction requested."};return{handled:!0,message:Q.message,data:{kind:"compaction",...Q}}}},{name:"undo",description:"Revert the last step \u2014 both the workspace and the conversation",run:async()=>{if(!$.undo)return{handled:!0,message:"Undo is not available here."};let Z=await $.undo();return{handled:!0,message:Z.message,...Z.data?{data:Z.data}:{}}}},{name:"redo",description:"Re-apply the step that was undone",run:async()=>{if(!$.redo)return{handled:!0,message:"Redo is not available here."};let Z=await $.redo();return{handled:!0,message:Z.message,...Z.data?{data:Z.data}:{}}}},{name:"fork",description:"Branch the conversation from an earlier point",run:async(Z)=>{if(!$.fork)return{handled:!0,message:"Fork is not available here."};let Q=Z.args.trim();if(!Q){let W=$.forkPoints?.()??[];if(W.length===0)return{handled:!0,message:"No branch points yet."};return{handled:!0,message:W.map((G)=>`${G.id} \xB7 ${G.description}`).join(`
197
+ `),data:{kind:"fork-points",points:W}}}return{handled:!0,message:(await $.fork(Q)).message}}},{name:"diff",description:"Show everything this session has changed",run:async()=>{if(!$.diff)return{handled:!0,message:"Diff is not available here."};let Z=await $.diff();if(Z.length===0)return{handled:!0,message:"No changes yet."};return{handled:!0,data:{kind:"diff",files:Z}}}},{name:"cost",description:"Show token usage and cost for this session",run:()=>{let Z=$.usage?.();return{handled:!0,message:Z?NV(Z):"Usage is reported by the surface that owns the session."}}}]}function MV($={}){let Z=new I1;for(let Q of AY($))Z.register(Q);return Z.register({name:"help",description:"List available commands",run:(Q)=>{let Y=Z.list().map((W)=>` /${W.name.padEnd(12)} ${W.description}`);return Q.print(`Available commands:
198
198
  ${Y.join(`
199
- `)}`),{handled:!0}}}),Z}import{readdir as HV,stat as VV}from"fs/promises";import{homedir as zV}from"os";import{isAbsolute as FV,join as I4,resolve as LV}from"path";function DV($){return typeof $==="object"&&$!==null&&typeof $.name==="string"&&typeof $.activate==="function"}async function R4($){try{return(await HV($)).filter((Q)=>Q.endsWith(".ts")||Q.endsWith(".js")).sort().map((Q)=>I4($,Q))}catch(Z){if(Z.code==="ENOENT")return[];throw Z}}async function UV($){try{return(await VV($)).isDirectory()?R4($):[$]}catch(Z){if(Z.code==="ENOENT")return[];throw Z}}async function DY($={}){let Z=[];if($.userDir!==!1)Z.push(...await R4(I4(zV(),".mu","extensions")));if($.projectDir)Z.push(...await R4(I4($.projectDir,".mu","extensions")));for(let Q of $.paths??[])Z.push(...await UV(FV(Q)?Q:LV(Q)));return Z}async function qV($,Z={}){let Q={loaded:[],failed:[]};for(let Y of await DY(Z))try{let W=await import(Y),G=W.default??W.extension;if(!DV(G)){Q.failed.push({file:Y,error:"no default export with { name, activate } found"});continue}await $.register(G),Q.loaded.push(Y)}catch(W){Q.failed.push({file:Y,error:W instanceof Error?W.message:String(W)})}return Q}import{randomUUID as AV}from"crypto";import{chmod as UY,mkdir as NV,readdir as MV,readFile as qY,rename as OV,rm as jV,writeFile as PV}from"fs/promises";import{homedir as wV}from"os";import{join as V5}from"path";class AY{dir;constructor($={}){let Z=$.root??V5(wV(),".mu","sessions");this.dir=$.scope?V5(Z,$.scope):Z}path($){let Z=Buffer.from($,"utf8").toString("base64url");return V5(this.dir,`${Z}.jsonl`)}fallbackId($){let Z=$.slice(0,-6);try{let Q=Buffer.from(Z,"base64url").toString("utf8");return this.path(Q).endsWith($)?Q:Z}catch{return Z}}async load($){try{return o.fromJsonl(await qY(this.path($),"utf8"))}catch(Z){if(Z.code==="ENOENT")return;throw Z}}async save($,Z){if(await NV(this.dir,{recursive:!0,mode:448}),process.platform!=="win32")await UY(this.dir,448);let Q=this.path($),Y=`${Q}.${process.pid}.${AV()}.tmp`;try{if(await PV(Y,Z.toJsonl(),{encoding:"utf8",mode:384,flag:"wx"}),await OV(Y,Q),process.platform!=="win32")await UY(Q,384)}catch(W){throw await jV(Y,{force:!0}).catch(()=>{}),W}}async list(){try{let $=await MV(this.dir),Z=await Promise.all($.filter((Q)=>Q.endsWith(".jsonl")).map(async(Q)=>{try{return o.fromJsonl(await qY(V5(this.dir,Q),"utf8")).header?.id??this.fallbackId(Q)}catch{return this.fallbackId(Q)}}));return[...new Set(Z)]}catch($){if($.code==="ENOENT")return[];throw $}}}import{readdir as TV,readFile as IV}from"fs/promises";import{homedir as RV}from"os";import{basename as EV,join as E4}from"path";function z5($){let Z=$.replace(/^\uFEFF/,"").replace(/\r\n?/g,`
199
+ `)}`),{handled:!0}}}),Z}import{readdir as OV,stat as jV}from"fs/promises";import{homedir as PV}from"os";import{isAbsolute as wV,join as R4,resolve as TV}from"path";function EV($){return typeof $==="object"&&$!==null&&typeof $.name==="string"&&typeof $.activate==="function"}async function S4($){try{return(await OV($)).filter((Q)=>Q.endsWith(".ts")||Q.endsWith(".js")).sort().map((Q)=>R4($,Q))}catch(Z){if(Z.code==="ENOENT")return[];throw Z}}async function IV($){try{return(await jV($)).isDirectory()?S4($):[$]}catch(Z){if(Z.code==="ENOENT")return[];throw Z}}async function NY($={}){let Z=[];if($.userDir!==!1)Z.push(...await S4(R4(PV(),".mu","extensions")));if($.projectDir)Z.push(...await S4(R4($.projectDir,".mu","extensions")));for(let Q of $.paths??[])Z.push(...await IV(wV(Q)?Q:TV(Q)));return Z}async function RV($,Z={}){let Q={loaded:[],failed:[]};for(let Y of await NY(Z))try{let W=await import(Y),G=W.default??W.extension;if(!EV(G)){Q.failed.push({file:Y,error:"no default export with { name, activate } found"});continue}await $.register(G),Q.loaded.push(Y)}catch(W){Q.failed.push({file:Y,error:W instanceof Error?W.message:String(W)})}return Q}import{randomUUID as SV}from"crypto";import{chmod as MY,mkdir as CV,readdir as yV,readFile as OY,rename as bV,rm as _V,writeFile as xV}from"fs/promises";import{homedir as kV}from"os";import{join as L5}from"path";class jY{dir;constructor($={}){let Z=$.root??L5(kV(),".mu","sessions");this.dir=$.scope?L5(Z,$.scope):Z}path($){let Z=Buffer.from($,"utf8").toString("base64url");return L5(this.dir,`${Z}.jsonl`)}fallbackId($){let Z=$.slice(0,-6);try{let Q=Buffer.from(Z,"base64url").toString("utf8");return this.path(Q).endsWith($)?Q:Z}catch{return Z}}async load($){try{return o.fromJsonl(await OY(this.path($),"utf8"))}catch(Z){if(Z.code==="ENOENT")return;throw Z}}async save($,Z){if(await CV(this.dir,{recursive:!0,mode:448}),process.platform!=="win32")await MY(this.dir,448);let Q=this.path($),Y=`${Q}.${process.pid}.${SV()}.tmp`;try{if(await xV(Y,Z.toJsonl(),{encoding:"utf8",mode:384,flag:"wx"}),await bV(Y,Q),process.platform!=="win32")await MY(Q,384)}catch(W){throw await _V(Y,{force:!0}).catch(()=>{}),W}}async list(){try{let $=await yV(this.dir),Z=await Promise.all($.filter((Q)=>Q.endsWith(".jsonl")).map(async(Q)=>{try{return o.fromJsonl(await OY(L5(this.dir,Q),"utf8")).header?.id??this.fallbackId(Q)}catch{return this.fallbackId(Q)}}));return[...new Set(Z)]}catch($){if($.code==="ENOENT")return[];throw $}}}import{readdir as fV,readFile as vV}from"fs/promises";import{homedir as hV}from"os";import{basename as gV,join as C4}from"path";function D5($){let Z=$.replace(/^\uFEFF/,"").replace(/\r\n?/g,`
200
200
  `),Q=/^---\n([\s\S]*?)\n---\n?/.exec(Z);if(!Q)return{meta:{},body:Z.trim()};let Y={};for(let W of(Q[1]??"").split(`
201
- `)){let G=W.indexOf(":");if(G===-1)continue;let X=W.slice(0,G).trim(),J=W.slice(G+1).trim();if(X.length===0)continue;Y[X]=J.startsWith("[")&&J.endsWith("]")?J.slice(1,-1).split(",").map((B)=>B.trim().replace(/^["']|["']$/g,"")).filter((B)=>B.length>0):J.replace(/^["']|["']$/g,"")}return{meta:Y,body:Z.slice(Q[0].length).trim()}}function MY($,Z){let Q=Z.trim().length>0?Z.trim().split(/\s+/):[],Y=!1,W=$.replace(/\$ARGUMENTS\b/g,()=>{return Y=!0,Z.trim()});if(W=W.replace(/\$([1-9])\b/g,(G,X)=>{return Y=!0,Q[Number(X)-1]??""}),!Y&&Z.trim().length>0)return`${W}
201
+ `)){let G=W.indexOf(":");if(G===-1)continue;let X=W.slice(0,G).trim(),J=W.slice(G+1).trim();if(X.length===0)continue;Y[X]=J.startsWith("[")&&J.endsWith("]")?J.slice(1,-1).split(",").map((B)=>B.trim().replace(/^["']|["']$/g,"")).filter((B)=>B.length>0):J.replace(/^["']|["']$/g,"")}return{meta:Y,body:Z.slice(Q[0].length).trim()}}function wY($,Z){let Q=Z.trim().length>0?Z.trim().split(/\s+/):[],Y=!1,W=$.replace(/\$ARGUMENTS\b/g,()=>{return Y=!0,Z.trim()});if(W=W.replace(/\$([1-9])\b/g,(G,X)=>{return Y=!0,Q[Number(X)-1]??""}),!Y&&Z.trim().length>0)return`${W}
202
202
 
203
- ${Z.trim()}`;return W}function OY($,Z){let{meta:Q,body:Y}=z5(Z),W=typeof Q.description==="string"?Q.description:`Run the ${$} command`,G=typeof Q.model==="string"?Q.model:void 0,X=Q["allowed-tools"],J=Array.isArray(X)?X:typeof X==="string"&&X.length>0?X.split(",").map((B)=>B.trim()):void 0;return{name:$,description:W,body:Y,...G?{model:G}:{},...J?{allowedTools:J}:{}}}async function NY($){let Z;try{Z=await TV($)}catch{return[]}let Q=[];for(let Y of Z.filter((W)=>W.endsWith(".md")).sort())try{let W=await IV(E4($,Y),"utf8");Q.push(OY(EV(Y,".md"),W))}catch{}return Q}async function SV($={}){let Z=await NY($.userDir??E4(RV(),".mu","commands")),Q=$.projectDir?await NY(E4($.projectDir,".mu","commands")):[],Y=new Map;for(let W of[...Z,...Q])Y.set(W.name,W);return[...Y.values()]}function CV($,Z){return{name:$.name,description:$.description,run:async(Q)=>{let Y={kind:"markdown-command",prompt:MY($.body,Q.args),...$.model?{model:$.model}:{},...$.allowedTools?{allowedTools:$.allowedTools}:{}};if(Z)return await Z(Y.prompt,{...Y.model?{model:Y.model}:{},...Y.allowedTools?{allowedTools:Y.allowedTools}:{}}),{handled:!0};return{handled:!0,data:Y}}}}import{readFile as Fj}from"fs/promises";import{homedir as Lj}from"os";import{dirname as Dj,isAbsolute as Uj,join as N3,resolve as qj}from"path";import*as yV from"zod/v3";import*as F5 from"zod/v4-mini";function W$($){return!!$._zod}function R0($,Z){if(W$($))return F5.safeParse($,Z);return $.safeParse(Z)}function L5($){if(!$)return;let Z;if(W$($))Z=$._zod?.def?.shape;else Z=$.shape;if(!Z)return;if(typeof Z==="function")try{return Z()}catch{return}return Z}function jY($){if(W$($)){let G=$._zod?.def;if(G){if(G.value!==void 0)return G.value;if(Array.isArray(G.values)&&G.values.length>0)return G.values[0]}}let Q=$._def;if(Q){if(Q.value!==void 0)return Q.value;if(Array.isArray(Q.values)&&Q.values.length>0)return Q.values[0]}let Y=$.value;if(Y!==void 0)return Y;return}import*as H from"zod/v4";var S4="2025-11-25";var PY=[S4,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],L1="io.modelcontextprotocol/related-task",U5="2.0",a=H.custom(($)=>$!==null&&(typeof $==="object"||typeof $==="function")),wY=H.union([H.string(),H.number().int()]),TY=H.string(),mI=H.looseObject({ttl:H.number().optional(),pollInterval:H.number().optional()}),bV=H.object({ttl:H.number().optional()}),_V=H.object({taskId:H.string()}),C4=H.looseObject({progressToken:wY.optional(),[L1]:_V.optional()}),q0=H.object({_meta:C4.optional()}),t$=q0.extend({task:bV.optional()}),IY=($)=>t$.safeParse($).success,s=H.object({method:H.string(),params:q0.loose().optional()}),O0=H.object({_meta:C4.optional()}),j0=H.object({method:H.string(),params:O0.loose().optional()}),e=H.looseObject({_meta:C4.optional()}),q5=H.union([H.string(),H.number().int()]),RY=H.object({jsonrpc:H.literal(U5),id:q5,...s.shape}).strict(),y4=($)=>RY.safeParse($).success,EY=H.object({jsonrpc:H.literal(U5),...j0.shape}).strict(),SY=($)=>EY.safeParse($).success,b4=H.object({jsonrpc:H.literal(U5),id:q5,result:e}).strict(),o$=($)=>b4.safeParse($).success;var R;(function($){$[$.ConnectionClosed=-32000]="ConnectionClosed",$[$.RequestTimeout=-32001]="RequestTimeout",$[$.ParseError=-32700]="ParseError",$[$.InvalidRequest=-32600]="InvalidRequest",$[$.MethodNotFound=-32601]="MethodNotFound",$[$.InvalidParams=-32602]="InvalidParams",$[$.InternalError=-32603]="InternalError",$[$.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(R||(R={}));var _4=H.object({jsonrpc:H.literal(U5),id:q5.optional(),error:H.object({code:H.number().int(),message:H.string(),data:H.unknown().optional()})}).strict();var CY=($)=>_4.safeParse($).success;var yY=H.union([RY,EY,b4,_4]),lI=H.union([b4,_4]),x1=e.strict(),xV=O0.extend({requestId:q5.optional(),reason:H.string().optional()}),A5=j0.extend({method:H.literal("notifications/cancelled"),params:xV}),kV=H.object({src:H.string(),mimeType:H.string().optional(),sizes:H.array(H.string()).optional(),theme:H.enum(["light","dark"]).optional()}),s$=H.object({icons:H.array(kV).optional()}),G$=H.object({name:H.string(),title:H.string().optional()}),bY=G$.extend({...G$.shape,...s$.shape,version:H.string(),websiteUrl:H.string().optional(),description:H.string().optional()}),fV=H.intersection(H.object({applyDefaults:H.boolean().optional()}),H.record(H.string(),H.unknown())),vV=H.preprocess(($)=>{if($&&typeof $==="object"&&!Array.isArray($)){if(Object.keys($).length===0)return{form:{}}}return $},H.intersection(H.object({form:fV.optional(),url:a.optional()}),H.record(H.string(),H.unknown()).optional())),gV=H.looseObject({list:a.optional(),cancel:a.optional(),requests:H.looseObject({sampling:H.looseObject({createMessage:a.optional()}).optional(),elicitation:H.looseObject({create:a.optional()}).optional()}).optional()}),hV=H.looseObject({list:a.optional(),cancel:a.optional(),requests:H.looseObject({tools:H.looseObject({call:a.optional()}).optional()}).optional()}),uV=H.object({experimental:H.record(H.string(),a).optional(),sampling:H.object({context:a.optional(),tools:a.optional()}).optional(),elicitation:vV.optional(),roots:H.object({listChanged:H.boolean().optional()}).optional(),tasks:gV.optional(),extensions:H.record(H.string(),a).optional()}),mV=q0.extend({protocolVersion:H.string(),capabilities:uV,clientInfo:bY}),lV=s.extend({method:H.literal("initialize"),params:mV});var pV=H.object({experimental:H.record(H.string(),a).optional(),logging:a.optional(),completions:a.optional(),prompts:H.object({listChanged:H.boolean().optional()}).optional(),resources:H.object({subscribe:H.boolean().optional(),listChanged:H.boolean().optional()}).optional(),tools:H.object({listChanged:H.boolean().optional()}).optional(),tasks:hV.optional(),extensions:H.record(H.string(),a).optional()}),x4=e.extend({protocolVersion:H.string(),capabilities:pV,serverInfo:bY,instructions:H.string().optional()}),cV=j0.extend({method:H.literal("notifications/initialized"),params:O0.optional()});var N5=s.extend({method:H.literal("ping"),params:q0.optional()}),dV=H.object({progress:H.number(),total:H.optional(H.number()),message:H.optional(H.string())}),iV=H.object({...O0.shape,...dV.shape,progressToken:wY}),M5=j0.extend({method:H.literal("notifications/progress"),params:iV}),nV=q0.extend({cursor:TY.optional()}),e$=s.extend({params:nV.optional()}),$Z=e.extend({nextCursor:TY.optional()}),aV=H.enum(["working","input_required","completed","failed","cancelled"]),ZZ=H.object({taskId:H.string(),status:aV,ttl:H.union([H.number(),H.null()]),createdAt:H.string(),lastUpdatedAt:H.string(),pollInterval:H.optional(H.number()),statusMessage:H.optional(H.string())}),k1=e.extend({task:ZZ}),rV=O0.merge(ZZ),QZ=j0.extend({method:H.literal("notifications/tasks/status"),params:rV}),O5=s.extend({method:H.literal("tasks/get"),params:q0.extend({taskId:H.string()})}),j5=e.merge(ZZ),P5=s.extend({method:H.literal("tasks/result"),params:q0.extend({taskId:H.string()})}),pI=e.loose(),w5=e$.extend({method:H.literal("tasks/list")}),T5=$Z.extend({tasks:H.array(ZZ)}),I5=s.extend({method:H.literal("tasks/cancel"),params:q0.extend({taskId:H.string()})}),_Y=e.merge(ZZ),xY=H.object({uri:H.string(),mimeType:H.optional(H.string()),_meta:H.record(H.string(),H.unknown()).optional()}),kY=xY.extend({text:H.string()}),k4=H.string().refine(($)=>{try{return atob($),!0}catch{return!1}},{message:"Invalid Base64 string"}),fY=xY.extend({blob:k4}),YZ=H.enum(["user","assistant"]),X$=H.object({audience:H.array(YZ).optional(),priority:H.number().min(0).max(1).optional(),lastModified:H.iso.datetime({offset:!0}).optional()}),vY=H.object({...G$.shape,...s$.shape,uri:H.string(),description:H.optional(H.string()),mimeType:H.optional(H.string()),size:H.optional(H.number()),annotations:X$.optional(),_meta:H.optional(H.looseObject({}))}),tV=H.object({...G$.shape,...s$.shape,uriTemplate:H.string(),description:H.optional(H.string()),mimeType:H.optional(H.string()),annotations:X$.optional(),_meta:H.optional(H.looseObject({}))}),oV=e$.extend({method:H.literal("resources/list")}),f4=$Z.extend({resources:H.array(vY)}),sV=e$.extend({method:H.literal("resources/templates/list")}),v4=$Z.extend({resourceTemplates:H.array(tV)}),g4=q0.extend({uri:H.string()}),eV=g4,$z=s.extend({method:H.literal("resources/read"),params:eV}),h4=e.extend({contents:H.array(H.union([kY,fY]))}),u4=j0.extend({method:H.literal("notifications/resources/list_changed"),params:O0.optional()}),Zz=g4,Qz=s.extend({method:H.literal("resources/subscribe"),params:Zz}),Yz=g4,Wz=s.extend({method:H.literal("resources/unsubscribe"),params:Yz}),Gz=O0.extend({uri:H.string()}),Xz=j0.extend({method:H.literal("notifications/resources/updated"),params:Gz}),Jz=H.object({name:H.string(),description:H.optional(H.string()),required:H.optional(H.boolean())}),Kz=H.object({...G$.shape,...s$.shape,description:H.optional(H.string()),arguments:H.optional(H.array(Jz)),_meta:H.optional(H.looseObject({}))}),Bz=e$.extend({method:H.literal("prompts/list")}),m4=$Z.extend({prompts:H.array(Kz)}),Hz=q0.extend({name:H.string(),arguments:H.record(H.string(),H.string()).optional()}),Vz=s.extend({method:H.literal("prompts/get"),params:Hz}),l4=H.object({type:H.literal("text"),text:H.string(),annotations:X$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),p4=H.object({type:H.literal("image"),data:k4,mimeType:H.string(),annotations:X$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),c4=H.object({type:H.literal("audio"),data:k4,mimeType:H.string(),annotations:X$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),zz=H.object({type:H.literal("tool_use"),name:H.string(),id:H.string(),input:H.record(H.string(),H.unknown()),_meta:H.record(H.string(),H.unknown()).optional()}),Fz=H.object({type:H.literal("resource"),resource:H.union([kY,fY]),annotations:X$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Lz=vY.extend({type:H.literal("resource_link")}),d4=H.union([l4,p4,c4,Lz,Fz]),Dz=H.object({role:YZ,content:d4}),i4=e.extend({description:H.string().optional(),messages:H.array(Dz)}),n4=j0.extend({method:H.literal("notifications/prompts/list_changed"),params:O0.optional()}),Uz=H.object({title:H.string().optional(),readOnlyHint:H.boolean().optional(),destructiveHint:H.boolean().optional(),idempotentHint:H.boolean().optional(),openWorldHint:H.boolean().optional()}),qz=H.object({taskSupport:H.enum(["required","optional","forbidden"]).optional()}),gY=H.object({...G$.shape,...s$.shape,description:H.string().optional(),inputSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),a).optional(),required:H.array(H.string()).optional()}).catchall(H.unknown()),outputSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),a).optional(),required:H.array(H.string()).optional()}).catchall(H.unknown()).optional(),annotations:Uz.optional(),execution:qz.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Az=e$.extend({method:H.literal("tools/list")}),a4=$Z.extend({tools:H.array(gY)}),J$=e.extend({content:H.array(d4).default([]),structuredContent:H.record(H.string(),H.unknown()).optional(),isError:H.boolean().optional()}),cI=J$.or(e.extend({toolResult:H.unknown()})),Nz=t$.extend({name:H.string(),arguments:H.record(H.string(),H.unknown()).optional()}),Mz=s.extend({method:H.literal("tools/call"),params:Nz}),r4=j0.extend({method:H.literal("notifications/tools/list_changed"),params:O0.optional()}),hY=H.object({autoRefresh:H.boolean().default(!0),debounceMs:H.number().int().nonnegative().default(300)}),uY=H.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Oz=q0.extend({level:uY}),jz=s.extend({method:H.literal("logging/setLevel"),params:Oz}),Pz=O0.extend({level:uY,logger:H.string().optional(),data:H.unknown()}),wz=j0.extend({method:H.literal("notifications/message"),params:Pz}),Tz=H.object({name:H.string().optional()}),Iz=H.object({hints:H.array(Tz).optional(),costPriority:H.number().min(0).max(1).optional(),speedPriority:H.number().min(0).max(1).optional(),intelligencePriority:H.number().min(0).max(1).optional()}),Rz=H.object({mode:H.enum(["auto","required","none"]).optional()}),Ez=H.object({type:H.literal("tool_result"),toolUseId:H.string().describe("The unique identifier for the corresponding tool call."),content:H.array(d4).default([]),structuredContent:H.object({}).loose().optional(),isError:H.boolean().optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Sz=H.discriminatedUnion("type",[l4,p4,c4]),D5=H.discriminatedUnion("type",[l4,p4,c4,zz,Ez]),Cz=H.object({role:YZ,content:H.union([D5,H.array(D5)]),_meta:H.record(H.string(),H.unknown()).optional()}),yz=t$.extend({messages:H.array(Cz),modelPreferences:Iz.optional(),systemPrompt:H.string().optional(),includeContext:H.enum(["none","thisServer","allServers"]).optional(),temperature:H.number().optional(),maxTokens:H.number().int(),stopSequences:H.array(H.string()).optional(),metadata:a.optional(),tools:H.array(gY).optional(),toolChoice:Rz.optional()}),t4=s.extend({method:H.literal("sampling/createMessage"),params:yz}),o4=e.extend({model:H.string(),stopReason:H.optional(H.enum(["endTurn","stopSequence","maxTokens"]).or(H.string())),role:YZ,content:Sz}),s4=e.extend({model:H.string(),stopReason:H.optional(H.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(H.string())),role:YZ,content:H.union([D5,H.array(D5)])}),bz=H.object({type:H.literal("boolean"),title:H.string().optional(),description:H.string().optional(),default:H.boolean().optional()}),_z=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),minLength:H.number().optional(),maxLength:H.number().optional(),format:H.enum(["email","uri","date","date-time"]).optional(),default:H.string().optional()}),xz=H.object({type:H.enum(["number","integer"]),title:H.string().optional(),description:H.string().optional(),minimum:H.number().optional(),maximum:H.number().optional(),default:H.number().optional()}),kz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),enum:H.array(H.string()),default:H.string().optional()}),fz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),oneOf:H.array(H.object({const:H.string(),title:H.string()})),default:H.string().optional()}),vz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),enum:H.array(H.string()),enumNames:H.array(H.string()).optional(),default:H.string().optional()}),gz=H.union([kz,fz]),hz=H.object({type:H.literal("array"),title:H.string().optional(),description:H.string().optional(),minItems:H.number().optional(),maxItems:H.number().optional(),items:H.object({type:H.literal("string"),enum:H.array(H.string())}),default:H.array(H.string()).optional()}),uz=H.object({type:H.literal("array"),title:H.string().optional(),description:H.string().optional(),minItems:H.number().optional(),maxItems:H.number().optional(),items:H.object({anyOf:H.array(H.object({const:H.string(),title:H.string()}))}),default:H.array(H.string()).optional()}),mz=H.union([hz,uz]),lz=H.union([vz,gz,mz]),pz=H.union([lz,bz,_z,xz]),cz=t$.extend({mode:H.literal("form").optional(),message:H.string(),requestedSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),pz),required:H.array(H.string()).optional()})}),dz=t$.extend({mode:H.literal("url"),message:H.string(),elicitationId:H.string(),url:H.string().url()}),iz=H.union([cz,dz]),e4=s.extend({method:H.literal("elicitation/create"),params:iz}),nz=O0.extend({elicitationId:H.string()}),az=j0.extend({method:H.literal("notifications/elicitation/complete"),params:nz}),$8=e.extend({action:H.enum(["accept","decline","cancel"]),content:H.preprocess(($)=>$===null?void 0:$,H.record(H.string(),H.union([H.string(),H.number(),H.boolean(),H.array(H.string())])).optional())}),rz=H.object({type:H.literal("ref/resource"),uri:H.string()});var tz=H.object({type:H.literal("ref/prompt"),name:H.string()}),oz=q0.extend({ref:H.union([tz,rz]),argument:H.object({name:H.string(),value:H.string()}),context:H.object({arguments:H.record(H.string(),H.string()).optional()}).optional()}),sz=s.extend({method:H.literal("completion/complete"),params:oz});var Z8=e.extend({completion:H.looseObject({values:H.array(H.string()).max(100),total:H.optional(H.number().int()),hasMore:H.optional(H.boolean())})}),ez=H.object({uri:H.string().startsWith("file://"),name:H.string().optional(),_meta:H.record(H.string(),H.unknown()).optional()}),$F=s.extend({method:H.literal("roots/list"),params:q0.optional()}),ZF=e.extend({roots:H.array(ez)}),QF=j0.extend({method:H.literal("notifications/roots/list_changed"),params:O0.optional()}),dI=H.union([N5,lV,sz,jz,Vz,Bz,oV,sV,$z,Qz,Wz,Mz,Az,O5,P5,w5,I5]),iI=H.union([A5,M5,cV,QF,QZ]),nI=H.union([x1,o4,s4,$8,ZF,j5,T5,k1]),aI=H.union([N5,t4,e4,$F,O5,P5,w5,I5]),rI=H.union([A5,M5,wz,Xz,u4,r4,n4,QZ,az]),tI=H.union([x1,x4,Z8,i4,m4,f4,v4,h4,J$,a4,j5,T5,k1]);class I extends Error{constructor($,Z,Q){super(`MCP error ${$}: ${Z}`);this.code=$,this.data=Q,this.name="McpError"}static fromError($,Z,Q){if($===R.UrlElicitationRequired&&Q){let Y=Q;if(Y.elicitations)return new mY(Y.elicitations,Z)}return new I($,Z,Q)}}class mY extends I{constructor($,Z=`URL elicitation${$.length>1?"s":""} required`){super(R.UrlElicitationRequired,Z,{elicitations:$})}get elicitations(){return this.data?.elicitations??[]}}function D1($){return $==="completed"||$==="failed"||$==="cancelled"}import*as BF from"zod/v4-mini";var YF=Symbol("Let zodToJsonSchema decide on which parser to use");import{ZodFirstPartyTypeKind as tE}from"zod/v3";import{ZodFirstPartyTypeKind as KR}from"zod/v3";import{ZodFirstPartyTypeKind as xR}from"zod/v3";var yR=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Q8($){let Q=L5($)?.method;if(!Q)throw Error("Schema is missing a method literal");let Y=jY(Q);if(typeof Y!=="string")throw Error("Schema method literal must be a string");return Y}function Y8($,Z){let Q=R0($,Z);if(!Q.success)throw Q.error;return Q.data}var HF=60000;class W8{constructor($){if(this._options=$,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(A5,(Z)=>{this._oncancel(Z)}),this.setNotificationHandler(M5,(Z)=>{this._onprogress(Z)}),this.setRequestHandler(N5,(Z)=>({})),this._taskStore=$?.taskStore,this._taskMessageQueue=$?.taskMessageQueue,this._taskStore)this.setRequestHandler(O5,async(Z,Q)=>{let Y=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!Y)throw new I(R.InvalidParams,"Failed to retrieve task: Task not found");return{...Y}}),this.setRequestHandler(P5,async(Z,Q)=>{let Y=async()=>{let W=Z.params.taskId;if(this._taskMessageQueue){let X;while(X=await this._taskMessageQueue.dequeue(W,Q.sessionId)){if(X.type==="response"||X.type==="error"){let J=X.message,B=J.id,K=this._requestResolvers.get(B);if(K)if(this._requestResolvers.delete(B),X.type==="response")K(J);else{let V=J,z=new I(V.error.code,V.error.message,V.error.data);K(z)}else{let V=X.type==="response"?"Response":"Error";this._onerror(Error(`${V} handler missing for request ${B}`))}continue}await this._transport?.send(X.message,{relatedRequestId:Q.requestId})}}let G=await this._taskStore.getTask(W,Q.sessionId);if(!G)throw new I(R.InvalidParams,`Task not found: ${W}`);if(!D1(G.status))return await this._waitForTaskUpdate(W,Q.signal),await Y();if(D1(G.status)){let X=await this._taskStore.getTaskResult(W,Q.sessionId);return this._clearTaskQueue(W),{...X,_meta:{...X._meta,[L1]:{taskId:W}}}}return await Y()};return await Y()}),this.setRequestHandler(w5,async(Z,Q)=>{try{let{tasks:Y,nextCursor:W}=await this._taskStore.listTasks(Z.params?.cursor,Q.sessionId);return{tasks:Y,nextCursor:W,_meta:{}}}catch(Y){throw new I(R.InvalidParams,`Failed to list tasks: ${Y instanceof Error?Y.message:String(Y)}`)}}),this.setRequestHandler(I5,async(Z,Q)=>{try{let Y=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!Y)throw new I(R.InvalidParams,`Task not found: ${Z.params.taskId}`);if(D1(Y.status))throw new I(R.InvalidParams,`Cannot cancel task in terminal status: ${Y.status}`);await this._taskStore.updateTaskStatus(Z.params.taskId,"cancelled","Client cancelled task execution.",Q.sessionId),this._clearTaskQueue(Z.params.taskId);let W=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!W)throw new I(R.InvalidParams,`Task not found after cancellation: ${Z.params.taskId}`);return{_meta:{},...W}}catch(Y){if(Y instanceof I)throw Y;throw new I(R.InvalidRequest,`Failed to cancel task: ${Y instanceof Error?Y.message:String(Y)}`)}})}async _oncancel($){if(!$.params.requestId)return;this._requestHandlerAbortControllers.get($.params.requestId)?.abort($.params.reason)}_setupTimeout($,Z,Q,Y,W=!1){this._timeoutInfo.set($,{timeoutId:setTimeout(Y,Z),startTime:Date.now(),timeout:Z,maxTotalTimeout:Q,resetTimeoutOnProgress:W,onTimeout:Y})}_resetTimeout($){let Z=this._timeoutInfo.get($);if(!Z)return!1;let Q=Date.now()-Z.startTime;if(Z.maxTotalTimeout&&Q>=Z.maxTotalTimeout)throw this._timeoutInfo.delete($),I.fromError(R.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:Z.maxTotalTimeout,totalElapsed:Q});return clearTimeout(Z.timeoutId),Z.timeoutId=setTimeout(Z.onTimeout,Z.timeout),!0}_cleanupTimeout($){let Z=this._timeoutInfo.get($);if(Z)clearTimeout(Z.timeoutId),this._timeoutInfo.delete($)}async connect($){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=$;let Z=this.transport?.onclose;this._transport.onclose=()=>{Z?.(),this._onclose()};let Q=this.transport?.onerror;this._transport.onerror=(W)=>{Q?.(W),this._onerror(W)};let Y=this._transport?.onmessage;this._transport.onmessage=(W,G)=>{if(Y?.(W,G),o$(W)||CY(W))this._onresponse(W);else if(y4(W))this._onrequest(W,G);else if(SY(W))this._onnotification(W);else this._onerror(Error(`Unknown message type: ${JSON.stringify(W)}`))},await this._transport.start()}_onclose(){let $=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let Q of this._timeoutInfo.values())clearTimeout(Q.timeoutId);this._timeoutInfo.clear();for(let Q of this._requestHandlerAbortControllers.values())Q.abort();this._requestHandlerAbortControllers.clear();let Z=I.fromError(R.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let Q of $.values())Q(Z)}_onerror($){this.onerror?.($)}_onnotification($){let Z=this._notificationHandlers.get($.method)??this.fallbackNotificationHandler;if(Z===void 0)return;Promise.resolve().then(()=>Z($)).catch((Q)=>this._onerror(Error(`Uncaught error in notification handler: ${Q}`)))}_onrequest($,Z){let Q=this._requestHandlers.get($.method)??this.fallbackRequestHandler,Y=this._transport,W=$.params?._meta?.[L1]?.taskId;if(Q===void 0){let K={jsonrpc:"2.0",id:$.id,error:{code:R.MethodNotFound,message:"Method not found"}};if(W&&this._taskMessageQueue)this._enqueueTaskMessage(W,{type:"error",message:K,timestamp:Date.now()},Y?.sessionId).catch((V)=>this._onerror(Error(`Failed to enqueue error response: ${V}`)));else Y?.send(K).catch((V)=>this._onerror(Error(`Failed to send an error response: ${V}`)));return}let G=new AbortController;this._requestHandlerAbortControllers.set($.id,G);let X=IY($.params)?$.params.task:void 0,J=this._taskStore?this.requestTaskStore($,Y?.sessionId):void 0,B={signal:G.signal,sessionId:Y?.sessionId,_meta:$.params?._meta,sendNotification:async(K)=>{if(G.signal.aborted)return;let V={relatedRequestId:$.id};if(W)V.relatedTask={taskId:W};await this.notification(K,V)},sendRequest:async(K,V,z)=>{if(G.signal.aborted)throw new I(R.ConnectionClosed,"Request was cancelled");let F={...z,relatedRequestId:$.id};if(W&&!F.relatedTask)F.relatedTask={taskId:W};let D=F.relatedTask?.taskId??W;if(D&&J)await J.updateTaskStatus(D,"input_required");return await this.request(K,V,F)},authInfo:Z?.authInfo,requestId:$.id,requestInfo:Z?.requestInfo,taskId:W,taskStore:J,taskRequestedTtl:X?.ttl,closeSSEStream:Z?.closeSSEStream,closeStandaloneSSEStream:Z?.closeStandaloneSSEStream};Promise.resolve().then(()=>{if(X)this.assertTaskHandlerCapability($.method)}).then(()=>Q($,B)).then(async(K)=>{if(G.signal.aborted)return;let V={result:K,jsonrpc:"2.0",id:$.id};if(W&&this._taskMessageQueue)await this._enqueueTaskMessage(W,{type:"response",message:V,timestamp:Date.now()},Y?.sessionId);else await Y?.send(V)},async(K)=>{if(G.signal.aborted)return;let V={jsonrpc:"2.0",id:$.id,error:{code:Number.isSafeInteger(K.code)?K.code:R.InternalError,message:K.message??"Internal error",...K.data!==void 0&&{data:K.data}}};if(W&&this._taskMessageQueue)await this._enqueueTaskMessage(W,{type:"error",message:V,timestamp:Date.now()},Y?.sessionId);else await Y?.send(V)}).catch((K)=>this._onerror(Error(`Failed to send response: ${K}`))).finally(()=>{if(this._requestHandlerAbortControllers.get($.id)===G)this._requestHandlerAbortControllers.delete($.id)})}_onprogress($){let{progressToken:Z,...Q}=$.params,Y=Number(Z),W=this._progressHandlers.get(Y);if(!W){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify($)}`));return}let G=this._responseHandlers.get(Y),X=this._timeoutInfo.get(Y);if(X&&G&&X.resetTimeoutOnProgress)try{this._resetTimeout(Y)}catch(J){this._responseHandlers.delete(Y),this._progressHandlers.delete(Y),this._cleanupTimeout(Y),G(J);return}W(Q)}_onresponse($){let Z=Number($.id),Q=this._requestResolvers.get(Z);if(Q){if(this._requestResolvers.delete(Z),o$($))Q($);else{let G=new I($.error.code,$.error.message,$.error.data);Q(G)}return}let Y=this._responseHandlers.get(Z);if(Y===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify($)}`));return}this._responseHandlers.delete(Z),this._cleanupTimeout(Z);let W=!1;if(o$($)&&$.result&&typeof $.result==="object"){let G=$.result;if(G.task&&typeof G.task==="object"){let X=G.task;if(typeof X.taskId==="string")W=!0,this._taskProgressTokens.set(X.taskId,Z)}}if(!W)this._progressHandlers.delete(Z);if(o$($))Y($);else{let G=I.fromError($.error.code,$.error.message,$.error.data);Y(G)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream($,Z,Q){let{task:Y}=Q??{};if(!Y){try{yield{type:"result",result:await this.request($,Z,Q)}}catch(G){yield{type:"error",error:G instanceof I?G:new I(R.InternalError,String(G))}}return}let W;try{let G=await this.request($,k1,Q);if(G.task)W=G.task.taskId,yield{type:"taskCreated",task:G.task};else throw new I(R.InternalError,"Task creation did not return a task");while(!0){let X=await this.getTask({taskId:W},Q);if(yield{type:"taskStatus",task:X},D1(X.status)){if(X.status==="completed")yield{type:"result",result:await this.getTaskResult({taskId:W},Z,Q)};else if(X.status==="failed")yield{type:"error",error:new I(R.InternalError,`Task ${W} failed`)};else if(X.status==="cancelled")yield{type:"error",error:new I(R.InternalError,`Task ${W} was cancelled`)};return}if(X.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:W},Z,Q)};return}let J=X.pollInterval??this._options?.defaultTaskPollInterval??1000;await new Promise((B)=>setTimeout(B,J)),Q?.signal?.throwIfAborted()}}catch(G){yield{type:"error",error:G instanceof I?G:new I(R.InternalError,String(G))}}}request($,Z,Q){let{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G,task:X,relatedTask:J}=Q??{};return new Promise((B,K)=>{let V=(A)=>{K(A)};if(!this._transport){V(Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{if(this.assertCapabilityForMethod($.method),X)this.assertTaskCapability($.method)}catch(A){V(A);return}Q?.signal?.throwIfAborted();let z=this._requestMessageId++,F={...$,jsonrpc:"2.0",id:z};if(Q?.onprogress)this._progressHandlers.set(z,Q.onprogress),F.params={...$.params,_meta:{...$.params?._meta||{},progressToken:z}};if(X)F.params={...F.params,task:X};if(J)F.params={...F.params,_meta:{...F.params?._meta||{},[L1]:J}};let D=(A)=>{this._responseHandlers.delete(z),this._progressHandlers.delete(z),this._cleanupTimeout(z),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:z,reason:String(A)}},{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G}).catch((j)=>this._onerror(Error(`Failed to send cancellation: ${j}`)));let N=A instanceof I?A:new I(R.RequestTimeout,String(A));K(N)};this._responseHandlers.set(z,(A)=>{if(Q?.signal?.aborted)return;if(A instanceof Error)return K(A);try{let N=R0(Z,A.result);if(!N.success)K(N.error);else B(N.data)}catch(N){K(N)}}),Q?.signal?.addEventListener("abort",()=>{D(Q?.signal?.reason)});let L=Q?.timeout??HF,U=()=>D(I.fromError(R.RequestTimeout,"Request timed out",{timeout:L}));this._setupTimeout(z,L,Q?.maxTotalTimeout,U,Q?.resetTimeoutOnProgress??!1);let q=J?.taskId;if(q){let A=(N)=>{let j=this._responseHandlers.get(z);if(j)j(N);else this._onerror(Error(`Response handler missing for side-channeled request ${z}`))};this._requestResolvers.set(z,A),this._enqueueTaskMessage(q,{type:"request",message:F,timestamp:Date.now()}).catch((N)=>{this._cleanupTimeout(z),K(N)})}else this._transport.send(F,{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G}).catch((A)=>{this._cleanupTimeout(z),K(A)})})}async getTask($,Z){return this.request({method:"tasks/get",params:$},j5,Z)}async getTaskResult($,Z,Q){return this.request({method:"tasks/result",params:$},Z,Q)}async listTasks($,Z){return this.request({method:"tasks/list",params:$},T5,Z)}async cancelTask($,Z){return this.request({method:"tasks/cancel",params:$},_Y,Z)}async notification($,Z){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability($.method);let Q=Z?.relatedTask?.taskId;if(Q){let X={...$,jsonrpc:"2.0",params:{...$.params,_meta:{...$.params?._meta||{},[L1]:Z.relatedTask}}};await this._enqueueTaskMessage(Q,{type:"notification",message:X,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes($.method)&&!$.params&&!Z?.relatedRequestId&&!Z?.relatedTask){if(this._pendingDebouncedNotifications.has($.method))return;this._pendingDebouncedNotifications.add($.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete($.method),!this._transport)return;let X={...$,jsonrpc:"2.0"};if(Z?.relatedTask)X={...X,params:{...X.params,_meta:{...X.params?._meta||{},[L1]:Z.relatedTask}}};this._transport?.send(X,Z).catch((J)=>this._onerror(J))});return}let G={...$,jsonrpc:"2.0"};if(Z?.relatedTask)G={...G,params:{...G.params,_meta:{...G.params?._meta||{},[L1]:Z.relatedTask}}};await this._transport.send(G,Z)}setRequestHandler($,Z){let Q=Q8($);this.assertRequestHandlerCapability(Q),this._requestHandlers.set(Q,(Y,W)=>{let G=Y8($,Y);return Promise.resolve(Z(G,W))})}removeRequestHandler($){this._requestHandlers.delete($)}assertCanSetRequestHandler($){if(this._requestHandlers.has($))throw Error(`A request handler for ${$} already exists, which would be overridden`)}setNotificationHandler($,Z){let Q=Q8($);this._notificationHandlers.set(Q,(Y)=>{let W=Y8($,Y);return Promise.resolve(Z(W))})}removeNotificationHandler($){this._notificationHandlers.delete($)}_cleanupTaskProgressHandler($){let Z=this._taskProgressTokens.get($);if(Z!==void 0)this._progressHandlers.delete(Z),this._taskProgressTokens.delete($)}async _enqueueTaskMessage($,Z,Q){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let Y=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue($,Z,Q,Y)}async _clearTaskQueue($,Z){if(this._taskMessageQueue){let Q=await this._taskMessageQueue.dequeueAll($,Z);for(let Y of Q)if(Y.type==="request"&&y4(Y.message)){let W=Y.message.id,G=this._requestResolvers.get(W);if(G)G(new I(R.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(W);else this._onerror(Error(`Resolver missing for request ${W} during task ${$} cleanup`))}}}async _waitForTaskUpdate($,Z){let Q=this._options?.defaultTaskPollInterval??1000;try{let Y=await this._taskStore?.getTask($);if(Y?.pollInterval)Q=Y.pollInterval}catch{}return new Promise((Y,W)=>{if(Z.aborted){W(new I(R.InvalidRequest,"Request cancelled"));return}let G=setTimeout(Y,Q);Z.addEventListener("abort",()=>{clearTimeout(G),W(new I(R.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore($,Z){let Q=this._taskStore;if(!Q)throw Error("No task store configured");return{createTask:async(Y)=>{if(!$)throw Error("No request provided");return await Q.createTask(Y,$.id,{method:$.method,params:$.params},Z)},getTask:async(Y)=>{let W=await Q.getTask(Y,Z);if(!W)throw new I(R.InvalidParams,"Failed to retrieve task: Task not found");return W},storeTaskResult:async(Y,W,G)=>{await Q.storeTaskResult(Y,W,G,Z);let X=await Q.getTask(Y,Z);if(X){let J=QZ.parse({method:"notifications/tasks/status",params:X});if(await this.notification(J),D1(X.status))this._cleanupTaskProgressHandler(Y)}},getTaskResult:(Y)=>{return Q.getTaskResult(Y,Z)},updateTaskStatus:async(Y,W,G)=>{let X=await Q.getTask(Y,Z);if(!X)throw new I(R.InvalidParams,`Task "${Y}" not found - it may have been cleaned up`);if(D1(X.status))throw new I(R.InvalidParams,`Cannot update task "${Y}" from terminal status "${X.status}" to "${W}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await Q.updateTaskStatus(Y,W,G,Z);let J=await Q.getTask(Y,Z);if(J){let B=QZ.parse({method:"notifications/tasks/status",params:J});if(await this.notification(B),D1(J.status))this._cleanupTaskProgressHandler(Y)}},listTasks:(Y)=>{return Q.listTasks(Y,Z)}}}}function lY($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function pY($,Z){let Q={...$};for(let Y in Z){let W=Y,G=Z[W];if(G===void 0)continue;let X=Q[W];if(lY(X)&&lY(G))Q[W]={...X,...G};else Q[W]=G}return Q}var TJ=j6(e8(),1),IJ=j6(wJ(),1);function _O(){let $=new TJ.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return IJ.default($),$}class B9{constructor($){this._ajv=$??_O()}getValidator($){let Z="$id"in $&&typeof $.$id==="string"?this._ajv.getSchema($.$id)??this._ajv.compile($):this._ajv.compile($);return(Q)=>{if(Z(Q))return{valid:!0,data:Q,errorMessage:void 0};else return{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(Z.errors)}}}}class H9{constructor($){this._client=$}async*callToolStream($,Z=J$,Q){let Y=this._client,W={...Q,task:Q?.task??(Y.isToolTask($.name)?{}:void 0)},G=Y.requestStream({method:"tools/call",params:$},Z,W),X=Y.getToolOutputValidator($.name);for await(let J of G){if(J.type==="result"&&X){let B=J.result;if(!B.structuredContent&&!B.isError){yield{type:"error",error:new I(R.InvalidRequest,`Tool ${$.name} has an output schema but did not return structured content`)};return}if(B.structuredContent)try{let K=X(B.structuredContent);if(!K.valid){yield{type:"error",error:new I(R.InvalidParams,`Structured content does not match the tool's output schema: ${K.errorMessage}`)};return}}catch(K){if(K instanceof I){yield{type:"error",error:K};return}yield{type:"error",error:new I(R.InvalidParams,`Failed to validate structured content: ${K instanceof Error?K.message:String(K)}`)};return}}yield J}}async getTask($,Z){return this._client.getTask({taskId:$},Z)}async getTaskResult($,Z,Q){return this._client.getTaskResult({taskId:$},Z,Q)}async listTasks($,Z){return this._client.listTasks($?{cursor:$}:void 0,Z)}async cancelTask($,Z){return this._client.cancelTask({taskId:$},Z)}requestStream($,Z,Q){return this._client.requestStream($,Z,Q)}}function RJ($,Z,Q){if(!$)throw Error(`${Q} does not support task creation (required for ${Z})`);switch(Z){case"tools/call":if(!$.tools?.call)throw Error(`${Q} does not support task creation for tools/call (required for ${Z})`);break;default:break}}function EJ($,Z,Q){if(!$)throw Error(`${Q} does not support task creation (required for ${Z})`);switch(Z){case"sampling/createMessage":if(!$.sampling?.createMessage)throw Error(`${Q} does not support task creation for sampling/createMessage (required for ${Z})`);break;case"elicitation/create":if(!$.elicitation?.create)throw Error(`${Q} does not support task creation for elicitation/create (required for ${Z})`);break;default:break}}function B6($,Z){if(!$||Z===null||typeof Z!=="object")return;if($.type==="object"&&$.properties&&typeof $.properties==="object"){let Q=Z,Y=$.properties;for(let W of Object.keys(Y)){let G=Y[W];if(Q[W]===void 0&&Object.prototype.hasOwnProperty.call(G,"default"))Q[W]=G.default;if(Q[W]!==void 0)B6(G,Q[W])}}if(Array.isArray($.anyOf)){for(let Q of $.anyOf)if(typeof Q!=="boolean")B6(Q,Z)}if(Array.isArray($.oneOf)){for(let Q of $.oneOf)if(typeof Q!=="boolean")B6(Q,Z)}}function xO($){if(!$)return{supportsFormMode:!1,supportsUrlMode:!1};let Z=$.form!==void 0,Q=$.url!==void 0;return{supportsFormMode:Z||!Z&&!Q,supportsUrlMode:Q}}class V9 extends W8{constructor($,Z){super(Z);if(this._clientInfo=$,this._cachedToolOutputValidators=new Map,this._cachedKnownTaskTools=new Set,this._cachedRequiredTaskTools=new Set,this._listChangedDebounceTimers=new Map,this._capabilities=Z?.capabilities??{},this._jsonSchemaValidator=Z?.jsonSchemaValidator??new B9,Z?.listChanged)this._pendingListChangedConfig=Z.listChanged}_setupListChangedHandlers($){if($.tools&&this._serverCapabilities?.tools?.listChanged)this._setupListChangedHandler("tools",r4,$.tools,async()=>{return(await this.listTools()).tools});if($.prompts&&this._serverCapabilities?.prompts?.listChanged)this._setupListChangedHandler("prompts",n4,$.prompts,async()=>{return(await this.listPrompts()).prompts});if($.resources&&this._serverCapabilities?.resources?.listChanged)this._setupListChangedHandler("resources",u4,$.resources,async()=>{return(await this.listResources()).resources})}get experimental(){if(!this._experimental)this._experimental={tasks:new H9(this)};return this._experimental}registerCapabilities($){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=pY(this._capabilities,$)}setRequestHandler($,Z){let Y=L5($)?.method;if(!Y)throw Error("Schema is missing a method literal");let W;if(W$(Y)){let X=Y;W=X._zod?.def?.value??X.value}else{let X=Y;W=X._def?.value??X.value}if(typeof W!=="string")throw Error("Schema method literal must be a string");let G=W;if(G==="elicitation/create"){let X=async(J,B)=>{let K=R0(e4,J);if(!K.success){let A=K.error instanceof Error?K.error.message:String(K.error);throw new I(R.InvalidParams,`Invalid elicitation request: ${A}`)}let{params:V}=K.data;V.mode=V.mode??"form";let{supportsFormMode:z,supportsUrlMode:F}=xO(this._capabilities.elicitation);if(V.mode==="form"&&!z)throw new I(R.InvalidParams,"Client does not support form-mode elicitation requests");if(V.mode==="url"&&!F)throw new I(R.InvalidParams,"Client does not support URL-mode elicitation requests");let D=await Promise.resolve(Z(J,B));if(V.task){let A=R0(k1,D);if(!A.success){let N=A.error instanceof Error?A.error.message:String(A.error);throw new I(R.InvalidParams,`Invalid task creation result: ${N}`)}return A.data}let L=R0($8,D);if(!L.success){let A=L.error instanceof Error?L.error.message:String(L.error);throw new I(R.InvalidParams,`Invalid elicitation result: ${A}`)}let U=L.data,q=V.mode==="form"?V.requestedSchema:void 0;if(V.mode==="form"&&U.action==="accept"&&U.content&&q){if(this._capabilities.elicitation?.form?.applyDefaults)try{B6(q,U.content)}catch{}}return U};return super.setRequestHandler($,X)}if(G==="sampling/createMessage"){let X=async(J,B)=>{let K=R0(t4,J);if(!K.success){let U=K.error instanceof Error?K.error.message:String(K.error);throw new I(R.InvalidParams,`Invalid sampling request: ${U}`)}let{params:V}=K.data,z=await Promise.resolve(Z(J,B));if(V.task){let U=R0(k1,z);if(!U.success){let q=U.error instanceof Error?U.error.message:String(U.error);throw new I(R.InvalidParams,`Invalid task creation result: ${q}`)}return U.data}let D=V.tools||V.toolChoice?s4:o4,L=R0(D,z);if(!L.success){let U=L.error instanceof Error?L.error.message:String(L.error);throw new I(R.InvalidParams,`Invalid sampling result: ${U}`)}return L.data};return super.setRequestHandler($,X)}return super.setRequestHandler($,Z)}assertCapability($,Z){if(!this._serverCapabilities?.[$])throw Error(`Server does not support ${$} (required for ${Z})`)}async connect($,Z){if(await super.connect($),$.sessionId!==void 0)return;try{let Q=await this.request({method:"initialize",params:{protocolVersion:S4,capabilities:this._capabilities,clientInfo:this._clientInfo}},x4,Z);if(Q===void 0)throw Error(`Server sent invalid initialize result: ${Q}`);if(!PY.includes(Q.protocolVersion))throw Error(`Server's protocol version is not supported: ${Q.protocolVersion}`);if(this._serverCapabilities=Q.capabilities,this._serverVersion=Q.serverInfo,$.setProtocolVersion)$.setProtocolVersion(Q.protocolVersion);if(this._instructions=Q.instructions,await this.notification({method:"notifications/initialized"}),this._pendingListChangedConfig)this._setupListChangedHandlers(this._pendingListChangedConfig),this._pendingListChangedConfig=void 0}catch(Q){throw this.close(),Q}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod($){switch($){case"logging/setLevel":if(!this._serverCapabilities?.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"prompts/get":case"prompts/list":if(!this._serverCapabilities?.prompts)throw Error(`Server does not support prompts (required for ${$})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!this._serverCapabilities?.resources)throw Error(`Server does not support resources (required for ${$})`);if($==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw Error(`Server does not support resource subscriptions (required for ${$})`);break;case"tools/call":case"tools/list":if(!this._serverCapabilities?.tools)throw Error(`Server does not support tools (required for ${$})`);break;case"completion/complete":if(!this._serverCapabilities?.completions)throw Error(`Server does not support completions (required for ${$})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability($){switch($){case"notifications/roots/list_changed":if(!this._capabilities.roots?.listChanged)throw Error(`Client does not support roots list changed notifications (required for ${$})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability($){if(!this._capabilities)return;switch($){case"sampling/createMessage":if(!this._capabilities.sampling)throw Error(`Client does not support sampling capability (required for ${$})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw Error(`Client does not support elicitation capability (required for ${$})`);break;case"roots/list":if(!this._capabilities.roots)throw Error(`Client does not support roots capability (required for ${$})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Client does not support tasks capability (required for ${$})`);break;case"ping":break}}assertTaskCapability($){RJ(this._serverCapabilities?.tasks?.requests,$,"Server")}assertTaskHandlerCapability($){if(!this._capabilities)return;EJ(this._capabilities.tasks?.requests,$,"Client")}async ping($){return this.request({method:"ping"},x1,$)}async complete($,Z){return this.request({method:"completion/complete",params:$},Z8,Z)}async setLoggingLevel($,Z){return this.request({method:"logging/setLevel",params:{level:$}},x1,Z)}async getPrompt($,Z){return this.request({method:"prompts/get",params:$},i4,Z)}async listPrompts($,Z){return this.request({method:"prompts/list",params:$},m4,Z)}async listResources($,Z){return this.request({method:"resources/list",params:$},f4,Z)}async listResourceTemplates($,Z){return this.request({method:"resources/templates/list",params:$},v4,Z)}async readResource($,Z){return this.request({method:"resources/read",params:$},h4,Z)}async subscribeResource($,Z){return this.request({method:"resources/subscribe",params:$},x1,Z)}async unsubscribeResource($,Z){return this.request({method:"resources/unsubscribe",params:$},x1,Z)}async callTool($,Z=J$,Q){if(this.isToolTaskRequired($.name))throw new I(R.InvalidRequest,`Tool "${$.name}" requires task-based execution. Use client.experimental.tasks.callToolStream() instead.`);let Y=await this.request({method:"tools/call",params:$},Z,Q),W=this.getToolOutputValidator($.name);if(W){if(!Y.structuredContent&&!Y.isError)throw new I(R.InvalidRequest,`Tool ${$.name} has an output schema but did not return structured content`);if(Y.structuredContent)try{let G=W(Y.structuredContent);if(!G.valid)throw new I(R.InvalidParams,`Structured content does not match the tool's output schema: ${G.errorMessage}`)}catch(G){if(G instanceof I)throw G;throw new I(R.InvalidParams,`Failed to validate structured content: ${G instanceof Error?G.message:String(G)}`)}}return Y}isToolTask($){if(!this._serverCapabilities?.tasks?.requests?.tools?.call)return!1;return this._cachedKnownTaskTools.has($)}isToolTaskRequired($){return this._cachedRequiredTaskTools.has($)}cacheToolMetadata($){this._cachedToolOutputValidators.clear(),this._cachedKnownTaskTools.clear(),this._cachedRequiredTaskTools.clear();for(let Z of $){if(Z.outputSchema){let Y=this._jsonSchemaValidator.getValidator(Z.outputSchema);this._cachedToolOutputValidators.set(Z.name,Y)}let Q=Z.execution?.taskSupport;if(Q==="required"||Q==="optional")this._cachedKnownTaskTools.add(Z.name);if(Q==="required")this._cachedRequiredTaskTools.add(Z.name)}}getToolOutputValidator($){return this._cachedToolOutputValidators.get($)}async listTools($,Z){let Q=await this.request({method:"tools/list",params:$},a4,Z);return this.cacheToolMetadata(Q.tools),Q}_setupListChangedHandler($,Z,Q,Y){let W=hY.safeParse(Q);if(!W.success)throw Error(`Invalid ${$} listChanged options: ${W.error.message}`);if(typeof Q.onChanged!=="function")throw Error(`Invalid ${$} listChanged options: onChanged must be a function`);let{autoRefresh:G,debounceMs:X}=W.data,{onChanged:J}=Q,B=async()=>{if(!G){J(null,null);return}try{let V=await Y();J(null,V)}catch(V){let z=V instanceof Error?V:Error(String(V));J(z,null)}},K=()=>{if(X){let V=this._listChangedDebounceTimers.get($);if(V)clearTimeout(V);let z=setTimeout(B,X);this._listChangedDebounceTimers.set($,z)}else B()};this.setNotificationHandler(Z,K)}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}}var A3=j6(U3(),1);import j9 from"process";import{PassThrough as Vj}from"stream";class O9{append($){this._buffer=this._buffer?Buffer.concat([this._buffer,$]):$}readMessage(){if(!this._buffer)return null;let $=this._buffer.indexOf(`
204
- `);if($===-1)return null;let Z=this._buffer.toString("utf8",0,$).replace(/\r$/,"");return this._buffer=this._buffer.subarray($+1),Hj(Z)}clear(){this._buffer=void 0}}function Hj($){return yY.parse(JSON.parse($))}function q3($){return JSON.stringify($)+`
205
- `}var zj=j9.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function P9(){let $={};for(let Z of zj){let Q=j9.env[Z];if(Q===void 0)continue;if(Q.startsWith("()"))continue;$[Z]=Q}return $}class w9{constructor($){if(this._readBuffer=new O9,this._stderrStream=null,this._serverParams=$,$.stderr==="pipe"||$.stderr==="overlapped")this._stderrStream=new Vj}async start(){if(this._process)throw Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{if(this._process=A3.default(this._serverParams.command,this._serverParams.args??[],{env:{...P9(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:j9.platform==="win32",cwd:this._serverParams.cwd}),this._process.on("error",(Q)=>{Z(Q),this.onerror?.(Q)}),this._process.on("spawn",()=>{$()}),this._process.on("close",(Q)=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",(Q)=>{this.onerror?.(Q)}),this._process.stdout?.on("data",(Q)=>{this._readBuffer.append(Q),this.processReadBuffer()}),this._process.stdout?.on("error",(Q)=>{this.onerror?.(Q)}),this._stderrStream&&this._process.stderr)this._process.stderr.pipe(this._stderrStream)})}get stderr(){if(this._stderrStream)return this._stderrStream;return this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){while(!0)try{let $=this._readBuffer.readMessage();if($===null)break;this.onmessage?.($)}catch($){this.onerror?.($)}}async close(){if(this._process){let $=this._process;this._process=void 0;let Z=new Promise((Q)=>{$.once("close",()=>{Q()})});try{$.stdin?.end()}catch{}if(await Promise.race([Z,new Promise((Q)=>setTimeout(Q,2000).unref())]),$.exitCode===null){try{$.kill("SIGTERM")}catch{}await Promise.race([Z,new Promise((Q)=>setTimeout(Q,2000).unref())])}if($.exitCode===null)try{$.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send($){return new Promise((Z)=>{if(!this._process?.stdin)throw Error("Not connected");let Q=q3($);if(this._process.stdin.write(Q))Z();else this._process.stdin.once("drain",Z)})}}var Aj=1e4,Nj=60000,M3=50000;function p1($){if($.length<=M3)return $;let Z=Math.floor(M3/2);return`${$.slice(0,Z)}
203
+ ${Z.trim()}`;return W}function TY($,Z){let{meta:Q,body:Y}=D5(Z),W=typeof Q.description==="string"?Q.description:`Run the ${$} command`,G=typeof Q.model==="string"?Q.model:void 0,X=Q["allowed-tools"],J=Array.isArray(X)?X:typeof X==="string"&&X.length>0?X.split(",").map((B)=>B.trim()):void 0;return{name:$,description:W,body:Y,...G?{model:G}:{},...J?{allowedTools:J}:{}}}async function PY($){let Z;try{Z=await fV($)}catch{return[]}let Q=[];for(let Y of Z.filter((W)=>W.endsWith(".md")).sort())try{let W=await vV(C4($,Y),"utf8");Q.push(TY(gV(Y,".md"),W))}catch{}return Q}async function uV($={}){let Z=await PY($.userDir??C4(hV(),".mu","commands")),Q=$.projectDir?await PY(C4($.projectDir,".mu","commands")):[],Y=new Map;for(let W of[...Z,...Q])Y.set(W.name,W);return[...Y.values()]}function mV($,Z){return{name:$.name,description:$.description,run:async(Q)=>{let Y={kind:"markdown-command",prompt:wY($.body,Q.args),...$.model?{model:$.model}:{},...$.allowedTools?{allowedTools:$.allowedTools}:{}};if(Z)return await Z(Y.prompt,{...Y.model?{model:Y.model}:{},...Y.allowedTools?{allowedTools:Y.allowedTools}:{}}),{handled:!0};return{handled:!0,data:Y}}}}import{readFile as wj}from"fs/promises";import{homedir as Tj}from"os";import{dirname as Ej,isAbsolute as Ij,join as P3,resolve as Rj}from"path";import*as pV from"zod/v3";import*as q5 from"zod/v4-mini";function G$($){return!!$._zod}function I0($,Z){if(G$($))return q5.safeParse($,Z);return $.safeParse(Z)}function U5($){if(!$)return;let Z;if(G$($))Z=$._zod?.def?.shape;else Z=$.shape;if(!Z)return;if(typeof Z==="function")try{return Z()}catch{return}return Z}function EY($){if(G$($)){let G=$._zod?.def;if(G){if(G.value!==void 0)return G.value;if(Array.isArray(G.values)&&G.values.length>0)return G.values[0]}}let Q=$._def;if(Q){if(Q.value!==void 0)return Q.value;if(Array.isArray(Q.values)&&Q.values.length>0)return Q.values[0]}let Y=$.value;if(Y!==void 0)return Y;return}import*as H from"zod/v4";var y4="2025-11-25";var IY=[y4,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],D1="io.modelcontextprotocol/related-task",N5="2.0",a=H.custom(($)=>$!==null&&(typeof $==="object"||typeof $==="function")),RY=H.union([H.string(),H.number().int()]),SY=H.string(),QI=H.looseObject({ttl:H.number().optional(),pollInterval:H.number().optional()}),lV=H.object({ttl:H.number().optional()}),cV=H.object({taskId:H.string()}),b4=H.looseObject({progressToken:RY.optional(),[D1]:cV.optional()}),U0=H.object({_meta:b4.optional()}),s$=U0.extend({task:lV.optional()}),CY=($)=>s$.safeParse($).success,s=H.object({method:H.string(),params:U0.loose().optional()}),O0=H.object({_meta:b4.optional()}),j0=H.object({method:H.string(),params:O0.loose().optional()}),e=H.looseObject({_meta:b4.optional()}),M5=H.union([H.string(),H.number().int()]),yY=H.object({jsonrpc:H.literal(N5),id:M5,...s.shape}).strict(),_4=($)=>yY.safeParse($).success,bY=H.object({jsonrpc:H.literal(N5),...j0.shape}).strict(),_Y=($)=>bY.safeParse($).success,x4=H.object({jsonrpc:H.literal(N5),id:M5,result:e}).strict(),e$=($)=>x4.safeParse($).success;var R;(function($){$[$.ConnectionClosed=-32000]="ConnectionClosed",$[$.RequestTimeout=-32001]="RequestTimeout",$[$.ParseError=-32700]="ParseError",$[$.InvalidRequest=-32600]="InvalidRequest",$[$.MethodNotFound=-32601]="MethodNotFound",$[$.InvalidParams=-32602]="InvalidParams",$[$.InternalError=-32603]="InternalError",$[$.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(R||(R={}));var k4=H.object({jsonrpc:H.literal(N5),id:M5.optional(),error:H.object({code:H.number().int(),message:H.string(),data:H.unknown().optional()})}).strict();var xY=($)=>k4.safeParse($).success;var kY=H.union([yY,bY,x4,k4]),YI=H.union([x4,k4]),k1=e.strict(),dV=O0.extend({requestId:M5.optional(),reason:H.string().optional()}),O5=j0.extend({method:H.literal("notifications/cancelled"),params:dV}),iV=H.object({src:H.string(),mimeType:H.string().optional(),sizes:H.array(H.string()).optional(),theme:H.enum(["light","dark"]).optional()}),$Z=H.object({icons:H.array(iV).optional()}),X$=H.object({name:H.string(),title:H.string().optional()}),fY=X$.extend({...X$.shape,...$Z.shape,version:H.string(),websiteUrl:H.string().optional(),description:H.string().optional()}),nV=H.intersection(H.object({applyDefaults:H.boolean().optional()}),H.record(H.string(),H.unknown())),aV=H.preprocess(($)=>{if($&&typeof $==="object"&&!Array.isArray($)){if(Object.keys($).length===0)return{form:{}}}return $},H.intersection(H.object({form:nV.optional(),url:a.optional()}),H.record(H.string(),H.unknown()).optional())),rV=H.looseObject({list:a.optional(),cancel:a.optional(),requests:H.looseObject({sampling:H.looseObject({createMessage:a.optional()}).optional(),elicitation:H.looseObject({create:a.optional()}).optional()}).optional()}),tV=H.looseObject({list:a.optional(),cancel:a.optional(),requests:H.looseObject({tools:H.looseObject({call:a.optional()}).optional()}).optional()}),oV=H.object({experimental:H.record(H.string(),a).optional(),sampling:H.object({context:a.optional(),tools:a.optional()}).optional(),elicitation:aV.optional(),roots:H.object({listChanged:H.boolean().optional()}).optional(),tasks:rV.optional(),extensions:H.record(H.string(),a).optional()}),sV=U0.extend({protocolVersion:H.string(),capabilities:oV,clientInfo:fY}),eV=s.extend({method:H.literal("initialize"),params:sV});var $z=H.object({experimental:H.record(H.string(),a).optional(),logging:a.optional(),completions:a.optional(),prompts:H.object({listChanged:H.boolean().optional()}).optional(),resources:H.object({subscribe:H.boolean().optional(),listChanged:H.boolean().optional()}).optional(),tools:H.object({listChanged:H.boolean().optional()}).optional(),tasks:tV.optional(),extensions:H.record(H.string(),a).optional()}),f4=e.extend({protocolVersion:H.string(),capabilities:$z,serverInfo:fY,instructions:H.string().optional()}),Zz=j0.extend({method:H.literal("notifications/initialized"),params:O0.optional()});var j5=s.extend({method:H.literal("ping"),params:U0.optional()}),Qz=H.object({progress:H.number(),total:H.optional(H.number()),message:H.optional(H.string())}),Yz=H.object({...O0.shape,...Qz.shape,progressToken:RY}),P5=j0.extend({method:H.literal("notifications/progress"),params:Yz}),Wz=U0.extend({cursor:SY.optional()}),ZZ=s.extend({params:Wz.optional()}),QZ=e.extend({nextCursor:SY.optional()}),Gz=H.enum(["working","input_required","completed","failed","cancelled"]),YZ=H.object({taskId:H.string(),status:Gz,ttl:H.union([H.number(),H.null()]),createdAt:H.string(),lastUpdatedAt:H.string(),pollInterval:H.optional(H.number()),statusMessage:H.optional(H.string())}),f1=e.extend({task:YZ}),Xz=O0.merge(YZ),WZ=j0.extend({method:H.literal("notifications/tasks/status"),params:Xz}),w5=s.extend({method:H.literal("tasks/get"),params:U0.extend({taskId:H.string()})}),T5=e.merge(YZ),E5=s.extend({method:H.literal("tasks/result"),params:U0.extend({taskId:H.string()})}),WI=e.loose(),I5=ZZ.extend({method:H.literal("tasks/list")}),R5=QZ.extend({tasks:H.array(YZ)}),S5=s.extend({method:H.literal("tasks/cancel"),params:U0.extend({taskId:H.string()})}),vY=e.merge(YZ),hY=H.object({uri:H.string(),mimeType:H.optional(H.string()),_meta:H.record(H.string(),H.unknown()).optional()}),gY=hY.extend({text:H.string()}),v4=H.string().refine(($)=>{try{return atob($),!0}catch{return!1}},{message:"Invalid Base64 string"}),uY=hY.extend({blob:v4}),GZ=H.enum(["user","assistant"]),J$=H.object({audience:H.array(GZ).optional(),priority:H.number().min(0).max(1).optional(),lastModified:H.iso.datetime({offset:!0}).optional()}),mY=H.object({...X$.shape,...$Z.shape,uri:H.string(),description:H.optional(H.string()),mimeType:H.optional(H.string()),size:H.optional(H.number()),annotations:J$.optional(),_meta:H.optional(H.looseObject({}))}),Jz=H.object({...X$.shape,...$Z.shape,uriTemplate:H.string(),description:H.optional(H.string()),mimeType:H.optional(H.string()),annotations:J$.optional(),_meta:H.optional(H.looseObject({}))}),Kz=ZZ.extend({method:H.literal("resources/list")}),h4=QZ.extend({resources:H.array(mY)}),Bz=ZZ.extend({method:H.literal("resources/templates/list")}),g4=QZ.extend({resourceTemplates:H.array(Jz)}),u4=U0.extend({uri:H.string()}),Hz=u4,Vz=s.extend({method:H.literal("resources/read"),params:Hz}),m4=e.extend({contents:H.array(H.union([gY,uY]))}),p4=j0.extend({method:H.literal("notifications/resources/list_changed"),params:O0.optional()}),zz=u4,Fz=s.extend({method:H.literal("resources/subscribe"),params:zz}),Lz=u4,Dz=s.extend({method:H.literal("resources/unsubscribe"),params:Lz}),qz=O0.extend({uri:H.string()}),Uz=j0.extend({method:H.literal("notifications/resources/updated"),params:qz}),Az=H.object({name:H.string(),description:H.optional(H.string()),required:H.optional(H.boolean())}),Nz=H.object({...X$.shape,...$Z.shape,description:H.optional(H.string()),arguments:H.optional(H.array(Az)),_meta:H.optional(H.looseObject({}))}),Mz=ZZ.extend({method:H.literal("prompts/list")}),l4=QZ.extend({prompts:H.array(Nz)}),Oz=U0.extend({name:H.string(),arguments:H.record(H.string(),H.string()).optional()}),jz=s.extend({method:H.literal("prompts/get"),params:Oz}),c4=H.object({type:H.literal("text"),text:H.string(),annotations:J$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),d4=H.object({type:H.literal("image"),data:v4,mimeType:H.string(),annotations:J$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),i4=H.object({type:H.literal("audio"),data:v4,mimeType:H.string(),annotations:J$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Pz=H.object({type:H.literal("tool_use"),name:H.string(),id:H.string(),input:H.record(H.string(),H.unknown()),_meta:H.record(H.string(),H.unknown()).optional()}),wz=H.object({type:H.literal("resource"),resource:H.union([gY,uY]),annotations:J$.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Tz=mY.extend({type:H.literal("resource_link")}),n4=H.union([c4,d4,i4,Tz,wz]),Ez=H.object({role:GZ,content:n4}),a4=e.extend({description:H.string().optional(),messages:H.array(Ez)}),r4=j0.extend({method:H.literal("notifications/prompts/list_changed"),params:O0.optional()}),Iz=H.object({title:H.string().optional(),readOnlyHint:H.boolean().optional(),destructiveHint:H.boolean().optional(),idempotentHint:H.boolean().optional(),openWorldHint:H.boolean().optional()}),Rz=H.object({taskSupport:H.enum(["required","optional","forbidden"]).optional()}),pY=H.object({...X$.shape,...$Z.shape,description:H.string().optional(),inputSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),a).optional(),required:H.array(H.string()).optional()}).catchall(H.unknown()),outputSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),a).optional(),required:H.array(H.string()).optional()}).catchall(H.unknown()).optional(),annotations:Iz.optional(),execution:Rz.optional(),_meta:H.record(H.string(),H.unknown()).optional()}),Sz=ZZ.extend({method:H.literal("tools/list")}),t4=QZ.extend({tools:H.array(pY)}),K$=e.extend({content:H.array(n4).default([]),structuredContent:H.record(H.string(),H.unknown()).optional(),isError:H.boolean().optional()}),GI=K$.or(e.extend({toolResult:H.unknown()})),Cz=s$.extend({name:H.string(),arguments:H.record(H.string(),H.unknown()).optional()}),yz=s.extend({method:H.literal("tools/call"),params:Cz}),o4=j0.extend({method:H.literal("notifications/tools/list_changed"),params:O0.optional()}),lY=H.object({autoRefresh:H.boolean().default(!0),debounceMs:H.number().int().nonnegative().default(300)}),cY=H.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),bz=U0.extend({level:cY}),_z=s.extend({method:H.literal("logging/setLevel"),params:bz}),xz=O0.extend({level:cY,logger:H.string().optional(),data:H.unknown()}),kz=j0.extend({method:H.literal("notifications/message"),params:xz}),fz=H.object({name:H.string().optional()}),vz=H.object({hints:H.array(fz).optional(),costPriority:H.number().min(0).max(1).optional(),speedPriority:H.number().min(0).max(1).optional(),intelligencePriority:H.number().min(0).max(1).optional()}),hz=H.object({mode:H.enum(["auto","required","none"]).optional()}),gz=H.object({type:H.literal("tool_result"),toolUseId:H.string().describe("The unique identifier for the corresponding tool call."),content:H.array(n4).default([]),structuredContent:H.object({}).loose().optional(),isError:H.boolean().optional(),_meta:H.record(H.string(),H.unknown()).optional()}),uz=H.discriminatedUnion("type",[c4,d4,i4]),A5=H.discriminatedUnion("type",[c4,d4,i4,Pz,gz]),mz=H.object({role:GZ,content:H.union([A5,H.array(A5)]),_meta:H.record(H.string(),H.unknown()).optional()}),pz=s$.extend({messages:H.array(mz),modelPreferences:vz.optional(),systemPrompt:H.string().optional(),includeContext:H.enum(["none","thisServer","allServers"]).optional(),temperature:H.number().optional(),maxTokens:H.number().int(),stopSequences:H.array(H.string()).optional(),metadata:a.optional(),tools:H.array(pY).optional(),toolChoice:hz.optional()}),s4=s.extend({method:H.literal("sampling/createMessage"),params:pz}),e4=e.extend({model:H.string(),stopReason:H.optional(H.enum(["endTurn","stopSequence","maxTokens"]).or(H.string())),role:GZ,content:uz}),$8=e.extend({model:H.string(),stopReason:H.optional(H.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(H.string())),role:GZ,content:H.union([A5,H.array(A5)])}),lz=H.object({type:H.literal("boolean"),title:H.string().optional(),description:H.string().optional(),default:H.boolean().optional()}),cz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),minLength:H.number().optional(),maxLength:H.number().optional(),format:H.enum(["email","uri","date","date-time"]).optional(),default:H.string().optional()}),dz=H.object({type:H.enum(["number","integer"]),title:H.string().optional(),description:H.string().optional(),minimum:H.number().optional(),maximum:H.number().optional(),default:H.number().optional()}),iz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),enum:H.array(H.string()),default:H.string().optional()}),nz=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),oneOf:H.array(H.object({const:H.string(),title:H.string()})),default:H.string().optional()}),az=H.object({type:H.literal("string"),title:H.string().optional(),description:H.string().optional(),enum:H.array(H.string()),enumNames:H.array(H.string()).optional(),default:H.string().optional()}),rz=H.union([iz,nz]),tz=H.object({type:H.literal("array"),title:H.string().optional(),description:H.string().optional(),minItems:H.number().optional(),maxItems:H.number().optional(),items:H.object({type:H.literal("string"),enum:H.array(H.string())}),default:H.array(H.string()).optional()}),oz=H.object({type:H.literal("array"),title:H.string().optional(),description:H.string().optional(),minItems:H.number().optional(),maxItems:H.number().optional(),items:H.object({anyOf:H.array(H.object({const:H.string(),title:H.string()}))}),default:H.array(H.string()).optional()}),sz=H.union([tz,oz]),ez=H.union([az,rz,sz]),$F=H.union([ez,lz,cz,dz]),ZF=s$.extend({mode:H.literal("form").optional(),message:H.string(),requestedSchema:H.object({type:H.literal("object"),properties:H.record(H.string(),$F),required:H.array(H.string()).optional()})}),QF=s$.extend({mode:H.literal("url"),message:H.string(),elicitationId:H.string(),url:H.string().url()}),YF=H.union([ZF,QF]),Z8=s.extend({method:H.literal("elicitation/create"),params:YF}),WF=O0.extend({elicitationId:H.string()}),GF=j0.extend({method:H.literal("notifications/elicitation/complete"),params:WF}),Q8=e.extend({action:H.enum(["accept","decline","cancel"]),content:H.preprocess(($)=>$===null?void 0:$,H.record(H.string(),H.union([H.string(),H.number(),H.boolean(),H.array(H.string())])).optional())}),XF=H.object({type:H.literal("ref/resource"),uri:H.string()});var JF=H.object({type:H.literal("ref/prompt"),name:H.string()}),KF=U0.extend({ref:H.union([JF,XF]),argument:H.object({name:H.string(),value:H.string()}),context:H.object({arguments:H.record(H.string(),H.string()).optional()}).optional()}),BF=s.extend({method:H.literal("completion/complete"),params:KF});var Y8=e.extend({completion:H.looseObject({values:H.array(H.string()).max(100),total:H.optional(H.number().int()),hasMore:H.optional(H.boolean())})}),HF=H.object({uri:H.string().startsWith("file://"),name:H.string().optional(),_meta:H.record(H.string(),H.unknown()).optional()}),VF=s.extend({method:H.literal("roots/list"),params:U0.optional()}),zF=e.extend({roots:H.array(HF)}),FF=j0.extend({method:H.literal("notifications/roots/list_changed"),params:O0.optional()}),XI=H.union([j5,eV,BF,_z,jz,Mz,Kz,Bz,Vz,Fz,Dz,yz,Sz,w5,E5,I5,S5]),JI=H.union([O5,P5,Zz,FF,WZ]),KI=H.union([k1,e4,$8,Q8,zF,T5,R5,f1]),BI=H.union([j5,s4,Z8,VF,w5,E5,I5,S5]),HI=H.union([O5,P5,kz,Uz,p4,o4,r4,WZ,GF]),VI=H.union([k1,f4,Y8,a4,l4,h4,g4,m4,K$,t4,T5,R5,f1]);class E extends Error{constructor($,Z,Q){super(`MCP error ${$}: ${Z}`);this.code=$,this.data=Q,this.name="McpError"}static fromError($,Z,Q){if($===R.UrlElicitationRequired&&Q){let Y=Q;if(Y.elicitations)return new dY(Y.elicitations,Z)}return new E($,Z,Q)}}class dY extends E{constructor($,Z=`URL elicitation${$.length>1?"s":""} required`){super(R.UrlElicitationRequired,Z,{elicitations:$})}get elicitations(){return this.data?.elicitations??[]}}function q1($){return $==="completed"||$==="failed"||$==="cancelled"}import*as MF from"zod/v4-mini";var LF=Symbol("Let zodToJsonSchema decide on which parser to use");import{ZodFirstPartyTypeKind as VS}from"zod/v3";import{ZodFirstPartyTypeKind as PI}from"zod/v3";import{ZodFirstPartyTypeKind as rI}from"zod/v3";var iI=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function W8($){let Q=U5($)?.method;if(!Q)throw Error("Schema is missing a method literal");let Y=EY(Q);if(typeof Y!=="string")throw Error("Schema method literal must be a string");return Y}function G8($,Z){let Q=I0($,Z);if(!Q.success)throw Q.error;return Q.data}var OF=60000;class X8{constructor($){if(this._options=$,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(O5,(Z)=>{this._oncancel(Z)}),this.setNotificationHandler(P5,(Z)=>{this._onprogress(Z)}),this.setRequestHandler(j5,(Z)=>({})),this._taskStore=$?.taskStore,this._taskMessageQueue=$?.taskMessageQueue,this._taskStore)this.setRequestHandler(w5,async(Z,Q)=>{let Y=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!Y)throw new E(R.InvalidParams,"Failed to retrieve task: Task not found");return{...Y}}),this.setRequestHandler(E5,async(Z,Q)=>{let Y=async()=>{let W=Z.params.taskId;if(this._taskMessageQueue){let X;while(X=await this._taskMessageQueue.dequeue(W,Q.sessionId)){if(X.type==="response"||X.type==="error"){let J=X.message,B=J.id,K=this._requestResolvers.get(B);if(K)if(this._requestResolvers.delete(B),X.type==="response")K(J);else{let V=J,z=new E(V.error.code,V.error.message,V.error.data);K(z)}else{let V=X.type==="response"?"Response":"Error";this._onerror(Error(`${V} handler missing for request ${B}`))}continue}await this._transport?.send(X.message,{relatedRequestId:Q.requestId})}}let G=await this._taskStore.getTask(W,Q.sessionId);if(!G)throw new E(R.InvalidParams,`Task not found: ${W}`);if(!q1(G.status))return await this._waitForTaskUpdate(W,Q.signal),await Y();if(q1(G.status)){let X=await this._taskStore.getTaskResult(W,Q.sessionId);return this._clearTaskQueue(W),{...X,_meta:{...X._meta,[D1]:{taskId:W}}}}return await Y()};return await Y()}),this.setRequestHandler(I5,async(Z,Q)=>{try{let{tasks:Y,nextCursor:W}=await this._taskStore.listTasks(Z.params?.cursor,Q.sessionId);return{tasks:Y,nextCursor:W,_meta:{}}}catch(Y){throw new E(R.InvalidParams,`Failed to list tasks: ${Y instanceof Error?Y.message:String(Y)}`)}}),this.setRequestHandler(S5,async(Z,Q)=>{try{let Y=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!Y)throw new E(R.InvalidParams,`Task not found: ${Z.params.taskId}`);if(q1(Y.status))throw new E(R.InvalidParams,`Cannot cancel task in terminal status: ${Y.status}`);await this._taskStore.updateTaskStatus(Z.params.taskId,"cancelled","Client cancelled task execution.",Q.sessionId),this._clearTaskQueue(Z.params.taskId);let W=await this._taskStore.getTask(Z.params.taskId,Q.sessionId);if(!W)throw new E(R.InvalidParams,`Task not found after cancellation: ${Z.params.taskId}`);return{_meta:{},...W}}catch(Y){if(Y instanceof E)throw Y;throw new E(R.InvalidRequest,`Failed to cancel task: ${Y instanceof Error?Y.message:String(Y)}`)}})}async _oncancel($){if(!$.params.requestId)return;this._requestHandlerAbortControllers.get($.params.requestId)?.abort($.params.reason)}_setupTimeout($,Z,Q,Y,W=!1){this._timeoutInfo.set($,{timeoutId:setTimeout(Y,Z),startTime:Date.now(),timeout:Z,maxTotalTimeout:Q,resetTimeoutOnProgress:W,onTimeout:Y})}_resetTimeout($){let Z=this._timeoutInfo.get($);if(!Z)return!1;let Q=Date.now()-Z.startTime;if(Z.maxTotalTimeout&&Q>=Z.maxTotalTimeout)throw this._timeoutInfo.delete($),E.fromError(R.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:Z.maxTotalTimeout,totalElapsed:Q});return clearTimeout(Z.timeoutId),Z.timeoutId=setTimeout(Z.onTimeout,Z.timeout),!0}_cleanupTimeout($){let Z=this._timeoutInfo.get($);if(Z)clearTimeout(Z.timeoutId),this._timeoutInfo.delete($)}async connect($){if(this._transport)throw Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=$;let Z=this.transport?.onclose;this._transport.onclose=()=>{Z?.(),this._onclose()};let Q=this.transport?.onerror;this._transport.onerror=(W)=>{Q?.(W),this._onerror(W)};let Y=this._transport?.onmessage;this._transport.onmessage=(W,G)=>{if(Y?.(W,G),e$(W)||xY(W))this._onresponse(W);else if(_4(W))this._onrequest(W,G);else if(_Y(W))this._onnotification(W);else this._onerror(Error(`Unknown message type: ${JSON.stringify(W)}`))},await this._transport.start()}_onclose(){let $=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let Q of this._timeoutInfo.values())clearTimeout(Q.timeoutId);this._timeoutInfo.clear();for(let Q of this._requestHandlerAbortControllers.values())Q.abort();this._requestHandlerAbortControllers.clear();let Z=E.fromError(R.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let Q of $.values())Q(Z)}_onerror($){this.onerror?.($)}_onnotification($){let Z=this._notificationHandlers.get($.method)??this.fallbackNotificationHandler;if(Z===void 0)return;Promise.resolve().then(()=>Z($)).catch((Q)=>this._onerror(Error(`Uncaught error in notification handler: ${Q}`)))}_onrequest($,Z){let Q=this._requestHandlers.get($.method)??this.fallbackRequestHandler,Y=this._transport,W=$.params?._meta?.[D1]?.taskId;if(Q===void 0){let K={jsonrpc:"2.0",id:$.id,error:{code:R.MethodNotFound,message:"Method not found"}};if(W&&this._taskMessageQueue)this._enqueueTaskMessage(W,{type:"error",message:K,timestamp:Date.now()},Y?.sessionId).catch((V)=>this._onerror(Error(`Failed to enqueue error response: ${V}`)));else Y?.send(K).catch((V)=>this._onerror(Error(`Failed to send an error response: ${V}`)));return}let G=new AbortController;this._requestHandlerAbortControllers.set($.id,G);let X=CY($.params)?$.params.task:void 0,J=this._taskStore?this.requestTaskStore($,Y?.sessionId):void 0,B={signal:G.signal,sessionId:Y?.sessionId,_meta:$.params?._meta,sendNotification:async(K)=>{if(G.signal.aborted)return;let V={relatedRequestId:$.id};if(W)V.relatedTask={taskId:W};await this.notification(K,V)},sendRequest:async(K,V,z)=>{if(G.signal.aborted)throw new E(R.ConnectionClosed,"Request was cancelled");let F={...z,relatedRequestId:$.id};if(W&&!F.relatedTask)F.relatedTask={taskId:W};let D=F.relatedTask?.taskId??W;if(D&&J)await J.updateTaskStatus(D,"input_required");return await this.request(K,V,F)},authInfo:Z?.authInfo,requestId:$.id,requestInfo:Z?.requestInfo,taskId:W,taskStore:J,taskRequestedTtl:X?.ttl,closeSSEStream:Z?.closeSSEStream,closeStandaloneSSEStream:Z?.closeStandaloneSSEStream};Promise.resolve().then(()=>{if(X)this.assertTaskHandlerCapability($.method)}).then(()=>Q($,B)).then(async(K)=>{if(G.signal.aborted)return;let V={result:K,jsonrpc:"2.0",id:$.id};if(W&&this._taskMessageQueue)await this._enqueueTaskMessage(W,{type:"response",message:V,timestamp:Date.now()},Y?.sessionId);else await Y?.send(V)},async(K)=>{if(G.signal.aborted)return;let V={jsonrpc:"2.0",id:$.id,error:{code:Number.isSafeInteger(K.code)?K.code:R.InternalError,message:K.message??"Internal error",...K.data!==void 0&&{data:K.data}}};if(W&&this._taskMessageQueue)await this._enqueueTaskMessage(W,{type:"error",message:V,timestamp:Date.now()},Y?.sessionId);else await Y?.send(V)}).catch((K)=>this._onerror(Error(`Failed to send response: ${K}`))).finally(()=>{if(this._requestHandlerAbortControllers.get($.id)===G)this._requestHandlerAbortControllers.delete($.id)})}_onprogress($){let{progressToken:Z,...Q}=$.params,Y=Number(Z),W=this._progressHandlers.get(Y);if(!W){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify($)}`));return}let G=this._responseHandlers.get(Y),X=this._timeoutInfo.get(Y);if(X&&G&&X.resetTimeoutOnProgress)try{this._resetTimeout(Y)}catch(J){this._responseHandlers.delete(Y),this._progressHandlers.delete(Y),this._cleanupTimeout(Y),G(J);return}W(Q)}_onresponse($){let Z=Number($.id),Q=this._requestResolvers.get(Z);if(Q){if(this._requestResolvers.delete(Z),e$($))Q($);else{let G=new E($.error.code,$.error.message,$.error.data);Q(G)}return}let Y=this._responseHandlers.get(Z);if(Y===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify($)}`));return}this._responseHandlers.delete(Z),this._cleanupTimeout(Z);let W=!1;if(e$($)&&$.result&&typeof $.result==="object"){let G=$.result;if(G.task&&typeof G.task==="object"){let X=G.task;if(typeof X.taskId==="string")W=!0,this._taskProgressTokens.set(X.taskId,Z)}}if(!W)this._progressHandlers.delete(Z);if(e$($))Y($);else{let G=E.fromError($.error.code,$.error.message,$.error.data);Y(G)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream($,Z,Q){let{task:Y}=Q??{};if(!Y){try{yield{type:"result",result:await this.request($,Z,Q)}}catch(G){yield{type:"error",error:G instanceof E?G:new E(R.InternalError,String(G))}}return}let W;try{let G=await this.request($,f1,Q);if(G.task)W=G.task.taskId,yield{type:"taskCreated",task:G.task};else throw new E(R.InternalError,"Task creation did not return a task");while(!0){let X=await this.getTask({taskId:W},Q);if(yield{type:"taskStatus",task:X},q1(X.status)){if(X.status==="completed")yield{type:"result",result:await this.getTaskResult({taskId:W},Z,Q)};else if(X.status==="failed")yield{type:"error",error:new E(R.InternalError,`Task ${W} failed`)};else if(X.status==="cancelled")yield{type:"error",error:new E(R.InternalError,`Task ${W} was cancelled`)};return}if(X.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:W},Z,Q)};return}let J=X.pollInterval??this._options?.defaultTaskPollInterval??1000;await new Promise((B)=>setTimeout(B,J)),Q?.signal?.throwIfAborted()}}catch(G){yield{type:"error",error:G instanceof E?G:new E(R.InternalError,String(G))}}}request($,Z,Q){let{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G,task:X,relatedTask:J}=Q??{};return new Promise((B,K)=>{let V=(A)=>{K(A)};if(!this._transport){V(Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{if(this.assertCapabilityForMethod($.method),X)this.assertTaskCapability($.method)}catch(A){V(A);return}Q?.signal?.throwIfAborted();let z=this._requestMessageId++,F={...$,jsonrpc:"2.0",id:z};if(Q?.onprogress)this._progressHandlers.set(z,Q.onprogress),F.params={...$.params,_meta:{...$.params?._meta||{},progressToken:z}};if(X)F.params={...F.params,task:X};if(J)F.params={...F.params,_meta:{...F.params?._meta||{},[D1]:J}};let D=(A)=>{this._responseHandlers.delete(z),this._progressHandlers.delete(z),this._cleanupTimeout(z),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:z,reason:String(A)}},{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G}).catch((j)=>this._onerror(Error(`Failed to send cancellation: ${j}`)));let N=A instanceof E?A:new E(R.RequestTimeout,String(A));K(N)};this._responseHandlers.set(z,(A)=>{if(Q?.signal?.aborted)return;if(A instanceof Error)return K(A);try{let N=I0(Z,A.result);if(!N.success)K(N.error);else B(N.data)}catch(N){K(N)}}),Q?.signal?.addEventListener("abort",()=>{D(Q?.signal?.reason)});let L=Q?.timeout??OF,q=()=>D(E.fromError(R.RequestTimeout,"Request timed out",{timeout:L}));this._setupTimeout(z,L,Q?.maxTotalTimeout,q,Q?.resetTimeoutOnProgress??!1);let U=J?.taskId;if(U){let A=(N)=>{let j=this._responseHandlers.get(z);if(j)j(N);else this._onerror(Error(`Response handler missing for side-channeled request ${z}`))};this._requestResolvers.set(z,A),this._enqueueTaskMessage(U,{type:"request",message:F,timestamp:Date.now()}).catch((N)=>{this._cleanupTimeout(z),K(N)})}else this._transport.send(F,{relatedRequestId:Y,resumptionToken:W,onresumptiontoken:G}).catch((A)=>{this._cleanupTimeout(z),K(A)})})}async getTask($,Z){return this.request({method:"tasks/get",params:$},T5,Z)}async getTaskResult($,Z,Q){return this.request({method:"tasks/result",params:$},Z,Q)}async listTasks($,Z){return this.request({method:"tasks/list",params:$},R5,Z)}async cancelTask($,Z){return this.request({method:"tasks/cancel",params:$},vY,Z)}async notification($,Z){if(!this._transport)throw Error("Not connected");this.assertNotificationCapability($.method);let Q=Z?.relatedTask?.taskId;if(Q){let X={...$,jsonrpc:"2.0",params:{...$.params,_meta:{...$.params?._meta||{},[D1]:Z.relatedTask}}};await this._enqueueTaskMessage(Q,{type:"notification",message:X,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes($.method)&&!$.params&&!Z?.relatedRequestId&&!Z?.relatedTask){if(this._pendingDebouncedNotifications.has($.method))return;this._pendingDebouncedNotifications.add($.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete($.method),!this._transport)return;let X={...$,jsonrpc:"2.0"};if(Z?.relatedTask)X={...X,params:{...X.params,_meta:{...X.params?._meta||{},[D1]:Z.relatedTask}}};this._transport?.send(X,Z).catch((J)=>this._onerror(J))});return}let G={...$,jsonrpc:"2.0"};if(Z?.relatedTask)G={...G,params:{...G.params,_meta:{...G.params?._meta||{},[D1]:Z.relatedTask}}};await this._transport.send(G,Z)}setRequestHandler($,Z){let Q=W8($);this.assertRequestHandlerCapability(Q),this._requestHandlers.set(Q,(Y,W)=>{let G=G8($,Y);return Promise.resolve(Z(G,W))})}removeRequestHandler($){this._requestHandlers.delete($)}assertCanSetRequestHandler($){if(this._requestHandlers.has($))throw Error(`A request handler for ${$} already exists, which would be overridden`)}setNotificationHandler($,Z){let Q=W8($);this._notificationHandlers.set(Q,(Y)=>{let W=G8($,Y);return Promise.resolve(Z(W))})}removeNotificationHandler($){this._notificationHandlers.delete($)}_cleanupTaskProgressHandler($){let Z=this._taskProgressTokens.get($);if(Z!==void 0)this._progressHandlers.delete(Z),this._taskProgressTokens.delete($)}async _enqueueTaskMessage($,Z,Q){if(!this._taskStore||!this._taskMessageQueue)throw Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let Y=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue($,Z,Q,Y)}async _clearTaskQueue($,Z){if(this._taskMessageQueue){let Q=await this._taskMessageQueue.dequeueAll($,Z);for(let Y of Q)if(Y.type==="request"&&_4(Y.message)){let W=Y.message.id,G=this._requestResolvers.get(W);if(G)G(new E(R.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(W);else this._onerror(Error(`Resolver missing for request ${W} during task ${$} cleanup`))}}}async _waitForTaskUpdate($,Z){let Q=this._options?.defaultTaskPollInterval??1000;try{let Y=await this._taskStore?.getTask($);if(Y?.pollInterval)Q=Y.pollInterval}catch{}return new Promise((Y,W)=>{if(Z.aborted){W(new E(R.InvalidRequest,"Request cancelled"));return}let G=setTimeout(Y,Q);Z.addEventListener("abort",()=>{clearTimeout(G),W(new E(R.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore($,Z){let Q=this._taskStore;if(!Q)throw Error("No task store configured");return{createTask:async(Y)=>{if(!$)throw Error("No request provided");return await Q.createTask(Y,$.id,{method:$.method,params:$.params},Z)},getTask:async(Y)=>{let W=await Q.getTask(Y,Z);if(!W)throw new E(R.InvalidParams,"Failed to retrieve task: Task not found");return W},storeTaskResult:async(Y,W,G)=>{await Q.storeTaskResult(Y,W,G,Z);let X=await Q.getTask(Y,Z);if(X){let J=WZ.parse({method:"notifications/tasks/status",params:X});if(await this.notification(J),q1(X.status))this._cleanupTaskProgressHandler(Y)}},getTaskResult:(Y)=>{return Q.getTaskResult(Y,Z)},updateTaskStatus:async(Y,W,G)=>{let X=await Q.getTask(Y,Z);if(!X)throw new E(R.InvalidParams,`Task "${Y}" not found - it may have been cleaned up`);if(q1(X.status))throw new E(R.InvalidParams,`Cannot update task "${Y}" from terminal status "${X.status}" to "${W}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await Q.updateTaskStatus(Y,W,G,Z);let J=await Q.getTask(Y,Z);if(J){let B=WZ.parse({method:"notifications/tasks/status",params:J});if(await this.notification(B),q1(J.status))this._cleanupTaskProgressHandler(Y)}},listTasks:(Y)=>{return Q.listTasks(Y,Z)}}}}function iY($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function nY($,Z){let Q={...$};for(let Y in Z){let W=Y,G=Z[W];if(G===void 0)continue;let X=Q[W];if(iY(X)&&iY(G))Q[W]={...X,...G};else Q[W]=G}return Q}var SJ=T6(Z9(),1),CJ=T6(RJ(),1);function cO(){let $=new SJ.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return CJ.default($),$}class V9{constructor($){this._ajv=$??cO()}getValidator($){let Z="$id"in $&&typeof $.$id==="string"?this._ajv.getSchema($.$id)??this._ajv.compile($):this._ajv.compile($);return(Q)=>{if(Z(Q))return{valid:!0,data:Q,errorMessage:void 0};else return{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(Z.errors)}}}}class z9{constructor($){this._client=$}async*callToolStream($,Z=K$,Q){let Y=this._client,W={...Q,task:Q?.task??(Y.isToolTask($.name)?{}:void 0)},G=Y.requestStream({method:"tools/call",params:$},Z,W),X=Y.getToolOutputValidator($.name);for await(let J of G){if(J.type==="result"&&X){let B=J.result;if(!B.structuredContent&&!B.isError){yield{type:"error",error:new E(R.InvalidRequest,`Tool ${$.name} has an output schema but did not return structured content`)};return}if(B.structuredContent)try{let K=X(B.structuredContent);if(!K.valid){yield{type:"error",error:new E(R.InvalidParams,`Structured content does not match the tool's output schema: ${K.errorMessage}`)};return}}catch(K){if(K instanceof E){yield{type:"error",error:K};return}yield{type:"error",error:new E(R.InvalidParams,`Failed to validate structured content: ${K instanceof Error?K.message:String(K)}`)};return}}yield J}}async getTask($,Z){return this._client.getTask({taskId:$},Z)}async getTaskResult($,Z,Q){return this._client.getTaskResult({taskId:$},Z,Q)}async listTasks($,Z){return this._client.listTasks($?{cursor:$}:void 0,Z)}async cancelTask($,Z){return this._client.cancelTask({taskId:$},Z)}requestStream($,Z,Q){return this._client.requestStream($,Z,Q)}}function yJ($,Z,Q){if(!$)throw Error(`${Q} does not support task creation (required for ${Z})`);switch(Z){case"tools/call":if(!$.tools?.call)throw Error(`${Q} does not support task creation for tools/call (required for ${Z})`);break;default:break}}function bJ($,Z,Q){if(!$)throw Error(`${Q} does not support task creation (required for ${Z})`);switch(Z){case"sampling/createMessage":if(!$.sampling?.createMessage)throw Error(`${Q} does not support task creation for sampling/createMessage (required for ${Z})`);break;case"elicitation/create":if(!$.elicitation?.create)throw Error(`${Q} does not support task creation for elicitation/create (required for ${Z})`);break;default:break}}function z6($,Z){if(!$||Z===null||typeof Z!=="object")return;if($.type==="object"&&$.properties&&typeof $.properties==="object"){let Q=Z,Y=$.properties;for(let W of Object.keys(Y)){let G=Y[W];if(Q[W]===void 0&&Object.prototype.hasOwnProperty.call(G,"default"))Q[W]=G.default;if(Q[W]!==void 0)z6(G,Q[W])}}if(Array.isArray($.anyOf)){for(let Q of $.anyOf)if(typeof Q!=="boolean")z6(Q,Z)}if(Array.isArray($.oneOf)){for(let Q of $.oneOf)if(typeof Q!=="boolean")z6(Q,Z)}}function dO($){if(!$)return{supportsFormMode:!1,supportsUrlMode:!1};let Z=$.form!==void 0,Q=$.url!==void 0;return{supportsFormMode:Z||!Z&&!Q,supportsUrlMode:Q}}class F9 extends X8{constructor($,Z){super(Z);if(this._clientInfo=$,this._cachedToolOutputValidators=new Map,this._cachedKnownTaskTools=new Set,this._cachedRequiredTaskTools=new Set,this._listChangedDebounceTimers=new Map,this._capabilities=Z?.capabilities??{},this._jsonSchemaValidator=Z?.jsonSchemaValidator??new V9,Z?.listChanged)this._pendingListChangedConfig=Z.listChanged}_setupListChangedHandlers($){if($.tools&&this._serverCapabilities?.tools?.listChanged)this._setupListChangedHandler("tools",o4,$.tools,async()=>{return(await this.listTools()).tools});if($.prompts&&this._serverCapabilities?.prompts?.listChanged)this._setupListChangedHandler("prompts",r4,$.prompts,async()=>{return(await this.listPrompts()).prompts});if($.resources&&this._serverCapabilities?.resources?.listChanged)this._setupListChangedHandler("resources",p4,$.resources,async()=>{return(await this.listResources()).resources})}get experimental(){if(!this._experimental)this._experimental={tasks:new z9(this)};return this._experimental}registerCapabilities($){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=nY(this._capabilities,$)}setRequestHandler($,Z){let Y=U5($)?.method;if(!Y)throw Error("Schema is missing a method literal");let W;if(G$(Y)){let X=Y;W=X._zod?.def?.value??X.value}else{let X=Y;W=X._def?.value??X.value}if(typeof W!=="string")throw Error("Schema method literal must be a string");let G=W;if(G==="elicitation/create"){let X=async(J,B)=>{let K=I0(Z8,J);if(!K.success){let A=K.error instanceof Error?K.error.message:String(K.error);throw new E(R.InvalidParams,`Invalid elicitation request: ${A}`)}let{params:V}=K.data;V.mode=V.mode??"form";let{supportsFormMode:z,supportsUrlMode:F}=dO(this._capabilities.elicitation);if(V.mode==="form"&&!z)throw new E(R.InvalidParams,"Client does not support form-mode elicitation requests");if(V.mode==="url"&&!F)throw new E(R.InvalidParams,"Client does not support URL-mode elicitation requests");let D=await Promise.resolve(Z(J,B));if(V.task){let A=I0(f1,D);if(!A.success){let N=A.error instanceof Error?A.error.message:String(A.error);throw new E(R.InvalidParams,`Invalid task creation result: ${N}`)}return A.data}let L=I0(Q8,D);if(!L.success){let A=L.error instanceof Error?L.error.message:String(L.error);throw new E(R.InvalidParams,`Invalid elicitation result: ${A}`)}let q=L.data,U=V.mode==="form"?V.requestedSchema:void 0;if(V.mode==="form"&&q.action==="accept"&&q.content&&U){if(this._capabilities.elicitation?.form?.applyDefaults)try{z6(U,q.content)}catch{}}return q};return super.setRequestHandler($,X)}if(G==="sampling/createMessage"){let X=async(J,B)=>{let K=I0(s4,J);if(!K.success){let q=K.error instanceof Error?K.error.message:String(K.error);throw new E(R.InvalidParams,`Invalid sampling request: ${q}`)}let{params:V}=K.data,z=await Promise.resolve(Z(J,B));if(V.task){let q=I0(f1,z);if(!q.success){let U=q.error instanceof Error?q.error.message:String(q.error);throw new E(R.InvalidParams,`Invalid task creation result: ${U}`)}return q.data}let D=V.tools||V.toolChoice?$8:e4,L=I0(D,z);if(!L.success){let q=L.error instanceof Error?L.error.message:String(L.error);throw new E(R.InvalidParams,`Invalid sampling result: ${q}`)}return L.data};return super.setRequestHandler($,X)}return super.setRequestHandler($,Z)}assertCapability($,Z){if(!this._serverCapabilities?.[$])throw Error(`Server does not support ${$} (required for ${Z})`)}async connect($,Z){if(await super.connect($),$.sessionId!==void 0)return;try{let Q=await this.request({method:"initialize",params:{protocolVersion:y4,capabilities:this._capabilities,clientInfo:this._clientInfo}},f4,Z);if(Q===void 0)throw Error(`Server sent invalid initialize result: ${Q}`);if(!IY.includes(Q.protocolVersion))throw Error(`Server's protocol version is not supported: ${Q.protocolVersion}`);if(this._serverCapabilities=Q.capabilities,this._serverVersion=Q.serverInfo,$.setProtocolVersion)$.setProtocolVersion(Q.protocolVersion);if(this._instructions=Q.instructions,await this.notification({method:"notifications/initialized"}),this._pendingListChangedConfig)this._setupListChangedHandlers(this._pendingListChangedConfig),this._pendingListChangedConfig=void 0}catch(Q){throw this.close(),Q}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod($){switch($){case"logging/setLevel":if(!this._serverCapabilities?.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"prompts/get":case"prompts/list":if(!this._serverCapabilities?.prompts)throw Error(`Server does not support prompts (required for ${$})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!this._serverCapabilities?.resources)throw Error(`Server does not support resources (required for ${$})`);if($==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw Error(`Server does not support resource subscriptions (required for ${$})`);break;case"tools/call":case"tools/list":if(!this._serverCapabilities?.tools)throw Error(`Server does not support tools (required for ${$})`);break;case"completion/complete":if(!this._serverCapabilities?.completions)throw Error(`Server does not support completions (required for ${$})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability($){switch($){case"notifications/roots/list_changed":if(!this._capabilities.roots?.listChanged)throw Error(`Client does not support roots list changed notifications (required for ${$})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability($){if(!this._capabilities)return;switch($){case"sampling/createMessage":if(!this._capabilities.sampling)throw Error(`Client does not support sampling capability (required for ${$})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw Error(`Client does not support elicitation capability (required for ${$})`);break;case"roots/list":if(!this._capabilities.roots)throw Error(`Client does not support roots capability (required for ${$})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Client does not support tasks capability (required for ${$})`);break;case"ping":break}}assertTaskCapability($){yJ(this._serverCapabilities?.tasks?.requests,$,"Server")}assertTaskHandlerCapability($){if(!this._capabilities)return;bJ(this._capabilities.tasks?.requests,$,"Client")}async ping($){return this.request({method:"ping"},k1,$)}async complete($,Z){return this.request({method:"completion/complete",params:$},Y8,Z)}async setLoggingLevel($,Z){return this.request({method:"logging/setLevel",params:{level:$}},k1,Z)}async getPrompt($,Z){return this.request({method:"prompts/get",params:$},a4,Z)}async listPrompts($,Z){return this.request({method:"prompts/list",params:$},l4,Z)}async listResources($,Z){return this.request({method:"resources/list",params:$},h4,Z)}async listResourceTemplates($,Z){return this.request({method:"resources/templates/list",params:$},g4,Z)}async readResource($,Z){return this.request({method:"resources/read",params:$},m4,Z)}async subscribeResource($,Z){return this.request({method:"resources/subscribe",params:$},k1,Z)}async unsubscribeResource($,Z){return this.request({method:"resources/unsubscribe",params:$},k1,Z)}async callTool($,Z=K$,Q){if(this.isToolTaskRequired($.name))throw new E(R.InvalidRequest,`Tool "${$.name}" requires task-based execution. Use client.experimental.tasks.callToolStream() instead.`);let Y=await this.request({method:"tools/call",params:$},Z,Q),W=this.getToolOutputValidator($.name);if(W){if(!Y.structuredContent&&!Y.isError)throw new E(R.InvalidRequest,`Tool ${$.name} has an output schema but did not return structured content`);if(Y.structuredContent)try{let G=W(Y.structuredContent);if(!G.valid)throw new E(R.InvalidParams,`Structured content does not match the tool's output schema: ${G.errorMessage}`)}catch(G){if(G instanceof E)throw G;throw new E(R.InvalidParams,`Failed to validate structured content: ${G instanceof Error?G.message:String(G)}`)}}return Y}isToolTask($){if(!this._serverCapabilities?.tasks?.requests?.tools?.call)return!1;return this._cachedKnownTaskTools.has($)}isToolTaskRequired($){return this._cachedRequiredTaskTools.has($)}cacheToolMetadata($){this._cachedToolOutputValidators.clear(),this._cachedKnownTaskTools.clear(),this._cachedRequiredTaskTools.clear();for(let Z of $){if(Z.outputSchema){let Y=this._jsonSchemaValidator.getValidator(Z.outputSchema);this._cachedToolOutputValidators.set(Z.name,Y)}let Q=Z.execution?.taskSupport;if(Q==="required"||Q==="optional")this._cachedKnownTaskTools.add(Z.name);if(Q==="required")this._cachedRequiredTaskTools.add(Z.name)}}getToolOutputValidator($){return this._cachedToolOutputValidators.get($)}async listTools($,Z){let Q=await this.request({method:"tools/list",params:$},t4,Z);return this.cacheToolMetadata(Q.tools),Q}_setupListChangedHandler($,Z,Q,Y){let W=lY.safeParse(Q);if(!W.success)throw Error(`Invalid ${$} listChanged options: ${W.error.message}`);if(typeof Q.onChanged!=="function")throw Error(`Invalid ${$} listChanged options: onChanged must be a function`);let{autoRefresh:G,debounceMs:X}=W.data,{onChanged:J}=Q,B=async()=>{if(!G){J(null,null);return}try{let V=await Y();J(null,V)}catch(V){let z=V instanceof Error?V:Error(String(V));J(z,null)}},K=()=>{if(X){let V=this._listChangedDebounceTimers.get($);if(V)clearTimeout(V);let z=setTimeout(B,X);this._listChangedDebounceTimers.set($,z)}else B()};this.setNotificationHandler(Z,K)}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}}var j3=T6(M3(),1);import w9 from"process";import{PassThrough as jj}from"stream";class P9{append($){this._buffer=this._buffer?Buffer.concat([this._buffer,$]):$}readMessage(){if(!this._buffer)return null;let $=this._buffer.indexOf(`
204
+ `);if($===-1)return null;let Z=this._buffer.toString("utf8",0,$).replace(/\r$/,"");return this._buffer=this._buffer.subarray($+1),Oj(Z)}clear(){this._buffer=void 0}}function Oj($){return kY.parse(JSON.parse($))}function O3($){return JSON.stringify($)+`
205
+ `}var Pj=w9.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function T9(){let $={};for(let Z of Pj){let Q=w9.env[Z];if(Q===void 0)continue;if(Q.startsWith("()"))continue;$[Z]=Q}return $}class E9{constructor($){if(this._readBuffer=new P9,this._stderrStream=null,this._serverParams=$,$.stderr==="pipe"||$.stderr==="overlapped")this._stderrStream=new jj}async start(){if(this._process)throw Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{if(this._process=j3.default(this._serverParams.command,this._serverParams.args??[],{env:{...T9(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:w9.platform==="win32",cwd:this._serverParams.cwd}),this._process.on("error",(Q)=>{Z(Q),this.onerror?.(Q)}),this._process.on("spawn",()=>{$()}),this._process.on("close",(Q)=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",(Q)=>{this.onerror?.(Q)}),this._process.stdout?.on("data",(Q)=>{this._readBuffer.append(Q),this.processReadBuffer()}),this._process.stdout?.on("error",(Q)=>{this.onerror?.(Q)}),this._stderrStream&&this._process.stderr)this._process.stderr.pipe(this._stderrStream)})}get stderr(){if(this._stderrStream)return this._stderrStream;return this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){while(!0)try{let $=this._readBuffer.readMessage();if($===null)break;this.onmessage?.($)}catch($){this.onerror?.($)}}async close(){if(this._process){let $=this._process;this._process=void 0;let Z=new Promise((Q)=>{$.once("close",()=>{Q()})});try{$.stdin?.end()}catch{}if(await Promise.race([Z,new Promise((Q)=>setTimeout(Q,2000).unref())]),$.exitCode===null){try{$.kill("SIGTERM")}catch{}await Promise.race([Z,new Promise((Q)=>setTimeout(Q,2000).unref())])}if($.exitCode===null)try{$.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send($){return new Promise((Z)=>{if(!this._process?.stdin)throw Error("Not connected");let Q=O3($);if(this._process.stdin.write(Q))Z();else this._process.stdin.once("drain",Z)})}}var Sj=1e4,Cj=60000,w3=50000;function c1($){if($.length<=w3)return $;let Z=Math.floor(w3/2);return`${$.slice(0,Z)}
206
206
 
207
207
  \u2026 [${$.length-Z*2} characters omitted] \u2026
208
208
 
209
- ${$.slice(-Z)}`}function V6($){try{return JSON.stringify($,null,2)}catch{return String($)}}function O3($,Z){return $.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"_").replace(/^_+|_+$/g,"")||Z}function Mj($){if($.type==="text")return[{type:"text",text:p1($.text)}];if($.type==="image")return[{type:"image",mimeType:$.mimeType,data:$.data,evictable:!0}];if($.type==="audio")return[{type:"text",text:`[audio ${$.mimeType}, ${$.data.length.toLocaleString()} base64 characters]`}];if($.type==="resource_link")return[{type:"text",text:p1(V6({type:$.type,uri:$.uri,name:$.name,...$.description?{description:$.description}:{},...$.mimeType?{mimeType:$.mimeType}:{}}))}];let Z=$.resource;if("text"in Z)return[{type:"text",text:p1(`[resource ${Z.uri}]
210
- ${Z.text}`)}];if(Z.mimeType?.startsWith("image/"))return[{type:"image",mimeType:Z.mimeType,data:Z.blob,evictable:!0}];return[{type:"text",text:`[resource ${Z.uri}, ${Z.mimeType??"application/octet-stream"}, ${Z.blob.length.toLocaleString()} base64 characters]`}]}function Oj($){let Z=$.content.flatMap(Mj);if(Z.length===0&&$.structuredContent!==void 0)Z.push({type:"text",text:p1(V6($.structuredContent))});if(Z.length===0)Z.push({type:"text",text:"(no content)"});return{content:Z,...$.structuredContent!==void 0?{details:{structuredContent:$.structuredContent}}:{},...$.isError?{isError:!0}:{}}}function jj($){return typeof $==="object"&&$!==null&&Array.isArray($.content)}function j3($){return typeof $==="number"&&Number.isFinite($)&&$>0}function Pj($,Z){if(typeof $!=="object"||$===null)return;let Q=$;if(typeof Q.command!=="string"||Q.command.trim().length===0)return;if(Q.args!==void 0&&(!Array.isArray(Q.args)||Q.args.some((W)=>typeof W!=="string")))return;if(Q.env!==void 0&&(typeof Q.env!=="object"||Q.env===null||Array.isArray(Q.env)||Object.values(Q.env).some((W)=>typeof W!=="string")))return;if(Q.cwd!==void 0&&typeof Q.cwd!=="string")return;if(Q.startupTimeoutMs!==void 0&&!j3(Q.startupTimeoutMs))return;if(Q.toolTimeoutMs!==void 0&&!j3(Q.toolTimeoutMs))return;let Y=typeof Q.cwd==="string"?Uj(Q.cwd)?Q.cwd:qj(Z,Q.cwd):void 0;return{command:Q.command,...Q.args?{args:Q.args}:{},...Q.env?{env:Q.env}:{},...Y?{cwd:Y}:{},...Q.startupTimeoutMs?{startupTimeoutMs:Q.startupTimeoutMs}:{},...Q.toolTimeoutMs?{toolTimeoutMs:Q.toolTimeoutMs}:{}}}async function wj($){let Z;try{Z=await Fj($,"utf8")}catch(Q){if(Q.code==="ENOENT")return{servers:{}};return{servers:{},error:Q instanceof Error?Q.message:String(Q)}}try{let Q=JSON.parse(Z);if(typeof Q!=="object"||Q===null||Q.mcpServers===void 0)return{servers:{}};if(typeof Q.mcpServers!=="object"||Q.mcpServers===null||Array.isArray(Q.mcpServers))return{servers:{},error:"mcpServers must be an object"};let Y={},W=[];for(let[G,X]of Object.entries(Q.mcpServers)){let J=Pj(X,Dj($));if(J)Y[G]=J;else W.push(G)}return{servers:Y,...W.length>0?{error:`invalid MCP server config${W.length===1?"":"s"}: ${W.join(", ")}`}:{}}}catch(Q){return{servers:{},error:Q instanceof Error?Q.message:String(Q)}}}async function Tj($={}){let Z=[$.userFile??N3(Lj(),".mu","config.json"),...$.projectDir?[N3($.projectDir,".mu","config.json")]:[]],Q={},Y=[];for(let W of Z){let G=await wj(W);if(Object.assign(Q,G.servers),G.error)Y.push({file:W,message:G.error})}return{servers:Q,errors:Y}}async function Ij($,Z,Q){let Y=[],W;do{let G=await $.listResources(W?{cursor:W}:void 0,{signal:Z,timeout:Q});Y.push(...G.resources),W=G.nextCursor}while(W);return Y}function Rj($){let Z=[];return{name:"mcp",activate:async(Q)=>{let Y=new Set;for(let[W,G]of Object.entries($)){let X=O3(W,"server"),J=new V9({name:"mu",version:"0.0.1"}),B=new w9({command:G.command,...G.args?{args:G.args}:{},env:{...P9(),...G.env??{}},...G.cwd?{cwd:G.cwd}:{},stderr:"pipe"});B.stderr?.on("data",(L)=>{let U=String(L).trim();if(U)Q.log(`${W}: ${U}`)});try{await J.connect(B,{timeout:G.startupTimeoutMs??Aj})}catch(L){await B.close().catch(()=>{}),Q.log(`could not connect ${W}: ${L instanceof Error?L.message:String(L)}`);continue}Z.push(J);let K=G.toolTimeoutMs??Nj,V=[],z;try{do{let L=await J.listTools(z?{cursor:z}:void 0,{timeout:K});V.push(...L.tools),z=L.nextCursor}while(z)}catch(L){Z.pop(),await J.close().catch(()=>{}),Q.log(`could not discover tools from ${W}: ${L instanceof Error?L.message:String(L)}`);continue}for(let L of V){let U=`mcp_${X}_${O3(L.name,"tool")}`,q=2;while(Y.has(U))U=`${U}_${q++}`;Y.add(U),Q.registerTool({name:U,description:L.description??`Run the ${L.name} tool provided by the ${W} MCP server.`,inputSchema:L.inputSchema,...L.annotations?.readOnlyHint&&!L.annotations.destructiveHint?{isConcurrencySafe:()=>!0}:{},execute:async(A,N,j,P)=>{try{let M=await J.callTool({name:L.name,arguments:N},void 0,{signal:j,timeout:K,resetTimeoutOnProgress:!0,maxTotalTimeout:K,onprogress:({progress:S,total:g})=>{P?.([{type:"text",text:`mcp progress ${S}${g===void 0?"":`/${g}`}`}])}});if(!jj(M))return{content:[{type:"text",text:p1(V6(M.toolResult))}]};return Oj(M)}catch(M){return y(`MCP tool ${W}/${L.name} failed: ${M instanceof Error?M.message:String(M)}`)}}})}if(!J.getServerCapabilities()?.resources)continue;let F=`mcp_${X}_resources_list`;if(!Y.has(F))Y.add(F),Q.registerTool({name:F,description:`List resources exposed by the ${W} MCP server.`,inputSchema:{type:"object",properties:{},additionalProperties:!1},isConcurrencySafe:()=>!0,execute:async(L,U,q)=>{try{return{content:[{type:"text",text:p1(V6(await Ij(J,q,K)))}]}}catch(A){return y(`Could not list MCP resources from ${W}: ${A instanceof Error?A.message:String(A)}`)}}});let D=`mcp_${X}_resource_read`;if(!Y.has(D))Y.add(D),Q.registerTool({name:D,description:`Read a resource exposed by the ${W} MCP server.`,inputSchema:{type:"object",properties:{uri:{type:"string",description:"Resource URI to read"}},required:["uri"],additionalProperties:!1},isConcurrencySafe:()=>!0,execute:async(L,U,q)=>{if(typeof U.uri!=="string"||U.uri.length===0)return y("uri must be a non-empty string");try{let A=await J.readResource({uri:U.uri},{signal:q,timeout:K}),N=[];for(let j of A.contents){if("text"in j){N.push({type:"text",text:p1(`[resource ${j.uri}]
211
- ${j.text}`)});continue}if(j.mimeType?.startsWith("image/")){N.push({type:"image",mimeType:j.mimeType,data:j.blob,evictable:!0});continue}N.push({type:"text",text:`[resource ${j.uri}, ${j.mimeType??"application/octet-stream"}, ${j.blob.length.toLocaleString()} base64 characters]`})}return{content:N.length>0?N:[{type:"text",text:"(empty)"}]}}catch(A){return y(`Could not read MCP resource ${U.uri}: ${A instanceof Error?A.message:String(A)}`)}}})}},deactivate:async()=>{await Promise.allSettled(Z.splice(0).map((Q)=>Q.close()))}}}async function T9($,Z,Q={}){let Y=await $.contextMessages?.()??[],W=await $.environment?.()??{};return{...Q,sessionProfile:Q.sessionProfile??$.name,sessionEnvironment:Q.sessionEnvironment??W,model:Q.model??Z,systemPrompt:Q.systemPrompt??$.promptFor(Z),tools:[...$.toolset,...Q.tools??[]],permissions:[...$.permissionDefaults,...Q.permissions??[]],...Y.length>0?{initialMessages:Y}:{},...$.refreshContext?{refreshContext:$.refreshContext}:{},...$.carryoverExtractor?{carryoverExtractor:$.carryoverExtractor}:{},...Q.runtime??$.runtime?{runtime:Q.runtime??$.runtime}:{},...Q.checkpointProvider??$.checkpointProvider?{checkpointProvider:Q.checkpointProvider??$.checkpointProvider}:{}}}async function Ej($,Z={},Q=(Y)=>import(Y)){let Y=await Q($),W=Y.default??Y.profile??Y.codingProfile;if(typeof W==="function")return await W(Z);if(W&&typeof W==="object"&&"toolset"in W)return W;throw Error(`Module "${$}" does not export a profile`)}var z6=30000,Sj=1000;async function P3($){let Z=$.getReader(),Q=new TextDecoder,Y=new C1;for(;;){let{done:W,value:G}=await Z.read();if(W)break;Y.append(Q.decode(G,{stream:!0}))}return Y.append(Q.decode()),Y.read()}function w3($,Z){if(process.platform==="win32"){try{Bun.spawn(["taskkill.exe","/PID",String($.pid),"/T","/F"],{stdin:"ignore",stdout:"ignore",stderr:"ignore",windowsHide:!0})}catch{$.kill(Z)}return}try{process.kill(-$.pid,Z)}catch{$.kill(Z)}}async function Cj($,Z,Q){let Y=Bun.spawn(["sh","-c",$],{stdin:new TextEncoder().encode(Z),stdout:"pipe",stderr:"pipe",detached:process.platform!=="win32"}),W,G=setTimeout(()=>{w3(Y,"SIGTERM"),W=setTimeout(()=>w3(Y,"SIGKILL"),Sj)},Q);try{let[X,J,B]=await Promise.all([P3(Y.stdout),P3(Y.stderr),Y.exited]);return{exitCode:B,stdout:X,stderr:J}}finally{if(clearTimeout(G),W)clearTimeout(W)}}function T3($,Z){if(!$||$==="*")return!0;let Q=$.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${Q}$`).test(Z)}function I9($){let Z=$.trim();if(!Z.startsWith("{"))return;try{return JSON.parse(Z)}catch{return}}function yj($,Z=Cj){let Q=(Y)=>$.filter((W)=>W.event===Y);return{name:"shell-hooks",activate(Y){let W=Q("PreToolUse");if(W.length>0)Y.onToolCall(async(J)=>{for(let B of W){if(!T3(B.matcher,J.toolName))continue;let K=JSON.stringify({event:"PreToolUse",tool_name:J.toolName,tool_call_id:J.toolCallId,tool_input:J.args}),V=await Z(B.command,K,B.timeoutMs??z6),z=I9(V.stdout);if(V.exitCode===2)return{block:!0,reason:(typeof z?.reason==="string"?z.reason:void 0)??V.stderr.trim()??`Blocked by ${B.command}`};if(V.exitCode===0&&z?.tool_input&&typeof z.tool_input==="object")return{args:z.tool_input}}return});let G=Q("PostToolUse");if(G.length>0)Y.onToolResult(async(J)=>{for(let B of G){if(!T3(B.matcher,J.toolName))continue;let K=J.result.content.filter((D)=>D.type==="text").map((D)=>D.text).join(`
212
- `),V=JSON.stringify({event:"PostToolUse",tool_name:J.toolName,tool_call_id:J.toolCallId,tool_output:K,is_error:J.isError}),z=await Z(B.command,V,B.timeoutMs??z6),F=I9(z.stdout);if(typeof F?.tool_output==="string")return{content:[{type:"text",text:F.tool_output}]}}return});let X=Q("UserPromptSubmit");if(X.length>0)Y.onInput(async(J)=>{for(let B of X){let K=await Z(B.command,JSON.stringify({event:"UserPromptSubmit",prompt:J}),B.timeoutMs??z6);if(K.exitCode===2)return{consume:!0};let V=I9(K.stdout);if(typeof V?.prompt==="string")return{text:V.prompt}}return});for(let J of["SessionStart","Stop"]){let B=Q(J);if(B.length===0)continue;let K=J==="SessionStart"?"session_start":"agent_end";Y.on(K,()=>{for(let V of B)Z(V.command,JSON.stringify({event:J}),V.timeoutMs??z6).catch((z)=>Y.log(`${J} hook failed: ${z instanceof Error?z.message:String(z)}`))})}}}}import{readdir as bj,readFile as _j,stat as xj}from"fs/promises";import{homedir as kj}from"os";import{basename as fj,join as F6}from"path";async function R9($){try{let Z=await _j(F6($,"SKILL.md"),"utf8"),{meta:Q,body:Y}=z5(Z),W=typeof Q.name==="string"&&Q.name?Q.name:fj($),G=typeof Q.description==="string"&&Q.description?Q.description:`The ${W} skill`;return{name:W,description:G,body:Y,directory:$}}catch{return}}async function vj($){let Z=[];for(let Q of $){let Y;try{Y=await bj(Q)}catch{continue}for(let W of Y.sort()){let G=F6(Q,W);try{if(!(await xj(G)).isDirectory())continue}catch{continue}let X=await R9(G);if(X)Z.push(X)}}return Z}function gj($){let Z=[F6(kj(),".mu","skills")];if($)Z.push(F6($,".mu","skills"));return Z}function I3($){if($.length===0)return"";return`Available skills (load one with the skill tool when it is relevant):
209
+ ${$.slice(-Z)}`}function L6($){try{return JSON.stringify($,null,2)}catch{return String($)}}function T3($,Z){return $.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"_").replace(/^_+|_+$/g,"")||Z}function yj($){if($.type==="text")return[{type:"text",text:c1($.text)}];if($.type==="image")return[{type:"image",mimeType:$.mimeType,data:$.data,evictable:!0}];if($.type==="audio")return[{type:"text",text:`[audio ${$.mimeType}, ${$.data.length.toLocaleString()} base64 characters]`}];if($.type==="resource_link")return[{type:"text",text:c1(L6({type:$.type,uri:$.uri,name:$.name,...$.description?{description:$.description}:{},...$.mimeType?{mimeType:$.mimeType}:{}}))}];let Z=$.resource;if("text"in Z)return[{type:"text",text:c1(`[resource ${Z.uri}]
210
+ ${Z.text}`)}];if(Z.mimeType?.startsWith("image/"))return[{type:"image",mimeType:Z.mimeType,data:Z.blob,evictable:!0}];return[{type:"text",text:`[resource ${Z.uri}, ${Z.mimeType??"application/octet-stream"}, ${Z.blob.length.toLocaleString()} base64 characters]`}]}function bj($){let Z=$.content.flatMap(yj);if(Z.length===0&&$.structuredContent!==void 0)Z.push({type:"text",text:c1(L6($.structuredContent))});if(Z.length===0)Z.push({type:"text",text:"(no content)"});return{content:Z,...$.structuredContent!==void 0?{details:{structuredContent:$.structuredContent}}:{},...$.isError?{isError:!0}:{}}}function _j($){return typeof $==="object"&&$!==null&&Array.isArray($.content)}function E3($){return typeof $==="number"&&Number.isFinite($)&&$>0}function xj($,Z){if(typeof $!=="object"||$===null)return;let Q=$;if(typeof Q.command!=="string"||Q.command.trim().length===0)return;if(Q.args!==void 0&&(!Array.isArray(Q.args)||Q.args.some((W)=>typeof W!=="string")))return;if(Q.env!==void 0&&(typeof Q.env!=="object"||Q.env===null||Array.isArray(Q.env)||Object.values(Q.env).some((W)=>typeof W!=="string")))return;if(Q.cwd!==void 0&&typeof Q.cwd!=="string")return;if(Q.startupTimeoutMs!==void 0&&!E3(Q.startupTimeoutMs))return;if(Q.toolTimeoutMs!==void 0&&!E3(Q.toolTimeoutMs))return;let Y=typeof Q.cwd==="string"?Ij(Q.cwd)?Q.cwd:Rj(Z,Q.cwd):void 0;return{command:Q.command,...Q.args?{args:Q.args}:{},...Q.env?{env:Q.env}:{},...Y?{cwd:Y}:{},...Q.startupTimeoutMs?{startupTimeoutMs:Q.startupTimeoutMs}:{},...Q.toolTimeoutMs?{toolTimeoutMs:Q.toolTimeoutMs}:{}}}async function kj($){let Z;try{Z=await wj($,"utf8")}catch(Q){if(Q.code==="ENOENT")return{servers:{}};return{servers:{},error:Q instanceof Error?Q.message:String(Q)}}try{let Q=JSON.parse(Z);if(typeof Q!=="object"||Q===null||Q.mcpServers===void 0)return{servers:{}};if(typeof Q.mcpServers!=="object"||Q.mcpServers===null||Array.isArray(Q.mcpServers))return{servers:{},error:"mcpServers must be an object"};let Y={},W=[];for(let[G,X]of Object.entries(Q.mcpServers)){let J=xj(X,Ej($));if(J)Y[G]=J;else W.push(G)}return{servers:Y,...W.length>0?{error:`invalid MCP server config${W.length===1?"":"s"}: ${W.join(", ")}`}:{}}}catch(Q){return{servers:{},error:Q instanceof Error?Q.message:String(Q)}}}async function fj($={}){let Z=[$.userFile??P3(Tj(),".mu","config.json"),...$.projectDir?[P3($.projectDir,".mu","config.json")]:[]],Q={},Y=[];for(let W of Z){let G=await kj(W);if(Object.assign(Q,G.servers),G.error)Y.push({file:W,message:G.error})}return{servers:Q,errors:Y}}async function vj($,Z,Q){let Y=[],W;do{let G=await $.listResources(W?{cursor:W}:void 0,{signal:Z,timeout:Q});Y.push(...G.resources),W=G.nextCursor}while(W);return Y}function hj($){let Z=[];return{name:"mcp",activate:async(Q)=>{let Y=new Set;for(let[W,G]of Object.entries($)){let X=T3(W,"server"),J=new F9({name:"mu",version:"0.0.1"}),B=new E9({command:G.command,...G.args?{args:G.args}:{},env:{...T9(),...G.env??{}},...G.cwd?{cwd:G.cwd}:{},stderr:"pipe"});B.stderr?.on("data",(L)=>{let q=String(L).trim();if(q)Q.log(`${W}: ${q}`)});try{await J.connect(B,{timeout:G.startupTimeoutMs??Sj})}catch(L){await B.close().catch(()=>{}),Q.log(`could not connect ${W}: ${L instanceof Error?L.message:String(L)}`);continue}Z.push(J);let K=G.toolTimeoutMs??Cj,V=[],z;try{do{let L=await J.listTools(z?{cursor:z}:void 0,{timeout:K});V.push(...L.tools),z=L.nextCursor}while(z)}catch(L){Z.pop(),await J.close().catch(()=>{}),Q.log(`could not discover tools from ${W}: ${L instanceof Error?L.message:String(L)}`);continue}for(let L of V){let q=`mcp_${X}_${T3(L.name,"tool")}`,U=2;while(Y.has(q))q=`${q}_${U++}`;Y.add(q),Q.registerTool({name:q,description:L.description??`Run the ${L.name} tool provided by the ${W} MCP server.`,inputSchema:L.inputSchema,...L.annotations?.readOnlyHint&&!L.annotations.destructiveHint?{isConcurrencySafe:()=>!0}:{},execute:async(A,N,j,P)=>{try{let M=await J.callTool({name:L.name,arguments:N},void 0,{signal:j,timeout:K,resetTimeoutOnProgress:!0,maxTotalTimeout:K,onprogress:({progress:I,total:v})=>{P?.([{type:"text",text:`mcp progress ${I}${v===void 0?"":`/${v}`}`}])}});if(!_j(M))return{content:[{type:"text",text:c1(L6(M.toolResult))}]};return bj(M)}catch(M){return y(`MCP tool ${W}/${L.name} failed: ${M instanceof Error?M.message:String(M)}`)}}})}if(!J.getServerCapabilities()?.resources)continue;let F=`mcp_${X}_resources_list`;if(!Y.has(F))Y.add(F),Q.registerTool({name:F,description:`List resources exposed by the ${W} MCP server.`,inputSchema:{type:"object",properties:{},additionalProperties:!1},isConcurrencySafe:()=>!0,execute:async(L,q,U)=>{try{return{content:[{type:"text",text:c1(L6(await vj(J,U,K)))}]}}catch(A){return y(`Could not list MCP resources from ${W}: ${A instanceof Error?A.message:String(A)}`)}}});let D=`mcp_${X}_resource_read`;if(!Y.has(D))Y.add(D),Q.registerTool({name:D,description:`Read a resource exposed by the ${W} MCP server.`,inputSchema:{type:"object",properties:{uri:{type:"string",description:"Resource URI to read"}},required:["uri"],additionalProperties:!1},isConcurrencySafe:()=>!0,execute:async(L,q,U)=>{if(typeof q.uri!=="string"||q.uri.length===0)return y("uri must be a non-empty string");try{let A=await J.readResource({uri:q.uri},{signal:U,timeout:K}),N=[];for(let j of A.contents){if("text"in j){N.push({type:"text",text:c1(`[resource ${j.uri}]
211
+ ${j.text}`)});continue}if(j.mimeType?.startsWith("image/")){N.push({type:"image",mimeType:j.mimeType,data:j.blob,evictable:!0});continue}N.push({type:"text",text:`[resource ${j.uri}, ${j.mimeType??"application/octet-stream"}, ${j.blob.length.toLocaleString()} base64 characters]`})}return{content:N.length>0?N:[{type:"text",text:"(empty)"}]}}catch(A){return y(`Could not read MCP resource ${q.uri}: ${A instanceof Error?A.message:String(A)}`)}}})}},deactivate:async()=>{await Promise.allSettled(Z.splice(0).map((Q)=>Q.close()))}}}async function I9($,Z,Q={}){let Y=await $.contextMessages?.()??[],W=await $.environment?.()??{};return{...Q,sessionProfile:Q.sessionProfile??$.name,sessionEnvironment:Q.sessionEnvironment??W,model:Q.model??Z,systemPrompt:Q.systemPrompt??$.promptFor(Z),tools:[...$.toolset,...Q.tools??[]],permissions:[...$.permissionDefaults,...Q.permissions??[]],...Y.length>0?{initialMessages:Y}:{},...$.refreshContext?{refreshContext:$.refreshContext}:{},...$.carryoverExtractor?{carryoverExtractor:$.carryoverExtractor}:{},...Q.runtime??$.runtime?{runtime:Q.runtime??$.runtime}:{},...Q.checkpointProvider??$.checkpointProvider?{checkpointProvider:Q.checkpointProvider??$.checkpointProvider}:{}}}async function gj($,Z={},Q=(Y)=>import(Y)){let Y=await Q($),W=Y.default??Y.profile??Y.codingProfile;if(typeof W==="function")return await W(Z);if(W&&typeof W==="object"&&"toolset"in W)return W;throw Error(`Module "${$}" does not export a profile`)}var D6=30000,uj=1000;async function I3($){let Z=$.getReader(),Q=new TextDecoder,Y=new y1;for(;;){let{done:W,value:G}=await Z.read();if(W)break;Y.append(Q.decode(G,{stream:!0}))}return Y.append(Q.decode()),Y.read()}function R3($,Z){if(process.platform==="win32"){try{Bun.spawn(["taskkill.exe","/PID",String($.pid),"/T","/F"],{stdin:"ignore",stdout:"ignore",stderr:"ignore",windowsHide:!0})}catch{$.kill(Z)}return}try{process.kill(-$.pid,Z)}catch{$.kill(Z)}}async function mj($,Z,Q){let Y=Bun.spawn(["sh","-c",$],{stdin:new TextEncoder().encode(Z),stdout:"pipe",stderr:"pipe",detached:process.platform!=="win32"}),W,G=setTimeout(()=>{R3(Y,"SIGTERM"),W=setTimeout(()=>R3(Y,"SIGKILL"),uj)},Q);try{let[X,J,B]=await Promise.all([I3(Y.stdout),I3(Y.stderr),Y.exited]);return{exitCode:B,stdout:X,stderr:J}}finally{if(clearTimeout(G),W)clearTimeout(W)}}function S3($,Z){if(!$||$==="*")return!0;let Q=$.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${Q}$`).test(Z)}function R9($){let Z=$.trim();if(!Z.startsWith("{"))return;try{return JSON.parse(Z)}catch{return}}function pj($,Z=mj){let Q=(Y)=>$.filter((W)=>W.event===Y);return{name:"shell-hooks",activate(Y){let W=Q("PreToolUse");if(W.length>0)Y.onToolCall(async(J)=>{for(let B of W){if(!S3(B.matcher,J.toolName))continue;let K=JSON.stringify({event:"PreToolUse",tool_name:J.toolName,tool_call_id:J.toolCallId,tool_input:J.args}),V=await Z(B.command,K,B.timeoutMs??D6),z=R9(V.stdout);if(V.exitCode===2)return{block:!0,reason:(typeof z?.reason==="string"?z.reason:void 0)??V.stderr.trim()??`Blocked by ${B.command}`};if(V.exitCode===0&&z?.tool_input&&typeof z.tool_input==="object")return{args:z.tool_input}}return});let G=Q("PostToolUse");if(G.length>0)Y.onToolResult(async(J)=>{for(let B of G){if(!S3(B.matcher,J.toolName))continue;let K=J.result.content.filter((D)=>D.type==="text").map((D)=>D.text).join(`
212
+ `),V=JSON.stringify({event:"PostToolUse",tool_name:J.toolName,tool_call_id:J.toolCallId,tool_output:K,is_error:J.isError}),z=await Z(B.command,V,B.timeoutMs??D6),F=R9(z.stdout);if(typeof F?.tool_output==="string")return{content:[{type:"text",text:F.tool_output}]}}return});let X=Q("UserPromptSubmit");if(X.length>0)Y.onInput(async(J)=>{for(let B of X){let K=await Z(B.command,JSON.stringify({event:"UserPromptSubmit",prompt:J}),B.timeoutMs??D6);if(K.exitCode===2)return{consume:!0};let V=R9(K.stdout);if(typeof V?.prompt==="string")return{text:V.prompt}}return});for(let J of["SessionStart","Stop"]){let B=Q(J);if(B.length===0)continue;let K=J==="SessionStart"?"session_start":"agent_end";Y.on(K,()=>{for(let V of B)Z(V.command,JSON.stringify({event:J}),V.timeoutMs??D6).catch((z)=>Y.log(`${J} hook failed: ${z instanceof Error?z.message:String(z)}`))})}}}}import{readdir as lj,readFile as cj,stat as dj}from"fs/promises";import{homedir as ij}from"os";import{basename as nj,join as q6}from"path";async function S9($){try{let Z=await cj(q6($,"SKILL.md"),"utf8"),{meta:Q,body:Y}=D5(Z),W=typeof Q.name==="string"&&Q.name?Q.name:nj($),G=typeof Q.description==="string"&&Q.description?Q.description:`The ${W} skill`;return{name:W,description:G,body:Y,directory:$}}catch{return}}async function aj($){let Z=[];for(let Q of $){let Y;try{Y=await lj(Q)}catch{continue}for(let W of Y.sort()){let G=q6(Q,W);try{if(!(await dj(G)).isDirectory())continue}catch{continue}let X=await S9(G);if(X)Z.push(X)}}return Z}function rj($){let Z=[q6(ij(),".mu","skills")];if($)Z.push(q6($,".mu","skills"));return Z}function C3($){if($.length===0)return"";return`Available skills (load one with the skill tool when it is relevant):
213
213
  ${$.map((Q)=>`- ${Q.name}: ${Q.description}`).join(`
214
- `)}`}function hj($){return{name:"skills",activate(Z){if($.length===0)return;let Q=new Map($.map((Y)=>[Y.name,Y]));Z.registerTool({name:"skill",description:`Load the full instructions for a skill. ${I3($)}`,inputSchema:{type:"object",properties:{name:{type:"string",description:"The skill to load"}},required:["name"]},isConcurrencySafe:()=>!0,execute:async(Y,W)=>{let G=W.name??"",X=Q.get(G),J=X?await R9(X.directory)??X:void 0;if(!J)return{content:[{type:"text",text:`No such skill: ${G}. Available: ${[...Q.keys()].join(", ")}`}],isError:!0};return{content:[{type:"text",text:`Skill "${J.name}" (files are in ${J.directory}):
214
+ `)}`}function tj($){return{name:"skills",activate(Z){if($.length===0)return;let Q=new Map($.map((Y)=>[Y.name,Y]));Z.registerTool({name:"skill",description:`Load the full instructions for a skill. ${C3($)}`,inputSchema:{type:"object",properties:{name:{type:"string",description:"The skill to load"}},required:["name"]},isConcurrencySafe:()=>!0,execute:async(Y,W)=>{let G=W.name??"",X=Q.get(G),J=X?await S9(X.directory)??X:void 0;if(!J)return{content:[{type:"text",text:`No such skill: ${G}. Available: ${[...Q.keys()].join(", ")}`}],isError:!0};return{content:[{type:"text",text:`Skill "${J.name}" (files are in ${J.directory}):
215
215
 
216
- ${J.body}`}],details:{skill:J.name}}}}),Z.onContext((Y)=>Y),Z.log(`loaded ${$.length} skill(s)`)}}}import{z as uj}from"zod";function mj($){return typeof $==="string"?{content:[{type:"text",text:$}]}:$}function W0($){let Z=uj.toJSONSchema($.inputSchema,{io:"input"}),Q=(G)=>{let X=G;if($.coerceInput)try{X=$.coerceInput(G)}catch{X=G}return $.inputSchema.safeParse(X)},Y=$.isConcurrencySafe,W=$.changesState;return{name:$.name,description:$.description,inputSchema:Z,...Y?{isConcurrencySafe:(G)=>{let X=Q(G);if(!X.success)return!1;try{return Y(X.data)===!0}catch{return!1}}}:{},...$.executionMode?{executionMode:$.executionMode}:{},...W!==void 0?{changesState:typeof W==="function"?(G)=>{let X=Q(G);if(!X.success)return!0;try{return W(X.data)===!0}catch{return!0}}:W}:{},...$.permissionScope?{permissionScope:(G)=>{let X=Q(G);return X.success?$.permissionScope?.(X.data)??$.name:$.name}}:{},...$.permissionPattern?{permissionPattern:(G)=>{let X=Q(G);return X.success?$.permissionPattern?.(X.data)??JSON.stringify(G):JSON.stringify(G)}}:{},...$.permissionDetails?{permissionDetails:async(G)=>{let X=Q(G);return X.success?$.permissionDetails?.(X.data):void 0}}:{},execute:async(G,X,J,B)=>{let K=Q(X);if(!K.success){let z=K.error.issues.map((F)=>`${F.path.join(".")||"(root)"}: ${F.message}`).join("; ");return y(`Invalid arguments for ${$.name}: ${z}`)}let V=(z)=>B?.([{type:"text",text:z}]);return mj(await $.execute(K.data,{toolCallId:G,signal:J,update:V}))}}}function L6($,Z="text"){let Q=Math.max(0,...[...$.matchAll(/`+/g)].map((W)=>W[0].length)),Y="`".repeat(Math.max(3,Q+1));return`${Y}${Z}
216
+ ${J.body}`}],details:{skill:J.name}}}}),Z.onContext((Y)=>Y),Z.log(`loaded ${$.length} skill(s)`)}}}import{z as oj}from"zod";function sj($){return typeof $==="string"?{content:[{type:"text",text:$}]}:$}function W0($){let Z=oj.toJSONSchema($.inputSchema,{io:"input"}),Q=(G)=>{let X=G;if($.coerceInput)try{X=$.coerceInput(G)}catch{X=G}return $.inputSchema.safeParse(X)},Y=$.isConcurrencySafe,W=$.changesState;return{name:$.name,description:$.description,inputSchema:Z,...Y?{isConcurrencySafe:(G)=>{let X=Q(G);if(!X.success)return!1;try{return Y(X.data)===!0}catch{return!1}}}:{},...$.executionMode?{executionMode:$.executionMode}:{},...W!==void 0?{changesState:typeof W==="function"?(G)=>{let X=Q(G);if(!X.success)return!0;try{return W(X.data)===!0}catch{return!0}}:W}:{},...$.permissionScope?{permissionScope:(G)=>{let X=Q(G);return X.success?$.permissionScope?.(X.data)??$.name:$.name}}:{},...$.permissionPattern?{permissionPattern:(G)=>{let X=Q(G);return X.success?$.permissionPattern?.(X.data)??JSON.stringify(G):JSON.stringify(G)}}:{},...$.permissionDetails?{permissionDetails:async(G)=>{let X=Q(G);return X.success?$.permissionDetails?.(X.data):void 0}}:{},execute:async(G,X,J,B)=>{let K=Q(X);if(!K.success){let z=K.error.issues.map((F)=>`${F.path.join(".")||"(root)"}: ${F.message}`).join("; ");return y(`Invalid arguments for ${$.name}: ${z}`)}let V=(z)=>B?.([{type:"text",text:z}]);return sj(await $.execute(K.data,{toolCallId:G,signal:J,update:V}))}}}function U6($,Z="text"){let Q=Math.max(0,...[...$.matchAll(/`+/g)].map((W)=>W[0].length)),Y="`".repeat(Math.max(3,Q+1));return`${Y}${Z}
217
217
  ${$}
218
- ${Y}`}function R3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function D6($){let Z=new Date($);return Number.isNaN(Z.getTime())?"":`_${Z.toISOString()}_
219
- `}function E3($){return`> [Image omitted from text export: ${$}]`}function S3($){return $.content.map((Z)=>Z.type==="text"?Z.text:E3(Z.mimeType))}function lj($){return["## User",D6($.timestamp),...S3($)].filter(Boolean).join(`
220
- `)}function pj($){let Z=$.content.map((Q)=>{if(Q.type==="text")return Q.text;if(Q.type==="thinking")return["<details>","<summary>Thinking</summary>","",Q.thinking,"","</details>"].join(`
221
- `);return["<details>",`<summary>Tool call: <code>${R3(Q.name)}</code></summary>`,"",L6(JSON.stringify(Q.arguments,null,2)??"null","json"),"","</details>"].join(`
222
- `)});if($.errorMessage)Z.push(`> Error: ${$.errorMessage}`);return["## Mu",D6($.timestamp),...Z].filter(Boolean).join(`
223
- `)}function cj($){let Z=$.content.map((Y)=>Y.type==="text"?Y.text:E3(Y.mimeType)).join(`
224
- `),Q=$.details===void 0?[]:["","**Details**","",L6(JSON.stringify($.details,null,2)??"null","json")];return["<details>",`<summary>Tool result: <code>${R3($.toolName)}</code>${$.isError?" (error)":""}</summary>`,"",D6($.timestamp),L6(Z||"(no output)"),...Q,"","</details>"].filter(Boolean).join(`
225
- `)}function dj($){let Z=$.customType.replaceAll(/[^\p{L}\p{N} _-]/gu,"").trim();return[`## ${$.customType==="user_shell_command"?"User shell":Z||"Context"}`,D6($.timestamp),...S3($).map((Y)=>L6(Y))].filter(Boolean).join(`
226
- `)}function ij($){return $.role!=="custom"||$.display===!0||$.customType==="user_shell_command"}function nj($){if($.role==="user")return lj($);if($.role==="assistant")return pj($);if($.role==="toolResult")return cj($);return dj($)}function aj($,Z={}){let Q=$.activePath().filter((X)=>X.type==="message").map((X)=>X.message).filter(ij),Y=Z.exportedAt??new Date,W=[Z.sessionId?`- Session: \`${Z.sessionId}\``:void 0,Z.model?`- Model: \`${Z.model}\``:void 0,`- Exported: ${Y.toISOString()}`].filter((X)=>X!==void 0),G=Q.map(nj);return{markdown:["# Mu chat transcript","",...W,...G.length>0?["",G.join(`
218
+ ${Y}`}function y3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function A6($){let Z=new Date($);return Number.isNaN(Z.getTime())?"":`_${Z.toISOString()}_
219
+ `}function b3($){return`> [Image omitted from text export: ${$}]`}function _3($){return $.content.map((Z)=>Z.type==="text"?Z.text:b3(Z.mimeType))}function ej($){return["## User",A6($.timestamp),..._3($)].filter(Boolean).join(`
220
+ `)}function $P($){let Z=$.content.map((Q)=>{if(Q.type==="text")return Q.text;if(Q.type==="thinking")return["<details>","<summary>Thinking</summary>","",Q.thinking,"","</details>"].join(`
221
+ `);return["<details>",`<summary>Tool call: <code>${y3(Q.name)}</code></summary>`,"",U6(JSON.stringify(Q.arguments,null,2)??"null","json"),"","</details>"].join(`
222
+ `)});if($.errorMessage)Z.push(`> Error: ${$.errorMessage}`);return["## Mu",A6($.timestamp),...Z].filter(Boolean).join(`
223
+ `)}function ZP($){let Z=$.content.map((Y)=>Y.type==="text"?Y.text:b3(Y.mimeType)).join(`
224
+ `),Q=$.details===void 0?[]:["","**Details**","",U6(JSON.stringify($.details,null,2)??"null","json")];return["<details>",`<summary>Tool result: <code>${y3($.toolName)}</code>${$.isError?" (error)":""}</summary>`,"",A6($.timestamp),U6(Z||"(no output)"),...Q,"","</details>"].filter(Boolean).join(`
225
+ `)}function QP($){let Z=$.customType.replaceAll(/[^\p{L}\p{N} _-]/gu,"").trim();return[`## ${$.customType==="user_shell_command"?"User shell":Z||"Context"}`,A6($.timestamp),..._3($).map((Y)=>U6(Y))].filter(Boolean).join(`
226
+ `)}function YP($){return $.role!=="custom"||$.display===!0||$.customType==="user_shell_command"}function WP($){if($.role==="user")return ej($);if($.role==="assistant")return $P($);if($.role==="toolResult")return ZP($);return QP($)}function GP($,Z={}){let Q=$.activePath().filter((X)=>X.type==="message").map((X)=>X.message).filter(YP),Y=Z.exportedAt??new Date,W=[Z.sessionId?`- Session: \`${Z.sessionId}\``:void 0,Z.model?`- Model: \`${Z.model}\``:void 0,`- Exported: ${Y.toISOString()}`].filter((X)=>X!==void 0),G=Q.map(WP);return{markdown:["# Mu chat transcript","",...W,...G.length>0?["",G.join(`
227
227
 
228
228
  `)]:[],""].join(`
229
- `),messageCount:Q.length}}import{z as CZ}from"zod";import{delimiter as sj,dirname as ej}from"path";import{accessSync as C3,constants as y3,statSync as b3}from"fs";import{dirname as E9,resolve as S9}from"path";function rj($,Z){let Q=Z==="win32"?"rg.exe":"rg",Y=S9(E9($),"..","mu-path",Q);try{if(!b3(Y).isFile())return;if(Z!=="win32")C3(Y,y3.X_OK);return Y}catch{return}}var tj={darwin:{arm64:"@mu-agent/ripgrep-darwin-arm64"},linux:{x64:"@mu-agent/ripgrep-linux-x64"},win32:{x64:"@mu-agent/ripgrep-windows-x64"}};function oj($=process.platform,Z=process.arch,Q=process.argv[1]?E9(S9(process.argv[1])):process.cwd(),Y=(W,G)=>Bun.resolveSync(W,G)){let W=tj[$]?.[Z];if(!W)return;try{let G=Y(`${W}/package.json`,Q),X=$==="win32"?"rg.exe":"rg",J=S9(E9(G),"vendor",X);if(!b3(J).isFile())return;if($!=="win32")C3(J,y3.X_OK);return J}catch{return}}function _3($=process.execPath,Z=process.platform,Q=(W)=>Bun.which(W),Y=()=>oj(Z,process.arch)){return rj($,Z)??Y()??Q("rg")??void 0}var $P=2000;function P$($,Z={}){if((Z.platform??process.platform)==="win32")return["powershell.exe","-NoLogo","-NoProfile",...Z.interactive?[]:["-NonInteractive"],"-Command",$];return["bash","-c",$]}function x3($){return["taskkill.exe","/PID",String($),"/T","/F"]}var C9;function ZP(){if(C9===void 0){let $=_3(void 0,void 0,()=>null);C9=$?ej($):null}return C9??void 0}function EZ($={},Z=ZP){let Q={...process.env,...$},Y=Z();if(!Y)return Q;let W=Object.keys(Q).find((X)=>X.toUpperCase()==="PATH")??"PATH",G=Q[W];return Q[W]=G?`${Y}${sj}${G}`:Y,Q}function U6($,Z){try{$.kill(Z)}catch{}}async function Z1($,Z,Q=globalThis.process.platform){if(Q!=="win32"){try{globalThis.process.kill(-$.pid,Z)}catch{U6($,Z)}return}try{let Y=Bun.spawn(x3($.pid),{stdin:"ignore",stdout:"ignore",stderr:"ignore",windowsHide:!0}),W,G=await Promise.race([Y.exited,new Promise((X)=>{W=setTimeout(()=>X(void 0),$P)})]).finally(()=>{if(W)clearTimeout(W)});if(G===void 0){try{Y.kill("SIGKILL")}catch{}U6($,Z)}else if(G!==0&&$.exitCode===null)U6($,Z)}catch{U6($,Z)}}var QP=new Set(["base64","cat","cd","cut","echo","expr","false","grep","head","id","ls","nl","paste","pwd","rev","seq","stat","tail","tr","true","uname","uniq","wc","which","whoami"]),YP=new Set(["-delete","-exec","-execdir","-fls","-fprint","-fprint0","-fprintf","-ok","-okdir"]),WP=["--hostname-bin","--pre"],GP=["-C","-c","-p","--config-env","--exec-path","--git-dir","--namespace","--paginate","--super-prefix","--work-tree"],XP=["--exec","--ext-diff","--output","--textconv"];function k3($){return($.split(/[\\/]/).at(-1)?.toLowerCase()??$.toLowerCase()).replace(/\.(?:exe|cmd|bat|com)$/i,"")}function JP($,Z){if($===Z||$.startsWith(`${Z}=`))return!0;return Z.length===2&&$.startsWith(Z)&&$.length>Z.length}function q6($,Z){return $.some((Q)=>Z.some((Y)=>JP(Q,Y)))}function KP($){let Z=[],Q=-1,Y=!1;for(let X=1;X<$.length;X++){let J=$[X]??"";if(Y){Z.push(J),Y=!1;continue}if(J==="--")return!1;if(J.startsWith("-")){if(Z.push(J),["-C","-c","--config-env","--exec-path","--git-dir","--namespace","--super-prefix","--work-tree"].includes(J))Y=!0;continue}Q=X;break}if(Q===-1||q6(Z,GP))return!1;let W=$[Q]?.toLowerCase(),G=$.slice(Q+1);if(!W||!["branch","diff","log","show","status"].includes(W))return!1;if(q6(G,XP))return!1;if(W!=="branch")return!0;if(G.length===0)return!0;return G.every((X)=>["--all","--list","--remotes","--show-current","--verbose","-a","-l","-r","-v","-vv"].includes(X)||X.startsWith("--format="))}function f3($){let Z=$[0]??"";if(Z.includes("/")||Z.includes("\\"))return!1;let Q=k3(Z);if(QP.has(Q)){if(Q!=="base64")return!0;return!q6($.slice(1),["-o","--output"])}if(Q==="find")return!$.slice(1).some((Y)=>YP.has(Y));if(Q==="rg")return!$.slice(1).some((Y)=>Y==="-z"||Y==="--search-zip")&&!q6($.slice(1),WP);if(Q==="git")return KP($);if(Q==="sed")return $.length>=3&&$.length<=4&&$[1]==="-n"&&/^(?:\d+,)?\d+p$/.test($[2]??"");return process.platform==="linux"&&(Q==="numfmt"||Q==="tac")}function y9($){let Z=[],Q=[],Y="",W=!1,G,X=!1,J=()=>{if(!W)return;Q.push(Y),Y="",W=!1},B=()=>{if(J(),Q.length===0)return!1;return Z.push(Q),Q=[],!0};for(let K=0;K<$.length;K++){let V=$[K]??"";if(G==="single"){if(V==="'")G=void 0;else Y+=V;continue}if(G==="double"){if(V==='"')G=void 0;else if(V==="$"||V==="`")return;else if(V==="\\"&&process.platform!=="win32"){let z=$[++K];if(z===void 0)return;if(z!==`
229
+ `),messageCount:Q.length}}import{z as bZ}from"zod";import{delimiter as BP,dirname as HP}from"path";import{accessSync as x3,constants as k3,statSync as f3}from"fs";import{dirname as C9,resolve as y9}from"path";function XP($,Z){let Q=Z==="win32"?"rg.exe":"rg",Y=y9(C9($),"..","mu-path",Q);try{if(!f3(Y).isFile())return;if(Z!=="win32")x3(Y,k3.X_OK);return Y}catch{return}}var JP={darwin:{arm64:"@mu-agent/ripgrep-darwin-arm64"},linux:{x64:"@mu-agent/ripgrep-linux-x64"},win32:{x64:"@mu-agent/ripgrep-windows-x64"}};function KP($=process.platform,Z=process.arch,Q=process.argv[1]?C9(y9(process.argv[1])):process.cwd(),Y=(W,G)=>Bun.resolveSync(W,G)){let W=JP[$]?.[Z];if(!W)return;try{let G=Y(`${W}/package.json`,Q),X=$==="win32"?"rg.exe":"rg",J=y9(C9(G),"vendor",X);if(!f3(J).isFile())return;if($!=="win32")x3(J,k3.X_OK);return J}catch{return}}function v3($=process.execPath,Z=process.platform,Q=(W)=>Bun.which(W),Y=()=>KP(Z,process.arch)){return XP($,Z)??Y()??Q("rg")??void 0}var VP=2000;function w$($,Z={}){if((Z.platform??process.platform)==="win32")return["powershell.exe","-NoLogo","-NoProfile",...Z.interactive?[]:["-NonInteractive"],"-Command",$];return["bash","-c",$]}function h3($){return["taskkill.exe","/PID",String($),"/T","/F"]}var b9;function zP(){if(b9===void 0){let $=v3(void 0,void 0,()=>null);b9=$?HP($):null}return b9??void 0}function CZ($={},Z=zP){let Q={...process.env,...$},Y=Z();if(!Y)return Q;let W=Object.keys(Q).find((X)=>X.toUpperCase()==="PATH")??"PATH",G=Q[W];return Q[W]=G?`${Y}${BP}${G}`:Y,Q}function N6($,Z){try{$.kill(Z)}catch{}}async function Q1($,Z,Q=globalThis.process.platform){if(Q!=="win32"){try{globalThis.process.kill(-$.pid,Z)}catch{N6($,Z)}return}try{let Y=Bun.spawn(h3($.pid),{stdin:"ignore",stdout:"ignore",stderr:"ignore",windowsHide:!0}),W,G=await Promise.race([Y.exited,new Promise((X)=>{W=setTimeout(()=>X(void 0),VP)})]).finally(()=>{if(W)clearTimeout(W)});if(G===void 0){try{Y.kill("SIGKILL")}catch{}N6($,Z)}else if(G!==0&&$.exitCode===null)N6($,Z)}catch{N6($,Z)}}var FP=new Set(["base64","cat","cd","cut","echo","expr","false","grep","head","id","ls","nl","paste","pwd","rev","seq","stat","tail","tr","true","uname","uniq","wc","which","whoami"]),LP=new Set(["-delete","-exec","-execdir","-fls","-fprint","-fprint0","-fprintf","-ok","-okdir"]),DP=["--hostname-bin","--pre"],qP=["-C","-c","-p","--config-env","--exec-path","--git-dir","--namespace","--paginate","--super-prefix","--work-tree"],UP=["--exec","--ext-diff","--output","--textconv"];function g3($){return($.split(/[\\/]/).at(-1)?.toLowerCase()??$.toLowerCase()).replace(/\.(?:exe|cmd|bat|com)$/i,"")}function AP($,Z){if($===Z||$.startsWith(`${Z}=`))return!0;return Z.length===2&&$.startsWith(Z)&&$.length>Z.length}function M6($,Z){return $.some((Q)=>Z.some((Y)=>AP(Q,Y)))}function NP($){let Z=[],Q=-1,Y=!1;for(let X=1;X<$.length;X++){let J=$[X]??"";if(Y){Z.push(J),Y=!1;continue}if(J==="--")return!1;if(J.startsWith("-")){if(Z.push(J),["-C","-c","--config-env","--exec-path","--git-dir","--namespace","--super-prefix","--work-tree"].includes(J))Y=!0;continue}Q=X;break}if(Q===-1||M6(Z,qP))return!1;let W=$[Q]?.toLowerCase(),G=$.slice(Q+1);if(!W||!["branch","diff","log","show","status"].includes(W))return!1;if(M6(G,UP))return!1;if(W!=="branch")return!0;if(G.length===0)return!0;return G.every((X)=>["--all","--list","--remotes","--show-current","--verbose","-a","-l","-r","-v","-vv"].includes(X)||X.startsWith("--format="))}function u3($){let Z=$[0]??"";if(Z.includes("/")||Z.includes("\\"))return!1;let Q=g3(Z);if(FP.has(Q)){if(Q!=="base64")return!0;return!M6($.slice(1),["-o","--output"])}if(Q==="find")return!$.slice(1).some((Y)=>LP.has(Y));if(Q==="rg")return!$.slice(1).some((Y)=>Y==="-z"||Y==="--search-zip")&&!M6($.slice(1),DP);if(Q==="git")return NP($);if(Q==="sed")return $.length>=3&&$.length<=4&&$[1]==="-n"&&/^(?:\d+,)?\d+p$/.test($[2]??"");return process.platform==="linux"&&(Q==="numfmt"||Q==="tac")}function _9($){let Z=[],Q=[],Y="",W=!1,G,X=!1,J=()=>{if(!W)return;Q.push(Y),Y="",W=!1},B=()=>{if(J(),Q.length===0)return!1;return Z.push(Q),Q=[],!0};for(let K=0;K<$.length;K++){let V=$[K]??"";if(G==="single"){if(V==="'")G=void 0;else Y+=V;continue}if(G==="double"){if(V==='"')G=void 0;else if(V==="$"||V==="`")return;else if(V==="\\"&&process.platform!=="win32"){let z=$[++K];if(z===void 0)return;if(z!==`
230
230
  `)Y+=z}else Y+=V;continue}if(V==="'"||V==='"'){G=V==="'"?"single":"double",W=!0,X=!1;continue}if(V==="\\"&&process.platform!=="win32"){let z=$[++K];if(z===void 0)return;if(z!==`
231
231
  `)W=!0,Y+=z,X=!1;continue}if(V==="$"||V==="`"||"<>(){}".includes(V))return;if(V==="#"&&!W)return;if(V===`
232
232
  `||V==="\r"){if(V==="\r"&&$[K+1]===`
233
- `)K++;if(!B())return;X=!0;continue}if(/\s/.test(V)){J();continue}if(V===";"){if(!B())return;X=!0;continue}if(V==="&"){if($[K+1]!=="&"||!B())return;K++,X=!1;continue}if(V==="|"){let z=$[K+1]==="|";if(!B())return;if(z)K++;X=!1;continue}W=!0,Y+=V,X=!1}if(G)return;if(J(),Q.length>0)Z.push(Q);return Z.length>0&&(Q.length>0||X)?Z:void 0}function v3($){let Z=y9($);return Z?.length&&Z.every(f3)?"inspect":"other"}function SZ($){return v3($)==="inspect"}function g3($){let Z=y9($);if(Z?.length!==1)return!1;let Q=Z[0];return Q!==void 0&&f3(Q)&&k3(Q[0]??"")==="rg"}function P1($,Z=30000,Q=1000){let Y=$.split(`
233
+ `)K++;if(!B())return;X=!0;continue}if(/\s/.test(V)){J();continue}if(V===";"){if(!B())return;X=!0;continue}if(V==="&"){if($[K+1]!=="&"||!B())return;K++,X=!1;continue}if(V==="|"){let z=$[K+1]==="|";if(!B())return;if(z)K++;X=!1;continue}W=!0,Y+=V,X=!1}if(G)return;if(J(),Q.length>0)Z.push(Q);return Z.length>0&&(Q.length>0||X)?Z:void 0}function m3($){let Z=_9($);return Z?.length&&Z.every(u3)?"inspect":"other"}function yZ($){return m3($)==="inspect"}function p3($){let Z=_9($);if(Z?.length!==1)return!1;let Q=Z[0];return Q!==void 0&&u3(Q)&&g3(Q[0]??"")==="rg"}function w1($,Z=30000,Q=1000){let Y=$.split(`
234
234
  `);if($.length<=Z&&Y.length<=Q)return{text:$,truncated:!1};if(Y.length>Q){let W=Y.slice(0,Math.floor(Q/2)),G=Y.slice(-Math.floor(Q/2)),X=Y.length-W.length-G.length,J=`${W.join(`
235
235
  `)}
236
236
 
237
237
  \u2026 [${X} lines omitted] \u2026
238
238
 
239
239
  ${G.join(`
240
- `)}`;return{text:J.length>Z?h3(J,Z):J,truncated:!0}}return{text:h3($,Z),truncated:!0}}function h3($,Z){let Q=Math.floor(Z/2),Y=$.length-Q*2;return`${$.slice(0,Q)}
240
+ `)}`;return{text:J.length>Z?l3(J,Z):J,truncated:!0}}return{text:l3($,Z),truncated:!0}}function l3($,Z){let Q=Math.floor(Z/2),Y=$.length-Q*2;return`${$.slice(0,Q)}
241
241
 
242
242
  \u2026 [${Y} characters omitted] \u2026
243
243
 
244
- ${$.slice(-Q)}`}function w1($,Z){return $.truncated?`${$.text}
244
+ ${$.slice(-Q)}`}function T1($,Z){return $.truncated?`${$.text}
245
245
 
246
- [output truncated \u2014 ${Z}. Narrow the request to see more.]`:$.text}var BP=120000,HP=600000,VP=80,zP=1000;async function u3($,Z,Q){let Y=$.getReader(),W=new TextDecoder,G=new C1;while(!0){let{done:J,value:B}=await Y.read();if(J)break;let K=W.decode(B,{stream:!0});if(!K)continue;G.append(K),Q?.(K,Z)}let X=W.decode();if(X)G.append(X),Q?.(X,Z);return G.read()}async function FP($,Z,Q,Y,W){let G=Bun.spawn(P$($),{cwd:Z,detached:process.platform!=="win32",env:EZ(),stdout:"pipe",stderr:"pipe",stdin:"ignore",windowsHide:!0}),X=!1,J,B=()=>{Z1(G,"SIGTERM"),J??=setTimeout(()=>Z1(G,"SIGKILL"),zP)},K=setTimeout(()=>{X=!0,B()},Y),V=B;Q.addEventListener("abort",V,{once:!0});try{let[z,F,D]=await Promise.all([u3(G.stdout,"stdout",W),u3(G.stderr,"stderr",W),G.exited]);return{stdout:z,stderr:F,exitCode:D,timedOut:X}}finally{if(clearTimeout(K),J)clearTimeout(J);Q.removeEventListener("abort",V)}}function LP($){let Z="",Q,Y=!1,W=()=>{if(Q)clearTimeout(Q);if(Q=void 0,!Z)return;$(Z),Z=""};return{push(G,X){if(X==="stderr"&&!Y)Z+=`${Z.endsWith(`
246
+ [output truncated \u2014 ${Z}. Narrow the request to see more.]`:$.text}var MP=120000,OP=600000,jP=80,PP=1000;async function c3($,Z,Q){let Y=$.getReader(),W=new TextDecoder,G=new y1;while(!0){let{done:J,value:B}=await Y.read();if(J)break;let K=W.decode(B,{stream:!0});if(!K)continue;G.append(K),Q?.(K,Z)}let X=W.decode();if(X)G.append(X),Q?.(X,Z);return G.read()}async function wP($,Z,Q,Y,W){let G=Bun.spawn(w$($),{cwd:Z,detached:process.platform!=="win32",env:CZ(),stdout:"pipe",stderr:"pipe",stdin:"ignore",windowsHide:!0}),X=!1,J,B=()=>{Q1(G,"SIGTERM"),J??=setTimeout(()=>Q1(G,"SIGKILL"),PP)},K=setTimeout(()=>{X=!0,B()},Y),V=B;Q.addEventListener("abort",V,{once:!0});try{let[z,F,D]=await Promise.all([c3(G.stdout,"stdout",W),c3(G.stderr,"stderr",W),G.exited]);return{stdout:z,stderr:F,exitCode:D,timedOut:X}}finally{if(clearTimeout(K),J)clearTimeout(J);Q.removeEventListener("abort",V)}}function TP($){let Z="",Q,Y=!1,W=()=>{if(Q)clearTimeout(Q);if(Q=void 0,!Z)return;$(Z),Z=""};return{push(G,X){if(X==="stderr"&&!Y)Z+=`${Z.endsWith(`
247
247
  `)||Z.length===0?"":`
248
248
  `}[stderr]
249
- `,Y=!0;Z+=G,Q??=setTimeout(W,VP)},flush:W}}function b9($){let Z=$.spawn??FP;return W0({name:"bash",changesState:({command:Q,run_in_background:Y})=>Y===!0||!SZ(Q),isConcurrencySafe:({command:Q,run_in_background:Y})=>Y!==!0&&SZ(Q),permissionScope:({command:Q,run_in_background:Y})=>Y!==!0&&SZ(Q)?"bash:inspect":"bash",permissionPattern:({command:Q})=>Q,description:"Run a command with the platform-native shell in the session root. For repository exploration, batch read-only inspection and narrow before reading. Keep searches inspection-safe: do not add printf/echo headings, pipe to sort, or redirect stderr; use rg --sort path, --no-messages, and repeated -e arguments. Keep each pattern simply quoted and never splice quote characters inside a shell regex. Read only relevant line ranges unless full context is needed. Use write/edit tools for file changes.",inputSchema:CZ.object({command:CZ.string().describe("The shell command to run"),description:CZ.string().optional().describe("A short description of what this command does, for the user"),timeoutMs:CZ.number().int().positive().max(HP).optional(),run_in_background:CZ.boolean().optional().describe("Start the command in the background and return a task id immediately")}),execute:async({command:Q,timeoutMs:Y,run_in_background:W},{signal:G,update:X})=>{if(G.aborted)return y("Aborted before the command started.");if(W){if(!$.processes)return y("Background execution is not available in this session.");let L=$.processes.start(Q);return{content:[{type:"text",text:`Started ${L.id} in the background. Use task_output to read it, task_kill to stop it.`}],details:{taskId:L.id,command:Q,background:!0}}}let J=Date.now(),B=LP(X),K;try{K=await Z(Q,$.root,G,Y??BP,B.push)}finally{B.flush()}let V=Date.now()-J,z=[];if(K.stdout.trim())z.push(K.stdout.trimEnd());if(K.stderr.trim())z.push(`[stderr]
250
- ${K.stderr.trimEnd()}`);let F=w1(P1(z.join(`
249
+ `,Y=!0;Z+=G,Q??=setTimeout(W,jP)},flush:W}}function x9($){let Z=$.spawn??wP;return W0({name:"bash",changesState:({command:Q,run_in_background:Y})=>Y===!0||!yZ(Q),isConcurrencySafe:({command:Q,run_in_background:Y})=>Y!==!0&&yZ(Q),permissionScope:({command:Q,run_in_background:Y})=>Y!==!0&&yZ(Q)?"bash:inspect":"bash",permissionPattern:({command:Q})=>Q,description:"Run a command with the platform-native shell in the session root. For repository exploration, batch read-only inspection and narrow before reading. Keep searches inspection-safe: do not add printf/echo headings, pipe to sort, or redirect stderr; use rg --sort path, --no-messages, and repeated -e arguments. Keep each pattern simply quoted and never splice quote characters inside a shell regex. Read only relevant line ranges unless full context is needed. Use write/edit tools for file changes.",inputSchema:bZ.object({command:bZ.string().describe("The shell command to run"),description:bZ.string().optional().describe("A short description of what this command does, for the user"),timeoutMs:bZ.number().int().positive().max(OP).optional(),run_in_background:bZ.boolean().optional().describe("Start the command in the background and return a task id immediately")}),execute:async({command:Q,timeoutMs:Y,run_in_background:W},{signal:G,update:X})=>{if(G.aborted)return y("Aborted before the command started.");if(W){if(!$.processes)return y("Background execution is not available in this session.");let L=$.processes.start(Q);return{content:[{type:"text",text:`Started ${L.id} in the background. Use task_output to read it, task_kill to stop it.`}],details:{taskId:L.id,command:Q,background:!0}}}let J=Date.now(),B=TP(X),K;try{K=await Z(Q,$.root,G,Y??MP,B.push)}finally{B.flush()}let V=Date.now()-J,z=[];if(K.stdout.trim())z.push(K.stdout.trimEnd());if(K.stderr.trim())z.push(`[stderr]
250
+ ${K.stderr.trimEnd()}`);let F=T1(w1(z.join(`
251
251
 
252
252
  `)||"(no output)"),"command produced a lot of output");if(K.timedOut)return{content:[{type:"text",text:`${F}
253
253
 
254
- [command timed out and was killed]`}],details:{command:Q,exitCode:K.exitCode,timedOut:!0,durationMs:V},isError:!0};if(K.exitCode===1&&g3(Q))return{content:[{type:"text",text:z.length>0?`${F}
254
+ [command timed out and was killed]`}],details:{command:Q,exitCode:K.exitCode,timedOut:!0,durationMs:V},isError:!0};if(K.exitCode===1&&p3(Q))return{content:[{type:"text",text:z.length>0?`${F}
255
255
 
256
256
  [no matches]`:"No matches"}],details:{command:Q,exitCode:K.exitCode,noMatches:!0,durationMs:V},isError:!1};let D=K.exitCode!==0;return{content:[{type:"text",text:D?`${F}
257
257
 
258
- [exit code ${K.exitCode}]`:F}],details:{command:Q,exitCode:K.exitCode,durationMs:V},isError:D}}})}import{mkdir as DP,readdir as UP,readFile as bZ,realpath as yZ,stat as a3,writeFile as r3}from"fs/promises";import{dirname as t3,isAbsolute as x9,relative as N6,resolve as w$,sep as o3}from"path";import{z as G0}from"zod";var m3=16777216;function T$($,Z){let Q=x9(Z)?w$(Z):w$($,Z),Y=N6(w$($),Q);if(Y===".."||Y.startsWith(`..${o3}`)||x9(Y))throw Error(`Path escapes the session root: ${Z}`);return Q}function k9($,Z,Q){let Y=N6($,Z);if(Y===".."||Y.startsWith(`..${o3}`)||x9(Y))throw Error(`Path escapes the session root through a symbolic link: ${Q}`)}async function A6($,Z){let Q=T$($,Z),Y=await yZ($),W=await yZ(Q);return k9(Y,W,Z),W}async function l3($,Z){let Q=T$($,Z),Y=await yZ($);try{let X=await yZ(Q);return k9(Y,X,Z),X}catch(X){if(X.code!=="ENOENT")throw X}let W=[],G=Q;for(;;)try{let X=await yZ(G);return k9(Y,X,Z),w$(X,...W.reverse())}catch(X){if(X.code!=="ENOENT")throw X;let J=t3(G);if(J===G)throw X;W.push(N6(J,G)),G=J}}function B0($,Z){let Q=N6(w$($),Z);return Q===""?".":Q}function p3($){let Z=$.split(`
259
- `);if(Z.at(-1)==="")Z.pop();return Z}function s3($,Z,Q){let Y=Z===void 0?[]:p3(Z),W=p3(Q),G=0;while(G<Y.length&&G<W.length&&Y[G]===W[G])G++;let X=0;while(X<Y.length-G&&X<W.length-G&&Y[Y.length-1-X]===W[W.length-1-X])X++;let J=Y.length-G-X,B=W.length-G-X;if(B===0&&J===0)return{path:$,added:B,removed:J,hunks:[]};let K=Math.min(3,G),V=Math.min(3,X),z=G-K,F=G-K,D=K+J+V,L=K+B+V,U=[`@@ -${Y.length===0?0:z+1},${D} +${W.length===0?0:F+1},${L} @@`,...Y.slice(z,G).map((q)=>` ${q}`),...Y.slice(G,Y.length-X).map((q)=>`-${q}`),...W.slice(G,W.length-X).map((q)=>`+${q}`),...W.slice(W.length-X,W.length-X+V).map((q)=>` ${q}`)];return{path:$,added:B,removed:J,hunks:U}}function f9($){return W0({name:"read",description:"Read a file from the filesystem. Returns contents with line numbers for grounded path:line citations. Read a file before editing it.",inputSchema:G0.object({path:G0.string().describe("Path to the file, absolute or relative to the session root"),offset:G0.number().int().min(1).optional().describe("First line to read (1-based)"),limit:G0.number().int().min(1).optional().describe("Maximum number of lines to read")}),isConcurrencySafe:()=>!0,execute:async({path:Z,offset:Q,limit:Y})=>{let W=T$($.root,Z),G;try{W=await A6($.root,Z);let D=await a3(W);if(D.size>m3)return y(`${B0($.root,W)} is ${D.size.toLocaleString()} bytes; read refuses files larger than ${m3.toLocaleString()} bytes. Use rg through the bounded bash tool to inspect it.`);G=await bZ(W,"utf8")}catch(D){let L=D.code;if(L==="ENOENT")return y(`File not found: ${B0($.root,W)}`);if(L==="EISDIR")return y(`${B0($.root,W)} is a directory \u2014 use ls instead.`);throw D}$.state.markRead(W,G);let X=G.split(`
260
- `),J=(Q??1)-1,K=X.slice(J,Y?J+Y:void 0).map((D,L)=>`${String(J+L+1).padStart(5)} ${D}`),V=w1(P1(K.join(`
258
+ [exit code ${K.exitCode}]`:F}],details:{command:Q,exitCode:K.exitCode,durationMs:V},isError:D}}})}import{mkdir as EP,readdir as IP,readFile as xZ,realpath as _Z,stat as s3,writeFile as e3}from"fs/promises";import{dirname as $K,isAbsolute as f9,relative as j6,resolve as T$,sep as ZK}from"path";import{z as G0}from"zod";var d3=16777216;function E$($,Z){let Q=f9(Z)?T$(Z):T$($,Z),Y=j6(T$($),Q);if(Y===".."||Y.startsWith(`..${ZK}`)||f9(Y))throw Error(`Path escapes the session root: ${Z}`);return Q}function v9($,Z,Q){let Y=j6($,Z);if(Y===".."||Y.startsWith(`..${ZK}`)||f9(Y))throw Error(`Path escapes the session root through a symbolic link: ${Q}`)}async function O6($,Z){let Q=E$($,Z),Y=await _Z($),W=await _Z(Q);return v9(Y,W,Z),W}async function i3($,Z){let Q=E$($,Z),Y=await _Z($);try{let X=await _Z(Q);return v9(Y,X,Z),X}catch(X){if(X.code!=="ENOENT")throw X}let W=[],G=Q;for(;;)try{let X=await _Z(G);return v9(Y,X,Z),T$(X,...W.reverse())}catch(X){if(X.code!=="ENOENT")throw X;let J=$K(G);if(J===G)throw X;W.push(j6(J,G)),G=J}}function B0($,Z){let Q=j6(T$($),Z);return Q===""?".":Q}function n3($){let Z=$.split(`
259
+ `);if(Z.at(-1)==="")Z.pop();return Z}function QK($,Z,Q){let Y=Z===void 0?[]:n3(Z),W=n3(Q),G=0;while(G<Y.length&&G<W.length&&Y[G]===W[G])G++;let X=0;while(X<Y.length-G&&X<W.length-G&&Y[Y.length-1-X]===W[W.length-1-X])X++;let J=Y.length-G-X,B=W.length-G-X;if(B===0&&J===0)return{path:$,added:B,removed:J,hunks:[]};let K=Math.min(3,G),V=Math.min(3,X),z=G-K,F=G-K,D=K+J+V,L=K+B+V,q=[`@@ -${Y.length===0?0:z+1},${D} +${W.length===0?0:F+1},${L} @@`,...Y.slice(z,G).map((U)=>` ${U}`),...Y.slice(G,Y.length-X).map((U)=>`-${U}`),...W.slice(G,W.length-X).map((U)=>`+${U}`),...W.slice(W.length-X,W.length-X+V).map((U)=>` ${U}`)];return{path:$,added:B,removed:J,hunks:q}}function h9($){return W0({name:"read",description:"Read a file from the filesystem. Returns contents with line numbers for grounded path:line citations. Read a file before editing it.",inputSchema:G0.object({path:G0.string().describe("Path to the file, absolute or relative to the session root"),offset:G0.number().int().min(1).optional().describe("First line to read (1-based)"),limit:G0.number().int().min(1).optional().describe("Maximum number of lines to read")}),isConcurrencySafe:()=>!0,execute:async({path:Z,offset:Q,limit:Y})=>{let W=E$($.root,Z),G;try{W=await O6($.root,Z);let D=await s3(W);if(D.size>d3)return y(`${B0($.root,W)} is ${D.size.toLocaleString()} bytes; read refuses files larger than ${d3.toLocaleString()} bytes. Use rg through the bounded bash tool to inspect it.`);G=await xZ(W,"utf8")}catch(D){let L=D.code;if(L==="ENOENT")return y(`File not found: ${B0($.root,W)}`);if(L==="EISDIR")return y(`${B0($.root,W)} is a directory \u2014 use ls instead.`);throw D}$.state.markRead(W,G);let X=G.split(`
260
+ `),J=(Q??1)-1,K=X.slice(J,Y?J+Y:void 0).map((D,L)=>`${String(J+L+1).padStart(5)} ${D}`),V=T1(w1(K.join(`
261
261
  `)),"file is large"),z=await $.instructions?.instructionsForPath(W);return{content:[{type:"text",text:[V||"(empty file)",z?.text].filter(Boolean).join(`
262
262
 
263
- `)}],details:{path:W,lines:X.length,...z&&z.sources.length>0?{loadedInstructions:z.sources}:{}}}}})}function v9($){return W0({name:"write",changesState:!0,description:"Write a complete file, creating it or replacing its contents. To change part of an existing file, prefer edit.",inputSchema:G0.object({path:G0.string().describe("Path to the file"),content:G0.string().describe("The complete file contents")}),permissionDetails:async({path:Z,content:Q})=>{let Y=await l3($.root,Z),W;try{W=await bZ(Y,"utf8")}catch{W=void 0}let G=B0($.root,Y);return{description:`${W===void 0?"Create":"Overwrite"} ${G}`,preview:{kind:"diff",file:s3(G,W,Q)}}},execute:async({path:Z,content:Q})=>{let Y=await l3($.root,Z),W=!0,G;try{G=await bZ(Y,"utf8")}catch(J){if(J.code==="ENOENT")W=!1;else throw J}if(W&&!$.state.hasRead(Y))return y(`Refusing to overwrite ${B0($.root,Y)} because it has not been read in this session. Read it first, then write.`);if($.state.hasRead(Y)&&$.state.isStale(Y,G))return y(`${B0($.root,Y)} changed on disk since you read it. Read it again before writing.`);await DP(t3(Y),{recursive:!0}),await r3(Y,Q,"utf8"),$.state.markWritten(Y);let X=Q.split(`
264
- `).length;return{content:[{type:"text",text:`${W?"Updated":"Created"} ${B0($.root,Y)} (${X} lines)`}],details:{path:Y,created:!W}}}})}var qP=G0.object({oldString:G0.string().describe("Exact text to replace, including indentation"),newString:G0.string().describe("Replacement text"),replaceAll:G0.boolean().optional().describe("Replace every occurrence of this oldString")}),_9=($)=>$.split(`
265
- `).length-1,c3="\uFEFF";function d3($){return $.startsWith(c3)?{bom:c3,text:$.slice(1)}:{bom:"",text:$}}var i3=($)=>$.replace(/\r?\n/g,`\r
266
- `),AP=($)=>$.replace(/\r\n/g,`
267
- `);function NP($,Z,Q){if(Z.includes(`
268
- `)&&!$.includes(Z)){for(let Y of[i3,AP]){let W=Y(Z);if(W!==Z&&$.includes(W))return{oldString:W,newString:Y(Q)}}return{oldString:Z,newString:Q}}return{oldString:Z,newString:$.includes(`\r
269
- `)?i3(Q):Q}}function n3($,Z,Q){let Y=(z)=>Z.length>1?`edits[${z}]: `:"",W=[];for(let[z,F]of Z.entries()){let{replaceAll:D}=F,{oldString:L,newString:U}=NP($,F.oldString,F.newString);if(L==="")return{ok:!1,message:`${Y(z)}oldString is empty \u2014 nothing to match.`};if(L===U)return{ok:!1,message:`${Y(z)}oldString and newString are identical \u2014 nothing to do.`};let q=$.split(L).length-1;if(q===0)return{ok:!1,message:`${Y(z)}oldString was not found in ${Q}. The text must match exactly, including whitespace and indentation.`};if(q>1&&!D)return{ok:!1,message:`${Y(z)}oldString appears ${q} times in ${Q}. Include more surrounding context to make it unique, or set replaceAll.`};let A=0;for(;;){let N=$.indexOf(L,A);if(N===-1)break;if(W.push({start:N,end:N+L.length,newString:U,index:z}),!D)break;A=N+L.length}}W.sort((z,F)=>z.start-F.start);let G;for(let z of W){if(G&&G.end>z.start)return{ok:!1,message:G.start===z.start&&G.end===z.end?`edits[${G.index}] and edits[${z.index}] match the same text in ${Q}. Drop the duplicate, or give each edit different text to match.`:`edits[${G.index}] and edits[${z.index}] overlap in ${Q}. Merge them into one edit, or target text that does not overlap.`};G=z}let X="",J=0,B=1,K=1,V=[];for(let z of W){let F=$.slice(J,z.start),D=_9(F);B+=D,K+=D,V.push({edit:z.index,oldLine:B,newLine:K}),X+=F+z.newString,B+=_9($.slice(z.start,z.end)),K+=_9(z.newString),J=z.end}return X+=$.slice(J),{ok:!0,updated:X,replacements:W.length,hunks:V}}function MP($){if(!$||typeof $!=="object"||Array.isArray($))return $;let Z={...$};if(typeof Z.edits==="string")try{let Q=JSON.parse(Z.edits);if(Array.isArray(Q))Z.edits=Q}catch{}if(typeof Z.oldString==="string"&&typeof Z.newString==="string"){let{oldString:Q,newString:Y,replaceAll:W,...G}=Z,X=Array.isArray(Z.edits)?Z.edits:[];return{...G,edits:[...X,{oldString:Q,newString:Y,...W===void 0?{}:{replaceAll:W}}]}}return Z}function g9($){return W0({name:"edit",changesState:!0,description:"Replace exact strings in a file. Each oldString must appear exactly once unless that edit sets replaceAll. Pass several edits to change one file in a single call. Read the file first.",inputSchema:G0.object({path:G0.string().describe("Path to the file"),edits:G0.array(qP).min(1).describe("One or more replacements applied in a single write. Each is matched against the file as you read it, not against the result of earlier edits in this call, and they must not overlap \u2014 merge changes that touch the same text into one edit.")}),coerceInput:MP,permissionDetails:async({path:Z,edits:Q})=>{let Y=await A6($.root,Z),W=B0($.root,Y),G;try{G=await bZ(Y,"utf8")}catch{return{description:`Edit ${W}`}}let{text:X}=d3(G),J=n3(X,Q,W);if(!J.ok)return{description:`Edit ${W}`};return{description:`Edit ${W}`,preview:{kind:"diff",file:s3(W,X,J.updated)}}},execute:async({path:Z,edits:Q})=>{let Y=T$($.root,Z);try{Y=await A6($.root,Z)}catch(z){if(z.code==="ENOENT")return y(`File not found: ${B0($.root,Y)}`);throw z}if(!$.state.hasRead(Y))return y(`Read ${B0($.root,Y)} before editing it, so you can see what you are changing.`);let W;try{W=await bZ(Y,"utf8")}catch(z){if(z.code==="ENOENT")return y(`File not found: ${B0($.root,Y)}`);throw z}if($.state.isStale(Y,W))return y(`${B0($.root,Y)} changed on disk since you read it. Read it again before editing.`);let{bom:G,text:X}=d3(W),J=n3(X,Q,B0($.root,Y));if(!J.ok)return y(J.message);let{updated:B,replacements:K,hunks:V}=J;return await r3(Y,G+B,"utf8"),$.state.markWritten(Y),{content:[{type:"text",text:`Edited ${B0($.root,Y)} (${K} replacement${K===1?"":"s"})`}],details:{path:Y,occurrences:K,edits:Q.length,hunks:V}}}})}function h9($){return W0({name:"ls",description:"List the entries of a directory.",inputSchema:G0.object({path:G0.string().optional().describe("Directory to list; defaults to the session root")}),isConcurrencySafe:()=>!0,execute:async({path:Z})=>{let Q=Z??".",Y=T$($.root,Q),W;try{Y=await A6($.root,Q),W=await UP(Y)}catch(X){if(X.code==="ENOENT")return y(`Directory not found: ${B0($.root,Y)}`);throw X}let G=await Promise.all(W.sort().map(async(X)=>{try{return(await a3(w$(Y,X))).isDirectory()?`${X}/`:X}catch{return X}}));return w1(P1(G.join(`
270
- `)||"(empty directory)"),"directory has many entries")}})}import{z as x0}from"zod";function u9($){return({command:Z,onOutput:Q,cols:Y,rows:W})=>{if(process.platform==="win32"){let L=Bun.spawn(P$(Z,{interactive:!0}),{cwd:$,detached:!1,env:EZ(),stdin:"pipe",stdout:"pipe",stderr:"pipe",windowsHide:!0}),U=async(N)=>{let j=N.getReader(),P=new TextDecoder;while(!0){let{done:S,value:g}=await j.read();if(S)break;let n=P.decode(g,{stream:!0});if(n)Q(n)}let M=P.decode();if(M)Q(M)},q=Promise.all([U(L.stdout),U(L.stderr)]),A;return{write:(N)=>{L.stdin.write(N),L.stdin.flush()},resize:()=>{},detach:()=>L.unref(),kill:()=>{Z1(L,"SIGTERM"),A=setTimeout(()=>{if(L.exitCode===null)Z1(L,"SIGKILL")},1000),A.unref?.()},exited:Promise.all([L.exited,q]).then(([N])=>N??null).finally(()=>{if(A)clearTimeout(A)})}}let G=new TextDecoder,X=!1,J,B=new Promise((L)=>{J=L}),K=()=>{if(X)return;X=!0;let L=G.decode();if(L)Q(L)},V=Bun.spawn(P$(Z,{interactive:!0}),{cwd:$,detached:!0,env:EZ({TERM:"xterm-256color"}),terminal:{cols:Y,rows:W,data:(L,U)=>{let q=G.decode(U,{stream:!0});if(q)Q(q)},exit:()=>{K(),J?.()}}}),z=V.terminal;if(!z)throw Error("Could not allocate a pseudo-terminal.");let F=Promise.all([V.exited,B]).then(([L])=>{if(K(),!z.closed)z.close();return L??null}),D;return{write:(L)=>void z.write(L),resize:(L,U)=>z.resize(L,U),detach:()=>{V.unref(),z.unref()},kill:()=>{Z1(V,"SIGTERM"),D=setTimeout(()=>{if(V.exitCode===null)Z1(V,"SIGKILL")},1000),D.unref?.()},exited:F.finally(()=>{if(D)clearTimeout(D)})}}}function m9($){let Z=W0({name:"task_output",description:"Read output from a background task. Returns only what is new since the last read unless full is set.",inputSchema:x0.object({taskId:x0.string(),full:x0.boolean().optional().describe("Return all output rather than only what is new")}),isConcurrencySafe:()=>!0,execute:({taskId:X,full:J})=>{let B=$.get(X);if(!B)return y(`No such task: ${X}`);let K=$.output(X,J?"start":"new"),V=B.status==="running"?"still running":`${B.status}${B.exitCode!==null?` (exit ${B.exitCode})`:""}`,z=K?.text.trim().length?K.text:"(no new output)";return{content:[{type:"text",text:`${w1(P1(z),"task output is large")}
263
+ `)}],details:{path:W,lines:X.length,...z&&z.sources.length>0?{loadedInstructions:z.sources}:{}}}}})}function g9($){return W0({name:"write",changesState:!0,description:"Write a complete file, creating it or replacing its contents. To change part of an existing file, prefer edit.",inputSchema:G0.object({path:G0.string().describe("Path to the file"),content:G0.string().describe("The complete file contents")}),permissionDetails:async({path:Z,content:Q})=>{let Y=await i3($.root,Z),W;try{W=await xZ(Y,"utf8")}catch{W=void 0}let G=B0($.root,Y);return{description:`${W===void 0?"Create":"Overwrite"} ${G}`,preview:{kind:"diff",file:QK(G,W,Q)}}},execute:async({path:Z,content:Q})=>{let Y=await i3($.root,Z),W=!0,G;try{G=await xZ(Y,"utf8")}catch(J){if(J.code==="ENOENT")W=!1;else throw J}if(W&&!$.state.hasRead(Y))return y(`Refusing to overwrite ${B0($.root,Y)} because it has not been read in this session. Read it first, then write.`);if($.state.hasRead(Y)&&$.state.isStale(Y,G))return y(`${B0($.root,Y)} changed on disk since you read it. Read it again before writing.`);await EP($K(Y),{recursive:!0}),await e3(Y,Q,"utf8"),$.state.markWritten(Y);let X=Q.split(`
264
+ `).length;return{content:[{type:"text",text:`${W?"Updated":"Created"} ${B0($.root,Y)} (${X} lines)`}],details:{path:Y,created:!W}}}})}var RP=G0.object({oldString:G0.string().describe("Exact text to replace, including indentation"),newString:G0.string().describe("Replacement text"),replaceAll:G0.boolean().optional().describe("Replace every occurrence of this oldString")}),k9=($)=>$.split(`
265
+ `).length-1,a3="\uFEFF";function r3($){return $.startsWith(a3)?{bom:a3,text:$.slice(1)}:{bom:"",text:$}}var t3=($)=>$.replace(/\r?\n/g,`\r
266
+ `),SP=($)=>$.replace(/\r\n/g,`
267
+ `);function CP($,Z,Q){if(Z.includes(`
268
+ `)&&!$.includes(Z)){for(let Y of[t3,SP]){let W=Y(Z);if(W!==Z&&$.includes(W))return{oldString:W,newString:Y(Q)}}return{oldString:Z,newString:Q}}return{oldString:Z,newString:$.includes(`\r
269
+ `)?t3(Q):Q}}function o3($,Z,Q){let Y=(z)=>Z.length>1?`edits[${z}]: `:"",W=[];for(let[z,F]of Z.entries()){let{replaceAll:D}=F,{oldString:L,newString:q}=CP($,F.oldString,F.newString);if(L==="")return{ok:!1,message:`${Y(z)}oldString is empty \u2014 nothing to match.`};if(L===q)return{ok:!1,message:`${Y(z)}oldString and newString are identical \u2014 nothing to do.`};let U=$.split(L).length-1;if(U===0)return{ok:!1,message:`${Y(z)}oldString was not found in ${Q}. The text must match exactly, including whitespace and indentation.`};if(U>1&&!D)return{ok:!1,message:`${Y(z)}oldString appears ${U} times in ${Q}. Include more surrounding context to make it unique, or set replaceAll.`};let A=0;for(;;){let N=$.indexOf(L,A);if(N===-1)break;if(W.push({start:N,end:N+L.length,newString:q,index:z}),!D)break;A=N+L.length}}W.sort((z,F)=>z.start-F.start);let G;for(let z of W){if(G&&G.end>z.start)return{ok:!1,message:G.start===z.start&&G.end===z.end?`edits[${G.index}] and edits[${z.index}] match the same text in ${Q}. Drop the duplicate, or give each edit different text to match.`:`edits[${G.index}] and edits[${z.index}] overlap in ${Q}. Merge them into one edit, or target text that does not overlap.`};G=z}let X="",J=0,B=1,K=1,V=[];for(let z of W){let F=$.slice(J,z.start),D=k9(F);B+=D,K+=D,V.push({edit:z.index,oldLine:B,newLine:K}),X+=F+z.newString,B+=k9($.slice(z.start,z.end)),K+=k9(z.newString),J=z.end}return X+=$.slice(J),{ok:!0,updated:X,replacements:W.length,hunks:V}}function yP($){if(!$||typeof $!=="object"||Array.isArray($))return $;let Z={...$};if(typeof Z.edits==="string")try{let Q=JSON.parse(Z.edits);if(Array.isArray(Q))Z.edits=Q}catch{}if(typeof Z.oldString==="string"&&typeof Z.newString==="string"){let{oldString:Q,newString:Y,replaceAll:W,...G}=Z,X=Array.isArray(Z.edits)?Z.edits:[];return{...G,edits:[...X,{oldString:Q,newString:Y,...W===void 0?{}:{replaceAll:W}}]}}return Z}function u9($){return W0({name:"edit",changesState:!0,description:"Replace exact strings in a file. Each oldString must appear exactly once unless that edit sets replaceAll. Pass several edits to change one file in a single call. Read the file first.",inputSchema:G0.object({path:G0.string().describe("Path to the file"),edits:G0.array(RP).min(1).describe("One or more replacements applied in a single write. Each is matched against the file as you read it, not against the result of earlier edits in this call, and they must not overlap \u2014 merge changes that touch the same text into one edit.")}),coerceInput:yP,permissionDetails:async({path:Z,edits:Q})=>{let Y=await O6($.root,Z),W=B0($.root,Y),G;try{G=await xZ(Y,"utf8")}catch{return{description:`Edit ${W}`}}let{text:X}=r3(G),J=o3(X,Q,W);if(!J.ok)return{description:`Edit ${W}`};return{description:`Edit ${W}`,preview:{kind:"diff",file:QK(W,X,J.updated)}}},execute:async({path:Z,edits:Q})=>{let Y=E$($.root,Z);try{Y=await O6($.root,Z)}catch(z){if(z.code==="ENOENT")return y(`File not found: ${B0($.root,Y)}`);throw z}if(!$.state.hasRead(Y))return y(`Read ${B0($.root,Y)} before editing it, so you can see what you are changing.`);let W;try{W=await xZ(Y,"utf8")}catch(z){if(z.code==="ENOENT")return y(`File not found: ${B0($.root,Y)}`);throw z}if($.state.isStale(Y,W))return y(`${B0($.root,Y)} changed on disk since you read it. Read it again before editing.`);let{bom:G,text:X}=r3(W),J=o3(X,Q,B0($.root,Y));if(!J.ok)return y(J.message);let{updated:B,replacements:K,hunks:V}=J;return await e3(Y,G+B,"utf8"),$.state.markWritten(Y),{content:[{type:"text",text:`Edited ${B0($.root,Y)} (${K} replacement${K===1?"":"s"})`}],details:{path:Y,occurrences:K,edits:Q.length,hunks:V}}}})}function m9($){return W0({name:"ls",description:"List the entries of a directory.",inputSchema:G0.object({path:G0.string().optional().describe("Directory to list; defaults to the session root")}),isConcurrencySafe:()=>!0,execute:async({path:Z})=>{let Q=Z??".",Y=E$($.root,Q),W;try{Y=await O6($.root,Q),W=await IP(Y)}catch(X){if(X.code==="ENOENT")return y(`Directory not found: ${B0($.root,Y)}`);throw X}let G=await Promise.all(W.sort().map(async(X)=>{try{return(await s3(T$(Y,X))).isDirectory()?`${X}/`:X}catch{return X}}));return T1(w1(G.join(`
270
+ `)||"(empty directory)"),"directory has many entries")}})}import{z as x0}from"zod";function p9($){return({command:Z,onOutput:Q,cols:Y,rows:W})=>{if(process.platform==="win32"){let L=Bun.spawn(w$(Z,{interactive:!0}),{cwd:$,detached:!1,env:CZ(),stdin:"pipe",stdout:"pipe",stderr:"pipe",windowsHide:!0}),q=async(N)=>{let j=N.getReader(),P=new TextDecoder;while(!0){let{done:I,value:v}=await j.read();if(I)break;let d=P.decode(v,{stream:!0});if(d)Q(d)}let M=P.decode();if(M)Q(M)},U=Promise.all([q(L.stdout),q(L.stderr)]),A;return{write:(N)=>{L.stdin.write(N),L.stdin.flush()},resize:()=>{},detach:()=>L.unref(),kill:()=>{Q1(L,"SIGTERM"),A=setTimeout(()=>{if(L.exitCode===null)Q1(L,"SIGKILL")},1000),A.unref?.()},exited:Promise.all([L.exited,U]).then(([N])=>N??null).finally(()=>{if(A)clearTimeout(A)})}}let G=new TextDecoder,X=!1,J,B=new Promise((L)=>{J=L}),K=()=>{if(X)return;X=!0;let L=G.decode();if(L)Q(L)},V=Bun.spawn(w$(Z,{interactive:!0}),{cwd:$,detached:!0,env:CZ({TERM:"xterm-256color"}),terminal:{cols:Y,rows:W,data:(L,q)=>{let U=G.decode(q,{stream:!0});if(U)Q(U)},exit:()=>{K(),J?.()}}}),z=V.terminal;if(!z)throw Error("Could not allocate a pseudo-terminal.");let F=Promise.all([V.exited,B]).then(([L])=>{if(K(),!z.closed)z.close();return L??null}),D;return{write:(L)=>void z.write(L),resize:(L,q)=>z.resize(L,q),detach:()=>{V.unref(),z.unref()},kill:()=>{Q1(V,"SIGTERM"),D=setTimeout(()=>{if(V.exitCode===null)Q1(V,"SIGKILL")},1000),D.unref?.()},exited:F.finally(()=>{if(D)clearTimeout(D)})}}}function l9($){let Z=W0({name:"task_output",description:"Read output from a background task. Returns only what is new since the last read unless full is set.",inputSchema:x0.object({taskId:x0.string(),full:x0.boolean().optional().describe("Return all output rather than only what is new")}),isConcurrencySafe:()=>!0,execute:({taskId:X,full:J})=>{let B=$.get(X);if(!B)return y(`No such task: ${X}`);let K=$.output(X,J?"start":"new"),V=B.status==="running"?"still running":`${B.status}${B.exitCode!==null?` (exit ${B.exitCode})`:""}`,z=K?.text.trim().length?K.text:"(no new output)";return{content:[{type:"text",text:`${T1(w1(z),"task output is large")}
271
271
 
272
272
  [${V}]`}],details:{taskId:X,status:B.status,exitCode:B.exitCode}}}}),Q=W0({name:"task_write_stdin",description:"Write to a background task's stdin \u2014 use for REPLs and interactive processes. Include a trailing newline to submit a line.",inputSchema:x0.object({taskId:x0.string(),data:x0.string()}),execute:({taskId:X,data:J})=>{if(!$.get(X))return y(`No such task: ${X}`);return $.writeStdin(X,J)?`Wrote ${J.length} characters to ${X}.`:y(`Task ${X} is not running.`)}}),Y=W0({name:"task_kill",description:"Stop a background task.",inputSchema:x0.object({taskId:x0.string()}),execute:({taskId:X})=>{if(!$.get(X))return y(`No such task: ${X}`);return $.kill(X)?`Killed ${X}.`:`Task ${X} had already stopped.`}}),W=W0({name:"task_detach",description:"Detach a background task so it is not stopped when the mu session exits. Use only for work that must outlive the session.",inputSchema:x0.object({taskId:x0.string()}),execute:({taskId:X})=>{if(!$.get(X))return y(`No such task: ${X}`);return $.detach(X)?`Detached ${X}. It will continue after this session exits.`:y(`Task ${X} is not running or was already detached.`)}}),G=W0({name:"task_list",description:"List background tasks started in this session.",inputSchema:x0.object({}),isConcurrencySafe:()=>!0,execute:()=>{let X=$.list();if(X.length===0)return"No background tasks.";return X.map((J)=>`${J.id} \xB7 ${J.status}${J.detached?" (detached)":""}${J.exitCode!==null?` (exit ${J.exitCode})`:""} \xB7 ${J.command}`).join(`
273
- `)}});return[Z,Q,Y,W,G]}import{z as _Z}from"zod";class M6{items=[];replace($){this.items=$}all(){return[...this.items]}}var OP={pending:"[ ]",in_progress:"[~]",completed:"[x]"};function e3($){if($.length===0)return"(no tasks)";return $.map((Z)=>`${OP[Z.status]} ${Z.content}`).join(`
274
- `)}function l9($){return W0({name:"todo",description:"Record and update the task list for multi-step work. Send the complete list every time; it replaces the previous one. Mark exactly one task in_progress while you work on it.",inputSchema:_Z.object({items:_Z.array(_Z.object({content:_Z.string().describe("What needs doing"),status:_Z.enum(["pending","in_progress","completed"])})).describe("The complete task list")}),execute:({items:Z})=>{let Q=Z.filter((G)=>G.status==="in_progress").length;$.replace(Z);let Y=e3(Z),W=Q>1?`
273
+ `)}});return[Z,Q,Y,W,G]}import{z as kZ}from"zod";class P6{items=[];replace($){this.items=$}all(){return[...this.items]}}var bP={pending:"[ ]",in_progress:"[~]",completed:"[x]"};function YK($){if($.length===0)return"(no tasks)";return $.map((Z)=>`${bP[Z.status]} ${Z.content}`).join(`
274
+ `)}function c9($){return W0({name:"todo",description:"Record and update the task list for multi-step work. Send the complete list every time; it replaces the previous one. Mark exactly one task in_progress while you work on it.",inputSchema:kZ.object({items:kZ.array(kZ.object({content:kZ.string().describe("What needs doing"),status:kZ.enum(["pending","in_progress","completed"])})).describe("The complete task list")}),execute:({items:Z})=>{let Q=Z.filter((G)=>G.status==="in_progress").length;$.replace(Z);let Y=YK(Z),W=Q>1?`
275
275
 
276
- [note: more than one task is in_progress \u2014 work on one at a time]`:"";return{content:[{type:"text",text:`${Y}${W}`}],details:{items:Z}}}})}async function TP($,Z){let Q=wP($,".mu","config.json");try{let Y=JSON.parse(await jP(Q,"utf8"));if(typeof Y!=="object"||Y===null||Array.isArray(Y))return Z(`Invalid user config at ${Q}: config must be an object`),{};let W=Y.instructions;if(W===void 0)return{};let G=H4.safeParse(W);if(!G.success)return Z(`Invalid user config at ${Q}: ${G.error.issues.map((z)=>`instructions.${z.path.join(".")}: ${z.message}`).join("; ")}`),{};let{enabled:X,fallbackFilenames:J,projectRootMarkers:B,imports:K,claudeRules:V}=G.data;return{...X!==void 0?{enabled:X}:{},...J!==void 0?{fallbackFilenames:J}:{},...B!==void 0?{projectRootMarkers:B}:{},...K!==void 0?{imports:K}:{},...V!==void 0?{claudeRules:V}:{}}}catch(Y){if(Y.code!=="ENOENT")Z(`Invalid user config at ${Q}: ${Y instanceof Error?Y.message:Y}`);return{}}}async function ZK($={}){let Z=$K($.root??process.cwd()),Q=$K($.home??PP()),Y=new W5,W=new M6,G=[],X=await Q5(Z,(L)=>G.push(L)),J=new Z5({root:Z,home:Q,...await TP(Q,(L)=>G.push(L)),...X.instructions??{},...$.instructions??{},...$.managedInstructionPaths?{managedPaths:$.managedInstructionPaths}:{}});await J.reload();let B={root:Z,state:Y,instructions:J},K=new aZ($.spawner??u9(Z),$.processEvents??{}),V=[f9(B),v9(B),g9(B),h9(B),b9({root:Z,processes:K,...$.spawn?{spawn:$.spawn}:{}}),l9(W),...m9(K)],z={attach:(L)=>{K.setEvents({onStarted:(U)=>{$.processEvents?.onStarted?.(U),L.emit({type:"task_started",taskId:U.id,command:U.command,background:!0})},onOutput:(U,q)=>{$.processEvents?.onOutput?.(U,q),L.emit({type:"task_output",taskId:U,chunk:q})},onExited:(U)=>{if($.processEvents?.onExited?.(U),L.emit({type:"task_exited",taskId:U.id,exitCode:U.exitCode,status:U.status==="killed"?"killed":"exited"}),!U.detached)L.followUp(a6(U))}})},resize:(L,U)=>K.resizeAll(L,U),stop:()=>K.stopAll(),shutdown:()=>K.killAll()},F,D=()=>{if(!F)F=G4(Z);return F};return{name:"coding",toolset:V,promptFor:F4,permissionDefaults:V4(K4,X.permissions),permissionModes:B4,defaultPermissionMode:"default",rememberPermission:(L,U)=>z4(Z,L,U),environment:D,contextMessages:async()=>[X4(await D())],refreshContext:(L,U)=>J.refreshedMessages(L,U.sessionId),diagnostics:[...G,...J.snapshot.diagnostics.map((L)=>L.path?`${L.path}: ${L.message}`:L.message)],commands:[{name:"instructions",description:"Show or reload instruction files",run:async(L)=>{let U=L.args.trim();if(U&&U!=="reload")return{handled:!0,message:"Usage: /instructions [reload]"};if(U==="reload")await J.reload({resetNested:!0});return{handled:!0,message:J.formatStatus(U==="reload"?"instructions reloaded":"instructions")}}},{name:"reload",description:"Reload instruction files",run:async()=>{return await J.reload({resetNested:!0}),{handled:!0,message:J.formatStatus("instructions reloaded")}}}],carryoverExtractor:()=>({readFiles:Y.readFiles(),modifiedFiles:Y.modifiedFiles(),todos:W.all()}),scope:()=>Z.replace(/[^A-Za-z0-9]+/g,"-").replace(/^-|-$/g,""),checkpointProvider:new sZ({root:Z}),runtime:z,fileState:Y,todos:W,processes:K,instructions:J}}function IP($){if(typeof $.model==="string")return $.model;if($.model)return`${$.model.provider}/${$.model.id}`;return e1()}async function m_($={}){let{profile:Z,profileOptions:Q,...Y}=$;if(!Z)return new n$(Y);let W=Z==="coding"?await ZK(Q):Z;return new n$(await T9(W,IP(Y),Y))}export{Q$ as userMessage,rQ as totalTokens,W0 as tool,CV as toCommand,i0 as thinkingLevelForModel,OQ as textResult,$$ as supportedThinkingLevels,MY as substituteArguments,D4 as structuredOutputTool,U4 as structuredOutputPrompt,dH as storedAuthProviders,hj as skillsExtension,I3 as skillListing,yj as shellHooksExtension,aj as sessionToMarkdown,pH as saveApiKey,DY as resolveExtensionFiles,A4 as renderAuthPage,cH as removeStoredCredential,BV as registryWithCoreCommands,WQ as registerProvider,zQ as registerModels,VQ as refreshModels,r0 as readAuthFile,k6 as providerHasCredentials,iH as preferredAuthProvider,OY as parseMarkdownCommand,z5 as parseFrontmatter,T9 as optionsFromProfile,Rj as mcpExtension,WV as loginXai,JV as loginOpenRouter,ZV as loginOpenAI,YV as loginKimiCoding,GV as loginGitHubCopilot,R9 as loadSkill,Ej as loadProfile,Tj as loadMcpConfig,SV as loadMarkdownCommands,qV as loadExtensions,x6 as listModels,mZ as findModel,y as errorResult,vj as discoverSkills,HQ as discoverModels,v6 as defaultThinkingLevel,gj as defaultSkillRoots,e1 as defaultModelRef,LQ as defaultModelId,P4 as defaultAuthFile,g$ as customMessage,eH as createCredentialResolver,m_ as createAgent,LY as coreCommands,ZK as codingProfile,L4 as checkBudget,m0 as builtinProviderConfigs,G5 as authSuccessPage,b1 as authErrorPage,o as SessionTree,Y$ as STRUCTURED_OUTPUT_TOOL,u$ as MemorySessionStore,AY as FileSessionStore,m6 as ExtensionHost,I1 as CommandRegistry,n$ as Agent};
276
+ [note: more than one task is in_progress \u2014 work on one at a time]`:"";return{content:[{type:"text",text:`${Y}${W}`}],details:{items:Z}}}})}async function fP($,Z){let Q=kP($,".mu","config.json");try{let Y=JSON.parse(await _P(Q,"utf8"));if(typeof Y!=="object"||Y===null||Array.isArray(Y))return Z(`Invalid user config at ${Q}: config must be an object`),{};let W=Y.instructions;if(W===void 0)return{};let G=z4.safeParse(W);if(!G.success)return Z(`Invalid user config at ${Q}: ${G.error.issues.map((z)=>`instructions.${z.path.join(".")}: ${z.message}`).join("; ")}`),{};let{enabled:X,fallbackFilenames:J,projectRootMarkers:B,imports:K,claudeRules:V}=G.data;return{...X!==void 0?{enabled:X}:{},...J!==void 0?{fallbackFilenames:J}:{},...B!==void 0?{projectRootMarkers:B}:{},...K!==void 0?{imports:K}:{},...V!==void 0?{claudeRules:V}:{}}}catch(Y){if(Y.code!=="ENOENT")Z(`Invalid user config at ${Q}: ${Y instanceof Error?Y.message:Y}`);return{}}}async function GK($={}){let Z=WK($.root??process.cwd()),Q=WK($.home??xP()),Y=new J5,W=new P6,G=[],X=await G5(Z,(L)=>G.push(L)),J=new W5({root:Z,home:Q,...await fP(Q,(L)=>G.push(L)),...X.instructions??{},...$.instructions??{},...$.managedInstructionPaths?{managedPaths:$.managedInstructionPaths}:{}});await J.reload();let B={root:Z,state:Y,instructions:J},K=new oZ($.spawner??p9(Z),$.processEvents??{}),V=[h9(B),g9(B),u9(B),m9(B),x9({root:Z,processes:K,...$.spawn?{spawn:$.spawn}:{}}),c9(W),...l9(K)],z={attach:(L)=>{K.setEvents({onStarted:(q)=>{$.processEvents?.onStarted?.(q),L.emit({type:"task_started",taskId:q.id,command:q.command,background:!0})},onOutput:(q,U)=>{$.processEvents?.onOutput?.(q,U),L.emit({type:"task_output",taskId:q,chunk:U})},onExited:(q)=>{if($.processEvents?.onExited?.(q),L.emit({type:"task_exited",taskId:q.id,exitCode:q.exitCode,status:q.status==="killed"?"killed":"exited"}),!q.detached)L.followUp(t6(q))}})},resize:(L,q)=>K.resizeAll(L,q),stop:()=>K.stopAll(),shutdown:()=>K.killAll()},F,D=()=>{if(!F)F=J4(Z);return F};return{name:"coding",toolset:V,promptFor:D4,permissionDefaults:F4(H4,X.permissions),permissionModes:V4,defaultPermissionMode:"default",rememberPermission:(L,q)=>L4(Z,L,q),environment:D,contextMessages:async()=>[K4(await D())],refreshContext:(L,q)=>J.refreshedMessages(L,q.sessionId),diagnostics:[...G,...J.snapshot.diagnostics.map((L)=>L.path?`${L.path}: ${L.message}`:L.message)],commands:[{name:"instructions",description:"Show or reload instruction files",run:async(L)=>{let q=L.args.trim();if(q&&q!=="reload")return{handled:!0,message:"Usage: /instructions [reload]"};if(q==="reload")await J.reload({resetNested:!0});return{handled:!0,message:J.formatStatus(q==="reload"?"instructions reloaded":"instructions")}}},{name:"reload",description:"Reload instruction files",run:async()=>{return await J.reload({resetNested:!0}),{handled:!0,message:J.formatStatus("instructions reloaded")}}}],carryoverExtractor:()=>({readFiles:Y.readFiles(),modifiedFiles:Y.modifiedFiles(),todos:W.all()}),scope:()=>Z.replace(/[^A-Za-z0-9]+/g,"-").replace(/^-|-$/g,""),checkpointProvider:new Z5({root:Z}),runtime:z,fileState:Y,todos:W,processes:K,instructions:J}}function vP($){if(typeof $.model==="string")return $.model;if($.model)return`${$.model.provider}/${$.model.id}`;return $$()}async function Qx($={}){let{profile:Z,profileOptions:Q,...Y}=$;if(!Z)return new r$(Y);let W=Z==="coding"?await GK(Q):Z;return new r$(await I9(W,vP(Y),Y))}export{Y$ as userMessage,eQ as totalTokens,W0 as tool,mV as toCommand,n0 as thinkingLevelForModel,TQ as textResult,Z$ as supportedThinkingLevels,wY as substituteArguments,U4 as structuredOutputTool,A4 as structuredOutputPrompt,QV as storedAuthProviders,tj as skillsExtension,C3 as skillListing,pj as shellHooksExtension,GP as sessionToMarkdown,$V as saveApiKey,NY as resolveExtensionFiles,M4 as renderAuthPage,ZV as removeStoredCredential,MV as registryWithCoreCommands,KQ as registerProvider,qQ as registerModels,DQ as refreshModels,t0 as readAuthFile,v6 as providerHasCredentials,f0 as providerConfig,YV as preferredAuthProvider,TY as parseMarkdownCommand,D5 as parseFrontmatter,I9 as optionsFromProfile,hj as mcpExtension,DV as loginXai,AV as loginOpenRouter,zV as loginOpenAI,LV as loginKimiCoding,qV as loginGitHubCopilot,S9 as loadSkill,gj as loadProfile,fj as loadMcpConfig,uV as loadMarkdownCommands,RV as loadExtensions,f6 as listModels,cZ as findModel,y as errorResult,aj as discoverSkills,LQ as discoverModels,g6 as defaultThinkingLevel,rj as defaultSkillRoots,$$ as defaultModelRef,AQ as defaultModelId,T4 as defaultAuthFile,u$ as customMessage,HV as createCredentialResolver,Qx as createAgent,AY as coreCommands,GK as codingProfile,q4 as checkBudget,l0 as builtinProviderConfigs,K5 as authSuccessPage,_1 as authErrorPage,o as SessionTree,W$ as STRUCTURED_OUTPUT_TOOL,p$ as MemorySessionStore,jY as FileSessionStore,l6 as ExtensionHost,I1 as CommandRegistry,r$ as Agent};