@augmentcode/auggie 1.2.0-prerelease.202609150411 → 1.2.0-prerelease.202609150921

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.
@@ -1,11 +1,11 @@
1
- var oT=Object.create;var Du=Object.defineProperty;var iT=Object.getOwnPropertyDescriptor;var sT=Object.getOwnPropertyNames;var aT=Object.getPrototypeOf,cT=Object.prototype.hasOwnProperty;var wr=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var C=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},Lu=(t,e)=>{for(var r in e)Du(t,r,{get:e[r],enumerable:!0})},uT=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of sT(e))!cT.call(t,o)&&o!==r&&Du(t,o,{get:()=>e[o],enumerable:!(n=iT(e,o))||n.enumerable});return t};var Ys=(t,e,r)=>(r=t!=null?oT(aT(t)):{},uT(e||!t||!t.__esModule?Du(r,"default",{value:t,enumerable:!0}):r,t));var Xi=C(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.regexpCode=J.getEsmExportName=J.getProperty=J.safeStringify=J.stringify=J.strConcat=J.addCodeArg=J.str=J._=J.nil=J._Code=J.Name=J.IDENTIFIER=J._CodeOrName=void 0;var Ji=class{};J._CodeOrName=Ji;J.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Rn=class extends Ji{constructor(e){if(super(),!J.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};J.Name=Rn;var St=class extends Ji{constructor(e){super(),this._items=typeof e=="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((r,n)=>(n instanceof Rn&&(r[n.str]=(r[n.str]||0)+1),r),{})}};J._Code=St;J.nil=new St("");function Cb(t,...e){let r=[t[0]],n=0;for(;n<e.length;)vf(r,e[n]),r.push(t[++n]);return new St(r)}J._=Cb;var yf=new St("+");function Pb(t,...e){let r=[Yi(t[0])],n=0;for(;n<e.length;)r.push(yf),vf(r,e[n]),r.push(yf,Yi(t[++n]));return Gz(r),new St(r)}J.str=Pb;function vf(t,e){e instanceof St?t.push(...e._items):e instanceof Rn?t.push(e):t.push(Wz(e))}J.addCodeArg=vf;function Gz(t){let e=1;for(;e<t.length-1;){if(t[e]===yf){let r=Zz(t[e-1],t[e+1]);if(r!==void 0){t.splice(e-1,3,r);continue}t[e++]="+"}e++}}function Zz(t,e){if(e==='""')return t;if(t==='""')return e;if(typeof t=="string")return e instanceof Rn||t[t.length-1]!=='"'?void 0:typeof e!="string"?`${t.slice(0,-1)}${e}"`:e[0]==='"'?t.slice(0,-1)+e.slice(1):void 0;if(typeof e=="string"&&e[0]==='"'&&!(t instanceof Rn))return`"${t}${e.slice(1)}`}function Bz(t,e){return e.emptyStr()?t:t.emptyStr()?e:Pb`${t}${e}`}J.strConcat=Bz;function Wz(t){return typeof t=="number"||typeof t=="boolean"||t===null?t:Yi(Array.isArray(t)?t.join(","):t)}function Vz(t){return new St(Yi(t))}J.stringify=Vz;function Yi(t){return JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}J.safeStringify=Yi;function Kz(t){return typeof t=="string"&&J.IDENTIFIER.test(t)?new St(`.${t}`):Cb`[${t}]`}J.getProperty=Kz;function Jz(t){if(typeof t=="string"&&J.IDENTIFIER.test(t))return new St(`${t}`);throw new Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}J.getEsmExportName=Jz;function Yz(t){return new St(t.toString())}J.regexpCode=Yz});var wf=C(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.ValueScope=et.ValueScopeName=et.Scope=et.varKinds=et.UsedValueState=void 0;var Qe=Xi(),_f=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},dc;(function(t){t[t.Started=0]="Started",t[t.Completed=1]="Completed"})(dc||(et.UsedValueState=dc={}));et.varKinds={const:new Qe.Name("const"),let:new Qe.Name("let"),var:new Qe.Name("var")};var lc=class{constructor({prefixes:e,parent:r}={}){this._names={},this._prefixes=e,this._parent=r}toName(e){return e instanceof Qe.Name?e:this.name(e)}name(e){return new Qe.Name(this._newName(e))}_newName(e){let r=this._names[e]||this._nameGroup(e);return`${e}${r.index++}`}_nameGroup(e){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(e)||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};et.Scope=lc;var fc=class extends Qe.Name{constructor(e,r){super(r),this.prefix=e}setValue(e,{property:r,itemIndex:n}){this.value=e,this.scopePath=(0,Qe._)`.${new Qe.Name(r)}[${n}]`}};et.ValueScopeName=fc;var Xz=(0,Qe._)`\n`,Sf=class extends lc{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?Xz:Qe.nil}}get(){return this._scope}name(e){return new fc(e,this._newName(e))}value(e,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(e),{prefix:i}=o,s=(n=r.key)!==null&&n!==void 0?n:r.ref,a=this._values[i];if(a){let d=a.get(s);if(d)return d}else a=this._values[i]=new Map;a.set(s,o);let c=this._scope[i]||(this._scope[i]=[]),u=c.length;return c[u]=r.ref,o.setValue(r,{property:i,itemIndex:u}),o}getValue(e,r){let n=this._values[e];if(n)return n.get(r)}scopeRefs(e,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Qe._)`${e}${n.scopePath}`})}scopeCode(e=this._values,r,n){return this._reduceValues(e,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(e,r,n={},o){let i=Qe.nil;for(let s in e){let a=e[s];if(!a)continue;let c=n[s]=n[s]||new Map;a.forEach(u=>{if(c.has(u))return;c.set(u,dc.Started);let d=r(u);if(d){let l=this.opts.es5?et.varKinds.var:et.varKinds.const;i=(0,Qe._)`${i}${l} ${u} = ${d};${this.opts._n}`}else if(d=o?.(u))i=(0,Qe._)`${i}${d}${this.opts._n}`;else throw new _f(u);c.set(u,dc.Completed)})}return i}};et.ValueScope=Sf});var L=C(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.or=F.and=F.not=F.CodeGen=F.operators=F.varKinds=F.ValueScopeName=F.ValueScope=F.Scope=F.Name=F.regexpCode=F.stringify=F.getProperty=F.nil=F.strConcat=F.str=F._=void 0;var G=Xi(),$t=wf(),qr=Xi();Object.defineProperty(F,"_",{enumerable:!0,get:function(){return qr._}});Object.defineProperty(F,"str",{enumerable:!0,get:function(){return qr.str}});Object.defineProperty(F,"strConcat",{enumerable:!0,get:function(){return qr.strConcat}});Object.defineProperty(F,"nil",{enumerable:!0,get:function(){return qr.nil}});Object.defineProperty(F,"getProperty",{enumerable:!0,get:function(){return qr.getProperty}});Object.defineProperty(F,"stringify",{enumerable:!0,get:function(){return qr.stringify}});Object.defineProperty(F,"regexpCode",{enumerable:!0,get:function(){return qr.regexpCode}});Object.defineProperty(F,"Name",{enumerable:!0,get:function(){return qr.Name}});var gc=wf();Object.defineProperty(F,"Scope",{enumerable:!0,get:function(){return gc.Scope}});Object.defineProperty(F,"ValueScope",{enumerable:!0,get:function(){return gc.ValueScope}});Object.defineProperty(F,"ValueScopeName",{enumerable:!0,get:function(){return gc.ValueScopeName}});Object.defineProperty(F,"varKinds",{enumerable:!0,get:function(){return gc.varKinds}});F.operators={GT:new G._Code(">"),GTE:new G._Code(">="),LT:new G._Code("<"),LTE:new G._Code("<="),EQ:new G._Code("==="),NEQ:new G._Code("!=="),NOT:new G._Code("!"),OR:new G._Code("||"),AND:new G._Code("&&"),ADD:new G._Code("+")};var dr=class{optimizeNodes(){return this}optimizeNames(e,r){return this}},bf=class extends dr{constructor(e,r,n){super(),this.varKind=e,this.name=r,this.rhs=n}render({es5:e,_n:r}){let n=e?$t.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(e,r){if(e[this.name.str])return this.rhs&&(this.rhs=bo(this.rhs,e,r)),this}get names(){return this.rhs instanceof G._CodeOrName?this.rhs.names:{}}},pc=class extends dr{constructor(e,r,n){super(),this.lhs=e,this.rhs=r,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,r){if(!(this.lhs instanceof G.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=bo(this.rhs,e,r),this}get names(){let e=this.lhs instanceof G.Name?{}:{...this.lhs.names};return mc(e,this.rhs)}},Rf=class extends pc{constructor(e,r,n,o){super(e,n,o),this.op=r}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},Cf=class extends dr{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},Pf=class extends dr{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}},xf=class extends dr{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},kf=class extends dr{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,r){return this.code=bo(this.code,e,r),this}get names(){return this.code instanceof G._CodeOrName?this.code.names:{}}},Qi=class extends dr{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((r,n)=>r+n.render(e),"")}optimizeNodes(){let{nodes:e}=this,r=e.length;for(;r--;){let n=e[r].optimizeNodes();Array.isArray(n)?e.splice(r,1,...n):n?e[r]=n:e.splice(r,1)}return e.length>0?this:void 0}optimizeNames(e,r){let{nodes:n}=this,o=n.length;for(;o--;){let i=n[o];i.optimizeNames(e,r)||(Qz(e,i.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,r)=>xn(e,r.names),{})}},lr=class extends Qi{render(e){return"{"+e._n+super.render(e)+"}"+e._n}},Ef=class extends Qi{},wo=class extends lr{};wo.kind="else";var Cn=class t extends lr{constructor(e,r){super(r),this.condition=e}render(e){let r=`if(${this.condition})`+super.render(e);return this.else&&(r+="else "+this.else.render(e)),r}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new wo(n):n}if(r)return e===!1?r instanceof t?r:r.nodes:this.nodes.length?this:new t(xb(e),r instanceof t?[r]:r.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(e,r),!!(super.optimizeNames(e,r)||this.else))return this.condition=bo(this.condition,e,r),this}get names(){let e=super.names;return mc(e,this.condition),this.else&&xn(e,this.else.names),e}};Cn.kind="if";var Pn=class extends lr{};Pn.kind="for";var Tf=class extends Pn{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iteration=bo(this.iteration,e,r),this}get names(){return xn(super.names,this.iteration.names)}},Af=class extends Pn{constructor(e,r,n,o){super(),this.varKind=e,this.name=r,this.from=n,this.to=o}render(e){let r=e.es5?$t.varKinds.var:this.varKind,{name:n,from:o,to:i}=this;return`for(${r} ${n}=${o}; ${n}<${i}; ${n}++)`+super.render(e)}get names(){let e=mc(super.names,this.from);return mc(e,this.to)}},hc=class extends Pn{constructor(e,r,n,o){super(),this.loop=e,this.varKind=r,this.name=n,this.iterable=o}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iterable=bo(this.iterable,e,r),this}get names(){return xn(super.names,this.iterable.names)}},es=class extends lr{constructor(e,r,n){super(),this.name=e,this.args=r,this.async=n}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}};es.kind="func";var ts=class extends Qi{render(e){return"return "+super.render(e)}};ts.kind="return";var Mf=class extends lr{render(e){let r="try"+super.render(e);return this.catch&&(r+=this.catch.render(e)),this.finally&&(r+=this.finally.render(e)),r}optimizeNodes(){var e,r;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(e,r){var n,o;return super.optimizeNames(e,r),(n=this.catch)===null||n===void 0||n.optimizeNames(e,r),(o=this.finally)===null||o===void 0||o.optimizeNames(e,r),this}get names(){let e=super.names;return this.catch&&xn(e,this.catch.names),this.finally&&xn(e,this.finally.names),e}},rs=class extends lr{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};rs.kind="catch";var ns=class extends lr{render(e){return"finally"+super.render(e)}};ns.kind="finally";var $f=class{constructor(e,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
2
- `:""},this._extScope=e,this._scope=new $t.Scope({parent:e}),this._nodes=[new Ef]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,r){let n=this._extScope.value(e,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,r){return this._extScope.getValue(e,r)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,r,n,o){let i=this._scope.toName(r);return n!==void 0&&o&&(this._constants[i.str]=n),this._leafNode(new bf(e,i,n)),i}const(e,r,n){return this._def($t.varKinds.const,e,r,n)}let(e,r,n){return this._def($t.varKinds.let,e,r,n)}var(e,r,n){return this._def($t.varKinds.var,e,r,n)}assign(e,r,n){return this._leafNode(new pc(e,r,n))}add(e,r){return this._leafNode(new Rf(e,F.operators.ADD,r))}code(e){return typeof e=="function"?e():e!==G.nil&&this._leafNode(new kf(e)),this}object(...e){let r=["{"];for(let[n,o]of e)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,G.addCodeArg)(r,o));return r.push("}"),new G._Code(r)}if(e,r,n){if(this._blockNode(new Cn(e)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new Cn(e))}else(){return this._elseNode(new wo)}endIf(){return this._endBlockNode(Cn,wo)}_for(e,r){return this._blockNode(e),r&&this.code(r).endFor(),this}for(e,r){return this._for(new Tf(e),r)}forRange(e,r,n,o,i=this.opts.es5?$t.varKinds.var:$t.varKinds.let){let s=this._scope.toName(e);return this._for(new Af(i,s,r,n),()=>o(s))}forOf(e,r,n,o=$t.varKinds.const){let i=this._scope.toName(e);if(this.opts.es5){let s=r instanceof G.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,G._)`${s}.length`,a=>{this.var(i,(0,G._)`${s}[${a}]`),n(i)})}return this._for(new hc("of",o,i,r),()=>n(i))}forIn(e,r,n,o=this.opts.es5?$t.varKinds.var:$t.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,G._)`Object.keys(${r})`,n);let i=this._scope.toName(e);return this._for(new hc("in",o,i,r),()=>n(i))}endFor(){return this._endBlockNode(Pn)}label(e){return this._leafNode(new Cf(e))}break(e){return this._leafNode(new Pf(e))}return(e){let r=new ts;if(this._blockNode(r),this.code(e),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(ts)}try(e,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Mf;if(this._blockNode(o),this.code(e),r){let i=this.name("e");this._currNode=o.catch=new rs(i),r(i)}return n&&(this._currNode=o.finally=new ns,this.code(n)),this._endBlockNode(rs,ns)}throw(e){return this._leafNode(new xf(e))}block(e,r){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(r),this}endBlock(e){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||e!==void 0&&n!==e)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=r,this}func(e,r=G.nil,n,o){return this._blockNode(new es(e,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(es)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,r){let n=this._currNode;if(n instanceof e||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${e.kind}/${r.kind}`:e.kind}"`)}_elseNode(e){let r=this._currNode;if(!(r instanceof Cn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let r=this._nodes;r[r.length-1]=e}};F.CodeGen=$f;function xn(t,e){for(let r in e)t[r]=(t[r]||0)+(e[r]||0);return t}function mc(t,e){return e instanceof G._CodeOrName?xn(t,e.names):t}function bo(t,e,r){if(t instanceof G.Name)return n(t);if(!o(t))return t;return new G._Code(t._items.reduce((i,s)=>(s instanceof G.Name&&(s=n(s)),s instanceof G._Code?i.push(...s._items):i.push(s),i),[]));function n(i){let s=r[i.str];return s===void 0||e[i.str]!==1?i:(delete e[i.str],s)}function o(i){return i instanceof G._Code&&i._items.some(s=>s instanceof G.Name&&e[s.str]===1&&r[s.str]!==void 0)}}function Qz(t,e){for(let r in e)t[r]=(t[r]||0)-(e[r]||0)}function xb(t){return typeof t=="boolean"||typeof t=="number"||t===null?!t:(0,G._)`!${If(t)}`}F.not=xb;var eN=kb(F.operators.AND);function tN(...t){return t.reduce(eN)}F.and=tN;var rN=kb(F.operators.OR);function nN(...t){return t.reduce(rN)}F.or=nN;function kb(t){return(e,r)=>e===G.nil?r:r===G.nil?e:(0,G._)`${If(e)} ${t} ${If(r)}`}function If(t){return t instanceof G.Name?t:(0,G._)`(${t})`}});var B=C(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});U.checkStrictMode=U.getErrorPath=U.Type=U.useFunc=U.setEvaluated=U.evaluatedPropsToName=U.mergeEvaluated=U.eachItem=U.unescapeJsonPointer=U.escapeJsonPointer=U.escapeFragment=U.unescapeFragment=U.schemaRefOrVal=U.schemaHasRulesButRef=U.schemaHasRules=U.checkUnknownRules=U.alwaysValidSchema=U.toHash=void 0;var se=L(),oN=Xi();function iN(t){let e={};for(let r of t)e[r]=!0;return e}U.toHash=iN;function sN(t,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(Ab(t,e),!Mb(e,t.self.RULES.all))}U.alwaysValidSchema=sN;function Ab(t,e=t.schema){let{opts:r,self:n}=t;if(!r.strictSchema||typeof e=="boolean")return;let o=n.RULES.keywords;for(let i in e)o[i]||Ob(t,`unknown keyword: "${i}"`)}U.checkUnknownRules=Ab;function Mb(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(e[r])return!0;return!1}U.schemaHasRules=Mb;function aN(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(r!=="$ref"&&e.all[r])return!0;return!1}U.schemaHasRulesButRef=aN;function cN({topSchemaRef:t,schemaPath:e},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,se._)`${r}`}return(0,se._)`${t}${e}${(0,se.getProperty)(n)}`}U.schemaRefOrVal=cN;function uN(t){return $b(decodeURIComponent(t))}U.unescapeFragment=uN;function dN(t){return encodeURIComponent(zf(t))}U.escapeFragment=dN;function zf(t){return typeof t=="number"?`${t}`:t.replace(/~/g,"~0").replace(/\//g,"~1")}U.escapeJsonPointer=zf;function $b(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}U.unescapeJsonPointer=$b;function lN(t,e){if(Array.isArray(t))for(let r of t)e(r);else e(t)}U.eachItem=lN;function Eb({mergeNames:t,mergeToName:e,mergeValues:r,resultToName:n}){return(o,i,s,a)=>{let c=s===void 0?i:s instanceof se.Name?(i instanceof se.Name?t(o,i,s):e(o,i,s),s):i instanceof se.Name?(e(o,s,i),i):r(i,s);return a===se.Name&&!(c instanceof se.Name)?n(o,c):c}}U.mergeEvaluated={props:Eb({mergeNames:(t,e,r)=>t.if((0,se._)`${r} !== true && ${e} !== undefined`,()=>{t.if((0,se._)`${e} === true`,()=>t.assign(r,!0),()=>t.assign(r,(0,se._)`${r} || {}`).code((0,se._)`Object.assign(${r}, ${e})`))}),mergeToName:(t,e,r)=>t.if((0,se._)`${r} !== true`,()=>{e===!0?t.assign(r,!0):(t.assign(r,(0,se._)`${r} || {}`),Nf(t,r,e))}),mergeValues:(t,e)=>t===!0?!0:{...t,...e},resultToName:Ib}),items:Eb({mergeNames:(t,e,r)=>t.if((0,se._)`${r} !== true && ${e} !== undefined`,()=>t.assign(r,(0,se._)`${e} === true ? true : ${r} > ${e} ? ${r} : ${e}`)),mergeToName:(t,e,r)=>t.if((0,se._)`${r} !== true`,()=>t.assign(r,e===!0?!0:(0,se._)`${r} > ${e} ? ${r} : ${e}`)),mergeValues:(t,e)=>t===!0?!0:Math.max(t,e),resultToName:(t,e)=>t.var("items",e)})};function Ib(t,e){if(e===!0)return t.var("props",!0);let r=t.var("props",(0,se._)`{}`);return e!==void 0&&Nf(t,r,e),r}U.evaluatedPropsToName=Ib;function Nf(t,e,r){Object.keys(r).forEach(n=>t.assign((0,se._)`${e}${(0,se.getProperty)(n)}`,!0))}U.setEvaluated=Nf;var Tb={};function fN(t,e){return t.scopeValue("func",{ref:e,code:Tb[e.code]||(Tb[e.code]=new oN._Code(e.code))})}U.useFunc=fN;var Of;(function(t){t[t.Num=0]="Num",t[t.Str=1]="Str"})(Of||(U.Type=Of={}));function pN(t,e,r){if(t instanceof se.Name){let n=e===Of.Num;return r?n?(0,se._)`"[" + ${t} + "]"`:(0,se._)`"['" + ${t} + "']"`:n?(0,se._)`"/" + ${t}`:(0,se._)`"/" + ${t}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,se.getProperty)(t).toString():"/"+zf(t)}U.getErrorPath=pN;function Ob(t,e,r=t.opts.strictSchema){if(r){if(e=`strict mode: ${e}`,r===!0)throw new Error(e);t.self.logger.warn(e)}}U.checkStrictMode=Ob});var fr=C(Df=>{"use strict";Object.defineProperty(Df,"__esModule",{value:!0});var je=L(),hN={data:new je.Name("data"),valCxt:new je.Name("valCxt"),instancePath:new je.Name("instancePath"),parentData:new je.Name("parentData"),parentDataProperty:new je.Name("parentDataProperty"),rootData:new je.Name("rootData"),dynamicAnchors:new je.Name("dynamicAnchors"),vErrors:new je.Name("vErrors"),errors:new je.Name("errors"),this:new je.Name("this"),self:new je.Name("self"),scope:new je.Name("scope"),json:new je.Name("json"),jsonPos:new je.Name("jsonPos"),jsonLen:new je.Name("jsonLen"),jsonPart:new je.Name("jsonPart")};Df.default=hN});var os=C(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.extendErrors=Fe.resetErrorsCount=Fe.reportExtraError=Fe.reportError=Fe.keyword$DataError=Fe.keywordError=void 0;var W=L(),yc=B(),He=fr();Fe.keywordError={message:({keyword:t})=>(0,W.str)`must pass "${t}" keyword validation`};Fe.keyword$DataError={message:({keyword:t,schemaType:e})=>e?(0,W.str)`"${t}" keyword must be ${e} ($data)`:(0,W.str)`"${t}" keyword is invalid ($data)`};function mN(t,e=Fe.keywordError,r,n){let{it:o}=t,{gen:i,compositeRule:s,allErrors:a}=o,c=Db(t,e,r);n??(s||a)?zb(i,c):Nb(o,(0,W._)`[${c}]`)}Fe.reportError=mN;function gN(t,e=Fe.keywordError,r){let{it:n}=t,{gen:o,compositeRule:i,allErrors:s}=n,a=Db(t,e,r);zb(o,a),i||s||Nb(n,He.default.vErrors)}Fe.reportExtraError=gN;function yN(t,e){t.assign(He.default.errors,e),t.if((0,W._)`${He.default.vErrors} !== null`,()=>t.if(e,()=>t.assign((0,W._)`${He.default.vErrors}.length`,e),()=>t.assign(He.default.vErrors,null)))}Fe.resetErrorsCount=yN;function vN({gen:t,keyword:e,schemaValue:r,data:n,errsCount:o,it:i}){if(o===void 0)throw new Error("ajv implementation error");let s=t.name("err");t.forRange("i",o,He.default.errors,a=>{t.const(s,(0,W._)`${He.default.vErrors}[${a}]`),t.if((0,W._)`${s}.instancePath === undefined`,()=>t.assign((0,W._)`${s}.instancePath`,(0,W.strConcat)(He.default.instancePath,i.errorPath))),t.assign((0,W._)`${s}.schemaPath`,(0,W.str)`${i.errSchemaPath}/${e}`),i.opts.verbose&&(t.assign((0,W._)`${s}.schema`,r),t.assign((0,W._)`${s}.data`,n))})}Fe.extendErrors=vN;function zb(t,e){let r=t.const("err",e);t.if((0,W._)`${He.default.vErrors} === null`,()=>t.assign(He.default.vErrors,(0,W._)`[${r}]`),(0,W._)`${He.default.vErrors}.push(${r})`),t.code((0,W._)`${He.default.errors}++`)}function Nb(t,e){let{gen:r,validateName:n,schemaEnv:o}=t;o.$async?r.throw((0,W._)`new ${t.ValidationError}(${e})`):(r.assign((0,W._)`${n}.errors`,e),r.return(!1))}var kn={keyword:new W.Name("keyword"),schemaPath:new W.Name("schemaPath"),params:new W.Name("params"),propertyName:new W.Name("propertyName"),message:new W.Name("message"),schema:new W.Name("schema"),parentSchema:new W.Name("parentSchema")};function Db(t,e,r){let{createErrors:n}=t.it;return n===!1?(0,W._)`{}`:_N(t,e,r)}function _N(t,e,r={}){let{gen:n,it:o}=t,i=[SN(o,r),wN(t,r)];return bN(t,e,i),n.object(...i)}function SN({errorPath:t},{instancePath:e}){let r=e?(0,W.str)`${t}${(0,yc.getErrorPath)(e,yc.Type.Str)}`:t;return[He.default.instancePath,(0,W.strConcat)(He.default.instancePath,r)]}function wN({keyword:t,it:{errSchemaPath:e}},{schemaPath:r,parentSchema:n}){let o=n?e:(0,W.str)`${e}/${t}`;return r&&(o=(0,W.str)`${o}${(0,yc.getErrorPath)(r,yc.Type.Str)}`),[kn.schemaPath,o]}function bN(t,{params:e,message:r},n){let{keyword:o,data:i,schemaValue:s,it:a}=t,{opts:c,propertyName:u,topSchemaRef:d,schemaPath:l}=a;n.push([kn.keyword,o],[kn.params,typeof e=="function"?e(t):e||(0,W._)`{}`]),c.messages&&n.push([kn.message,typeof r=="function"?r(t):r]),c.verbose&&n.push([kn.schema,s],[kn.parentSchema,(0,W._)`${d}${l}`],[He.default.data,i]),u&&n.push([kn.propertyName,u])}});var jb=C(Ro=>{"use strict";Object.defineProperty(Ro,"__esModule",{value:!0});Ro.boolOrEmptySchema=Ro.topBoolOrEmptySchema=void 0;var RN=os(),CN=L(),PN=fr(),xN={message:"boolean schema is false"};function kN(t){let{gen:e,schema:r,validateName:n}=t;r===!1?Lb(t,!1):typeof r=="object"&&r.$async===!0?e.return(PN.default.data):(e.assign((0,CN._)`${n}.errors`,null),e.return(!0))}Ro.topBoolOrEmptySchema=kN;function EN(t,e){let{gen:r,schema:n}=t;n===!1?(r.var(e,!1),Lb(t)):r.var(e,!0)}Ro.boolOrEmptySchema=EN;function Lb(t,e){let{gen:r,data:n}=t,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:t};(0,RN.reportError)(o,xN,void 0,e)}});var Lf=C(Co=>{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.getRules=Co.isJSONType=void 0;var TN=["string","number","integer","boolean","null","object","array"],AN=new Set(TN);function MN(t){return typeof t=="string"&&AN.has(t)}Co.isJSONType=MN;function $N(){let t={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...t,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},t.number,t.string,t.array,t.object],post:{rules:[]},all:{},keywords:{}}}Co.getRules=$N});var jf=C(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.shouldUseRule=Hr.shouldUseGroup=Hr.schemaHasRulesForType=void 0;function IN({schema:t,self:e},r){let n=e.RULES.types[r];return n&&n!==!0&&Fb(t,n)}Hr.schemaHasRulesForType=IN;function Fb(t,e){return e.rules.some(r=>Ub(t,r))}Hr.shouldUseGroup=Fb;function Ub(t,e){var r;return t[e.keyword]!==void 0||((r=e.definition.implements)===null||r===void 0?void 0:r.some(n=>t[n]!==void 0))}Hr.shouldUseRule=Ub});var is=C(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});Ue.reportTypeError=Ue.checkDataTypes=Ue.checkDataType=Ue.coerceAndCheckDataType=Ue.getJSONTypes=Ue.getSchemaTypes=Ue.DataType=void 0;var ON=Lf(),zN=jf(),NN=os(),D=L(),qb=B(),Po;(function(t){t[t.Correct=0]="Correct",t[t.Wrong=1]="Wrong"})(Po||(Ue.DataType=Po={}));function DN(t){let e=Hb(t.type);if(e.includes("null")){if(t.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&t.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');t.nullable===!0&&e.push("null")}return e}Ue.getSchemaTypes=DN;function Hb(t){let e=Array.isArray(t)?t:t?[t]:[];if(e.every(ON.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}Ue.getJSONTypes=Hb;function LN(t,e){let{gen:r,data:n,opts:o}=t,i=jN(e,o.coerceTypes),s=e.length>0&&!(i.length===0&&e.length===1&&(0,zN.schemaHasRulesForType)(t,e[0]));if(s){let a=Uf(e,n,o.strictNumbers,Po.Wrong);r.if(a,()=>{i.length?FN(t,e,i):qf(t)})}return s}Ue.coerceAndCheckDataType=LN;var Gb=new Set(["string","number","integer","boolean","null"]);function jN(t,e){return e?t.filter(r=>Gb.has(r)||e==="array"&&r==="array"):[]}function FN(t,e,r){let{gen:n,data:o,opts:i}=t,s=n.let("dataType",(0,D._)`typeof ${o}`),a=n.let("coerced",(0,D._)`undefined`);i.coerceTypes==="array"&&n.if((0,D._)`${s} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,D._)`${o}[0]`).assign(s,(0,D._)`typeof ${o}`).if(Uf(e,o,i.strictNumbers),()=>n.assign(a,o))),n.if((0,D._)`${a} !== undefined`);for(let u of r)(Gb.has(u)||u==="array"&&i.coerceTypes==="array")&&c(u);n.else(),qf(t),n.endIf(),n.if((0,D._)`${a} !== undefined`,()=>{n.assign(o,a),UN(t,a)});function c(u){switch(u){case"string":n.elseIf((0,D._)`${s} == "number" || ${s} == "boolean"`).assign(a,(0,D._)`"" + ${o}`).elseIf((0,D._)`${o} === null`).assign(a,(0,D._)`""`);return;case"number":n.elseIf((0,D._)`${s} == "boolean" || ${o} === null
3
- || (${s} == "string" && ${o} && ${o} == +${o})`).assign(a,(0,D._)`+${o}`);return;case"integer":n.elseIf((0,D._)`${s} === "boolean" || ${o} === null
4
- || (${s} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(a,(0,D._)`+${o}`);return;case"boolean":n.elseIf((0,D._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(a,!1).elseIf((0,D._)`${o} === "true" || ${o} === 1`).assign(a,!0);return;case"null":n.elseIf((0,D._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(a,null);return;case"array":n.elseIf((0,D._)`${s} === "string" || ${s} === "number"
5
- || ${s} === "boolean" || ${o} === null`).assign(a,(0,D._)`[${o}]`)}}}function UN({gen:t,parentData:e,parentDataProperty:r},n){t.if((0,D._)`${e} !== undefined`,()=>t.assign((0,D._)`${e}[${r}]`,n))}function Ff(t,e,r,n=Po.Correct){let o=n===Po.Correct?D.operators.EQ:D.operators.NEQ,i;switch(t){case"null":return(0,D._)`${e} ${o} null`;case"array":i=(0,D._)`Array.isArray(${e})`;break;case"object":i=(0,D._)`${e} && typeof ${e} == "object" && !Array.isArray(${e})`;break;case"integer":i=s((0,D._)`!(${e} % 1) && !isNaN(${e})`);break;case"number":i=s();break;default:return(0,D._)`typeof ${e} ${o} ${t}`}return n===Po.Correct?i:(0,D.not)(i);function s(a=D.nil){return(0,D.and)((0,D._)`typeof ${e} == "number"`,a,r?(0,D._)`isFinite(${e})`:D.nil)}}Ue.checkDataType=Ff;function Uf(t,e,r,n){if(t.length===1)return Ff(t[0],e,r,n);let o,i=(0,qb.toHash)(t);if(i.array&&i.object){let s=(0,D._)`typeof ${e} != "object"`;o=i.null?s:(0,D._)`!${e} || ${s}`,delete i.null,delete i.array,delete i.object}else o=D.nil;i.number&&delete i.integer;for(let s in i)o=(0,D.and)(o,Ff(s,e,r,n));return o}Ue.checkDataTypes=Uf;var qN={message:({schema:t})=>`must be ${t}`,params:({schema:t,schemaValue:e})=>typeof t=="string"?(0,D._)`{type: ${t}}`:(0,D._)`{type: ${e}}`};function qf(t){let e=HN(t);(0,NN.reportError)(e,qN)}Ue.reportTypeError=qf;function HN(t){let{gen:e,data:r,schema:n}=t,o=(0,qb.schemaRefOrVal)(t,n,"type");return{gen:e,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:t}}});var Bb=C(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.assignDefaults=void 0;var xo=L(),GN=B();function ZN(t,e){let{properties:r,items:n}=t.schema;if(e==="object"&&r)for(let o in r)Zb(t,o,r[o].default);else e==="array"&&Array.isArray(n)&&n.forEach((o,i)=>Zb(t,i,o.default))}vc.assignDefaults=ZN;function Zb(t,e,r){let{gen:n,compositeRule:o,data:i,opts:s}=t;if(r===void 0)return;let a=(0,xo._)`${i}${(0,xo.getProperty)(e)}`;if(o){(0,GN.checkStrictMode)(t,`default is ignored for: ${a}`);return}let c=(0,xo._)`${a} === undefined`;s.useDefaults==="empty"&&(c=(0,xo._)`${c} || ${a} === null || ${a} === ""`),n.if(c,(0,xo._)`${a} = ${(0,xo.stringify)(r)}`)}});var wt=C(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.validateUnion=re.validateArray=re.usePattern=re.callValidateCode=re.schemaProperties=re.allSchemaProperties=re.noPropertyInData=re.propertyInData=re.isOwnProperty=re.hasPropFunc=re.reportMissingProp=re.checkMissingProp=re.checkReportMissingProp=void 0;var de=L(),Hf=B(),Gr=fr(),BN=B();function WN(t,e){let{gen:r,data:n,it:o}=t;r.if(Zf(r,n,e,o.opts.ownProperties),()=>{t.setParams({missingProperty:(0,de._)`${e}`},!0),t.error()})}re.checkReportMissingProp=WN;function VN({gen:t,data:e,it:{opts:r}},n,o){return(0,de.or)(...n.map(i=>(0,de.and)(Zf(t,e,i,r.ownProperties),(0,de._)`${o} = ${i}`)))}re.checkMissingProp=VN;function KN(t,e){t.setParams({missingProperty:e},!0),t.error()}re.reportMissingProp=KN;function Wb(t){return t.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,de._)`Object.prototype.hasOwnProperty`})}re.hasPropFunc=Wb;function Gf(t,e,r){return(0,de._)`${Wb(t)}.call(${e}, ${r})`}re.isOwnProperty=Gf;function JN(t,e,r,n){let o=(0,de._)`${e}${(0,de.getProperty)(r)} !== undefined`;return n?(0,de._)`${o} && ${Gf(t,e,r)}`:o}re.propertyInData=JN;function Zf(t,e,r,n){let o=(0,de._)`${e}${(0,de.getProperty)(r)} === undefined`;return n?(0,de.or)(o,(0,de.not)(Gf(t,e,r))):o}re.noPropertyInData=Zf;function Vb(t){return t?Object.keys(t).filter(e=>e!=="__proto__"):[]}re.allSchemaProperties=Vb;function YN(t,e){return Vb(e).filter(r=>!(0,Hf.alwaysValidSchema)(t,e[r]))}re.schemaProperties=YN;function XN({schemaCode:t,data:e,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:i},it:s},a,c,u){let d=u?(0,de._)`${t}, ${e}, ${n}${o}`:e,l=[[Gr.default.instancePath,(0,de.strConcat)(Gr.default.instancePath,i)],[Gr.default.parentData,s.parentData],[Gr.default.parentDataProperty,s.parentDataProperty],[Gr.default.rootData,Gr.default.rootData]];s.opts.dynamicRef&&l.push([Gr.default.dynamicAnchors,Gr.default.dynamicAnchors]);let f=(0,de._)`${d}, ${r.object(...l)}`;return c!==de.nil?(0,de._)`${a}.call(${c}, ${f})`:(0,de._)`${a}(${f})`}re.callValidateCode=XN;var QN=(0,de._)`new RegExp`;function eD({gen:t,it:{opts:e}},r){let n=e.unicodeRegExp?"u":"",{regExp:o}=e.code,i=o(r,n);return t.scopeValue("pattern",{key:i.toString(),ref:i,code:(0,de._)`${o.code==="new RegExp"?QN:(0,BN.useFunc)(t,o)}(${r}, ${n})`})}re.usePattern=eD;function tD(t){let{gen:e,data:r,keyword:n,it:o}=t,i=e.name("valid");if(o.allErrors){let a=e.let("valid",!0);return s(()=>e.assign(a,!1)),a}return e.var(i,!0),s(()=>e.break()),i;function s(a){let c=e.const("len",(0,de._)`${r}.length`);e.forRange("i",0,c,u=>{t.subschema({keyword:n,dataProp:u,dataPropType:Hf.Type.Num},i),e.if((0,de.not)(i),a)})}}re.validateArray=tD;function rD(t){let{gen:e,schema:r,keyword:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,Hf.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let s=e.let("valid",!1),a=e.name("_valid");e.block(()=>r.forEach((c,u)=>{let d=t.subschema({keyword:n,schemaProp:u,compositeRule:!0},a);e.assign(s,(0,de._)`${s} || ${a}`),t.mergeValidEvaluated(d,a)||e.if((0,de.not)(s))})),t.result(s,()=>t.reset(),()=>t.error(!0))}re.validateUnion=rD});var Yb=C(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.validateKeywordUsage=Kt.validSchemaType=Kt.funcKeywordCode=Kt.macroKeywordCode=void 0;var Ge=L(),En=fr(),nD=wt(),oD=os();function iD(t,e){let{gen:r,keyword:n,schema:o,parentSchema:i,it:s}=t,a=e.macro.call(s.self,o,i,s),c=Jb(r,n,a);s.opts.validateSchema!==!1&&s.self.validateSchema(a,!0);let u=r.name("valid");t.subschema({schema:a,schemaPath:Ge.nil,errSchemaPath:`${s.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},u),t.pass(u,()=>t.error(!0))}Kt.macroKeywordCode=iD;function sD(t,e){var r;let{gen:n,keyword:o,schema:i,parentSchema:s,$data:a,it:c}=t;cD(c,e);let u=!a&&e.compile?e.compile.call(c.self,i,s,c):e.validate,d=Jb(n,o,u),l=n.let("valid");t.block$data(l,f),t.ok((r=e.valid)!==null&&r!==void 0?r:l);function f(){if(e.errors===!1)h(),e.modifying&&Kb(t),g(()=>t.error());else{let v=e.async?p():m();e.modifying&&Kb(t),g(()=>aD(t,v))}}function p(){let v=n.let("ruleErrs",null);return n.try(()=>h((0,Ge._)`await `),w=>n.assign(l,!1).if((0,Ge._)`${w} instanceof ${c.ValidationError}`,()=>n.assign(v,(0,Ge._)`${w}.errors`),()=>n.throw(w))),v}function m(){let v=(0,Ge._)`${d}.errors`;return n.assign(v,null),h(Ge.nil),v}function h(v=e.async?(0,Ge._)`await `:Ge.nil){let w=c.opts.passContext?En.default.this:En.default.self,b=!("compile"in e&&!a||e.schema===!1);n.assign(l,(0,Ge._)`${v}${(0,nD.callValidateCode)(t,d,w,b)}`,e.modifying)}function g(v){var w;n.if((0,Ge.not)((w=e.valid)!==null&&w!==void 0?w:l),v)}}Kt.funcKeywordCode=sD;function Kb(t){let{gen:e,data:r,it:n}=t;e.if(n.parentData,()=>e.assign(r,(0,Ge._)`${n.parentData}[${n.parentDataProperty}]`))}function aD(t,e){let{gen:r}=t;r.if((0,Ge._)`Array.isArray(${e})`,()=>{r.assign(En.default.vErrors,(0,Ge._)`${En.default.vErrors} === null ? ${e} : ${En.default.vErrors}.concat(${e})`).assign(En.default.errors,(0,Ge._)`${En.default.vErrors}.length`),(0,oD.extendErrors)(t)},()=>t.error())}function cD({schemaEnv:t},e){if(e.async&&!t.$async)throw new Error("async keyword in sync schema")}function Jb(t,e,r){if(r===void 0)throw new Error(`keyword "${e}" failed to compile`);return t.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,Ge.stringify)(r)})}function uD(t,e,r=!1){return!e.length||e.some(n=>n==="array"?Array.isArray(t):n==="object"?t&&typeof t=="object"&&!Array.isArray(t):typeof t==n||r&&typeof t>"u")}Kt.validSchemaType=uD;function dD({schema:t,opts:e,self:r,errSchemaPath:n},o,i){if(Array.isArray(o.keyword)?!o.keyword.includes(i):o.keyword!==i)throw new Error("ajv implementation error");let s=o.dependencies;if(s?.some(a=>!Object.prototype.hasOwnProperty.call(t,a)))throw new Error(`parent schema must have dependencies of ${i}: ${s.join(",")}`);if(o.validateSchema&&!o.validateSchema(t[i])){let c=`keyword "${i}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(e.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}Kt.validateKeywordUsage=dD});var Qb=C(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.extendSubschemaMode=Zr.extendSubschemaData=Zr.getSubschema=void 0;var Jt=L(),Xb=B();function lD(t,{keyword:e,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:i,topSchemaRef:s}){if(e!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(e!==void 0){let a=t.schema[e];return r===void 0?{schema:a,schemaPath:(0,Jt._)`${t.schemaPath}${(0,Jt.getProperty)(e)}`,errSchemaPath:`${t.errSchemaPath}/${e}`}:{schema:a[r],schemaPath:(0,Jt._)`${t.schemaPath}${(0,Jt.getProperty)(e)}${(0,Jt.getProperty)(r)}`,errSchemaPath:`${t.errSchemaPath}/${e}/${(0,Xb.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||i===void 0||s===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:s,errSchemaPath:i}}throw new Error('either "keyword" or "schema" must be passed')}Zr.getSubschema=lD;function fD(t,e,{dataProp:r,dataPropType:n,data:o,dataTypes:i,propertyName:s}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=e;if(r!==void 0){let{errorPath:u,dataPathArr:d,opts:l}=e,f=a.let("data",(0,Jt._)`${e.data}${(0,Jt.getProperty)(r)}`,!0);c(f),t.errorPath=(0,Jt.str)`${u}${(0,Xb.getErrorPath)(r,n,l.jsPropertySyntax)}`,t.parentDataProperty=(0,Jt._)`${r}`,t.dataPathArr=[...d,t.parentDataProperty]}if(o!==void 0){let u=o instanceof Jt.Name?o:a.let("data",o,!0);c(u),s!==void 0&&(t.propertyName=s)}i&&(t.dataTypes=i);function c(u){t.data=u,t.dataLevel=e.dataLevel+1,t.dataTypes=[],e.definedProperties=new Set,t.parentData=e.data,t.dataNames=[...e.dataNames,u]}}Zr.extendSubschemaData=fD;function pD(t,{jtdDiscriminator:e,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:i}){n!==void 0&&(t.compositeRule=n),o!==void 0&&(t.createErrors=o),i!==void 0&&(t.allErrors=i),t.jtdDiscriminator=e,t.jtdMetadata=r}Zr.extendSubschemaMode=pD});var Bf=C((k5,eR)=>{"use strict";eR.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,o,i;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!t(e[o],r[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[o]))return!1;for(o=n;o--!==0;){var s=i[o];if(!t(e[s],r[s]))return!1}return!0}return e!==e&&r!==r}});var rR=C((E5,tR)=>{"use strict";var Br=tR.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};_c(e,n,o,t,"",t)};Br.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};Br.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Br.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Br.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 _c(t,e,r,n,o,i,s,a,c,u){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,o,i,s,a,c,u);for(var d in n){var l=n[d];if(Array.isArray(l)){if(d in Br.arrayKeywords)for(var f=0;f<l.length;f++)_c(t,e,r,l[f],o+"/"+d+"/"+f,i,o,d,n,f)}else if(d in Br.propsKeywords){if(l&&typeof l=="object")for(var p in l)_c(t,e,r,l[p],o+"/"+d+"/"+hD(p),i,o,d,n,p)}else(d in Br.keywords||t.allKeys&&!(d in Br.skipKeywords))&&_c(t,e,r,l,o+"/"+d,i,o,d,n)}r(n,o,i,s,a,c,u)}}function hD(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}});var ss=C(tt=>{"use strict";Object.defineProperty(tt,"__esModule",{value:!0});tt.getSchemaRefs=tt.resolveUrl=tt.normalizeId=tt._getFullPath=tt.getFullPath=tt.inlineRef=void 0;var mD=B(),gD=Bf(),yD=rR(),vD=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function _D(t,e=!0){return typeof t=="boolean"?!0:e===!0?!Wf(t):e?nR(t)<=e:!1}tt.inlineRef=_D;var SD=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Wf(t){for(let e in t){if(SD.has(e))return!0;let r=t[e];if(Array.isArray(r)&&r.some(Wf)||typeof r=="object"&&Wf(r))return!0}return!1}function nR(t){let e=0;for(let r in t){if(r==="$ref")return 1/0;if(e++,!vD.has(r)&&(typeof t[r]=="object"&&(0,mD.eachItem)(t[r],n=>e+=nR(n)),e===1/0))return 1/0}return e}function oR(t,e="",r){r!==!1&&(e=ko(e));let n=t.parse(e);return iR(t,n)}tt.getFullPath=oR;function iR(t,e){return t.serialize(e).split("#")[0]+"#"}tt._getFullPath=iR;var wD=/#\/?$/;function ko(t){return t?t.replace(wD,""):""}tt.normalizeId=ko;function bD(t,e,r){return r=ko(r),t.resolve(e,r)}tt.resolveUrl=bD;var RD=/^[a-z_][-a-z0-9._]*$/i;function CD(t,e){if(typeof t=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=ko(t[r]||e),i={"":o},s=oR(n,o,!1),a={},c=new Set;return yD(t,{allKeys:!0},(l,f,p,m)=>{if(m===void 0)return;let h=s+f,g=i[m];typeof l[r]=="string"&&(g=v.call(this,l[r])),w.call(this,l.$anchor),w.call(this,l.$dynamicAnchor),i[f]=g;function v(b){let x=this.opts.uriResolver.resolve;if(b=ko(g?x(g,b):b),c.has(b))throw d(b);c.add(b);let S=this.refs[b];return typeof S=="string"&&(S=this.refs[S]),typeof S=="object"?u(l,S.schema,b):b!==ko(h)&&(b[0]==="#"?(u(l,a[b],b),a[b]=l):this.refs[b]=h),b}function w(b){if(typeof b=="string"){if(!RD.test(b))throw new Error(`invalid anchor "${b}"`);v.call(this,`#${b}`)}}}),a;function u(l,f,p){if(f!==void 0&&!gD(l,f))throw d(p)}function d(l){return new Error(`reference "${l}" resolves to more than one schema`)}}tt.getSchemaRefs=CD});var us=C(Wr=>{"use strict";Object.defineProperty(Wr,"__esModule",{value:!0});Wr.getData=Wr.KeywordCxt=Wr.validateFunctionCode=void 0;var dR=jb(),sR=is(),Kf=jf(),Sc=is(),PD=Bb(),cs=Yb(),Vf=Qb(),T=L(),z=fr(),xD=ss(),pr=B(),as=os();function kD(t){if(pR(t)&&(hR(t),fR(t))){AD(t);return}lR(t,()=>(0,dR.topBoolOrEmptySchema)(t))}Wr.validateFunctionCode=kD;function lR({gen:t,validateName:e,schema:r,schemaEnv:n,opts:o},i){o.code.es5?t.func(e,(0,T._)`${z.default.data}, ${z.default.valCxt}`,n.$async,()=>{t.code((0,T._)`"use strict"; ${aR(r,o)}`),TD(t,o),t.code(i)}):t.func(e,(0,T._)`${z.default.data}, ${ED(o)}`,n.$async,()=>t.code(aR(r,o)).code(i))}function ED(t){return(0,T._)`{${z.default.instancePath}="", ${z.default.parentData}, ${z.default.parentDataProperty}, ${z.default.rootData}=${z.default.data}${t.dynamicRef?(0,T._)`, ${z.default.dynamicAnchors}={}`:T.nil}}={}`}function TD(t,e){t.if(z.default.valCxt,()=>{t.var(z.default.instancePath,(0,T._)`${z.default.valCxt}.${z.default.instancePath}`),t.var(z.default.parentData,(0,T._)`${z.default.valCxt}.${z.default.parentData}`),t.var(z.default.parentDataProperty,(0,T._)`${z.default.valCxt}.${z.default.parentDataProperty}`),t.var(z.default.rootData,(0,T._)`${z.default.valCxt}.${z.default.rootData}`),e.dynamicRef&&t.var(z.default.dynamicAnchors,(0,T._)`${z.default.valCxt}.${z.default.dynamicAnchors}`)},()=>{t.var(z.default.instancePath,(0,T._)`""`),t.var(z.default.parentData,(0,T._)`undefined`),t.var(z.default.parentDataProperty,(0,T._)`undefined`),t.var(z.default.rootData,z.default.data),e.dynamicRef&&t.var(z.default.dynamicAnchors,(0,T._)`{}`)})}function AD(t){let{schema:e,opts:r,gen:n}=t;lR(t,()=>{r.$comment&&e.$comment&&gR(t),zD(t),n.let(z.default.vErrors,null),n.let(z.default.errors,0),r.unevaluated&&MD(t),mR(t),LD(t)})}function MD(t){let{gen:e,validateName:r}=t;t.evaluated=e.const("evaluated",(0,T._)`${r}.evaluated`),e.if((0,T._)`${t.evaluated}.dynamicProps`,()=>e.assign((0,T._)`${t.evaluated}.props`,(0,T._)`undefined`)),e.if((0,T._)`${t.evaluated}.dynamicItems`,()=>e.assign((0,T._)`${t.evaluated}.items`,(0,T._)`undefined`))}function aR(t,e){let r=typeof t=="object"&&t[e.schemaId];return r&&(e.code.source||e.code.process)?(0,T._)`/*# sourceURL=${r} */`:T.nil}function $D(t,e){if(pR(t)&&(hR(t),fR(t))){ID(t,e);return}(0,dR.boolOrEmptySchema)(t,e)}function fR({schema:t,self:e}){if(typeof t=="boolean")return!t;for(let r in t)if(e.RULES.all[r])return!0;return!1}function pR(t){return typeof t.schema!="boolean"}function ID(t,e){let{schema:r,gen:n,opts:o}=t;o.$comment&&r.$comment&&gR(t),ND(t),DD(t);let i=n.const("_errs",z.default.errors);mR(t,i),n.var(e,(0,T._)`${i} === ${z.default.errors}`)}function hR(t){(0,pr.checkUnknownRules)(t),OD(t)}function mR(t,e){if(t.opts.jtd)return cR(t,[],!1,e);let r=(0,sR.getSchemaTypes)(t.schema),n=(0,sR.coerceAndCheckDataType)(t,r);cR(t,r,!n,e)}function OD(t){let{schema:e,errSchemaPath:r,opts:n,self:o}=t;e.$ref&&n.ignoreKeywordsWithRef&&(0,pr.schemaHasRulesButRef)(e,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function zD(t){let{schema:e,opts:r}=t;e.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,pr.checkStrictMode)(t,"default is ignored in the schema root")}function ND(t){let e=t.schema[t.opts.schemaId];e&&(t.baseId=(0,xD.resolveUrl)(t.opts.uriResolver,t.baseId,e))}function DD(t){if(t.schema.$async&&!t.schemaEnv.$async)throw new Error("async schema in sync schema")}function gR({gen:t,schemaEnv:e,schema:r,errSchemaPath:n,opts:o}){let i=r.$comment;if(o.$comment===!0)t.code((0,T._)`${z.default.self}.logger.log(${i})`);else if(typeof o.$comment=="function"){let s=(0,T.str)`${n}/$comment`,a=t.scopeValue("root",{ref:e.root});t.code((0,T._)`${z.default.self}.opts.$comment(${i}, ${s}, ${a}.schema)`)}}function LD(t){let{gen:e,schemaEnv:r,validateName:n,ValidationError:o,opts:i}=t;r.$async?e.if((0,T._)`${z.default.errors} === 0`,()=>e.return(z.default.data),()=>e.throw((0,T._)`new ${o}(${z.default.vErrors})`)):(e.assign((0,T._)`${n}.errors`,z.default.vErrors),i.unevaluated&&jD(t),e.return((0,T._)`${z.default.errors} === 0`))}function jD({gen:t,evaluated:e,props:r,items:n}){r instanceof T.Name&&t.assign((0,T._)`${e}.props`,r),n instanceof T.Name&&t.assign((0,T._)`${e}.items`,n)}function cR(t,e,r,n){let{gen:o,schema:i,data:s,allErrors:a,opts:c,self:u}=t,{RULES:d}=u;if(i.$ref&&(c.ignoreKeywordsWithRef||!(0,pr.schemaHasRulesButRef)(i,d))){o.block(()=>vR(t,"$ref",d.all.$ref.definition));return}c.jtd||FD(t,e),o.block(()=>{for(let f of d.rules)l(f);l(d.post)});function l(f){(0,Kf.shouldUseGroup)(i,f)&&(f.type?(o.if((0,Sc.checkDataType)(f.type,s,c.strictNumbers)),uR(t,f),e.length===1&&e[0]===f.type&&r&&(o.else(),(0,Sc.reportTypeError)(t)),o.endIf()):uR(t,f),a||o.if((0,T._)`${z.default.errors} === ${n||0}`))}}function uR(t,e){let{gen:r,schema:n,opts:{useDefaults:o}}=t;o&&(0,PD.assignDefaults)(t,e.type),r.block(()=>{for(let i of e.rules)(0,Kf.shouldUseRule)(n,i)&&vR(t,i.keyword,i.definition,e.type)})}function FD(t,e){t.schemaEnv.meta||!t.opts.strictTypes||(UD(t,e),t.opts.allowUnionTypes||qD(t,e),HD(t,t.dataTypes))}function UD(t,e){if(e.length){if(!t.dataTypes.length){t.dataTypes=e;return}e.forEach(r=>{yR(t.dataTypes,r)||Jf(t,`type "${r}" not allowed by context "${t.dataTypes.join(",")}"`)}),ZD(t,e)}}function qD(t,e){e.length>1&&!(e.length===2&&e.includes("null"))&&Jf(t,"use allowUnionTypes to allow union type keyword")}function HD(t,e){let r=t.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Kf.shouldUseRule)(t.schema,o)){let{type:i}=o.definition;i.length&&!i.some(s=>GD(e,s))&&Jf(t,`missing type "${i.join(",")}" for keyword "${n}"`)}}}function GD(t,e){return t.includes(e)||e==="number"&&t.includes("integer")}function yR(t,e){return t.includes(e)||e==="integer"&&t.includes("number")}function ZD(t,e){let r=[];for(let n of t.dataTypes)yR(e,n)?r.push(n):e.includes("integer")&&n==="number"&&r.push("integer");t.dataTypes=r}function Jf(t,e){let r=t.schemaEnv.baseId+t.errSchemaPath;e+=` at "${r}" (strictTypes)`,(0,pr.checkStrictMode)(t,e,t.opts.strictTypes)}var wc=class{constructor(e,r,n){if((0,cs.validateKeywordUsage)(e,r,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=r.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,pr.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=r,this.$data)this.schemaCode=e.gen.const("vSchema",_R(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,cs.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=e.gen.const("_errs",z.default.errors))}result(e,r,n){this.failResult((0,T.not)(e),r,n)}failResult(e,r,n){this.gen.if(e),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,r){this.failResult((0,T.not)(e),void 0,r)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:r}=this;this.fail((0,T._)`${r} !== undefined && (${(0,T.or)(this.invalid$data(),e)})`)}error(e,r,n){if(r){this.setParams(r),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,r){(e?as.reportExtraError:as.reportError)(this,this.def.error,r)}$dataError(){(0,as.reportError)(this,this.def.$dataError||as.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,as.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,r){r?Object.assign(this.params,e):this.params=e}block$data(e,r,n=T.nil){this.gen.block(()=>{this.check$data(e,n),r()})}check$data(e=T.nil,r=T.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:i,def:s}=this;n.if((0,T.or)((0,T._)`${o} === undefined`,r)),e!==T.nil&&n.assign(e,!0),(i.length||s.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==T.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:r,schemaType:n,def:o,it:i}=this;return(0,T.or)(s(),a());function s(){if(n.length){if(!(r instanceof T.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,T._)`${(0,Sc.checkDataTypes)(c,r,i.opts.strictNumbers,Sc.DataType.Wrong)}`}return T.nil}function a(){if(o.validateSchema){let c=e.scopeValue("validate$data",{ref:o.validateSchema});return(0,T._)`!${c}(${r})`}return T.nil}}subschema(e,r){let n=(0,Vf.getSubschema)(this.it,e);(0,Vf.extendSubschemaData)(n,this.it,e),(0,Vf.extendSubschemaMode)(n,e);let o={...this.it,...n,items:void 0,props:void 0};return $D(o,r),o}mergeEvaluated(e,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=pr.mergeEvaluated.props(o,e.props,n.props,r)),n.items!==!0&&e.items!==void 0&&(n.items=pr.mergeEvaluated.items(o,e.items,n.items,r)))}mergeValidEvaluated(e,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(e,T.Name)),!0}};Wr.KeywordCxt=wc;function vR(t,e,r,n){let o=new wc(t,r,e);"code"in r?r.code(o,n):o.$data&&r.validate?(0,cs.funcKeywordCode)(o,r):"macro"in r?(0,cs.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,cs.funcKeywordCode)(o,r)}var BD=/^\/(?:[^~]|~0|~1)*$/,WD=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function _R(t,{dataLevel:e,dataNames:r,dataPathArr:n}){let o,i;if(t==="")return z.default.rootData;if(t[0]==="/"){if(!BD.test(t))throw new Error(`Invalid JSON-pointer: ${t}`);o=t,i=z.default.rootData}else{let u=WD.exec(t);if(!u)throw new Error(`Invalid JSON-pointer: ${t}`);let d=+u[1];if(o=u[2],o==="#"){if(d>=e)throw new Error(c("property/index",d));return n[e-d]}if(d>e)throw new Error(c("data",d));if(i=r[e-d],!o)return i}let s=i,a=o.split("/");for(let u of a)u&&(i=(0,T._)`${i}${(0,T.getProperty)((0,pr.unescapeJsonPointer)(u))}`,s=(0,T._)`${s} && ${i}`);return s;function c(u,d){return`Cannot access ${u} ${d} levels up, current level is ${e}`}}Wr.getData=_R});var bc=C(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});var Yf=class extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}};Xf.default=Yf});var ds=C(tp=>{"use strict";Object.defineProperty(tp,"__esModule",{value:!0});var Qf=ss(),ep=class extends Error{constructor(e,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Qf.resolveUrl)(e,r,n),this.missingSchema=(0,Qf.normalizeId)((0,Qf.getFullPath)(e,this.missingRef))}};tp.default=ep});var Cc=C(bt=>{"use strict";Object.defineProperty(bt,"__esModule",{value:!0});bt.resolveSchema=bt.getCompilingSchema=bt.resolveRef=bt.compileSchema=bt.SchemaEnv=void 0;var It=L(),VD=bc(),Tn=fr(),Ot=ss(),SR=B(),KD=us(),Eo=class{constructor(e){var r;this.refs={},this.dynamicAnchors={};let n;typeof e.schema=="object"&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(r=e.baseId)!==null&&r!==void 0?r:(0,Ot.normalizeId)(n?.[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=n?.$async,this.refs={}}};bt.SchemaEnv=Eo;function np(t){let e=wR.call(this,t);if(e)return e;let r=(0,Ot.getFullPath)(this.opts.uriResolver,t.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:i}=this.opts,s=new It.CodeGen(this.scope,{es5:n,lines:o,ownProperties:i}),a;t.$async&&(a=s.scopeValue("Error",{ref:VD.default,code:(0,It._)`require("ajv/dist/runtime/validation_error").default`}));let c=s.scopeName("validate");t.validateName=c;let u={gen:s,allErrors:this.opts.allErrors,data:Tn.default.data,parentData:Tn.default.parentData,parentDataProperty:Tn.default.parentDataProperty,dataNames:[Tn.default.data],dataPathArr:[It.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:s.scopeValue("schema",this.opts.code.source===!0?{ref:t.schema,code:(0,It.stringify)(t.schema)}:{ref:t.schema}),validateName:c,ValidationError:a,schema:t.schema,schemaEnv:t,rootId:r,baseId:t.baseId||r,schemaPath:It.nil,errSchemaPath:t.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,It._)`""`,opts:this.opts,self:this},d;try{this._compilations.add(t),(0,KD.validateFunctionCode)(u),s.optimize(this.opts.code.optimize);let l=s.toString();d=`${s.scopeRefs(Tn.default.scope)}return ${l}`,this.opts.code.process&&(d=this.opts.code.process(d,t));let p=new Function(`${Tn.default.self}`,`${Tn.default.scope}`,d)(this,this.scope.get());if(this.scope.value(c,{ref:p}),p.errors=null,p.schema=t.schema,p.schemaEnv=t,t.$async&&(p.$async=!0),this.opts.code.source===!0&&(p.source={validateName:c,validateCode:l,scopeValues:s._values}),this.opts.unevaluated){let{props:m,items:h}=u;p.evaluated={props:m instanceof It.Name?void 0:m,items:h instanceof It.Name?void 0:h,dynamicProps:m instanceof It.Name,dynamicItems:h instanceof It.Name},p.source&&(p.source.evaluated=(0,It.stringify)(p.evaluated))}return t.validate=p,t}catch(l){throw delete t.validate,delete t.validateName,d&&this.logger.error("Error compiling schema, function code:",d),l}finally{this._compilations.delete(t)}}bt.compileSchema=np;function JD(t,e,r){var n;r=(0,Ot.resolveUrl)(this.opts.uriResolver,e,r);let o=t.refs[r];if(o)return o;let i=QD.call(this,t,r);if(i===void 0){let s=(n=t.localRefs)===null||n===void 0?void 0:n[r],{schemaId:a}=this.opts;s&&(i=new Eo({schema:s,schemaId:a,root:t,baseId:e}))}if(i!==void 0)return t.refs[r]=YD.call(this,i)}bt.resolveRef=JD;function YD(t){return(0,Ot.inlineRef)(t.schema,this.opts.inlineRefs)?t.schema:t.validate?t:np.call(this,t)}function wR(t){for(let e of this._compilations)if(XD(e,t))return e}bt.getCompilingSchema=wR;function XD(t,e){return t.schema===e.schema&&t.root===e.root&&t.baseId===e.baseId}function QD(t,e){let r;for(;typeof(r=this.refs[e])=="string";)e=r;return r||this.schemas[e]||Rc.call(this,t,e)}function Rc(t,e){let r=this.opts.uriResolver.parse(e),n=(0,Ot._getFullPath)(this.opts.uriResolver,r),o=(0,Ot.getFullPath)(this.opts.uriResolver,t.baseId,void 0);if(Object.keys(t.schema).length>0&&n===o)return rp.call(this,r,t);let i=(0,Ot.normalizeId)(n),s=this.refs[i]||this.schemas[i];if(typeof s=="string"){let a=Rc.call(this,t,s);return typeof a?.schema!="object"?void 0:rp.call(this,r,a)}if(typeof s?.schema=="object"){if(s.validate||np.call(this,s),i===(0,Ot.normalizeId)(e)){let{schema:a}=s,{schemaId:c}=this.opts,u=a[c];return u&&(o=(0,Ot.resolveUrl)(this.opts.uriResolver,o,u)),new Eo({schema:a,schemaId:c,root:t,baseId:o})}return rp.call(this,r,s)}}bt.resolveSchema=Rc;var eL=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function rp(t,{baseId:e,schema:r,root:n}){var o;if(((o=t.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let a of t.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,SR.unescapeFragment)(a)];if(c===void 0)return;r=c;let u=typeof r=="object"&&r[this.opts.schemaId];!eL.has(a)&&u&&(e=(0,Ot.resolveUrl)(this.opts.uriResolver,e,u))}let i;if(typeof r!="boolean"&&r.$ref&&!(0,SR.schemaHasRulesButRef)(r,this.RULES)){let a=(0,Ot.resolveUrl)(this.opts.uriResolver,e,r.$ref);i=Rc.call(this,n,a)}let{schemaId:s}=this.opts;if(i=i||new Eo({schema:r,schemaId:s,root:n,baseId:e}),i.schema!==i.root.schema)return i}});var bR=C((O5,tL)=>{tL.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 sp=C((z5,ER)=>{"use strict";var rL=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),CR=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),op=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),PR=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),nL=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function ip(t){let e="",r=0,n=0;for(n=0;n<t.length;n++)if(r=t[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n];break}for(n+=1;n<t.length;n++){if(r=t[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n]}return e}var oL=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function RR(t){return t.length=0,!0}function iL(t,e,r){if(t.length){let n=ip(t);if(n!=="")e.push(n);else return r.error=!0,!1;t.length=0}return!0}function sL(t){let e=0,r={error:!1,address:"",zone:""},n=[],o=[],i=!1,s=!1,a=iL;for(let c=0;c<t.length;c++){let u=t[c];if(!(u==="["||u==="]"))if(u===":"){if(i===!0&&(s=!0),!a(o,n,r))break;if(++e>7){r.error=!0;break}c>0&&t[c-1]===":"&&(i=!0),n.push(":");continue}else if(u==="%"){if(!a(o,n,r))break;a=RR}else{o.push(u);continue}}return o.length&&(a===RR?r.zone=o.join(""):s?n.push(o.join("")):n.push(ip(o))),r.address=n.join(""),r}function xR(t){if(aL(t,":")<2)return{host:t,isIPV6:!1};let e=sL(t);if(e.error)return{host:t,isIPV6:!1};{let r=e.address,n=e.address;return e.zone&&(r+="%"+e.zone,n+="%25"+e.zone),{host:r,isIPV6:!0,escapedHost:n}}}function aL(t,e){let r=0;for(let n=0;n<t.length;n++)t[n]===e&&r++;return r}function cL(t){let e=t,r=[],n=-1,o=0;for(;o=e.length;){if(o===1){if(e===".")break;if(e==="/"){r.push("/");break}else{r.push(e);break}}else if(o===2){if(e[0]==="."){if(e[1]===".")break;if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&(e[1]==="."||e[1]==="/")){r.push("/");break}}else if(o===3&&e==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(e[0]==="."){if(e[1]==="."){if(e[2]==="/"){e=e.slice(3);continue}}else if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&e[1]==="."){if(e[2]==="/"){e=e.slice(2);continue}else if(e[2]==="."&&e[3]==="/"){e=e.slice(3),r.length!==0&&r.pop();continue}}if((n=e.indexOf("/",1))===-1){r.push(e);break}else r.push(e.slice(0,n)),e=e.slice(n)}return r.join("")}var uL={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},dL=/[@/?#:]/g,lL=/[@/?#]/g;function kR(t,e){let r=e?lL:dL;return r.lastIndex=0,t.replace(r,n=>uL[n])}function fL(t,e=!1){if(t.indexOf("%")===-1)return t;let r="";for(let n=0;n<t.length;n++){if(t[n]==="%"&&n+2<t.length){let o=t.slice(n+1,n+3);if(op(o)){let i=o.toUpperCase(),s=String.fromCharCode(parseInt(i,16));e&&PR(s)?r+=s:r+="%"+i,n+=2;continue}}r+=t[n]}return r}function pL(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(op(n)){let o=n.toUpperCase(),i=String.fromCharCode(parseInt(o,16));i!=="."&&PR(i)?e+=i:e+="%"+o,r+=2;continue}}nL(t[r])?e+=t[r]:e+=escape(t[r])}return e}function hL(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(op(n)){e+="%"+n.toUpperCase(),r+=2;continue}}e+=escape(t[r])}return e}function mL(t){let e=[];if(t.userinfo!==void 0&&(e.push(t.userinfo),e.push("@")),t.host!==void 0){let r=unescape(t.host);if(!CR(r)){let n=xR(r);n.isIPV6===!0?r=`[${n.escapedHost}]`:r=kR(r,!1)}e.push(r)}return(typeof t.port=="number"||typeof t.port=="string")&&(e.push(":"),e.push(String(t.port))),e.length?e.join(""):void 0}ER.exports={nonSimpleDomain:oL,recomposeAuthority:mL,reescapeHostDelimiters:kR,normalizePercentEncoding:fL,normalizePathEncoding:pL,escapePreservingEscapes:hL,removeDotSegments:cL,isIPv4:CR,isUUID:rL,normalizeIPv6:xR,stringArrayToHexStripped:ip}});var IR=C((N5,$R)=>{"use strict";var{isUUID:gL}=sp(),yL=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,vL=["http","https","ws","wss","urn","urn:uuid"];function _L(t){return vL.indexOf(t)!==-1}function ap(t){return t.secure===!0?!0:t.secure===!1?!1:t.scheme?t.scheme.length===3&&(t.scheme[0]==="w"||t.scheme[0]==="W")&&(t.scheme[1]==="s"||t.scheme[1]==="S")&&(t.scheme[2]==="s"||t.scheme[2]==="S"):!1}function TR(t){return t.host||(t.error=t.error||"HTTP URIs must have a host."),t}function AR(t){let e=String(t.scheme).toLowerCase()==="https";return(t.port===(e?443:80)||t.port==="")&&(t.port=void 0),t.path||(t.path="/"),t}function SL(t){return t.secure=ap(t),t.resourceName=(t.path||"/")+(t.query?"?"+t.query:""),t.path=void 0,t.query=void 0,t}function wL(t){if((t.port===(ap(t)?443:80)||t.port==="")&&(t.port=void 0),typeof t.secure=="boolean"&&(t.scheme=t.secure?"wss":"ws",t.secure=void 0),t.resourceName){let[e,r]=t.resourceName.split("?");t.path=e&&e!=="/"?e:void 0,t.query=r,t.resourceName=void 0}return t.fragment=void 0,t}function bL(t,e){if(!t.path)return t.error="URN can not be parsed",t;let r=t.path.match(yL);if(r){let n=e.scheme||t.scheme||"urn";t.nid=r[1].toLowerCase(),t.nss=r[2];let o=`${n}:${e.nid||t.nid}`,i=cp(o);t.path=void 0,i&&(t=i.parse(t,e))}else t.error=t.error||"URN can not be parsed.";return t}function RL(t,e){if(t.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=e.scheme||t.scheme||"urn",n=t.nid.toLowerCase(),o=`${r}:${e.nid||n}`,i=cp(o);i&&(t=i.serialize(t,e));let s=t,a=t.nss;return s.path=`${n||e.nid}:${a}`,e.skipEscape=!0,s}function CL(t,e){let r=t;return r.uuid=r.nss,r.nss=void 0,!e.tolerant&&(!r.uuid||!gL(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function PL(t){let e=t;return e.nss=(t.uuid||"").toLowerCase(),e}var MR={scheme:"http",domainHost:!0,parse:TR,serialize:AR},xL={scheme:"https",domainHost:MR.domainHost,parse:TR,serialize:AR},Pc={scheme:"ws",domainHost:!0,parse:SL,serialize:wL},kL={scheme:"wss",domainHost:Pc.domainHost,parse:Pc.parse,serialize:Pc.serialize},EL={scheme:"urn",parse:bL,serialize:RL,skipNormalize:!0},TL={scheme:"urn:uuid",parse:CL,serialize:PL,skipNormalize:!0},xc={http:MR,https:xL,ws:Pc,wss:kL,urn:EL,"urn:uuid":TL};Object.setPrototypeOf(xc,null);function cp(t){return t&&(xc[t]||xc[t.toLowerCase()])||void 0}$R.exports={wsIsSecure:ap,SCHEMES:xc,isValidSchemeName:_L,getSchemeHandler:cp}});var LR=C((D5,Tc)=>{"use strict";var{normalizeIPv6:AL,removeDotSegments:ls,recomposeAuthority:ML,normalizePercentEncoding:$L,normalizePathEncoding:IL,escapePreservingEscapes:OL,reescapeHostDelimiters:zL,isIPv4:NL,nonSimpleDomain:DL}=sp(),{SCHEMES:LL,getSchemeHandler:zR}=IR();function jL(t,e){return typeof t=="string"?t=BL(t,e):typeof t=="object"&&(t=Ec(An(t,e),e)),t}function FL(t,e,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:i}=kc(t,n),{parsed:s,malformedAuthorityOrPort:a}=kc(e,n);if(i||a)throw new Error(o.error||s.error||"URI is malformed.");let c=NR(o,s,n,!0);return n.skipEscape=!0,An(c,n)}function NR(t,e,r,n){let o={};return n||(t=Ec(An(t,r),r),e=Ec(An(e,r),r)),r=r||{},!r.tolerant&&e.scheme?(o.scheme=e.scheme,o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=ls(e.path||""),o.query=e.query):(e.userinfo!==void 0||e.host!==void 0||e.port!==void 0?(o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=ls(e.path||""),o.query=e.query):(e.path?(e.path[0]==="/"?o.path=ls(e.path):((t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)&&!t.path?o.path="/"+e.path:t.path?o.path=t.path.slice(0,t.path.lastIndexOf("/")+1)+e.path:o.path=e.path,o.path=ls(o.path)),o.query=e.query):(o.path=t.path,e.query!==void 0?o.query=e.query:o.query=t.query),o.userinfo=t.userinfo,o.host=t.host,o.port=t.port),o.scheme=t.scheme),o.fragment=e.fragment,o}function UL(t,e,r){let n=OR(t,r),o=OR(e,r);return n!==void 0&&o!==void 0&&n.toLowerCase()===o.toLowerCase()}function An(t,e){let r={host:t.host,scheme:t.scheme,userinfo:t.userinfo,port:t.port,path:t.path,query:t.query,nid:t.nid,nss:t.nss,uuid:t.uuid,fragment:t.fragment,reference:t.reference,resourceName:t.resourceName,secure:t.secure,error:""},n=Object.assign({},e),o=[],i=zR(n.scheme||r.scheme);i&&i.serialize&&i.serialize(r,n),r.path!==void 0&&(n.skipEscape?r.path=$L(r.path):(r.path=OL(r.path),r.scheme!==void 0&&(r.path=r.path.split("%3A").join(":")))),n.reference!=="suffix"&&r.scheme&&o.push(r.scheme,":");let s=ML(r);if(s!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(s),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let a=r.path;!n.absolutePath&&(!i||!i.absolutePath)&&(a=ls(a)),s===void 0&&a[0]==="/"&&a[1]==="/"&&(a="/%2F"+a.slice(2)),o.push(a)}return r.query!==void 0&&o.push("?",r.query),r.fragment!==void 0&&o.push("#",r.fragment),o.join("")}var qL=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,HL=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,GL=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function ZL(t,e){if(e[2]!==void 0&&t.path&&t.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof t.port=="number"&&(t.port<0||t.port>65535))return"URI port is malformed."}function kc(t,e){let r=Object.assign({},e),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,i=!1;r.reference==="suffix"&&(r.scheme?t=r.scheme+":"+t:t="//"+t);let s=t.match(HL);s!==null&&s[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let a=t.match(GL);if(a!==null){let u=a[1],d=u.replace(/[\t\n\r]/g,"");d.length>=2&&(d.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):u.length!==d.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let c=t.match(qL);if(c){n.scheme=c[1],n.userinfo=c[3],n.host=c[4],n.port=parseInt(c[5],10),n.path=c[6]||"",n.query=c[7],n.fragment=c[8],isNaN(n.port)&&(n.port=c[5]);let u=ZL(n,c);if(u!==void 0&&(n.error=n.error||u,o=!0),n.host)if(NL(n.host)===!1){let f=AL(n.host);n.host=f.host.toLowerCase(),i=f.isIPV6}else i=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let d=zR(r.scheme||n.scheme);if(!r.unicodeSupport&&(!d||!d.unicodeSupport)&&n.host&&(r.domainHost||d&&d.domainHost)&&i===!1&&DL(n.host))try{n.host=new URL("http://"+n.host).hostname}catch(l){n.error=n.error||"Host's domain name can not be converted to ASCII: "+l}if((!d||d&&!d.skipNormalize)&&(t.indexOf("%")!==-1&&(n.scheme!==void 0&&(n.scheme=unescape(n.scheme)),n.host!==void 0&&(n.host=zL(unescape(n.host),i))),n.path&&(n.path=IL(n.path)),n.fragment))try{n.fragment=encodeURI(decodeURIComponent(n.fragment))}catch{n.error=n.error||"URI malformed"}d&&d.parse&&d.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o}}function Ec(t,e){return kc(t,e).parsed}function BL(t,e){return DR(t,e).normalized}function DR(t,e){let{parsed:r,malformedAuthorityOrPort:n}=kc(t,e);return{normalized:n?t:An(r,e),malformedAuthorityOrPort:n}}function OR(t,e){if(typeof t=="string"){let{normalized:r,malformedAuthorityOrPort:n}=DR(t,e);return n?void 0:r}if(typeof t=="object")return An(t,e)}var up={SCHEMES:LL,normalize:jL,resolve:FL,resolveComponent:NR,equal:UL,serialize:An,parse:Ec};Tc.exports=up;Tc.exports.default=up;Tc.exports.fastUri=up});var FR=C(dp=>{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});var jR=LR();jR.code='require("ajv/dist/runtime/uri").default';dp.default=jR});var VR=C(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.CodeGen=Ne.Name=Ne.nil=Ne.stringify=Ne.str=Ne._=Ne.KeywordCxt=void 0;var WL=us();Object.defineProperty(Ne,"KeywordCxt",{enumerable:!0,get:function(){return WL.KeywordCxt}});var To=L();Object.defineProperty(Ne,"_",{enumerable:!0,get:function(){return To._}});Object.defineProperty(Ne,"str",{enumerable:!0,get:function(){return To.str}});Object.defineProperty(Ne,"stringify",{enumerable:!0,get:function(){return To.stringify}});Object.defineProperty(Ne,"nil",{enumerable:!0,get:function(){return To.nil}});Object.defineProperty(Ne,"Name",{enumerable:!0,get:function(){return To.Name}});Object.defineProperty(Ne,"CodeGen",{enumerable:!0,get:function(){return To.CodeGen}});var VL=bc(),ZR=ds(),KL=Lf(),fs=Cc(),JL=L(),ps=ss(),Ac=is(),fp=B(),UR=bR(),YL=FR(),BR=(t,e)=>new RegExp(t,e);BR.code="new RegExp";var XL=["removeAdditional","useDefaults","coerceTypes"],QL=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),ej={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."},tj={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},qR=200;function rj(t){var e,r,n,o,i,s,a,c,u,d,l,f,p,m,h,g,v,w,b,x,S,R,I,ne,fe;let Pe=t.strict,rn=(e=t.code)===null||e===void 0?void 0:e.optimize,nn=rn===!0||rn===void 0?1:rn||0,lt=(n=(r=t.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:BR,Sr=(o=t.uriResolver)!==null&&o!==void 0?o:YL.default;return{strictSchema:(s=(i=t.strictSchema)!==null&&i!==void 0?i:Pe)!==null&&s!==void 0?s:!0,strictNumbers:(c=(a=t.strictNumbers)!==null&&a!==void 0?a:Pe)!==null&&c!==void 0?c:!0,strictTypes:(d=(u=t.strictTypes)!==null&&u!==void 0?u:Pe)!==null&&d!==void 0?d:"log",strictTuples:(f=(l=t.strictTuples)!==null&&l!==void 0?l:Pe)!==null&&f!==void 0?f:"log",strictRequired:(m=(p=t.strictRequired)!==null&&p!==void 0?p:Pe)!==null&&m!==void 0?m:!1,code:t.code?{...t.code,optimize:nn,regExp:lt}:{optimize:nn,regExp:lt},loopRequired:(h=t.loopRequired)!==null&&h!==void 0?h:qR,loopEnum:(g=t.loopEnum)!==null&&g!==void 0?g:qR,meta:(v=t.meta)!==null&&v!==void 0?v:!0,messages:(w=t.messages)!==null&&w!==void 0?w:!0,inlineRefs:(b=t.inlineRefs)!==null&&b!==void 0?b:!0,schemaId:(x=t.schemaId)!==null&&x!==void 0?x:"$id",addUsedSchema:(S=t.addUsedSchema)!==null&&S!==void 0?S:!0,validateSchema:(R=t.validateSchema)!==null&&R!==void 0?R:!0,validateFormats:(I=t.validateFormats)!==null&&I!==void 0?I:!0,unicodeRegExp:(ne=t.unicodeRegExp)!==null&&ne!==void 0?ne:!0,int32range:(fe=t.int32range)!==null&&fe!==void 0?fe:!0,uriResolver:Sr}}var hs=class{constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...rj(e)};let{es5:r,lines:n}=this.opts.code;this.scope=new JL.ValueScope({scope:{},prefixes:QL,es5:r,lines:n}),this.logger=cj(e.logger);let o=e.validateFormats;e.validateFormats=!1,this.RULES=(0,KL.getRules)(),HR.call(this,ej,e,"NOT SUPPORTED"),HR.call(this,tj,e,"DEPRECATED","warn"),this._metaOpts=sj.call(this),e.formats&&oj.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&ij.call(this,e.keywords),typeof e.meta=="object"&&this.addMetaSchema(e.meta),nj.call(this),e.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:r,schemaId:n}=this.opts,o=UR;n==="id"&&(o={...UR},o.id=o.$id,delete o.$id),r&&e&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:e,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[r]||e:void 0}validate(e,r){let n;if(typeof e=="string"){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(e,r){let n=this._addSchema(e,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,e,r);async function o(d,l){await i.call(this,d.$schema);let f=this._addSchema(d,l);return f.validate||s.call(this,f)}async function i(d){d&&!this.getSchema(d)&&await o.call(this,{$ref:d},!0)}async function s(d){try{return this._compileSchemaEnv(d)}catch(l){if(!(l instanceof ZR.default))throw l;return a.call(this,l),await c.call(this,l.missingSchema),s.call(this,d)}}function a({missingSchema:d,missingRef:l}){if(this.refs[d])throw new Error(`AnySchema ${d} is loaded but ${l} cannot be resolved`)}async function c(d){let l=await u.call(this,d);this.refs[d]||await i.call(this,l.$schema),this.refs[d]||this.addSchema(l,d,r)}async function u(d){let l=this._loading[d];if(l)return l;try{return await(this._loading[d]=n(d))}finally{delete this._loading[d]}}}addSchema(e,r,n,o=this.opts.validateSchema){if(Array.isArray(e)){for(let s of e)this.addSchema(s,void 0,n,o);return this}let i;if(typeof e=="object"){let{schemaId:s}=this.opts;if(i=e[s],i!==void 0&&typeof i!="string")throw new Error(`schema ${s} must be string`)}return r=(0,ps.normalizeId)(r||i),this._checkUnique(r),this.schemas[r]=this._addSchema(e,n,r,o,!0),this}addMetaSchema(e,r,n=this.opts.validateSchema){return this.addSchema(e,r,!0,n),this}validateSchema(e,r){if(typeof e=="boolean")return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,e);if(!o&&r){let i="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(i);else throw new Error(i)}return o}getSchema(e){let r;for(;typeof(r=GR.call(this,e))=="string";)e=r;if(r===void 0){let{schemaId:n}=this.opts,o=new fs.SchemaEnv({schema:{},schemaId:n});if(r=fs.resolveSchema.call(this,o,e),!r)return;this.refs[e]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=GR.call(this,e);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{let r=e;this._cache.delete(r);let n=e[this.opts.schemaId];return n&&(n=(0,ps.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let r of e)this.addKeyword(r);return this}addKeyword(e,r){let n;if(typeof e=="string")n=e,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof e=="object"&&r===void 0){if(r=e,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(dj.call(this,n,r),!r)return(0,fp.eachItem)(n,i=>lp.call(this,i)),this;fj.call(this,r);let o={...r,type:(0,Ac.getJSONTypes)(r.type),schemaType:(0,Ac.getJSONTypes)(r.schemaType)};return(0,fp.eachItem)(n,o.type.length===0?i=>lp.call(this,i,o):i=>o.type.forEach(s=>lp.call(this,i,o,s))),this}getKeyword(e){let r=this.RULES.all[e];return typeof r=="object"?r.definition:!!r}removeKeyword(e){let{RULES:r}=this;delete r.keywords[e],delete r.all[e];for(let n of r.rules){let o=n.rules.findIndex(i=>i.keyword===e);o>=0&&n.rules.splice(o,1)}return this}addFormat(e,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[e]=r,this}errorsText(e=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!e||e.length===0?"No errors":e.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,i)=>o+r+i)}$dataMetaSchema(e,r){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let o of r){let i=o.split("/").slice(1),s=e;for(let a of i)s=s[a];for(let a in n){let c=n[a];if(typeof c!="object")continue;let{$data:u}=c.definition,d=s[a];u&&d&&(s[a]=WR(d))}}return e}_removeAllSchemas(e,r){for(let n in e){let o=e[n];(!r||r.test(n))&&(typeof o=="string"?delete e[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete e[n]))}}_addSchema(e,r,n,o=this.opts.validateSchema,i=this.opts.addUsedSchema){let s,{schemaId:a}=this.opts;if(typeof e=="object")s=e[a];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof e!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(e);if(c!==void 0)return c;n=(0,ps.normalizeId)(s||n);let u=ps.getSchemaRefs.call(this,e,n);return c=new fs.SchemaEnv({schema:e,schemaId:a,meta:r,baseId:n,localRefs:u}),this._cache.set(c.schema,c),i&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(e,!0),c}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):fs.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let r=this.opts;this.opts=this._metaOpts;try{fs.compileSchema.call(this,e)}finally{this.opts=r}}};hs.ValidationError=VL.default;hs.MissingRefError=ZR.default;Ne.default=hs;function HR(t,e,r,n="error"){for(let o in t){let i=o;i in e&&this.logger[n](`${r}: option ${o}. ${t[i]}`)}}function GR(t){return t=(0,ps.normalizeId)(t),this.schemas[t]||this.refs[t]}function nj(){let t=this.opts.schemas;if(t)if(Array.isArray(t))this.addSchema(t);else for(let e in t)this.addSchema(t[e],e)}function oj(){for(let t in this.opts.formats){let e=this.opts.formats[t];e&&this.addFormat(t,e)}}function ij(t){if(Array.isArray(t)){this.addVocabulary(t);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let e in t){let r=t[e];r.keyword||(r.keyword=e),this.addKeyword(r)}}function sj(){let t={...this.opts};for(let e of XL)delete t[e];return t}var aj={log(){},warn(){},error(){}};function cj(t){if(t===!1)return aj;if(t===void 0)return console;if(t.log&&t.warn&&t.error)return t;throw new Error("logger must implement log, warn and error methods")}var uj=/^[a-z_$][a-z0-9_$:-]*$/i;function dj(t,e){let{RULES:r}=this;if((0,fp.eachItem)(t,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!uj.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!e&&e.$data&&!("code"in e||"validate"in e))throw new Error('$data keyword must have "code" or "validate" function')}function lp(t,e,r){var n;let o=e?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:i}=this,s=o?i.post:i.rules.find(({type:c})=>c===r);if(s||(s={type:r,rules:[]},i.rules.push(s)),i.keywords[t]=!0,!e)return;let a={keyword:t,definition:{...e,type:(0,Ac.getJSONTypes)(e.type),schemaType:(0,Ac.getJSONTypes)(e.schemaType)}};e.before?lj.call(this,s,a,e.before):s.rules.push(a),i.all[t]=a,(n=e.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function lj(t,e,r){let n=t.rules.findIndex(o=>o.keyword===r);n>=0?t.rules.splice(n,0,e):(t.rules.push(e),this.logger.warn(`rule ${r} is not defined`))}function fj(t){let{metaSchema:e}=t;e!==void 0&&(t.$data&&this.opts.$data&&(e=WR(e)),t.validateSchema=this.compile(e,!0))}var pj={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function WR(t){return{anyOf:[t,pj]}}});var KR=C(pp=>{"use strict";Object.defineProperty(pp,"__esModule",{value:!0});var hj={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};pp.default=hj});var QR=C(Mn=>{"use strict";Object.defineProperty(Mn,"__esModule",{value:!0});Mn.callRef=Mn.getValidate=void 0;var mj=ds(),JR=wt(),rt=L(),Ao=fr(),YR=Cc(),Mc=B(),gj={keyword:"$ref",schemaType:"string",code(t){let{gen:e,schema:r,it:n}=t,{baseId:o,schemaEnv:i,validateName:s,opts:a,self:c}=n,{root:u}=i;if((r==="#"||r==="#/")&&o===u.baseId)return l();let d=YR.resolveRef.call(c,u,o,r);if(d===void 0)throw new mj.default(n.opts.uriResolver,o,r);if(d instanceof YR.SchemaEnv)return f(d);return p(d);function l(){if(i===u)return $c(t,s,i,i.$async);let m=e.scopeValue("root",{ref:u});return $c(t,(0,rt._)`${m}.validate`,u,u.$async)}function f(m){let h=XR(t,m);$c(t,h,m,m.$async)}function p(m){let h=e.scopeValue("schema",a.code.source===!0?{ref:m,code:(0,rt.stringify)(m)}:{ref:m}),g=e.name("valid"),v=t.subschema({schema:m,dataTypes:[],schemaPath:rt.nil,topSchemaRef:h,errSchemaPath:r},g);t.mergeEvaluated(v),t.ok(g)}}};function XR(t,e){let{gen:r}=t;return e.validate?r.scopeValue("validate",{ref:e.validate}):(0,rt._)`${r.scopeValue("wrapper",{ref:e})}.validate`}Mn.getValidate=XR;function $c(t,e,r,n){let{gen:o,it:i}=t,{allErrors:s,schemaEnv:a,opts:c}=i,u=c.passContext?Ao.default.this:rt.nil;n?d():l();function d(){if(!a.$async)throw new Error("async schema referenced by sync schema");let m=o.let("valid");o.try(()=>{o.code((0,rt._)`await ${(0,JR.callValidateCode)(t,e,u)}`),p(e),s||o.assign(m,!0)},h=>{o.if((0,rt._)`!(${h} instanceof ${i.ValidationError})`,()=>o.throw(h)),f(h),s||o.assign(m,!1)}),t.ok(m)}function l(){t.result((0,JR.callValidateCode)(t,e,u),()=>p(e),()=>f(e))}function f(m){let h=(0,rt._)`${m}.errors`;o.assign(Ao.default.vErrors,(0,rt._)`${Ao.default.vErrors} === null ? ${h} : ${Ao.default.vErrors}.concat(${h})`),o.assign(Ao.default.errors,(0,rt._)`${Ao.default.vErrors}.length`)}function p(m){var h;if(!i.opts.unevaluated)return;let g=(h=r?.validate)===null||h===void 0?void 0:h.evaluated;if(i.props!==!0)if(g&&!g.dynamicProps)g.props!==void 0&&(i.props=Mc.mergeEvaluated.props(o,g.props,i.props));else{let v=o.var("props",(0,rt._)`${m}.evaluated.props`);i.props=Mc.mergeEvaluated.props(o,v,i.props,rt.Name)}if(i.items!==!0)if(g&&!g.dynamicItems)g.items!==void 0&&(i.items=Mc.mergeEvaluated.items(o,g.items,i.items));else{let v=o.var("items",(0,rt._)`${m}.evaluated.items`);i.items=Mc.mergeEvaluated.items(o,v,i.items,rt.Name)}}}Mn.callRef=$c;Mn.default=gj});var eC=C(hp=>{"use strict";Object.defineProperty(hp,"__esModule",{value:!0});var yj=KR(),vj=QR(),_j=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",yj.default,vj.default];hp.default=_j});var tC=C(mp=>{"use strict";Object.defineProperty(mp,"__esModule",{value:!0});var Ic=L(),Vr=Ic.operators,Oc={maximum:{okStr:"<=",ok:Vr.LTE,fail:Vr.GT},minimum:{okStr:">=",ok:Vr.GTE,fail:Vr.LT},exclusiveMaximum:{okStr:"<",ok:Vr.LT,fail:Vr.GTE},exclusiveMinimum:{okStr:">",ok:Vr.GT,fail:Vr.LTE}},Sj={message:({keyword:t,schemaCode:e})=>(0,Ic.str)`must be ${Oc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Ic._)`{comparison: ${Oc[t].okStr}, limit: ${e}}`},wj={keyword:Object.keys(Oc),type:"number",schemaType:"number",$data:!0,error:Sj,code(t){let{keyword:e,data:r,schemaCode:n}=t;t.fail$data((0,Ic._)`${r} ${Oc[e].fail} ${n} || isNaN(${r})`)}};mp.default=wj});var rC=C(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});var ms=L(),bj={message:({schemaCode:t})=>(0,ms.str)`must be multiple of ${t}`,params:({schemaCode:t})=>(0,ms._)`{multipleOf: ${t}}`},Rj={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:bj,code(t){let{gen:e,data:r,schemaCode:n,it:o}=t,i=o.opts.multipleOfPrecision,s=e.let("res"),a=i?(0,ms._)`Math.abs(Math.round(${s}) - ${s}) > 1e-${i}`:(0,ms._)`${s} !== parseInt(${s})`;t.fail$data((0,ms._)`(${n} === 0 || (${s} = ${r}/${n}, ${a}))`)}};gp.default=Rj});var oC=C(yp=>{"use strict";Object.defineProperty(yp,"__esModule",{value:!0});function nC(t){let e=t.length,r=0,n=0,o;for(;n<e;)r++,o=t.charCodeAt(n++),o>=55296&&o<=56319&&n<e&&(o=t.charCodeAt(n),(o&64512)===56320&&n++);return r}yp.default=nC;nC.code='require("ajv/dist/runtime/ucs2length").default'});var iC=C(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});var $n=L(),Cj=B(),Pj=oC(),xj={message({keyword:t,schemaCode:e}){let r=t==="maxLength"?"more":"fewer";return(0,$n.str)`must NOT have ${r} than ${e} characters`},params:({schemaCode:t})=>(0,$n._)`{limit: ${t}}`},kj={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:xj,code(t){let{keyword:e,data:r,schemaCode:n,it:o}=t,i=e==="maxLength"?$n.operators.GT:$n.operators.LT,s=o.opts.unicode===!1?(0,$n._)`${r}.length`:(0,$n._)`${(0,Cj.useFunc)(t.gen,Pj.default)}(${r})`;t.fail$data((0,$n._)`${s} ${i} ${n}`)}};vp.default=kj});var sC=C(_p=>{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});var Ej=wt(),Tj=B(),Mo=L(),Aj={message:({schemaCode:t})=>(0,Mo.str)`must match pattern "${t}"`,params:({schemaCode:t})=>(0,Mo._)`{pattern: ${t}}`},Mj={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:Aj,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:i,it:s}=t,a=s.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=s.opts.code,u=c.code==="new RegExp"?(0,Mo._)`new RegExp`:(0,Tj.useFunc)(e,c),d=e.let("valid");e.try(()=>e.assign(d,(0,Mo._)`${u}(${i}, ${a}).test(${r})`),()=>e.assign(d,!1)),t.fail$data((0,Mo._)`!${d}`)}else{let c=(0,Ej.usePattern)(t,o);t.fail$data((0,Mo._)`!${c}.test(${r})`)}}};_p.default=Mj});var aC=C(Sp=>{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});var gs=L(),$j={message({keyword:t,schemaCode:e}){let r=t==="maxProperties"?"more":"fewer";return(0,gs.str)`must NOT have ${r} than ${e} properties`},params:({schemaCode:t})=>(0,gs._)`{limit: ${t}}`},Ij={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:$j,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxProperties"?gs.operators.GT:gs.operators.LT;t.fail$data((0,gs._)`Object.keys(${r}).length ${o} ${n}`)}};Sp.default=Ij});var cC=C(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});var ys=wt(),vs=L(),Oj=B(),zj={message:({params:{missingProperty:t}})=>(0,vs.str)`must have required property '${t}'`,params:({params:{missingProperty:t}})=>(0,vs._)`{missingProperty: ${t}}`},Nj={keyword:"required",type:"object",schemaType:"array",$data:!0,error:zj,code(t){let{gen:e,schema:r,schemaCode:n,data:o,$data:i,it:s}=t,{opts:a}=s;if(!i&&r.length===0)return;let c=r.length>=a.loopRequired;if(s.allErrors?u():d(),a.strictRequired){let p=t.parentSchema.properties,{definedProperties:m}=t.it;for(let h of r)if(p?.[h]===void 0&&!m.has(h)){let g=s.schemaEnv.baseId+s.errSchemaPath,v=`required property "${h}" is not defined at "${g}" (strictRequired)`;(0,Oj.checkStrictMode)(s,v,s.opts.strictRequired)}}function u(){if(c||i)t.block$data(vs.nil,l);else for(let p of r)(0,ys.checkReportMissingProp)(t,p)}function d(){let p=e.let("missing");if(c||i){let m=e.let("valid",!0);t.block$data(m,()=>f(p,m)),t.ok(m)}else e.if((0,ys.checkMissingProp)(t,r,p)),(0,ys.reportMissingProp)(t,p),e.else()}function l(){e.forOf("prop",n,p=>{t.setParams({missingProperty:p}),e.if((0,ys.noPropertyInData)(e,o,p,a.ownProperties),()=>t.error())})}function f(p,m){t.setParams({missingProperty:p}),e.forOf(p,n,()=>{e.assign(m,(0,ys.propertyInData)(e,o,p,a.ownProperties)),e.if((0,vs.not)(m),()=>{t.error(),e.break()})},vs.nil)}}};wp.default=Nj});var uC=C(bp=>{"use strict";Object.defineProperty(bp,"__esModule",{value:!0});var _s=L(),Dj={message({keyword:t,schemaCode:e}){let r=t==="maxItems"?"more":"fewer";return(0,_s.str)`must NOT have ${r} than ${e} items`},params:({schemaCode:t})=>(0,_s._)`{limit: ${t}}`},Lj={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:Dj,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxItems"?_s.operators.GT:_s.operators.LT;t.fail$data((0,_s._)`${r}.length ${o} ${n}`)}};bp.default=Lj});var zc=C(Rp=>{"use strict";Object.defineProperty(Rp,"__esModule",{value:!0});var dC=Bf();dC.code='require("ajv/dist/runtime/equal").default';Rp.default=dC});var lC=C(Pp=>{"use strict";Object.defineProperty(Pp,"__esModule",{value:!0});var Cp=is(),De=L(),jj=B(),Fj=zc(),Uj={message:({params:{i:t,j:e}})=>(0,De.str)`must NOT have duplicate items (items ## ${e} and ${t} are identical)`,params:({params:{i:t,j:e}})=>(0,De._)`{i: ${t}, j: ${e}}`},qj={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:Uj,code(t){let{gen:e,data:r,$data:n,schema:o,parentSchema:i,schemaCode:s,it:a}=t;if(!n&&!o)return;let c=e.let("valid"),u=i.items?(0,Cp.getSchemaTypes)(i.items):[];t.block$data(c,d,(0,De._)`${s} === false`),t.ok(c);function d(){let m=e.let("i",(0,De._)`${r}.length`),h=e.let("j");t.setParams({i:m,j:h}),e.assign(c,!0),e.if((0,De._)`${m} > 1`,()=>(l()?f:p)(m,h))}function l(){return u.length>0&&!u.some(m=>m==="object"||m==="array")}function f(m,h){let g=e.name("item"),v=(0,Cp.checkDataTypes)(u,g,a.opts.strictNumbers,Cp.DataType.Wrong),w=e.const("indices",(0,De._)`{}`);e.for((0,De._)`;${m}--;`,()=>{e.let(g,(0,De._)`${r}[${m}]`),e.if(v,(0,De._)`continue`),u.length>1&&e.if((0,De._)`typeof ${g} == "string"`,(0,De._)`${g} += "_"`),e.if((0,De._)`typeof ${w}[${g}] == "number"`,()=>{e.assign(h,(0,De._)`${w}[${g}]`),t.error(),e.assign(c,!1).break()}).code((0,De._)`${w}[${g}] = ${m}`)})}function p(m,h){let g=(0,jj.useFunc)(e,Fj.default),v=e.name("outer");e.label(v).for((0,De._)`;${m}--;`,()=>e.for((0,De._)`${h} = ${m}; ${h}--;`,()=>e.if((0,De._)`${g}(${r}[${m}], ${r}[${h}])`,()=>{t.error(),e.assign(c,!1).break(v)})))}}};Pp.default=qj});var fC=C(kp=>{"use strict";Object.defineProperty(kp,"__esModule",{value:!0});var xp=L(),Hj=B(),Gj=zc(),Zj={message:"must be equal to constant",params:({schemaCode:t})=>(0,xp._)`{allowedValue: ${t}}`},Bj={keyword:"const",$data:!0,error:Zj,code(t){let{gen:e,data:r,$data:n,schemaCode:o,schema:i}=t;n||i&&typeof i=="object"?t.fail$data((0,xp._)`!${(0,Hj.useFunc)(e,Gj.default)}(${r}, ${o})`):t.fail((0,xp._)`${i} !== ${r}`)}};kp.default=Bj});var pC=C(Ep=>{"use strict";Object.defineProperty(Ep,"__esModule",{value:!0});var Ss=L(),Wj=B(),Vj=zc(),Kj={message:"must be equal to one of the allowed values",params:({schemaCode:t})=>(0,Ss._)`{allowedValues: ${t}}`},Jj={keyword:"enum",schemaType:"array",$data:!0,error:Kj,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:i,it:s}=t;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let a=o.length>=s.opts.loopEnum,c,u=()=>c??(c=(0,Wj.useFunc)(e,Vj.default)),d;if(a||n)d=e.let("valid"),t.block$data(d,l);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let p=e.const("vSchema",i);d=(0,Ss.or)(...o.map((m,h)=>f(p,h)))}t.pass(d);function l(){e.assign(d,!1),e.forOf("v",i,p=>e.if((0,Ss._)`${u()}(${r}, ${p})`,()=>e.assign(d,!0).break()))}function f(p,m){let h=o[m];return typeof h=="object"&&h!==null?(0,Ss._)`${u()}(${r}, ${p}[${m}])`:(0,Ss._)`${r} === ${h}`}}};Ep.default=Jj});var hC=C(Tp=>{"use strict";Object.defineProperty(Tp,"__esModule",{value:!0});var Yj=tC(),Xj=rC(),Qj=iC(),e1=sC(),t1=aC(),r1=cC(),n1=uC(),o1=lC(),i1=fC(),s1=pC(),a1=[Yj.default,Xj.default,Qj.default,e1.default,t1.default,r1.default,n1.default,o1.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},i1.default,s1.default];Tp.default=a1});var Mp=C(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.validateAdditionalItems=void 0;var In=L(),Ap=B(),c1={message:({params:{len:t}})=>(0,In.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,In._)`{limit: ${t}}`},u1={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:c1,code(t){let{parentSchema:e,it:r}=t,{items:n}=e;if(!Array.isArray(n)){(0,Ap.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}mC(t,n)}};function mC(t,e){let{gen:r,schema:n,data:o,keyword:i,it:s}=t;s.items=!0;let a=r.const("len",(0,In._)`${o}.length`);if(n===!1)t.setParams({len:e.length}),t.pass((0,In._)`${a} <= ${e.length}`);else if(typeof n=="object"&&!(0,Ap.alwaysValidSchema)(s,n)){let u=r.var("valid",(0,In._)`${a} <= ${e.length}`);r.if((0,In.not)(u),()=>c(u)),t.ok(u)}function c(u){r.forRange("i",e.length,a,d=>{t.subschema({keyword:i,dataProp:d,dataPropType:Ap.Type.Num},u),s.allErrors||r.if((0,In.not)(u),()=>r.break())})}}ws.validateAdditionalItems=mC;ws.default=u1});var $p=C(bs=>{"use strict";Object.defineProperty(bs,"__esModule",{value:!0});bs.validateTuple=void 0;var gC=L(),Nc=B(),d1=wt(),l1={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(t){let{schema:e,it:r}=t;if(Array.isArray(e))return yC(t,"additionalItems",e);r.items=!0,!(0,Nc.alwaysValidSchema)(r,e)&&t.ok((0,d1.validateArray)(t))}};function yC(t,e,r=t.schema){let{gen:n,parentSchema:o,data:i,keyword:s,it:a}=t;d(o),a.opts.unevaluated&&r.length&&a.items!==!0&&(a.items=Nc.mergeEvaluated.items(n,r.length,a.items));let c=n.name("valid"),u=n.const("len",(0,gC._)`${i}.length`);r.forEach((l,f)=>{(0,Nc.alwaysValidSchema)(a,l)||(n.if((0,gC._)`${u} > ${f}`,()=>t.subschema({keyword:s,schemaProp:f,dataProp:f},c)),t.ok(c))});function d(l){let{opts:f,errSchemaPath:p}=a,m=r.length,h=m===l.minItems&&(m===l.maxItems||l[e]===!1);if(f.strictTuples&&!h){let g=`"${s}" is ${m}-tuple, but minItems or maxItems/${e} are not specified or different at path "${p}"`;(0,Nc.checkStrictMode)(a,g,f.strictTuples)}}}bs.validateTuple=yC;bs.default=l1});var vC=C(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});var f1=$p(),p1={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:t=>(0,f1.validateTuple)(t,"items")};Ip.default=p1});var SC=C(Op=>{"use strict";Object.defineProperty(Op,"__esModule",{value:!0});var _C=L(),h1=B(),m1=wt(),g1=Mp(),y1={message:({params:{len:t}})=>(0,_C.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,_C._)`{limit: ${t}}`},v1={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:y1,code(t){let{schema:e,parentSchema:r,it:n}=t,{prefixItems:o}=r;n.items=!0,!(0,h1.alwaysValidSchema)(n,e)&&(o?(0,g1.validateAdditionalItems)(t,o):t.ok((0,m1.validateArray)(t)))}};Op.default=v1});var wC=C(zp=>{"use strict";Object.defineProperty(zp,"__esModule",{value:!0});var Rt=L(),Dc=B(),_1={message:({params:{min:t,max:e}})=>e===void 0?(0,Rt.str)`must contain at least ${t} valid item(s)`:(0,Rt.str)`must contain at least ${t} and no more than ${e} valid item(s)`,params:({params:{min:t,max:e}})=>e===void 0?(0,Rt._)`{minContains: ${t}}`:(0,Rt._)`{minContains: ${t}, maxContains: ${e}}`},S1={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:_1,code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:i}=t,s,a,{minContains:c,maxContains:u}=n;i.opts.next?(s=c===void 0?1:c,a=u):s=1;let d=e.const("len",(0,Rt._)`${o}.length`);if(t.setParams({min:s,max:a}),a===void 0&&s===0){(0,Dc.checkStrictMode)(i,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&s>a){(0,Dc.checkStrictMode)(i,'"minContains" > "maxContains" is always invalid'),t.fail();return}if((0,Dc.alwaysValidSchema)(i,r)){let h=(0,Rt._)`${d} >= ${s}`;a!==void 0&&(h=(0,Rt._)`${h} && ${d} <= ${a}`),t.pass(h);return}i.items=!0;let l=e.name("valid");a===void 0&&s===1?p(l,()=>e.if(l,()=>e.break())):s===0?(e.let(l,!0),a!==void 0&&e.if((0,Rt._)`${o}.length > 0`,f)):(e.let(l,!1),f()),t.result(l,()=>t.reset());function f(){let h=e.name("_valid"),g=e.let("count",0);p(h,()=>e.if(h,()=>m(g)))}function p(h,g){e.forRange("i",0,d,v=>{t.subschema({keyword:"contains",dataProp:v,dataPropType:Dc.Type.Num,compositeRule:!0},h),g()})}function m(h){e.code((0,Rt._)`${h}++`),a===void 0?e.if((0,Rt._)`${h} >= ${s}`,()=>e.assign(l,!0).break()):(e.if((0,Rt._)`${h} > ${a}`,()=>e.assign(l,!1).break()),s===1?e.assign(l,!0):e.if((0,Rt._)`${h} >= ${s}`,()=>e.assign(l,!0)))}}};zp.default=S1});var CC=C(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});Yt.validateSchemaDeps=Yt.validatePropertyDeps=Yt.error=void 0;var Np=L(),w1=B(),Rs=wt();Yt.error={message:({params:{property:t,depsCount:e,deps:r}})=>{let n=e===1?"property":"properties";return(0,Np.str)`must have ${n} ${r} when property ${t} is present`},params:({params:{property:t,depsCount:e,deps:r,missingProperty:n}})=>(0,Np._)`{property: ${t},
1
+ var oT=Object.create;var Du=Object.defineProperty;var iT=Object.getOwnPropertyDescriptor;var sT=Object.getOwnPropertyNames;var aT=Object.getPrototypeOf,cT=Object.prototype.hasOwnProperty;var wr=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var C=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},Lu=(t,e)=>{for(var r in e)Du(t,r,{get:e[r],enumerable:!0})},uT=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of sT(e))!cT.call(t,o)&&o!==r&&Du(t,o,{get:()=>e[o],enumerable:!(n=iT(e,o))||n.enumerable});return t};var Ys=(t,e,r)=>(r=t!=null?oT(aT(t)):{},uT(e||!t||!t.__esModule?Du(r,"default",{value:t,enumerable:!0}):r,t));var Xi=C(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.regexpCode=J.getEsmExportName=J.getProperty=J.safeStringify=J.stringify=J.strConcat=J.addCodeArg=J.str=J._=J.nil=J._Code=J.Name=J.IDENTIFIER=J._CodeOrName=void 0;var Ji=class{};J._CodeOrName=Ji;J.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Rn=class extends Ji{constructor(e){if(super(),!J.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};J.Name=Rn;var St=class extends Ji{constructor(e){super(),this._items=typeof e=="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((r,n)=>(n instanceof Rn&&(r[n.str]=(r[n.str]||0)+1),r),{})}};J._Code=St;J.nil=new St("");function Cb(t,...e){let r=[t[0]],n=0;for(;n<e.length;)vf(r,e[n]),r.push(t[++n]);return new St(r)}J._=Cb;var yf=new St("+");function Pb(t,...e){let r=[Yi(t[0])],n=0;for(;n<e.length;)r.push(yf),vf(r,e[n]),r.push(yf,Yi(t[++n]));return Gz(r),new St(r)}J.str=Pb;function vf(t,e){e instanceof St?t.push(...e._items):e instanceof Rn?t.push(e):t.push(Wz(e))}J.addCodeArg=vf;function Gz(t){let e=1;for(;e<t.length-1;){if(t[e]===yf){let r=Zz(t[e-1],t[e+1]);if(r!==void 0){t.splice(e-1,3,r);continue}t[e++]="+"}e++}}function Zz(t,e){if(e==='""')return t;if(t==='""')return e;if(typeof t=="string")return e instanceof Rn||t[t.length-1]!=='"'?void 0:typeof e!="string"?`${t.slice(0,-1)}${e}"`:e[0]==='"'?t.slice(0,-1)+e.slice(1):void 0;if(typeof e=="string"&&e[0]==='"'&&!(t instanceof Rn))return`"${t}${e.slice(1)}`}function Bz(t,e){return e.emptyStr()?t:t.emptyStr()?e:Pb`${t}${e}`}J.strConcat=Bz;function Wz(t){return typeof t=="number"||typeof t=="boolean"||t===null?t:Yi(Array.isArray(t)?t.join(","):t)}function Vz(t){return new St(Yi(t))}J.stringify=Vz;function Yi(t){return JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}J.safeStringify=Yi;function Kz(t){return typeof t=="string"&&J.IDENTIFIER.test(t)?new St(`.${t}`):Cb`[${t}]`}J.getProperty=Kz;function Jz(t){if(typeof t=="string"&&J.IDENTIFIER.test(t))return new St(`${t}`);throw new Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}J.getEsmExportName=Jz;function Yz(t){return new St(t.toString())}J.regexpCode=Yz});var wf=C(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.ValueScope=et.ValueScopeName=et.Scope=et.varKinds=et.UsedValueState=void 0;var Qe=Xi(),_f=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},dc;(function(t){t[t.Started=0]="Started",t[t.Completed=1]="Completed"})(dc||(et.UsedValueState=dc={}));et.varKinds={const:new Qe.Name("const"),let:new Qe.Name("let"),var:new Qe.Name("var")};var lc=class{constructor({prefixes:e,parent:r}={}){this._names={},this._prefixes=e,this._parent=r}toName(e){return e instanceof Qe.Name?e:this.name(e)}name(e){return new Qe.Name(this._newName(e))}_newName(e){let r=this._names[e]||this._nameGroup(e);return`${e}${r.index++}`}_nameGroup(e){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(e)||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};et.Scope=lc;var fc=class extends Qe.Name{constructor(e,r){super(r),this.prefix=e}setValue(e,{property:r,itemIndex:n}){this.value=e,this.scopePath=(0,Qe._)`.${new Qe.Name(r)}[${n}]`}};et.ValueScopeName=fc;var Xz=(0,Qe._)`\n`,Sf=class extends lc{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?Xz:Qe.nil}}get(){return this._scope}name(e){return new fc(e,this._newName(e))}value(e,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(e),{prefix:i}=o,s=(n=r.key)!==null&&n!==void 0?n:r.ref,a=this._values[i];if(a){let d=a.get(s);if(d)return d}else a=this._values[i]=new Map;a.set(s,o);let c=this._scope[i]||(this._scope[i]=[]),u=c.length;return c[u]=r.ref,o.setValue(r,{property:i,itemIndex:u}),o}getValue(e,r){let n=this._values[e];if(n)return n.get(r)}scopeRefs(e,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Qe._)`${e}${n.scopePath}`})}scopeCode(e=this._values,r,n){return this._reduceValues(e,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(e,r,n={},o){let i=Qe.nil;for(let s in e){let a=e[s];if(!a)continue;let c=n[s]=n[s]||new Map;a.forEach(u=>{if(c.has(u))return;c.set(u,dc.Started);let d=r(u);if(d){let l=this.opts.es5?et.varKinds.var:et.varKinds.const;i=(0,Qe._)`${i}${l} ${u} = ${d};${this.opts._n}`}else if(d=o?.(u))i=(0,Qe._)`${i}${d}${this.opts._n}`;else throw new _f(u);c.set(u,dc.Completed)})}return i}};et.ValueScope=Sf});var j=C(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.or=F.and=F.not=F.CodeGen=F.operators=F.varKinds=F.ValueScopeName=F.ValueScope=F.Scope=F.Name=F.regexpCode=F.stringify=F.getProperty=F.nil=F.strConcat=F.str=F._=void 0;var G=Xi(),$t=wf(),qr=Xi();Object.defineProperty(F,"_",{enumerable:!0,get:function(){return qr._}});Object.defineProperty(F,"str",{enumerable:!0,get:function(){return qr.str}});Object.defineProperty(F,"strConcat",{enumerable:!0,get:function(){return qr.strConcat}});Object.defineProperty(F,"nil",{enumerable:!0,get:function(){return qr.nil}});Object.defineProperty(F,"getProperty",{enumerable:!0,get:function(){return qr.getProperty}});Object.defineProperty(F,"stringify",{enumerable:!0,get:function(){return qr.stringify}});Object.defineProperty(F,"regexpCode",{enumerable:!0,get:function(){return qr.regexpCode}});Object.defineProperty(F,"Name",{enumerable:!0,get:function(){return qr.Name}});var gc=wf();Object.defineProperty(F,"Scope",{enumerable:!0,get:function(){return gc.Scope}});Object.defineProperty(F,"ValueScope",{enumerable:!0,get:function(){return gc.ValueScope}});Object.defineProperty(F,"ValueScopeName",{enumerable:!0,get:function(){return gc.ValueScopeName}});Object.defineProperty(F,"varKinds",{enumerable:!0,get:function(){return gc.varKinds}});F.operators={GT:new G._Code(">"),GTE:new G._Code(">="),LT:new G._Code("<"),LTE:new G._Code("<="),EQ:new G._Code("==="),NEQ:new G._Code("!=="),NOT:new G._Code("!"),OR:new G._Code("||"),AND:new G._Code("&&"),ADD:new G._Code("+")};var dr=class{optimizeNodes(){return this}optimizeNames(e,r){return this}},bf=class extends dr{constructor(e,r,n){super(),this.varKind=e,this.name=r,this.rhs=n}render({es5:e,_n:r}){let n=e?$t.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(e,r){if(e[this.name.str])return this.rhs&&(this.rhs=bo(this.rhs,e,r)),this}get names(){return this.rhs instanceof G._CodeOrName?this.rhs.names:{}}},pc=class extends dr{constructor(e,r,n){super(),this.lhs=e,this.rhs=r,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,r){if(!(this.lhs instanceof G.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=bo(this.rhs,e,r),this}get names(){let e=this.lhs instanceof G.Name?{}:{...this.lhs.names};return mc(e,this.rhs)}},Rf=class extends pc{constructor(e,r,n,o){super(e,n,o),this.op=r}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},Cf=class extends dr{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},Pf=class extends dr{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}},xf=class extends dr{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},kf=class extends dr{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,r){return this.code=bo(this.code,e,r),this}get names(){return this.code instanceof G._CodeOrName?this.code.names:{}}},Qi=class extends dr{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((r,n)=>r+n.render(e),"")}optimizeNodes(){let{nodes:e}=this,r=e.length;for(;r--;){let n=e[r].optimizeNodes();Array.isArray(n)?e.splice(r,1,...n):n?e[r]=n:e.splice(r,1)}return e.length>0?this:void 0}optimizeNames(e,r){let{nodes:n}=this,o=n.length;for(;o--;){let i=n[o];i.optimizeNames(e,r)||(Qz(e,i.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,r)=>xn(e,r.names),{})}},lr=class extends Qi{render(e){return"{"+e._n+super.render(e)+"}"+e._n}},Ef=class extends Qi{},wo=class extends lr{};wo.kind="else";var Cn=class t extends lr{constructor(e,r){super(r),this.condition=e}render(e){let r=`if(${this.condition})`+super.render(e);return this.else&&(r+="else "+this.else.render(e)),r}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new wo(n):n}if(r)return e===!1?r instanceof t?r:r.nodes:this.nodes.length?this:new t(xb(e),r instanceof t?[r]:r.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(e,r),!!(super.optimizeNames(e,r)||this.else))return this.condition=bo(this.condition,e,r),this}get names(){let e=super.names;return mc(e,this.condition),this.else&&xn(e,this.else.names),e}};Cn.kind="if";var Pn=class extends lr{};Pn.kind="for";var Tf=class extends Pn{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iteration=bo(this.iteration,e,r),this}get names(){return xn(super.names,this.iteration.names)}},Af=class extends Pn{constructor(e,r,n,o){super(),this.varKind=e,this.name=r,this.from=n,this.to=o}render(e){let r=e.es5?$t.varKinds.var:this.varKind,{name:n,from:o,to:i}=this;return`for(${r} ${n}=${o}; ${n}<${i}; ${n}++)`+super.render(e)}get names(){let e=mc(super.names,this.from);return mc(e,this.to)}},hc=class extends Pn{constructor(e,r,n,o){super(),this.loop=e,this.varKind=r,this.name=n,this.iterable=o}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iterable=bo(this.iterable,e,r),this}get names(){return xn(super.names,this.iterable.names)}},es=class extends lr{constructor(e,r,n){super(),this.name=e,this.args=r,this.async=n}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}};es.kind="func";var ts=class extends Qi{render(e){return"return "+super.render(e)}};ts.kind="return";var Mf=class extends lr{render(e){let r="try"+super.render(e);return this.catch&&(r+=this.catch.render(e)),this.finally&&(r+=this.finally.render(e)),r}optimizeNodes(){var e,r;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(e,r){var n,o;return super.optimizeNames(e,r),(n=this.catch)===null||n===void 0||n.optimizeNames(e,r),(o=this.finally)===null||o===void 0||o.optimizeNames(e,r),this}get names(){let e=super.names;return this.catch&&xn(e,this.catch.names),this.finally&&xn(e,this.finally.names),e}},rs=class extends lr{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};rs.kind="catch";var ns=class extends lr{render(e){return"finally"+super.render(e)}};ns.kind="finally";var $f=class{constructor(e,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
2
+ `:""},this._extScope=e,this._scope=new $t.Scope({parent:e}),this._nodes=[new Ef]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,r){let n=this._extScope.value(e,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,r){return this._extScope.getValue(e,r)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,r,n,o){let i=this._scope.toName(r);return n!==void 0&&o&&(this._constants[i.str]=n),this._leafNode(new bf(e,i,n)),i}const(e,r,n){return this._def($t.varKinds.const,e,r,n)}let(e,r,n){return this._def($t.varKinds.let,e,r,n)}var(e,r,n){return this._def($t.varKinds.var,e,r,n)}assign(e,r,n){return this._leafNode(new pc(e,r,n))}add(e,r){return this._leafNode(new Rf(e,F.operators.ADD,r))}code(e){return typeof e=="function"?e():e!==G.nil&&this._leafNode(new kf(e)),this}object(...e){let r=["{"];for(let[n,o]of e)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,G.addCodeArg)(r,o));return r.push("}"),new G._Code(r)}if(e,r,n){if(this._blockNode(new Cn(e)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new Cn(e))}else(){return this._elseNode(new wo)}endIf(){return this._endBlockNode(Cn,wo)}_for(e,r){return this._blockNode(e),r&&this.code(r).endFor(),this}for(e,r){return this._for(new Tf(e),r)}forRange(e,r,n,o,i=this.opts.es5?$t.varKinds.var:$t.varKinds.let){let s=this._scope.toName(e);return this._for(new Af(i,s,r,n),()=>o(s))}forOf(e,r,n,o=$t.varKinds.const){let i=this._scope.toName(e);if(this.opts.es5){let s=r instanceof G.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,G._)`${s}.length`,a=>{this.var(i,(0,G._)`${s}[${a}]`),n(i)})}return this._for(new hc("of",o,i,r),()=>n(i))}forIn(e,r,n,o=this.opts.es5?$t.varKinds.var:$t.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,G._)`Object.keys(${r})`,n);let i=this._scope.toName(e);return this._for(new hc("in",o,i,r),()=>n(i))}endFor(){return this._endBlockNode(Pn)}label(e){return this._leafNode(new Cf(e))}break(e){return this._leafNode(new Pf(e))}return(e){let r=new ts;if(this._blockNode(r),this.code(e),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(ts)}try(e,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Mf;if(this._blockNode(o),this.code(e),r){let i=this.name("e");this._currNode=o.catch=new rs(i),r(i)}return n&&(this._currNode=o.finally=new ns,this.code(n)),this._endBlockNode(rs,ns)}throw(e){return this._leafNode(new xf(e))}block(e,r){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(r),this}endBlock(e){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||e!==void 0&&n!==e)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=r,this}func(e,r=G.nil,n,o){return this._blockNode(new es(e,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(es)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,r){let n=this._currNode;if(n instanceof e||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${e.kind}/${r.kind}`:e.kind}"`)}_elseNode(e){let r=this._currNode;if(!(r instanceof Cn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let r=this._nodes;r[r.length-1]=e}};F.CodeGen=$f;function xn(t,e){for(let r in e)t[r]=(t[r]||0)+(e[r]||0);return t}function mc(t,e){return e instanceof G._CodeOrName?xn(t,e.names):t}function bo(t,e,r){if(t instanceof G.Name)return n(t);if(!o(t))return t;return new G._Code(t._items.reduce((i,s)=>(s instanceof G.Name&&(s=n(s)),s instanceof G._Code?i.push(...s._items):i.push(s),i),[]));function n(i){let s=r[i.str];return s===void 0||e[i.str]!==1?i:(delete e[i.str],s)}function o(i){return i instanceof G._Code&&i._items.some(s=>s instanceof G.Name&&e[s.str]===1&&r[s.str]!==void 0)}}function Qz(t,e){for(let r in e)t[r]=(t[r]||0)-(e[r]||0)}function xb(t){return typeof t=="boolean"||typeof t=="number"||t===null?!t:(0,G._)`!${If(t)}`}F.not=xb;var eN=kb(F.operators.AND);function tN(...t){return t.reduce(eN)}F.and=tN;var rN=kb(F.operators.OR);function nN(...t){return t.reduce(rN)}F.or=nN;function kb(t){return(e,r)=>e===G.nil?r:r===G.nil?e:(0,G._)`${If(e)} ${t} ${If(r)}`}function If(t){return t instanceof G.Name?t:(0,G._)`(${t})`}});var B=C(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});U.checkStrictMode=U.getErrorPath=U.Type=U.useFunc=U.setEvaluated=U.evaluatedPropsToName=U.mergeEvaluated=U.eachItem=U.unescapeJsonPointer=U.escapeJsonPointer=U.escapeFragment=U.unescapeFragment=U.schemaRefOrVal=U.schemaHasRulesButRef=U.schemaHasRules=U.checkUnknownRules=U.alwaysValidSchema=U.toHash=void 0;var se=j(),oN=Xi();function iN(t){let e={};for(let r of t)e[r]=!0;return e}U.toHash=iN;function sN(t,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(Ab(t,e),!Mb(e,t.self.RULES.all))}U.alwaysValidSchema=sN;function Ab(t,e=t.schema){let{opts:r,self:n}=t;if(!r.strictSchema||typeof e=="boolean")return;let o=n.RULES.keywords;for(let i in e)o[i]||Ob(t,`unknown keyword: "${i}"`)}U.checkUnknownRules=Ab;function Mb(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(e[r])return!0;return!1}U.schemaHasRules=Mb;function aN(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(r!=="$ref"&&e.all[r])return!0;return!1}U.schemaHasRulesButRef=aN;function cN({topSchemaRef:t,schemaPath:e},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,se._)`${r}`}return(0,se._)`${t}${e}${(0,se.getProperty)(n)}`}U.schemaRefOrVal=cN;function uN(t){return $b(decodeURIComponent(t))}U.unescapeFragment=uN;function dN(t){return encodeURIComponent(zf(t))}U.escapeFragment=dN;function zf(t){return typeof t=="number"?`${t}`:t.replace(/~/g,"~0").replace(/\//g,"~1")}U.escapeJsonPointer=zf;function $b(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}U.unescapeJsonPointer=$b;function lN(t,e){if(Array.isArray(t))for(let r of t)e(r);else e(t)}U.eachItem=lN;function Eb({mergeNames:t,mergeToName:e,mergeValues:r,resultToName:n}){return(o,i,s,a)=>{let c=s===void 0?i:s instanceof se.Name?(i instanceof se.Name?t(o,i,s):e(o,i,s),s):i instanceof se.Name?(e(o,s,i),i):r(i,s);return a===se.Name&&!(c instanceof se.Name)?n(o,c):c}}U.mergeEvaluated={props:Eb({mergeNames:(t,e,r)=>t.if((0,se._)`${r} !== true && ${e} !== undefined`,()=>{t.if((0,se._)`${e} === true`,()=>t.assign(r,!0),()=>t.assign(r,(0,se._)`${r} || {}`).code((0,se._)`Object.assign(${r}, ${e})`))}),mergeToName:(t,e,r)=>t.if((0,se._)`${r} !== true`,()=>{e===!0?t.assign(r,!0):(t.assign(r,(0,se._)`${r} || {}`),Nf(t,r,e))}),mergeValues:(t,e)=>t===!0?!0:{...t,...e},resultToName:Ib}),items:Eb({mergeNames:(t,e,r)=>t.if((0,se._)`${r} !== true && ${e} !== undefined`,()=>t.assign(r,(0,se._)`${e} === true ? true : ${r} > ${e} ? ${r} : ${e}`)),mergeToName:(t,e,r)=>t.if((0,se._)`${r} !== true`,()=>t.assign(r,e===!0?!0:(0,se._)`${r} > ${e} ? ${r} : ${e}`)),mergeValues:(t,e)=>t===!0?!0:Math.max(t,e),resultToName:(t,e)=>t.var("items",e)})};function Ib(t,e){if(e===!0)return t.var("props",!0);let r=t.var("props",(0,se._)`{}`);return e!==void 0&&Nf(t,r,e),r}U.evaluatedPropsToName=Ib;function Nf(t,e,r){Object.keys(r).forEach(n=>t.assign((0,se._)`${e}${(0,se.getProperty)(n)}`,!0))}U.setEvaluated=Nf;var Tb={};function fN(t,e){return t.scopeValue("func",{ref:e,code:Tb[e.code]||(Tb[e.code]=new oN._Code(e.code))})}U.useFunc=fN;var Of;(function(t){t[t.Num=0]="Num",t[t.Str=1]="Str"})(Of||(U.Type=Of={}));function pN(t,e,r){if(t instanceof se.Name){let n=e===Of.Num;return r?n?(0,se._)`"[" + ${t} + "]"`:(0,se._)`"['" + ${t} + "']"`:n?(0,se._)`"/" + ${t}`:(0,se._)`"/" + ${t}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,se.getProperty)(t).toString():"/"+zf(t)}U.getErrorPath=pN;function Ob(t,e,r=t.opts.strictSchema){if(r){if(e=`strict mode: ${e}`,r===!0)throw new Error(e);t.self.logger.warn(e)}}U.checkStrictMode=Ob});var fr=C(Df=>{"use strict";Object.defineProperty(Df,"__esModule",{value:!0});var je=j(),hN={data:new je.Name("data"),valCxt:new je.Name("valCxt"),instancePath:new je.Name("instancePath"),parentData:new je.Name("parentData"),parentDataProperty:new je.Name("parentDataProperty"),rootData:new je.Name("rootData"),dynamicAnchors:new je.Name("dynamicAnchors"),vErrors:new je.Name("vErrors"),errors:new je.Name("errors"),this:new je.Name("this"),self:new je.Name("self"),scope:new je.Name("scope"),json:new je.Name("json"),jsonPos:new je.Name("jsonPos"),jsonLen:new je.Name("jsonLen"),jsonPart:new je.Name("jsonPart")};Df.default=hN});var os=C(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.extendErrors=Fe.resetErrorsCount=Fe.reportExtraError=Fe.reportError=Fe.keyword$DataError=Fe.keywordError=void 0;var W=j(),yc=B(),He=fr();Fe.keywordError={message:({keyword:t})=>(0,W.str)`must pass "${t}" keyword validation`};Fe.keyword$DataError={message:({keyword:t,schemaType:e})=>e?(0,W.str)`"${t}" keyword must be ${e} ($data)`:(0,W.str)`"${t}" keyword is invalid ($data)`};function mN(t,e=Fe.keywordError,r,n){let{it:o}=t,{gen:i,compositeRule:s,allErrors:a}=o,c=Db(t,e,r);n??(s||a)?zb(i,c):Nb(o,(0,W._)`[${c}]`)}Fe.reportError=mN;function gN(t,e=Fe.keywordError,r){let{it:n}=t,{gen:o,compositeRule:i,allErrors:s}=n,a=Db(t,e,r);zb(o,a),i||s||Nb(n,He.default.vErrors)}Fe.reportExtraError=gN;function yN(t,e){t.assign(He.default.errors,e),t.if((0,W._)`${He.default.vErrors} !== null`,()=>t.if(e,()=>t.assign((0,W._)`${He.default.vErrors}.length`,e),()=>t.assign(He.default.vErrors,null)))}Fe.resetErrorsCount=yN;function vN({gen:t,keyword:e,schemaValue:r,data:n,errsCount:o,it:i}){if(o===void 0)throw new Error("ajv implementation error");let s=t.name("err");t.forRange("i",o,He.default.errors,a=>{t.const(s,(0,W._)`${He.default.vErrors}[${a}]`),t.if((0,W._)`${s}.instancePath === undefined`,()=>t.assign((0,W._)`${s}.instancePath`,(0,W.strConcat)(He.default.instancePath,i.errorPath))),t.assign((0,W._)`${s}.schemaPath`,(0,W.str)`${i.errSchemaPath}/${e}`),i.opts.verbose&&(t.assign((0,W._)`${s}.schema`,r),t.assign((0,W._)`${s}.data`,n))})}Fe.extendErrors=vN;function zb(t,e){let r=t.const("err",e);t.if((0,W._)`${He.default.vErrors} === null`,()=>t.assign(He.default.vErrors,(0,W._)`[${r}]`),(0,W._)`${He.default.vErrors}.push(${r})`),t.code((0,W._)`${He.default.errors}++`)}function Nb(t,e){let{gen:r,validateName:n,schemaEnv:o}=t;o.$async?r.throw((0,W._)`new ${t.ValidationError}(${e})`):(r.assign((0,W._)`${n}.errors`,e),r.return(!1))}var kn={keyword:new W.Name("keyword"),schemaPath:new W.Name("schemaPath"),params:new W.Name("params"),propertyName:new W.Name("propertyName"),message:new W.Name("message"),schema:new W.Name("schema"),parentSchema:new W.Name("parentSchema")};function Db(t,e,r){let{createErrors:n}=t.it;return n===!1?(0,W._)`{}`:_N(t,e,r)}function _N(t,e,r={}){let{gen:n,it:o}=t,i=[SN(o,r),wN(t,r)];return bN(t,e,i),n.object(...i)}function SN({errorPath:t},{instancePath:e}){let r=e?(0,W.str)`${t}${(0,yc.getErrorPath)(e,yc.Type.Str)}`:t;return[He.default.instancePath,(0,W.strConcat)(He.default.instancePath,r)]}function wN({keyword:t,it:{errSchemaPath:e}},{schemaPath:r,parentSchema:n}){let o=n?e:(0,W.str)`${e}/${t}`;return r&&(o=(0,W.str)`${o}${(0,yc.getErrorPath)(r,yc.Type.Str)}`),[kn.schemaPath,o]}function bN(t,{params:e,message:r},n){let{keyword:o,data:i,schemaValue:s,it:a}=t,{opts:c,propertyName:u,topSchemaRef:d,schemaPath:l}=a;n.push([kn.keyword,o],[kn.params,typeof e=="function"?e(t):e||(0,W._)`{}`]),c.messages&&n.push([kn.message,typeof r=="function"?r(t):r]),c.verbose&&n.push([kn.schema,s],[kn.parentSchema,(0,W._)`${d}${l}`],[He.default.data,i]),u&&n.push([kn.propertyName,u])}});var jb=C(Ro=>{"use strict";Object.defineProperty(Ro,"__esModule",{value:!0});Ro.boolOrEmptySchema=Ro.topBoolOrEmptySchema=void 0;var RN=os(),CN=j(),PN=fr(),xN={message:"boolean schema is false"};function kN(t){let{gen:e,schema:r,validateName:n}=t;r===!1?Lb(t,!1):typeof r=="object"&&r.$async===!0?e.return(PN.default.data):(e.assign((0,CN._)`${n}.errors`,null),e.return(!0))}Ro.topBoolOrEmptySchema=kN;function EN(t,e){let{gen:r,schema:n}=t;n===!1?(r.var(e,!1),Lb(t)):r.var(e,!0)}Ro.boolOrEmptySchema=EN;function Lb(t,e){let{gen:r,data:n}=t,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:t};(0,RN.reportError)(o,xN,void 0,e)}});var Lf=C(Co=>{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.getRules=Co.isJSONType=void 0;var TN=["string","number","integer","boolean","null","object","array"],AN=new Set(TN);function MN(t){return typeof t=="string"&&AN.has(t)}Co.isJSONType=MN;function $N(){let t={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...t,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},t.number,t.string,t.array,t.object],post:{rules:[]},all:{},keywords:{}}}Co.getRules=$N});var jf=C(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.shouldUseRule=Hr.shouldUseGroup=Hr.schemaHasRulesForType=void 0;function IN({schema:t,self:e},r){let n=e.RULES.types[r];return n&&n!==!0&&Fb(t,n)}Hr.schemaHasRulesForType=IN;function Fb(t,e){return e.rules.some(r=>Ub(t,r))}Hr.shouldUseGroup=Fb;function Ub(t,e){var r;return t[e.keyword]!==void 0||((r=e.definition.implements)===null||r===void 0?void 0:r.some(n=>t[n]!==void 0))}Hr.shouldUseRule=Ub});var is=C(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});Ue.reportTypeError=Ue.checkDataTypes=Ue.checkDataType=Ue.coerceAndCheckDataType=Ue.getJSONTypes=Ue.getSchemaTypes=Ue.DataType=void 0;var ON=Lf(),zN=jf(),NN=os(),L=j(),qb=B(),Po;(function(t){t[t.Correct=0]="Correct",t[t.Wrong=1]="Wrong"})(Po||(Ue.DataType=Po={}));function DN(t){let e=Hb(t.type);if(e.includes("null")){if(t.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&t.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');t.nullable===!0&&e.push("null")}return e}Ue.getSchemaTypes=DN;function Hb(t){let e=Array.isArray(t)?t:t?[t]:[];if(e.every(ON.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}Ue.getJSONTypes=Hb;function LN(t,e){let{gen:r,data:n,opts:o}=t,i=jN(e,o.coerceTypes),s=e.length>0&&!(i.length===0&&e.length===1&&(0,zN.schemaHasRulesForType)(t,e[0]));if(s){let a=Uf(e,n,o.strictNumbers,Po.Wrong);r.if(a,()=>{i.length?FN(t,e,i):qf(t)})}return s}Ue.coerceAndCheckDataType=LN;var Gb=new Set(["string","number","integer","boolean","null"]);function jN(t,e){return e?t.filter(r=>Gb.has(r)||e==="array"&&r==="array"):[]}function FN(t,e,r){let{gen:n,data:o,opts:i}=t,s=n.let("dataType",(0,L._)`typeof ${o}`),a=n.let("coerced",(0,L._)`undefined`);i.coerceTypes==="array"&&n.if((0,L._)`${s} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,L._)`${o}[0]`).assign(s,(0,L._)`typeof ${o}`).if(Uf(e,o,i.strictNumbers),()=>n.assign(a,o))),n.if((0,L._)`${a} !== undefined`);for(let u of r)(Gb.has(u)||u==="array"&&i.coerceTypes==="array")&&c(u);n.else(),qf(t),n.endIf(),n.if((0,L._)`${a} !== undefined`,()=>{n.assign(o,a),UN(t,a)});function c(u){switch(u){case"string":n.elseIf((0,L._)`${s} == "number" || ${s} == "boolean"`).assign(a,(0,L._)`"" + ${o}`).elseIf((0,L._)`${o} === null`).assign(a,(0,L._)`""`);return;case"number":n.elseIf((0,L._)`${s} == "boolean" || ${o} === null
3
+ || (${s} == "string" && ${o} && ${o} == +${o})`).assign(a,(0,L._)`+${o}`);return;case"integer":n.elseIf((0,L._)`${s} === "boolean" || ${o} === null
4
+ || (${s} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(a,(0,L._)`+${o}`);return;case"boolean":n.elseIf((0,L._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(a,!1).elseIf((0,L._)`${o} === "true" || ${o} === 1`).assign(a,!0);return;case"null":n.elseIf((0,L._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(a,null);return;case"array":n.elseIf((0,L._)`${s} === "string" || ${s} === "number"
5
+ || ${s} === "boolean" || ${o} === null`).assign(a,(0,L._)`[${o}]`)}}}function UN({gen:t,parentData:e,parentDataProperty:r},n){t.if((0,L._)`${e} !== undefined`,()=>t.assign((0,L._)`${e}[${r}]`,n))}function Ff(t,e,r,n=Po.Correct){let o=n===Po.Correct?L.operators.EQ:L.operators.NEQ,i;switch(t){case"null":return(0,L._)`${e} ${o} null`;case"array":i=(0,L._)`Array.isArray(${e})`;break;case"object":i=(0,L._)`${e} && typeof ${e} == "object" && !Array.isArray(${e})`;break;case"integer":i=s((0,L._)`!(${e} % 1) && !isNaN(${e})`);break;case"number":i=s();break;default:return(0,L._)`typeof ${e} ${o} ${t}`}return n===Po.Correct?i:(0,L.not)(i);function s(a=L.nil){return(0,L.and)((0,L._)`typeof ${e} == "number"`,a,r?(0,L._)`isFinite(${e})`:L.nil)}}Ue.checkDataType=Ff;function Uf(t,e,r,n){if(t.length===1)return Ff(t[0],e,r,n);let o,i=(0,qb.toHash)(t);if(i.array&&i.object){let s=(0,L._)`typeof ${e} != "object"`;o=i.null?s:(0,L._)`!${e} || ${s}`,delete i.null,delete i.array,delete i.object}else o=L.nil;i.number&&delete i.integer;for(let s in i)o=(0,L.and)(o,Ff(s,e,r,n));return o}Ue.checkDataTypes=Uf;var qN={message:({schema:t})=>`must be ${t}`,params:({schema:t,schemaValue:e})=>typeof t=="string"?(0,L._)`{type: ${t}}`:(0,L._)`{type: ${e}}`};function qf(t){let e=HN(t);(0,NN.reportError)(e,qN)}Ue.reportTypeError=qf;function HN(t){let{gen:e,data:r,schema:n}=t,o=(0,qb.schemaRefOrVal)(t,n,"type");return{gen:e,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:t}}});var Bb=C(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.assignDefaults=void 0;var xo=j(),GN=B();function ZN(t,e){let{properties:r,items:n}=t.schema;if(e==="object"&&r)for(let o in r)Zb(t,o,r[o].default);else e==="array"&&Array.isArray(n)&&n.forEach((o,i)=>Zb(t,i,o.default))}vc.assignDefaults=ZN;function Zb(t,e,r){let{gen:n,compositeRule:o,data:i,opts:s}=t;if(r===void 0)return;let a=(0,xo._)`${i}${(0,xo.getProperty)(e)}`;if(o){(0,GN.checkStrictMode)(t,`default is ignored for: ${a}`);return}let c=(0,xo._)`${a} === undefined`;s.useDefaults==="empty"&&(c=(0,xo._)`${c} || ${a} === null || ${a} === ""`),n.if(c,(0,xo._)`${a} = ${(0,xo.stringify)(r)}`)}});var wt=C(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.validateUnion=re.validateArray=re.usePattern=re.callValidateCode=re.schemaProperties=re.allSchemaProperties=re.noPropertyInData=re.propertyInData=re.isOwnProperty=re.hasPropFunc=re.reportMissingProp=re.checkMissingProp=re.checkReportMissingProp=void 0;var de=j(),Hf=B(),Gr=fr(),BN=B();function WN(t,e){let{gen:r,data:n,it:o}=t;r.if(Zf(r,n,e,o.opts.ownProperties),()=>{t.setParams({missingProperty:(0,de._)`${e}`},!0),t.error()})}re.checkReportMissingProp=WN;function VN({gen:t,data:e,it:{opts:r}},n,o){return(0,de.or)(...n.map(i=>(0,de.and)(Zf(t,e,i,r.ownProperties),(0,de._)`${o} = ${i}`)))}re.checkMissingProp=VN;function KN(t,e){t.setParams({missingProperty:e},!0),t.error()}re.reportMissingProp=KN;function Wb(t){return t.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,de._)`Object.prototype.hasOwnProperty`})}re.hasPropFunc=Wb;function Gf(t,e,r){return(0,de._)`${Wb(t)}.call(${e}, ${r})`}re.isOwnProperty=Gf;function JN(t,e,r,n){let o=(0,de._)`${e}${(0,de.getProperty)(r)} !== undefined`;return n?(0,de._)`${o} && ${Gf(t,e,r)}`:o}re.propertyInData=JN;function Zf(t,e,r,n){let o=(0,de._)`${e}${(0,de.getProperty)(r)} === undefined`;return n?(0,de.or)(o,(0,de.not)(Gf(t,e,r))):o}re.noPropertyInData=Zf;function Vb(t){return t?Object.keys(t).filter(e=>e!=="__proto__"):[]}re.allSchemaProperties=Vb;function YN(t,e){return Vb(e).filter(r=>!(0,Hf.alwaysValidSchema)(t,e[r]))}re.schemaProperties=YN;function XN({schemaCode:t,data:e,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:i},it:s},a,c,u){let d=u?(0,de._)`${t}, ${e}, ${n}${o}`:e,l=[[Gr.default.instancePath,(0,de.strConcat)(Gr.default.instancePath,i)],[Gr.default.parentData,s.parentData],[Gr.default.parentDataProperty,s.parentDataProperty],[Gr.default.rootData,Gr.default.rootData]];s.opts.dynamicRef&&l.push([Gr.default.dynamicAnchors,Gr.default.dynamicAnchors]);let f=(0,de._)`${d}, ${r.object(...l)}`;return c!==de.nil?(0,de._)`${a}.call(${c}, ${f})`:(0,de._)`${a}(${f})`}re.callValidateCode=XN;var QN=(0,de._)`new RegExp`;function eD({gen:t,it:{opts:e}},r){let n=e.unicodeRegExp?"u":"",{regExp:o}=e.code,i=o(r,n);return t.scopeValue("pattern",{key:i.toString(),ref:i,code:(0,de._)`${o.code==="new RegExp"?QN:(0,BN.useFunc)(t,o)}(${r}, ${n})`})}re.usePattern=eD;function tD(t){let{gen:e,data:r,keyword:n,it:o}=t,i=e.name("valid");if(o.allErrors){let a=e.let("valid",!0);return s(()=>e.assign(a,!1)),a}return e.var(i,!0),s(()=>e.break()),i;function s(a){let c=e.const("len",(0,de._)`${r}.length`);e.forRange("i",0,c,u=>{t.subschema({keyword:n,dataProp:u,dataPropType:Hf.Type.Num},i),e.if((0,de.not)(i),a)})}}re.validateArray=tD;function rD(t){let{gen:e,schema:r,keyword:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,Hf.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let s=e.let("valid",!1),a=e.name("_valid");e.block(()=>r.forEach((c,u)=>{let d=t.subschema({keyword:n,schemaProp:u,compositeRule:!0},a);e.assign(s,(0,de._)`${s} || ${a}`),t.mergeValidEvaluated(d,a)||e.if((0,de.not)(s))})),t.result(s,()=>t.reset(),()=>t.error(!0))}re.validateUnion=rD});var Yb=C(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.validateKeywordUsage=Kt.validSchemaType=Kt.funcKeywordCode=Kt.macroKeywordCode=void 0;var Ge=j(),En=fr(),nD=wt(),oD=os();function iD(t,e){let{gen:r,keyword:n,schema:o,parentSchema:i,it:s}=t,a=e.macro.call(s.self,o,i,s),c=Jb(r,n,a);s.opts.validateSchema!==!1&&s.self.validateSchema(a,!0);let u=r.name("valid");t.subschema({schema:a,schemaPath:Ge.nil,errSchemaPath:`${s.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},u),t.pass(u,()=>t.error(!0))}Kt.macroKeywordCode=iD;function sD(t,e){var r;let{gen:n,keyword:o,schema:i,parentSchema:s,$data:a,it:c}=t;cD(c,e);let u=!a&&e.compile?e.compile.call(c.self,i,s,c):e.validate,d=Jb(n,o,u),l=n.let("valid");t.block$data(l,f),t.ok((r=e.valid)!==null&&r!==void 0?r:l);function f(){if(e.errors===!1)h(),e.modifying&&Kb(t),g(()=>t.error());else{let v=e.async?p():m();e.modifying&&Kb(t),g(()=>aD(t,v))}}function p(){let v=n.let("ruleErrs",null);return n.try(()=>h((0,Ge._)`await `),w=>n.assign(l,!1).if((0,Ge._)`${w} instanceof ${c.ValidationError}`,()=>n.assign(v,(0,Ge._)`${w}.errors`),()=>n.throw(w))),v}function m(){let v=(0,Ge._)`${d}.errors`;return n.assign(v,null),h(Ge.nil),v}function h(v=e.async?(0,Ge._)`await `:Ge.nil){let w=c.opts.passContext?En.default.this:En.default.self,b=!("compile"in e&&!a||e.schema===!1);n.assign(l,(0,Ge._)`${v}${(0,nD.callValidateCode)(t,d,w,b)}`,e.modifying)}function g(v){var w;n.if((0,Ge.not)((w=e.valid)!==null&&w!==void 0?w:l),v)}}Kt.funcKeywordCode=sD;function Kb(t){let{gen:e,data:r,it:n}=t;e.if(n.parentData,()=>e.assign(r,(0,Ge._)`${n.parentData}[${n.parentDataProperty}]`))}function aD(t,e){let{gen:r}=t;r.if((0,Ge._)`Array.isArray(${e})`,()=>{r.assign(En.default.vErrors,(0,Ge._)`${En.default.vErrors} === null ? ${e} : ${En.default.vErrors}.concat(${e})`).assign(En.default.errors,(0,Ge._)`${En.default.vErrors}.length`),(0,oD.extendErrors)(t)},()=>t.error())}function cD({schemaEnv:t},e){if(e.async&&!t.$async)throw new Error("async keyword in sync schema")}function Jb(t,e,r){if(r===void 0)throw new Error(`keyword "${e}" failed to compile`);return t.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,Ge.stringify)(r)})}function uD(t,e,r=!1){return!e.length||e.some(n=>n==="array"?Array.isArray(t):n==="object"?t&&typeof t=="object"&&!Array.isArray(t):typeof t==n||r&&typeof t>"u")}Kt.validSchemaType=uD;function dD({schema:t,opts:e,self:r,errSchemaPath:n},o,i){if(Array.isArray(o.keyword)?!o.keyword.includes(i):o.keyword!==i)throw new Error("ajv implementation error");let s=o.dependencies;if(s?.some(a=>!Object.prototype.hasOwnProperty.call(t,a)))throw new Error(`parent schema must have dependencies of ${i}: ${s.join(",")}`);if(o.validateSchema&&!o.validateSchema(t[i])){let c=`keyword "${i}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(e.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}Kt.validateKeywordUsage=dD});var Qb=C(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.extendSubschemaMode=Zr.extendSubschemaData=Zr.getSubschema=void 0;var Jt=j(),Xb=B();function lD(t,{keyword:e,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:i,topSchemaRef:s}){if(e!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(e!==void 0){let a=t.schema[e];return r===void 0?{schema:a,schemaPath:(0,Jt._)`${t.schemaPath}${(0,Jt.getProperty)(e)}`,errSchemaPath:`${t.errSchemaPath}/${e}`}:{schema:a[r],schemaPath:(0,Jt._)`${t.schemaPath}${(0,Jt.getProperty)(e)}${(0,Jt.getProperty)(r)}`,errSchemaPath:`${t.errSchemaPath}/${e}/${(0,Xb.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||i===void 0||s===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:s,errSchemaPath:i}}throw new Error('either "keyword" or "schema" must be passed')}Zr.getSubschema=lD;function fD(t,e,{dataProp:r,dataPropType:n,data:o,dataTypes:i,propertyName:s}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=e;if(r!==void 0){let{errorPath:u,dataPathArr:d,opts:l}=e,f=a.let("data",(0,Jt._)`${e.data}${(0,Jt.getProperty)(r)}`,!0);c(f),t.errorPath=(0,Jt.str)`${u}${(0,Xb.getErrorPath)(r,n,l.jsPropertySyntax)}`,t.parentDataProperty=(0,Jt._)`${r}`,t.dataPathArr=[...d,t.parentDataProperty]}if(o!==void 0){let u=o instanceof Jt.Name?o:a.let("data",o,!0);c(u),s!==void 0&&(t.propertyName=s)}i&&(t.dataTypes=i);function c(u){t.data=u,t.dataLevel=e.dataLevel+1,t.dataTypes=[],e.definedProperties=new Set,t.parentData=e.data,t.dataNames=[...e.dataNames,u]}}Zr.extendSubschemaData=fD;function pD(t,{jtdDiscriminator:e,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:i}){n!==void 0&&(t.compositeRule=n),o!==void 0&&(t.createErrors=o),i!==void 0&&(t.allErrors=i),t.jtdDiscriminator=e,t.jtdMetadata=r}Zr.extendSubschemaMode=pD});var Bf=C((k5,eR)=>{"use strict";eR.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,o,i;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!t(e[o],r[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[o]))return!1;for(o=n;o--!==0;){var s=i[o];if(!t(e[s],r[s]))return!1}return!0}return e!==e&&r!==r}});var rR=C((E5,tR)=>{"use strict";var Br=tR.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};_c(e,n,o,t,"",t)};Br.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};Br.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Br.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Br.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 _c(t,e,r,n,o,i,s,a,c,u){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,o,i,s,a,c,u);for(var d in n){var l=n[d];if(Array.isArray(l)){if(d in Br.arrayKeywords)for(var f=0;f<l.length;f++)_c(t,e,r,l[f],o+"/"+d+"/"+f,i,o,d,n,f)}else if(d in Br.propsKeywords){if(l&&typeof l=="object")for(var p in l)_c(t,e,r,l[p],o+"/"+d+"/"+hD(p),i,o,d,n,p)}else(d in Br.keywords||t.allKeys&&!(d in Br.skipKeywords))&&_c(t,e,r,l,o+"/"+d,i,o,d,n)}r(n,o,i,s,a,c,u)}}function hD(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}});var ss=C(tt=>{"use strict";Object.defineProperty(tt,"__esModule",{value:!0});tt.getSchemaRefs=tt.resolveUrl=tt.normalizeId=tt._getFullPath=tt.getFullPath=tt.inlineRef=void 0;var mD=B(),gD=Bf(),yD=rR(),vD=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function _D(t,e=!0){return typeof t=="boolean"?!0:e===!0?!Wf(t):e?nR(t)<=e:!1}tt.inlineRef=_D;var SD=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Wf(t){for(let e in t){if(SD.has(e))return!0;let r=t[e];if(Array.isArray(r)&&r.some(Wf)||typeof r=="object"&&Wf(r))return!0}return!1}function nR(t){let e=0;for(let r in t){if(r==="$ref")return 1/0;if(e++,!vD.has(r)&&(typeof t[r]=="object"&&(0,mD.eachItem)(t[r],n=>e+=nR(n)),e===1/0))return 1/0}return e}function oR(t,e="",r){r!==!1&&(e=ko(e));let n=t.parse(e);return iR(t,n)}tt.getFullPath=oR;function iR(t,e){return t.serialize(e).split("#")[0]+"#"}tt._getFullPath=iR;var wD=/#\/?$/;function ko(t){return t?t.replace(wD,""):""}tt.normalizeId=ko;function bD(t,e,r){return r=ko(r),t.resolve(e,r)}tt.resolveUrl=bD;var RD=/^[a-z_][-a-z0-9._]*$/i;function CD(t,e){if(typeof t=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=ko(t[r]||e),i={"":o},s=oR(n,o,!1),a={},c=new Set;return yD(t,{allKeys:!0},(l,f,p,m)=>{if(m===void 0)return;let h=s+f,g=i[m];typeof l[r]=="string"&&(g=v.call(this,l[r])),w.call(this,l.$anchor),w.call(this,l.$dynamicAnchor),i[f]=g;function v(b){let x=this.opts.uriResolver.resolve;if(b=ko(g?x(g,b):b),c.has(b))throw d(b);c.add(b);let S=this.refs[b];return typeof S=="string"&&(S=this.refs[S]),typeof S=="object"?u(l,S.schema,b):b!==ko(h)&&(b[0]==="#"?(u(l,a[b],b),a[b]=l):this.refs[b]=h),b}function w(b){if(typeof b=="string"){if(!RD.test(b))throw new Error(`invalid anchor "${b}"`);v.call(this,`#${b}`)}}}),a;function u(l,f,p){if(f!==void 0&&!gD(l,f))throw d(p)}function d(l){return new Error(`reference "${l}" resolves to more than one schema`)}}tt.getSchemaRefs=CD});var us=C(Wr=>{"use strict";Object.defineProperty(Wr,"__esModule",{value:!0});Wr.getData=Wr.KeywordCxt=Wr.validateFunctionCode=void 0;var dR=jb(),sR=is(),Kf=jf(),Sc=is(),PD=Bb(),cs=Yb(),Vf=Qb(),T=j(),z=fr(),xD=ss(),pr=B(),as=os();function kD(t){if(pR(t)&&(hR(t),fR(t))){AD(t);return}lR(t,()=>(0,dR.topBoolOrEmptySchema)(t))}Wr.validateFunctionCode=kD;function lR({gen:t,validateName:e,schema:r,schemaEnv:n,opts:o},i){o.code.es5?t.func(e,(0,T._)`${z.default.data}, ${z.default.valCxt}`,n.$async,()=>{t.code((0,T._)`"use strict"; ${aR(r,o)}`),TD(t,o),t.code(i)}):t.func(e,(0,T._)`${z.default.data}, ${ED(o)}`,n.$async,()=>t.code(aR(r,o)).code(i))}function ED(t){return(0,T._)`{${z.default.instancePath}="", ${z.default.parentData}, ${z.default.parentDataProperty}, ${z.default.rootData}=${z.default.data}${t.dynamicRef?(0,T._)`, ${z.default.dynamicAnchors}={}`:T.nil}}={}`}function TD(t,e){t.if(z.default.valCxt,()=>{t.var(z.default.instancePath,(0,T._)`${z.default.valCxt}.${z.default.instancePath}`),t.var(z.default.parentData,(0,T._)`${z.default.valCxt}.${z.default.parentData}`),t.var(z.default.parentDataProperty,(0,T._)`${z.default.valCxt}.${z.default.parentDataProperty}`),t.var(z.default.rootData,(0,T._)`${z.default.valCxt}.${z.default.rootData}`),e.dynamicRef&&t.var(z.default.dynamicAnchors,(0,T._)`${z.default.valCxt}.${z.default.dynamicAnchors}`)},()=>{t.var(z.default.instancePath,(0,T._)`""`),t.var(z.default.parentData,(0,T._)`undefined`),t.var(z.default.parentDataProperty,(0,T._)`undefined`),t.var(z.default.rootData,z.default.data),e.dynamicRef&&t.var(z.default.dynamicAnchors,(0,T._)`{}`)})}function AD(t){let{schema:e,opts:r,gen:n}=t;lR(t,()=>{r.$comment&&e.$comment&&gR(t),zD(t),n.let(z.default.vErrors,null),n.let(z.default.errors,0),r.unevaluated&&MD(t),mR(t),LD(t)})}function MD(t){let{gen:e,validateName:r}=t;t.evaluated=e.const("evaluated",(0,T._)`${r}.evaluated`),e.if((0,T._)`${t.evaluated}.dynamicProps`,()=>e.assign((0,T._)`${t.evaluated}.props`,(0,T._)`undefined`)),e.if((0,T._)`${t.evaluated}.dynamicItems`,()=>e.assign((0,T._)`${t.evaluated}.items`,(0,T._)`undefined`))}function aR(t,e){let r=typeof t=="object"&&t[e.schemaId];return r&&(e.code.source||e.code.process)?(0,T._)`/*# sourceURL=${r} */`:T.nil}function $D(t,e){if(pR(t)&&(hR(t),fR(t))){ID(t,e);return}(0,dR.boolOrEmptySchema)(t,e)}function fR({schema:t,self:e}){if(typeof t=="boolean")return!t;for(let r in t)if(e.RULES.all[r])return!0;return!1}function pR(t){return typeof t.schema!="boolean"}function ID(t,e){let{schema:r,gen:n,opts:o}=t;o.$comment&&r.$comment&&gR(t),ND(t),DD(t);let i=n.const("_errs",z.default.errors);mR(t,i),n.var(e,(0,T._)`${i} === ${z.default.errors}`)}function hR(t){(0,pr.checkUnknownRules)(t),OD(t)}function mR(t,e){if(t.opts.jtd)return cR(t,[],!1,e);let r=(0,sR.getSchemaTypes)(t.schema),n=(0,sR.coerceAndCheckDataType)(t,r);cR(t,r,!n,e)}function OD(t){let{schema:e,errSchemaPath:r,opts:n,self:o}=t;e.$ref&&n.ignoreKeywordsWithRef&&(0,pr.schemaHasRulesButRef)(e,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function zD(t){let{schema:e,opts:r}=t;e.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,pr.checkStrictMode)(t,"default is ignored in the schema root")}function ND(t){let e=t.schema[t.opts.schemaId];e&&(t.baseId=(0,xD.resolveUrl)(t.opts.uriResolver,t.baseId,e))}function DD(t){if(t.schema.$async&&!t.schemaEnv.$async)throw new Error("async schema in sync schema")}function gR({gen:t,schemaEnv:e,schema:r,errSchemaPath:n,opts:o}){let i=r.$comment;if(o.$comment===!0)t.code((0,T._)`${z.default.self}.logger.log(${i})`);else if(typeof o.$comment=="function"){let s=(0,T.str)`${n}/$comment`,a=t.scopeValue("root",{ref:e.root});t.code((0,T._)`${z.default.self}.opts.$comment(${i}, ${s}, ${a}.schema)`)}}function LD(t){let{gen:e,schemaEnv:r,validateName:n,ValidationError:o,opts:i}=t;r.$async?e.if((0,T._)`${z.default.errors} === 0`,()=>e.return(z.default.data),()=>e.throw((0,T._)`new ${o}(${z.default.vErrors})`)):(e.assign((0,T._)`${n}.errors`,z.default.vErrors),i.unevaluated&&jD(t),e.return((0,T._)`${z.default.errors} === 0`))}function jD({gen:t,evaluated:e,props:r,items:n}){r instanceof T.Name&&t.assign((0,T._)`${e}.props`,r),n instanceof T.Name&&t.assign((0,T._)`${e}.items`,n)}function cR(t,e,r,n){let{gen:o,schema:i,data:s,allErrors:a,opts:c,self:u}=t,{RULES:d}=u;if(i.$ref&&(c.ignoreKeywordsWithRef||!(0,pr.schemaHasRulesButRef)(i,d))){o.block(()=>vR(t,"$ref",d.all.$ref.definition));return}c.jtd||FD(t,e),o.block(()=>{for(let f of d.rules)l(f);l(d.post)});function l(f){(0,Kf.shouldUseGroup)(i,f)&&(f.type?(o.if((0,Sc.checkDataType)(f.type,s,c.strictNumbers)),uR(t,f),e.length===1&&e[0]===f.type&&r&&(o.else(),(0,Sc.reportTypeError)(t)),o.endIf()):uR(t,f),a||o.if((0,T._)`${z.default.errors} === ${n||0}`))}}function uR(t,e){let{gen:r,schema:n,opts:{useDefaults:o}}=t;o&&(0,PD.assignDefaults)(t,e.type),r.block(()=>{for(let i of e.rules)(0,Kf.shouldUseRule)(n,i)&&vR(t,i.keyword,i.definition,e.type)})}function FD(t,e){t.schemaEnv.meta||!t.opts.strictTypes||(UD(t,e),t.opts.allowUnionTypes||qD(t,e),HD(t,t.dataTypes))}function UD(t,e){if(e.length){if(!t.dataTypes.length){t.dataTypes=e;return}e.forEach(r=>{yR(t.dataTypes,r)||Jf(t,`type "${r}" not allowed by context "${t.dataTypes.join(",")}"`)}),ZD(t,e)}}function qD(t,e){e.length>1&&!(e.length===2&&e.includes("null"))&&Jf(t,"use allowUnionTypes to allow union type keyword")}function HD(t,e){let r=t.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Kf.shouldUseRule)(t.schema,o)){let{type:i}=o.definition;i.length&&!i.some(s=>GD(e,s))&&Jf(t,`missing type "${i.join(",")}" for keyword "${n}"`)}}}function GD(t,e){return t.includes(e)||e==="number"&&t.includes("integer")}function yR(t,e){return t.includes(e)||e==="integer"&&t.includes("number")}function ZD(t,e){let r=[];for(let n of t.dataTypes)yR(e,n)?r.push(n):e.includes("integer")&&n==="number"&&r.push("integer");t.dataTypes=r}function Jf(t,e){let r=t.schemaEnv.baseId+t.errSchemaPath;e+=` at "${r}" (strictTypes)`,(0,pr.checkStrictMode)(t,e,t.opts.strictTypes)}var wc=class{constructor(e,r,n){if((0,cs.validateKeywordUsage)(e,r,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=r.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,pr.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=r,this.$data)this.schemaCode=e.gen.const("vSchema",_R(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,cs.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=e.gen.const("_errs",z.default.errors))}result(e,r,n){this.failResult((0,T.not)(e),r,n)}failResult(e,r,n){this.gen.if(e),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,r){this.failResult((0,T.not)(e),void 0,r)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:r}=this;this.fail((0,T._)`${r} !== undefined && (${(0,T.or)(this.invalid$data(),e)})`)}error(e,r,n){if(r){this.setParams(r),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,r){(e?as.reportExtraError:as.reportError)(this,this.def.error,r)}$dataError(){(0,as.reportError)(this,this.def.$dataError||as.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,as.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,r){r?Object.assign(this.params,e):this.params=e}block$data(e,r,n=T.nil){this.gen.block(()=>{this.check$data(e,n),r()})}check$data(e=T.nil,r=T.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:i,def:s}=this;n.if((0,T.or)((0,T._)`${o} === undefined`,r)),e!==T.nil&&n.assign(e,!0),(i.length||s.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==T.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:r,schemaType:n,def:o,it:i}=this;return(0,T.or)(s(),a());function s(){if(n.length){if(!(r instanceof T.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,T._)`${(0,Sc.checkDataTypes)(c,r,i.opts.strictNumbers,Sc.DataType.Wrong)}`}return T.nil}function a(){if(o.validateSchema){let c=e.scopeValue("validate$data",{ref:o.validateSchema});return(0,T._)`!${c}(${r})`}return T.nil}}subschema(e,r){let n=(0,Vf.getSubschema)(this.it,e);(0,Vf.extendSubschemaData)(n,this.it,e),(0,Vf.extendSubschemaMode)(n,e);let o={...this.it,...n,items:void 0,props:void 0};return $D(o,r),o}mergeEvaluated(e,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=pr.mergeEvaluated.props(o,e.props,n.props,r)),n.items!==!0&&e.items!==void 0&&(n.items=pr.mergeEvaluated.items(o,e.items,n.items,r)))}mergeValidEvaluated(e,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(e,T.Name)),!0}};Wr.KeywordCxt=wc;function vR(t,e,r,n){let o=new wc(t,r,e);"code"in r?r.code(o,n):o.$data&&r.validate?(0,cs.funcKeywordCode)(o,r):"macro"in r?(0,cs.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,cs.funcKeywordCode)(o,r)}var BD=/^\/(?:[^~]|~0|~1)*$/,WD=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function _R(t,{dataLevel:e,dataNames:r,dataPathArr:n}){let o,i;if(t==="")return z.default.rootData;if(t[0]==="/"){if(!BD.test(t))throw new Error(`Invalid JSON-pointer: ${t}`);o=t,i=z.default.rootData}else{let u=WD.exec(t);if(!u)throw new Error(`Invalid JSON-pointer: ${t}`);let d=+u[1];if(o=u[2],o==="#"){if(d>=e)throw new Error(c("property/index",d));return n[e-d]}if(d>e)throw new Error(c("data",d));if(i=r[e-d],!o)return i}let s=i,a=o.split("/");for(let u of a)u&&(i=(0,T._)`${i}${(0,T.getProperty)((0,pr.unescapeJsonPointer)(u))}`,s=(0,T._)`${s} && ${i}`);return s;function c(u,d){return`Cannot access ${u} ${d} levels up, current level is ${e}`}}Wr.getData=_R});var bc=C(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});var Yf=class extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}};Xf.default=Yf});var ds=C(tp=>{"use strict";Object.defineProperty(tp,"__esModule",{value:!0});var Qf=ss(),ep=class extends Error{constructor(e,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Qf.resolveUrl)(e,r,n),this.missingSchema=(0,Qf.normalizeId)((0,Qf.getFullPath)(e,this.missingRef))}};tp.default=ep});var Cc=C(bt=>{"use strict";Object.defineProperty(bt,"__esModule",{value:!0});bt.resolveSchema=bt.getCompilingSchema=bt.resolveRef=bt.compileSchema=bt.SchemaEnv=void 0;var It=j(),VD=bc(),Tn=fr(),Ot=ss(),SR=B(),KD=us(),Eo=class{constructor(e){var r;this.refs={},this.dynamicAnchors={};let n;typeof e.schema=="object"&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(r=e.baseId)!==null&&r!==void 0?r:(0,Ot.normalizeId)(n?.[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=n?.$async,this.refs={}}};bt.SchemaEnv=Eo;function np(t){let e=wR.call(this,t);if(e)return e;let r=(0,Ot.getFullPath)(this.opts.uriResolver,t.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:i}=this.opts,s=new It.CodeGen(this.scope,{es5:n,lines:o,ownProperties:i}),a;t.$async&&(a=s.scopeValue("Error",{ref:VD.default,code:(0,It._)`require("ajv/dist/runtime/validation_error").default`}));let c=s.scopeName("validate");t.validateName=c;let u={gen:s,allErrors:this.opts.allErrors,data:Tn.default.data,parentData:Tn.default.parentData,parentDataProperty:Tn.default.parentDataProperty,dataNames:[Tn.default.data],dataPathArr:[It.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:s.scopeValue("schema",this.opts.code.source===!0?{ref:t.schema,code:(0,It.stringify)(t.schema)}:{ref:t.schema}),validateName:c,ValidationError:a,schema:t.schema,schemaEnv:t,rootId:r,baseId:t.baseId||r,schemaPath:It.nil,errSchemaPath:t.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,It._)`""`,opts:this.opts,self:this},d;try{this._compilations.add(t),(0,KD.validateFunctionCode)(u),s.optimize(this.opts.code.optimize);let l=s.toString();d=`${s.scopeRefs(Tn.default.scope)}return ${l}`,this.opts.code.process&&(d=this.opts.code.process(d,t));let p=new Function(`${Tn.default.self}`,`${Tn.default.scope}`,d)(this,this.scope.get());if(this.scope.value(c,{ref:p}),p.errors=null,p.schema=t.schema,p.schemaEnv=t,t.$async&&(p.$async=!0),this.opts.code.source===!0&&(p.source={validateName:c,validateCode:l,scopeValues:s._values}),this.opts.unevaluated){let{props:m,items:h}=u;p.evaluated={props:m instanceof It.Name?void 0:m,items:h instanceof It.Name?void 0:h,dynamicProps:m instanceof It.Name,dynamicItems:h instanceof It.Name},p.source&&(p.source.evaluated=(0,It.stringify)(p.evaluated))}return t.validate=p,t}catch(l){throw delete t.validate,delete t.validateName,d&&this.logger.error("Error compiling schema, function code:",d),l}finally{this._compilations.delete(t)}}bt.compileSchema=np;function JD(t,e,r){var n;r=(0,Ot.resolveUrl)(this.opts.uriResolver,e,r);let o=t.refs[r];if(o)return o;let i=QD.call(this,t,r);if(i===void 0){let s=(n=t.localRefs)===null||n===void 0?void 0:n[r],{schemaId:a}=this.opts;s&&(i=new Eo({schema:s,schemaId:a,root:t,baseId:e}))}if(i!==void 0)return t.refs[r]=YD.call(this,i)}bt.resolveRef=JD;function YD(t){return(0,Ot.inlineRef)(t.schema,this.opts.inlineRefs)?t.schema:t.validate?t:np.call(this,t)}function wR(t){for(let e of this._compilations)if(XD(e,t))return e}bt.getCompilingSchema=wR;function XD(t,e){return t.schema===e.schema&&t.root===e.root&&t.baseId===e.baseId}function QD(t,e){let r;for(;typeof(r=this.refs[e])=="string";)e=r;return r||this.schemas[e]||Rc.call(this,t,e)}function Rc(t,e){let r=this.opts.uriResolver.parse(e),n=(0,Ot._getFullPath)(this.opts.uriResolver,r),o=(0,Ot.getFullPath)(this.opts.uriResolver,t.baseId,void 0);if(Object.keys(t.schema).length>0&&n===o)return rp.call(this,r,t);let i=(0,Ot.normalizeId)(n),s=this.refs[i]||this.schemas[i];if(typeof s=="string"){let a=Rc.call(this,t,s);return typeof a?.schema!="object"?void 0:rp.call(this,r,a)}if(typeof s?.schema=="object"){if(s.validate||np.call(this,s),i===(0,Ot.normalizeId)(e)){let{schema:a}=s,{schemaId:c}=this.opts,u=a[c];return u&&(o=(0,Ot.resolveUrl)(this.opts.uriResolver,o,u)),new Eo({schema:a,schemaId:c,root:t,baseId:o})}return rp.call(this,r,s)}}bt.resolveSchema=Rc;var eL=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function rp(t,{baseId:e,schema:r,root:n}){var o;if(((o=t.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let a of t.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,SR.unescapeFragment)(a)];if(c===void 0)return;r=c;let u=typeof r=="object"&&r[this.opts.schemaId];!eL.has(a)&&u&&(e=(0,Ot.resolveUrl)(this.opts.uriResolver,e,u))}let i;if(typeof r!="boolean"&&r.$ref&&!(0,SR.schemaHasRulesButRef)(r,this.RULES)){let a=(0,Ot.resolveUrl)(this.opts.uriResolver,e,r.$ref);i=Rc.call(this,n,a)}let{schemaId:s}=this.opts;if(i=i||new Eo({schema:r,schemaId:s,root:n,baseId:e}),i.schema!==i.root.schema)return i}});var bR=C((O5,tL)=>{tL.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 sp=C((z5,ER)=>{"use strict";var rL=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),CR=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),op=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),PR=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),nL=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function ip(t){let e="",r=0,n=0;for(n=0;n<t.length;n++)if(r=t[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n];break}for(n+=1;n<t.length;n++){if(r=t[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n]}return e}var oL=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function RR(t){return t.length=0,!0}function iL(t,e,r){if(t.length){let n=ip(t);if(n!=="")e.push(n);else return r.error=!0,!1;t.length=0}return!0}function sL(t){let e=0,r={error:!1,address:"",zone:""},n=[],o=[],i=!1,s=!1,a=iL;for(let c=0;c<t.length;c++){let u=t[c];if(!(u==="["||u==="]"))if(u===":"){if(i===!0&&(s=!0),!a(o,n,r))break;if(++e>7){r.error=!0;break}c>0&&t[c-1]===":"&&(i=!0),n.push(":");continue}else if(u==="%"){if(!a(o,n,r))break;a=RR}else{o.push(u);continue}}return o.length&&(a===RR?r.zone=o.join(""):s?n.push(o.join("")):n.push(ip(o))),r.address=n.join(""),r}function xR(t){if(aL(t,":")<2)return{host:t,isIPV6:!1};let e=sL(t);if(e.error)return{host:t,isIPV6:!1};{let r=e.address,n=e.address;return e.zone&&(r+="%"+e.zone,n+="%25"+e.zone),{host:r,isIPV6:!0,escapedHost:n}}}function aL(t,e){let r=0;for(let n=0;n<t.length;n++)t[n]===e&&r++;return r}function cL(t){let e=t,r=[],n=-1,o=0;for(;o=e.length;){if(o===1){if(e===".")break;if(e==="/"){r.push("/");break}else{r.push(e);break}}else if(o===2){if(e[0]==="."){if(e[1]===".")break;if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&(e[1]==="."||e[1]==="/")){r.push("/");break}}else if(o===3&&e==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(e[0]==="."){if(e[1]==="."){if(e[2]==="/"){e=e.slice(3);continue}}else if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&e[1]==="."){if(e[2]==="/"){e=e.slice(2);continue}else if(e[2]==="."&&e[3]==="/"){e=e.slice(3),r.length!==0&&r.pop();continue}}if((n=e.indexOf("/",1))===-1){r.push(e);break}else r.push(e.slice(0,n)),e=e.slice(n)}return r.join("")}var uL={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},dL=/[@/?#:]/g,lL=/[@/?#]/g;function kR(t,e){let r=e?lL:dL;return r.lastIndex=0,t.replace(r,n=>uL[n])}function fL(t,e=!1){if(t.indexOf("%")===-1)return t;let r="";for(let n=0;n<t.length;n++){if(t[n]==="%"&&n+2<t.length){let o=t.slice(n+1,n+3);if(op(o)){let i=o.toUpperCase(),s=String.fromCharCode(parseInt(i,16));e&&PR(s)?r+=s:r+="%"+i,n+=2;continue}}r+=t[n]}return r}function pL(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(op(n)){let o=n.toUpperCase(),i=String.fromCharCode(parseInt(o,16));i!=="."&&PR(i)?e+=i:e+="%"+o,r+=2;continue}}nL(t[r])?e+=t[r]:e+=escape(t[r])}return e}function hL(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(op(n)){e+="%"+n.toUpperCase(),r+=2;continue}}e+=escape(t[r])}return e}function mL(t){let e=[];if(t.userinfo!==void 0&&(e.push(t.userinfo),e.push("@")),t.host!==void 0){let r=unescape(t.host);if(!CR(r)){let n=xR(r);n.isIPV6===!0?r=`[${n.escapedHost}]`:r=kR(r,!1)}e.push(r)}return(typeof t.port=="number"||typeof t.port=="string")&&(e.push(":"),e.push(String(t.port))),e.length?e.join(""):void 0}ER.exports={nonSimpleDomain:oL,recomposeAuthority:mL,reescapeHostDelimiters:kR,normalizePercentEncoding:fL,normalizePathEncoding:pL,escapePreservingEscapes:hL,removeDotSegments:cL,isIPv4:CR,isUUID:rL,normalizeIPv6:xR,stringArrayToHexStripped:ip}});var IR=C((N5,$R)=>{"use strict";var{isUUID:gL}=sp(),yL=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,vL=["http","https","ws","wss","urn","urn:uuid"];function _L(t){return vL.indexOf(t)!==-1}function ap(t){return t.secure===!0?!0:t.secure===!1?!1:t.scheme?t.scheme.length===3&&(t.scheme[0]==="w"||t.scheme[0]==="W")&&(t.scheme[1]==="s"||t.scheme[1]==="S")&&(t.scheme[2]==="s"||t.scheme[2]==="S"):!1}function TR(t){return t.host||(t.error=t.error||"HTTP URIs must have a host."),t}function AR(t){let e=String(t.scheme).toLowerCase()==="https";return(t.port===(e?443:80)||t.port==="")&&(t.port=void 0),t.path||(t.path="/"),t}function SL(t){return t.secure=ap(t),t.resourceName=(t.path||"/")+(t.query?"?"+t.query:""),t.path=void 0,t.query=void 0,t}function wL(t){if((t.port===(ap(t)?443:80)||t.port==="")&&(t.port=void 0),typeof t.secure=="boolean"&&(t.scheme=t.secure?"wss":"ws",t.secure=void 0),t.resourceName){let[e,r]=t.resourceName.split("?");t.path=e&&e!=="/"?e:void 0,t.query=r,t.resourceName=void 0}return t.fragment=void 0,t}function bL(t,e){if(!t.path)return t.error="URN can not be parsed",t;let r=t.path.match(yL);if(r){let n=e.scheme||t.scheme||"urn";t.nid=r[1].toLowerCase(),t.nss=r[2];let o=`${n}:${e.nid||t.nid}`,i=cp(o);t.path=void 0,i&&(t=i.parse(t,e))}else t.error=t.error||"URN can not be parsed.";return t}function RL(t,e){if(t.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=e.scheme||t.scheme||"urn",n=t.nid.toLowerCase(),o=`${r}:${e.nid||n}`,i=cp(o);i&&(t=i.serialize(t,e));let s=t,a=t.nss;return s.path=`${n||e.nid}:${a}`,e.skipEscape=!0,s}function CL(t,e){let r=t;return r.uuid=r.nss,r.nss=void 0,!e.tolerant&&(!r.uuid||!gL(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function PL(t){let e=t;return e.nss=(t.uuid||"").toLowerCase(),e}var MR={scheme:"http",domainHost:!0,parse:TR,serialize:AR},xL={scheme:"https",domainHost:MR.domainHost,parse:TR,serialize:AR},Pc={scheme:"ws",domainHost:!0,parse:SL,serialize:wL},kL={scheme:"wss",domainHost:Pc.domainHost,parse:Pc.parse,serialize:Pc.serialize},EL={scheme:"urn",parse:bL,serialize:RL,skipNormalize:!0},TL={scheme:"urn:uuid",parse:CL,serialize:PL,skipNormalize:!0},xc={http:MR,https:xL,ws:Pc,wss:kL,urn:EL,"urn:uuid":TL};Object.setPrototypeOf(xc,null);function cp(t){return t&&(xc[t]||xc[t.toLowerCase()])||void 0}$R.exports={wsIsSecure:ap,SCHEMES:xc,isValidSchemeName:_L,getSchemeHandler:cp}});var LR=C((D5,Tc)=>{"use strict";var{normalizeIPv6:AL,removeDotSegments:ls,recomposeAuthority:ML,normalizePercentEncoding:$L,normalizePathEncoding:IL,escapePreservingEscapes:OL,reescapeHostDelimiters:zL,isIPv4:NL,nonSimpleDomain:DL}=sp(),{SCHEMES:LL,getSchemeHandler:zR}=IR();function jL(t,e){return typeof t=="string"?t=BL(t,e):typeof t=="object"&&(t=Ec(An(t,e),e)),t}function FL(t,e,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:i}=kc(t,n),{parsed:s,malformedAuthorityOrPort:a}=kc(e,n);if(i||a)throw new Error(o.error||s.error||"URI is malformed.");let c=NR(o,s,n,!0);return n.skipEscape=!0,An(c,n)}function NR(t,e,r,n){let o={};return n||(t=Ec(An(t,r),r),e=Ec(An(e,r),r)),r=r||{},!r.tolerant&&e.scheme?(o.scheme=e.scheme,o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=ls(e.path||""),o.query=e.query):(e.userinfo!==void 0||e.host!==void 0||e.port!==void 0?(o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=ls(e.path||""),o.query=e.query):(e.path?(e.path[0]==="/"?o.path=ls(e.path):((t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)&&!t.path?o.path="/"+e.path:t.path?o.path=t.path.slice(0,t.path.lastIndexOf("/")+1)+e.path:o.path=e.path,o.path=ls(o.path)),o.query=e.query):(o.path=t.path,e.query!==void 0?o.query=e.query:o.query=t.query),o.userinfo=t.userinfo,o.host=t.host,o.port=t.port),o.scheme=t.scheme),o.fragment=e.fragment,o}function UL(t,e,r){let n=OR(t,r),o=OR(e,r);return n!==void 0&&o!==void 0&&n.toLowerCase()===o.toLowerCase()}function An(t,e){let r={host:t.host,scheme:t.scheme,userinfo:t.userinfo,port:t.port,path:t.path,query:t.query,nid:t.nid,nss:t.nss,uuid:t.uuid,fragment:t.fragment,reference:t.reference,resourceName:t.resourceName,secure:t.secure,error:""},n=Object.assign({},e),o=[],i=zR(n.scheme||r.scheme);i&&i.serialize&&i.serialize(r,n),r.path!==void 0&&(n.skipEscape?r.path=$L(r.path):(r.path=OL(r.path),r.scheme!==void 0&&(r.path=r.path.split("%3A").join(":")))),n.reference!=="suffix"&&r.scheme&&o.push(r.scheme,":");let s=ML(r);if(s!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(s),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let a=r.path;!n.absolutePath&&(!i||!i.absolutePath)&&(a=ls(a)),s===void 0&&a[0]==="/"&&a[1]==="/"&&(a="/%2F"+a.slice(2)),o.push(a)}return r.query!==void 0&&o.push("?",r.query),r.fragment!==void 0&&o.push("#",r.fragment),o.join("")}var qL=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,HL=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,GL=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function ZL(t,e){if(e[2]!==void 0&&t.path&&t.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof t.port=="number"&&(t.port<0||t.port>65535))return"URI port is malformed."}function kc(t,e){let r=Object.assign({},e),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,i=!1;r.reference==="suffix"&&(r.scheme?t=r.scheme+":"+t:t="//"+t);let s=t.match(HL);s!==null&&s[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let a=t.match(GL);if(a!==null){let u=a[1],d=u.replace(/[\t\n\r]/g,"");d.length>=2&&(d.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):u.length!==d.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let c=t.match(qL);if(c){n.scheme=c[1],n.userinfo=c[3],n.host=c[4],n.port=parseInt(c[5],10),n.path=c[6]||"",n.query=c[7],n.fragment=c[8],isNaN(n.port)&&(n.port=c[5]);let u=ZL(n,c);if(u!==void 0&&(n.error=n.error||u,o=!0),n.host)if(NL(n.host)===!1){let f=AL(n.host);n.host=f.host.toLowerCase(),i=f.isIPV6}else i=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let d=zR(r.scheme||n.scheme);if(!r.unicodeSupport&&(!d||!d.unicodeSupport)&&n.host&&(r.domainHost||d&&d.domainHost)&&i===!1&&DL(n.host))try{n.host=new URL("http://"+n.host).hostname}catch(l){n.error=n.error||"Host's domain name can not be converted to ASCII: "+l}if((!d||d&&!d.skipNormalize)&&(t.indexOf("%")!==-1&&(n.scheme!==void 0&&(n.scheme=unescape(n.scheme)),n.host!==void 0&&(n.host=zL(unescape(n.host),i))),n.path&&(n.path=IL(n.path)),n.fragment))try{n.fragment=encodeURI(decodeURIComponent(n.fragment))}catch{n.error=n.error||"URI malformed"}d&&d.parse&&d.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o}}function Ec(t,e){return kc(t,e).parsed}function BL(t,e){return DR(t,e).normalized}function DR(t,e){let{parsed:r,malformedAuthorityOrPort:n}=kc(t,e);return{normalized:n?t:An(r,e),malformedAuthorityOrPort:n}}function OR(t,e){if(typeof t=="string"){let{normalized:r,malformedAuthorityOrPort:n}=DR(t,e);return n?void 0:r}if(typeof t=="object")return An(t,e)}var up={SCHEMES:LL,normalize:jL,resolve:FL,resolveComponent:NR,equal:UL,serialize:An,parse:Ec};Tc.exports=up;Tc.exports.default=up;Tc.exports.fastUri=up});var FR=C(dp=>{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});var jR=LR();jR.code='require("ajv/dist/runtime/uri").default';dp.default=jR});var VR=C(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.CodeGen=Ne.Name=Ne.nil=Ne.stringify=Ne.str=Ne._=Ne.KeywordCxt=void 0;var WL=us();Object.defineProperty(Ne,"KeywordCxt",{enumerable:!0,get:function(){return WL.KeywordCxt}});var To=j();Object.defineProperty(Ne,"_",{enumerable:!0,get:function(){return To._}});Object.defineProperty(Ne,"str",{enumerable:!0,get:function(){return To.str}});Object.defineProperty(Ne,"stringify",{enumerable:!0,get:function(){return To.stringify}});Object.defineProperty(Ne,"nil",{enumerable:!0,get:function(){return To.nil}});Object.defineProperty(Ne,"Name",{enumerable:!0,get:function(){return To.Name}});Object.defineProperty(Ne,"CodeGen",{enumerable:!0,get:function(){return To.CodeGen}});var VL=bc(),ZR=ds(),KL=Lf(),fs=Cc(),JL=j(),ps=ss(),Ac=is(),fp=B(),UR=bR(),YL=FR(),BR=(t,e)=>new RegExp(t,e);BR.code="new RegExp";var XL=["removeAdditional","useDefaults","coerceTypes"],QL=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),ej={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."},tj={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},qR=200;function rj(t){var e,r,n,o,i,s,a,c,u,d,l,f,p,m,h,g,v,w,b,x,S,R,I,ne,fe;let Pe=t.strict,rn=(e=t.code)===null||e===void 0?void 0:e.optimize,nn=rn===!0||rn===void 0?1:rn||0,lt=(n=(r=t.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:BR,Sr=(o=t.uriResolver)!==null&&o!==void 0?o:YL.default;return{strictSchema:(s=(i=t.strictSchema)!==null&&i!==void 0?i:Pe)!==null&&s!==void 0?s:!0,strictNumbers:(c=(a=t.strictNumbers)!==null&&a!==void 0?a:Pe)!==null&&c!==void 0?c:!0,strictTypes:(d=(u=t.strictTypes)!==null&&u!==void 0?u:Pe)!==null&&d!==void 0?d:"log",strictTuples:(f=(l=t.strictTuples)!==null&&l!==void 0?l:Pe)!==null&&f!==void 0?f:"log",strictRequired:(m=(p=t.strictRequired)!==null&&p!==void 0?p:Pe)!==null&&m!==void 0?m:!1,code:t.code?{...t.code,optimize:nn,regExp:lt}:{optimize:nn,regExp:lt},loopRequired:(h=t.loopRequired)!==null&&h!==void 0?h:qR,loopEnum:(g=t.loopEnum)!==null&&g!==void 0?g:qR,meta:(v=t.meta)!==null&&v!==void 0?v:!0,messages:(w=t.messages)!==null&&w!==void 0?w:!0,inlineRefs:(b=t.inlineRefs)!==null&&b!==void 0?b:!0,schemaId:(x=t.schemaId)!==null&&x!==void 0?x:"$id",addUsedSchema:(S=t.addUsedSchema)!==null&&S!==void 0?S:!0,validateSchema:(R=t.validateSchema)!==null&&R!==void 0?R:!0,validateFormats:(I=t.validateFormats)!==null&&I!==void 0?I:!0,unicodeRegExp:(ne=t.unicodeRegExp)!==null&&ne!==void 0?ne:!0,int32range:(fe=t.int32range)!==null&&fe!==void 0?fe:!0,uriResolver:Sr}}var hs=class{constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...rj(e)};let{es5:r,lines:n}=this.opts.code;this.scope=new JL.ValueScope({scope:{},prefixes:QL,es5:r,lines:n}),this.logger=cj(e.logger);let o=e.validateFormats;e.validateFormats=!1,this.RULES=(0,KL.getRules)(),HR.call(this,ej,e,"NOT SUPPORTED"),HR.call(this,tj,e,"DEPRECATED","warn"),this._metaOpts=sj.call(this),e.formats&&oj.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&ij.call(this,e.keywords),typeof e.meta=="object"&&this.addMetaSchema(e.meta),nj.call(this),e.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:r,schemaId:n}=this.opts,o=UR;n==="id"&&(o={...UR},o.id=o.$id,delete o.$id),r&&e&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:e,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[r]||e:void 0}validate(e,r){let n;if(typeof e=="string"){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(e,r){let n=this._addSchema(e,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,e,r);async function o(d,l){await i.call(this,d.$schema);let f=this._addSchema(d,l);return f.validate||s.call(this,f)}async function i(d){d&&!this.getSchema(d)&&await o.call(this,{$ref:d},!0)}async function s(d){try{return this._compileSchemaEnv(d)}catch(l){if(!(l instanceof ZR.default))throw l;return a.call(this,l),await c.call(this,l.missingSchema),s.call(this,d)}}function a({missingSchema:d,missingRef:l}){if(this.refs[d])throw new Error(`AnySchema ${d} is loaded but ${l} cannot be resolved`)}async function c(d){let l=await u.call(this,d);this.refs[d]||await i.call(this,l.$schema),this.refs[d]||this.addSchema(l,d,r)}async function u(d){let l=this._loading[d];if(l)return l;try{return await(this._loading[d]=n(d))}finally{delete this._loading[d]}}}addSchema(e,r,n,o=this.opts.validateSchema){if(Array.isArray(e)){for(let s of e)this.addSchema(s,void 0,n,o);return this}let i;if(typeof e=="object"){let{schemaId:s}=this.opts;if(i=e[s],i!==void 0&&typeof i!="string")throw new Error(`schema ${s} must be string`)}return r=(0,ps.normalizeId)(r||i),this._checkUnique(r),this.schemas[r]=this._addSchema(e,n,r,o,!0),this}addMetaSchema(e,r,n=this.opts.validateSchema){return this.addSchema(e,r,!0,n),this}validateSchema(e,r){if(typeof e=="boolean")return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,e);if(!o&&r){let i="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(i);else throw new Error(i)}return o}getSchema(e){let r;for(;typeof(r=GR.call(this,e))=="string";)e=r;if(r===void 0){let{schemaId:n}=this.opts,o=new fs.SchemaEnv({schema:{},schemaId:n});if(r=fs.resolveSchema.call(this,o,e),!r)return;this.refs[e]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=GR.call(this,e);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{let r=e;this._cache.delete(r);let n=e[this.opts.schemaId];return n&&(n=(0,ps.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let r of e)this.addKeyword(r);return this}addKeyword(e,r){let n;if(typeof e=="string")n=e,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof e=="object"&&r===void 0){if(r=e,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(dj.call(this,n,r),!r)return(0,fp.eachItem)(n,i=>lp.call(this,i)),this;fj.call(this,r);let o={...r,type:(0,Ac.getJSONTypes)(r.type),schemaType:(0,Ac.getJSONTypes)(r.schemaType)};return(0,fp.eachItem)(n,o.type.length===0?i=>lp.call(this,i,o):i=>o.type.forEach(s=>lp.call(this,i,o,s))),this}getKeyword(e){let r=this.RULES.all[e];return typeof r=="object"?r.definition:!!r}removeKeyword(e){let{RULES:r}=this;delete r.keywords[e],delete r.all[e];for(let n of r.rules){let o=n.rules.findIndex(i=>i.keyword===e);o>=0&&n.rules.splice(o,1)}return this}addFormat(e,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[e]=r,this}errorsText(e=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!e||e.length===0?"No errors":e.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,i)=>o+r+i)}$dataMetaSchema(e,r){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let o of r){let i=o.split("/").slice(1),s=e;for(let a of i)s=s[a];for(let a in n){let c=n[a];if(typeof c!="object")continue;let{$data:u}=c.definition,d=s[a];u&&d&&(s[a]=WR(d))}}return e}_removeAllSchemas(e,r){for(let n in e){let o=e[n];(!r||r.test(n))&&(typeof o=="string"?delete e[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete e[n]))}}_addSchema(e,r,n,o=this.opts.validateSchema,i=this.opts.addUsedSchema){let s,{schemaId:a}=this.opts;if(typeof e=="object")s=e[a];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof e!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(e);if(c!==void 0)return c;n=(0,ps.normalizeId)(s||n);let u=ps.getSchemaRefs.call(this,e,n);return c=new fs.SchemaEnv({schema:e,schemaId:a,meta:r,baseId:n,localRefs:u}),this._cache.set(c.schema,c),i&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(e,!0),c}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):fs.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let r=this.opts;this.opts=this._metaOpts;try{fs.compileSchema.call(this,e)}finally{this.opts=r}}};hs.ValidationError=VL.default;hs.MissingRefError=ZR.default;Ne.default=hs;function HR(t,e,r,n="error"){for(let o in t){let i=o;i in e&&this.logger[n](`${r}: option ${o}. ${t[i]}`)}}function GR(t){return t=(0,ps.normalizeId)(t),this.schemas[t]||this.refs[t]}function nj(){let t=this.opts.schemas;if(t)if(Array.isArray(t))this.addSchema(t);else for(let e in t)this.addSchema(t[e],e)}function oj(){for(let t in this.opts.formats){let e=this.opts.formats[t];e&&this.addFormat(t,e)}}function ij(t){if(Array.isArray(t)){this.addVocabulary(t);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let e in t){let r=t[e];r.keyword||(r.keyword=e),this.addKeyword(r)}}function sj(){let t={...this.opts};for(let e of XL)delete t[e];return t}var aj={log(){},warn(){},error(){}};function cj(t){if(t===!1)return aj;if(t===void 0)return console;if(t.log&&t.warn&&t.error)return t;throw new Error("logger must implement log, warn and error methods")}var uj=/^[a-z_$][a-z0-9_$:-]*$/i;function dj(t,e){let{RULES:r}=this;if((0,fp.eachItem)(t,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!uj.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!e&&e.$data&&!("code"in e||"validate"in e))throw new Error('$data keyword must have "code" or "validate" function')}function lp(t,e,r){var n;let o=e?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:i}=this,s=o?i.post:i.rules.find(({type:c})=>c===r);if(s||(s={type:r,rules:[]},i.rules.push(s)),i.keywords[t]=!0,!e)return;let a={keyword:t,definition:{...e,type:(0,Ac.getJSONTypes)(e.type),schemaType:(0,Ac.getJSONTypes)(e.schemaType)}};e.before?lj.call(this,s,a,e.before):s.rules.push(a),i.all[t]=a,(n=e.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function lj(t,e,r){let n=t.rules.findIndex(o=>o.keyword===r);n>=0?t.rules.splice(n,0,e):(t.rules.push(e),this.logger.warn(`rule ${r} is not defined`))}function fj(t){let{metaSchema:e}=t;e!==void 0&&(t.$data&&this.opts.$data&&(e=WR(e)),t.validateSchema=this.compile(e,!0))}var pj={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function WR(t){return{anyOf:[t,pj]}}});var KR=C(pp=>{"use strict";Object.defineProperty(pp,"__esModule",{value:!0});var hj={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};pp.default=hj});var QR=C(Mn=>{"use strict";Object.defineProperty(Mn,"__esModule",{value:!0});Mn.callRef=Mn.getValidate=void 0;var mj=ds(),JR=wt(),rt=j(),Ao=fr(),YR=Cc(),Mc=B(),gj={keyword:"$ref",schemaType:"string",code(t){let{gen:e,schema:r,it:n}=t,{baseId:o,schemaEnv:i,validateName:s,opts:a,self:c}=n,{root:u}=i;if((r==="#"||r==="#/")&&o===u.baseId)return l();let d=YR.resolveRef.call(c,u,o,r);if(d===void 0)throw new mj.default(n.opts.uriResolver,o,r);if(d instanceof YR.SchemaEnv)return f(d);return p(d);function l(){if(i===u)return $c(t,s,i,i.$async);let m=e.scopeValue("root",{ref:u});return $c(t,(0,rt._)`${m}.validate`,u,u.$async)}function f(m){let h=XR(t,m);$c(t,h,m,m.$async)}function p(m){let h=e.scopeValue("schema",a.code.source===!0?{ref:m,code:(0,rt.stringify)(m)}:{ref:m}),g=e.name("valid"),v=t.subschema({schema:m,dataTypes:[],schemaPath:rt.nil,topSchemaRef:h,errSchemaPath:r},g);t.mergeEvaluated(v),t.ok(g)}}};function XR(t,e){let{gen:r}=t;return e.validate?r.scopeValue("validate",{ref:e.validate}):(0,rt._)`${r.scopeValue("wrapper",{ref:e})}.validate`}Mn.getValidate=XR;function $c(t,e,r,n){let{gen:o,it:i}=t,{allErrors:s,schemaEnv:a,opts:c}=i,u=c.passContext?Ao.default.this:rt.nil;n?d():l();function d(){if(!a.$async)throw new Error("async schema referenced by sync schema");let m=o.let("valid");o.try(()=>{o.code((0,rt._)`await ${(0,JR.callValidateCode)(t,e,u)}`),p(e),s||o.assign(m,!0)},h=>{o.if((0,rt._)`!(${h} instanceof ${i.ValidationError})`,()=>o.throw(h)),f(h),s||o.assign(m,!1)}),t.ok(m)}function l(){t.result((0,JR.callValidateCode)(t,e,u),()=>p(e),()=>f(e))}function f(m){let h=(0,rt._)`${m}.errors`;o.assign(Ao.default.vErrors,(0,rt._)`${Ao.default.vErrors} === null ? ${h} : ${Ao.default.vErrors}.concat(${h})`),o.assign(Ao.default.errors,(0,rt._)`${Ao.default.vErrors}.length`)}function p(m){var h;if(!i.opts.unevaluated)return;let g=(h=r?.validate)===null||h===void 0?void 0:h.evaluated;if(i.props!==!0)if(g&&!g.dynamicProps)g.props!==void 0&&(i.props=Mc.mergeEvaluated.props(o,g.props,i.props));else{let v=o.var("props",(0,rt._)`${m}.evaluated.props`);i.props=Mc.mergeEvaluated.props(o,v,i.props,rt.Name)}if(i.items!==!0)if(g&&!g.dynamicItems)g.items!==void 0&&(i.items=Mc.mergeEvaluated.items(o,g.items,i.items));else{let v=o.var("items",(0,rt._)`${m}.evaluated.items`);i.items=Mc.mergeEvaluated.items(o,v,i.items,rt.Name)}}}Mn.callRef=$c;Mn.default=gj});var eC=C(hp=>{"use strict";Object.defineProperty(hp,"__esModule",{value:!0});var yj=KR(),vj=QR(),_j=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",yj.default,vj.default];hp.default=_j});var tC=C(mp=>{"use strict";Object.defineProperty(mp,"__esModule",{value:!0});var Ic=j(),Vr=Ic.operators,Oc={maximum:{okStr:"<=",ok:Vr.LTE,fail:Vr.GT},minimum:{okStr:">=",ok:Vr.GTE,fail:Vr.LT},exclusiveMaximum:{okStr:"<",ok:Vr.LT,fail:Vr.GTE},exclusiveMinimum:{okStr:">",ok:Vr.GT,fail:Vr.LTE}},Sj={message:({keyword:t,schemaCode:e})=>(0,Ic.str)`must be ${Oc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Ic._)`{comparison: ${Oc[t].okStr}, limit: ${e}}`},wj={keyword:Object.keys(Oc),type:"number",schemaType:"number",$data:!0,error:Sj,code(t){let{keyword:e,data:r,schemaCode:n}=t;t.fail$data((0,Ic._)`${r} ${Oc[e].fail} ${n} || isNaN(${r})`)}};mp.default=wj});var rC=C(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});var ms=j(),bj={message:({schemaCode:t})=>(0,ms.str)`must be multiple of ${t}`,params:({schemaCode:t})=>(0,ms._)`{multipleOf: ${t}}`},Rj={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:bj,code(t){let{gen:e,data:r,schemaCode:n,it:o}=t,i=o.opts.multipleOfPrecision,s=e.let("res"),a=i?(0,ms._)`Math.abs(Math.round(${s}) - ${s}) > 1e-${i}`:(0,ms._)`${s} !== parseInt(${s})`;t.fail$data((0,ms._)`(${n} === 0 || (${s} = ${r}/${n}, ${a}))`)}};gp.default=Rj});var oC=C(yp=>{"use strict";Object.defineProperty(yp,"__esModule",{value:!0});function nC(t){let e=t.length,r=0,n=0,o;for(;n<e;)r++,o=t.charCodeAt(n++),o>=55296&&o<=56319&&n<e&&(o=t.charCodeAt(n),(o&64512)===56320&&n++);return r}yp.default=nC;nC.code='require("ajv/dist/runtime/ucs2length").default'});var iC=C(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});var $n=j(),Cj=B(),Pj=oC(),xj={message({keyword:t,schemaCode:e}){let r=t==="maxLength"?"more":"fewer";return(0,$n.str)`must NOT have ${r} than ${e} characters`},params:({schemaCode:t})=>(0,$n._)`{limit: ${t}}`},kj={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:xj,code(t){let{keyword:e,data:r,schemaCode:n,it:o}=t,i=e==="maxLength"?$n.operators.GT:$n.operators.LT,s=o.opts.unicode===!1?(0,$n._)`${r}.length`:(0,$n._)`${(0,Cj.useFunc)(t.gen,Pj.default)}(${r})`;t.fail$data((0,$n._)`${s} ${i} ${n}`)}};vp.default=kj});var sC=C(_p=>{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});var Ej=wt(),Tj=B(),Mo=j(),Aj={message:({schemaCode:t})=>(0,Mo.str)`must match pattern "${t}"`,params:({schemaCode:t})=>(0,Mo._)`{pattern: ${t}}`},Mj={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:Aj,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:i,it:s}=t,a=s.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=s.opts.code,u=c.code==="new RegExp"?(0,Mo._)`new RegExp`:(0,Tj.useFunc)(e,c),d=e.let("valid");e.try(()=>e.assign(d,(0,Mo._)`${u}(${i}, ${a}).test(${r})`),()=>e.assign(d,!1)),t.fail$data((0,Mo._)`!${d}`)}else{let c=(0,Ej.usePattern)(t,o);t.fail$data((0,Mo._)`!${c}.test(${r})`)}}};_p.default=Mj});var aC=C(Sp=>{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});var gs=j(),$j={message({keyword:t,schemaCode:e}){let r=t==="maxProperties"?"more":"fewer";return(0,gs.str)`must NOT have ${r} than ${e} properties`},params:({schemaCode:t})=>(0,gs._)`{limit: ${t}}`},Ij={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:$j,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxProperties"?gs.operators.GT:gs.operators.LT;t.fail$data((0,gs._)`Object.keys(${r}).length ${o} ${n}`)}};Sp.default=Ij});var cC=C(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});var ys=wt(),vs=j(),Oj=B(),zj={message:({params:{missingProperty:t}})=>(0,vs.str)`must have required property '${t}'`,params:({params:{missingProperty:t}})=>(0,vs._)`{missingProperty: ${t}}`},Nj={keyword:"required",type:"object",schemaType:"array",$data:!0,error:zj,code(t){let{gen:e,schema:r,schemaCode:n,data:o,$data:i,it:s}=t,{opts:a}=s;if(!i&&r.length===0)return;let c=r.length>=a.loopRequired;if(s.allErrors?u():d(),a.strictRequired){let p=t.parentSchema.properties,{definedProperties:m}=t.it;for(let h of r)if(p?.[h]===void 0&&!m.has(h)){let g=s.schemaEnv.baseId+s.errSchemaPath,v=`required property "${h}" is not defined at "${g}" (strictRequired)`;(0,Oj.checkStrictMode)(s,v,s.opts.strictRequired)}}function u(){if(c||i)t.block$data(vs.nil,l);else for(let p of r)(0,ys.checkReportMissingProp)(t,p)}function d(){let p=e.let("missing");if(c||i){let m=e.let("valid",!0);t.block$data(m,()=>f(p,m)),t.ok(m)}else e.if((0,ys.checkMissingProp)(t,r,p)),(0,ys.reportMissingProp)(t,p),e.else()}function l(){e.forOf("prop",n,p=>{t.setParams({missingProperty:p}),e.if((0,ys.noPropertyInData)(e,o,p,a.ownProperties),()=>t.error())})}function f(p,m){t.setParams({missingProperty:p}),e.forOf(p,n,()=>{e.assign(m,(0,ys.propertyInData)(e,o,p,a.ownProperties)),e.if((0,vs.not)(m),()=>{t.error(),e.break()})},vs.nil)}}};wp.default=Nj});var uC=C(bp=>{"use strict";Object.defineProperty(bp,"__esModule",{value:!0});var _s=j(),Dj={message({keyword:t,schemaCode:e}){let r=t==="maxItems"?"more":"fewer";return(0,_s.str)`must NOT have ${r} than ${e} items`},params:({schemaCode:t})=>(0,_s._)`{limit: ${t}}`},Lj={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:Dj,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxItems"?_s.operators.GT:_s.operators.LT;t.fail$data((0,_s._)`${r}.length ${o} ${n}`)}};bp.default=Lj});var zc=C(Rp=>{"use strict";Object.defineProperty(Rp,"__esModule",{value:!0});var dC=Bf();dC.code='require("ajv/dist/runtime/equal").default';Rp.default=dC});var lC=C(Pp=>{"use strict";Object.defineProperty(Pp,"__esModule",{value:!0});var Cp=is(),De=j(),jj=B(),Fj=zc(),Uj={message:({params:{i:t,j:e}})=>(0,De.str)`must NOT have duplicate items (items ## ${e} and ${t} are identical)`,params:({params:{i:t,j:e}})=>(0,De._)`{i: ${t}, j: ${e}}`},qj={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:Uj,code(t){let{gen:e,data:r,$data:n,schema:o,parentSchema:i,schemaCode:s,it:a}=t;if(!n&&!o)return;let c=e.let("valid"),u=i.items?(0,Cp.getSchemaTypes)(i.items):[];t.block$data(c,d,(0,De._)`${s} === false`),t.ok(c);function d(){let m=e.let("i",(0,De._)`${r}.length`),h=e.let("j");t.setParams({i:m,j:h}),e.assign(c,!0),e.if((0,De._)`${m} > 1`,()=>(l()?f:p)(m,h))}function l(){return u.length>0&&!u.some(m=>m==="object"||m==="array")}function f(m,h){let g=e.name("item"),v=(0,Cp.checkDataTypes)(u,g,a.opts.strictNumbers,Cp.DataType.Wrong),w=e.const("indices",(0,De._)`{}`);e.for((0,De._)`;${m}--;`,()=>{e.let(g,(0,De._)`${r}[${m}]`),e.if(v,(0,De._)`continue`),u.length>1&&e.if((0,De._)`typeof ${g} == "string"`,(0,De._)`${g} += "_"`),e.if((0,De._)`typeof ${w}[${g}] == "number"`,()=>{e.assign(h,(0,De._)`${w}[${g}]`),t.error(),e.assign(c,!1).break()}).code((0,De._)`${w}[${g}] = ${m}`)})}function p(m,h){let g=(0,jj.useFunc)(e,Fj.default),v=e.name("outer");e.label(v).for((0,De._)`;${m}--;`,()=>e.for((0,De._)`${h} = ${m}; ${h}--;`,()=>e.if((0,De._)`${g}(${r}[${m}], ${r}[${h}])`,()=>{t.error(),e.assign(c,!1).break(v)})))}}};Pp.default=qj});var fC=C(kp=>{"use strict";Object.defineProperty(kp,"__esModule",{value:!0});var xp=j(),Hj=B(),Gj=zc(),Zj={message:"must be equal to constant",params:({schemaCode:t})=>(0,xp._)`{allowedValue: ${t}}`},Bj={keyword:"const",$data:!0,error:Zj,code(t){let{gen:e,data:r,$data:n,schemaCode:o,schema:i}=t;n||i&&typeof i=="object"?t.fail$data((0,xp._)`!${(0,Hj.useFunc)(e,Gj.default)}(${r}, ${o})`):t.fail((0,xp._)`${i} !== ${r}`)}};kp.default=Bj});var pC=C(Ep=>{"use strict";Object.defineProperty(Ep,"__esModule",{value:!0});var Ss=j(),Wj=B(),Vj=zc(),Kj={message:"must be equal to one of the allowed values",params:({schemaCode:t})=>(0,Ss._)`{allowedValues: ${t}}`},Jj={keyword:"enum",schemaType:"array",$data:!0,error:Kj,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:i,it:s}=t;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let a=o.length>=s.opts.loopEnum,c,u=()=>c??(c=(0,Wj.useFunc)(e,Vj.default)),d;if(a||n)d=e.let("valid"),t.block$data(d,l);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let p=e.const("vSchema",i);d=(0,Ss.or)(...o.map((m,h)=>f(p,h)))}t.pass(d);function l(){e.assign(d,!1),e.forOf("v",i,p=>e.if((0,Ss._)`${u()}(${r}, ${p})`,()=>e.assign(d,!0).break()))}function f(p,m){let h=o[m];return typeof h=="object"&&h!==null?(0,Ss._)`${u()}(${r}, ${p}[${m}])`:(0,Ss._)`${r} === ${h}`}}};Ep.default=Jj});var hC=C(Tp=>{"use strict";Object.defineProperty(Tp,"__esModule",{value:!0});var Yj=tC(),Xj=rC(),Qj=iC(),e1=sC(),t1=aC(),r1=cC(),n1=uC(),o1=lC(),i1=fC(),s1=pC(),a1=[Yj.default,Xj.default,Qj.default,e1.default,t1.default,r1.default,n1.default,o1.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},i1.default,s1.default];Tp.default=a1});var Mp=C(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.validateAdditionalItems=void 0;var In=j(),Ap=B(),c1={message:({params:{len:t}})=>(0,In.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,In._)`{limit: ${t}}`},u1={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:c1,code(t){let{parentSchema:e,it:r}=t,{items:n}=e;if(!Array.isArray(n)){(0,Ap.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}mC(t,n)}};function mC(t,e){let{gen:r,schema:n,data:o,keyword:i,it:s}=t;s.items=!0;let a=r.const("len",(0,In._)`${o}.length`);if(n===!1)t.setParams({len:e.length}),t.pass((0,In._)`${a} <= ${e.length}`);else if(typeof n=="object"&&!(0,Ap.alwaysValidSchema)(s,n)){let u=r.var("valid",(0,In._)`${a} <= ${e.length}`);r.if((0,In.not)(u),()=>c(u)),t.ok(u)}function c(u){r.forRange("i",e.length,a,d=>{t.subschema({keyword:i,dataProp:d,dataPropType:Ap.Type.Num},u),s.allErrors||r.if((0,In.not)(u),()=>r.break())})}}ws.validateAdditionalItems=mC;ws.default=u1});var $p=C(bs=>{"use strict";Object.defineProperty(bs,"__esModule",{value:!0});bs.validateTuple=void 0;var gC=j(),Nc=B(),d1=wt(),l1={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(t){let{schema:e,it:r}=t;if(Array.isArray(e))return yC(t,"additionalItems",e);r.items=!0,!(0,Nc.alwaysValidSchema)(r,e)&&t.ok((0,d1.validateArray)(t))}};function yC(t,e,r=t.schema){let{gen:n,parentSchema:o,data:i,keyword:s,it:a}=t;d(o),a.opts.unevaluated&&r.length&&a.items!==!0&&(a.items=Nc.mergeEvaluated.items(n,r.length,a.items));let c=n.name("valid"),u=n.const("len",(0,gC._)`${i}.length`);r.forEach((l,f)=>{(0,Nc.alwaysValidSchema)(a,l)||(n.if((0,gC._)`${u} > ${f}`,()=>t.subschema({keyword:s,schemaProp:f,dataProp:f},c)),t.ok(c))});function d(l){let{opts:f,errSchemaPath:p}=a,m=r.length,h=m===l.minItems&&(m===l.maxItems||l[e]===!1);if(f.strictTuples&&!h){let g=`"${s}" is ${m}-tuple, but minItems or maxItems/${e} are not specified or different at path "${p}"`;(0,Nc.checkStrictMode)(a,g,f.strictTuples)}}}bs.validateTuple=yC;bs.default=l1});var vC=C(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});var f1=$p(),p1={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:t=>(0,f1.validateTuple)(t,"items")};Ip.default=p1});var SC=C(Op=>{"use strict";Object.defineProperty(Op,"__esModule",{value:!0});var _C=j(),h1=B(),m1=wt(),g1=Mp(),y1={message:({params:{len:t}})=>(0,_C.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,_C._)`{limit: ${t}}`},v1={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:y1,code(t){let{schema:e,parentSchema:r,it:n}=t,{prefixItems:o}=r;n.items=!0,!(0,h1.alwaysValidSchema)(n,e)&&(o?(0,g1.validateAdditionalItems)(t,o):t.ok((0,m1.validateArray)(t)))}};Op.default=v1});var wC=C(zp=>{"use strict";Object.defineProperty(zp,"__esModule",{value:!0});var Rt=j(),Dc=B(),_1={message:({params:{min:t,max:e}})=>e===void 0?(0,Rt.str)`must contain at least ${t} valid item(s)`:(0,Rt.str)`must contain at least ${t} and no more than ${e} valid item(s)`,params:({params:{min:t,max:e}})=>e===void 0?(0,Rt._)`{minContains: ${t}}`:(0,Rt._)`{minContains: ${t}, maxContains: ${e}}`},S1={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:_1,code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:i}=t,s,a,{minContains:c,maxContains:u}=n;i.opts.next?(s=c===void 0?1:c,a=u):s=1;let d=e.const("len",(0,Rt._)`${o}.length`);if(t.setParams({min:s,max:a}),a===void 0&&s===0){(0,Dc.checkStrictMode)(i,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&s>a){(0,Dc.checkStrictMode)(i,'"minContains" > "maxContains" is always invalid'),t.fail();return}if((0,Dc.alwaysValidSchema)(i,r)){let h=(0,Rt._)`${d} >= ${s}`;a!==void 0&&(h=(0,Rt._)`${h} && ${d} <= ${a}`),t.pass(h);return}i.items=!0;let l=e.name("valid");a===void 0&&s===1?p(l,()=>e.if(l,()=>e.break())):s===0?(e.let(l,!0),a!==void 0&&e.if((0,Rt._)`${o}.length > 0`,f)):(e.let(l,!1),f()),t.result(l,()=>t.reset());function f(){let h=e.name("_valid"),g=e.let("count",0);p(h,()=>e.if(h,()=>m(g)))}function p(h,g){e.forRange("i",0,d,v=>{t.subschema({keyword:"contains",dataProp:v,dataPropType:Dc.Type.Num,compositeRule:!0},h),g()})}function m(h){e.code((0,Rt._)`${h}++`),a===void 0?e.if((0,Rt._)`${h} >= ${s}`,()=>e.assign(l,!0).break()):(e.if((0,Rt._)`${h} > ${a}`,()=>e.assign(l,!1).break()),s===1?e.assign(l,!0):e.if((0,Rt._)`${h} >= ${s}`,()=>e.assign(l,!0)))}}};zp.default=S1});var CC=C(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});Yt.validateSchemaDeps=Yt.validatePropertyDeps=Yt.error=void 0;var Np=j(),w1=B(),Rs=wt();Yt.error={message:({params:{property:t,depsCount:e,deps:r}})=>{let n=e===1?"property":"properties";return(0,Np.str)`must have ${n} ${r} when property ${t} is present`},params:({params:{property:t,depsCount:e,deps:r,missingProperty:n}})=>(0,Np._)`{property: ${t},
6
6
  missingProperty: ${n},
7
7
  depsCount: ${e},
8
- deps: ${r}}`};var b1={keyword:"dependencies",type:"object",schemaType:"object",error:Yt.error,code(t){let[e,r]=R1(t);bC(t,e),RC(t,r)}};function R1({schema:t}){let e={},r={};for(let n in t){if(n==="__proto__")continue;let o=Array.isArray(t[n])?e:r;o[n]=t[n]}return[e,r]}function bC(t,e=t.schema){let{gen:r,data:n,it:o}=t;if(Object.keys(e).length===0)return;let i=r.let("missing");for(let s in e){let a=e[s];if(a.length===0)continue;let c=(0,Rs.propertyInData)(r,n,s,o.opts.ownProperties);t.setParams({property:s,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let u of a)(0,Rs.checkReportMissingProp)(t,u)}):(r.if((0,Np._)`${c} && (${(0,Rs.checkMissingProp)(t,a,i)})`),(0,Rs.reportMissingProp)(t,i),r.else())}}Yt.validatePropertyDeps=bC;function RC(t,e=t.schema){let{gen:r,data:n,keyword:o,it:i}=t,s=r.name("valid");for(let a in e)(0,w1.alwaysValidSchema)(i,e[a])||(r.if((0,Rs.propertyInData)(r,n,a,i.opts.ownProperties),()=>{let c=t.subschema({keyword:o,schemaProp:a},s);t.mergeValidEvaluated(c,s)},()=>r.var(s,!0)),t.ok(s))}Yt.validateSchemaDeps=RC;Yt.default=b1});var xC=C(Dp=>{"use strict";Object.defineProperty(Dp,"__esModule",{value:!0});var PC=L(),C1=B(),P1={message:"property name must be valid",params:({params:t})=>(0,PC._)`{propertyName: ${t.propertyName}}`},x1={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:P1,code(t){let{gen:e,schema:r,data:n,it:o}=t;if((0,C1.alwaysValidSchema)(o,r))return;let i=e.name("valid");e.forIn("key",n,s=>{t.setParams({propertyName:s}),t.subschema({keyword:"propertyNames",data:s,dataTypes:["string"],propertyName:s,compositeRule:!0},i),e.if((0,PC.not)(i),()=>{t.error(!0),o.allErrors||e.break()})}),t.ok(i)}};Dp.default=x1});var jp=C(Lp=>{"use strict";Object.defineProperty(Lp,"__esModule",{value:!0});var Lc=wt(),zt=L(),k1=fr(),jc=B(),E1={message:"must NOT have additional properties",params:({params:t})=>(0,zt._)`{additionalProperty: ${t.additionalProperty}}`},T1={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:E1,code(t){let{gen:e,schema:r,parentSchema:n,data:o,errsCount:i,it:s}=t;if(!i)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=s;if(s.props=!0,c.removeAdditional!=="all"&&(0,jc.alwaysValidSchema)(s,r))return;let u=(0,Lc.allSchemaProperties)(n.properties),d=(0,Lc.allSchemaProperties)(n.patternProperties);l(),t.ok((0,zt._)`${i} === ${k1.default.errors}`);function l(){e.forIn("key",o,g=>{!u.length&&!d.length?m(g):e.if(f(g),()=>m(g))})}function f(g){let v;if(u.length>8){let w=(0,jc.schemaRefOrVal)(s,n.properties,"properties");v=(0,Lc.isOwnProperty)(e,w,g)}else u.length?v=(0,zt.or)(...u.map(w=>(0,zt._)`${g} === ${w}`)):v=zt.nil;return d.length&&(v=(0,zt.or)(v,...d.map(w=>(0,zt._)`${(0,Lc.usePattern)(t,w)}.test(${g})`))),(0,zt.not)(v)}function p(g){e.code((0,zt._)`delete ${o}[${g}]`)}function m(g){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){p(g);return}if(r===!1){t.setParams({additionalProperty:g}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,jc.alwaysValidSchema)(s,r)){let v=e.name("valid");c.removeAdditional==="failing"?(h(g,v,!1),e.if((0,zt.not)(v),()=>{t.reset(),p(g)})):(h(g,v),a||e.if((0,zt.not)(v),()=>e.break()))}}function h(g,v,w){let b={keyword:"additionalProperties",dataProp:g,dataPropType:jc.Type.Str};w===!1&&Object.assign(b,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(b,v)}}};Lp.default=T1});var TC=C(Up=>{"use strict";Object.defineProperty(Up,"__esModule",{value:!0});var A1=us(),kC=wt(),Fp=B(),EC=jp(),M1={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:i}=t;i.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&EC.default.code(new A1.KeywordCxt(i,EC.default,"additionalProperties"));let s=(0,kC.allSchemaProperties)(r);for(let l of s)i.definedProperties.add(l);i.opts.unevaluated&&s.length&&i.props!==!0&&(i.props=Fp.mergeEvaluated.props(e,(0,Fp.toHash)(s),i.props));let a=s.filter(l=>!(0,Fp.alwaysValidSchema)(i,r[l]));if(a.length===0)return;let c=e.name("valid");for(let l of a)u(l)?d(l):(e.if((0,kC.propertyInData)(e,o,l,i.opts.ownProperties)),d(l),i.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(l),t.ok(c);function u(l){return i.opts.useDefaults&&!i.compositeRule&&r[l].default!==void 0}function d(l){t.subschema({keyword:"properties",schemaProp:l,dataProp:l},c)}}};Up.default=M1});var IC=C(qp=>{"use strict";Object.defineProperty(qp,"__esModule",{value:!0});var AC=wt(),Fc=L(),MC=B(),$C=B(),$1={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:o,it:i}=t,{opts:s}=i,a=(0,AC.allSchemaProperties)(r),c=a.filter(h=>(0,MC.alwaysValidSchema)(i,r[h]));if(a.length===0||c.length===a.length&&(!i.opts.unevaluated||i.props===!0))return;let u=s.strictSchema&&!s.allowMatchingProperties&&o.properties,d=e.name("valid");i.props!==!0&&!(i.props instanceof Fc.Name)&&(i.props=(0,$C.evaluatedPropsToName)(e,i.props));let{props:l}=i;f();function f(){for(let h of a)u&&p(h),i.allErrors?m(h):(e.var(d,!0),m(h),e.if(d))}function p(h){for(let g in u)new RegExp(h).test(g)&&(0,MC.checkStrictMode)(i,`property ${g} matches pattern ${h} (use allowMatchingProperties)`)}function m(h){e.forIn("key",n,g=>{e.if((0,Fc._)`${(0,AC.usePattern)(t,h)}.test(${g})`,()=>{let v=c.includes(h);v||t.subschema({keyword:"patternProperties",schemaProp:h,dataProp:g,dataPropType:$C.Type.Str},d),i.opts.unevaluated&&l!==!0?e.assign((0,Fc._)`${l}[${g}]`,!0):!v&&!i.allErrors&&e.if((0,Fc.not)(d),()=>e.break())})})}}};qp.default=$1});var OC=C(Hp=>{"use strict";Object.defineProperty(Hp,"__esModule",{value:!0});var I1=B(),O1={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,I1.alwaysValidSchema)(n,r)){t.fail();return}let o=e.name("valid");t.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),t.failResult(o,()=>t.reset(),()=>t.error())},error:{message:"must NOT be valid"}};Hp.default=O1});var zC=C(Gp=>{"use strict";Object.defineProperty(Gp,"__esModule",{value:!0});var z1=wt(),N1={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:z1.validateUnion,error:{message:"must match a schema in anyOf"}};Gp.default=N1});var NC=C(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});var Uc=L(),D1=B(),L1={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,Uc._)`{passingSchemas: ${t.passing}}`},j1={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:L1,code(t){let{gen:e,schema:r,parentSchema:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let i=r,s=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(u),t.result(s,()=>t.reset(),()=>t.error(!0));function u(){i.forEach((d,l)=>{let f;(0,D1.alwaysValidSchema)(o,d)?e.var(c,!0):f=t.subschema({keyword:"oneOf",schemaProp:l,compositeRule:!0},c),l>0&&e.if((0,Uc._)`${c} && ${s}`).assign(s,!1).assign(a,(0,Uc._)`[${a}, ${l}]`).else(),e.if(c,()=>{e.assign(s,!0),e.assign(a,l),f&&t.mergeEvaluated(f,Uc.Name)})})}}};Zp.default=j1});var DC=C(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});var F1=B(),U1={keyword:"allOf",schemaType:"array",code(t){let{gen:e,schema:r,it:n}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=e.name("valid");r.forEach((i,s)=>{if((0,F1.alwaysValidSchema)(n,i))return;let a=t.subschema({keyword:"allOf",schemaProp:s},o);t.ok(o),t.mergeEvaluated(a)})}};Bp.default=U1});var FC=C(Wp=>{"use strict";Object.defineProperty(Wp,"__esModule",{value:!0});var qc=L(),jC=B(),q1={message:({params:t})=>(0,qc.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,qc._)`{failingKeyword: ${t.ifClause}}`},H1={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:q1,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,jC.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=LC(n,"then"),i=LC(n,"else");if(!o&&!i)return;let s=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),o&&i){let d=e.let("ifClause");t.setParams({ifClause:d}),e.if(a,u("then",d),u("else",d))}else o?e.if(a,u("then")):e.if((0,qc.not)(a),u("else"));t.pass(s,()=>t.error(!0));function c(){let d=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(d)}function u(d,l){return()=>{let f=t.subschema({keyword:d},a);e.assign(s,a),t.mergeValidEvaluated(f,s),l?e.assign(l,(0,qc._)`${d}`):t.setParams({ifClause:d})}}}};function LC(t,e){let r=t.schema[e];return r!==void 0&&!(0,jC.alwaysValidSchema)(t,r)}Wp.default=H1});var UC=C(Vp=>{"use strict";Object.defineProperty(Vp,"__esModule",{value:!0});var G1=B(),Z1={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,G1.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};Vp.default=Z1});var qC=C(Kp=>{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});var B1=Mp(),W1=vC(),V1=$p(),K1=SC(),J1=wC(),Y1=CC(),X1=xC(),Q1=jp(),eF=TC(),tF=IC(),rF=OC(),nF=zC(),oF=NC(),iF=DC(),sF=FC(),aF=UC();function cF(t=!1){let e=[rF.default,nF.default,oF.default,iF.default,sF.default,aF.default,X1.default,Q1.default,Y1.default,eF.default,tF.default];return t?e.push(W1.default,K1.default):e.push(B1.default,V1.default),e.push(J1.default),e}Kp.default=cF});var HC=C(Jp=>{"use strict";Object.defineProperty(Jp,"__esModule",{value:!0});var we=L(),uF={message:({schemaCode:t})=>(0,we.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,we._)`{format: ${t}}`},dF={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:uF,code(t,e){let{gen:r,data:n,$data:o,schema:i,schemaCode:s,it:a}=t,{opts:c,errSchemaPath:u,schemaEnv:d,self:l}=a;if(!c.validateFormats)return;o?f():p();function f(){let m=r.scopeValue("formats",{ref:l.formats,code:c.code.formats}),h=r.const("fDef",(0,we._)`${m}[${s}]`),g=r.let("fType"),v=r.let("format");r.if((0,we._)`typeof ${h} == "object" && !(${h} instanceof RegExp)`,()=>r.assign(g,(0,we._)`${h}.type || "string"`).assign(v,(0,we._)`${h}.validate`),()=>r.assign(g,(0,we._)`"string"`).assign(v,h)),t.fail$data((0,we.or)(w(),b()));function w(){return c.strictSchema===!1?we.nil:(0,we._)`${s} && !${v}`}function b(){let x=d.$async?(0,we._)`(${h}.async ? await ${v}(${n}) : ${v}(${n}))`:(0,we._)`${v}(${n})`,S=(0,we._)`(typeof ${v} == "function" ? ${x} : ${v}.test(${n}))`;return(0,we._)`${v} && ${v} !== true && ${g} === ${e} && !${S}`}}function p(){let m=l.formats[i];if(!m){w();return}if(m===!0)return;let[h,g,v]=b(m);h===e&&t.pass(x());function w(){if(c.strictSchema===!1){l.logger.warn(S());return}throw new Error(S());function S(){return`unknown format "${i}" ignored in schema at path "${u}"`}}function b(S){let R=S instanceof RegExp?(0,we.regexpCode)(S):c.code.formats?(0,we._)`${c.code.formats}${(0,we.getProperty)(i)}`:void 0,I=r.scopeValue("formats",{key:i,ref:S,code:R});return typeof S=="object"&&!(S instanceof RegExp)?[S.type||"string",S.validate,(0,we._)`${I}.validate`]:["string",S,I]}function x(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!d.$async)throw new Error("async format in sync schema");return(0,we._)`await ${v}(${n})`}return typeof g=="function"?(0,we._)`${v}(${n})`:(0,we._)`${v}.test(${n})`}}}};Jp.default=dF});var GC=C(Yp=>{"use strict";Object.defineProperty(Yp,"__esModule",{value:!0});var lF=HC(),fF=[lF.default];Yp.default=fF});var ZC=C($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.contentVocabulary=$o.metadataVocabulary=void 0;$o.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];$o.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var WC=C(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});var pF=eC(),hF=hC(),mF=qC(),gF=GC(),BC=ZC(),yF=[pF.default,hF.default,(0,mF.default)(),gF.default,BC.metadataVocabulary,BC.contentVocabulary];Xp.default=yF});var KC=C(Hc=>{"use strict";Object.defineProperty(Hc,"__esModule",{value:!0});Hc.DiscrError=void 0;var VC;(function(t){t.Tag="tag",t.Mapping="mapping"})(VC||(Hc.DiscrError=VC={}))});var YC=C(eh=>{"use strict";Object.defineProperty(eh,"__esModule",{value:!0});var Io=L(),Qp=KC(),JC=Cc(),vF=ds(),_F=B(),SF={message:({params:{discrError:t,tagName:e}})=>t===Qp.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,Io._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},wF={keyword:"discriminator",type:"object",schemaType:"object",error:SF,code(t){let{gen:e,data:r,schema:n,parentSchema:o,it:i}=t,{oneOf:s}=o;if(!i.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!s)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),u=e.const("tag",(0,Io._)`${r}${(0,Io.getProperty)(a)}`);e.if((0,Io._)`typeof ${u} == "string"`,()=>d(),()=>t.error(!1,{discrError:Qp.DiscrError.Tag,tag:u,tagName:a})),t.ok(c);function d(){let p=f();e.if(!1);for(let m in p)e.elseIf((0,Io._)`${u} === ${m}`),e.assign(c,l(p[m]));e.else(),t.error(!1,{discrError:Qp.DiscrError.Mapping,tag:u,tagName:a}),e.endIf()}function l(p){let m=e.name("valid"),h=t.subschema({keyword:"oneOf",schemaProp:p},m);return t.mergeEvaluated(h,Io.Name),m}function f(){var p;let m={},h=v(o),g=!0;for(let x=0;x<s.length;x++){let S=s[x];if(S?.$ref&&!(0,_F.schemaHasRulesButRef)(S,i.self.RULES)){let I=S.$ref;if(S=JC.resolveRef.call(i.self,i.schemaEnv.root,i.baseId,I),S instanceof JC.SchemaEnv&&(S=S.schema),S===void 0)throw new vF.default(i.opts.uriResolver,i.baseId,I)}let R=(p=S?.properties)===null||p===void 0?void 0:p[a];if(typeof R!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(h||v(S)),w(R,x)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return m;function v({required:x}){return Array.isArray(x)&&x.includes(a)}function w(x,S){if(x.const)b(x.const,S);else if(x.enum)for(let R of x.enum)b(R,S);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function b(x,S){if(typeof x!="string"||x in m)throw new Error(`discriminator: "${a}" values must be unique strings`);m[x]=S}}}};eh.default=wF});var XC=C((P3,bF)=>{bF.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 rh=C((le,th)=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.MissingRefError=le.ValidationError=le.CodeGen=le.Name=le.nil=le.stringify=le.str=le._=le.KeywordCxt=le.Ajv=void 0;var RF=VR(),CF=WC(),PF=YC(),QC=XC(),xF=["/properties"],Gc="http://json-schema.org/draft-07/schema",Oo=class extends RF.default{_addVocabularies(){super._addVocabularies(),CF.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(PF.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(QC,xF):QC;this.addMetaSchema(e,Gc,!1),this.refs["http://json-schema.org/schema"]=Gc}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Gc)?Gc:void 0)}};le.Ajv=Oo;th.exports=le=Oo;th.exports.Ajv=Oo;Object.defineProperty(le,"__esModule",{value:!0});le.default=Oo;var kF=us();Object.defineProperty(le,"KeywordCxt",{enumerable:!0,get:function(){return kF.KeywordCxt}});var zo=L();Object.defineProperty(le,"_",{enumerable:!0,get:function(){return zo._}});Object.defineProperty(le,"str",{enumerable:!0,get:function(){return zo.str}});Object.defineProperty(le,"stringify",{enumerable:!0,get:function(){return zo.stringify}});Object.defineProperty(le,"nil",{enumerable:!0,get:function(){return zo.nil}});Object.defineProperty(le,"Name",{enumerable:!0,get:function(){return zo.Name}});Object.defineProperty(le,"CodeGen",{enumerable:!0,get:function(){return zo.CodeGen}});var EF=bc();Object.defineProperty(le,"ValidationError",{enumerable:!0,get:function(){return EF.default}});var TF=ds();Object.defineProperty(le,"MissingRefError",{enumerable:!0,get:function(){return TF.default}})});var aP=C(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.formatNames=Qt.fastFormats=Qt.fullFormats=void 0;function Xt(t,e){return{validate:t,compare:e}}Qt.fullFormats={date:Xt(nP,sh),time:Xt(oh(!0),ah),"date-time":Xt(eP(!0),iP),"iso-time":Xt(oh(),oP),"iso-date-time":Xt(eP(),sP),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:zF,"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:qF,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:NF,int32:{type:"number",validate:jF},int64:{type:"number",validate:FF},float:{type:"number",validate:rP},double:{type:"number",validate:rP},password:!0,binary:!0};Qt.fastFormats={...Qt.fullFormats,date:Xt(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,sh),time:Xt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ah),"date-time":Xt(/^\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,iP),"iso-time":Xt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,oP),"iso-date-time":Xt(/^\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,sP),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};Qt.formatNames=Object.keys(Qt.fullFormats);function AF(t){return t%4===0&&(t%100!==0||t%400===0)}var MF=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,$F=[0,31,28,31,30,31,30,31,31,30,31,30,31];function nP(t){let e=MF.exec(t);if(!e)return!1;let r=+e[1],n=+e[2],o=+e[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&AF(r)?29:$F[n])}function sh(t,e){if(t&&e)return t>e?1:t<e?-1:0}var nh=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function oh(t){return function(r){let n=nh.exec(r);if(!n)return!1;let o=+n[1],i=+n[2],s=+n[3],a=n[4],c=n[5]==="-"?-1:1,u=+(n[6]||0),d=+(n[7]||0);if(u>23||d>59||t&&!a)return!1;if(o<=23&&i<=59&&s<60)return!0;let l=i-d*c,f=o-u*c-(l<0?1:0);return(f===23||f===-1)&&(l===59||l===-1)&&s<61}}function ah(t,e){if(!(t&&e))return;let r=new Date("2020-01-01T"+t).valueOf(),n=new Date("2020-01-01T"+e).valueOf();if(r&&n)return r-n}function oP(t,e){if(!(t&&e))return;let r=nh.exec(t),n=nh.exec(e);if(r&&n)return t=r[1]+r[2]+r[3],e=n[1]+n[2]+n[3],t>e?1:t<e?-1:0}var ih=/t|\s/i;function eP(t){let e=oh(t);return function(n){let o=n.split(ih);return o.length===2&&nP(o[0])&&e(o[1])}}function iP(t,e){if(!(t&&e))return;let r=new Date(t).valueOf(),n=new Date(e).valueOf();if(r&&n)return r-n}function sP(t,e){if(!(t&&e))return;let[r,n]=t.split(ih),[o,i]=e.split(ih),s=sh(r,o);if(s!==void 0)return s||ah(n,i)}var IF=/\/|:/,OF=/^(?:[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 zF(t){return IF.test(t)&&OF.test(t)}var tP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function NF(t){return tP.lastIndex=0,tP.test(t)}var DF=-(2**31),LF=2**31-1;function jF(t){return Number.isInteger(t)&&t<=LF&&t>=DF}function FF(t){return Number.isInteger(t)}function rP(){return!0}var UF=/[^\\]\\Z/;function qF(t){if(UF.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var cP=C(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.formatLimitDefinition=void 0;var HF=rh(),Nt=L(),Kr=Nt.operators,Zc={formatMaximum:{okStr:"<=",ok:Kr.LTE,fail:Kr.GT},formatMinimum:{okStr:">=",ok:Kr.GTE,fail:Kr.LT},formatExclusiveMaximum:{okStr:"<",ok:Kr.LT,fail:Kr.GTE},formatExclusiveMinimum:{okStr:">",ok:Kr.GT,fail:Kr.LTE}},GF={message:({keyword:t,schemaCode:e})=>(0,Nt.str)`should be ${Zc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Nt._)`{comparison: ${Zc[t].okStr}, limit: ${e}}`};No.formatLimitDefinition={keyword:Object.keys(Zc),type:"string",schemaType:"string",$data:!0,error:GF,code(t){let{gen:e,data:r,schemaCode:n,keyword:o,it:i}=t,{opts:s,self:a}=i;if(!s.validateFormats)return;let c=new HF.KeywordCxt(i,a.RULES.all.format.definition,"format");c.$data?u():d();function u(){let f=e.scopeValue("formats",{ref:a.formats,code:s.code.formats}),p=e.const("fmt",(0,Nt._)`${f}[${c.schemaCode}]`);t.fail$data((0,Nt.or)((0,Nt._)`typeof ${p} != "object"`,(0,Nt._)`${p} instanceof RegExp`,(0,Nt._)`typeof ${p}.compare != "function"`,l(p)))}function d(){let f=c.schema,p=a.formats[f];if(!p||p===!0)return;if(typeof p!="object"||p instanceof RegExp||typeof p.compare!="function")throw new Error(`"${o}": format "${f}" does not define "compare" function`);let m=e.scopeValue("formats",{key:f,ref:p,code:s.code.formats?(0,Nt._)`${s.code.formats}${(0,Nt.getProperty)(f)}`:void 0});t.fail$data(l(m))}function l(f){return(0,Nt._)`${f}.compare(${r}, ${n}) ${Zc[o].fail} 0`}},dependencies:["format"]};var ZF=t=>(t.addKeyword(No.formatLimitDefinition),t);No.default=ZF});var fP=C((Cs,lP)=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});var Do=aP(),BF=cP(),ch=L(),uP=new ch.Name("fullFormats"),WF=new ch.Name("fastFormats"),uh=(t,e={keywords:!0})=>{if(Array.isArray(e))return dP(t,e,Do.fullFormats,uP),t;let[r,n]=e.mode==="fast"?[Do.fastFormats,WF]:[Do.fullFormats,uP],o=e.formats||Do.formatNames;return dP(t,o,r,n),e.keywords&&(0,BF.default)(t),t};uh.get=(t,e="full")=>{let n=(e==="fast"?Do.fastFormats:Do.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function dP(t,e,r,n){var o,i;(o=(i=t.opts.code).formats)!==null&&o!==void 0||(i.formats=(0,ch._)`require("ajv-formats/dist/formats").${n}`);for(let s of e)t.addFormat(s,r[s])}lP.exports=Cs=uh;Object.defineProperty(Cs,"__esModule",{value:!0});Cs.default=uh});var UP=C((a8,FP)=>{FP.exports=jP;jP.sync=PU;var DP=wr("fs");function CU(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n<r.length;n++){var o=r[n].toLowerCase();if(o&&t.substr(-o.length).toLowerCase()===o)return!0}return!1}function LP(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:CU(e,r)}function jP(t,e,r){DP.stat(t,function(n,o){r(n,n?!1:LP(o,t,e))})}function PU(t,e){return LP(DP.statSync(t),t,e)}});var BP=C((c8,ZP)=>{ZP.exports=HP;HP.sync=xU;var qP=wr("fs");function HP(t,e,r){qP.stat(t,function(n,o){r(n,n?!1:GP(o,e))})}function xU(t,e){return GP(qP.statSync(t),e)}function GP(t,e){return t.isFile()&&kU(t,e)}function kU(t,e){var r=t.mode,n=t.uid,o=t.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),s=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),d=a|c,l=r&u||r&c&&o===s||r&a&&n===i||r&d&&i===0;return l}});var VP=C((d8,WP)=>{var u8=wr("fs"),ru;process.platform==="win32"||global.TESTING_WINDOWS?ru=UP():ru=BP();WP.exports=Eh;Eh.sync=EU;function Eh(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,o){Eh(t,e||{},function(i,s){i?o(i):n(s)})})}ru(t,e||{},function(n,o){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,o=!1),r(n,o)})}function EU(t,e){try{return ru.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var tx=C((l8,ex)=>{var Zo=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",KP=wr("path"),TU=Zo?";":":",JP=VP(),YP=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),XP=(t,e)=>{let r=e.colon||TU,n=t.match(/\//)||Zo&&t.match(/\\/)?[""]:[...Zo?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],o=Zo?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=Zo?o.split(r):[""];return Zo&&t.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:o}},QP=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:o,pathExtExe:i}=XP(t,e),s=[],a=u=>new Promise((d,l)=>{if(u===n.length)return e.all&&s.length?d(s):l(YP(t));let f=n[u],p=/^".*"$/.test(f)?f.slice(1,-1):f,m=KP.join(p,t),h=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;d(c(h,u,0))}),c=(u,d,l)=>new Promise((f,p)=>{if(l===o.length)return f(a(d+1));let m=o[l];JP(u+m,{pathExt:i},(h,g)=>{if(!h&&g)if(e.all)s.push(u+m);else return f(u+m);return f(c(u,d,l+1))})});return r?a(0).then(u=>r(null,u),r):a(0)},AU=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:o}=XP(t,e),i=[];for(let s=0;s<r.length;s++){let a=r[s],c=/^".*"$/.test(a)?a.slice(1,-1):a,u=KP.join(c,t),d=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+u:u;for(let l=0;l<n.length;l++){let f=d+n[l];try{if(JP.sync(f,{pathExt:o}))if(e.all)i.push(f);else return f}catch{}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw YP(t)};ex.exports=QP;QP.sync=AU});var nx=C((f8,Th)=>{"use strict";var rx=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Th.exports=rx;Th.exports.default=rx});var ax=C((p8,sx)=>{"use strict";var ox=wr("path"),MU=tx(),$U=nx();function ix(t,e){let r=t.options.env||process.env,n=process.cwd(),o=t.options.cwd!=null,i=o&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(t.options.cwd)}catch{}let s;try{s=MU.sync(t.command,{path:r[$U({env:r})],pathExt:e?ox.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return s&&(s=ox.resolve(o?t.options.cwd:"",s)),s}function IU(t){return ix(t)||ix(t,!0)}sx.exports=IU});var cx=C((h8,Mh)=>{"use strict";var Ah=/([()\][%!^"`<>&|;, *?])/g;function OU(t){return t=t.replace(Ah,"^$1"),t}function zU(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Ah,"^$1"),e&&(t=t.replace(Ah,"^$1")),t}Mh.exports.command=OU;Mh.exports.argument=zU});var dx=C((m8,ux)=>{"use strict";ux.exports=/^#!(.*)/});var fx=C((g8,lx)=>{"use strict";var NU=dx();lx.exports=(t="")=>{let e=t.match(NU);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),o=r.split("/").pop();return o==="env"?n:n?`${o} ${n}`:o}});var hx=C((y8,px)=>{"use strict";var $h=wr("fs"),DU=fx();function LU(t){let r=Buffer.alloc(150),n;try{n=$h.openSync(t,"r"),$h.readSync(n,r,0,150,0),$h.closeSync(n)}catch{}return DU(r.toString())}px.exports=LU});var vx=C((v8,yx)=>{"use strict";var jU=wr("path"),mx=ax(),gx=cx(),FU=hx(),UU=process.platform==="win32",qU=/\.(?:com|exe)$/i,HU=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function GU(t){t.file=mx(t);let e=t.file&&FU(t.file);return e?(t.args.unshift(t.file),t.command=e,mx(t)):t.file}function ZU(t){if(!UU)return t;let e=GU(t),r=!qU.test(e);if(t.options.forceShell||r){let n=HU.test(e);t.command=jU.normalize(t.command),t.command=gx.command(t.command),t.args=t.args.map(i=>gx.argument(i,n));let o=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${o}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function BU(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:ZU(n)}yx.exports=BU});var wx=C((_8,Sx)=>{"use strict";var Ih=process.platform==="win32";function Oh(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function WU(t,e){if(!Ih)return;let r=t.emit;t.emit=function(n,o){if(n==="exit"){let i=_x(o,e);if(i)return r.call(t,"error",i)}return r.apply(t,arguments)}}function _x(t,e){return Ih&&t===1&&!e.file?Oh(e.original,"spawn"):null}function VU(t,e){return Ih&&t===1&&!e.file?Oh(e.original,"spawnSync"):null}Sx.exports={hookChildProcess:WU,verifyENOENT:_x,verifyENOENTSync:VU,notFoundError:Oh}});var Cx=C((S8,Bo)=>{"use strict";var bx=wr("child_process"),zh=vx(),Nh=wx();function Rx(t,e,r){let n=zh(t,e,r),o=bx.spawn(n.command,n.args,n.options);return Nh.hookChildProcess(o,n),o}function KU(t,e,r){let n=zh(t,e,r),o=bx.spawnSync(n.command,n.args,n.options);return o.error=o.error||Nh.verifyENOENTSync(o.status,n),o}Bo.exports=Rx;Bo.exports.spawn=Rx;Bo.exports.sync=KU;Bo.exports._parse=zh;Bo.exports._enoent=Nh});var Ax=C(Lh=>{"use strict";var kx=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,eq=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,Ex=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,tq=/\\([\u000b\u0020-\u00ff])/g,rq=/([\\"])/g,Tx=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Lh.format=nq;Lh.parse=oq;function nq(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!Tx.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var o,i=Object.keys(e).sort(),s=0;s<i.length;s++){if(o=i[s],!Ex.test(o))throw new TypeError("invalid parameter name");n+="; "+o+"="+sq(e[o])}return n}function oq(t){if(!t)throw new TypeError("argument string is required");var e=typeof t=="object"?iq(t):t;if(typeof e!="string")throw new TypeError("argument string is required to be a string");var r=e.indexOf(";"),n=r!==-1?e.slice(0,r).trim():e.trim();if(!Tx.test(n))throw new TypeError("invalid media type");var o=new aq(n.toLowerCase());if(r!==-1){var i,s,a;for(kx.lastIndex=r;s=kx.exec(e);){if(s.index!==r)throw new TypeError("invalid parameter format");r+=s[0].length,i=s[1].toLowerCase(),a=s[2],a.charCodeAt(0)===34&&(a=a.slice(1,-1),a.indexOf("\\")!==-1&&(a=a.replace(tq,"$1"))),o.parameters[i]=a}if(r!==e.length)throw new TypeError("invalid parameter format")}return o}function iq(t){var e;if(typeof t.getHeader=="function"?e=t.getHeader("content-type"):typeof t.headers=="object"&&(e=t.headers&&t.headers["content-type"]),typeof e!="string")throw new TypeError("content-type header is missing from object");return e}function sq(t){var e=String(t);if(Ex.test(e))return e;if(e.length>0&&!eq.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(rq,"\\$1")+'"'}function aq(t){this.parameters=Object.create(null),this.type=t}});import{logger as G2}from"@hermes/logger";import{logger as AH}from"@hermes/logger";var dT="mcp-auth";function _e(t,e=t.ui){if(!e)return;let r=0;for(let n of t.servers.values())n.status==="auth_required"&&r++;e.setStatus(dT,r>0?e.theme.fg("warning",`[${r} MCP needs auth, use /mcp]`):void 0)}import{MCP_CONNECTION_STATE_TOPIC as nH}from"@augmentcode/auggie-v2";import{logger as oH}from"@hermes/logger";import{logger as FT}from"@hermes/logger";import{logger as fT}from"@hermes/logger";function lT(t,e,r){let n=r?.get(t.name);return n!==void 0?n.host===t&&n.owner.kind==="plugin":e?.get(t.name)===t}function br(t,e,r){let n=r?.get(t.name);if(n?.host===t)return n.owner.kind;let o=t.config;return o?.vfsSource!==void 0?"vfs":o?.registrySource!==void 0?"registry":lT(t,e,r)?"plugin":"local"}function pT(t){let e=t.getLastProbeResult();return e!==void 0&&!e.ok&&e.outcome==="authFailure"?e:void 0}var Mm=fT.child({prefix:"pi-mcp"}),hT="augment:mcp-status-report";function rr(t,e,r){let n=t.servers.get(e),o=n?.hostedCredentialProvenance;if(o?.kind==="accepted"&&o.hostedAccessTokenOnly===!0)return{serverGeneration:o.hostGeneration,mcpConfigId:o.configId,credentialRevision:o.credentialRevision,credentialRevisionDomain:o.credentialRevisionDomain};let i=n?.targetCredentialProvenance?n.targetCredentialProvenance.credential:t.credentialRevisions?.get(e);return{serverGeneration:t.serverGenerations?.get(e)??0,mcpConfigId:r??n?.config.id,credentialRevision:i?.revision,credentialRevisionDomain:i?.domain}}function ri(t,e,r,n){let o=rr(t,e);return o.serverGeneration!==n.serverGeneration||o.mcpConfigId!==n.mcpConfigId||o.credentialRevision!==n.credentialRevision||o.credentialRevisionDomain!==n.credentialRevisionDomain?!1:(t.statusFailureCategories??=new Map,t.statusFailureCategories.set(e,{category:r,...n}),!0)}function it(t,e,r){if(r){let o=rr(t,e);if(o.serverGeneration!==r.serverGeneration||o.mcpConfigId!==r.mcpConfigId||o.credentialRevision!==r.credentialRevision||o.credentialRevisionDomain!==r.credentialRevisionDomain)return!1}let n=t.statusFailureCategories?.get(e);return t.statusFailureCategories?.delete(e),typeof n=="object"&&n.category==="auth_refresh_needed"&&t.authRefreshNeededReportKeys?.delete(e),!0}function mT(t,e){t.statusFailureCategories??=new Map;let r=t.statusFailureCategories.get(e);if(typeof r=="string")return r;let n=rr(t,e);if(r?.serverGeneration===n.serverGeneration&&r.mcpConfigId===n.mcpConfigId&&r.credentialRevision===n.credentialRevision&&r.credentialRevisionDomain===n.credentialRevisionDomain)return r.category;t.statusFailureCategories.delete(e),t.authRefreshNeededReportKeys?.delete(e)}var Xs=3e4;function gT(t){switch(t.status){case"success":return"connected";case"failed":case"auth_required":return"failed";case"initializing":{let e=t.connectStartedAt;return e!==void 0&&Date.now()-e>=Xs?"failed":void 0}default:return}}var $m="authentication required",yT="Authentication refresh is pending in the backend; retry shortly.",vT="timed out connecting after 30s",_T="Couldn't add this MCP server: its configuration could not be loaded from the MCP registry. Remove it and try again.",ST="Couldn't add this MCP server: another connected server already uses this name. Remove or rename one of them, then try again.",wT="Server was selected for this session but could not be loaded (it may be disabled or misconfigured in the MCP registry).",bT="Server was not loaded: another selected MCP server with the same name takes precedence. Rename or deselect one of them.",RT="Server requires re-authentication \u2014 its saved credential is no longer valid. Reconnect it from the session MCP panel.",CT="Server was not started: this session's Space policy does not allow it.",PT="Server was not started: its shared credential is not available to this session's identity.",xT="Server requires authentication \u2014 a same-named MCP server was connected in its place. Reconnect this server from the session MCP panel to use it instead.";function kT(t,e){let r=new Set;for(let a of t.servers.values())a.config.id!==void 0&&r.add(a.config.id);let n=new Set(e.map(a=>a.mcpConfigId).filter(a=>a!==void 0)),o=new Set(e.map(a=>a.name)),i=new Set(e.filter(a=>a.mcpConfigId===void 0).map(a=>a.name)),s=a=>t.registryConfigNamesById.get(a)??a;for(let a of t.failedAddConfigIds){if(r.has(a)||n.has(a))continue;let c=s(a);n.add(a),o.add(c),e.push({name:c,source:"registry",status:"failed",failureCategory:"configuration",errorMessage:t.nameCollisionAddConfigIds.has(a)?ST:_T,mcpConfigId:a,dynamicallyAdded:!0})}for(let a of t.selectedRegistryConfigIds??[]){if(r.has(a)||n.has(a)||t.sessionRemovedConfigIds.has(a))continue;let c=s(a);i.has(c)||(n.add(a),e.push({name:c,source:"registry",status:"failed",...TT({state:t,id:a,name:c,reportedNames:o}),mcpConfigId:a}),o.add(c))}ET({state:t,servers:e,liveConfigIds:r,reportedConfigIds:n,reportedNames:o,idlessReportedNames:i})}function ET(t){let{state:e,servers:r,liveConfigIds:n,reportedConfigIds:o,reportedNames:i,idlessReportedNames:s}=t;for(let[a,c]of e.oauthFailureCategoriesByConfigId??[]){if(n.has(a)||o.has(a)||e.sessionRemovedConfigIds.has(a))continue;let u=Om(e,a);if(u===void 0)continue;let d=e.registryConfigNamesById.get(a)??c.serverName;s.has(d)||(o.add(a),r.push({name:d,source:"registry",status:"failed",...u,mcpConfigId:a}),i.add(d))}}function Im(t,e){let r=new Map;for(let[n,o]of Object.entries(e)){if(!o||typeof o!="object")continue;let i=o;typeof i.category=="string"&&typeof i.config_id=="string"&&i.config_id!==""&&r.set(i.config_id,{category:i.category,serverName:n})}t.oauthFailureCategoriesByConfigId=r}function Om(t,e){switch(t.oauthFailureCategoriesByConfigId?.get(e)?.category){case"reauth_required":case"auth_terminal":return{errorMessage:RT,failureCategory:"auth_terminal"};case"policy_excluded":return{errorMessage:CT,failureCategory:"policy_excluded"};case"share_identity_excluded":return{errorMessage:PT,failureCategory:"share_identity_excluded"};default:return}}function TT(t){let{state:e,id:r,name:n,reportedNames:o}=t;if(e.authFallbackDisplacedConfigIds.has(r))return{errorMessage:xT,failureCategory:"auth_terminal"};let i=Om(e,r);return i!==void 0?i:{errorMessage:o.has(n)?bT:wT,failureCategory:"configuration"}}function AT(t,e){return e!==void 0?e.isAuthError?$m:e.error:t.status==="initializing"?vT:t.lastError??(t.status==="auth_required"?$m:void 0)}function MT(t,e){if(t.targetCredentialProvenance)return t.targetCredentialProvenance.credential;let r=e.statusFailureCategories?.get(t.name);return typeof r=="object"?{revision:r.credentialRevision,domain:r.credentialRevisionDomain}:e.credentialRevisions?.get(t.name)}function $T(t,e){let r=gT(t);if(r===void 0)return;let n=mT(e,t.name),o=r==="connected"?pT(t):void 0;(o!==void 0||n==="auth_refresh_needed")&&(r="failed");let i={name:t.name,source:br(t,e.pluginServerHosts,e.hostLeases),status:r,transport:t.config.type,tools:t.suppressesProviderDiagnostics?[]:t.tools.map(u=>u.name)},s=t.config.id;s!==void 0&&(i.mcpConfigId=s,e.dynamicallyAddedConfigIds.has(s)&&(i.dynamicallyAdded=!0));let a=e.statusFailureCategories?.get(t.name),c=MT(t,e);return c?.revision!==void 0&&c.domain!==void 0&&(i.credentialRevision=c.revision,i.credentialRevisionDomain=c.domain),r==="failed"&&(i.errorMessage=n==="auth_refresh_needed"?yT:AT(t,o),i.failureCategory=n??(t.status==="auth_required"||o?.isAuthError===!0?"auth_terminal":"transport_transient"),typeof a=="object"&&(i.serverGeneration=a.serverGeneration)),i}function IT(t){let e=[];for(let r of t.servers.values()){let n=$T(r,t);n!==void 0&&e.push(n)}return kT(t,e),e}function j(t,e){try{let r=IT(e),n=JSON.stringify(r);if(n===e.lastStatusReport)return;e.lastStatusReport=n,e.statusHostGeneration??=1,e.statusReportSequence=(e.statusReportSequence??0)+1;let o={servers:r,observedAtMs:Date.now(),hostGeneration:e.statusHostGeneration,reportSequence:e.statusReportSequence};t.events.emit(hT,o),Mm.info(`Emitted MCP status report: ${r.length} server(s)`)}catch(r){Mm.warn(`Failed to emit MCP status report: ${r instanceof Error?r.message:String(r)}`)}}var Qs={local:4,registry:3,plugin:2,vfs:1};function Ut(t){return t.hostLeases??=new Map,t.hostLeases}function OT(t){return t.hostLeaseRevisions??=new Map,t.hostLeaseRevisions}function ni(t){return t.expectedCredentialDomains??=new Map,t.expectedCredentialDomains}function oi(t,e){return t.kind===e.kind&&t.identity===e.identity}function zm(t){if(!t.host)return t.retirement;let e=()=>{},r=new Promise(n=>{e=n});return{incumbent:{owner:t.owner,revision:t.revision,host:t.host},teardown:r,settled:!1,resolve:e}}function ju(t,e){let r=OT(t),n=(r.get(e)??0)+1;return r.set(e,n),n}function ea(t,e,r){if(r.kind==="registry"){ni(t).set(e,{kind:"domain",domain:r.identity});return}ni(t).set(e,{kind:"blocked"})}function Fu(t,e,r){r&&t.servers.get(e)===r&&t.servers.delete(e),r&&t.pluginServerHosts.get(e)===r&&(t.pluginServerHosts.delete(e),t.pluginServerNames.delete(e))}function Rr(t,e){return t.registrySource!==void 0?{kind:"registry",identity:`user:${t.id??t.name}`}:t.vfsSource!==void 0?{kind:"vfs",identity:t.id??t.name}:{kind:e??"local",identity:t.id??t.name}}function Q(t,e,r){let n=Ut(t),o=n.get(e);if(o)return o;let i=t.pluginServerHosts.get(e)===r?"plugin":void 0,s=r.config,a=s?Rr(s,i):{kind:i??"local",identity:e},c={owner:a,revision:ju(t,e),host:r,connectionEpoch:t.mcpConnectionEpoch};return n.set(e,c),ea(t,e,a),c}function Nm(t){let{state:e,name:r,host:n}=t,o=Ut(e),i=o.get(r);if(!i||i.host!==n||i.owner.kind!=="local"||e.servers.get(r)!==n)return;let s={owner:{kind:"plugin",identity:n.config.id??r},revision:ju(e,r),host:n};return o.set(r,s),e.pluginServerNames.add(r),e.pluginServerHosts.set(r,n),ea(e,r,s.owner),s}function ii(t){let{state:e,name:r,owner:n,expectedRevision:o,expectedHost:i}=t,s=Ut(e),a=s.get(r);if(a){if(a.retirement?.settled)return;let l=Qs[n.kind]>Qs[a.owner.kind],f=Qs[n.kind]===Qs[a.owner.kind],p=o===a.revision&&(i===void 0||i===a.host);if(!(l||f&&p))return}let c=a?.host,u=a?zm(a):void 0;Fu(e,r,c),a?.owner.kind==="plugin"&&(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r));let d={owner:n,connectionEpoch:e.mcpConnectionEpoch,revision:ju(e,r),host:void 0,...u?{retirement:u}:{}};return s.set(r,d),ea(e,r,n),{lease:d,...c?{displacedHost:c}:{},...u?{retirement:u}:{}}}async function Uu(t){if(!t)return;let e=await t.teardown;if(e.status==="failed")throw e.error instanceof Error?e.error:new Error(String(e.error))}function ve(t){let{state:e,name:r,retirement:n,result:o}=t;if(n.settled)return!1;n.settled=!0,n.result=o;let s=Ut(e).get(r);return s?.retirement===n&&(o.status==="failed"?(s.host=void 0,ni(e).set(r,{kind:"blocked"})):s.retirement=void 0),n.resolve(o),!0}function ta(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e).get(r);return!s||s.revision!==o||!oi(s.owner,n)||s.host!==void 0||s.retirement!==void 0?!1:(s.host=i,e.servers.set(r,i),n.kind==="plugin"?(e.pluginServerNames.add(r),e.pluginServerHosts.set(r,i)):(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r)),!0)}function st(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e).get(r);if(!s||s.revision!==o||!oi(s.owner,n)||s.host!==i||s.retirement!==void 0)return;let a=zm(s);if(a)return Fu(e,r,i),s.host=void 0,s.retirement=a,a}function Dm(t){let{state:e,name:r,retiredOwner:n,retirement:o}=t,i=Ut(e),s=i.get(r),a=o.result;return!s||s.retirement!==o||s.host!==void 0||!o.settled||!oi(o.incumbent.owner,n)||a?.status!=="failed"||a.transportDisposed!==!0?!1:(s.retirement=void 0,!oi(s.owner,n)||s.revision!==o.incumbent.revision?(ea(e,r,s.owner),!0):(i.delete(r),ni(e).set(r,{kind:"blocked"}),!0))}function xe(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e),a=s.get(r);return!a||a.revision!==o||!oi(a.owner,n)||a.host!==i||a.retirement!==void 0?!1:(Fu(e,r,a.host),a.owner.kind==="plugin"&&(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r)),s.delete(r),ni(e).set(r,{kind:"blocked"}),!0)}function N(t,e){return Ut(t).get(e)}function qu(t,e,r){let n=Ut(t).get(e);return n?.host===r&&(n.owner.kind!=="registry"||n.connectionEpoch===t.mcpConnectionEpoch)}function Lm(t){if(t!==void 0)try{return new URL(t).toString()}catch{return t}}function Cr(t,e){return!t||!e?!1:t.id===e.id&&t.name===e.name&&t.type===e.type&&Lm(t.url)===Lm(e.url)&&t.registrySource===e.registrySource&&t.vfsSource===e.vfsSource}var Wn=class{_tokens=new Map;_authRequired=new Set;_retiredCredentials=new Set;_credentialRetirementGenerations=new Map;_credentialIdentities=new Map;get(e){return this._tokens.get(e)}commit(e,r,n){this._tokens.set(e,r),this._authRequired.delete(e),this._retiredCredentials.delete(e),n?this._credentialIdentities.set(e,{...n}):this._credentialIdentities.delete(e)}hasCredentialIdentity(e,r){return Cr(this._credentialIdentities.get(e),r)}reconcileCredentialIdentity(e,r,n){return this._tokens.get(e)!==r||this._retiredCredentials.has(e)?!1:(n?this._credentialIdentities.set(e,{...n}):this._credentialIdentities.delete(e),!0)}set(e,r,n){this.commit(e,r,n)}persist(e,r,n){return Promise.resolve(void 0)}captureAuthenticatedIdentityVersion(e){return Promise.resolve(void 0)}captureRefreshIdentityVersion(e){return Promise.resolve(void 0)}persistAuthenticated(e,r,n,o){return this.persist(e,r,n)}persistRefresh(e,r,n,o){return this.persist(e,r,n)}restoreAfterSupersededAuthentication(e,r,n,o,i,s){return this.persist(e,n,s)}restoreAfterSupersededRefresh(e,r,n,o,i,s){return this.restoreAfterSupersededAuthentication(e,r,n,o,i,s)}async setAndPersist(e,r,n){await this.persist(e,r,n),this.set(e,r,n)}snapshot(){return{tokens:new Map(this._tokens),authRequired:new Set(this._authRequired),retiredCredentials:new Set(this._retiredCredentials),credentialRetirementGenerations:new Map(this._credentialRetirementGenerations),credentialIdentities:new Map([...this._credentialIdentities].map(([e,r])=>[e,{...r}]))}}seed(e){for(let[r,n]of e.tokens)this._tokens.set(r,n);for(let r of e.authRequired)this._authRequired.add(r);for(let r of e.retiredCredentials??[])this._retiredCredentials.add(r);for(let[r,n]of e.credentialRetirementGenerations??[])this._credentialRetirementGenerations.set(r,n);for(let[r,n]of e.credentialIdentities??[])this._credentialIdentities.set(r,{...n})}delete(e,r){this._tokens.delete(e),this._credentialIdentities.delete(e)}clearLocalCredential(e){this._tokens.delete(e),this._credentialIdentities.delete(e),this._authRequired.delete(e),this._retiredCredentials.add(e),this._credentialRetirementGenerations.set(e,(this._credentialRetirementGenerations.get(e)??0)+1)}retireCredential(e,r,n){return n?.preserveNameState||this.clearLocalCredential(e),Promise.resolve()}credentialRetirementGeneration(e){return this._credentialRetirementGenerations.get(e)??0}isCredentialRetired(e){return this._retiredCredentials.has(e)}markAuthRequired(e){this._authRequired.add(e)}isAuthRequired(e){return this._authRequired.has(e)}clearAuthRequired(e){this._authRequired.delete(e)}};function ai(t,e){t.authenticatingServerName===e&&(t.authenticationGeneration=(t.authenticationGeneration??0)+1,t.authenticating=!1,t.authenticatingServerName=void 0)}function Hu(t){try{return new URL(t).toString()}catch{return t}}function si(t){if(!(t.type!=="http"&&t.type!=="sse"))return{id:t.id,name:t.name,type:t.type,url:Hu(t.url),auth:t.auth,registrySource:t.registrySource,vfsSource:t.vfsSource}}function qt(t,e){return si(e.config)}function ft(t,e){return t.type!==e.type||t.id!==e.id?!1:t.type==="stdio"||e.type==="stdio"?!0:Hu(t.url)===Hu(e.url)}function Gu(t,e){let r=si(t),n=si(e);return!r||!n?ft(t,e):Cr(r,n)}function Zu(t,e){return["user","tenant","private","shared"].some(r=>t===`${r}:${e}`)}function zT(t){let{state:e,name:r,expectedRegistryConfigId:n,expectedConfig:o,currentConfig:i}=t;if(o)return o;let s=n?e.registryCredentialConfigsById?.get(n):void 0;if(s?.name===r)return s;let a=e.registryCredentialConfigs?.get(r);if(a?.id===n)return a;if(i?.id===n)return i}function NT(t){let{currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n}=t;return e?r?!ft(e,r):n===void 0?!1:e.id===void 0?e.registrySource===void 0:e.id!==n:!1}function jm(t){let{identity:e,retiredConfigId:r,retiredOwnerIdentity:n}=t;return r!==void 0?!Zu(e,r):n!==void 0&&e!==n}function Fm(t,e,r){return r&&e!==void 0&&t!==void 0&&Zu(t,e)}function DT(t){let{acceptedDomain:e,currentDomain:r,retiredConfigId:n,retiresRegistryIdentity:o}=t;return!o||n===void 0?!1:[e,r].some(i=>i!==void 0&&!Zu(i,n))}function Um(t){let{currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n,retiresRegistryIdentity:o,currentLease:i,expectedFence:s,retiredConfigId:a,retiredOwnerIdentity:c,acceptedDomain:u,currentDomain:d}=t;if(NT({currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n}))return!0;let l={retiredConfigId:a,retiredOwnerIdentity:c};return o&&i!==void 0&&(i.owner.kind!=="registry"||jm({identity:i.owner.identity,...l}))||o&&s?.kind==="domain"&&jm({identity:s.domain,...l})?!0:DT({acceptedDomain:u,currentDomain:d,retiredConfigId:a,retiresRegistryIdentity:o})}function LT(t){let{name:e,retiredConfig:r,expectedRegistryConfigId:n}=t;if(r)return si(r);if(n!==void 0)return{id:n,name:e}}function jT(t){let{state:e,name:r,mode:n,stillOwnsNameScopedRevision:o,retiredConfig:i}=t;if(n==="durable"){e.preservedCredentialIdentities?.delete(r);return}!o||!i||!si(i)||!e.tokens?.get(r)||(e.preservedCredentialIdentities??=new Map,e.preservedCredentialIdentities.set(r,{...i}))}async function qm(t,e,r,n,o){let i=t.oauthCredentialDomains?.get(e),s=t.credentialRevisions?.get(e)?.domain,a=t.servers?.get(e)?.config,c=zT({state:t,name:e,expectedRegistryConfigId:r,expectedConfig:n,currentConfig:a}),u=c?.id??r,d=c?.registrySource!==void 0||c===void 0&&r!==void 0,l=c?.registrySource===void 0?void 0:`user:${c.id??c.name}`,f=Um({currentConfig:a,retiredConfig:c,expectedRegistryConfigId:r,retiresRegistryIdentity:d,currentLease:t.hostLeases?.get(e),expectedFence:t.expectedCredentialDomains?.get(e),retiredConfigId:u,retiredOwnerIdentity:l,acceptedDomain:i,currentDomain:s}),p=Fm(i,u,d),m=Fm(s,u,d),h=!f,g=t.tokens?.get(e)!==void 0&&i===void 0&&s===void 0,w=f&&!(h||p||m||g);if(o==="durable"){let R=LT({name:e,retiredConfig:c,expectedRegistryConfigId:r});await t.tokens?.retireCredential(e,R,{preserveNameState:w})}let b=Um({currentConfig:t.servers?.get(e)?.config,retiredConfig:c,expectedRegistryConfigId:r,retiresRegistryIdentity:d,currentLease:t.hostLeases?.get(e),expectedFence:t.expectedCredentialDomains?.get(e),retiredConfigId:u,retiredOwnerIdentity:l,acceptedDomain:t.oauthCredentialDomains?.get(e),currentDomain:t.credentialRevisions?.get(e)?.domain}),x=h&&!b,S=!1;return t.equalRevisionRebindDomains?.delete(e),(x||p)&&t.oauthCredentialDomains?.get(e)===i&&(t.oauthCredentialDomains.delete(e),S=!0),(x||m)&&t.credentialRevisions?.get(e)?.domain===s&&(t.credentialRevisions.delete(e),t.hostedCredentialOwnership?.delete(e),S=!0),x&&o==="durable"&&t.expectedCredentialDomains?.set(e,{kind:"blocked"}),jT({state:t,name:e,mode:o,stillOwnsNameScopedRevision:x,retiredConfig:c}),S&&(ai(t,e),it(t,e),t.authRefreshNeededReportKeys?.delete(e)),x}function pt(t,e,r,n){return qm(t,e,r,n,"durable")}function ci(t,e,r,n){return qm(t,e,r,n,"session")}function Hm(t){let e=[];if(Object.hasOwn(t,"credential_owner_domain")&&e.push(t.credential_owner_domain),Object.hasOwn(t,"credentialOwnerDomain")&&e.push(t.credentialOwnerDomain),e.length===0)return{kind:"absent"};if(e.some(n=>typeof n!="string"||!/^user:.+/.test(n)))return{kind:"invalid"};let r=e[0];return e.every(n=>n===r)?{kind:"valid",ownerDomain:r}:{kind:"invalid"}}function Pr(t,e){let r=t.replace(/^0+(?=\d)/,""),n=e.replace(/^0+(?=\d)/,"");return r.length!==n.length?r.length<n.length?-1:1:r===n?0:r<n?-1:1}var Gm="augment:mcp-oauth-credentials",Zm=300*1e3,UT=256,Bu=FT.child({prefix:"pi-mcp"}),xt=class extends Error{constructor(e){super(e),this.name="RegistryCredentialRetirementError"}};function at(t){return`user:${t}`}function on(t){let{state:e,name:r,revision:n}=t;if(e.credentialRevisions??=new Map,e.oauthCredentialRevisions??=new Map,e.oauthCredentialDomains??=new Map,e.hostedCredentialOwnership?.delete(r),n===void 0){e.credentialRevisions.delete(r),e.oauthCredentialDomains.delete(r),e.authRefreshNeededReportKeys?.delete(r);return}let o={...n,revision:n.revision.replace(/^0+(?=\d)/,"")},i=e.credentialRevisions.get(r);e.credentialRevisions.set(r,o),(i?.revision!==o.revision||i?.domain!==o.domain)&&e.authRefreshNeededReportKeys?.delete(r);let s=e.oauthCredentialRevisions.get(o.domain);(s===void 0||Pr(o.revision,s)>0)&&e.oauthCredentialRevisions.set(o.domain,o.revision),e.oauthCredentialDomains.set(r,o.domain)}function xr(t){let e=t.indexOf(":");if(e<=0||e===t.length-1)return t;let r=t.slice(0,e);return r!=="private"&&r!=="shared"&&r!=="recipient"&&r!=="user"&&r!=="tenant"?t:at(t.slice(e+1))}function ct(t){return/^secret:(private|shared):.+/.test(t)}function sn(t){return t.ownerDomain??xr(t.domain)}function Bm(t,e,r){let n=at(e);return r!==void 0?r===n:ct(t)||xr(t)===n}function qT(t,e){return t?.revision===e?.revision&&t?.domain===e?.domain&&t?.ownerDomain===e?.ownerDomain}function HT(t,e,r){return{acceptedDomain:t.oauthCredentialDomains.get(e),credentialRevision:t.credentialRevisions.get(e),expectedDomain:t.expectedCredentialDomains.get(e),failure:t.statusFailureCategories.get(e),restoreFailure:r}}function GT(t,e){return t?.kind===e?.kind&&(t?.kind!=="domain"||e?.kind==="domain"&&t.domain===e.domain)}function ZT(t,e,r){return t.oauthCredentialDomains.get(e)===r.acceptedDomain&&qT(t.credentialRevisions.get(e),r.credentialRevision)&&GT(t.expectedCredentialDomains.get(e),r.expectedDomain)&&t.statusFailureCategories.get(e)===r.failure}function BT(t){return JSON.stringify({id:t.id,name:t.name,type:t.type,url:t.type==="stdio"?void 0:t.url,auth:t.type==="stdio"?void 0:t.auth,registrySource:t.registrySource,vfsSource:t.vfsSource})}function WT(t){let{state:e,config:r,domain:n}=t,o=r.id===void 0?void 0:e.registryCredentialConfigsById.get(r.id);return!o||e.sessionRemovedConfigIds.has(r.id??"")||!ft(o,r)?!1:o.name!==r.name||e.equalRevisionRebindDomains.get(r.name)===n}function kr(t){t.registryCredentialIntents??=new Map,t.registryCredentialIntentEpochs??=new Map,t.pendingRegistryCredentialDomains??=new Set,t.stagedOAuthCredentials??=new Map,t.equalRevisionRebindDomains??=new Map,t.bootOAuthCredentialBuffer??=new Map}function nr(t,e){let r=t.bootOAuthCredentialBuffer?.get(e);r?.expiryTimer!==void 0&&clearTimeout(r.expiryTimer),t.bootOAuthCredentialBuffer?.delete(e)}function Wm(t){kr(t);let e=new Set([...t.registryCredentialConfigs.keys(),...t.registryConfigNamesById.values(),...t.oauthCredentialDomains.keys(),...t.credentialRevisions.keys(),...t.preservedCredentialIdentities?.keys()??[],...[...t.bootOAuthCredentialBuffer?.values()??[]].map(n=>n.serverName),...[...t.registryCredentialIntents.values()].flatMap(n=>n.configName?[n.configName]:[])]);for(let[n,o]of t.hostLeases)o.owner.kind==="registry"&&e.add(n);for(let n of e){let o=t.hostLeases.get(n);if(o&&o.owner.kind!=="registry")continue;t.tokens.clearLocalCredential(n);let i=t.oauthCredentialDomains.get(n);i&&t.oauthCredentialRevisions.delete(i),t.oauthCredentialDomains.delete(n),t.credentialRevisions.delete(n),t.hostedCredentialOwnership?.delete(n),t.preservedCredentialIdentities?.delete(n),t.expectedCredentialDomains.set(n,{kind:"blocked"}),t.authRefreshNeededReportKeys?.delete(n)}let r=new Set(t.oauthCredentialDomains.values());for(let n of t.oauthCredentialRevisions.keys())r.has(n)||t.oauthCredentialRevisions.delete(n);for(let n of t.bootOAuthCredentialBuffer?.keys()??[])nr(t,n);t.registryCredentialIntents.clear(),t.pendingRegistryCredentialDomains.clear(),t.stagedOAuthCredentials.clear(),t.equalRevisionRebindDomains.clear(),t.registryCredentialConfigs.clear(),t.registryCredentialConfigsById.clear(),t.registryConfigNamesById.clear(),t.mcpRestartState.clear()}function Vm(t,e){let r=t.bootOAuthCredentialBuffer;if(r)for(let[n,o]of r)(o.connectionEpoch!==t.mcpConnectionEpoch||e-o.insertedAtMs>=Zm)&&nr(t,n)}function VT(t){let e=t.bootOAuthCredentialBuffer?.keys().next().value;typeof e=="string"&&nr(t,e)}function Km(t){let{state:e,serverName:r,revision:n,credential:o,suppressReconnect:i}=t;kr(e),e.bootOAuthCredentialBuffer??=new Map;let s=e.bootOAuthCredentialBuffer,a=Date.now();Vm(e,a);let c=sn(n),u=ct(c)?`${c}\0${r}`:c,d=s.get(u),l=d?.credential.credential_revision??d?.credential.credentialRevision;if(typeof l=="string"&&Pr(n.revision,l)<=0)return;!d&&s.size>=UT&&VT(e),nr(e,u);let f={serverName:r,credential:o,suppressReconnect:i,insertedAtMs:a,connectionEpoch:e.mcpConnectionEpoch,expiryTimer:void 0};s.set(u,f),f.expiryTimer=setTimeout(()=>{s.get(u)===f&&nr(e,u)},Zm),f.expiryTimer.unref?.(),Bu.warn(`MCP OAuth credential for "${r}" arrived before its server was known; buffered for replay after discovery`)}function KT(t,e){kr(t);let r=(t.registryCredentialIntentEpochs.get(e)??0)+1;return t.registryCredentialIntentEpochs.set(e,r),r}function Ke(t){let{state:e,domain:r,epoch:n,preserveFence:o=!1,preserveBootCredential:i=!1}=t;kr(e);let s=e.registryCredentialIntents.get(r);if(!(n!==void 0&&s?.epoch!==n)){if(!o&&s?.configName){let a=e.expectedCredentialDomains.get(s.configName);a?.kind==="domain"&&a.domain===r&&e.expectedCredentialDomains.set(s.configName,{kind:"blocked"})}e.pendingRegistryCredentialDomains.delete(r),e.registryCredentialIntents.delete(r),e.stagedOAuthCredentials.delete(r),i||nr(e,r)}}function ra(t){let{state:e,domain:r,forceNew:n=!1}=t;kr(e);let o=e.registryCredentialIntents.get(r);if(o&&!n)return e.pendingRegistryCredentialDomains.add(r),{domain:r,...o};let i=o?.configFingerprint===void 0?e.stagedOAuthCredentials.get(r):void 0;o&&Ke({state:e,domain:r,epoch:o.epoch});let s={epoch:KT(e,r),configFingerprint:void 0,configName:void 0,allowEqualRevisionRebind:!1,finalization:void 0};return e.registryCredentialIntents.set(r,s),i!==void 0&&i.configFingerprint===void 0&&e.stagedOAuthCredentials.set(r,{...i,intentEpoch:s.epoch}),e.pendingRegistryCredentialDomains.add(r),{domain:r,...s}}function Jm(t,e){kr(t);for(let[r,n]of t.registryCredentialIntents)e.has(r)||Ke({state:t,domain:r,epoch:n.epoch});for(let r of t.pendingRegistryCredentialDomains)e.has(r)||(t.pendingRegistryCredentialDomains.delete(r),t.stagedOAuthCredentials.delete(r));for(let r of t.stagedOAuthCredentials.keys())e.has(r)||t.stagedOAuthCredentials.delete(r);for(let r of t.bootOAuthCredentialBuffer?.keys()??[]){let n=r.split("\0",1)[0];!e.has(r)&&!ct(n)&&nr(t,r)}for(let r of e){let n=t.registryCredentialIntents.get(r);ra({state:t,domain:r,forceNew:n?.configFingerprint===void 0})}}function JT(t){let{state:e,config:r}=t;if(r.id===void 0||r.registrySource===void 0||N(e,r.name)?.owner.kind==="local")return;kr(e);let n=at(r.id),o=BT(r),i=WT({state:e,config:r,domain:n});i||e.equalRevisionRebindDomains.delete(r.name);let s=e.registryCredentialIntents.get(n);if(s&&s.configFingerprint===void 0){s.configFingerprint=o,s.configName=r.name,s.allowEqualRevisionRebind=i;let a=e.stagedOAuthCredentials.get(n);a?.intentEpoch===s.epoch&&(a.configFingerprint=o)}else s&&s.configFingerprint!==o?(Ke({state:e,domain:n,epoch:s.epoch}),s=void 0):s&&(s.allowEqualRevisionRebind=i);if(!s){let a=ra({state:e,domain:n});if(s=e.registryCredentialIntents.get(n),!s||s.epoch!==a.epoch)return;s.configFingerprint=o,s.configName=r.name,s.allowEqualRevisionRebind=i}return e.pendingRegistryCredentialDomains.add(n),YT({state:e,config:r,domain:n}),{domain:n,...s}}function Ym(t){let{state:e,revision:r,credential:n,suppressReconnect:o}=t;kr(e);let i=sn(r),s=e.registryCredentialIntents.get(i);if(!s||!e.pendingRegistryCredentialDomains.has(i))return;let a=e.oauthCredentialRevisions.get(r.domain),c=e.stagedOAuthCredentials.get(i),d=c?.intentEpoch===s.epoch&&c.configFingerprint===s.configFingerprint?c.credential.credential_revision??c.credential.credentialRevision:void 0,l=a===void 0?void 0:Pr(r.revision,a),f=l===0;l!==void 0&&l<0||f&&s.configFingerprint!==void 0&&!s.allowEqualRevisionRebind||typeof d=="string"&&Pr(r.revision,d)<=0||e.stagedOAuthCredentials.set(i,{credential:n,suppressReconnect:o,intentEpoch:s.epoch,configFingerprint:s.configFingerprint,requiresEqualRevisionRebind:f})}function YT(t){let{state:e,config:r,domain:n}=t,o=e.oauthCredentialDomains.get(r.name);e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:n});let i=e.credentialRevisions.get(r.name);(o===void 0||i?.ownerDomain!==void 0&&i.ownerDomain!==n||i?.ownerDomain===void 0&&!ct(o)&&xr(o)!==n)&&(e.oauthCredentialDomains.delete(r.name),e.credentialRevisions.delete(r.name),e.hostedCredentialOwnership?.delete(r.name),it(e,r.name),e.authRefreshNeededReportKeys?.delete(r.name))}function XT(t){let{state:e,config:r,pi:n,intent:o}=t,i=e.stagedOAuthCredentials.get(o.domain);if(!i||i.intentEpoch!==o.epoch||i.configFingerprint!==o.configFingerprint||i.requiresEqualRevisionRebind&&!o.allowEqualRevisionRebind)return;e.stagedOAuthCredentials.delete(o.domain),i.requiresEqualRevisionRebind&&e.equalRevisionRebindDomains.set(r.name,o.domain),Ke({state:e,domain:o.domain,epoch:o.epoch,preserveFence:!0,preserveBootCredential:!0});let s={[r.name]:i.credential};n.events.emit(Gm,i.suppressReconnect?{credentials:s,suppressReconnect:!0}:s)}function QT(t){let{state:e,domain:r,serverName:n}=t,o=Date.now();Vm(e,o);let i=e.bootOAuthCredentialBuffer?.get(r);if(i)return nr(e,r),i;for(let[s,a]of e.bootOAuthCredentialBuffer??[])if(a.serverName===n&&ct(s.split("\0",1)[0]))return nr(e,s),a}function eA(t){let{config:e,pi:r,buffered:n}=t;Bu.info(`Replaying boot-buffered MCP OAuth credential for "${e.name}"`),Bu.info("MCP OAuth boot credential replayed",{hasRegistryConfigId:e.id!==void 0,registryOwned:e.registrySource!==void 0,visibility:"public"});let o={[e.name]:n.credential};r.events.emit(Gm,n.suppressReconnect?{credentials:o,suppressReconnect:!0}:o)}async function tA(t){let{state:e,config:r,previousConfig:n}=t;if(!n)return;if(ft(n,r)){if(n.name===r.name)return;await ci(e,n.name,n.id,n),e.tokens.clearLocalCredential(n.name),e.preservedCredentialIdentities?.delete(n.name),e.expectedCredentialDomains.set(n.name,{kind:"blocked"}),e.registryCredentialConfigs.delete(n.name);return}await pt(e,r.name,n.id,n);let o=e.expectedCredentialDomains.get(r.name);return o?.kind==="blocked"?o:void 0}function rA(t){let{state:e,config:r,intent:n,rollbackSnapshot:o,cause:i}=t;if(e.registryCredentialIntents.get(n.domain)?.epoch===n.epoch){let c=ZT(e,r.name,o);Ke({state:e,domain:n.domain,epoch:n.epoch,preserveFence:!c}),c&&(e.expectedCredentialDomains.set(r.name,{kind:"blocked"}),o.restoreFailure!==void 0&&e.statusFailureCategories.set(r.name,o.restoreFailure))}let a=`Registry credential replacement failed for ${r.name}: ${i instanceof Error?i.message:String(i)}`;return e.diagnostics.push({server:r.name,message:a,origin:"registry"}),new xt(a)}async function nA(t){let{state:e,config:r,pi:n,intent:o,previousConfig:i,rollbackSnapshot:s}=t,a=e.registryCredentialIntents.get(o.domain);if(a?.epoch!==o.epoch||a.configFingerprint!==o.configFingerprint)return!1;e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:o.domain});let c;try{c=await tA({state:e,config:r,previousConfig:i})}catch(m){throw rA({state:e,config:r,intent:o,rollbackSnapshot:s,cause:m})}let u=e.registryCredentialIntents.get(o.domain);c&&u?.epoch===o.epoch&&e.expectedCredentialDomains.get(r.name)===c&&e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:o.domain});let d=e.expectedCredentialDomains.get(r.name);if(u?.epoch!==o.epoch||u.configFingerprint!==o.configFingerprint||d?.kind!=="domain"||d.domain!==o.domain)return Ke({state:e,domain:o.domain,epoch:o.epoch}),!1;let l=r.id;if(l===void 0)return!1;let f={...r};e.registryConfigNamesById.set(l,r.name),e.registryCredentialConfigs.set(r.name,f),e.registryCredentialConfigsById.set(l,f),o.allowEqualRevisionRebind&&e.equalRevisionRebindDomains.set(r.name,o.domain),XT({state:e,config:r,pi:n,intent:o});let p=QT({state:e,domain:o.domain,serverName:r.name});return Ke({state:e,domain:o.domain,epoch:o.epoch,preserveFence:!0}),p&&eA({config:r,pi:n,buffered:p}),!0}function Er(t){let{state:e,config:r,pi:n}=t;if(r.id===void 0||r.registrySource===void 0)return Promise.resolve(!0);let o=e.statusFailureCategories.get(r.name),i=JT({state:e,config:r});if(!i)return Promise.resolve(!1);let s=e.registryCredentialIntents.get(i.domain);if(!s||s.epoch!==i.epoch)return Promise.resolve(!1);if(s.finalization)return s.finalization;let a=HT(e,r.name,o),u=(e.registryCredentialFinalizationsByName.get(r.name)??Promise.resolve(!0)).catch(()=>!1).then(()=>{let d=e.registryCredentialConfigs.get(r.name)??(r.id===void 0?void 0:e.registryCredentialConfigsById.get(r.id))??e.servers.get(r.name)?.config;return nA({state:e,config:r,pi:n,intent:i,previousConfig:d,rollbackSnapshot:a})});return e.registryCredentialFinalizationsByName.set(r.name,u),s.finalization=u,u.then(()=>{e.registryCredentialFinalizationsByName.get(r.name)===u&&e.registryCredentialFinalizationsByName.delete(r.name)},()=>{e.registryCredentialFinalizationsByName.get(r.name)===u&&e.registryCredentialFinalizationsByName.delete(r.name)}),u}import{SettingsManager as gA}from"@augmentcode/auggie-v2";import{homedir as Xm}from"node:os";import{sep as oA}from"node:path";var Wu=class extends Error{variableName;constructor(e){super(`Missing environment variable "${e}"`),this.name="EnvVariableExpansionError",this.variableName=e}},iA=/(?<!\\)\$\{([a-zA-Z_][a-zA-Z0-9_]*)(?::-([\s\S]*?))?\}/g,sA=/\\\$\{/g,aA=new Set(["workspaceFolder","augmentToken"]),Qm="${workspaceFolder}";function eg(t,e){return t.includes(Qm)?t.split(Qm).join(e):t}function tg(t,e){return t.includes("${")?t.replace(iA,(n,o,i)=>{if(aA.has(o))return n;let s=e[o];if(s!==void 0)return s;if(i!==void 0)return i;throw new Wu(o)}).replace(sA,"${"):t}function cA(t){return t.startsWith("~")?t==="~"?Xm():t.startsWith("~/")||t.startsWith(`~${oA}`)?Xm()+t.slice(1):t:t}function Vu(t,e,r){return cA(tg(eg(t,e),r))}function Vn(t,e,r){return tg(eg(t,e),r)}function rg(t,e,r){let n={};for(let[o,i]of Object.entries(t))n[o]=Vn(i,e,r);return n}var uA="$augment-";function dA(t,e,r){if(!t)return;let n={};for(let[o,i]of Object.entries(t))n[o]=i.startsWith(uA)?i:Vn(i,e,r);return n}function Ht(t,e){let r=process.env;return{...t,url:Vn(t.url,e,r),headers:dA(t.headers,e,r)}}function Gt(t,e){let r=process.env;return{...t,command:Vu(t.command,e,r),args:t.args.map(n=>Vn(n,e,r)),env:t.env?rg(t.env,e,r):void 0,cwd:t.cwd?Vu(t.cwd,e,r):e}}import{readFileSync as fA}from"node:fs";var kt=class extends Error{constructor(e){super(e),this.name="McpConfigError"}};function Kn(t){if(t.type==="stdio"||t.type==="http"||t.type==="sse")return t.type;if(t.url)return"http";if(t.command)return"stdio"}function lA(t){if(!t)return;let e={};for(let[r,n]of Object.entries(t))n!=null&&(e[r]=String(n));return Object.keys(e).length>0?e:void 0}function Jn(t,e){let r=Kn(e);if(!r)throw new kt(`MCP server "${t}" must declare a 'command' (stdio) or 'url' (http/sse) property`);if(r==="http"||r==="sse"){if(!e.url)throw new kt(`MCP server "${t}" has type "${r}" but no 'url' property`);return{type:r,name:e.name??t,disabled:e.disabled,url:e.url,headers:e.headers,auth:e.auth==="oauth"?"oauth":void 0,timeoutMs:e.timeoutMs}}let n=e.command;if(!n)throw new kt(`MCP server "${t}" has type "stdio" but no 'command' property`);let o=(e.args??[]).map(a=>String(a)),i=e.useShellInterpolation??!0,s=i&&o.length>0?`${n} ${o.join(" ")}`:n;return{type:"stdio",name:e.name??t,disabled:e.disabled,command:s,args:i?[]:o,env:lA(e.env),cwd:e.cwd,timeoutMs:e.timeoutMs,useShellInterpolation:i}}var ig=t=>fA(t,"utf8");function na(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ng(t){return na(t)&&("command"in t||"url"in t)}function Ju(...t){for(let e of t)if(typeof e=="string"&&e.length>0)return e}function og(t,e){return Ju(t.name)??e}function Ku(t,e){let r=Kn(t);if(r==="http"||r==="sse")return Ju(t.name,t.title,t.url)??e;let n=typeof t.command=="string"&&t.command.length>0?t.command.split(" ")[0]:void 0;return Ju(t.name,t.title,n)??e}function pA(t){if(Array.isArray(t))return t.map((e,r)=>{let n=e;return[Ku(n,String(r)),n]});if(na(t)){for(let r of["servers","mcpServers"]){let n=t[r];if(Array.isArray(n))return n.map((o,i)=>{let s=o;return[Ku(s,String(i)),s]})}for(let r of["servers","mcpServers"]){let n=t[r];if(na(n))return Object.entries(n).map(([o,i])=>{let s=i;return[og(s,o),s]})}if(ng(t)){let r=t;return[[Ku(r,"server"),r]]}let e=Object.values(t);if(e.length>0&&e.some(ng))return Object.entries(t).map(([r,n])=>{if(!na(n))throw new Error(`entry "${r}" is not a server config object (got ${n===null?"null":typeof n})`);let o=n;return[og(o,r),o]})}throw new Error("unrecognized MCP config JSON shape (expected an array of servers, a { servers|mcpServers } array/record, a single server object, or a Claude-Desktop-style record)")}function Yu(t){return t instanceof Error?t.message:String(t)}function hA(t,e,r,n,o){if(r)return e;try{return n(t)}catch(i){o.push({message:`Failed to read --mcp-config file "${t}": ${Yu(i)}`});return}}function mA(t,e,r){let n=t.trim();if(n.length===0)return[];let o=n.startsWith("[")||n.startsWith("{"),i=o?"inline JSON":`file "${t}"`,s=hA(t,n,o,e,r);if(s===void 0)return[];let a;try{a=JSON.parse(s)}catch(c){return r.push({message:`Failed to parse --mcp-config ${i}: ${Yu(c)}`}),[]}try{return pA(a)}catch(c){return r.push({message:`Invalid --mcp-config ${i}: ${Yu(c)}`}),[]}}function Xu(t,e=ig){let r={},n=[];for(let o of t)for(let[i,s]of mA(o,e,n))r[i]=s;return{servers:r,diagnostics:n}}function Qu(t,e=ig){return!t||t.length===0?new Set:new Set(Object.keys(Xu(t,e).servers))}var yA=["global","project","local","managed"];function vA(t,e){switch(e){case"global":return t.getGlobalSettings().mcpServers;case"project":return t.getProjectSettings().mcpServers;case"local":return t.getLocalSettings().mcpServers;case"managed":return t.getManagedSettings().mcpServers}}function _A(t){let e={};for(let r of t)if(r)for(let[n,o]of Object.entries(r)){if(o===null){delete e[n];continue}o&&(e[n]=structuredClone(o))}return e}function SA(t,e,r){let n=Xu(t);r.push(...n.diagnostics);let o=n.servers;if(!e||e.size===0)return o;for(let[i,s]of Object.entries(o)){let a=e.get(i);a!==void 0&&(o[i]={...s,disabled:a})}return o}function wA(t,e,r){let n=gA.create(t,e);for(let{scope:o,error:i}of n.drainErrors()){let s=i.message.includes("parse settings JSON")?"parse":"read";r.push({message:`Failed to ${s} ${o} settings.json: ${i.message}`})}return _A(yA.map(o=>vA(n,o)))}function Yn(t,e,r,n){let o=[],i=r&&r.length>0?SA(r,n,o):wA(t,e,o),s=[];for(let[a,c]of Object.entries(i))try{let u=Jn(a,c);s.push(u.type==="stdio"?Gt(u,t):Ht(u,t))}catch(u){let d=u instanceof kt?u.message:`Failed to normalize MCP server "${a}": ${u instanceof Error?u.message:String(u)}`;o.push({server:a,message:d})}return{servers:s,diagnostics:o}}import{setToolSource as lg}from"@augmentcode/auggie-v2";import{logger as $A}from"@hermes/logger";import{Type as IA}from"@sinclair/typebox";var oa=Symbol.for("__pi_mcp_state__");function bA(t,e){return t.id!==e.id||t.type!==e.type||t.type==="stdio"||e.type==="stdio"||t.auth!=="oauth"||e.auth!=="oauth"?!1:t.url===e.url&&t.auth===e.auth}function RA(t,e){return["user","tenant","private","shared"].some(r=>t===`${r}:${e}`)}function CA(t){for(let[e,r]of t.registryCredentialConfigsById){let n=[...t.registryCredentialConfigs.entries()].filter(([s,a])=>s!==r.name&&a.id===e&&bA(a,r)).map(([s])=>s),o=n.some(s=>{let a=t.oauthCredentialDomains.get(s);return a!==void 0&&RA(a,e)}),i=t.expectedCredentialDomains.get(r.name);if(!(!o||t.sessionRemovedConfigIds.has(e)||t.oauthCredentialDomains.has(r.name)||i?.kind!=="domain"||i.domain!==`user:${e}`)){t.equalRevisionRebindDomains.set(r.name,i.domain);for(let s of n)t.tokens.clearLocalCredential(s),t.oauthCredentialDomains.delete(s),t.credentialRevisions.delete(s),t.hostedCredentialOwnership?.delete(s),t.preservedCredentialIdentities?.delete(s),t.statusFailureCategories?.delete(s),t.authRefreshNeededReportKeys?.delete(s),t.expectedCredentialDomains.set(s,{kind:"blocked"})}}}function PA(t){t.dynamicallyAddedConfigIds??=new Set,t.failedAddConfigIds??=new Set,t.nameCollisionAddConfigIds??=new Set,t.authFallbackDisplacedConfigIds??=new Set,t.sessionRemovedConfigIds??=new Set,t.registryConfigNamesById??=new Map,t.registryCredentialConfigs??=new Map,t.registryCredentialConfigsById??=new Map,t.toolSearchLatched??=!1,t.sessionMcpConfigDisabledOverrides??=new Map,t.reconnects??=new Map,t.missingHostRemovals??=new Map,t.missingHostRemovalFences??=new Map,t.reconnectDesiredGenerations??=new Map,t.serverGenerations??=t.hostGenerations??new Map,t.configRevisions??=new Map,t.configDesiredRevisions??=new Map,t.configDesiredSources??=new Map,t.credentialRevisions??=new Map,t.oauthCredentialRevisions??=new Map,t.oauthCredentialDomains??=new Map;let e=t.equalRevisionRebindDomains===void 0;t.equalRevisionRebindDomains??=new Map,t.preservedCredentialIdentities??=new Map,t.stagedOAuthCredentials??=new Map,t.pendingRegistryCredentialDomains??=new Set,t.registryCredentialIntents??=new Map,t.registryCredentialIntentEpochs??=new Map,t.registryCredentialFinalizationsByName??=new Map;for(let r of t.pendingRegistryCredentialDomains)if(!t.registryCredentialIntents.has(r)){let n=(t.registryCredentialIntentEpochs.get(r)??0)+1;t.registryCredentialIntentEpochs.set(r,n),t.registryCredentialIntents.set(r,{epoch:n,configFingerprint:void 0,configName:void 0,allowEqualRevisionRebind:!1,finalization:void 0})}for(let r of t.registryCredentialIntents.values())r.allowEqualRevisionRebind??=!1;for(let[r,n]of t.stagedOAuthCredentials){let o=t.registryCredentialIntents.get(r);if(!o){t.stagedOAuthCredentials.delete(r);continue}let i=n;i.intentEpoch??=o.epoch,i.configFingerprint??=o.configFingerprint,i.requiresEqualRevisionRebind??=!1}t.statusHostGeneration??=1,t.statusReportSequence??=0,t.statusFailureCategories??=new Map,t.authRefreshNeededReportKeys??=new Map,t.hostedCredentialOwnership??=new Map,e&&CA(t),t.authenticationGeneration??=0,t.authenticatingServerName??=void 0,t.liveEditGenerations??=new Map,t.blockedVfsMcpNames??=new Set,t.pluginServerHosts||(t.pluginServerHosts=new Map),t.toolRegistrationsByPi??=new WeakMap,t.hostLeases??=new Map,t.hostLeaseRevisions??=new Map,t.expectedCredentialDomains??=new Map;for(let[r,n]of t.servers)n.config!==void 0&&Q(t,r,n);t.pluginReconcileQueue??=Promise.resolve(),t.mcpAttachDisabled??=!1,t.mcpAttachCloudSignaled??=!1,t.attachResolvers??=new Map,t.attachResultListenerBound??=!1,t.attachmentCommandGenerations??=new Map,t.attachmentCommandInFlightGenerations??=new Map,t.attachmentCommandAppliedGenerations??=new Map}async function ui(t,e){for(;;){let r=t.missingHostRemovals.get(e);if(!r)return;try{await r.promise}catch{}if(t.missingHostRemovals.get(e)===r)return}}function Xn(t){let{state:e,configId:r,generation:n}=t;e.attachmentCommandGenerations??=new Map,e.attachmentCommandInFlightGenerations??=new Map,e.attachmentCommandAppliedGenerations??=new Map;let o=e.attachmentCommandGenerations.get(r)??0;return typeof n!="number"||!Number.isSafeInteger(n)||n<=0?o===0:n<o||n===e.attachmentCommandInFlightGenerations.get(r)||n===e.attachmentCommandAppliedGenerations.get(r)?!1:(e.attachmentCommandGenerations.set(r,n),e.attachmentCommandInFlightGenerations.set(r,n),!0)}function ed(t){let{state:e,configId:r,generation:n}=t;typeof n!="number"||n<=0||(e.attachmentCommandInFlightGenerations?.get(r)===n&&e.attachmentCommandInFlightGenerations.delete(r),e.attachmentCommandGenerations?.get(r)===n&&(e.attachmentCommandAppliedGenerations??=new Map,e.attachmentCommandAppliedGenerations.set(r,n)))}function ia(t){let{state:e,configId:r,generation:n}=t;typeof n=="number"&&e.attachmentCommandInFlightGenerations?.get(r)===n&&e.attachmentCommandInFlightGenerations.delete(r)}function sa(t){let{state:e,configId:r,generation:n,operation:o,wasApplied:i}=t;return typeof n!="number"||!Number.isSafeInteger(n)||n<=0?o:o.then(s=>(i()?ed({state:e,configId:r,generation:n}):ia({state:e,configId:r,generation:n}),s),s=>{throw ia({state:e,configId:r,generation:n}),s})}function ee(){let t=globalThis;if(t[oa])return PA(t[oa]),t[oa];let e={servers:new Map,toolRegistrationsByPi:new WeakMap,hostLeases:new Map,hostLeaseRevisions:new Map,expectedCredentialDomains:new Map,tokens:new Wn,refreshes:new Map,reconnects:new Map,missingHostRemovals:new Map,missingHostRemovalFences:new Map,reconnectDesiredGenerations:new Map,serverGenerations:new Map,configRevisions:new Map,configDesiredRevisions:new Map,configDesiredSources:new Map,credentialRevisions:new Map,oauthCredentialRevisions:new Map,oauthCredentialDomains:new Map,equalRevisionRebindDomains:new Map,preservedCredentialIdentities:new Map,stagedOAuthCredentials:new Map,bootOAuthCredentialBuffer:new Map,pendingRegistryCredentialDomains:new Set,registryCredentialIntents:new Map,registryCredentialIntentEpochs:new Map,registryCredentialFinalizationsByName:new Map,statusHostGeneration:1,statusReportSequence:0,statusFailureCategories:new Map,authRefreshNeededReportKeys:new Map,hostedCredentialOwnership:new Map,shouldProactivelyRefreshTokens:!0,backgroundRefreshIntervalId:void 0,credsListenerBound:!1,configIdsListenerBound:!1,registryGeneration:0,liveEditGenerations:new Map,attachmentCommandGenerations:new Map,attachmentCommandInFlightGenerations:new Map,attachmentCommandAppliedGenerations:new Map,mcpConfigsListenerBound:!1,embeddedRegistryConfigs:void 0,vfsListenerBound:!1,addServerListenerBound:!1,restartServerListenerBound:!1,removeServerListenerBound:!1,mcpRestartState:new Map,vfsGeneration:0,lastSuccessfulVfsMcpSignature:void 0,blockedVfsMcpNames:new Set,credentials:void 0,secretsClient:void 0,headerSecrets:{},headerSecretFailures:{},headerSecretsListenerBound:!1,featureFlagsListenerBound:!1,workspaceRoot:void 0,mcpConfigOverride:void 0,connectStarted:!1,reconnecting:!1,authenticating:!1,authenticationGeneration:0,authenticatingServerName:void 0,restartHistory:new Map,dynamicallyAddedConfigIds:new Set,failedAddConfigIds:new Set,nameCollisionAddConfigIds:new Set,authFallbackDisplacedConfigIds:new Set,sessionRemovedConfigIds:new Set,selectedRegistryConfigIds:void 0,registryConfigNamesById:new Map,oauthFailureCategoriesByConfigId:void 0,registryCredentialConfigs:new Map,registryCredentialConfigsById:new Map,lastStatusReport:void 0,diagnostics:[],pluginServerSource:void 0,pluginServerNames:new Set,pluginServerHosts:new Map,pluginReconcileQueue:Promise.resolve(),sessionPluginDisabledOverrides:new Map,sessionRegistryDisabledOverrides:new Map,sessionMcpConfigDisabledOverrides:new Map,currentLoad:void 0,ui:void 0,featureFlags:void 0,toolSearchLatched:!1,mcpCatalog:void 0,mcpAttachDisabled:!1,mcpAttachCloudSignaled:!1,catalogRefreshInFlight:void 0,attachResolvers:new Map,attachResultListenerBound:!1};return t[oa]=e,e}var sg=Symbol.for("__hermes_mcp_tool_registry__"),xA=Symbol.for("__hermes_mcp_extension_factory__");function ag(){let t=globalThis;return t[sg]??=new Map,t[sg]}function Tr(t){ag().set(t.name,t)}function cg(t,e){let r=ag();(e===void 0||r.get(t)===e)&&r.delete(t)}function ug(t){Reflect.set(t,xA,!0)}function aa(t,e,r,n){return r.includes(t)?n.includes(t)?`"${t}" is a built-in tool, not an MCP server. Call it directly.`:`Built-in tool "${t}" is not available (disabled).`:`MCP server "${t}" is not available (status: ${e??"unknown"}).`}function kA(t){if(t&&typeof t=="object"&&!Array.isArray(t))return t}function EA(t){let e=[];for(let r of t)r.type==="text"?e.push({type:"text",text:r.text}):e.push({type:"image",mimeType:r.mimeType,data:r.data});return e}function TA(t){let e=[];for(let r of t)r.type==="text"&&e.push(r.text);return e.join(`
8
+ deps: ${r}}`};var b1={keyword:"dependencies",type:"object",schemaType:"object",error:Yt.error,code(t){let[e,r]=R1(t);bC(t,e),RC(t,r)}};function R1({schema:t}){let e={},r={};for(let n in t){if(n==="__proto__")continue;let o=Array.isArray(t[n])?e:r;o[n]=t[n]}return[e,r]}function bC(t,e=t.schema){let{gen:r,data:n,it:o}=t;if(Object.keys(e).length===0)return;let i=r.let("missing");for(let s in e){let a=e[s];if(a.length===0)continue;let c=(0,Rs.propertyInData)(r,n,s,o.opts.ownProperties);t.setParams({property:s,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let u of a)(0,Rs.checkReportMissingProp)(t,u)}):(r.if((0,Np._)`${c} && (${(0,Rs.checkMissingProp)(t,a,i)})`),(0,Rs.reportMissingProp)(t,i),r.else())}}Yt.validatePropertyDeps=bC;function RC(t,e=t.schema){let{gen:r,data:n,keyword:o,it:i}=t,s=r.name("valid");for(let a in e)(0,w1.alwaysValidSchema)(i,e[a])||(r.if((0,Rs.propertyInData)(r,n,a,i.opts.ownProperties),()=>{let c=t.subschema({keyword:o,schemaProp:a},s);t.mergeValidEvaluated(c,s)},()=>r.var(s,!0)),t.ok(s))}Yt.validateSchemaDeps=RC;Yt.default=b1});var xC=C(Dp=>{"use strict";Object.defineProperty(Dp,"__esModule",{value:!0});var PC=j(),C1=B(),P1={message:"property name must be valid",params:({params:t})=>(0,PC._)`{propertyName: ${t.propertyName}}`},x1={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:P1,code(t){let{gen:e,schema:r,data:n,it:o}=t;if((0,C1.alwaysValidSchema)(o,r))return;let i=e.name("valid");e.forIn("key",n,s=>{t.setParams({propertyName:s}),t.subschema({keyword:"propertyNames",data:s,dataTypes:["string"],propertyName:s,compositeRule:!0},i),e.if((0,PC.not)(i),()=>{t.error(!0),o.allErrors||e.break()})}),t.ok(i)}};Dp.default=x1});var jp=C(Lp=>{"use strict";Object.defineProperty(Lp,"__esModule",{value:!0});var Lc=wt(),zt=j(),k1=fr(),jc=B(),E1={message:"must NOT have additional properties",params:({params:t})=>(0,zt._)`{additionalProperty: ${t.additionalProperty}}`},T1={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:E1,code(t){let{gen:e,schema:r,parentSchema:n,data:o,errsCount:i,it:s}=t;if(!i)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=s;if(s.props=!0,c.removeAdditional!=="all"&&(0,jc.alwaysValidSchema)(s,r))return;let u=(0,Lc.allSchemaProperties)(n.properties),d=(0,Lc.allSchemaProperties)(n.patternProperties);l(),t.ok((0,zt._)`${i} === ${k1.default.errors}`);function l(){e.forIn("key",o,g=>{!u.length&&!d.length?m(g):e.if(f(g),()=>m(g))})}function f(g){let v;if(u.length>8){let w=(0,jc.schemaRefOrVal)(s,n.properties,"properties");v=(0,Lc.isOwnProperty)(e,w,g)}else u.length?v=(0,zt.or)(...u.map(w=>(0,zt._)`${g} === ${w}`)):v=zt.nil;return d.length&&(v=(0,zt.or)(v,...d.map(w=>(0,zt._)`${(0,Lc.usePattern)(t,w)}.test(${g})`))),(0,zt.not)(v)}function p(g){e.code((0,zt._)`delete ${o}[${g}]`)}function m(g){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){p(g);return}if(r===!1){t.setParams({additionalProperty:g}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,jc.alwaysValidSchema)(s,r)){let v=e.name("valid");c.removeAdditional==="failing"?(h(g,v,!1),e.if((0,zt.not)(v),()=>{t.reset(),p(g)})):(h(g,v),a||e.if((0,zt.not)(v),()=>e.break()))}}function h(g,v,w){let b={keyword:"additionalProperties",dataProp:g,dataPropType:jc.Type.Str};w===!1&&Object.assign(b,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(b,v)}}};Lp.default=T1});var TC=C(Up=>{"use strict";Object.defineProperty(Up,"__esModule",{value:!0});var A1=us(),kC=wt(),Fp=B(),EC=jp(),M1={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:i}=t;i.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&EC.default.code(new A1.KeywordCxt(i,EC.default,"additionalProperties"));let s=(0,kC.allSchemaProperties)(r);for(let l of s)i.definedProperties.add(l);i.opts.unevaluated&&s.length&&i.props!==!0&&(i.props=Fp.mergeEvaluated.props(e,(0,Fp.toHash)(s),i.props));let a=s.filter(l=>!(0,Fp.alwaysValidSchema)(i,r[l]));if(a.length===0)return;let c=e.name("valid");for(let l of a)u(l)?d(l):(e.if((0,kC.propertyInData)(e,o,l,i.opts.ownProperties)),d(l),i.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(l),t.ok(c);function u(l){return i.opts.useDefaults&&!i.compositeRule&&r[l].default!==void 0}function d(l){t.subschema({keyword:"properties",schemaProp:l,dataProp:l},c)}}};Up.default=M1});var IC=C(qp=>{"use strict";Object.defineProperty(qp,"__esModule",{value:!0});var AC=wt(),Fc=j(),MC=B(),$C=B(),$1={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:o,it:i}=t,{opts:s}=i,a=(0,AC.allSchemaProperties)(r),c=a.filter(h=>(0,MC.alwaysValidSchema)(i,r[h]));if(a.length===0||c.length===a.length&&(!i.opts.unevaluated||i.props===!0))return;let u=s.strictSchema&&!s.allowMatchingProperties&&o.properties,d=e.name("valid");i.props!==!0&&!(i.props instanceof Fc.Name)&&(i.props=(0,$C.evaluatedPropsToName)(e,i.props));let{props:l}=i;f();function f(){for(let h of a)u&&p(h),i.allErrors?m(h):(e.var(d,!0),m(h),e.if(d))}function p(h){for(let g in u)new RegExp(h).test(g)&&(0,MC.checkStrictMode)(i,`property ${g} matches pattern ${h} (use allowMatchingProperties)`)}function m(h){e.forIn("key",n,g=>{e.if((0,Fc._)`${(0,AC.usePattern)(t,h)}.test(${g})`,()=>{let v=c.includes(h);v||t.subschema({keyword:"patternProperties",schemaProp:h,dataProp:g,dataPropType:$C.Type.Str},d),i.opts.unevaluated&&l!==!0?e.assign((0,Fc._)`${l}[${g}]`,!0):!v&&!i.allErrors&&e.if((0,Fc.not)(d),()=>e.break())})})}}};qp.default=$1});var OC=C(Hp=>{"use strict";Object.defineProperty(Hp,"__esModule",{value:!0});var I1=B(),O1={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,I1.alwaysValidSchema)(n,r)){t.fail();return}let o=e.name("valid");t.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),t.failResult(o,()=>t.reset(),()=>t.error())},error:{message:"must NOT be valid"}};Hp.default=O1});var zC=C(Gp=>{"use strict";Object.defineProperty(Gp,"__esModule",{value:!0});var z1=wt(),N1={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:z1.validateUnion,error:{message:"must match a schema in anyOf"}};Gp.default=N1});var NC=C(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});var Uc=j(),D1=B(),L1={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,Uc._)`{passingSchemas: ${t.passing}}`},j1={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:L1,code(t){let{gen:e,schema:r,parentSchema:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let i=r,s=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(u),t.result(s,()=>t.reset(),()=>t.error(!0));function u(){i.forEach((d,l)=>{let f;(0,D1.alwaysValidSchema)(o,d)?e.var(c,!0):f=t.subschema({keyword:"oneOf",schemaProp:l,compositeRule:!0},c),l>0&&e.if((0,Uc._)`${c} && ${s}`).assign(s,!1).assign(a,(0,Uc._)`[${a}, ${l}]`).else(),e.if(c,()=>{e.assign(s,!0),e.assign(a,l),f&&t.mergeEvaluated(f,Uc.Name)})})}}};Zp.default=j1});var DC=C(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});var F1=B(),U1={keyword:"allOf",schemaType:"array",code(t){let{gen:e,schema:r,it:n}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=e.name("valid");r.forEach((i,s)=>{if((0,F1.alwaysValidSchema)(n,i))return;let a=t.subschema({keyword:"allOf",schemaProp:s},o);t.ok(o),t.mergeEvaluated(a)})}};Bp.default=U1});var FC=C(Wp=>{"use strict";Object.defineProperty(Wp,"__esModule",{value:!0});var qc=j(),jC=B(),q1={message:({params:t})=>(0,qc.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,qc._)`{failingKeyword: ${t.ifClause}}`},H1={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:q1,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,jC.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=LC(n,"then"),i=LC(n,"else");if(!o&&!i)return;let s=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),o&&i){let d=e.let("ifClause");t.setParams({ifClause:d}),e.if(a,u("then",d),u("else",d))}else o?e.if(a,u("then")):e.if((0,qc.not)(a),u("else"));t.pass(s,()=>t.error(!0));function c(){let d=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(d)}function u(d,l){return()=>{let f=t.subschema({keyword:d},a);e.assign(s,a),t.mergeValidEvaluated(f,s),l?e.assign(l,(0,qc._)`${d}`):t.setParams({ifClause:d})}}}};function LC(t,e){let r=t.schema[e];return r!==void 0&&!(0,jC.alwaysValidSchema)(t,r)}Wp.default=H1});var UC=C(Vp=>{"use strict";Object.defineProperty(Vp,"__esModule",{value:!0});var G1=B(),Z1={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,G1.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};Vp.default=Z1});var qC=C(Kp=>{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});var B1=Mp(),W1=vC(),V1=$p(),K1=SC(),J1=wC(),Y1=CC(),X1=xC(),Q1=jp(),eF=TC(),tF=IC(),rF=OC(),nF=zC(),oF=NC(),iF=DC(),sF=FC(),aF=UC();function cF(t=!1){let e=[rF.default,nF.default,oF.default,iF.default,sF.default,aF.default,X1.default,Q1.default,Y1.default,eF.default,tF.default];return t?e.push(W1.default,K1.default):e.push(B1.default,V1.default),e.push(J1.default),e}Kp.default=cF});var HC=C(Jp=>{"use strict";Object.defineProperty(Jp,"__esModule",{value:!0});var we=j(),uF={message:({schemaCode:t})=>(0,we.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,we._)`{format: ${t}}`},dF={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:uF,code(t,e){let{gen:r,data:n,$data:o,schema:i,schemaCode:s,it:a}=t,{opts:c,errSchemaPath:u,schemaEnv:d,self:l}=a;if(!c.validateFormats)return;o?f():p();function f(){let m=r.scopeValue("formats",{ref:l.formats,code:c.code.formats}),h=r.const("fDef",(0,we._)`${m}[${s}]`),g=r.let("fType"),v=r.let("format");r.if((0,we._)`typeof ${h} == "object" && !(${h} instanceof RegExp)`,()=>r.assign(g,(0,we._)`${h}.type || "string"`).assign(v,(0,we._)`${h}.validate`),()=>r.assign(g,(0,we._)`"string"`).assign(v,h)),t.fail$data((0,we.or)(w(),b()));function w(){return c.strictSchema===!1?we.nil:(0,we._)`${s} && !${v}`}function b(){let x=d.$async?(0,we._)`(${h}.async ? await ${v}(${n}) : ${v}(${n}))`:(0,we._)`${v}(${n})`,S=(0,we._)`(typeof ${v} == "function" ? ${x} : ${v}.test(${n}))`;return(0,we._)`${v} && ${v} !== true && ${g} === ${e} && !${S}`}}function p(){let m=l.formats[i];if(!m){w();return}if(m===!0)return;let[h,g,v]=b(m);h===e&&t.pass(x());function w(){if(c.strictSchema===!1){l.logger.warn(S());return}throw new Error(S());function S(){return`unknown format "${i}" ignored in schema at path "${u}"`}}function b(S){let R=S instanceof RegExp?(0,we.regexpCode)(S):c.code.formats?(0,we._)`${c.code.formats}${(0,we.getProperty)(i)}`:void 0,I=r.scopeValue("formats",{key:i,ref:S,code:R});return typeof S=="object"&&!(S instanceof RegExp)?[S.type||"string",S.validate,(0,we._)`${I}.validate`]:["string",S,I]}function x(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!d.$async)throw new Error("async format in sync schema");return(0,we._)`await ${v}(${n})`}return typeof g=="function"?(0,we._)`${v}(${n})`:(0,we._)`${v}.test(${n})`}}}};Jp.default=dF});var GC=C(Yp=>{"use strict";Object.defineProperty(Yp,"__esModule",{value:!0});var lF=HC(),fF=[lF.default];Yp.default=fF});var ZC=C($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.contentVocabulary=$o.metadataVocabulary=void 0;$o.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];$o.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var WC=C(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});var pF=eC(),hF=hC(),mF=qC(),gF=GC(),BC=ZC(),yF=[pF.default,hF.default,(0,mF.default)(),gF.default,BC.metadataVocabulary,BC.contentVocabulary];Xp.default=yF});var KC=C(Hc=>{"use strict";Object.defineProperty(Hc,"__esModule",{value:!0});Hc.DiscrError=void 0;var VC;(function(t){t.Tag="tag",t.Mapping="mapping"})(VC||(Hc.DiscrError=VC={}))});var YC=C(eh=>{"use strict";Object.defineProperty(eh,"__esModule",{value:!0});var Io=j(),Qp=KC(),JC=Cc(),vF=ds(),_F=B(),SF={message:({params:{discrError:t,tagName:e}})=>t===Qp.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,Io._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},wF={keyword:"discriminator",type:"object",schemaType:"object",error:SF,code(t){let{gen:e,data:r,schema:n,parentSchema:o,it:i}=t,{oneOf:s}=o;if(!i.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!s)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),u=e.const("tag",(0,Io._)`${r}${(0,Io.getProperty)(a)}`);e.if((0,Io._)`typeof ${u} == "string"`,()=>d(),()=>t.error(!1,{discrError:Qp.DiscrError.Tag,tag:u,tagName:a})),t.ok(c);function d(){let p=f();e.if(!1);for(let m in p)e.elseIf((0,Io._)`${u} === ${m}`),e.assign(c,l(p[m]));e.else(),t.error(!1,{discrError:Qp.DiscrError.Mapping,tag:u,tagName:a}),e.endIf()}function l(p){let m=e.name("valid"),h=t.subschema({keyword:"oneOf",schemaProp:p},m);return t.mergeEvaluated(h,Io.Name),m}function f(){var p;let m={},h=v(o),g=!0;for(let x=0;x<s.length;x++){let S=s[x];if(S?.$ref&&!(0,_F.schemaHasRulesButRef)(S,i.self.RULES)){let I=S.$ref;if(S=JC.resolveRef.call(i.self,i.schemaEnv.root,i.baseId,I),S instanceof JC.SchemaEnv&&(S=S.schema),S===void 0)throw new vF.default(i.opts.uriResolver,i.baseId,I)}let R=(p=S?.properties)===null||p===void 0?void 0:p[a];if(typeof R!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(h||v(S)),w(R,x)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return m;function v({required:x}){return Array.isArray(x)&&x.includes(a)}function w(x,S){if(x.const)b(x.const,S);else if(x.enum)for(let R of x.enum)b(R,S);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function b(x,S){if(typeof x!="string"||x in m)throw new Error(`discriminator: "${a}" values must be unique strings`);m[x]=S}}}};eh.default=wF});var XC=C((P3,bF)=>{bF.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 rh=C((le,th)=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.MissingRefError=le.ValidationError=le.CodeGen=le.Name=le.nil=le.stringify=le.str=le._=le.KeywordCxt=le.Ajv=void 0;var RF=VR(),CF=WC(),PF=YC(),QC=XC(),xF=["/properties"],Gc="http://json-schema.org/draft-07/schema",Oo=class extends RF.default{_addVocabularies(){super._addVocabularies(),CF.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(PF.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(QC,xF):QC;this.addMetaSchema(e,Gc,!1),this.refs["http://json-schema.org/schema"]=Gc}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Gc)?Gc:void 0)}};le.Ajv=Oo;th.exports=le=Oo;th.exports.Ajv=Oo;Object.defineProperty(le,"__esModule",{value:!0});le.default=Oo;var kF=us();Object.defineProperty(le,"KeywordCxt",{enumerable:!0,get:function(){return kF.KeywordCxt}});var zo=j();Object.defineProperty(le,"_",{enumerable:!0,get:function(){return zo._}});Object.defineProperty(le,"str",{enumerable:!0,get:function(){return zo.str}});Object.defineProperty(le,"stringify",{enumerable:!0,get:function(){return zo.stringify}});Object.defineProperty(le,"nil",{enumerable:!0,get:function(){return zo.nil}});Object.defineProperty(le,"Name",{enumerable:!0,get:function(){return zo.Name}});Object.defineProperty(le,"CodeGen",{enumerable:!0,get:function(){return zo.CodeGen}});var EF=bc();Object.defineProperty(le,"ValidationError",{enumerable:!0,get:function(){return EF.default}});var TF=ds();Object.defineProperty(le,"MissingRefError",{enumerable:!0,get:function(){return TF.default}})});var aP=C(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.formatNames=Qt.fastFormats=Qt.fullFormats=void 0;function Xt(t,e){return{validate:t,compare:e}}Qt.fullFormats={date:Xt(nP,sh),time:Xt(oh(!0),ah),"date-time":Xt(eP(!0),iP),"iso-time":Xt(oh(),oP),"iso-date-time":Xt(eP(),sP),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:zF,"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:qF,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:NF,int32:{type:"number",validate:jF},int64:{type:"number",validate:FF},float:{type:"number",validate:rP},double:{type:"number",validate:rP},password:!0,binary:!0};Qt.fastFormats={...Qt.fullFormats,date:Xt(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,sh),time:Xt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ah),"date-time":Xt(/^\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,iP),"iso-time":Xt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,oP),"iso-date-time":Xt(/^\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,sP),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};Qt.formatNames=Object.keys(Qt.fullFormats);function AF(t){return t%4===0&&(t%100!==0||t%400===0)}var MF=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,$F=[0,31,28,31,30,31,30,31,31,30,31,30,31];function nP(t){let e=MF.exec(t);if(!e)return!1;let r=+e[1],n=+e[2],o=+e[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&AF(r)?29:$F[n])}function sh(t,e){if(t&&e)return t>e?1:t<e?-1:0}var nh=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function oh(t){return function(r){let n=nh.exec(r);if(!n)return!1;let o=+n[1],i=+n[2],s=+n[3],a=n[4],c=n[5]==="-"?-1:1,u=+(n[6]||0),d=+(n[7]||0);if(u>23||d>59||t&&!a)return!1;if(o<=23&&i<=59&&s<60)return!0;let l=i-d*c,f=o-u*c-(l<0?1:0);return(f===23||f===-1)&&(l===59||l===-1)&&s<61}}function ah(t,e){if(!(t&&e))return;let r=new Date("2020-01-01T"+t).valueOf(),n=new Date("2020-01-01T"+e).valueOf();if(r&&n)return r-n}function oP(t,e){if(!(t&&e))return;let r=nh.exec(t),n=nh.exec(e);if(r&&n)return t=r[1]+r[2]+r[3],e=n[1]+n[2]+n[3],t>e?1:t<e?-1:0}var ih=/t|\s/i;function eP(t){let e=oh(t);return function(n){let o=n.split(ih);return o.length===2&&nP(o[0])&&e(o[1])}}function iP(t,e){if(!(t&&e))return;let r=new Date(t).valueOf(),n=new Date(e).valueOf();if(r&&n)return r-n}function sP(t,e){if(!(t&&e))return;let[r,n]=t.split(ih),[o,i]=e.split(ih),s=sh(r,o);if(s!==void 0)return s||ah(n,i)}var IF=/\/|:/,OF=/^(?:[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 zF(t){return IF.test(t)&&OF.test(t)}var tP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function NF(t){return tP.lastIndex=0,tP.test(t)}var DF=-(2**31),LF=2**31-1;function jF(t){return Number.isInteger(t)&&t<=LF&&t>=DF}function FF(t){return Number.isInteger(t)}function rP(){return!0}var UF=/[^\\]\\Z/;function qF(t){if(UF.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var cP=C(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.formatLimitDefinition=void 0;var HF=rh(),Nt=j(),Kr=Nt.operators,Zc={formatMaximum:{okStr:"<=",ok:Kr.LTE,fail:Kr.GT},formatMinimum:{okStr:">=",ok:Kr.GTE,fail:Kr.LT},formatExclusiveMaximum:{okStr:"<",ok:Kr.LT,fail:Kr.GTE},formatExclusiveMinimum:{okStr:">",ok:Kr.GT,fail:Kr.LTE}},GF={message:({keyword:t,schemaCode:e})=>(0,Nt.str)`should be ${Zc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Nt._)`{comparison: ${Zc[t].okStr}, limit: ${e}}`};No.formatLimitDefinition={keyword:Object.keys(Zc),type:"string",schemaType:"string",$data:!0,error:GF,code(t){let{gen:e,data:r,schemaCode:n,keyword:o,it:i}=t,{opts:s,self:a}=i;if(!s.validateFormats)return;let c=new HF.KeywordCxt(i,a.RULES.all.format.definition,"format");c.$data?u():d();function u(){let f=e.scopeValue("formats",{ref:a.formats,code:s.code.formats}),p=e.const("fmt",(0,Nt._)`${f}[${c.schemaCode}]`);t.fail$data((0,Nt.or)((0,Nt._)`typeof ${p} != "object"`,(0,Nt._)`${p} instanceof RegExp`,(0,Nt._)`typeof ${p}.compare != "function"`,l(p)))}function d(){let f=c.schema,p=a.formats[f];if(!p||p===!0)return;if(typeof p!="object"||p instanceof RegExp||typeof p.compare!="function")throw new Error(`"${o}": format "${f}" does not define "compare" function`);let m=e.scopeValue("formats",{key:f,ref:p,code:s.code.formats?(0,Nt._)`${s.code.formats}${(0,Nt.getProperty)(f)}`:void 0});t.fail$data(l(m))}function l(f){return(0,Nt._)`${f}.compare(${r}, ${n}) ${Zc[o].fail} 0`}},dependencies:["format"]};var ZF=t=>(t.addKeyword(No.formatLimitDefinition),t);No.default=ZF});var fP=C((Cs,lP)=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});var Do=aP(),BF=cP(),ch=j(),uP=new ch.Name("fullFormats"),WF=new ch.Name("fastFormats"),uh=(t,e={keywords:!0})=>{if(Array.isArray(e))return dP(t,e,Do.fullFormats,uP),t;let[r,n]=e.mode==="fast"?[Do.fastFormats,WF]:[Do.fullFormats,uP],o=e.formats||Do.formatNames;return dP(t,o,r,n),e.keywords&&(0,BF.default)(t),t};uh.get=(t,e="full")=>{let n=(e==="fast"?Do.fastFormats:Do.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function dP(t,e,r,n){var o,i;(o=(i=t.opts.code).formats)!==null&&o!==void 0||(i.formats=(0,ch._)`require("ajv-formats/dist/formats").${n}`);for(let s of e)t.addFormat(s,r[s])}lP.exports=Cs=uh;Object.defineProperty(Cs,"__esModule",{value:!0});Cs.default=uh});var UP=C((a8,FP)=>{FP.exports=jP;jP.sync=PU;var DP=wr("fs");function CU(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n<r.length;n++){var o=r[n].toLowerCase();if(o&&t.substr(-o.length).toLowerCase()===o)return!0}return!1}function LP(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:CU(e,r)}function jP(t,e,r){DP.stat(t,function(n,o){r(n,n?!1:LP(o,t,e))})}function PU(t,e){return LP(DP.statSync(t),t,e)}});var BP=C((c8,ZP)=>{ZP.exports=HP;HP.sync=xU;var qP=wr("fs");function HP(t,e,r){qP.stat(t,function(n,o){r(n,n?!1:GP(o,e))})}function xU(t,e){return GP(qP.statSync(t),e)}function GP(t,e){return t.isFile()&&kU(t,e)}function kU(t,e){var r=t.mode,n=t.uid,o=t.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),s=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),d=a|c,l=r&u||r&c&&o===s||r&a&&n===i||r&d&&i===0;return l}});var VP=C((d8,WP)=>{var u8=wr("fs"),ru;process.platform==="win32"||global.TESTING_WINDOWS?ru=UP():ru=BP();WP.exports=Eh;Eh.sync=EU;function Eh(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,o){Eh(t,e||{},function(i,s){i?o(i):n(s)})})}ru(t,e||{},function(n,o){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,o=!1),r(n,o)})}function EU(t,e){try{return ru.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var tx=C((l8,ex)=>{var Zo=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",KP=wr("path"),TU=Zo?";":":",JP=VP(),YP=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),XP=(t,e)=>{let r=e.colon||TU,n=t.match(/\//)||Zo&&t.match(/\\/)?[""]:[...Zo?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],o=Zo?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=Zo?o.split(r):[""];return Zo&&t.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:o}},QP=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:o,pathExtExe:i}=XP(t,e),s=[],a=u=>new Promise((d,l)=>{if(u===n.length)return e.all&&s.length?d(s):l(YP(t));let f=n[u],p=/^".*"$/.test(f)?f.slice(1,-1):f,m=KP.join(p,t),h=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;d(c(h,u,0))}),c=(u,d,l)=>new Promise((f,p)=>{if(l===o.length)return f(a(d+1));let m=o[l];JP(u+m,{pathExt:i},(h,g)=>{if(!h&&g)if(e.all)s.push(u+m);else return f(u+m);return f(c(u,d,l+1))})});return r?a(0).then(u=>r(null,u),r):a(0)},AU=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:o}=XP(t,e),i=[];for(let s=0;s<r.length;s++){let a=r[s],c=/^".*"$/.test(a)?a.slice(1,-1):a,u=KP.join(c,t),d=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+u:u;for(let l=0;l<n.length;l++){let f=d+n[l];try{if(JP.sync(f,{pathExt:o}))if(e.all)i.push(f);else return f}catch{}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw YP(t)};ex.exports=QP;QP.sync=AU});var nx=C((f8,Th)=>{"use strict";var rx=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Th.exports=rx;Th.exports.default=rx});var ax=C((p8,sx)=>{"use strict";var ox=wr("path"),MU=tx(),$U=nx();function ix(t,e){let r=t.options.env||process.env,n=process.cwd(),o=t.options.cwd!=null,i=o&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(t.options.cwd)}catch{}let s;try{s=MU.sync(t.command,{path:r[$U({env:r})],pathExt:e?ox.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return s&&(s=ox.resolve(o?t.options.cwd:"",s)),s}function IU(t){return ix(t)||ix(t,!0)}sx.exports=IU});var cx=C((h8,Mh)=>{"use strict";var Ah=/([()\][%!^"`<>&|;, *?])/g;function OU(t){return t=t.replace(Ah,"^$1"),t}function zU(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Ah,"^$1"),e&&(t=t.replace(Ah,"^$1")),t}Mh.exports.command=OU;Mh.exports.argument=zU});var dx=C((m8,ux)=>{"use strict";ux.exports=/^#!(.*)/});var fx=C((g8,lx)=>{"use strict";var NU=dx();lx.exports=(t="")=>{let e=t.match(NU);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),o=r.split("/").pop();return o==="env"?n:n?`${o} ${n}`:o}});var hx=C((y8,px)=>{"use strict";var $h=wr("fs"),DU=fx();function LU(t){let r=Buffer.alloc(150),n;try{n=$h.openSync(t,"r"),$h.readSync(n,r,0,150,0),$h.closeSync(n)}catch{}return DU(r.toString())}px.exports=LU});var vx=C((v8,yx)=>{"use strict";var jU=wr("path"),mx=ax(),gx=cx(),FU=hx(),UU=process.platform==="win32",qU=/\.(?:com|exe)$/i,HU=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function GU(t){t.file=mx(t);let e=t.file&&FU(t.file);return e?(t.args.unshift(t.file),t.command=e,mx(t)):t.file}function ZU(t){if(!UU)return t;let e=GU(t),r=!qU.test(e);if(t.options.forceShell||r){let n=HU.test(e);t.command=jU.normalize(t.command),t.command=gx.command(t.command),t.args=t.args.map(i=>gx.argument(i,n));let o=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${o}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function BU(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:ZU(n)}yx.exports=BU});var wx=C((_8,Sx)=>{"use strict";var Ih=process.platform==="win32";function Oh(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function WU(t,e){if(!Ih)return;let r=t.emit;t.emit=function(n,o){if(n==="exit"){let i=_x(o,e);if(i)return r.call(t,"error",i)}return r.apply(t,arguments)}}function _x(t,e){return Ih&&t===1&&!e.file?Oh(e.original,"spawn"):null}function VU(t,e){return Ih&&t===1&&!e.file?Oh(e.original,"spawnSync"):null}Sx.exports={hookChildProcess:WU,verifyENOENT:_x,verifyENOENTSync:VU,notFoundError:Oh}});var Cx=C((S8,Bo)=>{"use strict";var bx=wr("child_process"),zh=vx(),Nh=wx();function Rx(t,e,r){let n=zh(t,e,r),o=bx.spawn(n.command,n.args,n.options);return Nh.hookChildProcess(o,n),o}function KU(t,e,r){let n=zh(t,e,r),o=bx.spawnSync(n.command,n.args,n.options);return o.error=o.error||Nh.verifyENOENTSync(o.status,n),o}Bo.exports=Rx;Bo.exports.spawn=Rx;Bo.exports.sync=KU;Bo.exports._parse=zh;Bo.exports._enoent=Nh});var Ax=C(Lh=>{"use strict";var kx=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,eq=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,Ex=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,tq=/\\([\u000b\u0020-\u00ff])/g,rq=/([\\"])/g,Tx=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Lh.format=nq;Lh.parse=oq;function nq(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!Tx.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var o,i=Object.keys(e).sort(),s=0;s<i.length;s++){if(o=i[s],!Ex.test(o))throw new TypeError("invalid parameter name");n+="; "+o+"="+sq(e[o])}return n}function oq(t){if(!t)throw new TypeError("argument string is required");var e=typeof t=="object"?iq(t):t;if(typeof e!="string")throw new TypeError("argument string is required to be a string");var r=e.indexOf(";"),n=r!==-1?e.slice(0,r).trim():e.trim();if(!Tx.test(n))throw new TypeError("invalid media type");var o=new aq(n.toLowerCase());if(r!==-1){var i,s,a;for(kx.lastIndex=r;s=kx.exec(e);){if(s.index!==r)throw new TypeError("invalid parameter format");r+=s[0].length,i=s[1].toLowerCase(),a=s[2],a.charCodeAt(0)===34&&(a=a.slice(1,-1),a.indexOf("\\")!==-1&&(a=a.replace(tq,"$1"))),o.parameters[i]=a}if(r!==e.length)throw new TypeError("invalid parameter format")}return o}function iq(t){var e;if(typeof t.getHeader=="function"?e=t.getHeader("content-type"):typeof t.headers=="object"&&(e=t.headers&&t.headers["content-type"]),typeof e!="string")throw new TypeError("content-type header is missing from object");return e}function sq(t){var e=String(t);if(Ex.test(e))return e;if(e.length>0&&!eq.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(rq,"\\$1")+'"'}function aq(t){this.parameters=Object.create(null),this.type=t}});import{logger as G2}from"@hermes/logger";import{logger as AH}from"@hermes/logger";var dT="mcp-auth";function _e(t,e=t.ui){if(!e)return;let r=0;for(let n of t.servers.values())n.status==="auth_required"&&r++;e.setStatus(dT,r>0?e.theme.fg("warning",`[${r} MCP needs auth, use /mcp]`):void 0)}import{MCP_CONNECTION_STATE_TOPIC as nH}from"@augmentcode/auggie-v2";import{logger as oH}from"@hermes/logger";import{logger as FT}from"@hermes/logger";import{logger as fT}from"@hermes/logger";function lT(t,e,r){let n=r?.get(t.name);return n!==void 0?n.host===t&&n.owner.kind==="plugin":e?.get(t.name)===t}function br(t,e,r){let n=r?.get(t.name);if(n?.host===t)return n.owner.kind;let o=t.config;return o?.vfsSource!==void 0?"vfs":o?.registrySource!==void 0?"registry":lT(t,e,r)?"plugin":"local"}function pT(t){let e=t.getLastProbeResult();return e!==void 0&&!e.ok&&e.outcome==="authFailure"?e:void 0}var Mm=fT.child({prefix:"pi-mcp"}),hT="augment:mcp-status-report";function rr(t,e,r){let n=t.servers.get(e),o=n?.hostedCredentialProvenance;if(o?.kind==="accepted"&&o.hostedAccessTokenOnly===!0)return{serverGeneration:o.hostGeneration,mcpConfigId:o.configId,credentialRevision:o.credentialRevision,credentialRevisionDomain:o.credentialRevisionDomain};let i=n?.targetCredentialProvenance?n.targetCredentialProvenance.credential:t.credentialRevisions?.get(e);return{serverGeneration:t.serverGenerations?.get(e)??0,mcpConfigId:r??n?.config.id,credentialRevision:i?.revision,credentialRevisionDomain:i?.domain}}function ri(t,e,r,n){let o=rr(t,e);return o.serverGeneration!==n.serverGeneration||o.mcpConfigId!==n.mcpConfigId||o.credentialRevision!==n.credentialRevision||o.credentialRevisionDomain!==n.credentialRevisionDomain?!1:(t.statusFailureCategories??=new Map,t.statusFailureCategories.set(e,{category:r,...n}),!0)}function it(t,e,r){if(r){let o=rr(t,e);if(o.serverGeneration!==r.serverGeneration||o.mcpConfigId!==r.mcpConfigId||o.credentialRevision!==r.credentialRevision||o.credentialRevisionDomain!==r.credentialRevisionDomain)return!1}let n=t.statusFailureCategories?.get(e);return t.statusFailureCategories?.delete(e),typeof n=="object"&&n.category==="auth_refresh_needed"&&t.authRefreshNeededReportKeys?.delete(e),!0}function mT(t,e){t.statusFailureCategories??=new Map;let r=t.statusFailureCategories.get(e);if(typeof r=="string")return r;let n=rr(t,e);if(r?.serverGeneration===n.serverGeneration&&r.mcpConfigId===n.mcpConfigId&&r.credentialRevision===n.credentialRevision&&r.credentialRevisionDomain===n.credentialRevisionDomain)return r.category;t.statusFailureCategories.delete(e),t.authRefreshNeededReportKeys?.delete(e)}var Xs=3e4;function gT(t){switch(t.status){case"success":return"connected";case"failed":case"auth_required":return"failed";case"initializing":{let e=t.connectStartedAt;return e!==void 0&&Date.now()-e>=Xs?"failed":void 0}default:return}}var $m="authentication required",yT="Authentication refresh is pending in the backend; retry shortly.",vT="timed out connecting after 30s",_T="Couldn't add this MCP server: its configuration could not be loaded from the MCP registry. Remove it and try again.",ST="Couldn't add this MCP server: another connected server already uses this name. Remove or rename one of them, then try again.",wT="Server was selected for this session but could not be loaded (it may be disabled or misconfigured in the MCP registry).",bT="Server was not loaded: another selected MCP server with the same name takes precedence. Rename or deselect one of them.",RT="Server requires re-authentication \u2014 its saved credential is no longer valid. Reconnect it from the session MCP panel.",CT="Server was not started: this session's Space policy does not allow it.",PT="Server was not started: its shared credential is not available to this session's identity.",xT="Server requires authentication \u2014 a same-named MCP server was connected in its place. Reconnect this server from the session MCP panel to use it instead.";function kT(t,e){let r=new Set;for(let a of t.servers.values())a.config.id!==void 0&&r.add(a.config.id);let n=new Set(e.map(a=>a.mcpConfigId).filter(a=>a!==void 0)),o=new Set(e.map(a=>a.name)),i=new Set(e.filter(a=>a.mcpConfigId===void 0).map(a=>a.name)),s=a=>t.registryConfigNamesById.get(a)??a;for(let a of t.failedAddConfigIds){if(r.has(a)||n.has(a))continue;let c=s(a);n.add(a),o.add(c),e.push({name:c,source:"registry",status:"failed",failureCategory:"configuration",errorMessage:t.nameCollisionAddConfigIds.has(a)?ST:_T,mcpConfigId:a,dynamicallyAdded:!0})}for(let a of t.selectedRegistryConfigIds??[]){if(r.has(a)||n.has(a)||t.sessionRemovedConfigIds.has(a))continue;let c=s(a);i.has(c)||(n.add(a),e.push({name:c,source:"registry",status:"failed",...TT({state:t,id:a,name:c,reportedNames:o}),mcpConfigId:a}),o.add(c))}ET({state:t,servers:e,liveConfigIds:r,reportedConfigIds:n,reportedNames:o,idlessReportedNames:i})}function ET(t){let{state:e,servers:r,liveConfigIds:n,reportedConfigIds:o,reportedNames:i,idlessReportedNames:s}=t;for(let[a,c]of e.oauthFailureCategoriesByConfigId??[]){if(n.has(a)||o.has(a)||e.sessionRemovedConfigIds.has(a))continue;let u=Om(e,a);if(u===void 0)continue;let d=e.registryConfigNamesById.get(a)??c.serverName;s.has(d)||(o.add(a),r.push({name:d,source:"registry",status:"failed",...u,mcpConfigId:a}),i.add(d))}}function Im(t,e){let r=new Map;for(let[n,o]of Object.entries(e)){if(!o||typeof o!="object")continue;let i=o;typeof i.category=="string"&&typeof i.config_id=="string"&&i.config_id!==""&&r.set(i.config_id,{category:i.category,serverName:n})}t.oauthFailureCategoriesByConfigId=r}function Om(t,e){switch(t.oauthFailureCategoriesByConfigId?.get(e)?.category){case"reauth_required":case"auth_terminal":return{errorMessage:RT,failureCategory:"auth_terminal"};case"policy_excluded":return{errorMessage:CT,failureCategory:"policy_excluded"};case"share_identity_excluded":return{errorMessage:PT,failureCategory:"share_identity_excluded"};default:return}}function TT(t){let{state:e,id:r,name:n,reportedNames:o}=t;if(e.authFallbackDisplacedConfigIds.has(r))return{errorMessage:xT,failureCategory:"auth_terminal"};let i=Om(e,r);return i!==void 0?i:{errorMessage:o.has(n)?bT:wT,failureCategory:"configuration"}}function AT(t,e){return e!==void 0?e.isAuthError?$m:e.error:t.status==="initializing"?vT:t.lastError??(t.status==="auth_required"?$m:void 0)}function MT(t,e){if(t.targetCredentialProvenance)return t.targetCredentialProvenance.credential;let r=e.statusFailureCategories?.get(t.name);return typeof r=="object"?{revision:r.credentialRevision,domain:r.credentialRevisionDomain}:e.credentialRevisions?.get(t.name)}function $T(t,e){let r=gT(t);if(r===void 0)return;let n=mT(e,t.name),o=r==="connected"?pT(t):void 0;(o!==void 0||n==="auth_refresh_needed")&&(r="failed");let i={name:t.name,source:br(t,e.pluginServerHosts,e.hostLeases),status:r,transport:t.config.type,tools:t.suppressesProviderDiagnostics?[]:t.tools.map(u=>u.name)},s=t.config.id;s!==void 0&&(i.mcpConfigId=s,e.dynamicallyAddedConfigIds.has(s)&&(i.dynamicallyAdded=!0));let a=e.statusFailureCategories?.get(t.name),c=MT(t,e);return c?.revision!==void 0&&c.domain!==void 0&&(i.credentialRevision=c.revision,i.credentialRevisionDomain=c.domain),r==="failed"&&(i.errorMessage=n==="auth_refresh_needed"?yT:AT(t,o),i.failureCategory=n??(t.status==="auth_required"||o?.isAuthError===!0?"auth_terminal":"transport_transient"),typeof a=="object"&&(i.serverGeneration=a.serverGeneration)),i}function IT(t){let e=[];for(let r of t.servers.values()){let n=$T(r,t);n!==void 0&&e.push(n)}return kT(t,e),e}function D(t,e){try{let r=IT(e),n=JSON.stringify(r);if(n===e.lastStatusReport)return;e.lastStatusReport=n,e.statusHostGeneration??=1,e.statusReportSequence=(e.statusReportSequence??0)+1;let o={servers:r,observedAtMs:Date.now(),hostGeneration:e.statusHostGeneration,reportSequence:e.statusReportSequence};t.events.emit(hT,o),Mm.info(`Emitted MCP status report: ${r.length} server(s)`)}catch(r){Mm.warn(`Failed to emit MCP status report: ${r instanceof Error?r.message:String(r)}`)}}var Qs={local:4,registry:3,plugin:2,vfs:1};function Ut(t){return t.hostLeases??=new Map,t.hostLeases}function OT(t){return t.hostLeaseRevisions??=new Map,t.hostLeaseRevisions}function ni(t){return t.expectedCredentialDomains??=new Map,t.expectedCredentialDomains}function oi(t,e){return t.kind===e.kind&&t.identity===e.identity}function zm(t){if(!t.host)return t.retirement;let e=()=>{},r=new Promise(n=>{e=n});return{incumbent:{owner:t.owner,revision:t.revision,host:t.host},teardown:r,settled:!1,resolve:e}}function ju(t,e){let r=OT(t),n=(r.get(e)??0)+1;return r.set(e,n),n}function ea(t,e,r){if(r.kind==="registry"){ni(t).set(e,{kind:"domain",domain:r.identity});return}ni(t).set(e,{kind:"blocked"})}function Fu(t,e,r){r&&t.servers.get(e)===r&&t.servers.delete(e),r&&t.pluginServerHosts.get(e)===r&&(t.pluginServerHosts.delete(e),t.pluginServerNames.delete(e))}function Rr(t,e){return t.registrySource!==void 0?{kind:"registry",identity:`user:${t.id??t.name}`}:t.vfsSource!==void 0?{kind:"vfs",identity:t.id??t.name}:{kind:e??"local",identity:t.id??t.name}}function Q(t,e,r){let n=Ut(t),o=n.get(e);if(o)return o;let i=t.pluginServerHosts.get(e)===r?"plugin":void 0,s=r.config,a=s?Rr(s,i):{kind:i??"local",identity:e},c={owner:a,revision:ju(t,e),host:r,connectionEpoch:t.mcpConnectionEpoch};return n.set(e,c),ea(t,e,a),c}function Nm(t){let{state:e,name:r,host:n}=t,o=Ut(e),i=o.get(r);if(!i||i.host!==n||i.owner.kind!=="local"||e.servers.get(r)!==n)return;let s={owner:{kind:"plugin",identity:n.config.id??r},revision:ju(e,r),host:n};return o.set(r,s),e.pluginServerNames.add(r),e.pluginServerHosts.set(r,n),ea(e,r,s.owner),s}function ii(t){let{state:e,name:r,owner:n,expectedRevision:o,expectedHost:i}=t,s=Ut(e),a=s.get(r);if(a){if(a.retirement?.settled)return;let l=Qs[n.kind]>Qs[a.owner.kind],f=Qs[n.kind]===Qs[a.owner.kind],p=o===a.revision&&(i===void 0||i===a.host);if(!(l||f&&p))return}let c=a?.host,u=a?zm(a):void 0;Fu(e,r,c),a?.owner.kind==="plugin"&&(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r));let d={owner:n,connectionEpoch:e.mcpConnectionEpoch,revision:ju(e,r),host:void 0,...u?{retirement:u}:{}};return s.set(r,d),ea(e,r,n),{lease:d,...c?{displacedHost:c}:{},...u?{retirement:u}:{}}}async function Uu(t){if(!t)return;let e=await t.teardown;if(e.status==="failed")throw e.error instanceof Error?e.error:new Error(String(e.error))}function ve(t){let{state:e,name:r,retirement:n,result:o}=t;if(n.settled)return!1;n.settled=!0,n.result=o;let s=Ut(e).get(r);return s?.retirement===n&&(o.status==="failed"?(s.host=void 0,ni(e).set(r,{kind:"blocked"})):s.retirement=void 0),n.resolve(o),!0}function ta(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e).get(r);return!s||s.revision!==o||!oi(s.owner,n)||s.host!==void 0||s.retirement!==void 0?!1:(s.host=i,e.servers.set(r,i),n.kind==="plugin"?(e.pluginServerNames.add(r),e.pluginServerHosts.set(r,i)):(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r)),!0)}function st(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e).get(r);if(!s||s.revision!==o||!oi(s.owner,n)||s.host!==i||s.retirement!==void 0)return;let a=zm(s);if(a)return Fu(e,r,i),s.host=void 0,s.retirement=a,a}function Dm(t){let{state:e,name:r,retiredOwner:n,retirement:o}=t,i=Ut(e),s=i.get(r),a=o.result;return!s||s.retirement!==o||s.host!==void 0||!o.settled||!oi(o.incumbent.owner,n)||a?.status!=="failed"||a.transportDisposed!==!0?!1:(s.retirement=void 0,!oi(s.owner,n)||s.revision!==o.incumbent.revision?(ea(e,r,s.owner),!0):(i.delete(r),ni(e).set(r,{kind:"blocked"}),!0))}function xe(t){let{state:e,name:r,owner:n,revision:o,host:i}=t,s=Ut(e),a=s.get(r);return!a||a.revision!==o||!oi(a.owner,n)||a.host!==i||a.retirement!==void 0?!1:(Fu(e,r,a.host),a.owner.kind==="plugin"&&(e.pluginServerNames.delete(r),e.pluginServerHosts.delete(r)),s.delete(r),ni(e).set(r,{kind:"blocked"}),!0)}function N(t,e){return Ut(t).get(e)}function qu(t,e,r){let n=Ut(t).get(e);return n?.host===r&&(n.owner.kind!=="registry"||n.connectionEpoch===t.mcpConnectionEpoch)}function Lm(t){if(t!==void 0)try{return new URL(t).toString()}catch{return t}}function Cr(t,e){return!t||!e?!1:t.id===e.id&&t.name===e.name&&t.type===e.type&&Lm(t.url)===Lm(e.url)&&t.registrySource===e.registrySource&&t.vfsSource===e.vfsSource}var Wn=class{_tokens=new Map;_authRequired=new Set;_retiredCredentials=new Set;_credentialRetirementGenerations=new Map;_credentialIdentities=new Map;get(e){return this._tokens.get(e)}commit(e,r,n){this._tokens.set(e,r),this._authRequired.delete(e),this._retiredCredentials.delete(e),n?this._credentialIdentities.set(e,{...n}):this._credentialIdentities.delete(e)}hasCredentialIdentity(e,r){return Cr(this._credentialIdentities.get(e),r)}reconcileCredentialIdentity(e,r,n){return this._tokens.get(e)!==r||this._retiredCredentials.has(e)?!1:(n?this._credentialIdentities.set(e,{...n}):this._credentialIdentities.delete(e),!0)}set(e,r,n){this.commit(e,r,n)}persist(e,r,n){return Promise.resolve(void 0)}captureAuthenticatedIdentityVersion(e){return Promise.resolve(void 0)}captureRefreshIdentityVersion(e){return Promise.resolve(void 0)}persistAuthenticated(e,r,n,o){return this.persist(e,r,n)}persistRefresh(e,r,n,o){return this.persist(e,r,n)}restoreAfterSupersededAuthentication(e,r,n,o,i,s){return this.persist(e,n,s)}restoreAfterSupersededRefresh(e,r,n,o,i,s){return this.restoreAfterSupersededAuthentication(e,r,n,o,i,s)}async setAndPersist(e,r,n){await this.persist(e,r,n),this.set(e,r,n)}snapshot(){return{tokens:new Map(this._tokens),authRequired:new Set(this._authRequired),retiredCredentials:new Set(this._retiredCredentials),credentialRetirementGenerations:new Map(this._credentialRetirementGenerations),credentialIdentities:new Map([...this._credentialIdentities].map(([e,r])=>[e,{...r}]))}}seed(e){for(let[r,n]of e.tokens)this._tokens.set(r,n);for(let r of e.authRequired)this._authRequired.add(r);for(let r of e.retiredCredentials??[])this._retiredCredentials.add(r);for(let[r,n]of e.credentialRetirementGenerations??[])this._credentialRetirementGenerations.set(r,n);for(let[r,n]of e.credentialIdentities??[])this._credentialIdentities.set(r,{...n})}delete(e,r){this._tokens.delete(e),this._credentialIdentities.delete(e)}clearLocalCredential(e){this._tokens.delete(e),this._credentialIdentities.delete(e),this._authRequired.delete(e),this._retiredCredentials.add(e),this._credentialRetirementGenerations.set(e,(this._credentialRetirementGenerations.get(e)??0)+1)}retireCredential(e,r,n){return n?.preserveNameState||this.clearLocalCredential(e),Promise.resolve()}credentialRetirementGeneration(e){return this._credentialRetirementGenerations.get(e)??0}isCredentialRetired(e){return this._retiredCredentials.has(e)}markAuthRequired(e){this._authRequired.add(e)}isAuthRequired(e){return this._authRequired.has(e)}clearAuthRequired(e){this._authRequired.delete(e)}};function ai(t,e){t.authenticatingServerName===e&&(t.authenticationGeneration=(t.authenticationGeneration??0)+1,t.authenticating=!1,t.authenticatingServerName=void 0)}function Hu(t){try{return new URL(t).toString()}catch{return t}}function si(t){if(!(t.type!=="http"&&t.type!=="sse"))return{id:t.id,name:t.name,type:t.type,url:Hu(t.url),auth:t.auth,registrySource:t.registrySource,vfsSource:t.vfsSource}}function qt(t,e){return si(e.config)}function ft(t,e){return t.type!==e.type||t.id!==e.id?!1:t.type==="stdio"||e.type==="stdio"?!0:Hu(t.url)===Hu(e.url)}function Gu(t,e){let r=si(t),n=si(e);return!r||!n?ft(t,e):Cr(r,n)}function Zu(t,e){return["user","tenant","private","shared"].some(r=>t===`${r}:${e}`)}function zT(t){let{state:e,name:r,expectedRegistryConfigId:n,expectedConfig:o,currentConfig:i}=t;if(o)return o;let s=n?e.registryCredentialConfigsById?.get(n):void 0;if(s?.name===r)return s;let a=e.registryCredentialConfigs?.get(r);if(a?.id===n)return a;if(i?.id===n)return i}function NT(t){let{currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n}=t;return e?r?!ft(e,r):n===void 0?!1:e.id===void 0?e.registrySource===void 0:e.id!==n:!1}function jm(t){let{identity:e,retiredConfigId:r,retiredOwnerIdentity:n}=t;return r!==void 0?!Zu(e,r):n!==void 0&&e!==n}function Fm(t,e,r){return r&&e!==void 0&&t!==void 0&&Zu(t,e)}function DT(t){let{acceptedDomain:e,currentDomain:r,retiredConfigId:n,retiresRegistryIdentity:o}=t;return!o||n===void 0?!1:[e,r].some(i=>i!==void 0&&!Zu(i,n))}function Um(t){let{currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n,retiresRegistryIdentity:o,currentLease:i,expectedFence:s,retiredConfigId:a,retiredOwnerIdentity:c,acceptedDomain:u,currentDomain:d}=t;if(NT({currentConfig:e,retiredConfig:r,expectedRegistryConfigId:n}))return!0;let l={retiredConfigId:a,retiredOwnerIdentity:c};return o&&i!==void 0&&(i.owner.kind!=="registry"||jm({identity:i.owner.identity,...l}))||o&&s?.kind==="domain"&&jm({identity:s.domain,...l})?!0:DT({acceptedDomain:u,currentDomain:d,retiredConfigId:a,retiresRegistryIdentity:o})}function LT(t){let{name:e,retiredConfig:r,expectedRegistryConfigId:n}=t;if(r)return si(r);if(n!==void 0)return{id:n,name:e}}function jT(t){let{state:e,name:r,mode:n,stillOwnsNameScopedRevision:o,retiredConfig:i}=t;if(n==="durable"){e.preservedCredentialIdentities?.delete(r);return}!o||!i||!si(i)||!e.tokens?.get(r)||(e.preservedCredentialIdentities??=new Map,e.preservedCredentialIdentities.set(r,{...i}))}async function qm(t,e,r,n,o){let i=t.oauthCredentialDomains?.get(e),s=t.credentialRevisions?.get(e)?.domain,a=t.servers?.get(e)?.config,c=zT({state:t,name:e,expectedRegistryConfigId:r,expectedConfig:n,currentConfig:a}),u=c?.id??r,d=c?.registrySource!==void 0||c===void 0&&r!==void 0,l=c?.registrySource===void 0?void 0:`user:${c.id??c.name}`,f=Um({currentConfig:a,retiredConfig:c,expectedRegistryConfigId:r,retiresRegistryIdentity:d,currentLease:t.hostLeases?.get(e),expectedFence:t.expectedCredentialDomains?.get(e),retiredConfigId:u,retiredOwnerIdentity:l,acceptedDomain:i,currentDomain:s}),p=Fm(i,u,d),m=Fm(s,u,d),h=!f,g=t.tokens?.get(e)!==void 0&&i===void 0&&s===void 0,w=f&&!(h||p||m||g);if(o==="durable"){let R=LT({name:e,retiredConfig:c,expectedRegistryConfigId:r});await t.tokens?.retireCredential(e,R,{preserveNameState:w})}let b=Um({currentConfig:t.servers?.get(e)?.config,retiredConfig:c,expectedRegistryConfigId:r,retiresRegistryIdentity:d,currentLease:t.hostLeases?.get(e),expectedFence:t.expectedCredentialDomains?.get(e),retiredConfigId:u,retiredOwnerIdentity:l,acceptedDomain:t.oauthCredentialDomains?.get(e),currentDomain:t.credentialRevisions?.get(e)?.domain}),x=h&&!b,S=!1;return t.equalRevisionRebindDomains?.delete(e),(x||p)&&t.oauthCredentialDomains?.get(e)===i&&(t.oauthCredentialDomains.delete(e),S=!0),(x||m)&&t.credentialRevisions?.get(e)?.domain===s&&(t.credentialRevisions.delete(e),t.hostedCredentialOwnership?.delete(e),S=!0),x&&o==="durable"&&t.expectedCredentialDomains?.set(e,{kind:"blocked"}),jT({state:t,name:e,mode:o,stillOwnsNameScopedRevision:x,retiredConfig:c}),S&&(ai(t,e),it(t,e),t.authRefreshNeededReportKeys?.delete(e)),x}function pt(t,e,r,n){return qm(t,e,r,n,"durable")}function ci(t,e,r,n){return qm(t,e,r,n,"session")}function Hm(t){let e=[];if(Object.hasOwn(t,"credential_owner_domain")&&e.push(t.credential_owner_domain),Object.hasOwn(t,"credentialOwnerDomain")&&e.push(t.credentialOwnerDomain),e.length===0)return{kind:"absent"};if(e.some(n=>typeof n!="string"||!/^user:.+/.test(n)))return{kind:"invalid"};let r=e[0];return e.every(n=>n===r)?{kind:"valid",ownerDomain:r}:{kind:"invalid"}}function Pr(t,e){let r=t.replace(/^0+(?=\d)/,""),n=e.replace(/^0+(?=\d)/,"");return r.length!==n.length?r.length<n.length?-1:1:r===n?0:r<n?-1:1}var Gm="augment:mcp-oauth-credentials",Zm=300*1e3,UT=256,Bu=FT.child({prefix:"pi-mcp"}),xt=class extends Error{constructor(e){super(e),this.name="RegistryCredentialRetirementError"}};function at(t){return`user:${t}`}function on(t){let{state:e,name:r,revision:n}=t;if(e.credentialRevisions??=new Map,e.oauthCredentialRevisions??=new Map,e.oauthCredentialDomains??=new Map,e.hostedCredentialOwnership?.delete(r),n===void 0){e.credentialRevisions.delete(r),e.oauthCredentialDomains.delete(r),e.authRefreshNeededReportKeys?.delete(r);return}let o={...n,revision:n.revision.replace(/^0+(?=\d)/,"")},i=e.credentialRevisions.get(r);e.credentialRevisions.set(r,o),(i?.revision!==o.revision||i?.domain!==o.domain)&&e.authRefreshNeededReportKeys?.delete(r);let s=e.oauthCredentialRevisions.get(o.domain);(s===void 0||Pr(o.revision,s)>0)&&e.oauthCredentialRevisions.set(o.domain,o.revision),e.oauthCredentialDomains.set(r,o.domain)}function xr(t){let e=t.indexOf(":");if(e<=0||e===t.length-1)return t;let r=t.slice(0,e);return r!=="private"&&r!=="shared"&&r!=="recipient"&&r!=="user"&&r!=="tenant"?t:at(t.slice(e+1))}function ct(t){return/^secret:(private|shared):.+/.test(t)}function sn(t){return t.ownerDomain??xr(t.domain)}function Bm(t,e,r){let n=at(e);return r!==void 0?r===n:ct(t)||xr(t)===n}function qT(t,e){return t?.revision===e?.revision&&t?.domain===e?.domain&&t?.ownerDomain===e?.ownerDomain}function HT(t,e,r){return{acceptedDomain:t.oauthCredentialDomains.get(e),credentialRevision:t.credentialRevisions.get(e),expectedDomain:t.expectedCredentialDomains.get(e),failure:t.statusFailureCategories.get(e),restoreFailure:r}}function GT(t,e){return t?.kind===e?.kind&&(t?.kind!=="domain"||e?.kind==="domain"&&t.domain===e.domain)}function ZT(t,e,r){return t.oauthCredentialDomains.get(e)===r.acceptedDomain&&qT(t.credentialRevisions.get(e),r.credentialRevision)&&GT(t.expectedCredentialDomains.get(e),r.expectedDomain)&&t.statusFailureCategories.get(e)===r.failure}function BT(t){return JSON.stringify({id:t.id,name:t.name,type:t.type,url:t.type==="stdio"?void 0:t.url,auth:t.type==="stdio"?void 0:t.auth,registrySource:t.registrySource,vfsSource:t.vfsSource})}function WT(t){let{state:e,config:r,domain:n}=t,o=r.id===void 0?void 0:e.registryCredentialConfigsById.get(r.id);return!o||e.sessionRemovedConfigIds.has(r.id??"")||!ft(o,r)?!1:o.name!==r.name||e.equalRevisionRebindDomains.get(r.name)===n}function kr(t){t.registryCredentialIntents??=new Map,t.registryCredentialIntentEpochs??=new Map,t.pendingRegistryCredentialDomains??=new Set,t.stagedOAuthCredentials??=new Map,t.equalRevisionRebindDomains??=new Map,t.bootOAuthCredentialBuffer??=new Map}function nr(t,e){let r=t.bootOAuthCredentialBuffer?.get(e);r?.expiryTimer!==void 0&&clearTimeout(r.expiryTimer),t.bootOAuthCredentialBuffer?.delete(e)}function Wm(t){kr(t);let e=new Set([...t.registryCredentialConfigs.keys(),...t.registryConfigNamesById.values(),...t.oauthCredentialDomains.keys(),...t.credentialRevisions.keys(),...t.preservedCredentialIdentities?.keys()??[],...[...t.bootOAuthCredentialBuffer?.values()??[]].map(n=>n.serverName),...[...t.registryCredentialIntents.values()].flatMap(n=>n.configName?[n.configName]:[])]);for(let[n,o]of t.hostLeases)o.owner.kind==="registry"&&e.add(n);for(let n of e){let o=t.hostLeases.get(n);if(o&&o.owner.kind!=="registry")continue;t.tokens.clearLocalCredential(n);let i=t.oauthCredentialDomains.get(n);i&&t.oauthCredentialRevisions.delete(i),t.oauthCredentialDomains.delete(n),t.credentialRevisions.delete(n),t.hostedCredentialOwnership?.delete(n),t.preservedCredentialIdentities?.delete(n),t.expectedCredentialDomains.set(n,{kind:"blocked"}),t.authRefreshNeededReportKeys?.delete(n)}let r=new Set(t.oauthCredentialDomains.values());for(let n of t.oauthCredentialRevisions.keys())r.has(n)||t.oauthCredentialRevisions.delete(n);for(let n of t.bootOAuthCredentialBuffer?.keys()??[])nr(t,n);t.registryCredentialIntents.clear(),t.pendingRegistryCredentialDomains.clear(),t.stagedOAuthCredentials.clear(),t.equalRevisionRebindDomains.clear(),t.registryCredentialConfigs.clear(),t.registryCredentialConfigsById.clear(),t.registryConfigNamesById.clear(),t.mcpRestartState.clear()}function Vm(t,e){let r=t.bootOAuthCredentialBuffer;if(r)for(let[n,o]of r)(o.connectionEpoch!==t.mcpConnectionEpoch||e-o.insertedAtMs>=Zm)&&nr(t,n)}function VT(t){let e=t.bootOAuthCredentialBuffer?.keys().next().value;typeof e=="string"&&nr(t,e)}function Km(t){let{state:e,serverName:r,revision:n,credential:o,suppressReconnect:i}=t;kr(e),e.bootOAuthCredentialBuffer??=new Map;let s=e.bootOAuthCredentialBuffer,a=Date.now();Vm(e,a);let c=sn(n),u=ct(c)?`${c}\0${r}`:c,d=s.get(u),l=d?.credential.credential_revision??d?.credential.credentialRevision;if(typeof l=="string"&&Pr(n.revision,l)<=0)return;!d&&s.size>=UT&&VT(e),nr(e,u);let f={serverName:r,credential:o,suppressReconnect:i,insertedAtMs:a,connectionEpoch:e.mcpConnectionEpoch,expiryTimer:void 0};s.set(u,f),f.expiryTimer=setTimeout(()=>{s.get(u)===f&&nr(e,u)},Zm),f.expiryTimer.unref?.(),Bu.warn(`MCP OAuth credential for "${r}" arrived before its server was known; buffered for replay after discovery`)}function KT(t,e){kr(t);let r=(t.registryCredentialIntentEpochs.get(e)??0)+1;return t.registryCredentialIntentEpochs.set(e,r),r}function Ke(t){let{state:e,domain:r,epoch:n,preserveFence:o=!1,preserveBootCredential:i=!1}=t;kr(e);let s=e.registryCredentialIntents.get(r);if(!(n!==void 0&&s?.epoch!==n)){if(!o&&s?.configName){let a=e.expectedCredentialDomains.get(s.configName);a?.kind==="domain"&&a.domain===r&&e.expectedCredentialDomains.set(s.configName,{kind:"blocked"})}e.pendingRegistryCredentialDomains.delete(r),e.registryCredentialIntents.delete(r),e.stagedOAuthCredentials.delete(r),i||nr(e,r)}}function ra(t){let{state:e,domain:r,forceNew:n=!1}=t;kr(e);let o=e.registryCredentialIntents.get(r);if(o&&!n)return e.pendingRegistryCredentialDomains.add(r),{domain:r,...o};let i=o?.configFingerprint===void 0?e.stagedOAuthCredentials.get(r):void 0;o&&Ke({state:e,domain:r,epoch:o.epoch});let s={epoch:KT(e,r),configFingerprint:void 0,configName:void 0,allowEqualRevisionRebind:!1,finalization:void 0};return e.registryCredentialIntents.set(r,s),i!==void 0&&i.configFingerprint===void 0&&e.stagedOAuthCredentials.set(r,{...i,intentEpoch:s.epoch}),e.pendingRegistryCredentialDomains.add(r),{domain:r,...s}}function Jm(t,e){kr(t);for(let[r,n]of t.registryCredentialIntents)e.has(r)||Ke({state:t,domain:r,epoch:n.epoch});for(let r of t.pendingRegistryCredentialDomains)e.has(r)||(t.pendingRegistryCredentialDomains.delete(r),t.stagedOAuthCredentials.delete(r));for(let r of t.stagedOAuthCredentials.keys())e.has(r)||t.stagedOAuthCredentials.delete(r);for(let r of t.bootOAuthCredentialBuffer?.keys()??[]){let n=r.split("\0",1)[0];!e.has(r)&&!ct(n)&&nr(t,r)}for(let r of e){let n=t.registryCredentialIntents.get(r);ra({state:t,domain:r,forceNew:n?.configFingerprint===void 0})}}function JT(t){let{state:e,config:r}=t;if(r.id===void 0||r.registrySource===void 0||N(e,r.name)?.owner.kind==="local")return;kr(e);let n=at(r.id),o=BT(r),i=WT({state:e,config:r,domain:n});i||e.equalRevisionRebindDomains.delete(r.name);let s=e.registryCredentialIntents.get(n);if(s&&s.configFingerprint===void 0){s.configFingerprint=o,s.configName=r.name,s.allowEqualRevisionRebind=i;let a=e.stagedOAuthCredentials.get(n);a?.intentEpoch===s.epoch&&(a.configFingerprint=o)}else s&&s.configFingerprint!==o?(Ke({state:e,domain:n,epoch:s.epoch}),s=void 0):s&&(s.allowEqualRevisionRebind=i);if(!s){let a=ra({state:e,domain:n});if(s=e.registryCredentialIntents.get(n),!s||s.epoch!==a.epoch)return;s.configFingerprint=o,s.configName=r.name,s.allowEqualRevisionRebind=i}return e.pendingRegistryCredentialDomains.add(n),YT({state:e,config:r,domain:n}),{domain:n,...s}}function Ym(t){let{state:e,revision:r,credential:n,suppressReconnect:o}=t;kr(e);let i=sn(r),s=e.registryCredentialIntents.get(i);if(!s||!e.pendingRegistryCredentialDomains.has(i))return;let a=e.oauthCredentialRevisions.get(r.domain),c=e.stagedOAuthCredentials.get(i),d=c?.intentEpoch===s.epoch&&c.configFingerprint===s.configFingerprint?c.credential.credential_revision??c.credential.credentialRevision:void 0,l=a===void 0?void 0:Pr(r.revision,a),f=l===0;l!==void 0&&l<0||f&&s.configFingerprint!==void 0&&!s.allowEqualRevisionRebind||typeof d=="string"&&Pr(r.revision,d)<=0||e.stagedOAuthCredentials.set(i,{credential:n,suppressReconnect:o,intentEpoch:s.epoch,configFingerprint:s.configFingerprint,requiresEqualRevisionRebind:f})}function YT(t){let{state:e,config:r,domain:n}=t,o=e.oauthCredentialDomains.get(r.name);e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:n});let i=e.credentialRevisions.get(r.name);(o===void 0||i?.ownerDomain!==void 0&&i.ownerDomain!==n||i?.ownerDomain===void 0&&!ct(o)&&xr(o)!==n)&&(e.oauthCredentialDomains.delete(r.name),e.credentialRevisions.delete(r.name),e.hostedCredentialOwnership?.delete(r.name),it(e,r.name),e.authRefreshNeededReportKeys?.delete(r.name))}function XT(t){let{state:e,config:r,pi:n,intent:o}=t,i=e.stagedOAuthCredentials.get(o.domain);if(!i||i.intentEpoch!==o.epoch||i.configFingerprint!==o.configFingerprint||i.requiresEqualRevisionRebind&&!o.allowEqualRevisionRebind)return;e.stagedOAuthCredentials.delete(o.domain),i.requiresEqualRevisionRebind&&e.equalRevisionRebindDomains.set(r.name,o.domain),Ke({state:e,domain:o.domain,epoch:o.epoch,preserveFence:!0,preserveBootCredential:!0});let s={[r.name]:i.credential};n.events.emit(Gm,i.suppressReconnect?{credentials:s,suppressReconnect:!0}:s)}function QT(t){let{state:e,domain:r,serverName:n}=t,o=Date.now();Vm(e,o);let i=e.bootOAuthCredentialBuffer?.get(r);if(i)return nr(e,r),i;for(let[s,a]of e.bootOAuthCredentialBuffer??[])if(a.serverName===n&&ct(s.split("\0",1)[0]))return nr(e,s),a}function eA(t){let{config:e,pi:r,buffered:n}=t;Bu.info(`Replaying boot-buffered MCP OAuth credential for "${e.name}"`),Bu.info("MCP OAuth boot credential replayed",{hasRegistryConfigId:e.id!==void 0,registryOwned:e.registrySource!==void 0,visibility:"public"});let o={[e.name]:n.credential};r.events.emit(Gm,n.suppressReconnect?{credentials:o,suppressReconnect:!0}:o)}async function tA(t){let{state:e,config:r,previousConfig:n}=t;if(!n)return;if(ft(n,r)){if(n.name===r.name)return;await ci(e,n.name,n.id,n),e.tokens.clearLocalCredential(n.name),e.preservedCredentialIdentities?.delete(n.name),e.expectedCredentialDomains.set(n.name,{kind:"blocked"}),e.registryCredentialConfigs.delete(n.name);return}await pt(e,r.name,n.id,n);let o=e.expectedCredentialDomains.get(r.name);return o?.kind==="blocked"?o:void 0}function rA(t){let{state:e,config:r,intent:n,rollbackSnapshot:o,cause:i}=t;if(e.registryCredentialIntents.get(n.domain)?.epoch===n.epoch){let c=ZT(e,r.name,o);Ke({state:e,domain:n.domain,epoch:n.epoch,preserveFence:!c}),c&&(e.expectedCredentialDomains.set(r.name,{kind:"blocked"}),o.restoreFailure!==void 0&&e.statusFailureCategories.set(r.name,o.restoreFailure))}let a=`Registry credential replacement failed for ${r.name}: ${i instanceof Error?i.message:String(i)}`;return e.diagnostics.push({server:r.name,message:a,origin:"registry"}),new xt(a)}async function nA(t){let{state:e,config:r,pi:n,intent:o,previousConfig:i,rollbackSnapshot:s}=t,a=e.registryCredentialIntents.get(o.domain);if(a?.epoch!==o.epoch||a.configFingerprint!==o.configFingerprint)return!1;e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:o.domain});let c;try{c=await tA({state:e,config:r,previousConfig:i})}catch(m){throw rA({state:e,config:r,intent:o,rollbackSnapshot:s,cause:m})}let u=e.registryCredentialIntents.get(o.domain);c&&u?.epoch===o.epoch&&e.expectedCredentialDomains.get(r.name)===c&&e.expectedCredentialDomains.set(r.name,{kind:"domain",domain:o.domain});let d=e.expectedCredentialDomains.get(r.name);if(u?.epoch!==o.epoch||u.configFingerprint!==o.configFingerprint||d?.kind!=="domain"||d.domain!==o.domain)return Ke({state:e,domain:o.domain,epoch:o.epoch}),!1;let l=r.id;if(l===void 0)return!1;let f={...r};e.registryConfigNamesById.set(l,r.name),e.registryCredentialConfigs.set(r.name,f),e.registryCredentialConfigsById.set(l,f),o.allowEqualRevisionRebind&&e.equalRevisionRebindDomains.set(r.name,o.domain),XT({state:e,config:r,pi:n,intent:o});let p=QT({state:e,domain:o.domain,serverName:r.name});return Ke({state:e,domain:o.domain,epoch:o.epoch,preserveFence:!0}),p&&eA({config:r,pi:n,buffered:p}),!0}function Er(t){let{state:e,config:r,pi:n}=t;if(r.id===void 0||r.registrySource===void 0)return Promise.resolve(!0);let o=e.statusFailureCategories.get(r.name),i=JT({state:e,config:r});if(!i)return Promise.resolve(!1);let s=e.registryCredentialIntents.get(i.domain);if(!s||s.epoch!==i.epoch)return Promise.resolve(!1);if(s.finalization)return s.finalization;let a=HT(e,r.name,o),u=(e.registryCredentialFinalizationsByName.get(r.name)??Promise.resolve(!0)).catch(()=>!1).then(()=>{let d=e.registryCredentialConfigs.get(r.name)??(r.id===void 0?void 0:e.registryCredentialConfigsById.get(r.id))??e.servers.get(r.name)?.config;return nA({state:e,config:r,pi:n,intent:i,previousConfig:d,rollbackSnapshot:a})});return e.registryCredentialFinalizationsByName.set(r.name,u),s.finalization=u,u.then(()=>{e.registryCredentialFinalizationsByName.get(r.name)===u&&e.registryCredentialFinalizationsByName.delete(r.name)},()=>{e.registryCredentialFinalizationsByName.get(r.name)===u&&e.registryCredentialFinalizationsByName.delete(r.name)}),u}import{SettingsManager as gA}from"@augmentcode/auggie-v2";import{homedir as Xm}from"node:os";import{sep as oA}from"node:path";var Wu=class extends Error{variableName;constructor(e){super(`Missing environment variable "${e}"`),this.name="EnvVariableExpansionError",this.variableName=e}},iA=/(?<!\\)\$\{([a-zA-Z_][a-zA-Z0-9_]*)(?::-([\s\S]*?))?\}/g,sA=/\\\$\{/g,aA=new Set(["workspaceFolder","augmentToken"]),Qm="${workspaceFolder}";function eg(t,e){return t.includes(Qm)?t.split(Qm).join(e):t}function tg(t,e){return t.includes("${")?t.replace(iA,(n,o,i)=>{if(aA.has(o))return n;let s=e[o];if(s!==void 0)return s;if(i!==void 0)return i;throw new Wu(o)}).replace(sA,"${"):t}function cA(t){return t.startsWith("~")?t==="~"?Xm():t.startsWith("~/")||t.startsWith(`~${oA}`)?Xm()+t.slice(1):t:t}function Vu(t,e,r){return cA(tg(eg(t,e),r))}function Vn(t,e,r){return tg(eg(t,e),r)}function rg(t,e,r){let n={};for(let[o,i]of Object.entries(t))n[o]=Vn(i,e,r);return n}var uA="$augment-";function dA(t,e,r){if(!t)return;let n={};for(let[o,i]of Object.entries(t))n[o]=i.startsWith(uA)?i:Vn(i,e,r);return n}function Ht(t,e){let r=process.env;return{...t,url:Vn(t.url,e,r),headers:dA(t.headers,e,r)}}function Gt(t,e){let r=process.env;return{...t,command:Vu(t.command,e,r),args:t.args.map(n=>Vn(n,e,r)),env:t.env?rg(t.env,e,r):void 0,cwd:t.cwd?Vu(t.cwd,e,r):e}}import{readFileSync as fA}from"node:fs";var kt=class extends Error{constructor(e){super(e),this.name="McpConfigError"}};function Kn(t){if(t.type==="stdio"||t.type==="http"||t.type==="sse")return t.type;if(t.url)return"http";if(t.command)return"stdio"}function lA(t){if(!t)return;let e={};for(let[r,n]of Object.entries(t))n!=null&&(e[r]=String(n));return Object.keys(e).length>0?e:void 0}function Jn(t,e){let r=Kn(e);if(!r)throw new kt(`MCP server "${t}" must declare a 'command' (stdio) or 'url' (http/sse) property`);if(r==="http"||r==="sse"){if(!e.url)throw new kt(`MCP server "${t}" has type "${r}" but no 'url' property`);return{type:r,name:e.name??t,disabled:e.disabled,url:e.url,headers:e.headers,auth:e.auth==="oauth"?"oauth":void 0,timeoutMs:e.timeoutMs}}let n=e.command;if(!n)throw new kt(`MCP server "${t}" has type "stdio" but no 'command' property`);let o=(e.args??[]).map(a=>String(a)),i=e.useShellInterpolation??!0,s=i&&o.length>0?`${n} ${o.join(" ")}`:n;return{type:"stdio",name:e.name??t,disabled:e.disabled,command:s,args:i?[]:o,env:lA(e.env),cwd:e.cwd,timeoutMs:e.timeoutMs,useShellInterpolation:i}}var ig=t=>fA(t,"utf8");function na(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ng(t){return na(t)&&("command"in t||"url"in t)}function Ju(...t){for(let e of t)if(typeof e=="string"&&e.length>0)return e}function og(t,e){return Ju(t.name)??e}function Ku(t,e){let r=Kn(t);if(r==="http"||r==="sse")return Ju(t.name,t.title,t.url)??e;let n=typeof t.command=="string"&&t.command.length>0?t.command.split(" ")[0]:void 0;return Ju(t.name,t.title,n)??e}function pA(t){if(Array.isArray(t))return t.map((e,r)=>{let n=e;return[Ku(n,String(r)),n]});if(na(t)){for(let r of["servers","mcpServers"]){let n=t[r];if(Array.isArray(n))return n.map((o,i)=>{let s=o;return[Ku(s,String(i)),s]})}for(let r of["servers","mcpServers"]){let n=t[r];if(na(n))return Object.entries(n).map(([o,i])=>{let s=i;return[og(s,o),s]})}if(ng(t)){let r=t;return[[Ku(r,"server"),r]]}let e=Object.values(t);if(e.length>0&&e.some(ng))return Object.entries(t).map(([r,n])=>{if(!na(n))throw new Error(`entry "${r}" is not a server config object (got ${n===null?"null":typeof n})`);let o=n;return[og(o,r),o]})}throw new Error("unrecognized MCP config JSON shape (expected an array of servers, a { servers|mcpServers } array/record, a single server object, or a Claude-Desktop-style record)")}function Yu(t){return t instanceof Error?t.message:String(t)}function hA(t,e,r,n,o){if(r)return e;try{return n(t)}catch(i){o.push({message:`Failed to read --mcp-config file "${t}": ${Yu(i)}`});return}}function mA(t,e,r){let n=t.trim();if(n.length===0)return[];let o=n.startsWith("[")||n.startsWith("{"),i=o?"inline JSON":`file "${t}"`,s=hA(t,n,o,e,r);if(s===void 0)return[];let a;try{a=JSON.parse(s)}catch(c){return r.push({message:`Failed to parse --mcp-config ${i}: ${Yu(c)}`}),[]}try{return pA(a)}catch(c){return r.push({message:`Invalid --mcp-config ${i}: ${Yu(c)}`}),[]}}function Xu(t,e=ig){let r={},n=[];for(let o of t)for(let[i,s]of mA(o,e,n))r[i]=s;return{servers:r,diagnostics:n}}function Qu(t,e=ig){return!t||t.length===0?new Set:new Set(Object.keys(Xu(t,e).servers))}var yA=["global","project","local","managed"];function vA(t,e){switch(e){case"global":return t.getGlobalSettings().mcpServers;case"project":return t.getProjectSettings().mcpServers;case"local":return t.getLocalSettings().mcpServers;case"managed":return t.getManagedSettings().mcpServers}}function _A(t){let e={};for(let r of t)if(r)for(let[n,o]of Object.entries(r)){if(o===null){delete e[n];continue}o&&(e[n]=structuredClone(o))}return e}function SA(t,e,r){let n=Xu(t);r.push(...n.diagnostics);let o=n.servers;if(!e||e.size===0)return o;for(let[i,s]of Object.entries(o)){let a=e.get(i);a!==void 0&&(o[i]={...s,disabled:a})}return o}function wA(t,e,r){let n=gA.create(t,e);for(let{scope:o,error:i}of n.drainErrors()){let s=i.message.includes("parse settings JSON")?"parse":"read";r.push({message:`Failed to ${s} ${o} settings.json: ${i.message}`})}return _A(yA.map(o=>vA(n,o)))}function Yn(t,e,r,n){let o=[],i=r&&r.length>0?SA(r,n,o):wA(t,e,o),s=[];for(let[a,c]of Object.entries(i))try{let u=Jn(a,c);s.push(u.type==="stdio"?Gt(u,t):Ht(u,t))}catch(u){let d=u instanceof kt?u.message:`Failed to normalize MCP server "${a}": ${u instanceof Error?u.message:String(u)}`;o.push({server:a,message:d})}return{servers:s,diagnostics:o}}import{setToolSource as lg}from"@augmentcode/auggie-v2";import{logger as $A}from"@hermes/logger";import{Type as IA}from"@sinclair/typebox";var oa=Symbol.for("__pi_mcp_state__");function bA(t,e){return t.id!==e.id||t.type!==e.type||t.type==="stdio"||e.type==="stdio"||t.auth!=="oauth"||e.auth!=="oauth"?!1:t.url===e.url&&t.auth===e.auth}function RA(t,e){return["user","tenant","private","shared"].some(r=>t===`${r}:${e}`)}function CA(t){for(let[e,r]of t.registryCredentialConfigsById){let n=[...t.registryCredentialConfigs.entries()].filter(([s,a])=>s!==r.name&&a.id===e&&bA(a,r)).map(([s])=>s),o=n.some(s=>{let a=t.oauthCredentialDomains.get(s);return a!==void 0&&RA(a,e)}),i=t.expectedCredentialDomains.get(r.name);if(!(!o||t.sessionRemovedConfigIds.has(e)||t.oauthCredentialDomains.has(r.name)||i?.kind!=="domain"||i.domain!==`user:${e}`)){t.equalRevisionRebindDomains.set(r.name,i.domain);for(let s of n)t.tokens.clearLocalCredential(s),t.oauthCredentialDomains.delete(s),t.credentialRevisions.delete(s),t.hostedCredentialOwnership?.delete(s),t.preservedCredentialIdentities?.delete(s),t.statusFailureCategories?.delete(s),t.authRefreshNeededReportKeys?.delete(s),t.expectedCredentialDomains.set(s,{kind:"blocked"})}}}function PA(t){t.dynamicallyAddedConfigIds??=new Set,t.failedAddConfigIds??=new Set,t.nameCollisionAddConfigIds??=new Set,t.authFallbackDisplacedConfigIds??=new Set,t.sessionRemovedConfigIds??=new Set,t.registryConfigNamesById??=new Map,t.registryCredentialConfigs??=new Map,t.registryCredentialConfigsById??=new Map,t.toolSearchLatched??=!1,t.sessionMcpConfigDisabledOverrides??=new Map,t.reconnects??=new Map,t.missingHostRemovals??=new Map,t.missingHostRemovalFences??=new Map,t.reconnectDesiredGenerations??=new Map,t.serverGenerations??=t.hostGenerations??new Map,t.configRevisions??=new Map,t.configDesiredRevisions??=new Map,t.configDesiredSources??=new Map,t.credentialRevisions??=new Map,t.oauthCredentialRevisions??=new Map,t.oauthCredentialDomains??=new Map;let e=t.equalRevisionRebindDomains===void 0;t.equalRevisionRebindDomains??=new Map,t.preservedCredentialIdentities??=new Map,t.stagedOAuthCredentials??=new Map,t.pendingRegistryCredentialDomains??=new Set,t.registryCredentialIntents??=new Map,t.registryCredentialIntentEpochs??=new Map,t.registryCredentialFinalizationsByName??=new Map;for(let r of t.pendingRegistryCredentialDomains)if(!t.registryCredentialIntents.has(r)){let n=(t.registryCredentialIntentEpochs.get(r)??0)+1;t.registryCredentialIntentEpochs.set(r,n),t.registryCredentialIntents.set(r,{epoch:n,configFingerprint:void 0,configName:void 0,allowEqualRevisionRebind:!1,finalization:void 0})}for(let r of t.registryCredentialIntents.values())r.allowEqualRevisionRebind??=!1;for(let[r,n]of t.stagedOAuthCredentials){let o=t.registryCredentialIntents.get(r);if(!o){t.stagedOAuthCredentials.delete(r);continue}let i=n;i.intentEpoch??=o.epoch,i.configFingerprint??=o.configFingerprint,i.requiresEqualRevisionRebind??=!1}t.statusHostGeneration??=1,t.statusReportSequence??=0,t.statusFailureCategories??=new Map,t.authRefreshNeededReportKeys??=new Map,t.hostedCredentialOwnership??=new Map,e&&CA(t),t.authenticationGeneration??=0,t.authenticatingServerName??=void 0,t.liveEditGenerations??=new Map,t.blockedVfsMcpNames??=new Set,t.pluginServerHosts||(t.pluginServerHosts=new Map),t.toolRegistrationsByPi??=new WeakMap,t.hostLeases??=new Map,t.hostLeaseRevisions??=new Map,t.expectedCredentialDomains??=new Map;for(let[r,n]of t.servers)n.config!==void 0&&Q(t,r,n);t.pluginReconcileQueue??=Promise.resolve(),t.mcpAttachDisabled??=!1,t.mcpAttachCloudSignaled??=!1,t.attachResolvers??=new Map,t.attachResultListenerBound??=!1,t.attachmentCommandGenerations??=new Map,t.attachmentCommandInFlightGenerations??=new Map,t.attachmentCommandAppliedGenerations??=new Map}async function ui(t,e){for(;;){let r=t.missingHostRemovals.get(e);if(!r)return;try{await r.promise}catch{}if(t.missingHostRemovals.get(e)===r)return}}function Xn(t){let{state:e,configId:r,generation:n}=t;e.attachmentCommandGenerations??=new Map,e.attachmentCommandInFlightGenerations??=new Map,e.attachmentCommandAppliedGenerations??=new Map;let o=e.attachmentCommandGenerations.get(r)??0;return typeof n!="number"||!Number.isSafeInteger(n)||n<=0?o===0:n<o||n===e.attachmentCommandInFlightGenerations.get(r)||n===e.attachmentCommandAppliedGenerations.get(r)?!1:(e.attachmentCommandGenerations.set(r,n),e.attachmentCommandInFlightGenerations.set(r,n),!0)}function ed(t){let{state:e,configId:r,generation:n}=t;typeof n!="number"||n<=0||(e.attachmentCommandInFlightGenerations?.get(r)===n&&e.attachmentCommandInFlightGenerations.delete(r),e.attachmentCommandGenerations?.get(r)===n&&(e.attachmentCommandAppliedGenerations??=new Map,e.attachmentCommandAppliedGenerations.set(r,n)))}function ia(t){let{state:e,configId:r,generation:n}=t;typeof n=="number"&&e.attachmentCommandInFlightGenerations?.get(r)===n&&e.attachmentCommandInFlightGenerations.delete(r)}function sa(t){let{state:e,configId:r,generation:n,operation:o,wasApplied:i}=t;return typeof n!="number"||!Number.isSafeInteger(n)||n<=0?o:o.then(s=>(i()?ed({state:e,configId:r,generation:n}):ia({state:e,configId:r,generation:n}),s),s=>{throw ia({state:e,configId:r,generation:n}),s})}function ee(){let t=globalThis;if(t[oa])return PA(t[oa]),t[oa];let e={servers:new Map,toolRegistrationsByPi:new WeakMap,hostLeases:new Map,hostLeaseRevisions:new Map,expectedCredentialDomains:new Map,tokens:new Wn,refreshes:new Map,reconnects:new Map,missingHostRemovals:new Map,missingHostRemovalFences:new Map,reconnectDesiredGenerations:new Map,serverGenerations:new Map,configRevisions:new Map,configDesiredRevisions:new Map,configDesiredSources:new Map,credentialRevisions:new Map,oauthCredentialRevisions:new Map,oauthCredentialDomains:new Map,equalRevisionRebindDomains:new Map,preservedCredentialIdentities:new Map,stagedOAuthCredentials:new Map,bootOAuthCredentialBuffer:new Map,pendingRegistryCredentialDomains:new Set,registryCredentialIntents:new Map,registryCredentialIntentEpochs:new Map,registryCredentialFinalizationsByName:new Map,statusHostGeneration:1,statusReportSequence:0,statusFailureCategories:new Map,authRefreshNeededReportKeys:new Map,hostedCredentialOwnership:new Map,shouldProactivelyRefreshTokens:!0,backgroundRefreshIntervalId:void 0,credsListenerBound:!1,configIdsListenerBound:!1,registryGeneration:0,liveEditGenerations:new Map,attachmentCommandGenerations:new Map,attachmentCommandInFlightGenerations:new Map,attachmentCommandAppliedGenerations:new Map,mcpConfigsListenerBound:!1,embeddedRegistryConfigs:void 0,vfsListenerBound:!1,addServerListenerBound:!1,restartServerListenerBound:!1,removeServerListenerBound:!1,mcpRestartState:new Map,vfsGeneration:0,lastSuccessfulVfsMcpSignature:void 0,blockedVfsMcpNames:new Set,credentials:void 0,secretsClient:void 0,headerSecrets:{},headerSecretFailures:{},headerSecretsListenerBound:!1,featureFlagsListenerBound:!1,workspaceRoot:void 0,mcpConfigOverride:void 0,connectStarted:!1,reconnecting:!1,authenticating:!1,authenticationGeneration:0,authenticatingServerName:void 0,restartHistory:new Map,dynamicallyAddedConfigIds:new Set,failedAddConfigIds:new Set,nameCollisionAddConfigIds:new Set,authFallbackDisplacedConfigIds:new Set,sessionRemovedConfigIds:new Set,selectedRegistryConfigIds:void 0,registryConfigNamesById:new Map,oauthFailureCategoriesByConfigId:void 0,registryCredentialConfigs:new Map,registryCredentialConfigsById:new Map,lastStatusReport:void 0,diagnostics:[],pluginServerSource:void 0,pluginServerNames:new Set,pluginServerHosts:new Map,pluginReconcileQueue:Promise.resolve(),sessionPluginDisabledOverrides:new Map,sessionRegistryDisabledOverrides:new Map,sessionMcpConfigDisabledOverrides:new Map,currentLoad:void 0,ui:void 0,featureFlags:void 0,toolSearchLatched:!1,mcpCatalog:void 0,mcpAttachDisabled:!1,mcpAttachCloudSignaled:!1,catalogRefreshInFlight:void 0,attachResolvers:new Map,attachResultListenerBound:!1};return t[oa]=e,e}var sg=Symbol.for("__hermes_mcp_tool_registry__"),xA=Symbol.for("__hermes_mcp_extension_factory__");function ag(){let t=globalThis;return t[sg]??=new Map,t[sg]}function Tr(t){ag().set(t.name,t)}function cg(t,e){let r=ag();(e===void 0||r.get(t)===e)&&r.delete(t)}function ug(t){Reflect.set(t,xA,!0)}function aa(t,e,r,n){return r.includes(t)?n.includes(t)?`"${t}" is a built-in tool, not an MCP server. Call it directly.`:`Built-in tool "${t}" is not available (disabled).`:`MCP server "${t}" is not available (status: ${e??"unknown"}).`}function kA(t){if(t&&typeof t=="object"&&!Array.isArray(t))return t}function EA(t){let e=[];for(let r of t)r.type==="text"?e.push({type:"text",text:r.text}):e.push({type:"image",mimeType:r.mimeType,data:r.data});return e}function TA(t){let e=[];for(let r of t)r.type==="text"&&e.push(r.text);return e.join(`
9
9
  `).trim()}function td(t,e,r){if(t.isError){let o=TA(t.content);throw new Error(o||`MCP tool "${e}/${r}" reported an error`)}let n=EA(t.content);if(n.length>0)return{content:n,details:void 0};if(t.rawItemCount>0)throw new Error(`MCP server "${e}" returned a result with no usable content (${t.rawItemCount} content item(s), none in a recognized shape). This may indicate the server failed to produce output (e.g. missing credentials).`);return{content:[{type:"text",text:`[MCP tool "${e}/${r}" returned no content]`}],details:void 0}}async function dg(t){let e=t.getHost();if(!e||e.status!=="success")throw new Error(aa(t.serverName,e?.status,t.getAllToolNames(),t.getActiveToolNames()));let r=t.map.resolve(t.namespaced),n=kA(t.params),o=await e.callTool(r,n,t.signal);return td(o,t.serverName,r)}var AA=/[^a-zA-Z0-9_-]/g;function rd(t){return t.replace(AA,"_")}function MA(t,e){let r=rd(e),n=rd(t),o=`${r}_${n}`;return o.length<=64?o:o.slice(0,64)}var Ar=class{_serverName;_map=new Map;constructor(e){this._serverName=e}put(e){let r=MA(this._serverName,e),n=this._map.get(r),o=n!==void 0&&n!==e;return n===void 0&&this._map.set(r,e),{namespaced:r,collision:o}}resolve(e){let r=this._map.get(e);if(r)return r;let n=`_${rd(this._serverName)}`;return e.endsWith(n)?e.slice(0,e.length-n.length):e}};var ca=$A.child({prefix:"pi-mcp"});function ua(){return ee().toolRegistrationsByPi}function fg(t){let{pi:e,serverName:r,tool:n,map:o,namespaced:i}=t,s;try{s=IA.Unsafe(n.inputSchema??{})}catch(c){if(t.suppressDiagnostics){ca.warn("Skipping MCP stdio tool with invalid input schema; provider diagnostics are suppressed");return}ca.warn(`Skipping MCP tool "${r}/${n.name}": invalid input schema (${c instanceof Error?c.message:String(c)})`);return}let a=()=>ee().servers.get(r);return{name:i,label:n.name,description:n.description??"",parameters:s,execute:(c,u,d,l,f)=>dg({serverName:r,namespaced:i,map:o,getHost:a,getAllToolNames:()=>e.getAllTools().map(p=>p.name),getActiveToolNames:()=>e.getActiveTools(),params:u,signal:d})}}function nd(t,e,r,n){if(e.ownerByToolName.get(n)!==r)return;let o=t.getActiveTools().includes(n),i=r.definitionsByName?.get(n);e.ownerByToolName.delete(n),t.unregisterTool(n),cg(n,i),r.definitionsByName?.delete(n),OA(t,e,n,r,o)}function OA(t,e,r,n,o){let i=ee();for(let[s,a]of e.byServer){if(a===n||!a.registeredNames.has(r))continue;let c=i.servers.get(s);if(c===void 0||c!==a.host||c.status!=="success"||i.serverGenerations?.get(s)!==a.generation)continue;let u=new Ar(s);for(let d of c.listTools()){let{namespaced:l,collision:f}=u.put(d.name);if(f||l!==r)continue;let p=fg({pi:t,serverName:s,tool:d,map:u,namespaced:l,suppressDiagnostics:c.suppressesProviderDiagnostics});if(!p)return;lg(r,"mcp"),t.registerTool(p),Tr(p),a.definitionsByName??=new Map,a.definitionsByName.set(r,p),e.ownerByToolName.set(r,a),o?t.setActiveTools([...new Set([...t.getActiveTools(),r])]):t.setActiveTools(t.getActiveTools().filter(m=>m!==r));return}}}function zA(t,e){let r=ua(),n=r.get(t);n||(n={byServer:new Map,ownerByToolName:new Map},r.set(t,n));let o=ee().serverGenerations?.get(e.name),i=n.byServer.get(e.name);if(i?.host===e&&i.generation===o)return{registration:i,replaced:!1};if(i)for(let a of i.registeredNames)nd(t,n,i,a);let s={generation:o,host:e,map:new Ar(e.name),registeredNames:new Set,definitionsByName:new Map};return n.byServer.set(e.name,s),{registration:s,replaced:i!==void 0}}function od(t,e){let{registration:r,replaced:n}=zA(t,e),o=new Set(r.registeredNames),i=new Ar(e.name);r.map=i,r.registeredNames.clear();let s=e.name,a=0,c=[];for(let d of e.listTools()){let{namespaced:l,collision:f}=i.put(d.name);if(f){let m=i.resolve(l),h=e.suppressesProviderDiagnostics?"MCP stdio tool name collision; provider diagnostics are suppressed. Only the first tool will be available.":`Tool name collision detected in MCP server "${s}": "${d.name}" and "${m}" both map to "${l}". Only the first tool will be available.`,g=ee();g.diagnostics.some(w=>w.server===s&&(w.message===h||w.message.includes(`both map to "${l}"`)))||(ca.warn(h),g.diagnostics.push({server:s,message:h}));continue}let p=fg({pi:t,serverName:s,tool:d,map:i,namespaced:l,suppressDiagnostics:e.suppressesProviderDiagnostics});p&&(lg(l,"mcp"),t.registerTool(p),Tr(p),r.definitionsByName??=new Map,r.definitionsByName.set(l,p),ua().get(t)?.ownerByToolName.set(l,r),r.registeredNames.add(l),c.push(l),a+=1)}let u=ua().get(t);for(let d of o)!r.registeredNames.has(d)&&u&&nd(t,u,r,d);n&&c.length>0&&t.setActiveTools([...new Set([...t.getActiveTools(),...c])]),a>0&&ca.info(`Registered ${a} MCP tool(s) from server "${s}"`)}function id(t,e,r){let n=ua().get(t);if(!n)return!1;let o=n.byServer.get(e.name);if(!o||o.host!==e||o.generation!==r)return!1;for(let i of o.registeredNames)nd(t,n,o,i);return n.byServer.delete(e.name),!0}function pg(t,e){for(let r of e.servers.values())r.status==="success"&&r.config.registrySource===void 0&&od(t,r)}import{getToolSource as GA}from"@augmentcode/auggie-v2";import{Type as NA}from"@sinclair/typebox";var DA=!1,hg=2e4;function LA(t){let e=JSON.stringify({name:t.name,description:t.description,inputSchema:t.inputSchema});return Math.ceil(e.length/4)}function jA(t){let e=0;for(let r of t.servers.values())e+=FA(r);return e}function FA(t){if(t.status!=="success")return 0;let e=new Ar(t.name),r=0;for(let n of t.listTools()){let{collision:o}=e.put(n.name);o||UA(n.inputSchema)&&(r+=LA(n))}return r}function UA(t){try{return NA.Unsafe(t??{}),!0}catch{return!1}}function qA(t){let e=t.featureFlags?.flags.cliMcpToolSearchAutoEnable;return typeof e=="boolean"?e:DA}function HA(t){let e=t.featureFlags?.flags.cliMcpToolSearchTokenThreshold;if(typeof e=="bigint"){let r=Number(e);return Number.isFinite(r)&&r>0?r:hg}return typeof e=="number"&&Number.isFinite(e)&&e>0?e:hg}function mg(t){return qA(t)?jA(t)>=HA(t):!1}var ZA="AUGGIE_ENABLE_TOOL_SEARCH",BA=new Set(["find-tool","execute-tool","attach-mcp-server"]);function di(){return process.env[ZA]==="1"}function Qn(t){return di()||t.toolSearchLatched?!0:mg(t)?(t.toolSearchLatched=!0,!0):!1}function da(t){let e=t.getActiveTools(),r=e.filter(n=>!WA(n)||BA.has(n));r.length!==e.length&&t.setActiveTools(r)}function WA(t){return GA(t)==="mcp"}import{setToolSource as Rg}from"@augmentcode/auggie-v2";import{logger as pM}from"@hermes/logger";import{Type as Cg}from"@sinclair/typebox";import{logger as VA}from"@hermes/logger";var li={UNSPECIFIED:0,NONE:1,OAUTH:2,API_KEY:3},an={UNSPECIFIED:0,CLI:1,CLOUD_AGENT:2};var gg=VA.child({prefix:"pi-mcp"}),KA=5e3,JA=1,YA=2,XA=new Set(["AVAILABLE","MCP_CATALOG_ENTRY_STATE_AVAILABLE"]),QA=new Set(["OPT_IN_REQUIRED","MCP_CATALOG_ENTRY_STATE_OPT_IN_REQUIRED"]);function eM(t){if(typeof t=="number")return t===2||t===3;if(typeof t=="string"){let e=t.toUpperCase();return e.includes("OAUTH")||e.includes("API_KEY")}return!1}function tM(t){return t===JA||typeof t=="string"&&XA.has(t)?"available":t===YA||typeof t=="string"&&QA.has(t)?"opt_in_required":"unknown"}function rM(t){if(!(typeof t.id!="string"||t.id.length===0))return{id:t.id,name:typeof t.name=="string"&&t.name.length>0?t.name:t.id,description:typeof t.description=="string"?t.description:"",requiresAuth:eM(t.auth_type),state:tM(t.state)}}function sd(t,e){if(t.servers.has(e.name))return!0;for(let r of t.servers.values())if(r.config?.id===e.id)return!0;return!1}function cn(t){return(t.mcpCatalog??[]).filter(r=>(r.state==="available"||r.state==="opt_in_required")&&!sd(t,r))}async function yg(t,e,r){let n=t.apiUrl.replace(/\/+$/,""),o=e??fetch;try{let i=await o(`${n}/settings/get-mcp-catalog-metadata`,{method:"POST",headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({product_type:an.UNSPECIFIED}),signal:AbortSignal.timeout(r??KA)});if(!i.ok)return gg.debug(`MCP catalog fetch failed with ${i.status}; treating catalog as empty`),{ok:!1,disable:i.status===404};let s=await i.json(),a=[];for(let c of s.entries??[]){let u=rM(c);u!==void 0&&a.push(u)}return{ok:!0,entries:a}}catch(i){return gg.debug(`MCP catalog fetch failed: ${i instanceof Error?i.message:String(i)}`),{ok:!1,disable:!1}}}var nM="AUGGIE_TOOL_SEARCH_FIND_TOOL_PROMPT",oM=`You are a tool search assistant. Given a user's query and a list of available tools, identify the single best matching tool.
10
10
 
11
11
  <user_query>{{query}}</user_query>
@@ -98,7 +98,7 @@ ${R}`,l++;break;case"id":u=R.includes("\0")?void 0:R;break;case"retry":/^\d+$/.t
98
98
  `}var QU=Dh.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function iu(){let t={};for(let e of QU){let r=Dh.env[e];r!==void 0&&(r.startsWith("()")||(t[e]=r))}return t}var ou=class{constructor(e){this._stderrStream=null,this._serverParams=e,this._readBuffer=new nu({maxBufferSize:e.maxBufferSize}),(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new XU)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{this._process=(0,xx.default)(this._serverParams.command,this._serverParams.args??[],{env:{...iu(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:Dh.platform==="win32",cwd:this._serverParams.cwd}),this._process.on("error",n=>{r(n),this.onerror?.(n)}),this._process.on("spawn",()=>{e()}),this._process.on("close",n=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",n=>{this.onerror?.(n)}),this._process.stdout?.on("data",n=>{try{this._readBuffer.append(n),this.processReadBuffer()}catch(o){this.onerror?.(o),this.close().catch(()=>{})}}),this._process.stdout?.on("error",n=>{this.onerror?.(n)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){return this._stderrStream?this._stderrStream:this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){if(this._process){let e=this._process;this._process=void 0;let r=new Promise(n=>{e.once("close",()=>{n()})});try{e.stdin?.end()}catch{}if(await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())]),e.exitCode===null){try{e.kill("SIGTERM")}catch{}await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())])}if(e.exitCode===null)try{e.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send(e){return new Promise(r=>{if(!this._process?.stdin)throw new Error("Not connected");let n=Px(e);this._process.stdin.write(n)?r():this._process.stdin.once("drain",r)})}};var Mx=Ys(Ax(),1);function $x(t){if(t)try{return Mx.default.parse(t).type}catch{let e=(t.split(";",1)[0]??"").trim().toLowerCase();return e===""||t.slice(e.length).includes(",")?void 0:e}}var su=class extends TransformStream{constructor({onError:e,onRetry:r,onComment:n,maxBufferSize:o}={}){let i;super({start(s){i=Jc({onEvent:a=>{s.enqueue(a)},onError(a){typeof e=="function"&&e(a),(e==="terminate"||a.type==="max-buffer-size-exceeded")&&s.error(a)},onRetry:r,onComment:n,maxBufferSize:o})},transform(s){i.feed(s)}})}};var cq={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},Lt=class extends Error{constructor(e,r){super(`Streamable HTTP error: ${r}`),this.code=e}},au=class{constructor(e,r){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=r?.requestInit,this._authProvider=r?.authProvider,this._fetch=r?.fetch,this._fetchWithInit=eu(r?.fetch,r?.requestInit),this._sessionId=r?.sessionId,this._reconnectionOptions=r?.reconnectionOptions??cq}async _authThenStart(){if(!this._authProvider)throw new Ze("No auth provider");let e;try{e=await gr(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(r){throw this.onerror?.(r),r}if(e!=="AUTHORIZED")throw new Ze;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let n=await this._authProvider.tokens();n&&(e.Authorization=`Bearer ${n.access_token}`)}this._sessionId&&(e["mcp-session-id"]=this._sessionId),this._protocolVersion&&(e["mcp-protocol-version"]=this._protocolVersion);let r=Ho(this._requestInit?.headers);return new Headers({...e,...r})}async _startOrAuthSse(e){let{resumptionToken:r}=e;try{let n=await this._commonHeaders();n.set("Accept","text/event-stream"),r&&n.set("last-event-id",r);let o=await(this._fetch??fetch)(this._url,{method:"GET",headers:n,signal:this._abortController?.signal});if(!o.ok){if(await o.body?.cancel(),o.status===401&&this._authProvider)return await this._authThenStart();if(o.status===405)return;throw new Lt(o.status,`Failed to open SSE stream: ${o.statusText}`)}this._handleSseStream(o.body,e,!0)}catch(n){throw this.onerror?.(n),n}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let r=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,o=this._reconnectionOptions.maxReconnectionDelay;return Math.min(r*Math.pow(n,e),o)}_scheduleReconnection(e,r=0){let n=this._reconnectionOptions.maxRetries;if(r>=n){this.onerror?.(new Error(`Maximum reconnection attempts (${n}) exceeded.`));return}let o=this._getNextReconnectionDelay(r);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(i=>{this.onerror?.(new Error(`Failed to reconnect SSE stream: ${i instanceof Error?i.message:String(i)}`)),this._scheduleReconnection(e,r+1)})},o)}_handleSseStream(e,r,n){if(!e)return;let{onresumptiontoken:o,replayMessageId:i}=r,s,a=!1,c=!1;(async()=>{try{let d=e.pipeThrough(new TextDecoderStream).pipeThrough(new su({onRetry:p=>{this._serverRetryMs=p}})).getReader();for(;;){let{value:p,done:m}=await d.read();if(m)break;if(p.id&&(s=p.id,a=!0,o?.(p.id)),!!p.data&&(!p.event||p.event==="message"))try{let h=Fr.parse(JSON.parse(p.data));_n(h)&&(c=!0,i!==void 0&&(h.id=i)),this.onmessage?.(h)}catch(h){this.onerror?.(h)}}(n||a)&&!c&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:s,onresumptiontoken:o,replayMessageId:i},0)}catch(d){if(this.onerror?.(new Error(`SSE stream disconnected: ${d}`)),(n||a)&&!c&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:s,onresumptiontoken:o,replayMessageId:i},0)}catch(p){this.onerror?.(new Error(`Failed to reconnect: ${p instanceof Error?p.message:String(p)}`))}}})()}async start(){if(this._abortController)throw new Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new Ze("No auth provider");if(await gr(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ze("Failed to authorize")}async close(){this._reconnectionTimeout&&(clearTimeout(this._reconnectionTimeout),this._reconnectionTimeout=void 0),this._abortController?.abort(),this.onclose?.()}async send(e,r){try{let{resumptionToken:n,onresumptiontoken:o}=r||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:Ui(e)?e.id:void 0}).catch(p=>this.onerror?.(p));return}let i=await this._commonHeaders();i.set("content-type","application/json"),i.set("accept","application/json, text/event-stream");let s={...this._requestInit,method:"POST",headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},a=await(this._fetch??fetch)(this._url,s),c=a.headers.get("mcp-session-id");if(c&&(this._sessionId=c),!a.ok){let p=await a.text().catch(()=>null);if(a.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new Lt(401,"Server returned 401 after successful authentication");let{resourceMetadataUrl:m,scope:h}=Go(a);if(this._resourceMetadataUrl=m,this._scope=h,await gr(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ze;return this._hasCompletedAuthFlow=!0,this.send(e)}if(a.status===403&&this._authProvider){let{resourceMetadataUrl:m,scope:h,error:g}=Go(a);if(g==="insufficient_scope"){let v=a.headers.get("WWW-Authenticate");if(this._lastUpscopingHeader===v)throw new Lt(403,"Server returned 403 after trying upscoping");if(h&&(this._scope=h),m&&(this._resourceMetadataUrl=m),this._lastUpscopingHeader=v??void 0,await gr(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!=="AUTHORIZED")throw new Ze;return this.send(e)}}throw new Lt(a.status,`Error POSTing to endpoint: ${p}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,a.status===202){await a.body?.cancel(),pb(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(p=>this.onerror?.(p));return}let d=(Array.isArray(e)?e:[e]).filter(p=>"method"in p&&"id"in p&&p.id!==void 0).length>0,l=a.headers.get("content-type"),f=$x(l);if(d)if(f==="text/event-stream")this._handleSseStream(a.body,{onresumptiontoken:o},!1);else if(f==="application/json"){let p=await a.json(),m=Array.isArray(p)?p.map(h=>Fr.parse(h)):[Fr.parse(p)];for(let h of m)this.onmessage?.(h)}else throw await a.body?.cancel(),new Lt(-1,`Unexpected content type: ${l}`);else await a.body?.cancel()}catch(n){throw this.onerror?.(n),n}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),r={...this._requestInit,method:"DELETE",headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,r);if(await n.body?.cancel(),!n.ok&&n.status!==405)throw new Lt(n.status,`Failed to terminate session: ${n.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,r){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:r?.onresumptiontoken})}};function Ix(t){if(!t.useShellInterpolation)return{command:t.command,args:t.args};let e=[t.command,...t.args].join(" ");return process.platform==="win32"?{command:"cmd.exe",args:["/c",e]}:{command:"/bin/sh",args:["-c",e]}}var dq={NO_UPDATE_NOTIFIER:"1",npm_config_update_notifier:"false",npm_config_loglevel:"silent",npm_config_fund:"false",npm_config_audit:"false",npm_config_yes:"true",CI:"1"};function Ox(t){return{...iu(),...dq,...t??{}}}function zx(){return iu()}var jh=class t extends ou{static MAX_CAPTURED_LINES=100;static MAX_LINE_BUFFER_CHARS=16384;static MAX_LOG_HISTORY=1e3;_captured=[];_lineBuffer="";_logHistory=[];suppressStderr;constructor(e,r=!1){super(e),this.suppressStderr=r}async start(){await super.start();let e=this.stderr;e&&e.on("data",r=>this.ingestStderr(r))}ingestStderr(e){if(this.suppressStderr)return;this._lineBuffer+=e.toString();let r=this._lineBuffer.split(`
99
99
  `);this._lineBuffer=r.at(-1)??"",this._lineBuffer.length>t.MAX_LINE_BUFFER_CHARS&&(this._lineBuffer=this._lineBuffer.slice(-t.MAX_LINE_BUFFER_CHARS));for(let n of r.slice(0,-1))this.pushCapturedLine(`${n}
100
100
  `)}pushCapturedLine(e){this._captured.push(e),this._captured.length>t.MAX_CAPTURED_LINES&&this._captured.shift(),this._logHistory.push(e),this._logHistory.length>t.MAX_LOG_HISTORY&&this._logHistory.shift()}consumeStderr(){this._lineBuffer.length>0&&(this.pushCapturedLine(this._lineBuffer),this._lineBuffer="");let e=this._captured.join("");return this._captured=[],e}getLogHistory(){return[...this._logHistory]}};function Nx(t){let e={command:t.command,args:t.args,env:t.env,stderr:"pipe",...t.cwd?{cwd:t.cwd}:{}};return new jh(e,t.suppressStderr)}var Un=class extends Error{status;transport;operation;constructor(e){super(`MCP ${e.transport} ${e.operation} request failed with HTTP ${e.status}`),this.status=e.status,this.transport=e.transport,this.operation=e.operation}},Fh=new uq;function Uh(t,e){return Fh.run(t,e)}function lq(t){Fh.getStore()?.onFailure?.(t)}function Dx({getHeaders:t,transport:e,validateUrl:r}){if(t)return async(n,o)=>{r?.(n instanceof Request?n.url:String(n));let i=n instanceof Request?n.headers:void 0,s=new Headers(i);for(let[d,l]of new Headers(o?.headers).entries())s.set(d,l);for(let[d,l]of Object.entries(t()))s.set(d,l);let a=await fetch(n,{...o,headers:s,...r?{redirect:"error"}:{}});if(a.ok||o?.method?.toUpperCase()!=="POST")return a;await a.body?.cancel().catch(()=>{});let c=Fh.getStore(),u=new Un({status:a.status,transport:e,operation:c?.operation??"transport"});throw lq(u),u}}function Lx(t,e){let r=Dx({getHeaders:e.getHeaders,validateUrl:e.validateUrl,transport:"http"});return new au(new URL(t),{requestInit:{headers:{...e.headers}},...r?{fetch:r}:{}})}function jx(t,e){let r=Dx({getHeaders:e.getHeaders,validateUrl:e.validateUrl,transport:"sse"});return new tu(new URL(t),{requestInit:{headers:{...e.headers}},...r?{fetch:r}:{}})}function Fx(){return new Kc({name:"hermes-mcp-client",version:"0.1.0"},{capabilities:{}})}var Ux=Vi,qx=Te;function Ct(t){return t instanceof Un&&t.status===401||(t instanceof Lt||t instanceof qs)&&t.code===401}function Hx(t){return t instanceof M&&t.code===$.MethodNotFound}function qh(t){return t instanceof Error&&t.name==="ZodError"&&Array.isArray(t.issues)}var fq=["ECONNRESET","ECONNREFUSED","socket hang up","EPIPE","ETIMEDOUT"];function Gx(t){if(t instanceof M&&(t.code===$.RequestTimeout||t.code===$.ConnectionClosed))return!0;let e=t instanceof Error?t.message:String(t);return fq.some(r=>e.includes(r))}function Zx(t){return t instanceof M&&(t.code===$.MethodNotFound||t.code===$.InvalidRequest)}function Hh(t){return t instanceof Un&&t.transport==="http"&&t.status===404||t instanceof Lt&&t.code===404}var Y=pq.child({prefix:"pi-mcp"});function hq(t,e){return t.name===e.name&&(t.description??"")===(e.description??"")&&JSON.stringify(t.inputSchema??{})===JSON.stringify(e.inputSchema??{})}function mq(t,e){return t.length===e.length&&t.every((r,n)=>{let o=e[n];return o!==void 0&&hq(r,o)})}var gq=new RegExp("\x1B\\[[0-9;]*[a-zA-Z]","g"),yq=/^Node\.js v\d/,vq=/^[\w$.]*error[\w$]*:/i,Bx=400,_q=63e3,Wx=3,Sq=/[\\/]lib[\\/]cli\.js/,wq="npx/npm launcher is broken in this environment (Cannot find module .../lib/cli.js). This usually means npm/npx/corepack are file copies instead of symlinks in the base image; every npx-launched stdio MCP server will fail until the launcher symlinks are restored.",Qx=Symbol("mcpReinitReported");function bq(t){typeof t=="object"&&t!==null&&Object.defineProperty(t,Qx,{value:!0,enumerable:!1,configurable:!0})}function Rq(t){return typeof t=="object"&&t!==null&&t[Qx]===!0}function Cq(t){let e=t.filter(a=>!yq.test(a)),r=e.length>0?e:t;if(r.length===0)return;if(r.some(a=>Sq.test(a))&&r.some(a=>a.includes("MODULE_NOT_FOUND")||a.includes("Cannot find module")))return wq;let o=r.findIndex(a=>vq.test(a)),s=(o===-1?r.slice(-Wx):r.slice(o,o+Wx)).join(" / ");return s.length>Bx?`${s.slice(0,Bx)}\u2026`:s}function Pq(t,e){if(!e)return t;try{let r=e.consumeStderr();if(!r.trim())return t;let n=r.replace(gq,"").split(`
101
- `).map(i=>i.trim()).filter(i=>i.length>0),o=Cq(n);return o?t?`${t}: ${o}`:o:t}catch{return t}}var xq=6e5,kq=18e5,Vx=2147483647,Eq=3e4,Kx=1e4,ek=[250,1e3,2e3],qn=class extends Error{constructor(){super("MCP OAuth refresh is temporarily unavailable"),this.name="RefreshUnavailableError"}},Hs=class extends Error{retryable=!0;constructor(){super("MCP authentication refresh is pending in the backend; retry shortly"),this.name="BackendRefreshPendingError"}},Tq=250,Jx=3,Aq=[200,500];function Mq(t){for(let e of Object.values(t))if(Ir(e))return!0;return!1}function Gh(t){let e=new Set;for(let r of t.matchAll(Ci))e.add(Ta(r[0]));return[...e].sort()}function Zh(t){return[...new Set(t)].sort()}function Yx(t,e){return jy(e.map(r=>t?.[r]??"missing"))}function $q({source:t,sourceHasSecretRef:e,command:r,commandHasSecretRef:n,args:o}){return Zh([...e&&t?Pi(t):[],...n&&r?Gh(r):[],...o.flatMap(Gh)])}var cu="${augmentToken}";function Iq(t){try{let e=new URL(t);if(e.protocol!=="https:")return!1;let{hostname:r}=e;return r==="augmentcode.com"||r.endsWith(".augmentcode.com")}catch{return!1}}function Oq(t){try{let e=new URL(t);return`${e.protocol}//${e.hostname}`}catch{return"<invalid URL>"}}var tk="(unknown uri)",Bh="unknown",Xx=/=+$/,zq=/\s+/g,Nq=/[-_]/g,Dq=new Set(["image/jpeg","image/png","image/gif","image/webp"]);function Hn(t,e){return typeof t=="string"?t:e}function rk(t){return typeof t=="string"?Buffer.from(t,"base64").length:0}function Lq(t){let e=t.toLowerCase();return e.startsWith("text/")||e==="application/json"||e==="application/xml"||e.endsWith("+json")||e.endsWith("+xml")}function jq(t){let e=t.replace(zq,"").replace(Nq,i=>i==="-"?"+":"/"),r=Buffer.from(e,"base64"),n=e.replace(Xx,"");if(r.toString("base64").replace(Xx,"")!==n)return;let o=r.toString("utf-8");return o.length>0?o:void 0}function nk(t){return t.resource&&typeof t.resource=="object"?t.resource:void 0}function Fq(t){let e=nk(t);if(!e)return"[MCP resource with no contents]";if(typeof e.text=="string")return e.text;let r=Hn(e.uri,tk),n=Hn(e.mimeType,Bh);if(typeof e.blob=="string"&&Lq(n)){let i=jq(e.blob);if(i!==void 0)return i}let o=rk(e.blob);return`[MCP resource ${r} (${n}), ${o} bytes of binary content not shown]`}function Uq(t){let e=Hn(t.type,"unknown");if(e==="resource")return Fq(t);if(e==="audio"){let r=Hn(t.mimeType,Bh),n=rk(t.data);return`[MCP audio content (${r}), ${n} bytes not shown]`}if(e==="resource_link"){let r=Hn(t.uri,tk),n=Hn(t.name,""),o=Hn(t.mimeType,Bh);return`[MCP resource link ${n?`${n} `:""}${r} (${o})]`}return`[MCP content of unsupported type "${e}" was omitted]`}function qq(t){if(t.type!=="resource")return;let e=nk(t);if(!e)return;let{blob:r,mimeType:n}=e;if(typeof r=="string"&&typeof n=="string"&&Dq.has(n.toLowerCase()))return{type:"image",mimeType:n,data:r}}function Hq(t){if(t.type==="text"&&typeof t.text=="string")return{type:"text",text:t.text};if(t.type==="image"&&typeof t.data=="string"&&typeof t.mimeType=="string")return{type:"image",mimeType:t.mimeType,data:t.data};let e=qq(t);return e||{type:"text",text:Uq(t)}}function Gq(t){let e=[];if(!Array.isArray(t))return e;for(let r of t){if(typeof r!="object"||r===null)continue;let n=r;typeof n.type=="string"&&e.push(Hq(n))}return e}function Zq(t){return Ay(t,_q)}function ok(t,e){let r=Gq(t);if(r.length===0){let o=Zq(e);o!==void 0&&r.push({type:"text",text:o})}let n=0;return Array.isArray(t)?n=t.length:t!=null&&(n=1),{content:r,rawItemCount:n}}function Bq(t,e){let r=ok(e?.value(t.content),e?.value(t.structuredContent)),n=r.content.flatMap(o=>o.type==="text"?[{type:"text",text:e?.text(o.text)??""}]:[]);return n.length===0&&n.push({type:"text",text:"MCP stdio tool failed; no usable secret-free diagnostic content"}),{isError:!0,content:n,rawItemCount:r.rawItemCount}}var ik=new Set(["UND_ERR_SOCKET","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","ECONNREFUSED","ECONNRESET","EPIPE","ENOTFOUND","EAI_AGAIN","ETIMEDOUT"]),Wq=new Set([502,503,504]),Gs=ek.length+1,Vq=2;function Kq(t){let r=t?.cause?.code;if(typeof r=="string")return r;let n=t?.status;if(typeof n=="number")return String(n);let o=t?.code;return typeof o=="number"?String(o):void 0}function Jq(t){if(Ct(t)||Hh(t)||t instanceof mt)return;let e=t?.cause?.code;if(typeof e=="string")return ik.has(e)?{totalAttempts:Gs}:void 0;let r=t?.status??t?.code;return typeof r=="number"?r===524?{totalAttempts:Vq}:Wq.has(r)?{totalAttempts:Gs}:void 0:t instanceof TypeError&&t.message==="fetch failed"?{totalAttempts:Gs}:void 0}var Yq=80,Xq=10,Qq=/[^a-zA-Z0-9_.()-]/g,eH=new Set(["Error","McpError","McpSecretResolutionError","McpTransportClosedError","McpTransportFailure","MalformedRefreshResponseError","RefreshHttpError","SseError","StreamableHTTPError","TypeError","ZodError"]);function uu(t){return t.replace(Qq,"_").slice(0,Yq)||"unknown"}function tH(t){let e=Kq(t);if(e!==void 0&&(/^\d{3}$/.test(e)||ik.has(e)))return e}function Be(t){if(!(t instanceof Error))return"unknown";let e=t.constructor.name,r=eH.has(e)?e:"Error",n=tH(t);return n===void 0?r:`${r}(${n})`}function rH(t,e,r){return t instanceof mt?new mt(uu(t.serverName),t.missingKeys.slice(0,Xq).map(uu),void 0,t.reason).message:t instanceof Un?t.message:`MCP ${r} ${e} failed (${Be(t)})`}function Wo(t,e){let r=new Error(t);return Object.defineProperty(r,"name",{value:uu(e),configurable:!0}),r.stack=`${r.name}: ${t}`,r}var du=class extends Error{operation="transport";transport;kind;constructor(e,r){super(`MCP ${e} transport ${r}`),this.transport=e,this.kind=r}},lu=class{name;_config;_hostedCredentialProvenance;_client;_stdioTransport;_status;_lastError;_tools=[];_connectPromise;_connectStartedAt;_refreshPromise;_refreshPersisting=!1;_disposing=!1;_disposed=!1;_resolvedEnv;_resolvedHeaders;_resolvedCommand;_resolvedArgs;onStateChange;_lastEmittedState;_activeTransport;_reinitializingPromise;_inFlightCalls=new Set;_wedgeRecoveryOwners=new Set;_wedgePending=!1;_wedgeRequired=!1;_heartbeatTimer;_lastProbeResult;onWedged;onAuthRefreshNeeded;onAuthRefreshCleared;onToolsChanged;onToolsWithdraw;_targetAuth;_suppressStdioDiagnostics;_toolErrorRedactor;constructor(e,r){this._config=e,this._targetAuth=ee().targetMaterialStore?.auth(e),this._suppressStdioDiagnostics=e.type==="stdio"&&this._targetAuth?.credential!==void 0,this._hostedCredentialProvenance=r?Object.freeze({...r}):void 0,this.name=e.name,this._status=e.disabled?"disabled":"initializing"}_emitState(e,r){if(e!==this._lastEmittedState){this._lastEmittedState=e;try{this.onStateChange?.(e,r)}catch{}}}get targetCredentialProvenance(){return this._targetAuth?{credential:this._targetAuth.credential}:void 0}get status(){return this._status}get config(){return this._config}get hostedCredentialProvenance(){return this._hostedCredentialProvenance}get lastError(){return this._lastError}get suppressesProviderDiagnostics(){return this._suppressStdioDiagnostics}get connectStartedAt(){return this._connectStartedAt}get tools(){return this._tools}getLogHistory(){return this._suppressStdioDiagnostics?[]:this._stdioTransport?.getLogHistory().map(e=>Gd(e))??[]}connect(){return this._disposing||this._disposed||this._status==="disabled"?Promise.resolve():this._connectPromise?this._connectPromise:(this._connectStartedAt=Date.now(),this._emitState("connecting"),this._connectPromise=this._doConnect().catch(e=>{Y.warn(`MCP server "${this.name}" connect failed (${Be(e)})`)}),this._connectPromise)}async _doConnect(){let e;try{e=await this._connectWithRetries()}catch(r){if(this._disposed)return;let n=this._connectFailureMessage(r,"connect"),o=this._config.type==="stdio"&&!this._suppressStdioDiagnostics&&!Ct(r)?Gd(Pq(n,e??this._stdioTransport)):n;this._recordConnectFailure(r,"connect",o),this._emitState(this._status==="auth_required"?"auth_required":"failed",Be(r))}}async _connectWithRetries(){let e=Gs,r={available:!0};for(let n=1;n<=Gs;n++)try{let o=await this._attemptConnect(r);return n>1&&Y.info(`MCP server "${this.name}" connected on attempt ${n}/${e}`),o}catch(o){if(!r.available)throw o;let i=Jq(o);if(i===void 0||this._disposed||(e=Math.min(e,i.totalAttempts),n>=e))throw o;if(await this._backoffBeforeRetry(o,n,e),this._disposed)return}}async _backoffBeforeRetry(e,r,n){let i=(ek[r-1]??0)+Math.floor(Math.random()*(Tq+1));Y.warn(`MCP server "${this.name}" connect attempt ${r}/${n} failed with transient ${Be(e)}; retrying in ${i}ms`),await ln(i)}async _attemptConnect(e){let r=this._config;(r.type==="http"||r.type==="sse")&&await this._maybeProactiveRefresh(),this._expandAugmentToken(),await this._resolveSecretRefs();let n=!1;for(;;)try{return await this._initializeFreshClient(e)}catch(o){if(this._disposed)return;if(!n&&e.available&&this._canRecoverInitialization(o)){if(n=!0,await this._recoverStartupAuthentication(o,e)==="disposed")return;continue}throw o}}_canRecoverInitialization(e){return Ct(e)&&this.hasRefreshEligibleOAuthCredential()&&!!this._usableToken()?.refreshToken}async _recoverStartupAuthentication(e,r){if(r.available=!1,this._disposed)return"disposed";let n=await this._refreshTokenDeduped();if(this._disposed)return"disposed";if(n.kind==="refreshed")return"retry";throw n.kind==="transient_failure"?new qn:e}async _initializeFreshClient(e){let r=this._config,n=this._createTransport(),o=r.type==="stdio"?n:void 0;o&&(this._stdioTransport=o);let i=Fx();this._client=i;let s;try{if(await Uh({operation:"connect",onFailure:u=>{s=u}},()=>i.connect(n)),this._disposed)return await this._closeFailedInitialization(i,n),o;i.setNotificationHandler(Ux,()=>{Y.debug(`MCP server "${this.name}" sent tools/list_changed; refreshing tools`),this._refreshTools()});let a=await this._listToolsWithAuthRetry(e);if(this._disposed)return await this._closeFailedInitialization(i,n),o;this._tools=this._safeTools(a.tools??[]),this._status="success",this._lastError=void 0,this._emitState("connected"),this._wireLivenessHandlers(),this._startHeartbeat();let c=ee();return c.tokens.clearAuthRequired(this.name),(c.servers.get(this.name)===void 0||c.servers.get(this.name)===this)&&it(c,this.name),Y.info(`MCP server "${this.name}" connected (${this._tools.length} tool(s))`),o}catch(a){throw await this._closeFailedInitialization(i,n),s??a}}async _closeFailedInitialization(e,r){if(this._client===e){this._client=void 0,this._activeTransport===r&&(this._activeTransport=void 0);try{await e.close()}catch(n){Y.debug(`MCP server "${this.name}" close after failed connect attempt (${Be(n)})`)}}}_connectFailureMessage(e,r){return this._suppressStdioDiagnostics?"MCP stdio connection failed; provider diagnostics are suppressed to protect credentials":rH(e,r,this._config.type)}_recordConnectFailure(e,r,n=this._connectFailureMessage(e,r)){if(e instanceof mt){this._status="failed";let o=ee();ri(o,this.name,e.reason,rr(o,this.name,this._config.id))}else if(e instanceof Hs||e instanceof qn)this._status="failed";else if(Ct(e)&&this._isHostedAccessTokenOnly())this._status="failed",this.onAuthRefreshNeeded?.();else if(Ct(e)){this._status="auth_required";let o=ee(),i=o.servers.get(this.name);(i===void 0||i===this)&&o.tokens.markAuthRequired(this.name)}else{this._status="failed";let o=this._connectFailureMessage(e,r);Ea(Wo(o,Be(e)),{server:this.name,op:r,transport:this._config.type})}this._lastError=n,this._client=void 0}_createTransport(){let e=this._config,r=ee().targetMaterialStore;if(!this._targetAuth&&(r?.has(e.name)||e.id&&r?.has(e.id)))throw new Error("MCP target provenance is unavailable");switch(this._targetAuth?.headers(),e.type){case"stdio":{let n=Ix({...e,command:this._resolvedCommand??e.command,args:this._resolvedArgs??e.args}),o=Ox(this._resolvedEnv??e.env);return Nx({command:n.command,args:n.args,env:o,cwd:e.cwd,...this._suppressStdioDiagnostics?{suppressStderr:!0}:{}})}case"http":return this._createHttpTransport(e.url,this._resolvedHeaders??e.headers??{});case"sse":return jx(e.url,{headers:this._resolvedHeaders??e.headers??{},getHeaders:()=>this._buildAuthHeaders(),...this._targetAuth?{validateUrl:this._targetAuth.validateUrl}:{}});default:return e}}_createHttpTransport(e,r){let n=Lx(e,{headers:r,getHeaders:()=>this._buildAuthHeaders(),...this._targetAuth?{validateUrl:this._targetAuth.validateUrl}:{}});return this._activeTransport=n,n}async _resolveSecretRefs(){let e=this._config,r=e.type==="stdio"?e.env:this._resolvedHeaders??e.headers,n=r?Mq(r):!1,o=e.type==="stdio"&&Ir(e.command),i=e.type==="stdio"?e.args:[],s=i.some(Ir);if(!(n||o||s))return;let a=ee();if(!this._targetAuth&&!Ly(a)){let u=$q({source:r,sourceHasSecretRef:n,command:e.type==="stdio"?e.command:void 0,commandHasSecretRef:o,args:i});throw new mt(this.name,u)}let c=this._targetAuth?.getSecret??Ny(a);if(n&&r&&await this._resolveMapSecretRefs(r,c,e.type==="stdio"),o&&e.type==="stdio"&&(this._resolvedCommand=await this._resolveCommandSecretRefs(e.command,c,e.useShellInterpolation)),s){let u=[];for(let d of i)u.push(await this._resolveCommandSecretRefs(d,c,!1));this._resolvedArgs=u}}async _resolveMapSecretRefs(e,r,n){let o,i=new Set,s=async c=>{let u=await r(c);return this._suppressStdioDiagnostics&&typeof u=="string"&&i.add(u),u};try{o=await Uy({configEnv:e,localEnv:n&&!this._targetAuth?zx():{},getSecret:s})}catch(c){throw Y.error(`MCP server "${this.name}" secret resolution failed (${Be(c)})`),new mt(this.name,Pi(e),c,"transient")}let a=Zh([...o.unresolvedKeys,...o.emptyKeys]);if(a.length>0)throw new mt(this.name,a,void 0,Yx(o.failureReasons,a));if(this._targetAuth){if(this._disposed)return;this._targetAuth.headers()}n?(this._suppressStdioDiagnostics&&(this._toolErrorRedactor=Ey(i)),this._resolvedEnv=o.resolved):this._resolvedHeaders=o.resolved}async _resolveCommandSecretRefs(e,r,n){let o;try{o=await qy(e,r,n)}catch(s){throw Y.error(`MCP server "${this.name}" command secret resolution failed (${Be(s)})`),new mt(this.name,Gh(e),s,"transient")}let i=Zh([...o.unresolvedKeys,...o.emptyKeys]);if(i.length>0)throw new mt(this.name,i,void 0,Yx(o.failureReasons,i));return o.resolved}_expandAugmentToken(){if(this._targetAuth)return;let e=this._config;if(e.type!=="http"&&e.type!=="sse")return;let r=e.headers;if(!r||!Object.values(r).some(s=>s.includes(cu)))return;let o;if(Iq(e.url)){let s=ee().credentials?.apiKey;s?o=s:this._recordTokenDiagnostic(`${cu} in a header but no Augment credentials are available; sending the literal placeholder`,"warn")}else this._recordTokenDiagnostic(`${cu} in a header is only expanded for https augmentcode.com / *.augmentcode.com URLs; "${Oq(e.url)}" does not qualify, sending the literal placeholder`,"error");if(o===void 0)return;let i={};for(let[s,a]of Object.entries(r))i[s]=a.replaceAll(cu,o);this._resolvedHeaders=i}_recordTokenDiagnostic(e,r){let n=ee();if(n.diagnostics.some(s=>s.server===this.name&&s.message===e))return;n.diagnostics.push({server:this.name,message:e});let i=`MCP server "${this.name}": ${e}`;r==="error"?Y.error(i):Y.warn(i)}_usableToken(){let e=ee();if(this._targetAuth||e.targetMaterialStore?.has(this.name)||this._config.id&&e.targetMaterialStore?.has(this._config.id))return;let r=e.tokens.get(this.name),n=e.preservedCredentialIdentities?.get(this.name);if(!(n&&!ft(n,this._config)))return r}_buildAuthHeaders(){if(this._targetAuth)return this._targetAuth.headers();let e=this._usableToken();return e?.accessToken?{Authorization:`Bearer ${e.accessToken}`}:{}}hasRefreshEligibleOAuthCredential(){let{config:e}=this;if(e.type!=="http"&&e.type!=="sse"||e.disabled||this._hostedCredentialProvenance!==void 0||!this._usableToken())return!1;if(e.auth==="oauth")return!0;let r=ee();return r.tokens.hasCredentialIdentity?.(this.name,qt(r,this))===!0}async _maybeProactiveRefresh(){let e=ee(),r=e.tokens,{config:n}=this;(n.type==="http"||n.type==="sse")&&await r.ensureLoaded?.(this.name,qt(e,this));let i=this._usableToken();i&&this.hasRefreshEligibleOAuthCredential()&&(i.accessToken&&!hd(i)||e.shouldProactivelyRefreshTokens&&(i.refreshToken?await this._refreshTokenDeduped():yi(i)&&e.tokens.markAuthRequired(this.name)))}refreshTokenIfPossible(){return this._refreshTokenDeduped()}getRefreshInFlight(){return this._refreshPromise}_refreshTokenDeduped(){if(this._disposing||this._disposed)return Promise.resolve({kind:"transient_failure"});let e=ee(),r=e.refreshes.get(this.name);if(r)return r.then(a=>a??{kind:"refreshed"});let n={state:e,tokenStore:e.tokens,serverGeneration:e.serverGenerations.get(this.name)??0,configRevision:e.configRevisions.get(this.name)??0,credential:e.credentialRevisions.get(this.name),localRefreshEnabled:e.shouldProactivelyRefreshTokens,failureScope:rr(e,this.name,this._config.id),token:this._usableToken(),hostWasUntracked:e.servers.get(this.name)===void 0},o=JSON.stringify([this.name,n.serverGeneration,n.configRevision,n.credential?.domain??null,n.credential?.revision??null]),i=e.refreshes.get(o);if(i)return i.then(a=>a??{kind:"refreshed"});let s=this._performTokenRefresh(n).finally(()=>{this._refreshPersisting=!1,e.refreshes.get(o)===s&&e.refreshes.delete(o),this._refreshPromise===s&&(this._refreshPromise=void 0)});return this._refreshPromise=s,e.refreshes.set(o,s),s}_ownsRefresh(e){let{state:r}=e,n=r.credentialRevisions.get(this.name),o=N(r,this.name)?.retirement?.incumbent.host,i=r.servers.get(this.name)===this||this._refreshPersisting&&o===this||e.hostWasUntracked&&r.servers.get(this.name)===void 0;return(!this._disposing||this._refreshPersisting)&&i&&(r.serverGenerations.get(this.name)??0)===e.serverGeneration&&(r.configRevisions.get(this.name)??0)===e.configRevision&&this._ownsRefreshCredential(e,n)&&(e.localRefreshEnabled===r.shouldProactivelyRefreshTokens||this._refreshPersisting)}_ownsRefreshCredential(e,r){return e.state.tokens===e.tokenStore&&e.tokenStore.get(this.name)===e.token&&r?.domain===e.credential?.domain&&r?.revision===e.credential?.revision}async _restoreAfterSupersededRefresh(e,r,n,o){let i=e.state.servers.get(this.name),s=e.state.tokens,a=s.get(this.name),c=e.state.credentialRevisions.get(this.name);if(s!==e.tokenStore||!i||!a||!ft(this._config,i.config))return;let u=qt(e.state,i),d=n===void 0&&u===void 0||Cr(n,u);try{if(a===e.token&&d){s.commit(this.name,r,n),on({state:e.state,name:this.name,revision:o});return}let l=await s.restoreAfterSupersededRefresh(this.name,r,a,n,o,u);if(!l||e.state.tokens!==s||e.state.servers.get(this.name)!==i||s.get(this.name)!==a||!Cr(qt(e.state,i),u)||e.state.credentialRevisions.get(this.name)?.revision!==c?.revision||e.state.credentialRevisions.get(this.name)?.domain!==c?.domain||s.reconcileCredentialIdentity?.(this.name,a,u)!==!0)return;on({state:e.state,name:this.name,revision:l});let f=e.state.currentLoad?.latestPi;f&&j(f,e.state)}catch{Y.error(`Failed to restore authoritative MCP OAuth token for "${this.name}" after superseded refresh`)}}_refreshFailureCategory(e,r){return r?"auth_terminal":e instanceof Z?"cannot_persist":"refresh_transient"}_handleRefreshFailure(e,r){let n=!(e instanceof Z)&&gd(e),o=this._ownsRefresh(r);return n&&o&&r.state.tokens.markAuthRequired(this.name),o&&ri(r.state,this.name,this._refreshFailureCategory(e,n),r.failureScope),Y.warn(`MCP server "${this.name}" token refresh failed (${n?"permanent \u2014 auth required":"transient \u2014 will retry"}, ${Be(e)})`),n&&o?{kind:"terminal_failure"}:{kind:"transient_failure"}}async _performTokenRefresh(e){if(!e.localRefreshEnabled)return{kind:"transient_failure"};if(!e.token?.refreshToken)return this._ownsRefresh(e)?(e.state.tokens.markAuthRequired(this.name),ri(e.state,this.name,"auth_terminal",e.failureScope),{kind:"terminal_failure"}):{kind:"transient_failure"};try{let r=qt(e.state,this),n=await e.tokenStore.captureRefreshIdentityVersion(r);if(!this._ownsRefresh(e))return{kind:"transient_failure"};let o=await yd(e.token);if(!this._ownsRefresh(e))return{kind:"transient_failure"};this._refreshPersisting=!0;let i=await e.tokenStore.persistRefresh(this.name,o,r,n);if(!this._ownsRefresh(e))return await this._restoreAfterSupersededRefresh(e,o,r,i),{kind:"transient_failure"};e.tokenStore.commit(this.name,o,r),on({state:e.state,name:this.name,revision:i}),it(e.state,this.name);let s=e.state.currentLoad?.latestPi;return s&&j(s,e.state),Y.debug(`MCP server "${this.name}" token refreshed`),{kind:"refreshed"}}catch(r){return this._handleRefreshFailure(r,e)}}_isSessionExpiredError(e){return this._config.type!=="http"||this._activeTransport?.sessionId===void 0?!1:Hh(e)}_reinitializeSession(){return this._reinitializingPromise===void 0&&(this._reinitializingPromise=this._doReinitializeSession().finally(()=>{this._reinitializingPromise=void 0})),this._reinitializingPromise}async _doReinitializeSession(){if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);if(this._config.type!=="http")throw new Error("Session re-initialization is only supported for Streamable HTTP servers");await this._client.close();let e=this._createHttpTransport(this._config.url,this._resolvedHeaders??this._config.headers??{});try{await this._client.connect(e)}catch(r){throw this._recordConnectFailure(r,"reinit"),r}Y.info(`MCP server "${this.name}" re-initialized session`)}async _withSessionRetry(e){if(this._config.type!=="http")return e();try{return await e()}catch(r){let n=this._isSessionExpiredError(r),o=this._reinitializingPromise!==void 0;if(!(n||o))throw r;Y.info(n?`MCP server "${this.name}" returned 404 (session expired); re-initializing and retrying`:`MCP server "${this.name}" call interrupted by a concurrent re-initialization; retrying once`);try{await this._reinitializeSession()}catch(i){throw Y.error(`MCP server "${this.name}" session re-initialization failed (${Be(i)})`),bq(r),r}return await e()}}_throwRefreshUnavailable(e,r,n){throw n&&!r?e:new qn}async _withAuthRetry(e,r,n){let o=this._config,i=ee(),s=rr(i,this.name,this._config.id),a=n?.call;if(o.type!=="http"&&o.type!=="sse")return e();let c=()=>(a&&(a.failure=void 0),Uh({operation:r,onFailure:a?u=>{a.failure=u}:void 0},e));try{let u=await c();return this._clearHostedAuthFailure(),u}catch(u){let d=a?.failure??u;if(this._disposed||!Ct(d))throw d;let l=n?.startupAuthRefreshBudget;if(this._isHostedAccessTokenOnly())throw this.onAuthRefreshNeeded?.(),new Hs;if(this._hostedCredentialProvenance!==void 0)throw new qn;if(!this.hasRefreshEligibleOAuthCredential())throw this._markAuthRequired(d,s),d;if(l&&!l.available)throw this._markAuthRequired(d,s),d;Y.debug(`MCP server "${this.name}" got 401, attempting token refresh + retry`);let f=i.shouldProactivelyRefreshTokens;if(l){if(await this._recoverStartupAuthentication(d,l)==="disposed")throw d}else{let p=await this._refreshTokenDeduped();if(this._disposed)throw d;if(p.kind==="transient_failure"&&this._throwRefreshUnavailable(d,f,n?.preserveAuthErrorOnRefreshUnavailable===!0),p.kind==="terminal_failure")throw this._status="auth_required",d}try{let p=await c();return this._clearHostedAuthFailure(),p}catch(p){let m=a?.failure??p;throw Ct(m)&&this._markAuthRequired(m,s),m}}}_clearHostedAuthFailure(){this._isHostedAccessTokenOnly()&&this.onAuthRefreshCleared?.()}_isHostedAccessTokenOnly(){return this._targetAuth?(this._config.type==="http"||this._config.type==="sse")&&this._config.auth==="oauth"&&this._targetAuth.credential!==void 0:this._hostedCredentialProvenance?.kind==="accepted"&&this._hostedCredentialProvenance.hostedAccessTokenOnly}_markAuthRequired(e,r){let n=ee();ri(n,this.name,"auth_terminal",r)&&(this._status="auth_required",n.tokens.markAuthRequired(this.name),this._emitState("auth_required",Be(e)),Y.warn(`MCP server "${this.name}" still 401 after refresh \u2014 auth_required`))}_wireLivenessHandlers(){let e=this._client;e&&(e.onclose=()=>{this._handleTransportClosed(new du(this._config.type,"closed"))},e.onerror=()=>{this._handleTransportClosed(new du(this._config.type,"error"))})}_startHeartbeat(){this._heartbeatTimer===void 0&&(this._heartbeatTimer=setInterval(()=>{this._sendHeartbeat()},Eq),this._heartbeatTimer.unref?.())}_stopHeartbeat(){this._heartbeatTimer!==void 0&&(clearInterval(this._heartbeatTimer),this._heartbeatTimer=void 0)}async probe(){let e=ee(),r=rr(e,this.name,this._config.id),n=await this._runProbe();for(let s=2;s<=Jx&&n.outcome==="transient";s++)await ln(Aq[s-2]??0),n=await this._runProbe();let o=rr(e,this.name,this._config.id),i=o.serverGeneration===r.serverGeneration&&o.mcpConfigId===r.mcpConfigId&&o.credentialRevision===r.credentialRevision&&o.credentialRevisionDomain===r.credentialRevisionDomain;return i&&n.outcome==="alive"&&it(e,this.name,r),i&&(n.outcome==="alive"||n.outcome==="authFailure")?this._lastProbeResult=n:n.outcome==="inconclusive"?Y.warn(`MCP server "${this.name}" startup verification ping was inconclusive; leaving handshake status intact: ${n.error}`):n.outcome==="transient"&&Y.debug(`MCP server "${this.name}" startup verification ping remained transient after ${Jx} attempts; not caching as failed: ${n.error}`),n}getLastProbeResult(){return this._lastProbeResult}async _runProbe(){let e=!this._client||this._disposed;if(e)return{ok:!1,outcome:"transient",error:"MCP client is not available",isAuthError:!1};try{return await this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.ping({timeout:Kx})},"ping",{preserveAuthErrorOnRefreshUnavailable:!0}),{ok:!0,outcome:"alive"}}catch(r){let n=this._classifyProbeError(r,e);if(n==="alive")return{ok:!0,outcome:"alive"};let o=`MCP startup verification failed (${Be(r)})`,i=`MCP server "${this.name}" failed startup verification ping (${n}): ${o}`;return n==="transient"?Y.debug(i):Y.warn(i),{ok:!1,outcome:n,error:o,isAuthError:n==="authFailure"}}}_classifyProbeError(e,r){return r||!this._client||this._disposed||this._reinitializingPromise!==void 0?"transient":Hx(e)||qh(e)?"alive":Ct(e)?"authFailure":Gx(e)?"transient":"inconclusive"}async _sendHeartbeat(){if(this._inFlightCalls.size===0||this._reinitializingPromise)return;let e=this._client;if(!(!e||this._disposed))try{await e.ping({timeout:Kx})}catch(r){if(this._reinitializingPromise||this._disposed||qh(r))return;Y.warn(`MCP server "${this.name}" failed liveness ping; in-flight tool calls are treated as wedged`),this._failInFlightCalls(new Error(`MCP server "${this.name}" is unresponsive (liveness ping failed)`))}}_handleTransportClosed(e){this._reinitializingPromise||this._disposed||(this._stopHeartbeat(),this._failInFlightCalls(e))}_wedgeRecoveryOwnership(e){let r=e.failure;return Ct(r)?(this._wedgeRecoveryOwners.add(e),"recoverable"):this._isSessionExpiredError(r)?(e.sessionRecoveryOwned=!0,this._wedgeRecoveryOwners.add(e),"recoverable"):this._wedgeRecoveryOwners.has(e)?"owned":"none"}_settleInFlightCall(e,r,n){let o=this._releaseWedgeRecoveryOwner(e,r,n);e.failure=void 0,this._inFlightCalls.delete(e),o&&this.onWedged?.()}_releaseWedgeRecoveryOwner(e,r,n){if(!this._wedgeRecoveryOwners.delete(e)||(!r&&e.sessionRecoveryOwned&&!Ct(n)&&(this._wedgeRequired=!0),this._wedgeRecoveryOwners.size!==0))return!1;let o=this._wedgePending&&this._wedgeRequired;return this._wedgePending=!1,this._wedgeRequired=!1,o}_failInFlightCalls(e,r=!0){let n=[...this._inFlightCalls].filter(c=>!c.livenessRejected);if(n.length===0)return;if(!r){for(let c of n)c.livenessRejected=!0,c.reject(e);Y.warn(`MCP server "${this.name}" failing ${n.length} in-flight tool call(s)`);return}let o=n.map(c=>({call:c,state:this._wedgeRecoveryOwnership(c)})),i=o.some(({state:c})=>c==="recoverable"),s=!1;for(let{call:c,state:u}of o)u==="recoverable"||u==="owned"&&i||(c.livenessRejected=!0,s=!0,c.reject(c.failure??e));let a=n.filter(c=>c.livenessRejected).length;Y.warn(`MCP server "${this.name}" failing ${a} in-flight tool call(s)`),this._wedgeRecoveryOwners.size>0?(this._wedgePending=!0,this._wedgeRequired||=s):s&&this.onWedged?.()}_listToolsWithAuthRetry(e){return this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.listTools()},"list_tools",{startupAuthRefreshBudget:e})}async _refreshTools(){if(!(this._disposed||this._status!=="success"||!this._client))try{let e=await this._listToolsWithAuthRetry();if(this._disposed)return;let r=this._safeTools(e.tools??[]),n=!mq(this._tools,r);if(this._tools=r,n){Y.info(`MCP server "${this.name}" tool list updated (${r.length} tool(s))`);try{this.onToolsChanged?.()}catch(o){Y.warn(`MCP server "${this.name}" onToolsChanged handler threw (${Be(o)})`)}}}catch(e){Y.warn(`MCP server "${this.name}" tools/list_changed refresh failed (${Be(e)}), keeping cached tools`)}}_safeTools(e){return this._suppressStdioDiagnostics?this._toolErrorRedactor?e.filter(r=>JSON.stringify(this._toolErrorRedactor?.value(r))===JSON.stringify(r)):[]:e}listTools(){return this._tools}async callTool(e,r,n){if(this._disposing||this._disposed)throw new Error(`MCP server "${this.name}" is being disposed`);if(this._status!=="success"||!this._client)throw new Error(`MCP server "${this.name}" is not connected (status: ${this._status})`);if(this._config.timeoutMs!==void 0&&this._config.timeoutMs>Vx)throw new Error(`MCP server "${this.name}" timeoutMs is too large: ${this._config.timeoutMs}, max is ${Vx}.`);let o=this._toolErrorRedactor,s={timeout:this._config.timeoutMs??xq,signal:n,resetTimeoutOnProgress:!0,maxTotalTimeout:this._config.timeoutMs??kq,onprogress:l=>{this._suppressStdioDiagnostics||Y.debug(`MCP server "${this.name}" tool "${e}" progress: ${l.progress}${l.total===void 0?"":`/${l.total}`}${l.message?` - ${l.message}`:""}`)}},a,c=new Promise((l,f)=>{a={reject:f,livenessRejected:!1,sessionRecoveryOwned:!1}});c.catch(()=>{}),a&&this._inFlightCalls.add(a);let d=this._withSessionRetry(()=>this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.callTool({name:e,arguments:r??{}},qx,s)},"tool_call",{call:a})).then(l=>(a&&this._settleInFlightCall(a,!0,void 0),l),l=>{throw a&&this._settleInFlightCall(a,!1,l),l});try{let l=await Promise.race([d,c]);if(this._suppressStdioDiagnostics&&l.isError===!0)return Bq({content:l.content,structuredContent:l.structuredContent},o);let f=ok(l.content,l.structuredContent);return{isError:l.isError===!0,content:f.content,rawItemCount:f.rawItemCount}}catch(l){return(n?.aborted||l instanceof Error&&l.name==="AbortError")&&this._throwCallCancellation(l),this._reportAndThrowToolError(l,e)}finally{a&&!this._wedgeRecoveryOwners.has(a)&&(a.failure=void 0,this._inFlightCalls.delete(a))}}_throwCallCancellation(e){throw this._suppressStdioDiagnostics?Wo("MCP stdio tool call cancelled","AbortError"):e}_reportAndThrowToolError(e,r){if(this._suppressStdioDiagnostics){let c=Wo("MCP stdio tool call failed; provider diagnostics are suppressed to protect credentials","Error");throw this._disposed||Ea(c,{server:this.name,op:"tool_call",transport:"stdio"}),c}if(e instanceof qn||e instanceof Hs)throw e;if(Ct(e))throw new Error(`Authentication failed for MCP server "${this.name}". Reconnect "${this.name}" in MCP settings before retrying this tool.`);let o=uu(r),i=Be(e),s=Zx(e)&&/[^a-zA-Z0-9_-]/.test(r)?` The tool name "${o}" contains characters that some servers do not support; letters, digits, underscores, and hyphens are portable.`:"",a=`MCP tool "${o}" failed (${i}).${s}`;throw Rq(e)||Ea(Wo(a,i),{server:this.name,op:"tool_call",transport:this._config.type,tool:o}),Wo(a,i)}beginDisposal(){this._disposing||this.onToolsWithdraw?.(),this._disposing=!0,this._disposed=!0,this._toolErrorRedactor=void 0,this._targetAuth&&(this._resolvedHeaders=void 0,this._resolvedEnv=void 0,this._resolvedCommand=void 0),this._stopHeartbeat(),this._failInFlightCalls(new Error(`MCP server "${this.name}" is being disposed`),!1),this._wedgeRecoveryOwners.clear(),this._wedgePending=!1,this._wedgeRequired=!1}async dispose(e){this.beginDisposal(),await this._refreshPromise,this._stopHeartbeat();let r=this._client;if(this._client=void 0,this._activeTransport=void 0,this._reinitializingPromise=void 0,this._wedgeRecoveryOwners.clear(),this._wedgePending=!1,this._wedgeRequired=!1,this._stdioTransport=void 0,!!r)try{await r.close()}catch(n){if(this._suppressStdioDiagnostics){let o=Wo("MCP stdio close failed","Error");if(Y.debug(o.message),e?.strict)throw o;return}if(Y.debug(`MCP server "${this.name}" close error: ${n instanceof Error?n.message:String(n)}`),e?.strict)throw n}}};var sk=oH.child({prefix:"pi-mcp"}),iH=3,sH=6e4;function aH(t,e){let r=Date.now(),n=r-sH,o=(t.restartHistory.get(e)??[]).filter(i=>i>=n);return o.length>=iH?(t.restartHistory.set(e,o),!1):(o.push(r),t.restartHistory.set(e,o),!0)}function ak(t){dn(t),da(t)}async function cH(t,e,r){if(!aH(e,t)){sk.warn(`MCP server "${t}" automatic restart rate-limited`);return}sk.warn(`MCP server "${t}" wedged; recycling transport`),await Yr(t,e,r)}function fu(t,e,r){if(uH(e)){ak(t);return}od(t,r),Qn(e)&&ak(t)}function uH(t){return di()||t.toolSearchLatched}function er(t,e,r){return qu(r,t.name,t)&&r.serverGenerations?.get(t.name)===e}function Wh(t,e){t.serverGenerations??=new Map;let r=(t.serverGenerations.get(e)??0)+1;return t.serverGenerations.set(e,r),t.statusFailureCategories??=new Map,it(t,e),t.authRefreshNeededReportKeys.delete(e),r}function dH(t){let{state:e,config:r,hostGeneration:n}=t;if(r.type!=="http"&&r.type!=="sse"||r.auth!=="oauth"||r.registrySource===void 0||r.id===void 0)return;let o=e.credentialRevisions.get(r.name),i=e.tokens.get(r.name),s=e.hostedCredentialOwnership?.get(r.name),a=o!==void 0&&s?.revision===o.revision,c=o!==void 0&&s?.domain===o.domain,u=o!==void 0&&s?.ownerDomain===o.ownerDomain,d=o!==void 0&&e.oauthCredentialDomains.get(r.name)===o.domain,l=o!==void 0&&Bm(o.domain,r.id,o.ownerDomain);return o!==void 0&&i!==void 0&&s!==void 0&&a&&c&&u&&d&&l?Object.freeze({kind:"accepted",configId:r.id,credentialRevision:o.revision,credentialRevisionDomain:o.domain,hostGeneration:n,hostedAccessTokenOnly:s.accessTokenOnly}):s===void 0&&e.shouldProactivelyRefreshTokens?void 0:Object.freeze({kind:"incomplete",configId:r.id,hostGeneration:n})}function Vh(t){let{state:e,config:r,generation:n}=t;return new lu(r,dH({state:e,config:r,hostGeneration:n}))}function We(t,e,r="base"){t.configRevisions??=new Map,t.configDesiredRevisions??=new Map,t.configDesiredSources??=new Map;let o=Math.max(t.configRevisions.get(e)??0,t.configDesiredRevisions.get(e)??0)+1;return t.configDesiredRevisions.set(e,o),t.configDesiredSources.set(e,r),o}function Kh(t,e){if(e.id&&e.registrySource!==void 0){let r={...e};t.registryConfigNamesById.set(e.id,e.name),t.registryCredentialConfigs.set(e.name,r),t.registryCredentialConfigsById.set(e.id,r)}}function Jh(t,e,r){return t.configDesiredRevisions.get(e)===r}function ck(t,e,r){return(t.configRevisions.get(e)??0)===r&&(t.configDesiredRevisions?.get(e)??r)===r}function Yh(t,e,r,n){t.onStateChange=(a,c)=>{if(!er(t,e,r))return;let u={server:t.name,state:a,...c===void 0?{}:{errorType:c}};n.events.emit(nH,u)},t.onWedged=()=>{if(!er(t,e,r))return;let a=r.currentLoad?.latestPi??n;cH(t.name,r,a)};let o=t.hostedCredentialProvenance,i=t.targetCredentialProvenance?.credential,s;i&&(t.config.type==="http"||t.config.type==="sse")&&t.config.auth==="oauth"?s={serverGeneration:e,mcpConfigId:t.config.id,credentialRevision:i.revision,credentialRevisionDomain:i.domain}:o?.kind==="accepted"&&o.hostedAccessTokenOnly&&(s={serverGeneration:o.hostGeneration,mcpConfigId:o.configId,credentialRevision:o.credentialRevision,credentialRevisionDomain:o.credentialRevisionDomain}),t.onAuthRefreshNeeded=()=>{if(!er(t,e,r)||!s)return;let a=JSON.stringify(s);r.statusFailureCategories.set(t.name,{category:"auth_refresh_needed",...s}),r.authRefreshNeededReportKeys.get(t.name)!==a&&(r.authRefreshNeededReportKeys.set(t.name,a),j(r.currentLoad?.latestPi??n,r))},t.onAuthRefreshCleared=()=>{if(!er(t,e,r)||!s)return;let a=r.statusFailureCategories.get(t.name);typeof a=="object"&&a.category==="auth_refresh_needed"&&it(r,t.name,s)&&j(r.currentLoad?.latestPi??n,r)},t.onToolsChanged=()=>{er(t,e,r)&&t.status==="success"&&fu(r.currentLoad?.latestPi??n,r,t)},t.onToolsWithdraw=()=>{let a=r.currentLoad?.latestPi??n;id(a,t,e),a!==n&&id(n,t,e)}}async function uk(t,e,r,n){let o=setTimeout(()=>{er(t,e,r)&&j(n(),r)},Xs);typeof o.unref=="function"&&o.unref();try{await t.connect()}finally{clearTimeout(o),er(t,e,r)&&j(n(),r)}}async function dk(t){let e=[...t.servers.values()].filter(r=>r.status==="success");e.length!==0&&await Promise.all(e.map(r=>r.probe()))}function pu(t,e){if(e.status!=="installed")return!1;let r=N(t,e.config.name);return r?.revision===e.leaseRevision&&r.host?.config===e.config}async function lH(t){let{state:e,config:r,displaced:n,retirement:o}=t;Kh(e,n.config),ai(e,r.name),n.beginDisposal?.();try{let i=Gu(n.config,r)?Promise.resolve():pt(e,r.name,n.config.id,n.config),a=(await Promise.allSettled([i,n.dispose({strict:!0})])).find(c=>c.status==="rejected");if(a)throw a.reason;ve({state:e,name:r.name,retirement:o,result:{status:"retired"}})}catch(i){throw ve({state:e,name:r.name,retirement:o,result:{status:"failed",error:i}}),i}}async function fH(t){let{state:e,server:r,owner:n,leaseRevision:o}=t,i=st({state:e,name:r.name,owner:n,revision:o,host:r});if(i){r.beginDisposal?.();try{await r.dispose({strict:!0}),ve({state:e,name:r.name,retirement:i,result:{status:"retired"}}),xe({state:e,name:r.name,owner:n,revision:o})}catch(s){throw ve({state:e,name:r.name,retirement:i,result:{status:"failed",error:s}}),s}}}async function pH(t){let{state:e,server:r,config:n,generation:o,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c}=t;return await r.connect(),er(r,o,e)?a?.(n)===!1?(await fH({state:e,server:r,owner:i,leaseRevision:s}),{status:"superseded",config:n}):(r.status==="success"&&fu(c(),e,r),j(c(),e),r.status==="failed"?{status:"unavailable",config:n,error:new Error(r.lastError??`MCP server "${n.name}" failed`)}:{status:"installed",config:n,leaseRevision:s}):{status:"superseded",config:n}}function hH(t){let{state:e,config:r,configRevision:n,pi:o,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c}=t,u=N(e,r.name);if(!Jh(e,r.name,n)||u?.revision!==s||a?.(r)===!1)return xe({state:e,name:r.name,owner:i,revision:s}),{status:"superseded",config:r};e.configRevisions.set(r.name,n);let d=Wh(e,r.name),l=Vh({state:e,config:r,generation:d});return Yh(l,d,e,o),ta({state:e,name:r.name,owner:i,revision:s,host:l})?{connection:pH({state:e,server:l,config:r,generation:d,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c})}:(xe({state:e,name:r.name,owner:i,revision:s}),{status:"superseded",config:r})}function mH(t){let{intent:e,state:r,pi:n,sourceOwnership:o,sourceKind:i,activePi:s}=t,{config:a,revision:c}=e;if(o?.(a)===!1||!Jh(r,a.name,c))return{status:"superseded",config:a};let u=r.servers.get(a.name),d=u?Q(r,a.name,u):N(r,a.name),l=Rr(a,i),f=ii({state:r,name:a.name,owner:l,expectedRevision:d?.revision,expectedHost:d?.host});if(!f)return{status:"collision",config:a};let p=f.lease.revision,m=()=>hH({state:r,config:a,configRevision:c,pi:n,owner:l,leaseRevision:p,sourceOwnership:o,activePi:s}),h=async()=>(f.displacedHost&&f.retirement?await lH({state:r,config:a,displaced:f.displacedHost,retirement:f.retirement}):await Uu(f.retirement),m());return f.retirement?h():m()}async function Ve(t,e,r,n,o,i){let s=()=>e.currentLoad?.latestPi??r,c=t.map(d=>({config:d,revision:o?.get(d.name)??We(e,d.name)})).map(async d=>{try{let l=await mH({intent:d,state:e,pi:r,sourceOwnership:n,sourceKind:i,activePi:s});return"connection"in l?l.connection:l}catch(l){return{status:"failed",config:d.config,error:l}}});if(c.length===0)return[];let u=setTimeout(()=>{j(s(),e)},Xs);typeof u.unref=="function"&&u.unref();try{return await Promise.all(c)}finally{clearTimeout(u)}}async function gH({name:t,state:e,pi:r,configRevision:n}){let o=e.servers.get(t);if(!o||e.servers.get(t)!==o||!ck(e,t,n))return!1;let i=o.config,s=Q(e,t,o);if(!qu(e,t,o))return!1;Kh(e,i),ai(e,t);let a=st({state:e,name:t,owner:s.owner,revision:s.revision,host:o});if(!a)return!1;o.beginDisposal?.();try{await o.dispose({strict:!0}),ve({state:e,name:t,retirement:a,result:{status:"retired"}})}catch(l){throw ve({state:e,name:t,retirement:a,result:{status:"failed",error:l}}),l}if(N(e,t)?.revision!==s.revision||!ck(e,t,n))return xe({state:e,name:t,owner:s.owner,revision:s.revision}),!1;let c=Wh(e,t),u=Vh({state:e,config:i,generation:c});if(Yh(u,c,e,r),!ta({state:e,name:t,owner:s.owner,revision:s.revision,host:u}))return!1;let d=()=>e.currentLoad?.latestPi??r;return await uk(u,c,e,d),er(u,c,e)&&u.status==="success"&&fu(d(),e,u),!0}function Yr(t,e,r){e.reconnects??=new Map,e.configRevisions??=new Map,e.reconnectDesiredGenerations??=new Map,e.statusFailureCategories??=new Map;let n=(e.reconnectDesiredGenerations.get(t)??0)+1;e.reconnectDesiredGenerations.set(t,n);let o=e.reconnects.get(t);if(o)return o;let i=(async()=>{let s=0,a=e.configRevisions.get(t)??0;do{let c=e.reconnectDesiredGenerations.get(t)??0;if((e.configRevisions.get(t)??0)!==a||!await gH({name:t,state:e,pi:r,configRevision:a}))return;s=c}while(s<(e.reconnectDesiredGenerations.get(t)??s))})().finally(()=>{e.reconnects.get(t)===i&&e.reconnects.delete(t)});return e.reconnects.set(t,i),i}async function yH(t){let{state:e,name:r,existing:n,config:o,retirement:i}=t;Kh(e,n.config),ai(e,r),n.beginDisposal?.();try{let s=o!==void 0&&Gu(n.config,o)?Promise.resolve():pt(e,r,n.config.id,n.config),c=(await Promise.allSettled([s,n.dispose({strict:!0})])).find(u=>u.status==="rejected");if(c)throw c.reason;i&&ve({state:e,name:r,retirement:i,result:{status:"retired"}})}catch(s){throw i&&ve({state:e,name:r,retirement:i,result:{status:"failed",error:s}}),s}}async function lk(t,e,r,n,o){let i=()=>e.currentLoad?.latestPi??r,{servers:s}=Yn(n,o,e.mcpConfigOverride,e.sessionMcpConfigDisabledOverrides),a=s.find(h=>h.name===t),c=We(e,t),u=e.servers.get(t),d=u?Q(e,t,u):N(e,t),l={kind:"local",identity:a?.id??t},f=ii({state:e,name:t,owner:l,expectedRevision:d?.revision,expectedHost:d?.host});if(!f)return;if(u&&await yH({state:e,name:t,existing:u,config:a,retirement:f.retirement}),f.retirement&&await Uu(f.retirement),N(e,t)?.revision!==f.lease.revision||!Jh(e,t,c)){xe({state:e,name:t,owner:l,revision:f.lease.revision});return}if(e.configRevisions.set(t,c),!a){xe({state:e,name:t,owner:l,revision:f.lease.revision}),j(i(),e);return}let p=Wh(e,t),m=Vh({state:e,config:a,generation:p});Yh(m,p,e,r),ta({state:e,name:t,owner:l,revision:f.lease.revision,host:m})&&(await uk(m,p,e,i),er(m,p,e)&&m.status==="success"&&fu(i(),e,m))}async function Zs(t,e,r){e.reconnecting=!0;try{await Promise.all(t.map(n=>Yr(n,e,r)))}finally{e.reconnecting=!1}}var fk=Symbol.for("__pi_mcp_registry_ingress__");function hu(t){return Object.defineProperty(t,fk,{value:!0}),t}function Gn(t){return Object.getOwnPropertyDescriptor(t,fk)?.value===!0}function Xr(t){let{state:e,target:r,byConfigId:n=!1}=t;if(!r)return;let o=[...e.servers].filter(([u,d])=>d.config.id===r||!n&&u===r);if(o.length!==1)return;let i=o[0];if(!i)return;let[s,a]=i;if(a.config.id&&[...e.servers].some(([u,d])=>u!==s&&d.config.id===a.config.id))return;let c=N(e,s);if(!(c&&(c.host!==a||c.owner.kind==="registry"&&c.connectionEpoch!==e.mcpConnectionEpoch))&&!(!c&&e.mcpConnectionEpoch!==void 0&&a.config.registrySource!==void 0)&&!((n||s!==r)&&!Gn(a.config)&&!(c?.owner.kind==="registry"&&c.owner.identity===`user:${r}`)))return{name:s,server:a}}import{logger as vH}from"@hermes/logger";var _H=vH.child({prefix:"pi-mcp"}),SH=1e6,wH=1e3,bH=/^\d+$/;function pk(t){return t.startsWith("user:")?`private:${t.slice(5)}`:t}function Qr(t){if(typeof t!="object"||t===null||Array.isArray(t))return;let e=t.credential_revision??t.credentialRevision,r=t.credential_revision_domain??t.credentialRevisionDomain;if(typeof e!="string"||!bH.test(e)||typeof r!="string"||r.length===0)return;let n=Hm(t);if(n.kind!=="invalid")return{revision:e.replace(/^0+(?=\d)/,""),domain:pk(r),...n.kind==="valid"?{ownerDomain:n.ownerDomain}:{}}}function RH(t,e,r){let n=t?.get(e),o=typeof r=="string"?t?.get(r):void 0;return n===void 0?o:o===void 0?n:Pr(o,n)>0?o:n}function CH(t,e,r){if(t===void 0)return!0;let n=pk(t);return n===e.domain||r?.kind==="domain"&&e.ownerDomain===r.domain||r?.kind==="domain"&&(n.startsWith("private:")||n.startsWith("shared:"))&&e.domain.startsWith("recipient:")&&xr(n)===r.domain&&xr(e.domain)===r.domain?!0:r?.kind==="domain"&&!ct(n)&&ct(e.domain)&&xr(n)===r.domain}function PH(t,e,r,n){let o=e.credential_revision??e.credentialRevision,i=e.credential_revision_domain??e.credentialRevisionDomain;if((o!==void 0||i!==void 0)&&r===void 0)return _H.warn(`Skipping MCP OAuth credentials for "${t}": invalid credential revision or domain`),"reject";let s=n?.expectedDomains?.get(t);if(r===void 0)return n?.requireRevision===!0||s!==void 0||n?.acceptedDomains?.has(t)===!0?"reject":"apply";let a=xr(r.domain);if(s?.kind==="blocked"||s?.kind==="domain"&&r.ownerDomain!==void 0&&r.ownerDomain!==s.domain||s?.kind==="domain"&&r.ownerDomain===void 0&&!ct(r.domain)&&a!==s.domain)return"reject";let c=n?.acceptedDomains?.get(t);if(!CH(c,r,s))return"reject";let u=RH(n?.acceptedRevisions,r.domain,i);if(u===void 0)return"apply";let d=Pr(r.revision,u);return d>0||d===0&&c===void 0&&s?.kind==="domain"&&n?.equalRevisionRebindDomains?.get(t)===s.domain?"apply":d===0?"equal":"reject"}function xH(t,e,r,n){if(n!==void 0)return!1;let o=t.get(e);return o===void 0?!1:r.expiresAt===void 0||o.expiresAt===void 0||r.expiresAt<=o.expiresAt}function kH(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let e=t;if(typeof e.access_token!="string"||e.access_token.length===0||["refresh_token","token_type","scope","authorization_endpoint","token_endpoint","issuer","client_id","client_secret","token_endpoint_auth_method"].some(s=>e[s]!==void 0&&typeof e[s]!="string"))return!1;let n=e.access_token_expires_at;if(n===void 0)return!0;if(typeof n!="object"||n===null||Array.isArray(n))return!1;let{seconds:o,nanos:i}=n;return typeof o=="number"&&Number.isSafeInteger(o)&&typeof i=="number"&&Number.isInteger(i)&&i>=0&&i<1e9}function EH(t){let e=t.access_token_expires_at?t.access_token_expires_at.seconds*wH+Math.floor(t.access_token_expires_at.nanos/SH):void 0;return{accessToken:t.access_token,refreshToken:t.refresh_token,expiresAt:e,tokenType:t.token_type,scope:t.scope,serverMetadata:{issuer:t.issuer??t.authorization_endpoint,authorization_endpoint:t.authorization_endpoint,token_endpoint:t.token_endpoint},client:{client_id:t.client_id,client_secret:t.client_secret,...t.token_endpoint_auth_method===void 0?{}:{token_endpoint_auth_method:t.token_endpoint_auth_method}}}}function TH(t,e){return t?t.accessToken===e.accessToken&&t.refreshToken===e.refreshToken&&t.expiresAt===e.expiresAt&&t.tokenType===e.tokenType&&t.scope===e.scope&&t.resource===e.resource&&t.serverMetadata?.issuer===e.serverMetadata?.issuer&&t.serverMetadata?.authorization_endpoint===e.serverMetadata?.authorization_endpoint&&t.serverMetadata?.token_endpoint===e.serverMetadata?.token_endpoint&&t.client?.client_id===e.client?.client_id&&t.client?.client_secret===e.client?.client_secret&&t.client?.token_endpoint_auth_method===e.client?.token_endpoint_auth_method:!1}function yr(t){let{store:e,serverName:r,proto:n,options:o}=t;if(!kH(n))return{decision:"reject"};let i=Qr(n),s=PH(r,n,i,o);if(s==="reject")return{decision:s};let a=EH(n);return s==="equal"&&o?.requireEqualMaterial===!0&&(o.acceptedDomains?.get(r)!==i?.domain||!TH(e.get(r),a))||s==="apply"&&xH(e,r,a,i)?{decision:"reject"}:{decision:s,token:a,revision:i}}function mu(t,e,r){let n={applied:[],equal:[],rejected:[]};for(let[o,i]of Object.entries(e)){let s=yr({store:t,serverName:o,proto:i,options:r});if(s.decision!=="apply"){n[s.decision==="equal"?"equal":"rejected"].push(o);continue}let{token:a,revision:c}=s;t.set(o,a),r?.equalRevisionRebindDomains?.delete(o),c!==void 0&&(r?.acceptedRevisions?.set(c.domain,c.revision),r?.acceptedDomains?.set(o,c.domain)),n.applied.push(o)}return n}var hk=AH.child({prefix:"pi-mcp"});function MH(t,e){let r=Xr({state:t,target:e,byConfigId:!0});if(!r)return;let o=N(t,r.name)?.owner??Rr(r.server.config);return o.kind==="registry"&&o.identity===`user:${e}`?r:void 0}function $H(t,e,r){let n=Object.entries(t).filter(([o,i])=>{let s=Qr(i);if(s===void 0)return!1;let a=sn(s);return s.ownerDomain!==void 0?a===`user:${e}`:o===r&&ct(s.domain)||a===`user:${e}`});return n.length===1?n[0]?.[1]:void 0}async function mk(t){let{pi:e,state:r,update:n}=t;if(Object.keys(n.credentials).length!==1){hk.warn(`Targeted MCP credential update for config ${n.configId} must contain exactly one entry`);return}let o=MH(r,n.configId),i=o?$H(n.credentials,n.configId,o.server.config.name):void 0;if(!o||!i)return;let s=N(r,o.name),a=r.mcpConnectionEpoch;if(o.server.config.type==="stdio"||o.server.config.auth!=="oauth")return;let c=()=>({acceptedRevisions:r.oauthCredentialRevisions,acceptedDomains:r.oauthCredentialDomains,expectedDomains:r.expectedCredentialDomains,equalRevisionRebindDomains:r.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:!0}),u=()=>yr({store:r.tokens,serverName:o.name,proto:i,options:c()});if(u().decision==="reject")return;let d=o.server.getRefreshInFlight?.();if(d&&await Promise.resolve(d).catch(()=>{}),r.mcpConnectionEpoch!==a||r.servers.get(o.name)!==o.server||N(r,o.name)!==s||u().decision==="reject")return;Q(r,o.name,o.server),r.shouldProactivelyRefreshTokens=!1;let l=mu(r.tokens,{[o.name]:i},c());if(!l.applied.includes(o.name)&&!l.equal.includes(o.name))return;if(l.applied.includes(o.name)){let h=Qr(i);h&&(r.credentialRevisions.set(o.name,h),r.hostedCredentialOwnership.set(o.name,{...h,accessTokenOnly:i.refresh_token===void 0})),r.statusFailureCategories.delete(o.name),r.authRefreshNeededReportKeys.delete(o.name),r.tokens.clearAuthRequired(o.name)}let f=r.currentLoad?.latestPi??e,p=t.reconnect??Yr,m=t.report??j;await p(o.name,r,f).catch(h=>{hk.warn(`Targeted MCP credential restart failed for config ${n.configId}: ${h instanceof Error?h.name:"non-Error"}`)}),m(f,r),_e(r)}import{logger as IH}from"@hermes/logger";var gu=IH.child({prefix:"pi-mcp"}),Xh="augment:mcp-attach-result";function gk(t,e){e.attachResultListenerBound||(e.attachResultListenerBound=!0,t.events.on(Xh,r=>{let n=r,o=typeof n?.requestId=="string"?n.requestId:"";if(!o){gu.warn(`${Xh} payload missing requestId`);return}let i=e.attachResolvers.get(o);if(!i){gu.debug(`${Xh}: no pending resolver for request ${o} (already timed out?)`);return}let s={...typeof n?.status=="string"?{status:n.status}:{},...typeof n?.error=="string"?{error:n.error}:{}};i(s)}))}function Vo(t,e){if(!e.mcpAttachCloudSignaled||e.mcpAttachDisabled||!e.credentials)return Promise.resolve();if(e.catalogRefreshInFlight)return e.catalogRefreshInFlight;let r=e.credentials,n=e.mcpConnectionEpoch,o=(async()=>{let i=await yg(r);e.mcpConnectionEpoch!==n||e.credentials!==r||(i.ok?(e.mcpCatalog=i.entries,gu.debug(`MCP catalog refreshed: ${i.entries.length} entry(s)`)):i.disable&&(e.mcpAttachDisabled=!0,e.mcpCatalog=void 0,gu.debug("MCP catalog endpoint unavailable (404); disabling attach for this session")),Qn(e)&&dn(e.currentLoad?.latestPi??t))})().finally(()=>{e.catalogRefreshInFlight===o&&(e.catalogRefreshInFlight=void 0)});return e.catalogRefreshInFlight=o,o}import{logger as WH}from"@hermes/logger";function OH(t){if(t==null)return;if(typeof t=="number"||!Number.isNaN(Number(t)))switch(Number(t)){case li.OAUTH:return"oauth";case li.API_KEY:return"header";default:return}let e=String(t).toLowerCase();if(e==="oauth"||e==="mcp_auth_type_oauth")return"oauth";if(e==="header"||e==="api_key"||e==="mcp_auth_type_api_key")return"header"}function zH(t){if(typeof t=="number"||!Number.isNaN(Number(t)))switch(Number(t)){case an.CLI:return"cli";case an.CLOUD_AGENT:return"cloud_agent";default:return}switch(t){case"MCP_PRODUCT_TYPE_CLI":return"cli";case"MCP_PRODUCT_TYPE_CLOUD_AGENT":return"cloud_agent";default:return}}function yu(t){if(t==null)return;if(t.length===0)return[];let e=t.map(zH).filter(r=>r!==void 0);return e.length===0?void 0:e}function vu(t,e){let r=t.config;if(!r)return{ok:!1,reason:"no config payload"};let n=OH(r.auth_type),o={name:r.name,type:r.type==="http"||r.type==="sse"||r.type==="stdio"?r.type:void 0,disabled:r.disabled,command:r.command,args:r.args,env:r.env,url:r.url,auth:n==="oauth"?"oauth":void 0,timeoutMs:r.timeout_ms,useShellInterpolation:r.use_shell_interpolation},i=Kn(o);(i==="http"||i==="sse")&&r.env&&(o.headers=r.env);try{return{ok:!0,server:{...Jn(r.name??t.id,o),id:t.id,registrySource:e}}}catch(s){return{ok:!1,reason:s instanceof kt?s.message:String(s)}}}function NH(t){let e=t.config?.auth_type;return e===li.OAUTH||typeof e=="string"&&(e.toLowerCase()==="oauth"||e.toLowerCase()==="mcp_auth_type_oauth")?t.has_oauth_credentials!==!0&&t.needs_reauthentication!==!0:!1}function DH(t){let e=t.name;return t.type==="stdio"?`stdio\0${e}\0${t.command}\0${t.args.join(" ")}`:`${t.type}\0${e}\0${t.url}`}function Qh(t,e,r){let n=new Map;for(let o of t)r(o.id)&&n.set(o.id,o);for(let o of e)n.set(o.id,o);return[...n.values()]}function LH(t,e,r){if(r!==void 0&&t.added_by===r)return yu(t.enabled_products);let n=e[t.id]?.enabled_products;return n!==void 0?yu(n):[]}function jH(t){let{tenantConfigs:e,userConfigs:r,enabledSharedServerIds:n,serverProductPreferences:o,configIds:i,currentUserId:s}=t;if(i!=null&&i.length===0){let p=Qh(e,r,()=>!0);return{selected:[],filteredOutIds:p.map(m=>m.id),missingIds:[],retainedNames:[]}}if(i!=null){let p=new Set(i),m=Qh(e,r,()=>!0),h=new Set(m.map(b=>b.id)),g=m.filter(b=>p.has(b.id)),v=m.filter(b=>!p.has(b.id)).map(b=>b.id),w=i.filter(b=>!h.has(b));return{selected:g,filteredOutIds:v,missingIds:w,retainedNames:[]}}let a=new Set(n),c=[];for(let p of e)a.has(p.id)||c.push(p.id);let u=Qh(e,r,p=>a.has(p)),d=new Set(r.map(p=>p.id)),l=[],f=[];for(let p of u){let h=!d.has(p.id)&&a.has(p.id)?LH(p,o,s):yu(p.enabled_products);h===void 0||h.includes("cloud_agent")?l.push(p):(c.push(p.id),p.config?.name&&f.push(p.config.name))}return{selected:l,filteredOutIds:c,missingIds:[],retainedNames:f}}function FH(t){return t==null?an.CLOUD_AGENT:void 0}function UH(t){return t.map(e=>({message:`Selected MCP config id "${e}" was not returned by the registry (not opted in to the shared server, deleted, or an unknown id)`}))}function yk(t,e,r,n){try{let o=t.type==="stdio"?Gt(t,n):Ht(t,n);return{ok:!0,server:hu(o)}}catch(o){let i=o instanceof Error?o.message:String(o);return{ok:!1,diagnostic:{server:t.name,message:`Skipped registry MCP server "${t.name}" (id=${e}, ${r}): ${i}`}}}}function qH(t){let{payload:e,userIds:r,localServerNames:n,seenNames:o,workspaceRoot:i}=t;if(e.config?.disabled)return e.config.name?{kind:"retained",name:e.config.name}:{kind:"dropped"};let s=r.has(e.id)?"user":"tenant",a=vu(e,s);if(!a.ok){let d=e.config?.name,l={server:d,message:`Skipped registry MCP server "${d??e.id}" (id=${e.id}, ${s}): ${a.reason}`};return d?{kind:"retained",name:d,diagnostic:l}:{kind:"dropped",diagnostic:l}}let c=a.server;if(o.has(c.name)){if(n.has(c.name))return{kind:"retained",name:c.name,diagnostic:{server:c.name,message:`Skipped registry MCP server "${c.name}" (id=${e.id}, ${s}): a local server with the same name takes precedence`}};let d=yk(c,e.id,s,i);return{kind:"retained",name:c.name,diagnostic:{server:c.name,message:`Skipped registry MCP server "${c.name}" (id=${e.id}, ${s}): name collides with a higher-precedence registry server`},fallbackServer:d.ok?d.server:void 0}}let u=yk(c,e.id,s,i);return u.ok?(o.add(c.name),{kind:"connected",server:u.server}):{kind:"retained",name:c.name,diagnostic:u.diagnostic}}function HH(t){let e=[],r=[],n=[];for(let o of t)NH(o)?(r.push(o.id),n.push({server:o.config?.name,message:`Skipped MCP server "${o.config?.name??o.id}" (id=${o.id}): OAuth authentication was never completed (no stored credentials), so it cannot connect`})):e.push(o);return{selected:e,droppedIds:r,diagnostics:n}}function GH(t){let e=[],r=[],n=[],o=new Set;for(let i of t){let s=DH(i);if(o.has(s)){r.push(i.name),n.push({server:i.name,message:`Skipped duplicate MCP server "${i.name}" (id=${i.id}): byte-identical to another selected server`});continue}o.add(s),e.push(i)}return{servers:e,droppedNames:r,diagnostics:n}}function ZH(t,e){if(t.kind!=="connected"&&t.diagnostic&&e.diagnostics.push(t.diagnostic),t.kind==="connected")e.servers.push(t.server);else if(t.kind==="retained"&&(e.retainedNames.push(t.name),t.fallbackServer!==void 0)){let r=e.nameCollisionFallbacks.get(t.name)??[];r.push(t.fallbackServer),e.nameCollisionFallbacks.set(t.name,r)}}async function _u(t){let e=t.client??new fa(t.creds),{tenant:r,user:n,diagnostics:o}=await Tg(e,FH(t.configIds)),i=n.mcp_configs??[],s=new Set(i.map(b=>b.id)),{selected:a,filteredOutIds:c,missingIds:u,retainedNames:d}=jH({tenantConfigs:r.mcp_configs??[],userConfigs:i,enabledSharedServerIds:n.enabled_shared_server_ids??[],serverProductPreferences:n.server_product_preferences??{},configIds:t.configIds,currentUserId:t.currentUserId}),l=HH(a),f=l.selected;c.push(...l.droppedIds),o.push(...l.diagnostics),o.push(...UH(u));let p=[],m=new Map,h=new Set(t.localServerNames),g=[...f.filter(b=>s.has(b.id)),...f.filter(b=>!s.has(b.id))];for(let b of g){let x=qH({payload:b,userIds:s,localServerNames:t.localServerNames,seenNames:h,workspaceRoot:t.workspaceRoot});ZH(x,{servers:p,retainedNames:d,diagnostics:o,nameCollisionFallbacks:m})}let v=GH(p);d.push(...v.droppedNames),o.push(...v.diagnostics);let w=new Map;for(let b of[...r.mcp_configs??[],...i])b.config?.name&&w.set(b.id,b.config.name);return{servers:v.servers,diagnostics:o,filteredOutIds:c,retainedNames:d,namesById:w,nameCollisionFallbacks:m}}import{logger as BH}from"@hermes/logger";var Ko=BH.child({prefix:"pi-mcp"});function vk(t,e,r){let n=t;if(!n||typeof n!="object"||!n.id){Ko.warn("Embedded MCP config is missing an id; ignoring");return}let o=r?.get(n.id);if(o)return o;let i=vu(n,"tenant");if(!i.ok){Ko.warn(`Embedded MCP config '${n.id}' is not convertible; ignoring: ${i.reason}`);return}let s=e??process.cwd();try{return hu(i.server.type==="stdio"?Gt(i.server,s):Ht(i.server,s))}catch(a){Ko.warn(`Embedded MCP config '${n.id}' failed expansion; ignoring: ${a instanceof Error?a.message:String(a)}`);return}}function _k(t,e){let r;try{r=JSON.parse(t)}catch(n){Ko.warn(`Failed to parse embedded MCP config: ${n instanceof Error?n.name:"non-Error thrown"}`);return}return vk(r,e)}function Jo(t,e,r){let n=t;if(typeof n=="string")try{n=JSON.parse(n)}catch(a){Ko.warn(`Failed to parse embedded MCP configs: ${a instanceof Error?a.name:"non-Error thrown"}`);return}if(!Array.isArray(n)){Ko.warn("Embedded MCP configs payload is not an array; ignoring");return}let o=[],i=new Map,s=!1;for(let a of n){let c=a,u=vk(a,e,r);if(c&&typeof c=="object"&&c.id&&c.config?.name&&i.set(c.id,{name:c.config.name,...u?{config:u}:{}}),c?.config?.disabled){s=!0;continue}u&&o.push(u)}if(!(o.length===0&&!s))return{servers:o,allConfigsById:i}}var jt=WH.child({prefix:"pi-mcp"});function wk(t){let{selectedIds:e,config:r}=t;return e!==void 0&&(r?.id===void 0||!e.has(r.id))}function bk(t){let{state:e,name:r,lease:n,host:o,isDeselected:i,selectionIsEmpty:s,replacementOwners:a}=t;if(s)return o?st({state:e,name:r,owner:n.owner,revision:n.revision,host:o})?(We(e,r),"retiring"):void 0:(xe({state:e,name:r,owner:n.owner,revision:n.revision}),We(e,r),"released");let c=a.get(r),u=ii({state:e,name:r,owner:c??n.owner,expectedRevision:n.revision,...o?{expectedHost:o}:{}});if(u)return i&&c===void 0&&e.expectedCredentialDomains.set(r,{kind:"blocked"}),{configRevision:We(e,r),leaseRevision:u.lease.revision}}function VH(t){let{state:e,name:r,server:n,selectedIds:o,replacementOwners:i,slotReservations:s,processedNames:a}=t,c=Q(e,r,n);if(c.owner.kind!=="registry"||c.host!==n)return;a.add(r);let u={...n.config};e.registryCredentialConfigs.set(r,u),n.config.id&&(e.registryConfigNamesById.set(n.config.id,r),e.registryCredentialConfigsById.set(n.config.id,u));let d=bk({state:e,name:r,lease:c,host:n,isDeselected:wk({selectedIds:o,config:n.config}),selectionIsEmpty:o?.size===0,replacementOwners:i});if(d===void 0)return;d!=="released"&&d!=="retiring"&&s.set(r,d);let l=N(e,r)?.retirement;return n.beginDisposal?.(),n.dispose({strict:!0}).then(()=>{l&&ve({state:e,name:r,retirement:l,result:{status:"retired"}}),d==="retiring"&&xe({state:e,name:r,owner:c.owner,revision:c.revision})},f=>{throw l&&ve({state:e,name:r,retirement:l,result:{status:"failed",error:f}}),f})}function KH(t){let{state:e,name:r,lease:n,selectedIds:o,replacementOwners:i,slotReservations:s}=t,a=bk({state:e,name:r,lease:n,isDeselected:wk({selectedIds:o,config:e.registryCredentialConfigs.get(r)}),selectionIsEmpty:o?.size===0,replacementOwners:i});a&&a!=="released"&&a!=="retiring"&&s.set(r,a)}async function JH(t,e,r){let n=e?new Set(e):void 0,o=new Map,i=[],s=new Set;for(let[a,c]of t.servers){let u=VH({state:t,name:a,server:c,selectedIds:n,replacementOwners:r,slotReservations:o,processedNames:s});u&&i.push(u)}for(let[a,c]of t.hostLeases)s.has(a)||c.owner.kind!=="registry"||c.host!==void 0||KH({state:t,name:a,lease:c,selectedIds:n,replacementOwners:r,slotReservations:o});return await Promise.all(i),o}async function Rk(t,e,r,n,o){let i=[],s=new Map(e.map(l=>[l.name,l])),a=o?new Set(r):new Set,c=new Set([...a].flatMap(l=>{let f=t.registryConfigNamesById.get(l);return f===void 0?[]:[f]})),u=new Set(e.flatMap(l=>l.id===void 0?[]:[l.id]));for(let[l,f]of t.registryCredentialConfigs){let p=s.get(l);if(p===void 0&&f.id!==void 0&&n.has(f.id)&&!u.has(f.id)){s.set(l,f);continue}let m=f.id===void 0?c.has(l):a.has(f.id);p===void 0&&!m&&i.push(pt(t,l,f.id,f))}try{await Promise.all(i)}catch(l){let f=`Registry credential reconciliation failed: ${l instanceof Error?l.message:String(l)}`;throw new xt(f)}let d=new Map;for(let[l,f]of s){let p=t.registryCredentialConfigs.get(l);p&&(d.set(l,{...p}),ft(p,f)&&f.id!==void 0&&t.registryCredentialConfigsById.set(f.id,{...f}))}t.registryCredentialConfigs=d}function YH(t,e,r){let n=e!=null&&e.length>0?new Set(e):void 0,o=[],i=[],s=[],a=[],c=new Set(r);for(let l of t.servers){if(n&&l.id!==void 0&&!n.has(l.id)){s.push(l.id);continue}if(c.has(l.name)){i.push({server:l.name,message:`Skipped embedded MCP server "${l.name}" (id=${l.id}): a local server with the same name takes precedence`}),a.push(l.name);continue}c.add(l.name),o.push(l)}let u=new Set(o.map(l=>l.name)),d=new Set(a);for(let[l,{name:f}]of t.allConfigsById)n&&!n.has(l)||u.has(f)||d.has(f)||(d.add(f),a.push(f));return{servers:o,diagnostics:i,filteredOutIds:s,retainedNames:a}}function XH(t){let{state:e,configIds:r,admittedConfigs:n}=t,o=e.embeddedRegistryConfigs;if(e.embeddedRegistryConfigs=void 0,r?.length===0||Array.isArray(o)&&o.length===0)return{servers:[],allConfigsById:new Map};if(o!==void 0)return Jo(o,e.workspaceRoot??process.cwd(),n)}async function QH(t){let{state:e,previousSelectedIds:r,configIds:n}=t;if(!n)return;let o=new Set(n),i=[],s=[];for(let a of r){if(o.has(a))continue;let c=e.registryConfigNamesById.get(a),u=[...o].some(d=>e.registryCredentialIntents.get(at(d))?.configName===c);if(c&&!u){let d=e.registryCredentialConfigs.get(c);i.push({id:a,name:c}),s.push(pt(e,c,a,d?.id===a?d:void 0))}}try{await Promise.all(s);for(let{id:a,name:c}of i)e.registryCredentialConfigs.get(c)?.id===a&&e.registryCredentialConfigs.delete(c)}catch(a){let c=`Registry credential deselection failed: ${a instanceof Error?a.message:String(a)}`;throw new xt(c)}}function eG(t){let e=new Map,r=t.configIds?new Set(t.configIds):void 0;for(let[n,{name:o}]of t.parsedEmbedded?.allConfigsById??[])(r===void 0||r.has(n))&&e.set(o,{kind:"registry",identity:`user:${n}`});return e}function tG(t){t.lastSuccessfulVfsMcpSignature=void 0,t.blockedVfsMcpNames.clear(),t.diagnostics=t.diagnostics.filter(e=>e.origin!=="registry"),t.dynamicallyAddedConfigIds.clear(),t.failedAddConfigIds.clear(),t.nameCollisionAddConfigIds.clear(),t.authFallbackDisplacedConfigIds.clear(),t.sessionRemovedConfigIds.clear(),t.selectedRegistryConfigIds=void 0}function rG(t){let e=new Set;for(let[r,n]of t.servers){let o=Q(t,r,n);o.owner.kind==="local"&&o.host===n&&e.add(r)}for(let[r,n]of t.hostLeases)n.owner.kind==="local"&&e.add(r);return e}function nG(t){let{state:e,result:r,previousSelectedIds:n,selection:o}=t,i=new Set([...o??[],...r.servers.flatMap(s=>s.id===void 0?[]:[s.id]),...r.namesById?.keys()??[]]);return Rk(e,r.servers,n,i,o!==void 0)}async function Ck(t,e){await Promise.all(e.servers.map(r=>r.id===void 0?Promise.resolve():ui(t,r.id)))}async function Sk(t){return await Ck(t.state,t.result),t.state.registryGeneration===t.generation&&await nG(t),t.result}function oG(t){let{state:e,configIds:r,parsedEmbedded:n,credentials:o,localServerNames:i,previousSelectedIds:s,selection:a,generation:c,discover:u}=t;if(n){jt.info(`Registry selection: using ${n.servers.length} embedded config(s) (no registry fetch)`);let l=YH(n,r,i);return Sk({state:e,result:l,previousSelectedIds:s,selection:a,generation:c})}return o?u({configIds:r,creds:o,currentUserId:o.userId,workspaceRoot:e.workspaceRoot??process.cwd(),localServerNames:i}).then(l=>Sk({state:e,result:l,previousSelectedIds:s,selection:a,generation:c})):void 0}function iG(t){let{state:e,result:r,selection:n}=t;e.selectedRegistryConfigIds=n;for(let o of r.diagnostics)e.diagnostics.push({...o,origin:"registry"}),jt.warn(o.message);for(let[o,i]of r.namesById??[])e.registryConfigNamesById.set(o,i);r.filteredOutIds.length>0&&jt.info(`Registry discovery filtered out ${r.filteredOutIds.length} server(s) by selection/opt-in/product`)}function sG(t){let{state:e,result:r}=t,n=r.servers.map(i=>{let s=e.sessionRegistryDisabledOverrides.get(i.name);return s===void 0?i:{...i,disabled:s}}),o=new Set([...n.map(i=>i.name),...r.retainedNames??[]]);for(let i of e.sessionRegistryDisabledOverrides.keys())o.has(i)||e.sessionRegistryDisabledOverrides.delete(i);return n}function Pk(t){let{state:e,generation:r}=t;return n=>{if(e.registryGeneration!==r||n.id===void 0)return e.registryGeneration===r;let o=e.missingHostRemovalFences.get(n.id);return!e.sessionRemovedConfigIds.has(n.id)&&o?.registryGeneration!==r}}function em(t){let{state:e,result:r,selection:n,slotReservations:o}=t,i=new Set([...r.servers.map(s=>s.name),...r.retainedNames??[],...(n??[]).flatMap(s=>{let a=e.registryConfigNamesById.get(s);return a?[a]:[]})]);for(let[s,a]of o){if(i.has(s))continue;let c=N(e,s);c?.owner.kind==="registry"&&c.host===void 0&&c.revision===a.leaseRevision&&xe({state:e,name:s,owner:c.owner,revision:a.leaseRevision})}}async function aG(t){let{state:e,result:r,selection:n,generation:o,connect:i,pi:s,slotReservations:a}=t;if(e.registryGeneration!==o){em({state:e,result:{servers:[],diagnostics:[],filteredOutIds:[]},selection:void 0,slotReservations:a}),jt.info(`Registry discovery superseded by a newer selection; skipping ${r.servers.length} server(s)`);return}if(await Ck(e,r),e.registryGeneration!==o)return;let c=Pk({state:e,generation:o}),u=r.servers.filter(c);if((await Promise.all(u.map(h=>Er({state:e,config:h,pi:s})))).some(h=>!h)||e.registryGeneration!==o)return;iG({state:e,result:r,selection:n}),em({state:e,result:r,selection:n,slotReservations:a});let l=sG({state:e,result:{...r,servers:u}});if(l.length===0)return;let f=l.filter(h=>{let g=e.servers.get(h.name);if((g?Q(e,h.name,g):N(e,h.name))?.owner.kind==="local")return jt.info(`Registry install of "${h.name}" skipped: a local server claimed the name during discovery`),!1;let w=a.get(h.name)?.configRevision;if(w===void 0)return!0;let b=e.configDesiredRevisions.get(h.name);return b!==w?(jt.info(`Registry install of "${h.name}" skipped: slot revision advanced from ${w} to ${b} by a concurrent operation`),!1):!0});if(f.length===0)return;jt.info(`Registry discovery: connecting ${f.length} server(s)`);let m=(await i(f,e,e.currentLoad?.latestPi??s,c))?.find(h=>h.status==="failed");if(m)throw m.error instanceof Error?m.error:new Error(String(m.error));await cG({state:e,pi:s,result:r,generation:o,connect:i})}async function cG(t){let{state:e,pi:r,result:n,generation:o,connect:i}=t,s=n.nameCollisionFallbacks;if(!(!s||s.size===0))for(let[a,c]of s)for(let u of c){let d=await uG({state:e,pi:r,generation:o,connect:i,name:a,candidate:u});if(d==="abort")return;if(d==="settled")break}}async function uG(t){let{state:e,pi:r,generation:n,connect:o,name:i,candidate:s}=t;if(e.registryGeneration!==n)return"abort";let a=e.servers.get(i);if(!a||a.status!=="auth_required"&&a.status!=="failed")return"settled";let c=a.config.id;if(c===void 0||c===s.id)return"settled";if(!await Er({state:e,config:s,pi:r})||e.registryGeneration!==n)return"abort";jt.info(`MCP auth fallback: "${i}" (id=${c}) landed ${a.status}; connecting same-named config id=${s.id} in its place`),await o([s],e,e.currentLoad?.latestPi??r,Pk({state:e,generation:n}));let d=e.servers.get(i);return d?.config.id!==c&&e.authFallbackDisplacedConfigIds.add(c),d!==void 0&&d.config.id===s.id&&d.status==="success"?"settled":"next"}async function dG(t){let{state:e,error:r,generation:n,previousSelectedIds:o,selection:i}=t,s=`Registry discovery failed: ${r instanceof Error?r.message:String(r)}`;jt.warn(s),e.registryGeneration===n&&(await Rk(e,[],o,new Set(i??[]),i!==void 0),e.selectedRegistryConfigIds=i,e.diagnostics.push({message:s,origin:"registry"}))}function lG(t,e){for(let r of e??[]){let n=at(r),o=t.registryCredentialIntents.get(n);o?.configName&&t.expectedCredentialDomains.set(o.configName,{kind:"blocked"}),Ke({state:t,domain:n,epoch:o?.epoch})}}async function fG(t){let e;try{let r=await Promise.all([t.disposal,t.discovery]);e=r[0],await aG({...t.resultArgs,result:r[1],slotReservations:e})}catch(r){if(e??=await t.disposal.catch(()=>new Map),em({state:t.resultArgs.state,result:{servers:[],diagnostics:[],filteredOutIds:[]},selection:t.resultArgs.state.registryGeneration===t.resultArgs.generation?t.resultArgs.selection:void 0,slotReservations:e}),r instanceof xt)throw lG(t.resultArgs.state,t.resultArgs.selection),t.resultArgs.state.diagnostics.some(n=>n.message===r.message)||t.resultArgs.state.diagnostics.push({message:r.message,origin:"registry"}),r;await dG({...t.resultArgs,error:r})}}function Su(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.discover??_u,s=o?.connect??Ve,a=n;if(!a||typeof a!="object"||Array.isArray(a))return jt.warn("augment:mcp-config-ids payload is not an object"),Promise.resolve();Array.isArray(a.configIds)&&Jm(r,new Set(a.configIds.map(at)));let c=XH({state:r,configIds:a.configIds,admittedConfigs:t.admittedConfigs}),u=r.credentials;if(!(c||u)){jt.warn("augment:mcp-config-ids received before credentials; skipping registry discovery");for(let v of a.configIds??[])Ke({state:r,domain:at(v)});return Promise.resolve()}let d=r.selectedRegistryConfigIds??[],l=QH({state:r,previousSelectedIds:d,configIds:a.configIds}),f=eG({parsedEmbedded:c,configIds:a.configIds}),p=++r.registryGeneration,m=Promise.all([JH(r,a.configIds,f),l]).then(([v])=>v);tG(r);let h=a.configIds?[...a.configIds]:void 0,g=oG({state:r,configIds:a.configIds,parsedEmbedded:c,credentials:u,localServerNames:rG(r),previousSelectedIds:d,selection:h,generation:p,discover:i});return g?fG({disposal:m,discovery:g,resultArgs:{state:r,previousSelectedIds:d,selection:h,generation:p,connect:s,pi:e}}):Promise.resolve()}import{logger as pG}from"@hermes/logger";var en=pG.child({prefix:"pi-mcp"});function hG(t,e){Ke({state:t,domain:`user:${e}`}),t.liveEditGenerations??=new Map;let r=(t.liveEditGenerations.get(e)??0)+1;return t.liveEditGenerations.set(e,r),r}function mG(t){let{state:e,configId:r,liveEditGeneration:n}=t,o={liveEditGeneration:n,registryGeneration:e.registryGeneration};return e.missingHostRemovalFences.set(r,o),o}function Tk(t){let{state:e,configId:r,fence:n}=t;return e.registryGeneration===n.registryGeneration&&e.liveEditGenerations.get(r)===n.liveEditGeneration}function gG(t){let{state:e,configId:r,fence:n}=t;e.missingHostRemovalFences.get(r)===n&&e.missingHostRemovalFences.delete(r)}function xk(t){let{state:e,configId:r,fence:n,operation:o,retryPreviousFailureOnly:i=!1}=t,s=e.missingHostRemovals.get(r),a=(async()=>{let c=!1;if(s)try{await s.promise}catch{c=!0}i&&!c||await o()})().finally(()=>{e.missingHostRemovals.get(r)?.promise===a&&(gG({state:e,configId:r,fence:n}),e.missingHostRemovals.delete(r))});return e.missingHostRemovals.set(r,{promise:a,liveEditGeneration:n.liveEditGeneration,registryGeneration:n.registryGeneration}),a}function Ak(t,e){t.failedAddConfigIds.delete(e),t.nameCollisionAddConfigIds.delete(e),t.dynamicallyAddedConfigIds.delete(e),t.sessionRemovedConfigIds.add(e)}function kk(t,e){for(let[r,n]of t.servers){if(t.targetMaterialStore?.has(e)&&!t.targetMaterialStore.trusts(n.config)&&!Gn(n.config))continue;let o=Q(t,r,n);if(n.config.id===e&&o.owner.kind==="registry"&&o.host===n)return r}}function Mk(t,e){let r=t.preservedCredentialIdentities?.get(e);r?.id&&t.expectedCredentialDomains.set(e,{kind:"domain",domain:`user:${r.id}`})}function yG(t){let{state:e,name:r,config:n,retirement:o}=t;if(e.servers.has(r))return;let i=N(e,r),s=n?Rr(n):void 0;if(i===void 0){We(e,r);return}let a=i.host===void 0&&i.owner.kind==="registry"&&s?.kind==="registry"&&i.owner.identity===s.identity,c=o?.incumbent.owner.kind==="registry"&&s?.kind==="registry"&&o.incumbent.owner.identity===s.identity;if(!a&&!c)return;(o?.settled&&i.retirement===o?Dm({state:e,name:r,retiredOwner:o.incumbent.owner,retirement:o}):xe({state:e,name:r,owner:i.owner,revision:i.revision}))&&N(e,r)===void 0&&(Mk(e,r),We(e,r))}async function tm(t){let{state:e,configId:r,pi:n,report:o,sourceFence:i}=t,s=e.registryCredentialConfigsById.get(r),a=s?.name;if(!s||!a){let w=`Live MCP remove-server cannot retire config id ${r}: exact registry identity is unavailable`;throw en.warn(w),e.diagnostics.push({message:w,origin:"registry"}),new Error(w)}e.configDesiredRevisions??=new Map,e.configDesiredSources??=new Map;let c=N(e,a),u=Rr(s),d=c?.retirement?.incumbent.owner.kind==="registry"&&u.kind==="registry"&&c.retirement.incumbent.owner.identity===u.identity?c.retirement:void 0,l=c!==void 0&&c.host===void 0&&c.owner.kind==="registry"&&u.kind==="registry"&&c.owner.identity===u.identity,f=e.configDesiredRevisions.get(a),p=e.configDesiredSources.get(a),m=l&&d?.settled!==!0?We(e,a):void 0;if(d&&!d.settled&&(await d.teardown).status==="retired"&&!l)return;let g=N(e,a)?.retirement===d?d:void 0,v=g?.result;if(d&&v?.status==="failed"&&v.transportDisposed!==!0){let w=v.error instanceof Error?v.error:new Error(String(v.error)),b=`Live MCP remove-server cannot complete ${a}: strict transport disposal is unresolved`;throw en.warn(b),e.diagnostics.push({server:a,message:b}),w}try{await ci(e,a,r,s)}catch(w){m!==void 0&&e.configDesiredRevisions.get(a)===m&&(f===void 0?e.configDesiredRevisions.delete(a):e.configDesiredRevisions.set(a,f),p===void 0?e.configDesiredSources.delete(a):e.configDesiredSources.set(a,p));let b=`Live MCP remove-server failed to detach ${a}: ${w instanceof Error?w.message:String(w)}`;throw en.warn(b),e.diagnostics.push({server:a,message:b}),w}Tk({state:e,configId:r,fence:i})&&(Ak(e,r),yG({state:e,name:a,config:s,retirement:g})),en.info(`Live MCP remove-server: config id ${r} resolved to no live server (already removed or unknown id)`),o(e.currentLoad?.latestPi??n,e)}function Ek(t){let{state:e,name:r,operation:n,result:o}=t;if(o.status!=="rejected")return;let i=`Live MCP remove-server failed to ${n} ${r}: ${o.reason instanceof Error?o.reason.message:String(o.reason)}`;en.warn(i),e.diagnostics.push({server:r,message:i})}async function vG(t){let{state:e,name:r,configId:n,server:o}=t,[i]=await Promise.allSettled([o.dispose({strict:!0})]);if(Ek({state:e,name:r,operation:"dispose",result:i}),i.status==="rejected")return{removed:!1,failure:i.reason,transportDisposed:!1};let[s]=await Promise.allSettled([ci(e,r,n,o.config)]);return Ek({state:e,name:r,operation:"detach",result:s}),s.status==="fulfilled"?{removed:!0,failure:void 0,transportDisposed:!0}:{removed:!1,failure:s.reason,transportDisposed:!0}}async function _G(t){let{state:e,configId:r,name:n,pi:o,report:i,sourceFence:s}=t,a=e.servers.get(n),c=a?Q(e,n,a):N(e,n);if(!a||!c||c.owner.kind!=="registry"||c.host!==a)return;e.registryConfigNamesById.set(r,n),e.registryCredentialConfigsById.set(r,{...a.config});let u=e.configDesiredRevisions.get(n),d=e.configDesiredSources.get(n),l=We(e,n),f=st({state:e,name:n,owner:c.owner,revision:c.revision,host:a});if(!f)return;a.beginDisposal?.(),en.info(`Live MCP remove-server: disposing ${n} (config id ${r})`);let p=e.currentLoad?.latestPi??o,{removed:m,failure:h,transportDisposed:g}=await vG({state:e,name:n,configId:r,server:a});if(m&&Tk({state:e,configId:r,fence:s})?Ak(e,r):!m&&e.configDesiredRevisions.get(n)===l&&(u===void 0?e.configDesiredRevisions.delete(n):e.configDesiredRevisions.set(n,u),d===void 0?e.configDesiredSources.delete(n):e.configDesiredSources.set(n,d)),ve({state:e,name:n,retirement:f,result:m?{status:"retired"}:{status:"failed",error:h,transportDisposed:g}}),m&&xe({state:e,name:n,owner:c.owner,revision:c.revision})&&Mk(e,n),i(p,e),!m)throw h}function wu(t){let{pi:e,state:r,data:n,deps:o}=t,i=n,s=i&&typeof i.configId=="string"?i.configId:"";if(!s)return en.warn("augment:mcp-remove-server payload missing configId"),Promise.resolve();if(!t.replacement&&!Xn({state:r,configId:s,generation:i?.attachmentGeneration}))return en.info(`Ignoring stale live MCP remove-server command for config id ${s}`),Promise.resolve();let a=g=>t.replacement?g:sa({state:r,configId:s,generation:i?.attachmentGeneration,operation:g,wasApplied:()=>!0}),c=o?.report??j,u=kk(r,s),d=r.registryCredentialConfigsById.get(s),l=d?.name?N(r,d.name)?.retirement:void 0,f=r.missingHostRemovals.get(s),p=f?.registryGeneration===r.registryGeneration&&f?.liveEditGeneration===r.liveEditGenerations.get(s);if(p&&l===void 0)return a(f.promise);if(p&&l!==void 0){let g=r.missingHostRemovalFences.get(s);if(g)return a(xk({state:r,configId:s,fence:g,retryPreviousFailureOnly:!0,operation:()=>tm({state:r,configId:s,pi:e,report:c,sourceFence:g})}))}let m=hG(r,s);if(u===void 0&&d===void 0)return a(tm({state:r,configId:s,pi:e,report:c,sourceFence:{liveEditGeneration:m,registryGeneration:r.registryGeneration}}));let h=mG({state:r,configId:s,liveEditGeneration:m});return a(xk({state:r,configId:s,fence:h,operation:()=>{let g=kk(r,s);return g===void 0?tm({state:r,configId:s,pi:e,report:c,sourceFence:h}):_G({state:r,configId:s,name:g,pi:e,report:c,sourceFence:h})}}))}import{randomUUID as SG}from"node:crypto";import{setToolSource as wG}from"@augmentcode/auggie-v2";import{logger as bG}from"@hermes/logger";import{Type as RG}from"@sinclair/typebox";var Ik=bG.child({prefix:"pi-mcp"}),bu="attach-mcp-server",CG="augment:mcp-attach-request",PG=15e3,xG={type:"object",properties:{config_id:{type:"string",description:"Id (or name) of the MCP server to attach, as listed among the available unattached servers in find-tool's description."}},required:["config_id"]};function kG(t,e){let r=e.trim(),n=r.toLowerCase(),o=t.mcpCatalog??[],i=o.find(l=>l.id===r);if(i)return{kind:"match",entry:i};let s=o.filter(l=>l.name.toLowerCase()===n),a=s.length===1?s[0]:void 0;if(a!==void 0)return{kind:"match",entry:a};if(s.length===0)return{kind:"none"};let c=new Set(cn(t).map(l=>l.id)),u=s.filter(l=>c.has(l.id)),d=u.length===1?u[0]:void 0;return d!==void 0?{kind:"match",entry:d}:{kind:"ambiguous",candidates:s}}function EG(t,e){let r=e.name.toLowerCase();return cn(t).filter(n=>n.id!==e.id&&n.name.toLowerCase()===r)}function rm(t,e){let r=EG(t,e);return r.length===0?"":` A different attachable server with the same name exists: ${r.map(o=>`"${o.name}" (id: ${o.id})`).join(", ")}. If that is the intended server, retry with its exact id.`}function TG(t,e){return new Promise(r=>{let n=setTimeout(()=>{t.attachResolvers.delete(e),r(void 0)},PG);t.attachResolvers.set(e,o=>{clearTimeout(n),t.attachResolvers.delete(e),r(o)})})}function $k(t){let e=cn(t).map(r=>`${r.name} (id: ${r.id})`);return e.length>0?`Available unattached servers: ${e.join(", ")}.`:"No unattached servers are currently available."}function AG(t){let{entry:e,state:r}=t,n=[...r.servers.values()].find(o=>o.config.id===e.id);if(n?.status==="auth_required")return Ce(`MCP server "${e.name}" requires authentication. Ask the user to reconnect it from the session MCP panel before trying again.${rm(r,e)}`);if(n?.status==="failed"||r.failedAddConfigIds.has(e.id))return Ce(`MCP server "${e.name}" failed to connect after the attach was accepted. Ask the user to reconnect it from the session MCP panel before trying again.${rm(r,e)}`)}function MG(t){let{entry:e,result:r,state:n}=t;if(r===void 0)return Ce(`Timed out waiting for the attach request for "${e.name}" to be acknowledged. The server may still attach shortly; check find-tool's server list before retrying.`);if(r.error==="UNIMPLEMENTED")return n.mcpAttachDisabled=!0,Ce("Attaching MCP servers is not enabled for this session. Ask the user to attach the server from the session's MCP settings instead.");if(r.error==="DENIED")return Ce(`The control plane denied the request to attach "${e.name}". Do not retry; ask the user to verify that the server is available for this session.`);if(r.error!==void 0)return Ce(`Could not reach the control plane to attach "${e.name}". Try again later.`);switch(r.status){case"ACCEPTED":return Ce(`Attach accepted for "${e.name}". Connection continues in the background; use find-tool to discover its tools when ready. If its tools do not appear, call attach-mcp-server again with the same config id for connection guidance.`);case"ALREADY_ATTACHED":return Ce(`MCP server "${e.name}" is already attached to this session. Use find-tool to discover its tools.`);case"AUTH_REQUIRED":return Ce(`MCP server "${e.name}" requires authentication \u2014 the user must connect it from the session MCP panel before it can be attached.${rm(n,e)}`);case"NO_ACTIVE_VM":return Ce(`Could not reach the control plane to attach "${e.name}". Try again later.`);default:return Ce(`The attach request for "${e.name}" returned an unrecognized status. Check find-tool's server list shortly to see whether it attached.`)}}async function $G(t,e,r){if(e.mcpAttachDisabled)return Ce("Attaching MCP servers is not enabled for this session. Ask the user to attach the server from the session's MCP settings instead.");let{config_id:n}=r??{};if(typeof n!="string"||n.trim().length===0)throw new Error(`${bu} requires a string "config_id" parameter. ${$k(e)}`);let o=kG(e,n);if(o.kind==="none")return Ce(`No MCP server matching "${n}" is available to attach. ${$k(e)}`);if(o.kind==="ambiguous"){let d=o.candidates.map(l=>`"${l.name}" (id: ${l.id})`).join(", ");return Ce(`Multiple MCP servers match the name "${n}": ${d}. Retry with the exact id of the intended server.`)}let i=o.entry,s=AG({entry:i,state:e});if(s!==void 0)return s;if(sd(e,i))return Ce(`MCP server "${i.name}" is already attached to this session. Use find-tool to discover its tools.`);if(i.state!=="available"&&i.state!=="opt_in_required")return Ce(`MCP server "${i.name}" is not currently available to attach. Ask the user to attach it from the session's MCP settings.`);let a=SG();Ik.info(`attach-mcp-server: requesting attach of "${i.name}" (config=${i.id} request=${a})`);let c=TG(e,a);t.events.emit(CG,{configId:i.id,requestId:a});let u=await c;return MG({entry:i,result:u,state:e})}function Bs(t,e){let r={name:bu,label:bu,description:"Attach an available MCP server to this session so its tools become usable. Only servers listed as available-but-not-attached in find-tool's description can be attached. Call this tool immediately when the user's request needs one of those servers; it attaches directly without requiring user approval.",parameters:RG.Unsafe(xG),execute:(n,o)=>$G(t,e,o)};wG(bu,"mcp"),t.registerTool(r),Tr(r),Ik.debug("Registered attach-mcp-server tool")}import{createHash as IG}from"node:crypto";var OG=/^[1-9][0-9]*$/,zG=/^[a-f0-9]{64}$/,NG=new Set(["version","operation","config_id","server_name","transport","url","command","args","use_shell_interpolation","route_revision","binding_generation","ownership","auth_type","vm_id","connection_version","execution_principal_id","execution_principal_type","access_token","static_secrets"]);function Re(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function nm(t){return typeof t=="string"&&OG.test(t)&&t.length<=19&&BigInt(t)<=9223372036854775807n}function im(t){return Re(t)&&typeof t.vmId=="string"&&t.vmId.length>0&&t.vmId.length<=256&&t.vmId.trim()===t.vmId&&nm(t.connectionVersion)}function DG(t){if(t.version===2&&t.transport==="stdio")return(t.url===void 0||t.url==="")&&typeof t.command=="string"&&t.command.trim().length>0&&!Ir(t.command)&&Array.isArray(t.args)&&t.args.every(e=>typeof e=="string"&&!Ir(e))&&typeof t.use_shell_interpolation=="boolean"&&t.auth_type!=="oauth";if(t.version!==1||t.transport!=="http"&&t.transport!=="sse"||typeof t.url!="string"||t.command!==void 0||t.args!==void 0||t.use_shell_interpolation!==void 0)return!1;try{let e=new URL(t.url);return["http:","https:"].includes(e.protocol)&&!e.username&&!e.password&&!e.hash}catch{return!1}}function zk(t){if(!(!Re(t)||Object.keys(t).some(e=>!NG.has(e)))&&!(!DG(t)||t.operation!=="install"&&t.operation!=="retire"||t.auth_type!=="oauth"&&t.auth_type!=="static"&&t.auth_type!=="none")){for(let e of["config_id","server_name","vm_id","execution_principal_id"])if(typeof t[e]!="string"||t[e].length===0)return;if(!(typeof t.route_revision!="string"||!zG.test(t.route_revision)||!nm(t.connection_version))&&!(t.execution_principal_type!==void 0&&(typeof t.execution_principal_type!="number"||!Number.isInteger(t.execution_principal_type)||t.execution_principal_type<0||t.execution_principal_type>2147483647))&&!(t.ownership==="uncredentialed"?t.auth_type!=="none"||t.binding_generation!=="0":t.ownership!=="recipient"||t.auth_type==="none"||!nm(t.binding_generation))){if(t.operation==="retire"||t.auth_type==="none"){if(t.access_token!==void 0||t.static_secrets!==void 0)return}else if(t.auth_type==="oauth"){if(typeof t.access_token!="string"||t.access_token.length===0||t.static_secrets!==void 0)return}else if(t.access_token!==void 0||!Re(t.static_secrets)||Object.keys(t.static_secrets).length===0||Object.values(t.static_secrets).some(e=>typeof e!="string"||e.trim().length===0))return;return{...t,execution_principal_type:t.execution_principal_type??0}}}}function om(t,e){return t.execution_principal_id===e.execution_principal_id&&t.execution_principal_type===e.execution_principal_type}function LG(t,e){return t.transport==="stdio"&&e.transport==="stdio"?t.command===e.command&&t.use_shell_interpolation===e.use_shell_interpolation&&t.args.length===e.args.length&&t.args.every((r,n)=>r===e.args[n]):t.transport===e.transport&&t.url===e.url}function jG(t,e){return t.transport==="stdio"&&e.type==="stdio"?e.command===t.command&&e.useShellInterpolation===t.use_shell_interpolation&&e.args.length===t.args.length&&e.args.every((r,n)=>r===t.args[n]):e.type!=="stdio"&&t.transport===e.type&&e.url===t.url&&e.auth==="oauth"==(t.auth_type==="oauth")}function Ok(t,e){return om(t,e)&&t.config_id===e.config_id&&t.server_name===e.server_name&&LG(t,e)&&t.route_revision===e.route_revision&&t.ownership===e.ownership&&t.auth_type===e.auth_type}function FG(t,e){let r=Object.keys(t.static_secrets??{});return t.access_token===e.access_token&&r.length===Object.keys(e.static_secrets??{}).length&&r.every(n=>t.static_secrets?.[n]===e.static_secrets?.[n])}function UG(t,e){let r=Pi((e.type==="stdio"?e.env:e.headers)??{}),n=Object.keys(t.static_secrets??{});return t.auth_type==="static"?r.length>0&&r.length===n.length&&n.every(o=>r.includes(o)):r.length===0}var Ru=class{#t=new Map;#o=new WeakSet;#r=new WeakSet;#e;#n;#i=Symbol("mcp-connection");get epoch(){return this.#i}get hasConnection(){return this.#e!==void 0}revokeConnection(){this.#t.clear(),this.#r=new WeakSet,this.#n=void 0,this.#e=void 0,this.#i=Symbol("mcp-connection")}setConnection(e){return im(e)?this.#e?.vmId===e.vmId&&this.#e.connectionVersion===e.connectionVersion?!1:(this.revokeConnection(),this.#e={...e},!0):(this.revokeConnection(),!0)}has(e){return this.#t.has(e)||[...this.#t.values()].some(r=>r.material.server_name===e)}hasTargetProvenance(e){return this.#o.has(e)}trusts(e){return this.#r.has(e)}retainSelection(e){for(let[r,n]of this.#t)e.has(r)||this.#r.delete(n.config)}config(e){return this.#t.get(e)?.config}validate(e,r,n){let o=this.#t.get(e.config_id);if(!this.#e||e.vm_id!==this.#e.vmId||e.connection_version!==this.#e.connectionVersion||this.#n&&!om(e,this.#n))return!1;if(e.operation==="retire")return!n&&!!o&&this.#r.has(r)&&o.config===r&&om(e,o.material)&&e.binding_generation===o.material.binding_generation;if(r.disabled||!r.registrySource||r.vfsSource||r.id!==e.config_id||r.name!==e.server_name||!jG(e,r)||!n&&(!o||!this.#r.has(r)||!Ok(e,o.material))||!UG(e,r))return!1;if(!o)return!0;let i=BigInt(e.binding_generation)-BigInt(o.material.binding_generation);return i>=0n&&(i!==0n||o.material.operation==="install"&&Ok(e,o.material)&&FG(e,o.material))}commit(e,r){let n=Object.freeze({...e,...e.transport==="stdio"?{args:Object.freeze([...e.args])}:{},...e.static_secrets?{static_secrets:Object.freeze({...e.static_secrets})}:{}});this.#t.set(e.config_id,{material:n,config:r,epoch:Symbol("target-material")}),this.#r.add(r),this.#o.add(r),this.#n??={...n,access_token:void 0,static_secrets:void 0}}auth(e){if(!this.#r.has(e)||!e.id)return;let r=this.#t.get(e.id)?.epoch,n=()=>{let i=this.#t.get(e.id??"");if(!i||!this.#r.has(e)||i.epoch!==r||i.material.operation!=="install"||i.config!==e||i.material.vm_id!==this.#e?.vmId||i.material.connection_version!==this.#e.connectionVersion)throw new Error("MCP target material is unavailable");return i.material},o=n();return{...o.ownership==="recipient"?{credential:Object.freeze({revision:o.binding_generation,domain:`recipient:${o.config_id}`})}:{},validateUrl:i=>{let s=n();if(s.transport==="stdio")throw new Error("MCP target destination is unavailable");let a=new URL(i),c=new URL(s.url);if(a.username||a.password||a.hash||(s.transport==="sse"?a.origin!==c.origin:a.href!==c.href))throw new Error("MCP target destination is unavailable")},getSecret:async i=>n().static_secrets?.[i],headers:()=>{let i=n();return i.auth_type==="oauth"?{Authorization:`Bearer ${i.access_token}`}:{}}}}};function Nk(t){return IG("sha256").update(t).digest("hex")}function Dk(t){let e=new Map;if(t===void 0)return e;if(typeof t!="string")throw new Error("Invalid MCP config map");let r=JSON.parse(t);if(!Array.isArray(r)||r.some(a=>!Re(a)||!Re(a.config)))throw new Error("Invalid MCP config map");let n=0,o=!1,i=!1,s=-1;for(let a=0;a<t.length;a++){let c=t[a];if(o){i?i=!1:c==="\\"?i=!0:c==='"'&&(o=!1);continue}if(c==='"'&&(o=!0),(c==="{"||c==="[")&&(n===1&&(s=a),n++),(c==="}"||c==="]")&&(n--,n===1&&s>=0)){let u=t.slice(s,a+1),d=JSON.parse(u);if(!Re(d)||typeof d.id!="string"||e.has(d.id))throw new Error("Invalid MCP config map");e.set(d.id,u),s=-1}}return e}function qG(t,e){let r=t.args===void 0?[]:t.args,n=t.use_shell_interpolation===void 0?!1:t.use_shell_interpolation;return(t.url===void 0||t.url==="")&&t.command===e.command&&Array.isArray(r)&&r.length===e.args.length&&r.every((o,i)=>o===e.args[i])&&n===e.use_shell_interpolation}function HG(t){return t.env!==void 0&&(!Re(t.env)||Object.values(t.env).some(e=>typeof e!="string"))?!1:t.timeout_ms===void 0||typeof t.timeout_ms=="number"&&Number.isSafeInteger(t.timeout_ms)&&t.timeout_ms>=0}function GG(t,e,r){if(typeof t!="string"||Nk(t)!==e.route_revision)return;let n=JSON.parse(t);if(!Re(n)||!Re(n.config)||n.id!==e.config_id||n.config.auth_type!=={oauth:2,static:3,none:1}[e.auth_type])return;let i=n.config;if(i.type!==void 0&&i.type!==e.transport||i.name!==e.server_name||i.disabled!==void 0&&i.disabled!==!1||!HG(i))return;let s={id:e.config_id,name:e.server_name,registrySource:"tenant",...i.timeout_ms?{timeoutMs:i.timeout_ms}:{}},a=i.env?Object.freeze({...i.env}):void 0;if(e.transport==="stdio"){if(!qG(i,e))return;let c=[...e.args];return Object.freeze(c),Object.freeze({...s,type:"stdio",command:e.command,args:c,useShellInterpolation:e.use_shell_interpolation,cwd:r??process.cwd(),env:a})}if(i.url===e.url)return Object.freeze({...s,type:e.transport,url:e.url,...e.auth_type==="oauth"?{auth:"oauth"}:{},...a?{headers:a}:{}})}function Lk(t,e){if(!Re(e)||!Re(e.credentials))return;let r=t.targetMaterialStore;if(!r?.hasConnection)return;let n=Object.entries(e.credentials),o=e.kind==="boot";if(!o&&(e.version!==1||n.length!==1||e.kind!=="add"&&e.kind!=="restart"||e.hasLegacySecrets===!0))return;let i=o?Dk(e.configsJson):new Map;if(o&&(e.headerSecrets!==void 0&&(!Re(e.headerSecrets)||Object.values(e.headerSecrets).some(u=>u!==null&&typeof u!="string"))||e.configIds!==void 0&&(!Array.isArray(e.configIds)||e.configIds.some(u=>typeof u!="string"||!u)||new Set(e.configIds).size!==e.configIds.length)))return;let s=[],a=new Set,c;for(let[u,d]of n){if(o&&Re(d)&&!Object.hasOwn(d,"target_material")){if(![...i.values()].some(w=>{let b=JSON.parse(w);return Re(b)&&Re(b.config)&&b.config.name===u&&(!Array.isArray(e.configIds)||e.configIds.includes(b.id))})&&(e.configsJson!==void 0||e.configIds!==void 0)||r.has(u)||yr({store:t.tokens,serverName:u,proto:d,options:{requireEqualMaterial:!0}}).decision==="reject")return;continue}if(!Re(d)||Object.entries(d).some(([v,w])=>v!=="target_material"&&w!==""))return;let l=zk(d.target_material);if(!l||l.server_name!==u||a.has(l.config_id))return;let f=JSON.stringify([l.execution_principal_id,l.execution_principal_type]);if(c!==void 0&&c!==f||(c=f,a.add(l.config_id),!o&&e.target!==(e.kind==="add"?l.config_id:u)))return;let p=o||e.kind==="add";if(p&&l.operation!=="install")return;let m=p?GG(o?i.get(l.config_id):e.config,l,t.workspaceRoot):r.config(l.config_id);if(!m||!r.validate(l,m,p)||o&&Array.isArray(e.configIds)&&!e.configIds.includes(l.config_id))return;let h=t.servers.get(m.name),g=t.hostLeases.get(m.name);if(h&&!r.trusts(h.config)&&!Gn(h.config)&&!r.hasTargetProvenance(h.config)||h&&(h.config.registrySource===void 0||h.config.vfsSource!==void 0||h.config.id!==l.config_id)||h&&(!g||g.host!==h)||g&&(g.owner.kind!=="registry"||g.owner.identity!==`user:${l.config_id}`))return;s.push({material:l,config:m})}if(!(o&&[...i.keys()].some(u=>r.has(u)&&!a.has(u)&&(!Array.isArray(e.configIds)||e.configIds.includes(u))))){if(o&&i.size>0){let u=Jo(e.configsJson,t.workspaceRoot,new Map(s.map(({material:d,config:l})=>[d.config_id,l])));if(!u||u.allConfigsById.size!==i.size||[...u.allConfigsById.values()].some(d=>!d.config)||new Set([...u.allConfigsById.values()].map(d=>d.name)).size!==i.size)return}return s}}async function ZG(t){let{pi:e,state:r,data:n}=t;if(!Re(n)||n.kind!=="boot")return!1;let o=r.targetMaterialStore;if(!o?.hasConnection)return!1;let i,s;try{i=Lk(r,n);let p=n.configsJson===void 0?void 0:JSON.parse(n.configsJson);if(p!==void 0&&!Array.isArray(p))return!1;s=p}catch{return!1}if(!i)return!1;let a=o.epoch,c=()=>o.epoch===a,u=n.configIds;u===void 0&&s!==void 0&&(u=[...Dk(n.configsJson).keys()]);let d=new Map(i.map(p=>[p.material.config_id,p.config]));o.retainSelection(new Set(d.keys()));for(let{material:p,config:m}of i)o.commit(p,m);r.mcpAttachCloudSignaled||(r.mcpAttachCloudSignaled=!0,Bs(r.currentLoad?.latestPi??e,r)),r.embeddedRegistryConfigs=s;let l=Su({pi:e,state:r,data:{configIds:u},admittedConfigs:d,deps:{connect:(p,m,h,g)=>{if(!c())return Promise.resolve([]);let v=p.map(w=>{let b=w.id?d.get(w.id):void 0;if(!b&&w.id&&o.has(w.id))throw new Error("MCP target material is unavailable");return b??w});return Ve(v,m,h,w=>c()&&(g?.(w)??!0))}}});if(c()&&typeof n.onAdmitted=="function"&&n.onAdmitted(c),await l,!c())return!1;let f=r.currentLoad?.latestPi??e;return j(f,r),_e(r),Vo(f,r),!0}async function BG(t){let{pi:e,state:r,data:n}=t;if(!Re(n))return!1;if(n.kind==="boot")return ZG(t);let o;try{o=Lk(r,n)}catch{return!1}let i=o?.[0],s=r.targetMaterialStore;return!i||o?.length!==1||!s?!1:await WG({pi:e,state:r,data:n,candidate:i,store:s})}async function WG(t){let{pi:e,state:r,data:n,candidate:o,store:i}=t,{material:s,config:a}=o,c={state:r,configId:s.config_id,generation:n.attachmentGeneration};if(n.kind==="add"){if(!Xn(c))return!1}else if(r.sessionRemovedConfigIds.has(s.config_id))return!1;let u=i.epoch,d=r.attachmentCommandGenerations?.get(s.config_id),l=()=>i.epoch===u&&r.attachmentCommandGenerations?.get(s.config_id)===d,f=!1;try{i.commit(s,a);let p=n.kind==="add"||r.dynamicallyAddedConfigIds.has(s.config_id);return[...r.servers.values()].find(h=>h.config.id===s.config_id&&h.config.registrySource!==void 0&&(i.hasTargetProvenance(h.config)||Gn(h.config)))&&await wu({pi:e,state:r,data:{configId:s.config_id},replacement:!0}),!l()||(r.sessionRemovedConfigIds.delete(s.config_id),p?r.dynamicallyAddedConfigIds.add(s.config_id):r.dynamicallyAddedConfigIds.delete(s.config_id),s.operation!=="retire"&&(await Ve([a],r,e,l),!l()))?!1:(j(e,r),f=!0,!0)}finally{n.kind==="add"&&(f?ed(c):ia(c))}}function Ws(t,e){let r=t.mcpConnectionEpoch,n=(t.targetMaterialQueue??Promise.resolve()).then(()=>t.mcpConnectionEpoch===r?e():void 0).then(()=>{});return t.targetMaterialQueue=n.catch(()=>{}),n}function VG(t,e){t.registryGeneration++,Wm(t),t.headerSecrets={},t.headerSecretFailures={},t.mcpCatalog=void 0,t.mcpAttachDisabled=!1,t.catalogRefreshInFlight=void 0;let r=[];for(let[n,o]of t.hostLeases){if(o.owner.kind!=="registry")continue;t.configRevisions.set(n,(t.configRevisions.get(n)??0)+1),t.tokens.clearLocalCredential(n);let i=t.oauthCredentialDomains.get(n);i&&t.oauthCredentialRevisions.delete(i),t.oauthCredentialDomains.delete(n),t.credentialRevisions.delete(n),t.stagedOAuthCredentials.delete(n);let s=o.host;if(!s)continue;s.beginDisposal?.();let a=st({state:t,name:n,owner:o.owner,revision:o.revision,host:s});a&&r.push(s.dispose({strict:!0}).then(()=>{ve({state:t,name:n,retirement:a,result:{status:"retired"}})},c=>{ve({state:t,name:n,retirement:a,result:{status:"failed",error:c}}),t.diagnostics.push({origin:"registry",message:"Previous MCP connection could not be retired safely"}),j(e,t)}))}t.targetMaterialQueue=Promise.all([t.targetMaterialQueue??Promise.resolve(),...r]).then(()=>{}),j(e,t)}function jk(t,e){e.targetMaterialListenerBound||(e.targetMaterialListenerBound=!0,e.targetMaterialStore??=new Ru,t.events.on("augment:mcp-target-connection",r=>{let n=e.targetMaterialStore;if(n){if(im(r)){if(!n.setConnection(r))return}else n.revokeConnection(),e.diagnostics.push({origin:"registry",message:"MCP connection metadata is invalid; previous credential authority was revoked"});e.mcpConnectionEpoch=n.epoch,VG(e,t)}}),t.events.on("augment:mcp-target-material",r=>{let n=e.targetMaterialStore?.epoch;Ws(e,async()=>{if(e.targetMaterialStore?.epoch!==n)return;!await BG({pi:t,state:e,data:r})&&e.targetMaterialStore?.epoch===n&&(e.diagnostics.push({origin:"registry",message:"MCP configuration update was rejected; a fresh authorized configuration is required"}),j(t,e))}).catch(()=>{e.targetMaterialStore?.epoch===n&&(e.diagnostics.push({origin:"registry",message:"MCP snapshot application failed"}),j(t,e))})}))}import{logger as aZ}from"@hermes/logger";import{execFile as sm}from"node:child_process";import{win32 as am}from"node:path";import{logger as KG}from"@hermes/logger";var JG=5e3,YG=/^[a-z]:[\\/]/i,XG=/[<>:"|?*]/;function QG(){let t=process.env.SystemRoot??process.env.WINDIR;return!t||t!==t.trim()||!YG.test(t)||!am.isAbsolute(t)||t.slice(3).split(/[\\/]+/).some(n=>n==="."||n===".."||n.endsWith(".")||n.endsWith(" ")||XG.test(n)||[...n].some(o=>o.charCodeAt(0)<32))?null:am.join(am.normalize(t),"System32","WindowsPowerShell","v1.0","powershell.exe")}function eZ(t){let e=t.replaceAll("'","''");return Buffer.from(`Start-Process -FilePath '${e}'`,"utf16le").toString("base64")}function tZ(t,e){switch(process.platform){case"darwin":return sm("open",[t],e);case"win32":{let r=QG();return r?sm(r,["-NoProfile","-NonInteractive","-EncodedCommand",eZ(t)],e):(e(new Error("Windows system root metadata is invalid")),null)}default:return sm("xdg-open",[t],e)}}function Fk(t,e=JG){let r=KG.child({prefix:"open-browser"});return new Promise(n=>{let o;try{let c=new URL(t);if(c.protocol!=="http:"&&c.protocol!=="https:"){r.warn("Refusing to open browser for a non-http(s) URL"),n(!1);return}o=c.toString()}catch{r.warn("Refusing to open browser for an unparseable URL"),n(!1);return}let i=!1,s=null,a=setTimeout(()=>{if(!i){i=!0,r.warn("Browser open timed out (no display on a remote machine?)");try{s?.kill()}catch(c){r.debug("Failed to kill browser-open child process",{error:c})}n(!1)}},e);s=tZ(o,c=>{i||(i=!0,clearTimeout(a),c?(r.warn("Failed to open browser",{error:c}),n(!1)):n(!0))})})}import{createServer as rZ}from"node:http";function Cu(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function Uk(t){let e=Cu(t.title),r=Cu(t.heading),n=Cu(t.message),o=t.details?Cu(t.details):void 0,i=t.autoClose?"<script>setTimeout(() => window.close(), 2000);</script>":"";return`<!doctype html>
101
+ `).map(i=>i.trim()).filter(i=>i.length>0),o=Cq(n);return o?t?`${t}: ${o}`:o:t}catch{return t}}var xq=6e5,kq=18e5,Vx=2147483647,Eq=3e4,Kx=1e4,ek=[250,1e3,2e3],qn=class extends Error{constructor(){super("MCP OAuth refresh is temporarily unavailable"),this.name="RefreshUnavailableError"}},Hs=class extends Error{retryable=!0;constructor(){super("MCP authentication refresh is pending in the backend; retry shortly"),this.name="BackendRefreshPendingError"}},Tq=250,Jx=3,Aq=[200,500];function Mq(t){for(let e of Object.values(t))if(Ir(e))return!0;return!1}function Gh(t){let e=new Set;for(let r of t.matchAll(Ci))e.add(Ta(r[0]));return[...e].sort()}function Zh(t){return[...new Set(t)].sort()}function Yx(t,e){return jy(e.map(r=>t?.[r]??"missing"))}function $q({source:t,sourceHasSecretRef:e,command:r,commandHasSecretRef:n,args:o}){return Zh([...e&&t?Pi(t):[],...n&&r?Gh(r):[],...o.flatMap(Gh)])}var cu="${augmentToken}";function Iq(t){try{let e=new URL(t);if(e.protocol!=="https:")return!1;let{hostname:r}=e;return r==="augmentcode.com"||r.endsWith(".augmentcode.com")}catch{return!1}}function Oq(t){try{let e=new URL(t);return`${e.protocol}//${e.hostname}`}catch{return"<invalid URL>"}}var tk="(unknown uri)",Bh="unknown",Xx=/=+$/,zq=/\s+/g,Nq=/[-_]/g,Dq=new Set(["image/jpeg","image/png","image/gif","image/webp"]);function Hn(t,e){return typeof t=="string"?t:e}function rk(t){return typeof t=="string"?Buffer.from(t,"base64").length:0}function Lq(t){let e=t.toLowerCase();return e.startsWith("text/")||e==="application/json"||e==="application/xml"||e.endsWith("+json")||e.endsWith("+xml")}function jq(t){let e=t.replace(zq,"").replace(Nq,i=>i==="-"?"+":"/"),r=Buffer.from(e,"base64"),n=e.replace(Xx,"");if(r.toString("base64").replace(Xx,"")!==n)return;let o=r.toString("utf-8");return o.length>0?o:void 0}function nk(t){return t.resource&&typeof t.resource=="object"?t.resource:void 0}function Fq(t){let e=nk(t);if(!e)return"[MCP resource with no contents]";if(typeof e.text=="string")return e.text;let r=Hn(e.uri,tk),n=Hn(e.mimeType,Bh);if(typeof e.blob=="string"&&Lq(n)){let i=jq(e.blob);if(i!==void 0)return i}let o=rk(e.blob);return`[MCP resource ${r} (${n}), ${o} bytes of binary content not shown]`}function Uq(t){let e=Hn(t.type,"unknown");if(e==="resource")return Fq(t);if(e==="audio"){let r=Hn(t.mimeType,Bh),n=rk(t.data);return`[MCP audio content (${r}), ${n} bytes not shown]`}if(e==="resource_link"){let r=Hn(t.uri,tk),n=Hn(t.name,""),o=Hn(t.mimeType,Bh);return`[MCP resource link ${n?`${n} `:""}${r} (${o})]`}return`[MCP content of unsupported type "${e}" was omitted]`}function qq(t){if(t.type!=="resource")return;let e=nk(t);if(!e)return;let{blob:r,mimeType:n}=e;if(typeof r=="string"&&typeof n=="string"&&Dq.has(n.toLowerCase()))return{type:"image",mimeType:n,data:r}}function Hq(t){if(t.type==="text"&&typeof t.text=="string")return{type:"text",text:t.text};if(t.type==="image"&&typeof t.data=="string"&&typeof t.mimeType=="string")return{type:"image",mimeType:t.mimeType,data:t.data};let e=qq(t);return e||{type:"text",text:Uq(t)}}function Gq(t){let e=[];if(!Array.isArray(t))return e;for(let r of t){if(typeof r!="object"||r===null)continue;let n=r;typeof n.type=="string"&&e.push(Hq(n))}return e}function Zq(t){return Ay(t,_q)}function ok(t,e){let r=Gq(t);if(r.length===0){let o=Zq(e);o!==void 0&&r.push({type:"text",text:o})}let n=0;return Array.isArray(t)?n=t.length:t!=null&&(n=1),{content:r,rawItemCount:n}}function Bq(t,e){let r=ok(e?.value(t.content),e?.value(t.structuredContent)),n=r.content.flatMap(o=>o.type==="text"?[{type:"text",text:e?.text(o.text)??""}]:[]);return n.length===0&&n.push({type:"text",text:"MCP stdio tool failed; no usable secret-free diagnostic content"}),{isError:!0,content:n,rawItemCount:r.rawItemCount}}var ik=new Set(["UND_ERR_SOCKET","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","ECONNREFUSED","ECONNRESET","EPIPE","ENOTFOUND","EAI_AGAIN","ETIMEDOUT"]),Wq=new Set([502,503,504]),Gs=ek.length+1,Vq=2;function Kq(t){let r=t?.cause?.code;if(typeof r=="string")return r;let n=t?.status;if(typeof n=="number")return String(n);let o=t?.code;return typeof o=="number"?String(o):void 0}function Jq(t){if(Ct(t)||Hh(t)||t instanceof mt)return;let e=t?.cause?.code;if(typeof e=="string")return ik.has(e)?{totalAttempts:Gs}:void 0;let r=t?.status??t?.code;return typeof r=="number"?r===524?{totalAttempts:Vq}:Wq.has(r)?{totalAttempts:Gs}:void 0:t instanceof TypeError&&t.message==="fetch failed"?{totalAttempts:Gs}:void 0}var Yq=80,Xq=10,Qq=/[^a-zA-Z0-9_.()-]/g,eH=new Set(["Error","McpError","McpSecretResolutionError","McpTransportClosedError","McpTransportFailure","MalformedRefreshResponseError","RefreshHttpError","SseError","StreamableHTTPError","TypeError","ZodError"]);function uu(t){return t.replace(Qq,"_").slice(0,Yq)||"unknown"}function tH(t){let e=Kq(t);if(e!==void 0&&(/^\d{3}$/.test(e)||ik.has(e)))return e}function Be(t){if(!(t instanceof Error))return"unknown";let e=t.constructor.name,r=eH.has(e)?e:"Error",n=tH(t);return n===void 0?r:`${r}(${n})`}function rH(t,e,r){return t instanceof mt?new mt(uu(t.serverName),t.missingKeys.slice(0,Xq).map(uu),void 0,t.reason).message:t instanceof Un?t.message:`MCP ${r} ${e} failed (${Be(t)})`}function Wo(t,e){let r=new Error(t);return Object.defineProperty(r,"name",{value:uu(e),configurable:!0}),r.stack=`${r.name}: ${t}`,r}var du=class extends Error{operation="transport";transport;kind;constructor(e,r){super(`MCP ${e} transport ${r}`),this.transport=e,this.kind=r}},lu=class{name;_config;_hostedCredentialProvenance;_client;_stdioTransport;_status;_lastError;_tools=[];_connectPromise;_connectStartedAt;_refreshPromise;_refreshPersisting=!1;_disposing=!1;_disposed=!1;_resolvedEnv;_resolvedHeaders;_resolvedCommand;_resolvedArgs;onStateChange;_lastEmittedState;_activeTransport;_reinitializingPromise;_inFlightCalls=new Set;_wedgeRecoveryOwners=new Set;_wedgePending=!1;_wedgeRequired=!1;_heartbeatTimer;_lastProbeResult;onWedged;onAuthRefreshNeeded;onAuthRefreshCleared;onToolsChanged;onToolsWithdraw;_targetAuth;_suppressStdioDiagnostics;_toolErrorRedactor;constructor(e,r){this._config=e,this._targetAuth=ee().targetMaterialStore?.auth(e),this._suppressStdioDiagnostics=e.type==="stdio"&&this._targetAuth?.credential!==void 0,this._hostedCredentialProvenance=r?Object.freeze({...r}):void 0,this.name=e.name,this._status=e.disabled?"disabled":"initializing"}_emitState(e,r){if(e!==this._lastEmittedState){this._lastEmittedState=e;try{this.onStateChange?.(e,r)}catch{}}}get targetCredentialProvenance(){return this._targetAuth?{credential:this._targetAuth.credential}:void 0}get status(){return this._status}get config(){return this._config}get hostedCredentialProvenance(){return this._hostedCredentialProvenance}get lastError(){return this._lastError}get suppressesProviderDiagnostics(){return this._suppressStdioDiagnostics}get connectStartedAt(){return this._connectStartedAt}get tools(){return this._tools}getLogHistory(){return this._suppressStdioDiagnostics?[]:this._stdioTransport?.getLogHistory().map(e=>Gd(e))??[]}connect(){return this._disposing||this._disposed||this._status==="disabled"?Promise.resolve():this._connectPromise?this._connectPromise:(this._connectStartedAt=Date.now(),this._emitState("connecting"),this._connectPromise=this._doConnect().catch(e=>{Y.warn(`MCP server "${this.name}" connect failed (${Be(e)})`)}),this._connectPromise)}async _doConnect(){let e;try{e=await this._connectWithRetries()}catch(r){if(this._disposed)return;let n=this._connectFailureMessage(r,"connect"),o=this._config.type==="stdio"&&!this._suppressStdioDiagnostics&&!Ct(r)?Gd(Pq(n,e??this._stdioTransport)):n;this._recordConnectFailure(r,"connect",o),this._emitState(this._status==="auth_required"?"auth_required":"failed",Be(r))}}async _connectWithRetries(){let e=Gs,r={available:!0};for(let n=1;n<=Gs;n++)try{let o=await this._attemptConnect(r);return n>1&&Y.info(`MCP server "${this.name}" connected on attempt ${n}/${e}`),o}catch(o){if(!r.available)throw o;let i=Jq(o);if(i===void 0||this._disposed||(e=Math.min(e,i.totalAttempts),n>=e))throw o;if(await this._backoffBeforeRetry(o,n,e),this._disposed)return}}async _backoffBeforeRetry(e,r,n){let i=(ek[r-1]??0)+Math.floor(Math.random()*(Tq+1));Y.warn(`MCP server "${this.name}" connect attempt ${r}/${n} failed with transient ${Be(e)}; retrying in ${i}ms`),await ln(i)}async _attemptConnect(e){let r=this._config;(r.type==="http"||r.type==="sse")&&await this._maybeProactiveRefresh(),this._expandAugmentToken(),await this._resolveSecretRefs();let n=!1;for(;;)try{return await this._initializeFreshClient(e)}catch(o){if(this._disposed)return;if(!n&&e.available&&this._canRecoverInitialization(o)){if(n=!0,await this._recoverStartupAuthentication(o,e)==="disposed")return;continue}throw o}}_canRecoverInitialization(e){return Ct(e)&&this.hasRefreshEligibleOAuthCredential()&&!!this._usableToken()?.refreshToken}async _recoverStartupAuthentication(e,r){if(r.available=!1,this._disposed)return"disposed";let n=await this._refreshTokenDeduped();if(this._disposed)return"disposed";if(n.kind==="refreshed")return"retry";throw n.kind==="transient_failure"?new qn:e}async _initializeFreshClient(e){let r=this._config,n=this._createTransport(),o=r.type==="stdio"?n:void 0;o&&(this._stdioTransport=o);let i=Fx();this._client=i;let s;try{if(await Uh({operation:"connect",onFailure:u=>{s=u}},()=>i.connect(n)),this._disposed)return await this._closeFailedInitialization(i,n),o;i.setNotificationHandler(Ux,()=>{Y.debug(`MCP server "${this.name}" sent tools/list_changed; refreshing tools`),this._refreshTools()});let a=await this._listToolsWithAuthRetry(e);if(this._disposed)return await this._closeFailedInitialization(i,n),o;this._tools=this._safeTools(a.tools??[]),this._status="success",this._lastError=void 0,this._emitState("connected"),this._wireLivenessHandlers(),this._startHeartbeat();let c=ee();return c.tokens.clearAuthRequired(this.name),(c.servers.get(this.name)===void 0||c.servers.get(this.name)===this)&&it(c,this.name),Y.info(`MCP server "${this.name}" connected (${this._tools.length} tool(s))`),o}catch(a){throw await this._closeFailedInitialization(i,n),s??a}}async _closeFailedInitialization(e,r){if(this._client===e){this._client=void 0,this._activeTransport===r&&(this._activeTransport=void 0);try{await e.close()}catch(n){Y.debug(`MCP server "${this.name}" close after failed connect attempt (${Be(n)})`)}}}_connectFailureMessage(e,r){return this._suppressStdioDiagnostics?"MCP stdio connection failed; provider diagnostics are suppressed to protect credentials":rH(e,r,this._config.type)}_recordConnectFailure(e,r,n=this._connectFailureMessage(e,r)){if(e instanceof mt){this._status="failed";let o=ee();ri(o,this.name,e.reason,rr(o,this.name,this._config.id))}else if(e instanceof Hs||e instanceof qn)this._status="failed";else if(Ct(e)&&this._isHostedAccessTokenOnly())this._status="failed",this.onAuthRefreshNeeded?.();else if(Ct(e)){this._status="auth_required";let o=ee(),i=o.servers.get(this.name);(i===void 0||i===this)&&o.tokens.markAuthRequired(this.name)}else{this._status="failed";let o=this._connectFailureMessage(e,r);Ea(Wo(o,Be(e)),{server:this.name,op:r,transport:this._config.type})}this._lastError=n,this._client=void 0}_createTransport(){let e=this._config,r=ee().targetMaterialStore;if(!this._targetAuth&&(r?.has(e.name)||e.id&&r?.has(e.id)))throw new Error("MCP target provenance is unavailable");switch(this._targetAuth?.headers(),e.type){case"stdio":{let n=Ix({...e,command:this._resolvedCommand??e.command,args:this._resolvedArgs??e.args}),o=Ox(this._resolvedEnv??e.env);return Nx({command:n.command,args:n.args,env:o,cwd:e.cwd,...this._suppressStdioDiagnostics?{suppressStderr:!0}:{}})}case"http":return this._createHttpTransport(e.url,this._resolvedHeaders??e.headers??{});case"sse":return jx(e.url,{headers:this._resolvedHeaders??e.headers??{},getHeaders:()=>this._buildAuthHeaders(),...this._targetAuth?{validateUrl:this._targetAuth.validateUrl}:{}});default:return e}}_createHttpTransport(e,r){let n=Lx(e,{headers:r,getHeaders:()=>this._buildAuthHeaders(),...this._targetAuth?{validateUrl:this._targetAuth.validateUrl}:{}});return this._activeTransport=n,n}async _resolveSecretRefs(){let e=this._config,r=e.type==="stdio"?e.env:this._resolvedHeaders??e.headers,n=r?Mq(r):!1,o=e.type==="stdio"&&Ir(e.command),i=e.type==="stdio"?e.args:[],s=i.some(Ir);if(!(n||o||s))return;let a=ee();if(!this._targetAuth&&!Ly(a)){let u=$q({source:r,sourceHasSecretRef:n,command:e.type==="stdio"?e.command:void 0,commandHasSecretRef:o,args:i});throw new mt(this.name,u)}let c=this._targetAuth?.getSecret??Ny(a);if(n&&r&&await this._resolveMapSecretRefs(r,c,e.type==="stdio"),o&&e.type==="stdio"&&(this._resolvedCommand=await this._resolveCommandSecretRefs(e.command,c,e.useShellInterpolation)),s){let u=[];for(let d of i)u.push(await this._resolveCommandSecretRefs(d,c,!1));this._resolvedArgs=u}}async _resolveMapSecretRefs(e,r,n){let o,i=new Set,s=async c=>{let u=await r(c);return this._suppressStdioDiagnostics&&typeof u=="string"&&i.add(u),u};try{o=await Uy({configEnv:e,localEnv:n&&!this._targetAuth?zx():{},getSecret:s})}catch(c){throw Y.error(`MCP server "${this.name}" secret resolution failed (${Be(c)})`),new mt(this.name,Pi(e),c,"transient")}let a=Zh([...o.unresolvedKeys,...o.emptyKeys]);if(a.length>0)throw new mt(this.name,a,void 0,Yx(o.failureReasons,a));if(this._targetAuth){if(this._disposed)return;this._targetAuth.headers()}n?(this._suppressStdioDiagnostics&&(this._toolErrorRedactor=Ey(i)),this._resolvedEnv=o.resolved):this._resolvedHeaders=o.resolved}async _resolveCommandSecretRefs(e,r,n){let o;try{o=await qy(e,r,n)}catch(s){throw Y.error(`MCP server "${this.name}" command secret resolution failed (${Be(s)})`),new mt(this.name,Gh(e),s,"transient")}let i=Zh([...o.unresolvedKeys,...o.emptyKeys]);if(i.length>0)throw new mt(this.name,i,void 0,Yx(o.failureReasons,i));return o.resolved}_expandAugmentToken(){if(this._targetAuth)return;let e=this._config;if(e.type!=="http"&&e.type!=="sse")return;let r=e.headers;if(!r||!Object.values(r).some(s=>s.includes(cu)))return;let o;if(Iq(e.url)){let s=ee().credentials?.apiKey;s?o=s:this._recordTokenDiagnostic(`${cu} in a header but no Augment credentials are available; sending the literal placeholder`,"warn")}else this._recordTokenDiagnostic(`${cu} in a header is only expanded for https augmentcode.com / *.augmentcode.com URLs; "${Oq(e.url)}" does not qualify, sending the literal placeholder`,"error");if(o===void 0)return;let i={};for(let[s,a]of Object.entries(r))i[s]=a.replaceAll(cu,o);this._resolvedHeaders=i}_recordTokenDiagnostic(e,r){let n=ee();if(n.diagnostics.some(s=>s.server===this.name&&s.message===e))return;n.diagnostics.push({server:this.name,message:e});let i=`MCP server "${this.name}": ${e}`;r==="error"?Y.error(i):Y.warn(i)}_usableToken(){let e=ee();if(this._targetAuth||e.targetMaterialStore?.has(this.name)||this._config.id&&e.targetMaterialStore?.has(this._config.id))return;let r=e.tokens.get(this.name),n=e.preservedCredentialIdentities?.get(this.name);if(!(n&&!ft(n,this._config)))return r}_buildAuthHeaders(){if(this._targetAuth)return this._targetAuth.headers();let e=this._usableToken();return e?.accessToken?{Authorization:`Bearer ${e.accessToken}`}:{}}hasRefreshEligibleOAuthCredential(){let{config:e}=this;if(e.type!=="http"&&e.type!=="sse"||e.disabled||this._hostedCredentialProvenance!==void 0||!this._usableToken())return!1;if(e.auth==="oauth")return!0;let r=ee();return r.tokens.hasCredentialIdentity?.(this.name,qt(r,this))===!0}async _maybeProactiveRefresh(){let e=ee(),r=e.tokens,{config:n}=this;(n.type==="http"||n.type==="sse")&&await r.ensureLoaded?.(this.name,qt(e,this));let i=this._usableToken();i&&this.hasRefreshEligibleOAuthCredential()&&(i.accessToken&&!hd(i)||e.shouldProactivelyRefreshTokens&&(i.refreshToken?await this._refreshTokenDeduped():yi(i)&&e.tokens.markAuthRequired(this.name)))}refreshTokenIfPossible(){return this._refreshTokenDeduped()}getRefreshInFlight(){return this._refreshPromise}_refreshTokenDeduped(){if(this._disposing||this._disposed)return Promise.resolve({kind:"transient_failure"});let e=ee(),r=e.refreshes.get(this.name);if(r)return r.then(a=>a??{kind:"refreshed"});let n={state:e,tokenStore:e.tokens,serverGeneration:e.serverGenerations.get(this.name)??0,configRevision:e.configRevisions.get(this.name)??0,credential:e.credentialRevisions.get(this.name),localRefreshEnabled:e.shouldProactivelyRefreshTokens,failureScope:rr(e,this.name,this._config.id),token:this._usableToken(),hostWasUntracked:e.servers.get(this.name)===void 0},o=JSON.stringify([this.name,n.serverGeneration,n.configRevision,n.credential?.domain??null,n.credential?.revision??null]),i=e.refreshes.get(o);if(i)return i.then(a=>a??{kind:"refreshed"});let s=this._performTokenRefresh(n).finally(()=>{this._refreshPersisting=!1,e.refreshes.get(o)===s&&e.refreshes.delete(o),this._refreshPromise===s&&(this._refreshPromise=void 0)});return this._refreshPromise=s,e.refreshes.set(o,s),s}_ownsRefresh(e){let{state:r}=e,n=r.credentialRevisions.get(this.name),o=N(r,this.name)?.retirement?.incumbent.host,i=r.servers.get(this.name)===this||this._refreshPersisting&&o===this||e.hostWasUntracked&&r.servers.get(this.name)===void 0;return(!this._disposing||this._refreshPersisting)&&i&&(r.serverGenerations.get(this.name)??0)===e.serverGeneration&&(r.configRevisions.get(this.name)??0)===e.configRevision&&this._ownsRefreshCredential(e,n)&&(e.localRefreshEnabled===r.shouldProactivelyRefreshTokens||this._refreshPersisting)}_ownsRefreshCredential(e,r){return e.state.tokens===e.tokenStore&&e.tokenStore.get(this.name)===e.token&&r?.domain===e.credential?.domain&&r?.revision===e.credential?.revision}async _restoreAfterSupersededRefresh(e,r,n,o){let i=e.state.servers.get(this.name),s=e.state.tokens,a=s.get(this.name),c=e.state.credentialRevisions.get(this.name);if(s!==e.tokenStore||!i||!a||!ft(this._config,i.config))return;let u=qt(e.state,i),d=n===void 0&&u===void 0||Cr(n,u);try{if(a===e.token&&d){s.commit(this.name,r,n),on({state:e.state,name:this.name,revision:o});return}let l=await s.restoreAfterSupersededRefresh(this.name,r,a,n,o,u);if(!l||e.state.tokens!==s||e.state.servers.get(this.name)!==i||s.get(this.name)!==a||!Cr(qt(e.state,i),u)||e.state.credentialRevisions.get(this.name)?.revision!==c?.revision||e.state.credentialRevisions.get(this.name)?.domain!==c?.domain||s.reconcileCredentialIdentity?.(this.name,a,u)!==!0)return;on({state:e.state,name:this.name,revision:l});let f=e.state.currentLoad?.latestPi;f&&D(f,e.state)}catch{Y.error(`Failed to restore authoritative MCP OAuth token for "${this.name}" after superseded refresh`)}}_refreshFailureCategory(e,r){return r?"auth_terminal":e instanceof Z?"cannot_persist":"refresh_transient"}_handleRefreshFailure(e,r){let n=!(e instanceof Z)&&gd(e),o=this._ownsRefresh(r);return n&&o&&r.state.tokens.markAuthRequired(this.name),o&&ri(r.state,this.name,this._refreshFailureCategory(e,n),r.failureScope),Y.warn(`MCP server "${this.name}" token refresh failed (${n?"permanent \u2014 auth required":"transient \u2014 will retry"}, ${Be(e)})`),n&&o?{kind:"terminal_failure"}:{kind:"transient_failure"}}async _performTokenRefresh(e){if(!e.localRefreshEnabled)return{kind:"transient_failure"};if(!e.token?.refreshToken)return this._ownsRefresh(e)?(e.state.tokens.markAuthRequired(this.name),ri(e.state,this.name,"auth_terminal",e.failureScope),{kind:"terminal_failure"}):{kind:"transient_failure"};try{let r=qt(e.state,this),n=await e.tokenStore.captureRefreshIdentityVersion(r);if(!this._ownsRefresh(e))return{kind:"transient_failure"};let o=await yd(e.token);if(!this._ownsRefresh(e))return{kind:"transient_failure"};this._refreshPersisting=!0;let i=await e.tokenStore.persistRefresh(this.name,o,r,n);if(!this._ownsRefresh(e))return await this._restoreAfterSupersededRefresh(e,o,r,i),{kind:"transient_failure"};e.tokenStore.commit(this.name,o,r),on({state:e.state,name:this.name,revision:i}),it(e.state,this.name);let s=e.state.currentLoad?.latestPi;return s&&D(s,e.state),Y.debug(`MCP server "${this.name}" token refreshed`),{kind:"refreshed"}}catch(r){return this._handleRefreshFailure(r,e)}}_isSessionExpiredError(e){return this._config.type!=="http"||this._activeTransport?.sessionId===void 0?!1:Hh(e)}_reinitializeSession(){return this._reinitializingPromise===void 0&&(this._reinitializingPromise=this._doReinitializeSession().finally(()=>{this._reinitializingPromise=void 0})),this._reinitializingPromise}async _doReinitializeSession(){if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);if(this._config.type!=="http")throw new Error("Session re-initialization is only supported for Streamable HTTP servers");await this._client.close();let e=this._createHttpTransport(this._config.url,this._resolvedHeaders??this._config.headers??{});try{await this._client.connect(e)}catch(r){throw this._recordConnectFailure(r,"reinit"),r}Y.info(`MCP server "${this.name}" re-initialized session`)}async _withSessionRetry(e){if(this._config.type!=="http")return e();try{return await e()}catch(r){let n=this._isSessionExpiredError(r),o=this._reinitializingPromise!==void 0;if(!(n||o))throw r;Y.info(n?`MCP server "${this.name}" returned 404 (session expired); re-initializing and retrying`:`MCP server "${this.name}" call interrupted by a concurrent re-initialization; retrying once`);try{await this._reinitializeSession()}catch(i){throw Y.error(`MCP server "${this.name}" session re-initialization failed (${Be(i)})`),bq(r),r}return await e()}}_throwRefreshUnavailable(e,r,n){throw n&&!r?e:new qn}async _withAuthRetry(e,r,n){let o=this._config,i=ee(),s=rr(i,this.name,this._config.id),a=n?.call;if(o.type!=="http"&&o.type!=="sse")return e();let c=()=>(a&&(a.failure=void 0),Uh({operation:r,onFailure:a?u=>{a.failure=u}:void 0},e));try{let u=await c();return this._clearHostedAuthFailure(),u}catch(u){let d=a?.failure??u;if(this._disposed||!Ct(d))throw d;let l=n?.startupAuthRefreshBudget;if(this._isHostedAccessTokenOnly())throw this.onAuthRefreshNeeded?.(),new Hs;if(this._hostedCredentialProvenance!==void 0)throw new qn;if(!this.hasRefreshEligibleOAuthCredential())throw this._markAuthRequired(d,s),d;if(l&&!l.available)throw this._markAuthRequired(d,s),d;Y.debug(`MCP server "${this.name}" got 401, attempting token refresh + retry`);let f=i.shouldProactivelyRefreshTokens;if(l){if(await this._recoverStartupAuthentication(d,l)==="disposed")throw d}else{let p=await this._refreshTokenDeduped();if(this._disposed)throw d;if(p.kind==="transient_failure"&&this._throwRefreshUnavailable(d,f,n?.preserveAuthErrorOnRefreshUnavailable===!0),p.kind==="terminal_failure")throw this._status="auth_required",d}try{let p=await c();return this._clearHostedAuthFailure(),p}catch(p){let m=a?.failure??p;throw Ct(m)&&this._markAuthRequired(m,s),m}}}_clearHostedAuthFailure(){this._isHostedAccessTokenOnly()&&this.onAuthRefreshCleared?.()}_isHostedAccessTokenOnly(){return this._targetAuth?(this._config.type==="http"||this._config.type==="sse")&&this._config.auth==="oauth"&&this._targetAuth.credential!==void 0:this._hostedCredentialProvenance?.kind==="accepted"&&this._hostedCredentialProvenance.hostedAccessTokenOnly}_markAuthRequired(e,r){let n=ee();ri(n,this.name,"auth_terminal",r)&&(this._status="auth_required",n.tokens.markAuthRequired(this.name),this._emitState("auth_required",Be(e)),Y.warn(`MCP server "${this.name}" still 401 after refresh \u2014 auth_required`))}_wireLivenessHandlers(){let e=this._client;e&&(e.onclose=()=>{this._handleTransportClosed(new du(this._config.type,"closed"))},e.onerror=()=>{this._handleTransportClosed(new du(this._config.type,"error"))})}_startHeartbeat(){this._heartbeatTimer===void 0&&(this._heartbeatTimer=setInterval(()=>{this._sendHeartbeat()},Eq),this._heartbeatTimer.unref?.())}_stopHeartbeat(){this._heartbeatTimer!==void 0&&(clearInterval(this._heartbeatTimer),this._heartbeatTimer=void 0)}async probe(){let e=ee(),r=rr(e,this.name,this._config.id),n=await this._runProbe();for(let s=2;s<=Jx&&n.outcome==="transient";s++)await ln(Aq[s-2]??0),n=await this._runProbe();let o=rr(e,this.name,this._config.id),i=o.serverGeneration===r.serverGeneration&&o.mcpConfigId===r.mcpConfigId&&o.credentialRevision===r.credentialRevision&&o.credentialRevisionDomain===r.credentialRevisionDomain;return i&&n.outcome==="alive"&&it(e,this.name,r),i&&(n.outcome==="alive"||n.outcome==="authFailure")?this._lastProbeResult=n:n.outcome==="inconclusive"?Y.warn(`MCP server "${this.name}" startup verification ping was inconclusive; leaving handshake status intact: ${n.error}`):n.outcome==="transient"&&Y.debug(`MCP server "${this.name}" startup verification ping remained transient after ${Jx} attempts; not caching as failed: ${n.error}`),n}getLastProbeResult(){return this._lastProbeResult}async _runProbe(){let e=!this._client||this._disposed;if(e)return{ok:!1,outcome:"transient",error:"MCP client is not available",isAuthError:!1};try{return await this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.ping({timeout:Kx})},"ping",{preserveAuthErrorOnRefreshUnavailable:!0}),{ok:!0,outcome:"alive"}}catch(r){let n=this._classifyProbeError(r,e);if(n==="alive")return{ok:!0,outcome:"alive"};let o=`MCP startup verification failed (${Be(r)})`,i=`MCP server "${this.name}" failed startup verification ping (${n}): ${o}`;return n==="transient"?Y.debug(i):Y.warn(i),{ok:!1,outcome:n,error:o,isAuthError:n==="authFailure"}}}_classifyProbeError(e,r){return r||!this._client||this._disposed||this._reinitializingPromise!==void 0?"transient":Hx(e)||qh(e)?"alive":Ct(e)?"authFailure":Gx(e)?"transient":"inconclusive"}async _sendHeartbeat(){if(this._inFlightCalls.size===0||this._reinitializingPromise)return;let e=this._client;if(!(!e||this._disposed))try{await e.ping({timeout:Kx})}catch(r){if(this._reinitializingPromise||this._disposed||qh(r))return;Y.warn(`MCP server "${this.name}" failed liveness ping; in-flight tool calls are treated as wedged`),this._failInFlightCalls(new Error(`MCP server "${this.name}" is unresponsive (liveness ping failed)`))}}_handleTransportClosed(e){this._reinitializingPromise||this._disposed||(this._stopHeartbeat(),this._failInFlightCalls(e))}_wedgeRecoveryOwnership(e){let r=e.failure;return Ct(r)?(this._wedgeRecoveryOwners.add(e),"recoverable"):this._isSessionExpiredError(r)?(e.sessionRecoveryOwned=!0,this._wedgeRecoveryOwners.add(e),"recoverable"):this._wedgeRecoveryOwners.has(e)?"owned":"none"}_settleInFlightCall(e,r,n){let o=this._releaseWedgeRecoveryOwner(e,r,n);e.failure=void 0,this._inFlightCalls.delete(e),o&&this.onWedged?.()}_releaseWedgeRecoveryOwner(e,r,n){if(!this._wedgeRecoveryOwners.delete(e)||(!r&&e.sessionRecoveryOwned&&!Ct(n)&&(this._wedgeRequired=!0),this._wedgeRecoveryOwners.size!==0))return!1;let o=this._wedgePending&&this._wedgeRequired;return this._wedgePending=!1,this._wedgeRequired=!1,o}_failInFlightCalls(e,r=!0){let n=[...this._inFlightCalls].filter(c=>!c.livenessRejected);if(n.length===0)return;if(!r){for(let c of n)c.livenessRejected=!0,c.reject(e);Y.warn(`MCP server "${this.name}" failing ${n.length} in-flight tool call(s)`);return}let o=n.map(c=>({call:c,state:this._wedgeRecoveryOwnership(c)})),i=o.some(({state:c})=>c==="recoverable"),s=!1;for(let{call:c,state:u}of o)u==="recoverable"||u==="owned"&&i||(c.livenessRejected=!0,s=!0,c.reject(c.failure??e));let a=n.filter(c=>c.livenessRejected).length;Y.warn(`MCP server "${this.name}" failing ${a} in-flight tool call(s)`),this._wedgeRecoveryOwners.size>0?(this._wedgePending=!0,this._wedgeRequired||=s):s&&this.onWedged?.()}_listToolsWithAuthRetry(e){return this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.listTools()},"list_tools",{startupAuthRefreshBudget:e})}async _refreshTools(){if(!(this._disposed||this._status!=="success"||!this._client))try{let e=await this._listToolsWithAuthRetry();if(this._disposed)return;let r=this._safeTools(e.tools??[]),n=!mq(this._tools,r);if(this._tools=r,n){Y.info(`MCP server "${this.name}" tool list updated (${r.length} tool(s))`);try{this.onToolsChanged?.()}catch(o){Y.warn(`MCP server "${this.name}" onToolsChanged handler threw (${Be(o)})`)}}}catch(e){Y.warn(`MCP server "${this.name}" tools/list_changed refresh failed (${Be(e)}), keeping cached tools`)}}_safeTools(e){return this._suppressStdioDiagnostics?this._toolErrorRedactor?e.filter(r=>JSON.stringify(this._toolErrorRedactor?.value(r))===JSON.stringify(r)):[]:e}listTools(){return this._tools}async callTool(e,r,n){if(this._disposing||this._disposed)throw new Error(`MCP server "${this.name}" is being disposed`);if(this._status!=="success"||!this._client)throw new Error(`MCP server "${this.name}" is not connected (status: ${this._status})`);if(this._config.timeoutMs!==void 0&&this._config.timeoutMs>Vx)throw new Error(`MCP server "${this.name}" timeoutMs is too large: ${this._config.timeoutMs}, max is ${Vx}.`);let o=this._toolErrorRedactor,s={timeout:this._config.timeoutMs??xq,signal:n,resetTimeoutOnProgress:!0,maxTotalTimeout:this._config.timeoutMs??kq,onprogress:l=>{this._suppressStdioDiagnostics||Y.debug(`MCP server "${this.name}" tool "${e}" progress: ${l.progress}${l.total===void 0?"":`/${l.total}`}${l.message?` - ${l.message}`:""}`)}},a,c=new Promise((l,f)=>{a={reject:f,livenessRejected:!1,sessionRecoveryOwned:!1}});c.catch(()=>{}),a&&this._inFlightCalls.add(a);let d=this._withSessionRetry(()=>this._withAuthRetry(()=>{if(!this._client)throw new Error(`MCP server "${this.name}" client is gone`);return this._client.callTool({name:e,arguments:r??{}},qx,s)},"tool_call",{call:a})).then(l=>(a&&this._settleInFlightCall(a,!0,void 0),l),l=>{throw a&&this._settleInFlightCall(a,!1,l),l});try{let l=await Promise.race([d,c]);if(this._suppressStdioDiagnostics&&l.isError===!0)return Bq({content:l.content,structuredContent:l.structuredContent},o);let f=ok(l.content,l.structuredContent);return{isError:l.isError===!0,content:f.content,rawItemCount:f.rawItemCount}}catch(l){return(n?.aborted||l instanceof Error&&l.name==="AbortError")&&this._throwCallCancellation(l),this._reportAndThrowToolError(l,e)}finally{a&&!this._wedgeRecoveryOwners.has(a)&&(a.failure=void 0,this._inFlightCalls.delete(a))}}_throwCallCancellation(e){throw this._suppressStdioDiagnostics?Wo("MCP stdio tool call cancelled","AbortError"):e}_reportAndThrowToolError(e,r){if(this._suppressStdioDiagnostics){let c=Wo("MCP stdio tool call failed; provider diagnostics are suppressed to protect credentials","Error");throw this._disposed||Ea(c,{server:this.name,op:"tool_call",transport:"stdio"}),c}if(e instanceof qn||e instanceof Hs)throw e;if(Ct(e))throw new Error(`Authentication failed for MCP server "${this.name}". Reconnect "${this.name}" in MCP settings before retrying this tool.`);let o=uu(r),i=Be(e),s=Zx(e)&&/[^a-zA-Z0-9_-]/.test(r)?` The tool name "${o}" contains characters that some servers do not support; letters, digits, underscores, and hyphens are portable.`:"",a=`MCP tool "${o}" failed (${i}).${s}`;throw Rq(e)||Ea(Wo(a,i),{server:this.name,op:"tool_call",transport:this._config.type,tool:o}),Wo(a,i)}beginDisposal(){this._disposing||this.onToolsWithdraw?.(),this._disposing=!0,this._disposed=!0,this._toolErrorRedactor=void 0,this._targetAuth&&(this._resolvedHeaders=void 0,this._resolvedEnv=void 0,this._resolvedCommand=void 0),this._stopHeartbeat(),this._failInFlightCalls(new Error(`MCP server "${this.name}" is being disposed`),!1),this._wedgeRecoveryOwners.clear(),this._wedgePending=!1,this._wedgeRequired=!1}async dispose(e){this.beginDisposal(),await this._refreshPromise,this._stopHeartbeat();let r=this._client;if(this._client=void 0,this._activeTransport=void 0,this._reinitializingPromise=void 0,this._wedgeRecoveryOwners.clear(),this._wedgePending=!1,this._wedgeRequired=!1,this._stdioTransport=void 0,!!r)try{await r.close()}catch(n){if(this._suppressStdioDiagnostics){let o=Wo("MCP stdio close failed","Error");if(Y.debug(o.message),e?.strict)throw o;return}if(Y.debug(`MCP server "${this.name}" close error: ${n instanceof Error?n.message:String(n)}`),e?.strict)throw n}}};var sk=oH.child({prefix:"pi-mcp"}),iH=3,sH=6e4;function aH(t,e){let r=Date.now(),n=r-sH,o=(t.restartHistory.get(e)??[]).filter(i=>i>=n);return o.length>=iH?(t.restartHistory.set(e,o),!1):(o.push(r),t.restartHistory.set(e,o),!0)}function ak(t){dn(t),da(t)}async function cH(t,e,r){if(!aH(e,t)){sk.warn(`MCP server "${t}" automatic restart rate-limited`);return}sk.warn(`MCP server "${t}" wedged; recycling transport`),await Yr(t,e,r)}function fu(t,e,r){if(uH(e)){ak(t),D(t,e);return}od(t,r),Qn(e)&&ak(t),D(t,e)}function uH(t){return di()||t.toolSearchLatched}function er(t,e,r){return qu(r,t.name,t)&&r.serverGenerations?.get(t.name)===e}function Wh(t,e){t.serverGenerations??=new Map;let r=(t.serverGenerations.get(e)??0)+1;return t.serverGenerations.set(e,r),t.statusFailureCategories??=new Map,it(t,e),t.authRefreshNeededReportKeys.delete(e),r}function dH(t){let{state:e,config:r,hostGeneration:n}=t;if(r.type!=="http"&&r.type!=="sse"||r.auth!=="oauth"||r.registrySource===void 0||r.id===void 0)return;let o=e.credentialRevisions.get(r.name),i=e.tokens.get(r.name),s=e.hostedCredentialOwnership?.get(r.name),a=o!==void 0&&s?.revision===o.revision,c=o!==void 0&&s?.domain===o.domain,u=o!==void 0&&s?.ownerDomain===o.ownerDomain,d=o!==void 0&&e.oauthCredentialDomains.get(r.name)===o.domain,l=o!==void 0&&Bm(o.domain,r.id,o.ownerDomain);return o!==void 0&&i!==void 0&&s!==void 0&&a&&c&&u&&d&&l?Object.freeze({kind:"accepted",configId:r.id,credentialRevision:o.revision,credentialRevisionDomain:o.domain,hostGeneration:n,hostedAccessTokenOnly:s.accessTokenOnly}):s===void 0&&e.shouldProactivelyRefreshTokens?void 0:Object.freeze({kind:"incomplete",configId:r.id,hostGeneration:n})}function Vh(t){let{state:e,config:r,generation:n}=t;return new lu(r,dH({state:e,config:r,hostGeneration:n}))}function We(t,e,r="base"){t.configRevisions??=new Map,t.configDesiredRevisions??=new Map,t.configDesiredSources??=new Map;let o=Math.max(t.configRevisions.get(e)??0,t.configDesiredRevisions.get(e)??0)+1;return t.configDesiredRevisions.set(e,o),t.configDesiredSources.set(e,r),o}function Kh(t,e){if(e.id&&e.registrySource!==void 0){let r={...e};t.registryConfigNamesById.set(e.id,e.name),t.registryCredentialConfigs.set(e.name,r),t.registryCredentialConfigsById.set(e.id,r)}}function Jh(t,e,r){return t.configDesiredRevisions.get(e)===r}function ck(t,e,r){return(t.configRevisions.get(e)??0)===r&&(t.configDesiredRevisions?.get(e)??r)===r}function Yh(t,e,r,n){t.onStateChange=(a,c)=>{if(!er(t,e,r))return;let u={server:t.name,state:a,...c===void 0?{}:{errorType:c}};n.events.emit(nH,u)},t.onWedged=()=>{if(!er(t,e,r))return;let a=r.currentLoad?.latestPi??n;cH(t.name,r,a)};let o=t.hostedCredentialProvenance,i=t.targetCredentialProvenance?.credential,s;i&&(t.config.type==="http"||t.config.type==="sse")&&t.config.auth==="oauth"?s={serverGeneration:e,mcpConfigId:t.config.id,credentialRevision:i.revision,credentialRevisionDomain:i.domain}:o?.kind==="accepted"&&o.hostedAccessTokenOnly&&(s={serverGeneration:o.hostGeneration,mcpConfigId:o.configId,credentialRevision:o.credentialRevision,credentialRevisionDomain:o.credentialRevisionDomain}),t.onAuthRefreshNeeded=()=>{if(!er(t,e,r)||!s)return;let a=JSON.stringify(s);r.statusFailureCategories.set(t.name,{category:"auth_refresh_needed",...s}),r.authRefreshNeededReportKeys.get(t.name)!==a&&(r.authRefreshNeededReportKeys.set(t.name,a),D(r.currentLoad?.latestPi??n,r))},t.onAuthRefreshCleared=()=>{if(!er(t,e,r)||!s)return;let a=r.statusFailureCategories.get(t.name);typeof a=="object"&&a.category==="auth_refresh_needed"&&it(r,t.name,s)&&D(r.currentLoad?.latestPi??n,r)},t.onToolsChanged=()=>{er(t,e,r)&&t.status==="success"&&fu(r.currentLoad?.latestPi??n,r,t)},t.onToolsWithdraw=()=>{let a=r.currentLoad?.latestPi??n;id(a,t,e),a!==n&&id(n,t,e)}}async function uk(t,e,r,n){let o=setTimeout(()=>{er(t,e,r)&&D(n(),r)},Xs);typeof o.unref=="function"&&o.unref();try{await t.connect()}finally{clearTimeout(o),er(t,e,r)&&D(n(),r)}}async function dk(t){let e=[...t.servers.values()].filter(r=>r.status==="success");e.length!==0&&await Promise.all(e.map(r=>r.probe()))}function pu(t,e){if(e.status!=="installed")return!1;let r=N(t,e.config.name);return r?.revision===e.leaseRevision&&r.host?.config===e.config}async function lH(t){let{state:e,config:r,displaced:n,retirement:o}=t;Kh(e,n.config),ai(e,r.name),n.beginDisposal?.();try{let i=Gu(n.config,r)?Promise.resolve():pt(e,r.name,n.config.id,n.config),a=(await Promise.allSettled([i,n.dispose({strict:!0})])).find(c=>c.status==="rejected");if(a)throw a.reason;ve({state:e,name:r.name,retirement:o,result:{status:"retired"}})}catch(i){throw ve({state:e,name:r.name,retirement:o,result:{status:"failed",error:i}}),i}}async function fH(t){let{state:e,server:r,owner:n,leaseRevision:o}=t,i=st({state:e,name:r.name,owner:n,revision:o,host:r});if(i){r.beginDisposal?.();try{await r.dispose({strict:!0}),ve({state:e,name:r.name,retirement:i,result:{status:"retired"}}),xe({state:e,name:r.name,owner:n,revision:o})}catch(s){throw ve({state:e,name:r.name,retirement:i,result:{status:"failed",error:s}}),s}}}async function pH(t){let{state:e,server:r,config:n,generation:o,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c}=t;return await r.connect(),er(r,o,e)?a?.(n)===!1?(await fH({state:e,server:r,owner:i,leaseRevision:s}),{status:"superseded",config:n}):(r.status==="success"&&fu(c(),e,r),D(c(),e),r.status==="failed"?{status:"unavailable",config:n,error:new Error(r.lastError??`MCP server "${n.name}" failed`)}:{status:"installed",config:n,leaseRevision:s}):{status:"superseded",config:n}}function hH(t){let{state:e,config:r,configRevision:n,pi:o,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c}=t,u=N(e,r.name);if(!Jh(e,r.name,n)||u?.revision!==s||a?.(r)===!1)return xe({state:e,name:r.name,owner:i,revision:s}),{status:"superseded",config:r};e.configRevisions.set(r.name,n);let d=Wh(e,r.name),l=Vh({state:e,config:r,generation:d});return Yh(l,d,e,o),ta({state:e,name:r.name,owner:i,revision:s,host:l})?{connection:pH({state:e,server:l,config:r,generation:d,owner:i,leaseRevision:s,sourceOwnership:a,activePi:c})}:(xe({state:e,name:r.name,owner:i,revision:s}),{status:"superseded",config:r})}function mH(t){let{intent:e,state:r,pi:n,sourceOwnership:o,sourceKind:i,activePi:s}=t,{config:a,revision:c}=e;if(o?.(a)===!1||!Jh(r,a.name,c))return{status:"superseded",config:a};let u=r.servers.get(a.name),d=u?Q(r,a.name,u):N(r,a.name),l=Rr(a,i),f=ii({state:r,name:a.name,owner:l,expectedRevision:d?.revision,expectedHost:d?.host});if(!f)return{status:"collision",config:a};let p=f.lease.revision,m=()=>hH({state:r,config:a,configRevision:c,pi:n,owner:l,leaseRevision:p,sourceOwnership:o,activePi:s}),h=async()=>(f.displacedHost&&f.retirement?await lH({state:r,config:a,displaced:f.displacedHost,retirement:f.retirement}):await Uu(f.retirement),m());return f.retirement?h():m()}async function Ve(t,e,r,n,o,i){let s=()=>e.currentLoad?.latestPi??r,c=t.map(d=>({config:d,revision:o?.get(d.name)??We(e,d.name)})).map(async d=>{try{let l=await mH({intent:d,state:e,pi:r,sourceOwnership:n,sourceKind:i,activePi:s});return"connection"in l?l.connection:l}catch(l){return{status:"failed",config:d.config,error:l}}});if(c.length===0)return[];let u=setTimeout(()=>{D(s(),e)},Xs);typeof u.unref=="function"&&u.unref();try{return await Promise.all(c)}finally{clearTimeout(u)}}async function gH({name:t,state:e,pi:r,configRevision:n}){let o=e.servers.get(t);if(!o||e.servers.get(t)!==o||!ck(e,t,n))return!1;let i=o.config,s=Q(e,t,o);if(!qu(e,t,o))return!1;Kh(e,i),ai(e,t);let a=st({state:e,name:t,owner:s.owner,revision:s.revision,host:o});if(!a)return!1;o.beginDisposal?.();try{await o.dispose({strict:!0}),ve({state:e,name:t,retirement:a,result:{status:"retired"}})}catch(l){throw ve({state:e,name:t,retirement:a,result:{status:"failed",error:l}}),l}if(N(e,t)?.revision!==s.revision||!ck(e,t,n))return xe({state:e,name:t,owner:s.owner,revision:s.revision}),!1;let c=Wh(e,t),u=Vh({state:e,config:i,generation:c});if(Yh(u,c,e,r),!ta({state:e,name:t,owner:s.owner,revision:s.revision,host:u}))return!1;let d=()=>e.currentLoad?.latestPi??r;return await uk(u,c,e,d),er(u,c,e)&&u.status==="success"&&fu(d(),e,u),!0}function Yr(t,e,r){e.reconnects??=new Map,e.configRevisions??=new Map,e.reconnectDesiredGenerations??=new Map,e.statusFailureCategories??=new Map;let n=(e.reconnectDesiredGenerations.get(t)??0)+1;e.reconnectDesiredGenerations.set(t,n);let o=e.reconnects.get(t);if(o)return o;let i=(async()=>{let s=0,a=e.configRevisions.get(t)??0;do{let c=e.reconnectDesiredGenerations.get(t)??0;if((e.configRevisions.get(t)??0)!==a||!await gH({name:t,state:e,pi:r,configRevision:a}))return;s=c}while(s<(e.reconnectDesiredGenerations.get(t)??s))})().finally(()=>{e.reconnects.get(t)===i&&e.reconnects.delete(t)});return e.reconnects.set(t,i),i}async function yH(t){let{state:e,name:r,existing:n,config:o,retirement:i}=t;Kh(e,n.config),ai(e,r),n.beginDisposal?.();try{let s=o!==void 0&&Gu(n.config,o)?Promise.resolve():pt(e,r,n.config.id,n.config),c=(await Promise.allSettled([s,n.dispose({strict:!0})])).find(u=>u.status==="rejected");if(c)throw c.reason;i&&ve({state:e,name:r,retirement:i,result:{status:"retired"}})}catch(s){throw i&&ve({state:e,name:r,retirement:i,result:{status:"failed",error:s}}),s}}async function lk(t,e,r,n,o){let i=()=>e.currentLoad?.latestPi??r,{servers:s}=Yn(n,o,e.mcpConfigOverride,e.sessionMcpConfigDisabledOverrides),a=s.find(h=>h.name===t),c=We(e,t),u=e.servers.get(t),d=u?Q(e,t,u):N(e,t),l={kind:"local",identity:a?.id??t},f=ii({state:e,name:t,owner:l,expectedRevision:d?.revision,expectedHost:d?.host});if(!f)return;if(u&&await yH({state:e,name:t,existing:u,config:a,retirement:f.retirement}),f.retirement&&await Uu(f.retirement),N(e,t)?.revision!==f.lease.revision||!Jh(e,t,c)){xe({state:e,name:t,owner:l,revision:f.lease.revision});return}if(e.configRevisions.set(t,c),!a){xe({state:e,name:t,owner:l,revision:f.lease.revision}),D(i(),e);return}let p=Wh(e,t),m=Vh({state:e,config:a,generation:p});Yh(m,p,e,r),ta({state:e,name:t,owner:l,revision:f.lease.revision,host:m})&&(await uk(m,p,e,i),er(m,p,e)&&m.status==="success"&&fu(i(),e,m))}async function Zs(t,e,r){e.reconnecting=!0;try{await Promise.all(t.map(n=>Yr(n,e,r)))}finally{e.reconnecting=!1}}var fk=Symbol.for("__pi_mcp_registry_ingress__");function hu(t){return Object.defineProperty(t,fk,{value:!0}),t}function Gn(t){return Object.getOwnPropertyDescriptor(t,fk)?.value===!0}function Xr(t){let{state:e,target:r,byConfigId:n=!1}=t;if(!r)return;let o=[...e.servers].filter(([u,d])=>d.config.id===r||!n&&u===r);if(o.length!==1)return;let i=o[0];if(!i)return;let[s,a]=i;if(a.config.id&&[...e.servers].some(([u,d])=>u!==s&&d.config.id===a.config.id))return;let c=N(e,s);if(!(c&&(c.host!==a||c.owner.kind==="registry"&&c.connectionEpoch!==e.mcpConnectionEpoch))&&!(!c&&e.mcpConnectionEpoch!==void 0&&a.config.registrySource!==void 0)&&!((n||s!==r)&&!Gn(a.config)&&!(c?.owner.kind==="registry"&&c.owner.identity===`user:${r}`)))return{name:s,server:a}}import{logger as vH}from"@hermes/logger";var _H=vH.child({prefix:"pi-mcp"}),SH=1e6,wH=1e3,bH=/^\d+$/;function pk(t){return t.startsWith("user:")?`private:${t.slice(5)}`:t}function Qr(t){if(typeof t!="object"||t===null||Array.isArray(t))return;let e=t.credential_revision??t.credentialRevision,r=t.credential_revision_domain??t.credentialRevisionDomain;if(typeof e!="string"||!bH.test(e)||typeof r!="string"||r.length===0)return;let n=Hm(t);if(n.kind!=="invalid")return{revision:e.replace(/^0+(?=\d)/,""),domain:pk(r),...n.kind==="valid"?{ownerDomain:n.ownerDomain}:{}}}function RH(t,e,r){let n=t?.get(e),o=typeof r=="string"?t?.get(r):void 0;return n===void 0?o:o===void 0?n:Pr(o,n)>0?o:n}function CH(t,e,r){if(t===void 0)return!0;let n=pk(t);return n===e.domain||r?.kind==="domain"&&e.ownerDomain===r.domain||r?.kind==="domain"&&(n.startsWith("private:")||n.startsWith("shared:"))&&e.domain.startsWith("recipient:")&&xr(n)===r.domain&&xr(e.domain)===r.domain?!0:r?.kind==="domain"&&!ct(n)&&ct(e.domain)&&xr(n)===r.domain}function PH(t,e,r,n){let o=e.credential_revision??e.credentialRevision,i=e.credential_revision_domain??e.credentialRevisionDomain;if((o!==void 0||i!==void 0)&&r===void 0)return _H.warn(`Skipping MCP OAuth credentials for "${t}": invalid credential revision or domain`),"reject";let s=n?.expectedDomains?.get(t);if(r===void 0)return n?.requireRevision===!0||s!==void 0||n?.acceptedDomains?.has(t)===!0?"reject":"apply";let a=xr(r.domain);if(s?.kind==="blocked"||s?.kind==="domain"&&r.ownerDomain!==void 0&&r.ownerDomain!==s.domain||s?.kind==="domain"&&r.ownerDomain===void 0&&!ct(r.domain)&&a!==s.domain)return"reject";let c=n?.acceptedDomains?.get(t);if(!CH(c,r,s))return"reject";let u=RH(n?.acceptedRevisions,r.domain,i);if(u===void 0)return"apply";let d=Pr(r.revision,u);return d>0||d===0&&c===void 0&&s?.kind==="domain"&&n?.equalRevisionRebindDomains?.get(t)===s.domain?"apply":d===0?"equal":"reject"}function xH(t,e,r,n){if(n!==void 0)return!1;let o=t.get(e);return o===void 0?!1:r.expiresAt===void 0||o.expiresAt===void 0||r.expiresAt<=o.expiresAt}function kH(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let e=t;if(typeof e.access_token!="string"||e.access_token.length===0||["refresh_token","token_type","scope","authorization_endpoint","token_endpoint","issuer","client_id","client_secret","token_endpoint_auth_method"].some(s=>e[s]!==void 0&&typeof e[s]!="string"))return!1;let n=e.access_token_expires_at;if(n===void 0)return!0;if(typeof n!="object"||n===null||Array.isArray(n))return!1;let{seconds:o,nanos:i}=n;return typeof o=="number"&&Number.isSafeInteger(o)&&typeof i=="number"&&Number.isInteger(i)&&i>=0&&i<1e9}function EH(t){let e=t.access_token_expires_at?t.access_token_expires_at.seconds*wH+Math.floor(t.access_token_expires_at.nanos/SH):void 0;return{accessToken:t.access_token,refreshToken:t.refresh_token,expiresAt:e,tokenType:t.token_type,scope:t.scope,serverMetadata:{issuer:t.issuer??t.authorization_endpoint,authorization_endpoint:t.authorization_endpoint,token_endpoint:t.token_endpoint},client:{client_id:t.client_id,client_secret:t.client_secret,...t.token_endpoint_auth_method===void 0?{}:{token_endpoint_auth_method:t.token_endpoint_auth_method}}}}function TH(t,e){return t?t.accessToken===e.accessToken&&t.refreshToken===e.refreshToken&&t.expiresAt===e.expiresAt&&t.tokenType===e.tokenType&&t.scope===e.scope&&t.resource===e.resource&&t.serverMetadata?.issuer===e.serverMetadata?.issuer&&t.serverMetadata?.authorization_endpoint===e.serverMetadata?.authorization_endpoint&&t.serverMetadata?.token_endpoint===e.serverMetadata?.token_endpoint&&t.client?.client_id===e.client?.client_id&&t.client?.client_secret===e.client?.client_secret&&t.client?.token_endpoint_auth_method===e.client?.token_endpoint_auth_method:!1}function yr(t){let{store:e,serverName:r,proto:n,options:o}=t;if(!kH(n))return{decision:"reject"};let i=Qr(n),s=PH(r,n,i,o);if(s==="reject")return{decision:s};let a=EH(n);return s==="equal"&&o?.requireEqualMaterial===!0&&(o.acceptedDomains?.get(r)!==i?.domain||!TH(e.get(r),a))||s==="apply"&&xH(e,r,a,i)?{decision:"reject"}:{decision:s,token:a,revision:i}}function mu(t,e,r){let n={applied:[],equal:[],rejected:[]};for(let[o,i]of Object.entries(e)){let s=yr({store:t,serverName:o,proto:i,options:r});if(s.decision!=="apply"){n[s.decision==="equal"?"equal":"rejected"].push(o);continue}let{token:a,revision:c}=s;t.set(o,a),r?.equalRevisionRebindDomains?.delete(o),c!==void 0&&(r?.acceptedRevisions?.set(c.domain,c.revision),r?.acceptedDomains?.set(o,c.domain)),n.applied.push(o)}return n}var hk=AH.child({prefix:"pi-mcp"});function MH(t,e){let r=Xr({state:t,target:e,byConfigId:!0});if(!r)return;let o=N(t,r.name)?.owner??Rr(r.server.config);return o.kind==="registry"&&o.identity===`user:${e}`?r:void 0}function $H(t,e,r){let n=Object.entries(t).filter(([o,i])=>{let s=Qr(i);if(s===void 0)return!1;let a=sn(s);return s.ownerDomain!==void 0?a===`user:${e}`:o===r&&ct(s.domain)||a===`user:${e}`});return n.length===1?n[0]?.[1]:void 0}async function mk(t){let{pi:e,state:r,update:n}=t;if(Object.keys(n.credentials).length!==1){hk.warn(`Targeted MCP credential update for config ${n.configId} must contain exactly one entry`);return}let o=MH(r,n.configId),i=o?$H(n.credentials,n.configId,o.server.config.name):void 0;if(!o||!i)return;let s=N(r,o.name),a=r.mcpConnectionEpoch;if(o.server.config.type==="stdio"||o.server.config.auth!=="oauth")return;let c=()=>({acceptedRevisions:r.oauthCredentialRevisions,acceptedDomains:r.oauthCredentialDomains,expectedDomains:r.expectedCredentialDomains,equalRevisionRebindDomains:r.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:!0}),u=()=>yr({store:r.tokens,serverName:o.name,proto:i,options:c()});if(u().decision==="reject")return;let d=o.server.getRefreshInFlight?.();if(d&&await Promise.resolve(d).catch(()=>{}),r.mcpConnectionEpoch!==a||r.servers.get(o.name)!==o.server||N(r,o.name)!==s||u().decision==="reject")return;Q(r,o.name,o.server),r.shouldProactivelyRefreshTokens=!1;let l=mu(r.tokens,{[o.name]:i},c());if(!l.applied.includes(o.name)&&!l.equal.includes(o.name))return;if(l.applied.includes(o.name)){let h=Qr(i);h&&(r.credentialRevisions.set(o.name,h),r.hostedCredentialOwnership.set(o.name,{...h,accessTokenOnly:i.refresh_token===void 0})),r.statusFailureCategories.delete(o.name),r.authRefreshNeededReportKeys.delete(o.name),r.tokens.clearAuthRequired(o.name)}let f=r.currentLoad?.latestPi??e,p=t.reconnect??Yr,m=t.report??D;await p(o.name,r,f).catch(h=>{hk.warn(`Targeted MCP credential restart failed for config ${n.configId}: ${h instanceof Error?h.name:"non-Error"}`)}),m(f,r),_e(r)}import{logger as IH}from"@hermes/logger";var gu=IH.child({prefix:"pi-mcp"}),Xh="augment:mcp-attach-result";function gk(t,e){e.attachResultListenerBound||(e.attachResultListenerBound=!0,t.events.on(Xh,r=>{let n=r,o=typeof n?.requestId=="string"?n.requestId:"";if(!o){gu.warn(`${Xh} payload missing requestId`);return}let i=e.attachResolvers.get(o);if(!i){gu.debug(`${Xh}: no pending resolver for request ${o} (already timed out?)`);return}let s={...typeof n?.status=="string"?{status:n.status}:{},...typeof n?.error=="string"?{error:n.error}:{}};i(s)}))}function Vo(t,e){if(!e.mcpAttachCloudSignaled||e.mcpAttachDisabled||!e.credentials)return Promise.resolve();if(e.catalogRefreshInFlight)return e.catalogRefreshInFlight;let r=e.credentials,n=e.mcpConnectionEpoch,o=(async()=>{let i=await yg(r);e.mcpConnectionEpoch!==n||e.credentials!==r||(i.ok?(e.mcpCatalog=i.entries,gu.debug(`MCP catalog refreshed: ${i.entries.length} entry(s)`)):i.disable&&(e.mcpAttachDisabled=!0,e.mcpCatalog=void 0,gu.debug("MCP catalog endpoint unavailable (404); disabling attach for this session")),Qn(e)&&dn(e.currentLoad?.latestPi??t))})().finally(()=>{e.catalogRefreshInFlight===o&&(e.catalogRefreshInFlight=void 0)});return e.catalogRefreshInFlight=o,o}import{logger as WH}from"@hermes/logger";function OH(t){if(t==null)return;if(typeof t=="number"||!Number.isNaN(Number(t)))switch(Number(t)){case li.OAUTH:return"oauth";case li.API_KEY:return"header";default:return}let e=String(t).toLowerCase();if(e==="oauth"||e==="mcp_auth_type_oauth")return"oauth";if(e==="header"||e==="api_key"||e==="mcp_auth_type_api_key")return"header"}function zH(t){if(typeof t=="number"||!Number.isNaN(Number(t)))switch(Number(t)){case an.CLI:return"cli";case an.CLOUD_AGENT:return"cloud_agent";default:return}switch(t){case"MCP_PRODUCT_TYPE_CLI":return"cli";case"MCP_PRODUCT_TYPE_CLOUD_AGENT":return"cloud_agent";default:return}}function yu(t){if(t==null)return;if(t.length===0)return[];let e=t.map(zH).filter(r=>r!==void 0);return e.length===0?void 0:e}function vu(t,e){let r=t.config;if(!r)return{ok:!1,reason:"no config payload"};let n=OH(r.auth_type),o={name:r.name,type:r.type==="http"||r.type==="sse"||r.type==="stdio"?r.type:void 0,disabled:r.disabled,command:r.command,args:r.args,env:r.env,url:r.url,auth:n==="oauth"?"oauth":void 0,timeoutMs:r.timeout_ms,useShellInterpolation:r.use_shell_interpolation},i=Kn(o);(i==="http"||i==="sse")&&r.env&&(o.headers=r.env);try{return{ok:!0,server:{...Jn(r.name??t.id,o),id:t.id,registrySource:e}}}catch(s){return{ok:!1,reason:s instanceof kt?s.message:String(s)}}}function NH(t){let e=t.config?.auth_type;return e===li.OAUTH||typeof e=="string"&&(e.toLowerCase()==="oauth"||e.toLowerCase()==="mcp_auth_type_oauth")?t.has_oauth_credentials!==!0&&t.needs_reauthentication!==!0:!1}function DH(t){let e=t.name;return t.type==="stdio"?`stdio\0${e}\0${t.command}\0${t.args.join(" ")}`:`${t.type}\0${e}\0${t.url}`}function Qh(t,e,r){let n=new Map;for(let o of t)r(o.id)&&n.set(o.id,o);for(let o of e)n.set(o.id,o);return[...n.values()]}function LH(t,e,r){if(r!==void 0&&t.added_by===r)return yu(t.enabled_products);let n=e[t.id]?.enabled_products;return n!==void 0?yu(n):[]}function jH(t){let{tenantConfigs:e,userConfigs:r,enabledSharedServerIds:n,serverProductPreferences:o,configIds:i,currentUserId:s}=t;if(i!=null&&i.length===0){let p=Qh(e,r,()=>!0);return{selected:[],filteredOutIds:p.map(m=>m.id),missingIds:[],retainedNames:[]}}if(i!=null){let p=new Set(i),m=Qh(e,r,()=>!0),h=new Set(m.map(b=>b.id)),g=m.filter(b=>p.has(b.id)),v=m.filter(b=>!p.has(b.id)).map(b=>b.id),w=i.filter(b=>!h.has(b));return{selected:g,filteredOutIds:v,missingIds:w,retainedNames:[]}}let a=new Set(n),c=[];for(let p of e)a.has(p.id)||c.push(p.id);let u=Qh(e,r,p=>a.has(p)),d=new Set(r.map(p=>p.id)),l=[],f=[];for(let p of u){let h=!d.has(p.id)&&a.has(p.id)?LH(p,o,s):yu(p.enabled_products);h===void 0||h.includes("cloud_agent")?l.push(p):(c.push(p.id),p.config?.name&&f.push(p.config.name))}return{selected:l,filteredOutIds:c,missingIds:[],retainedNames:f}}function FH(t){return t==null?an.CLOUD_AGENT:void 0}function UH(t){return t.map(e=>({message:`Selected MCP config id "${e}" was not returned by the registry (not opted in to the shared server, deleted, or an unknown id)`}))}function yk(t,e,r,n){try{let o=t.type==="stdio"?Gt(t,n):Ht(t,n);return{ok:!0,server:hu(o)}}catch(o){let i=o instanceof Error?o.message:String(o);return{ok:!1,diagnostic:{server:t.name,message:`Skipped registry MCP server "${t.name}" (id=${e}, ${r}): ${i}`}}}}function qH(t){let{payload:e,userIds:r,localServerNames:n,seenNames:o,workspaceRoot:i}=t;if(e.config?.disabled)return e.config.name?{kind:"retained",name:e.config.name}:{kind:"dropped"};let s=r.has(e.id)?"user":"tenant",a=vu(e,s);if(!a.ok){let d=e.config?.name,l={server:d,message:`Skipped registry MCP server "${d??e.id}" (id=${e.id}, ${s}): ${a.reason}`};return d?{kind:"retained",name:d,diagnostic:l}:{kind:"dropped",diagnostic:l}}let c=a.server;if(o.has(c.name)){if(n.has(c.name))return{kind:"retained",name:c.name,diagnostic:{server:c.name,message:`Skipped registry MCP server "${c.name}" (id=${e.id}, ${s}): a local server with the same name takes precedence`}};let d=yk(c,e.id,s,i);return{kind:"retained",name:c.name,diagnostic:{server:c.name,message:`Skipped registry MCP server "${c.name}" (id=${e.id}, ${s}): name collides with a higher-precedence registry server`},fallbackServer:d.ok?d.server:void 0}}let u=yk(c,e.id,s,i);return u.ok?(o.add(c.name),{kind:"connected",server:u.server}):{kind:"retained",name:c.name,diagnostic:u.diagnostic}}function HH(t){let e=[],r=[],n=[];for(let o of t)NH(o)?(r.push(o.id),n.push({server:o.config?.name,message:`Skipped MCP server "${o.config?.name??o.id}" (id=${o.id}): OAuth authentication was never completed (no stored credentials), so it cannot connect`})):e.push(o);return{selected:e,droppedIds:r,diagnostics:n}}function GH(t){let e=[],r=[],n=[],o=new Set;for(let i of t){let s=DH(i);if(o.has(s)){r.push(i.name),n.push({server:i.name,message:`Skipped duplicate MCP server "${i.name}" (id=${i.id}): byte-identical to another selected server`});continue}o.add(s),e.push(i)}return{servers:e,droppedNames:r,diagnostics:n}}function ZH(t,e){if(t.kind!=="connected"&&t.diagnostic&&e.diagnostics.push(t.diagnostic),t.kind==="connected")e.servers.push(t.server);else if(t.kind==="retained"&&(e.retainedNames.push(t.name),t.fallbackServer!==void 0)){let r=e.nameCollisionFallbacks.get(t.name)??[];r.push(t.fallbackServer),e.nameCollisionFallbacks.set(t.name,r)}}async function _u(t){let e=t.client??new fa(t.creds),{tenant:r,user:n,diagnostics:o}=await Tg(e,FH(t.configIds)),i=n.mcp_configs??[],s=new Set(i.map(b=>b.id)),{selected:a,filteredOutIds:c,missingIds:u,retainedNames:d}=jH({tenantConfigs:r.mcp_configs??[],userConfigs:i,enabledSharedServerIds:n.enabled_shared_server_ids??[],serverProductPreferences:n.server_product_preferences??{},configIds:t.configIds,currentUserId:t.currentUserId}),l=HH(a),f=l.selected;c.push(...l.droppedIds),o.push(...l.diagnostics),o.push(...UH(u));let p=[],m=new Map,h=new Set(t.localServerNames),g=[...f.filter(b=>s.has(b.id)),...f.filter(b=>!s.has(b.id))];for(let b of g){let x=qH({payload:b,userIds:s,localServerNames:t.localServerNames,seenNames:h,workspaceRoot:t.workspaceRoot});ZH(x,{servers:p,retainedNames:d,diagnostics:o,nameCollisionFallbacks:m})}let v=GH(p);d.push(...v.droppedNames),o.push(...v.diagnostics);let w=new Map;for(let b of[...r.mcp_configs??[],...i])b.config?.name&&w.set(b.id,b.config.name);return{servers:v.servers,diagnostics:o,filteredOutIds:c,retainedNames:d,namesById:w,nameCollisionFallbacks:m}}import{logger as BH}from"@hermes/logger";var Ko=BH.child({prefix:"pi-mcp"});function vk(t,e,r){let n=t;if(!n||typeof n!="object"||!n.id){Ko.warn("Embedded MCP config is missing an id; ignoring");return}let o=r?.get(n.id);if(o)return o;let i=vu(n,"tenant");if(!i.ok){Ko.warn(`Embedded MCP config '${n.id}' is not convertible; ignoring: ${i.reason}`);return}let s=e??process.cwd();try{return hu(i.server.type==="stdio"?Gt(i.server,s):Ht(i.server,s))}catch(a){Ko.warn(`Embedded MCP config '${n.id}' failed expansion; ignoring: ${a instanceof Error?a.message:String(a)}`);return}}function _k(t,e){let r;try{r=JSON.parse(t)}catch(n){Ko.warn(`Failed to parse embedded MCP config: ${n instanceof Error?n.name:"non-Error thrown"}`);return}return vk(r,e)}function Jo(t,e,r){let n=t;if(typeof n=="string")try{n=JSON.parse(n)}catch(a){Ko.warn(`Failed to parse embedded MCP configs: ${a instanceof Error?a.name:"non-Error thrown"}`);return}if(!Array.isArray(n)){Ko.warn("Embedded MCP configs payload is not an array; ignoring");return}let o=[],i=new Map,s=!1;for(let a of n){let c=a,u=vk(a,e,r);if(c&&typeof c=="object"&&c.id&&c.config?.name&&i.set(c.id,{name:c.config.name,...u?{config:u}:{}}),c?.config?.disabled){s=!0;continue}u&&o.push(u)}if(!(o.length===0&&!s))return{servers:o,allConfigsById:i}}var jt=WH.child({prefix:"pi-mcp"});function wk(t){let{selectedIds:e,config:r}=t;return e!==void 0&&(r?.id===void 0||!e.has(r.id))}function bk(t){let{state:e,name:r,lease:n,host:o,isDeselected:i,selectionIsEmpty:s,replacementOwners:a}=t;if(s)return o?st({state:e,name:r,owner:n.owner,revision:n.revision,host:o})?(We(e,r),"retiring"):void 0:(xe({state:e,name:r,owner:n.owner,revision:n.revision}),We(e,r),"released");let c=a.get(r),u=ii({state:e,name:r,owner:c??n.owner,expectedRevision:n.revision,...o?{expectedHost:o}:{}});if(u)return i&&c===void 0&&e.expectedCredentialDomains.set(r,{kind:"blocked"}),{configRevision:We(e,r),leaseRevision:u.lease.revision}}function VH(t){let{state:e,name:r,server:n,selectedIds:o,replacementOwners:i,slotReservations:s,processedNames:a}=t,c=Q(e,r,n);if(c.owner.kind!=="registry"||c.host!==n)return;a.add(r);let u={...n.config};e.registryCredentialConfigs.set(r,u),n.config.id&&(e.registryConfigNamesById.set(n.config.id,r),e.registryCredentialConfigsById.set(n.config.id,u));let d=bk({state:e,name:r,lease:c,host:n,isDeselected:wk({selectedIds:o,config:n.config}),selectionIsEmpty:o?.size===0,replacementOwners:i});if(d===void 0)return;d!=="released"&&d!=="retiring"&&s.set(r,d);let l=N(e,r)?.retirement;return n.beginDisposal?.(),n.dispose({strict:!0}).then(()=>{l&&ve({state:e,name:r,retirement:l,result:{status:"retired"}}),d==="retiring"&&xe({state:e,name:r,owner:c.owner,revision:c.revision})},f=>{throw l&&ve({state:e,name:r,retirement:l,result:{status:"failed",error:f}}),f})}function KH(t){let{state:e,name:r,lease:n,selectedIds:o,replacementOwners:i,slotReservations:s}=t,a=bk({state:e,name:r,lease:n,isDeselected:wk({selectedIds:o,config:e.registryCredentialConfigs.get(r)}),selectionIsEmpty:o?.size===0,replacementOwners:i});a&&a!=="released"&&a!=="retiring"&&s.set(r,a)}async function JH(t,e,r){let n=e?new Set(e):void 0,o=new Map,i=[],s=new Set;for(let[a,c]of t.servers){let u=VH({state:t,name:a,server:c,selectedIds:n,replacementOwners:r,slotReservations:o,processedNames:s});u&&i.push(u)}for(let[a,c]of t.hostLeases)s.has(a)||c.owner.kind!=="registry"||c.host!==void 0||KH({state:t,name:a,lease:c,selectedIds:n,replacementOwners:r,slotReservations:o});return await Promise.all(i),o}async function Rk(t,e,r,n,o){let i=[],s=new Map(e.map(l=>[l.name,l])),a=o?new Set(r):new Set,c=new Set([...a].flatMap(l=>{let f=t.registryConfigNamesById.get(l);return f===void 0?[]:[f]})),u=new Set(e.flatMap(l=>l.id===void 0?[]:[l.id]));for(let[l,f]of t.registryCredentialConfigs){let p=s.get(l);if(p===void 0&&f.id!==void 0&&n.has(f.id)&&!u.has(f.id)){s.set(l,f);continue}let m=f.id===void 0?c.has(l):a.has(f.id);p===void 0&&!m&&i.push(pt(t,l,f.id,f))}try{await Promise.all(i)}catch(l){let f=`Registry credential reconciliation failed: ${l instanceof Error?l.message:String(l)}`;throw new xt(f)}let d=new Map;for(let[l,f]of s){let p=t.registryCredentialConfigs.get(l);p&&(d.set(l,{...p}),ft(p,f)&&f.id!==void 0&&t.registryCredentialConfigsById.set(f.id,{...f}))}t.registryCredentialConfigs=d}function YH(t,e,r){let n=e!=null&&e.length>0?new Set(e):void 0,o=[],i=[],s=[],a=[],c=new Set(r);for(let l of t.servers){if(n&&l.id!==void 0&&!n.has(l.id)){s.push(l.id);continue}if(c.has(l.name)){i.push({server:l.name,message:`Skipped embedded MCP server "${l.name}" (id=${l.id}): a local server with the same name takes precedence`}),a.push(l.name);continue}c.add(l.name),o.push(l)}let u=new Set(o.map(l=>l.name)),d=new Set(a);for(let[l,{name:f}]of t.allConfigsById)n&&!n.has(l)||u.has(f)||d.has(f)||(d.add(f),a.push(f));return{servers:o,diagnostics:i,filteredOutIds:s,retainedNames:a}}function XH(t){let{state:e,configIds:r,admittedConfigs:n}=t,o=e.embeddedRegistryConfigs;if(e.embeddedRegistryConfigs=void 0,r?.length===0||Array.isArray(o)&&o.length===0)return{servers:[],allConfigsById:new Map};if(o!==void 0)return Jo(o,e.workspaceRoot??process.cwd(),n)}async function QH(t){let{state:e,previousSelectedIds:r,configIds:n}=t;if(!n)return;let o=new Set(n),i=[],s=[];for(let a of r){if(o.has(a))continue;let c=e.registryConfigNamesById.get(a),u=[...o].some(d=>e.registryCredentialIntents.get(at(d))?.configName===c);if(c&&!u){let d=e.registryCredentialConfigs.get(c);i.push({id:a,name:c}),s.push(pt(e,c,a,d?.id===a?d:void 0))}}try{await Promise.all(s);for(let{id:a,name:c}of i)e.registryCredentialConfigs.get(c)?.id===a&&e.registryCredentialConfigs.delete(c)}catch(a){let c=`Registry credential deselection failed: ${a instanceof Error?a.message:String(a)}`;throw new xt(c)}}function eG(t){let e=new Map,r=t.configIds?new Set(t.configIds):void 0;for(let[n,{name:o}]of t.parsedEmbedded?.allConfigsById??[])(r===void 0||r.has(n))&&e.set(o,{kind:"registry",identity:`user:${n}`});return e}function tG(t){t.lastSuccessfulVfsMcpSignature=void 0,t.blockedVfsMcpNames.clear(),t.diagnostics=t.diagnostics.filter(e=>e.origin!=="registry"),t.dynamicallyAddedConfigIds.clear(),t.failedAddConfigIds.clear(),t.nameCollisionAddConfigIds.clear(),t.authFallbackDisplacedConfigIds.clear(),t.sessionRemovedConfigIds.clear(),t.selectedRegistryConfigIds=void 0}function rG(t){let e=new Set;for(let[r,n]of t.servers){let o=Q(t,r,n);o.owner.kind==="local"&&o.host===n&&e.add(r)}for(let[r,n]of t.hostLeases)n.owner.kind==="local"&&e.add(r);return e}function nG(t){let{state:e,result:r,previousSelectedIds:n,selection:o}=t,i=new Set([...o??[],...r.servers.flatMap(s=>s.id===void 0?[]:[s.id]),...r.namesById?.keys()??[]]);return Rk(e,r.servers,n,i,o!==void 0)}async function Ck(t,e){await Promise.all(e.servers.map(r=>r.id===void 0?Promise.resolve():ui(t,r.id)))}async function Sk(t){return await Ck(t.state,t.result),t.state.registryGeneration===t.generation&&await nG(t),t.result}function oG(t){let{state:e,configIds:r,parsedEmbedded:n,credentials:o,localServerNames:i,previousSelectedIds:s,selection:a,generation:c,discover:u}=t;if(n){jt.info(`Registry selection: using ${n.servers.length} embedded config(s) (no registry fetch)`);let l=YH(n,r,i);return Sk({state:e,result:l,previousSelectedIds:s,selection:a,generation:c})}return o?u({configIds:r,creds:o,currentUserId:o.userId,workspaceRoot:e.workspaceRoot??process.cwd(),localServerNames:i}).then(l=>Sk({state:e,result:l,previousSelectedIds:s,selection:a,generation:c})):void 0}function iG(t){let{state:e,result:r,selection:n}=t;e.selectedRegistryConfigIds=n;for(let o of r.diagnostics)e.diagnostics.push({...o,origin:"registry"}),jt.warn(o.message);for(let[o,i]of r.namesById??[])e.registryConfigNamesById.set(o,i);r.filteredOutIds.length>0&&jt.info(`Registry discovery filtered out ${r.filteredOutIds.length} server(s) by selection/opt-in/product`)}function sG(t){let{state:e,result:r}=t,n=r.servers.map(i=>{let s=e.sessionRegistryDisabledOverrides.get(i.name);return s===void 0?i:{...i,disabled:s}}),o=new Set([...n.map(i=>i.name),...r.retainedNames??[]]);for(let i of e.sessionRegistryDisabledOverrides.keys())o.has(i)||e.sessionRegistryDisabledOverrides.delete(i);return n}function Pk(t){let{state:e,generation:r}=t;return n=>{if(e.registryGeneration!==r||n.id===void 0)return e.registryGeneration===r;let o=e.missingHostRemovalFences.get(n.id);return!e.sessionRemovedConfigIds.has(n.id)&&o?.registryGeneration!==r}}function em(t){let{state:e,result:r,selection:n,slotReservations:o}=t,i=new Set([...r.servers.map(s=>s.name),...r.retainedNames??[],...(n??[]).flatMap(s=>{let a=e.registryConfigNamesById.get(s);return a?[a]:[]})]);for(let[s,a]of o){if(i.has(s))continue;let c=N(e,s);c?.owner.kind==="registry"&&c.host===void 0&&c.revision===a.leaseRevision&&xe({state:e,name:s,owner:c.owner,revision:a.leaseRevision})}}async function aG(t){let{state:e,result:r,selection:n,generation:o,connect:i,pi:s,slotReservations:a}=t;if(e.registryGeneration!==o){em({state:e,result:{servers:[],diagnostics:[],filteredOutIds:[]},selection:void 0,slotReservations:a}),jt.info(`Registry discovery superseded by a newer selection; skipping ${r.servers.length} server(s)`);return}if(await Ck(e,r),e.registryGeneration!==o)return;let c=Pk({state:e,generation:o}),u=r.servers.filter(c);if((await Promise.all(u.map(h=>Er({state:e,config:h,pi:s})))).some(h=>!h)||e.registryGeneration!==o)return;iG({state:e,result:r,selection:n}),em({state:e,result:r,selection:n,slotReservations:a});let l=sG({state:e,result:{...r,servers:u}});if(l.length===0)return;let f=l.filter(h=>{let g=e.servers.get(h.name);if((g?Q(e,h.name,g):N(e,h.name))?.owner.kind==="local")return jt.info(`Registry install of "${h.name}" skipped: a local server claimed the name during discovery`),!1;let w=a.get(h.name)?.configRevision;if(w===void 0)return!0;let b=e.configDesiredRevisions.get(h.name);return b!==w?(jt.info(`Registry install of "${h.name}" skipped: slot revision advanced from ${w} to ${b} by a concurrent operation`),!1):!0});if(f.length===0)return;jt.info(`Registry discovery: connecting ${f.length} server(s)`);let m=(await i(f,e,e.currentLoad?.latestPi??s,c))?.find(h=>h.status==="failed");if(m)throw m.error instanceof Error?m.error:new Error(String(m.error));await cG({state:e,pi:s,result:r,generation:o,connect:i})}async function cG(t){let{state:e,pi:r,result:n,generation:o,connect:i}=t,s=n.nameCollisionFallbacks;if(!(!s||s.size===0))for(let[a,c]of s)for(let u of c){let d=await uG({state:e,pi:r,generation:o,connect:i,name:a,candidate:u});if(d==="abort")return;if(d==="settled")break}}async function uG(t){let{state:e,pi:r,generation:n,connect:o,name:i,candidate:s}=t;if(e.registryGeneration!==n)return"abort";let a=e.servers.get(i);if(!a||a.status!=="auth_required"&&a.status!=="failed")return"settled";let c=a.config.id;if(c===void 0||c===s.id)return"settled";if(!await Er({state:e,config:s,pi:r})||e.registryGeneration!==n)return"abort";jt.info(`MCP auth fallback: "${i}" (id=${c}) landed ${a.status}; connecting same-named config id=${s.id} in its place`),await o([s],e,e.currentLoad?.latestPi??r,Pk({state:e,generation:n}));let d=e.servers.get(i);return d?.config.id!==c&&e.authFallbackDisplacedConfigIds.add(c),d!==void 0&&d.config.id===s.id&&d.status==="success"?"settled":"next"}async function dG(t){let{state:e,error:r,generation:n,previousSelectedIds:o,selection:i}=t,s=`Registry discovery failed: ${r instanceof Error?r.message:String(r)}`;jt.warn(s),e.registryGeneration===n&&(await Rk(e,[],o,new Set(i??[]),i!==void 0),e.selectedRegistryConfigIds=i,e.diagnostics.push({message:s,origin:"registry"}))}function lG(t,e){for(let r of e??[]){let n=at(r),o=t.registryCredentialIntents.get(n);o?.configName&&t.expectedCredentialDomains.set(o.configName,{kind:"blocked"}),Ke({state:t,domain:n,epoch:o?.epoch})}}async function fG(t){let e;try{let r=await Promise.all([t.disposal,t.discovery]);e=r[0],await aG({...t.resultArgs,result:r[1],slotReservations:e})}catch(r){if(e??=await t.disposal.catch(()=>new Map),em({state:t.resultArgs.state,result:{servers:[],diagnostics:[],filteredOutIds:[]},selection:t.resultArgs.state.registryGeneration===t.resultArgs.generation?t.resultArgs.selection:void 0,slotReservations:e}),r instanceof xt)throw lG(t.resultArgs.state,t.resultArgs.selection),t.resultArgs.state.diagnostics.some(n=>n.message===r.message)||t.resultArgs.state.diagnostics.push({message:r.message,origin:"registry"}),r;await dG({...t.resultArgs,error:r})}}function Su(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.discover??_u,s=o?.connect??Ve,a=n;if(!a||typeof a!="object"||Array.isArray(a))return jt.warn("augment:mcp-config-ids payload is not an object"),Promise.resolve();Array.isArray(a.configIds)&&Jm(r,new Set(a.configIds.map(at)));let c=XH({state:r,configIds:a.configIds,admittedConfigs:t.admittedConfigs}),u=r.credentials;if(!(c||u)){jt.warn("augment:mcp-config-ids received before credentials; skipping registry discovery");for(let v of a.configIds??[])Ke({state:r,domain:at(v)});return Promise.resolve()}let d=r.selectedRegistryConfigIds??[],l=QH({state:r,previousSelectedIds:d,configIds:a.configIds}),f=eG({parsedEmbedded:c,configIds:a.configIds}),p=++r.registryGeneration,m=Promise.all([JH(r,a.configIds,f),l]).then(([v])=>v);tG(r);let h=a.configIds?[...a.configIds]:void 0,g=oG({state:r,configIds:a.configIds,parsedEmbedded:c,credentials:u,localServerNames:rG(r),previousSelectedIds:d,selection:h,generation:p,discover:i});return g?fG({disposal:m,discovery:g,resultArgs:{state:r,previousSelectedIds:d,selection:h,generation:p,connect:s,pi:e}}):Promise.resolve()}import{logger as pG}from"@hermes/logger";var en=pG.child({prefix:"pi-mcp"});function hG(t,e){Ke({state:t,domain:`user:${e}`}),t.liveEditGenerations??=new Map;let r=(t.liveEditGenerations.get(e)??0)+1;return t.liveEditGenerations.set(e,r),r}function mG(t){let{state:e,configId:r,liveEditGeneration:n}=t,o={liveEditGeneration:n,registryGeneration:e.registryGeneration};return e.missingHostRemovalFences.set(r,o),o}function Tk(t){let{state:e,configId:r,fence:n}=t;return e.registryGeneration===n.registryGeneration&&e.liveEditGenerations.get(r)===n.liveEditGeneration}function gG(t){let{state:e,configId:r,fence:n}=t;e.missingHostRemovalFences.get(r)===n&&e.missingHostRemovalFences.delete(r)}function xk(t){let{state:e,configId:r,fence:n,operation:o,retryPreviousFailureOnly:i=!1}=t,s=e.missingHostRemovals.get(r),a=(async()=>{let c=!1;if(s)try{await s.promise}catch{c=!0}i&&!c||await o()})().finally(()=>{e.missingHostRemovals.get(r)?.promise===a&&(gG({state:e,configId:r,fence:n}),e.missingHostRemovals.delete(r))});return e.missingHostRemovals.set(r,{promise:a,liveEditGeneration:n.liveEditGeneration,registryGeneration:n.registryGeneration}),a}function Ak(t,e){t.failedAddConfigIds.delete(e),t.nameCollisionAddConfigIds.delete(e),t.dynamicallyAddedConfigIds.delete(e),t.sessionRemovedConfigIds.add(e)}function kk(t,e){for(let[r,n]of t.servers){if(t.targetMaterialStore?.has(e)&&!t.targetMaterialStore.trusts(n.config)&&!Gn(n.config))continue;let o=Q(t,r,n);if(n.config.id===e&&o.owner.kind==="registry"&&o.host===n)return r}}function Mk(t,e){let r=t.preservedCredentialIdentities?.get(e);r?.id&&t.expectedCredentialDomains.set(e,{kind:"domain",domain:`user:${r.id}`})}function yG(t){let{state:e,name:r,config:n,retirement:o}=t;if(e.servers.has(r))return;let i=N(e,r),s=n?Rr(n):void 0;if(i===void 0){We(e,r);return}let a=i.host===void 0&&i.owner.kind==="registry"&&s?.kind==="registry"&&i.owner.identity===s.identity,c=o?.incumbent.owner.kind==="registry"&&s?.kind==="registry"&&o.incumbent.owner.identity===s.identity;if(!a&&!c)return;(o?.settled&&i.retirement===o?Dm({state:e,name:r,retiredOwner:o.incumbent.owner,retirement:o}):xe({state:e,name:r,owner:i.owner,revision:i.revision}))&&N(e,r)===void 0&&(Mk(e,r),We(e,r))}async function tm(t){let{state:e,configId:r,pi:n,report:o,sourceFence:i}=t,s=e.registryCredentialConfigsById.get(r),a=s?.name;if(!s||!a){let w=`Live MCP remove-server cannot retire config id ${r}: exact registry identity is unavailable`;throw en.warn(w),e.diagnostics.push({message:w,origin:"registry"}),new Error(w)}e.configDesiredRevisions??=new Map,e.configDesiredSources??=new Map;let c=N(e,a),u=Rr(s),d=c?.retirement?.incumbent.owner.kind==="registry"&&u.kind==="registry"&&c.retirement.incumbent.owner.identity===u.identity?c.retirement:void 0,l=c!==void 0&&c.host===void 0&&c.owner.kind==="registry"&&u.kind==="registry"&&c.owner.identity===u.identity,f=e.configDesiredRevisions.get(a),p=e.configDesiredSources.get(a),m=l&&d?.settled!==!0?We(e,a):void 0;if(d&&!d.settled&&(await d.teardown).status==="retired"&&!l)return;let g=N(e,a)?.retirement===d?d:void 0,v=g?.result;if(d&&v?.status==="failed"&&v.transportDisposed!==!0){let w=v.error instanceof Error?v.error:new Error(String(v.error)),b=`Live MCP remove-server cannot complete ${a}: strict transport disposal is unresolved`;throw en.warn(b),e.diagnostics.push({server:a,message:b}),w}try{await ci(e,a,r,s)}catch(w){m!==void 0&&e.configDesiredRevisions.get(a)===m&&(f===void 0?e.configDesiredRevisions.delete(a):e.configDesiredRevisions.set(a,f),p===void 0?e.configDesiredSources.delete(a):e.configDesiredSources.set(a,p));let b=`Live MCP remove-server failed to detach ${a}: ${w instanceof Error?w.message:String(w)}`;throw en.warn(b),e.diagnostics.push({server:a,message:b}),w}Tk({state:e,configId:r,fence:i})&&(Ak(e,r),yG({state:e,name:a,config:s,retirement:g})),en.info(`Live MCP remove-server: config id ${r} resolved to no live server (already removed or unknown id)`),o(e.currentLoad?.latestPi??n,e)}function Ek(t){let{state:e,name:r,operation:n,result:o}=t;if(o.status!=="rejected")return;let i=`Live MCP remove-server failed to ${n} ${r}: ${o.reason instanceof Error?o.reason.message:String(o.reason)}`;en.warn(i),e.diagnostics.push({server:r,message:i})}async function vG(t){let{state:e,name:r,configId:n,server:o}=t,[i]=await Promise.allSettled([o.dispose({strict:!0})]);if(Ek({state:e,name:r,operation:"dispose",result:i}),i.status==="rejected")return{removed:!1,failure:i.reason,transportDisposed:!1};let[s]=await Promise.allSettled([ci(e,r,n,o.config)]);return Ek({state:e,name:r,operation:"detach",result:s}),s.status==="fulfilled"?{removed:!0,failure:void 0,transportDisposed:!0}:{removed:!1,failure:s.reason,transportDisposed:!0}}async function _G(t){let{state:e,configId:r,name:n,pi:o,report:i,sourceFence:s}=t,a=e.servers.get(n),c=a?Q(e,n,a):N(e,n);if(!a||!c||c.owner.kind!=="registry"||c.host!==a)return;e.registryConfigNamesById.set(r,n),e.registryCredentialConfigsById.set(r,{...a.config});let u=e.configDesiredRevisions.get(n),d=e.configDesiredSources.get(n),l=We(e,n),f=st({state:e,name:n,owner:c.owner,revision:c.revision,host:a});if(!f)return;a.beginDisposal?.(),en.info(`Live MCP remove-server: disposing ${n} (config id ${r})`);let p=e.currentLoad?.latestPi??o,{removed:m,failure:h,transportDisposed:g}=await vG({state:e,name:n,configId:r,server:a});if(m&&Tk({state:e,configId:r,fence:s})?Ak(e,r):!m&&e.configDesiredRevisions.get(n)===l&&(u===void 0?e.configDesiredRevisions.delete(n):e.configDesiredRevisions.set(n,u),d===void 0?e.configDesiredSources.delete(n):e.configDesiredSources.set(n,d)),ve({state:e,name:n,retirement:f,result:m?{status:"retired"}:{status:"failed",error:h,transportDisposed:g}}),m&&xe({state:e,name:n,owner:c.owner,revision:c.revision})&&Mk(e,n),i(p,e),!m)throw h}function wu(t){let{pi:e,state:r,data:n,deps:o}=t,i=n,s=i&&typeof i.configId=="string"?i.configId:"";if(!s)return en.warn("augment:mcp-remove-server payload missing configId"),Promise.resolve();if(!t.replacement&&!Xn({state:r,configId:s,generation:i?.attachmentGeneration}))return en.info(`Ignoring stale live MCP remove-server command for config id ${s}`),Promise.resolve();let a=g=>t.replacement?g:sa({state:r,configId:s,generation:i?.attachmentGeneration,operation:g,wasApplied:()=>!0}),c=o?.report??D,u=kk(r,s),d=r.registryCredentialConfigsById.get(s),l=d?.name?N(r,d.name)?.retirement:void 0,f=r.missingHostRemovals.get(s),p=f?.registryGeneration===r.registryGeneration&&f?.liveEditGeneration===r.liveEditGenerations.get(s);if(p&&l===void 0)return a(f.promise);if(p&&l!==void 0){let g=r.missingHostRemovalFences.get(s);if(g)return a(xk({state:r,configId:s,fence:g,retryPreviousFailureOnly:!0,operation:()=>tm({state:r,configId:s,pi:e,report:c,sourceFence:g})}))}let m=hG(r,s);if(u===void 0&&d===void 0)return a(tm({state:r,configId:s,pi:e,report:c,sourceFence:{liveEditGeneration:m,registryGeneration:r.registryGeneration}}));let h=mG({state:r,configId:s,liveEditGeneration:m});return a(xk({state:r,configId:s,fence:h,operation:()=>{let g=kk(r,s);return g===void 0?tm({state:r,configId:s,pi:e,report:c,sourceFence:h}):_G({state:r,configId:s,name:g,pi:e,report:c,sourceFence:h})}}))}import{randomUUID as SG}from"node:crypto";import{setToolSource as wG}from"@augmentcode/auggie-v2";import{logger as bG}from"@hermes/logger";import{Type as RG}from"@sinclair/typebox";var Ik=bG.child({prefix:"pi-mcp"}),bu="attach-mcp-server",CG="augment:mcp-attach-request",PG=15e3,xG={type:"object",properties:{config_id:{type:"string",description:"Id (or name) of the MCP server to attach, as listed among the available unattached servers in find-tool's description."}},required:["config_id"]};function kG(t,e){let r=e.trim(),n=r.toLowerCase(),o=t.mcpCatalog??[],i=o.find(l=>l.id===r);if(i)return{kind:"match",entry:i};let s=o.filter(l=>l.name.toLowerCase()===n),a=s.length===1?s[0]:void 0;if(a!==void 0)return{kind:"match",entry:a};if(s.length===0)return{kind:"none"};let c=new Set(cn(t).map(l=>l.id)),u=s.filter(l=>c.has(l.id)),d=u.length===1?u[0]:void 0;return d!==void 0?{kind:"match",entry:d}:{kind:"ambiguous",candidates:s}}function EG(t,e){let r=e.name.toLowerCase();return cn(t).filter(n=>n.id!==e.id&&n.name.toLowerCase()===r)}function rm(t,e){let r=EG(t,e);return r.length===0?"":` A different attachable server with the same name exists: ${r.map(o=>`"${o.name}" (id: ${o.id})`).join(", ")}. If that is the intended server, retry with its exact id.`}function TG(t,e){return new Promise(r=>{let n=setTimeout(()=>{t.attachResolvers.delete(e),r(void 0)},PG);t.attachResolvers.set(e,o=>{clearTimeout(n),t.attachResolvers.delete(e),r(o)})})}function $k(t){let e=cn(t).map(r=>`${r.name} (id: ${r.id})`);return e.length>0?`Available unattached servers: ${e.join(", ")}.`:"No unattached servers are currently available."}function AG(t){let{entry:e,state:r}=t,n=[...r.servers.values()].find(o=>o.config.id===e.id);if(n?.status==="auth_required")return Ce(`MCP server "${e.name}" requires authentication. Ask the user to reconnect it from the session MCP panel before trying again.${rm(r,e)}`);if(n?.status==="failed"||r.failedAddConfigIds.has(e.id))return Ce(`MCP server "${e.name}" failed to connect after the attach was accepted. Ask the user to reconnect it from the session MCP panel before trying again.${rm(r,e)}`)}function MG(t){let{entry:e,result:r,state:n}=t;if(r===void 0)return Ce(`Timed out waiting for the attach request for "${e.name}" to be acknowledged. The server may still attach shortly; check find-tool's server list before retrying.`);if(r.error==="UNIMPLEMENTED")return n.mcpAttachDisabled=!0,Ce("Attaching MCP servers is not enabled for this session. Ask the user to attach the server from the session's MCP settings instead.");if(r.error==="DENIED")return Ce(`The control plane denied the request to attach "${e.name}". Do not retry; ask the user to verify that the server is available for this session.`);if(r.error!==void 0)return Ce(`Could not reach the control plane to attach "${e.name}". Try again later.`);switch(r.status){case"ACCEPTED":return Ce(`Attach accepted for "${e.name}". Connection continues in the background; use find-tool to discover its tools when ready. If its tools do not appear, call attach-mcp-server again with the same config id for connection guidance.`);case"ALREADY_ATTACHED":return Ce(`MCP server "${e.name}" is already attached to this session. Use find-tool to discover its tools.`);case"AUTH_REQUIRED":return Ce(`MCP server "${e.name}" requires authentication \u2014 the user must connect it from the session MCP panel before it can be attached.${rm(n,e)}`);case"NO_ACTIVE_VM":return Ce(`Could not reach the control plane to attach "${e.name}". Try again later.`);default:return Ce(`The attach request for "${e.name}" returned an unrecognized status. Check find-tool's server list shortly to see whether it attached.`)}}async function $G(t,e,r){if(e.mcpAttachDisabled)return Ce("Attaching MCP servers is not enabled for this session. Ask the user to attach the server from the session's MCP settings instead.");let{config_id:n}=r??{};if(typeof n!="string"||n.trim().length===0)throw new Error(`${bu} requires a string "config_id" parameter. ${$k(e)}`);let o=kG(e,n);if(o.kind==="none")return Ce(`No MCP server matching "${n}" is available to attach. ${$k(e)}`);if(o.kind==="ambiguous"){let d=o.candidates.map(l=>`"${l.name}" (id: ${l.id})`).join(", ");return Ce(`Multiple MCP servers match the name "${n}": ${d}. Retry with the exact id of the intended server.`)}let i=o.entry,s=AG({entry:i,state:e});if(s!==void 0)return s;if(sd(e,i))return Ce(`MCP server "${i.name}" is already attached to this session. Use find-tool to discover its tools.`);if(i.state!=="available"&&i.state!=="opt_in_required")return Ce(`MCP server "${i.name}" is not currently available to attach. Ask the user to attach it from the session's MCP settings.`);let a=SG();Ik.info(`attach-mcp-server: requesting attach of "${i.name}" (config=${i.id} request=${a})`);let c=TG(e,a);t.events.emit(CG,{configId:i.id,requestId:a});let u=await c;return MG({entry:i,result:u,state:e})}function Bs(t,e){let r={name:bu,label:bu,description:"Attach an available MCP server to this session so its tools become usable. Only servers listed as available-but-not-attached in find-tool's description can be attached. Call this tool immediately when the user's request needs one of those servers; it attaches directly without requiring user approval.",parameters:RG.Unsafe(xG),execute:(n,o)=>$G(t,e,o)};wG(bu,"mcp"),t.registerTool(r),Tr(r),Ik.debug("Registered attach-mcp-server tool")}import{createHash as IG}from"node:crypto";var OG=/^[1-9][0-9]*$/,zG=/^[a-f0-9]{64}$/,NG=new Set(["version","operation","config_id","server_name","transport","url","command","args","use_shell_interpolation","route_revision","binding_generation","ownership","auth_type","vm_id","connection_version","execution_principal_id","execution_principal_type","access_token","static_secrets"]);function Re(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function nm(t){return typeof t=="string"&&OG.test(t)&&t.length<=19&&BigInt(t)<=9223372036854775807n}function im(t){return Re(t)&&typeof t.vmId=="string"&&t.vmId.length>0&&t.vmId.length<=256&&t.vmId.trim()===t.vmId&&nm(t.connectionVersion)}function DG(t){if(t.version===2&&t.transport==="stdio")return(t.url===void 0||t.url==="")&&typeof t.command=="string"&&t.command.trim().length>0&&!Ir(t.command)&&Array.isArray(t.args)&&t.args.every(e=>typeof e=="string"&&!Ir(e))&&typeof t.use_shell_interpolation=="boolean"&&t.auth_type!=="oauth";if(t.version!==1||t.transport!=="http"&&t.transport!=="sse"||typeof t.url!="string"||t.command!==void 0||t.args!==void 0||t.use_shell_interpolation!==void 0)return!1;try{let e=new URL(t.url);return["http:","https:"].includes(e.protocol)&&!e.username&&!e.password&&!e.hash}catch{return!1}}function zk(t){if(!(!Re(t)||Object.keys(t).some(e=>!NG.has(e)))&&!(!DG(t)||t.operation!=="install"&&t.operation!=="retire"||t.auth_type!=="oauth"&&t.auth_type!=="static"&&t.auth_type!=="none")){for(let e of["config_id","server_name","vm_id","execution_principal_id"])if(typeof t[e]!="string"||t[e].length===0)return;if(!(typeof t.route_revision!="string"||!zG.test(t.route_revision)||!nm(t.connection_version))&&!(t.execution_principal_type!==void 0&&(typeof t.execution_principal_type!="number"||!Number.isInteger(t.execution_principal_type)||t.execution_principal_type<0||t.execution_principal_type>2147483647))&&!(t.ownership==="uncredentialed"?t.auth_type!=="none"||t.binding_generation!=="0":t.ownership!=="recipient"||t.auth_type==="none"||!nm(t.binding_generation))){if(t.operation==="retire"||t.auth_type==="none"){if(t.access_token!==void 0||t.static_secrets!==void 0)return}else if(t.auth_type==="oauth"){if(typeof t.access_token!="string"||t.access_token.length===0||t.static_secrets!==void 0)return}else if(t.access_token!==void 0||!Re(t.static_secrets)||Object.keys(t.static_secrets).length===0||Object.values(t.static_secrets).some(e=>typeof e!="string"||e.trim().length===0))return;return{...t,execution_principal_type:t.execution_principal_type??0}}}}function om(t,e){return t.execution_principal_id===e.execution_principal_id&&t.execution_principal_type===e.execution_principal_type}function LG(t,e){return t.transport==="stdio"&&e.transport==="stdio"?t.command===e.command&&t.use_shell_interpolation===e.use_shell_interpolation&&t.args.length===e.args.length&&t.args.every((r,n)=>r===e.args[n]):t.transport===e.transport&&t.url===e.url}function jG(t,e){return t.transport==="stdio"&&e.type==="stdio"?e.command===t.command&&e.useShellInterpolation===t.use_shell_interpolation&&e.args.length===t.args.length&&e.args.every((r,n)=>r===t.args[n]):e.type!=="stdio"&&t.transport===e.type&&e.url===t.url&&e.auth==="oauth"==(t.auth_type==="oauth")}function Ok(t,e){return om(t,e)&&t.config_id===e.config_id&&t.server_name===e.server_name&&LG(t,e)&&t.route_revision===e.route_revision&&t.ownership===e.ownership&&t.auth_type===e.auth_type}function FG(t,e){let r=Object.keys(t.static_secrets??{});return t.access_token===e.access_token&&r.length===Object.keys(e.static_secrets??{}).length&&r.every(n=>t.static_secrets?.[n]===e.static_secrets?.[n])}function UG(t,e){let r=Pi((e.type==="stdio"?e.env:e.headers)??{}),n=Object.keys(t.static_secrets??{});return t.auth_type==="static"?r.length>0&&r.length===n.length&&n.every(o=>r.includes(o)):r.length===0}var Ru=class{#t=new Map;#o=new WeakSet;#r=new WeakSet;#e;#n;#i=Symbol("mcp-connection");get epoch(){return this.#i}get hasConnection(){return this.#e!==void 0}revokeConnection(){this.#t.clear(),this.#r=new WeakSet,this.#n=void 0,this.#e=void 0,this.#i=Symbol("mcp-connection")}setConnection(e){return im(e)?this.#e?.vmId===e.vmId&&this.#e.connectionVersion===e.connectionVersion?!1:(this.revokeConnection(),this.#e={...e},!0):(this.revokeConnection(),!0)}has(e){return this.#t.has(e)||[...this.#t.values()].some(r=>r.material.server_name===e)}hasTargetProvenance(e){return this.#o.has(e)}trusts(e){return this.#r.has(e)}retainSelection(e){for(let[r,n]of this.#t)e.has(r)||this.#r.delete(n.config)}config(e){return this.#t.get(e)?.config}validate(e,r,n){let o=this.#t.get(e.config_id);if(!this.#e||e.vm_id!==this.#e.vmId||e.connection_version!==this.#e.connectionVersion||this.#n&&!om(e,this.#n))return!1;if(e.operation==="retire")return!n&&!!o&&this.#r.has(r)&&o.config===r&&om(e,o.material)&&e.binding_generation===o.material.binding_generation;if(r.disabled||!r.registrySource||r.vfsSource||r.id!==e.config_id||r.name!==e.server_name||!jG(e,r)||!n&&(!o||!this.#r.has(r)||!Ok(e,o.material))||!UG(e,r))return!1;if(!o)return!0;let i=BigInt(e.binding_generation)-BigInt(o.material.binding_generation);return i>=0n&&(i!==0n||o.material.operation==="install"&&Ok(e,o.material)&&FG(e,o.material))}commit(e,r){let n=Object.freeze({...e,...e.transport==="stdio"?{args:Object.freeze([...e.args])}:{},...e.static_secrets?{static_secrets:Object.freeze({...e.static_secrets})}:{}});this.#t.set(e.config_id,{material:n,config:r,epoch:Symbol("target-material")}),this.#r.add(r),this.#o.add(r),this.#n??={...n,access_token:void 0,static_secrets:void 0}}auth(e){if(!this.#r.has(e)||!e.id)return;let r=this.#t.get(e.id)?.epoch,n=()=>{let i=this.#t.get(e.id??"");if(!i||!this.#r.has(e)||i.epoch!==r||i.material.operation!=="install"||i.config!==e||i.material.vm_id!==this.#e?.vmId||i.material.connection_version!==this.#e.connectionVersion)throw new Error("MCP target material is unavailable");return i.material},o=n();return{...o.ownership==="recipient"?{credential:Object.freeze({revision:o.binding_generation,domain:`recipient:${o.config_id}`})}:{},validateUrl:i=>{let s=n();if(s.transport==="stdio")throw new Error("MCP target destination is unavailable");let a=new URL(i),c=new URL(s.url);if(a.username||a.password||a.hash||(s.transport==="sse"?a.origin!==c.origin:a.href!==c.href))throw new Error("MCP target destination is unavailable")},getSecret:async i=>n().static_secrets?.[i],headers:()=>{let i=n();return i.auth_type==="oauth"?{Authorization:`Bearer ${i.access_token}`}:{}}}}};function Nk(t){return IG("sha256").update(t).digest("hex")}function Dk(t){let e=new Map;if(t===void 0)return e;if(typeof t!="string")throw new Error("Invalid MCP config map");let r=JSON.parse(t);if(!Array.isArray(r)||r.some(a=>!Re(a)||!Re(a.config)))throw new Error("Invalid MCP config map");let n=0,o=!1,i=!1,s=-1;for(let a=0;a<t.length;a++){let c=t[a];if(o){i?i=!1:c==="\\"?i=!0:c==='"'&&(o=!1);continue}if(c==='"'&&(o=!0),(c==="{"||c==="[")&&(n===1&&(s=a),n++),(c==="}"||c==="]")&&(n--,n===1&&s>=0)){let u=t.slice(s,a+1),d=JSON.parse(u);if(!Re(d)||typeof d.id!="string"||e.has(d.id))throw new Error("Invalid MCP config map");e.set(d.id,u),s=-1}}return e}function qG(t,e){let r=t.args===void 0?[]:t.args,n=t.use_shell_interpolation===void 0?!1:t.use_shell_interpolation;return(t.url===void 0||t.url==="")&&t.command===e.command&&Array.isArray(r)&&r.length===e.args.length&&r.every((o,i)=>o===e.args[i])&&n===e.use_shell_interpolation}function HG(t){return t.env!==void 0&&(!Re(t.env)||Object.values(t.env).some(e=>typeof e!="string"))?!1:t.timeout_ms===void 0||typeof t.timeout_ms=="number"&&Number.isSafeInteger(t.timeout_ms)&&t.timeout_ms>=0}function GG(t,e,r){if(typeof t!="string"||Nk(t)!==e.route_revision)return;let n=JSON.parse(t);if(!Re(n)||!Re(n.config)||n.id!==e.config_id||n.config.auth_type!=={oauth:2,static:3,none:1}[e.auth_type])return;let i=n.config;if(i.type!==void 0&&i.type!==e.transport||i.name!==e.server_name||i.disabled!==void 0&&i.disabled!==!1||!HG(i))return;let s={id:e.config_id,name:e.server_name,registrySource:"tenant",...i.timeout_ms?{timeoutMs:i.timeout_ms}:{}},a=i.env?Object.freeze({...i.env}):void 0;if(e.transport==="stdio"){if(!qG(i,e))return;let c=[...e.args];return Object.freeze(c),Object.freeze({...s,type:"stdio",command:e.command,args:c,useShellInterpolation:e.use_shell_interpolation,cwd:r??process.cwd(),env:a})}if(i.url===e.url)return Object.freeze({...s,type:e.transport,url:e.url,...e.auth_type==="oauth"?{auth:"oauth"}:{},...a?{headers:a}:{}})}function Lk(t,e){if(!Re(e)||!Re(e.credentials))return;let r=t.targetMaterialStore;if(!r?.hasConnection)return;let n=Object.entries(e.credentials),o=e.kind==="boot";if(!o&&(e.version!==1||n.length!==1||e.kind!=="add"&&e.kind!=="restart"||e.hasLegacySecrets===!0))return;let i=o?Dk(e.configsJson):new Map;if(o&&(e.headerSecrets!==void 0&&(!Re(e.headerSecrets)||Object.values(e.headerSecrets).some(u=>u!==null&&typeof u!="string"))||e.configIds!==void 0&&(!Array.isArray(e.configIds)||e.configIds.some(u=>typeof u!="string"||!u)||new Set(e.configIds).size!==e.configIds.length)))return;let s=[],a=new Set,c;for(let[u,d]of n){if(o&&Re(d)&&!Object.hasOwn(d,"target_material")){if(![...i.values()].some(w=>{let b=JSON.parse(w);return Re(b)&&Re(b.config)&&b.config.name===u&&(!Array.isArray(e.configIds)||e.configIds.includes(b.id))})&&(e.configsJson!==void 0||e.configIds!==void 0)||r.has(u)||yr({store:t.tokens,serverName:u,proto:d,options:{requireEqualMaterial:!0}}).decision==="reject")return;continue}if(!Re(d)||Object.entries(d).some(([v,w])=>v!=="target_material"&&w!==""))return;let l=zk(d.target_material);if(!l||l.server_name!==u||a.has(l.config_id))return;let f=JSON.stringify([l.execution_principal_id,l.execution_principal_type]);if(c!==void 0&&c!==f||(c=f,a.add(l.config_id),!o&&e.target!==(e.kind==="add"?l.config_id:u)))return;let p=o||e.kind==="add";if(p&&l.operation!=="install")return;let m=p?GG(o?i.get(l.config_id):e.config,l,t.workspaceRoot):r.config(l.config_id);if(!m||!r.validate(l,m,p)||o&&Array.isArray(e.configIds)&&!e.configIds.includes(l.config_id))return;let h=t.servers.get(m.name),g=t.hostLeases.get(m.name);if(h&&!r.trusts(h.config)&&!Gn(h.config)&&!r.hasTargetProvenance(h.config)||h&&(h.config.registrySource===void 0||h.config.vfsSource!==void 0||h.config.id!==l.config_id)||h&&(!g||g.host!==h)||g&&(g.owner.kind!=="registry"||g.owner.identity!==`user:${l.config_id}`))return;s.push({material:l,config:m})}if(!(o&&[...i.keys()].some(u=>r.has(u)&&!a.has(u)&&(!Array.isArray(e.configIds)||e.configIds.includes(u))))){if(o&&i.size>0){let u=Jo(e.configsJson,t.workspaceRoot,new Map(s.map(({material:d,config:l})=>[d.config_id,l])));if(!u||u.allConfigsById.size!==i.size||[...u.allConfigsById.values()].some(d=>!d.config)||new Set([...u.allConfigsById.values()].map(d=>d.name)).size!==i.size)return}return s}}async function ZG(t){let{pi:e,state:r,data:n}=t;if(!Re(n)||n.kind!=="boot")return!1;let o=r.targetMaterialStore;if(!o?.hasConnection)return!1;let i,s;try{i=Lk(r,n);let p=n.configsJson===void 0?void 0:JSON.parse(n.configsJson);if(p!==void 0&&!Array.isArray(p))return!1;s=p}catch{return!1}if(!i)return!1;let a=o.epoch,c=()=>o.epoch===a,u=n.configIds;u===void 0&&s!==void 0&&(u=[...Dk(n.configsJson).keys()]);let d=new Map(i.map(p=>[p.material.config_id,p.config]));o.retainSelection(new Set(d.keys()));for(let{material:p,config:m}of i)o.commit(p,m);r.mcpAttachCloudSignaled||(r.mcpAttachCloudSignaled=!0,Bs(r.currentLoad?.latestPi??e,r)),r.embeddedRegistryConfigs=s;let l=Su({pi:e,state:r,data:{configIds:u},admittedConfigs:d,deps:{connect:(p,m,h,g)=>{if(!c())return Promise.resolve([]);let v=p.map(w=>{let b=w.id?d.get(w.id):void 0;if(!b&&w.id&&o.has(w.id))throw new Error("MCP target material is unavailable");return b??w});return Ve(v,m,h,w=>c()&&(g?.(w)??!0))}}});if(c()&&typeof n.onAdmitted=="function"&&n.onAdmitted(c),await l,!c())return!1;let f=r.currentLoad?.latestPi??e;return D(f,r),_e(r),Vo(f,r),!0}async function BG(t){let{pi:e,state:r,data:n}=t;if(!Re(n))return!1;if(n.kind==="boot")return ZG(t);let o;try{o=Lk(r,n)}catch{return!1}let i=o?.[0],s=r.targetMaterialStore;return!i||o?.length!==1||!s?!1:await WG({pi:e,state:r,data:n,candidate:i,store:s})}async function WG(t){let{pi:e,state:r,data:n,candidate:o,store:i}=t,{material:s,config:a}=o,c={state:r,configId:s.config_id,generation:n.attachmentGeneration};if(n.kind==="add"){if(!Xn(c))return!1}else if(r.sessionRemovedConfigIds.has(s.config_id))return!1;let u=i.epoch,d=r.attachmentCommandGenerations?.get(s.config_id),l=()=>i.epoch===u&&r.attachmentCommandGenerations?.get(s.config_id)===d,f=!1;try{i.commit(s,a);let p=n.kind==="add"||r.dynamicallyAddedConfigIds.has(s.config_id);return[...r.servers.values()].find(h=>h.config.id===s.config_id&&h.config.registrySource!==void 0&&(i.hasTargetProvenance(h.config)||Gn(h.config)))&&await wu({pi:e,state:r,data:{configId:s.config_id},replacement:!0}),!l()||(r.sessionRemovedConfigIds.delete(s.config_id),p?r.dynamicallyAddedConfigIds.add(s.config_id):r.dynamicallyAddedConfigIds.delete(s.config_id),s.operation!=="retire"&&(await Ve([a],r,e,l),!l()))?!1:(D(e,r),f=!0,!0)}finally{n.kind==="add"&&(f?ed(c):ia(c))}}function Ws(t,e){let r=t.mcpConnectionEpoch,n=(t.targetMaterialQueue??Promise.resolve()).then(()=>t.mcpConnectionEpoch===r?e():void 0).then(()=>{});return t.targetMaterialQueue=n.catch(()=>{}),n}function VG(t,e){t.registryGeneration++,Wm(t),t.headerSecrets={},t.headerSecretFailures={},t.mcpCatalog=void 0,t.mcpAttachDisabled=!1,t.catalogRefreshInFlight=void 0;let r=[];for(let[n,o]of t.hostLeases){if(o.owner.kind!=="registry")continue;t.configRevisions.set(n,(t.configRevisions.get(n)??0)+1),t.tokens.clearLocalCredential(n);let i=t.oauthCredentialDomains.get(n);i&&t.oauthCredentialRevisions.delete(i),t.oauthCredentialDomains.delete(n),t.credentialRevisions.delete(n),t.stagedOAuthCredentials.delete(n);let s=o.host;if(!s)continue;s.beginDisposal?.();let a=st({state:t,name:n,owner:o.owner,revision:o.revision,host:s});a&&r.push(s.dispose({strict:!0}).then(()=>{ve({state:t,name:n,retirement:a,result:{status:"retired"}})},c=>{ve({state:t,name:n,retirement:a,result:{status:"failed",error:c}}),t.diagnostics.push({origin:"registry",message:"Previous MCP connection could not be retired safely"}),D(e,t)}))}t.targetMaterialQueue=Promise.all([t.targetMaterialQueue??Promise.resolve(),...r]).then(()=>{}),D(e,t)}function jk(t,e){e.targetMaterialListenerBound||(e.targetMaterialListenerBound=!0,e.targetMaterialStore??=new Ru,t.events.on("augment:mcp-target-connection",r=>{let n=e.targetMaterialStore;if(n){if(im(r)){if(!n.setConnection(r))return}else n.revokeConnection(),e.diagnostics.push({origin:"registry",message:"MCP connection metadata is invalid; previous credential authority was revoked"});e.mcpConnectionEpoch=n.epoch,VG(e,t)}}),t.events.on("augment:mcp-target-material",r=>{let n=e.targetMaterialStore?.epoch;Ws(e,async()=>{if(e.targetMaterialStore?.epoch!==n)return;!await BG({pi:t,state:e,data:r})&&e.targetMaterialStore?.epoch===n&&(e.diagnostics.push({origin:"registry",message:"MCP configuration update was rejected; a fresh authorized configuration is required"}),D(t,e))}).catch(()=>{e.targetMaterialStore?.epoch===n&&(e.diagnostics.push({origin:"registry",message:"MCP snapshot application failed"}),D(t,e))})}))}import{logger as aZ}from"@hermes/logger";import{execFile as sm}from"node:child_process";import{win32 as am}from"node:path";import{logger as KG}from"@hermes/logger";var JG=5e3,YG=/^[a-z]:[\\/]/i,XG=/[<>:"|?*]/;function QG(){let t=process.env.SystemRoot??process.env.WINDIR;return!t||t!==t.trim()||!YG.test(t)||!am.isAbsolute(t)||t.slice(3).split(/[\\/]+/).some(n=>n==="."||n===".."||n.endsWith(".")||n.endsWith(" ")||XG.test(n)||[...n].some(o=>o.charCodeAt(0)<32))?null:am.join(am.normalize(t),"System32","WindowsPowerShell","v1.0","powershell.exe")}function eZ(t){let e=t.replaceAll("'","''");return Buffer.from(`Start-Process -FilePath '${e}'`,"utf16le").toString("base64")}function tZ(t,e){switch(process.platform){case"darwin":return sm("open",[t],e);case"win32":{let r=QG();return r?sm(r,["-NoProfile","-NonInteractive","-EncodedCommand",eZ(t)],e):(e(new Error("Windows system root metadata is invalid")),null)}default:return sm("xdg-open",[t],e)}}function Fk(t,e=JG){let r=KG.child({prefix:"open-browser"});return new Promise(n=>{let o;try{let c=new URL(t);if(c.protocol!=="http:"&&c.protocol!=="https:"){r.warn("Refusing to open browser for a non-http(s) URL"),n(!1);return}o=c.toString()}catch{r.warn("Refusing to open browser for an unparseable URL"),n(!1);return}let i=!1,s=null,a=setTimeout(()=>{if(!i){i=!0,r.warn("Browser open timed out (no display on a remote machine?)");try{s?.kill()}catch(c){r.debug("Failed to kill browser-open child process",{error:c})}n(!1)}},e);s=tZ(o,c=>{i||(i=!0,clearTimeout(a),c?(r.warn("Failed to open browser",{error:c}),n(!1)):n(!0))})})}import{createServer as rZ}from"node:http";function Cu(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function Uk(t){let e=Cu(t.title),r=Cu(t.heading),n=Cu(t.message),o=t.details?Cu(t.details):void 0,i=t.autoClose?"<script>setTimeout(() => window.close(), 2000);</script>":"";return`<!doctype html>
102
102
  <html lang="en">
103
103
  <head>
104
104
  <meta charset="utf-8" />
@@ -140,13 +140,13 @@ ${R}`,l++;break;case"id":u=R.includes("\0")?void 0:R;break;case"retry":/^\d+$/.t
140
140
  </main>
141
141
  ${i}
142
142
  </body>
143
- </html>`}function qk(t){return Uk({title:"Authentication successful",heading:"Authentication successful",message:t,autoClose:!0})}function Pu(t,e){return Uk({title:"Authentication failed",heading:"Authentication failed",message:t,details:e})}var nZ="127.0.0.1",Zk="/callback",Hk=3e3,Gk=3010,oZ="Authentication successful. You can close this window.",xu={"Content-Type":"text/html; charset=utf-8"};function Bk(t=process.env){return!!(t.SSH_CONNECTION||t.SSH_TTY)}function Wk(t,e){let r=t.trim();if(!r)throw new Error("No authorization code provided");let n;try{n=new URL(r).searchParams}catch{(r.includes("code=")||r.includes("error="))&&(n=new URLSearchParams(r))}if(!n)return{kind:"success",result:{code:r,state:e}};let o=n.get("state");if(n.has("error")){if(o!==e)throw new Error("OAuth state mismatch");return{kind:"error",params:n}}let i=n.get("code");if(!i)throw new Error("Could not find an authorization code in the pasted input");if(o&&o!==e)throw new Error("OAuth state mismatch");return{kind:"success",result:{code:i,state:o??e}}}function cm(t){let e=t.get("error")??"unknown_error",r=t.get("error_description");return new Error(`Authentication did not complete: ${e}${r?`: ${r}`:""}`)}function iZ(t,e,r){try{let n=new URL(t.url??"","http://localhost");if(n.pathname!==Zk){e.writeHead(404,xu),e.end(Pu("Callback route not found."));return}let o=n.searchParams.get("code"),i=n.searchParams.get("state"),s=n.searchParams.get("error");if(s){let a=c=>{e.writeHead(400,xu),e.end(Pu("Authentication did not complete.",`Error: ${s}`));let u=cm(n.searchParams);c instanceof Error?u=c:c!==void 0&&(u=new Error(String(c))),r.onError(u)};r.onErrorRetry(n.searchParams).then(c=>{c?(e.writeHead(302,{Location:c}),e.end()):a()}).catch(c=>a(c));return}if(!o||!i){e.writeHead(400,xu),e.end(Pu("Missing code or state parameter.")),r.onError(new Error("OAuth callback missing code or state"));return}e.writeHead(200,xu),e.end(qk(oZ)),r.onSuccess({code:o,state:i})}catch{e.writeHead(500,{"Content-Type":"text/plain; charset=utf-8"}),e.end("Internal error")}}async function sZ(t){for(let e=Hk;e<=Gk;e++)if(await new Promise(n=>{let o=()=>{t.removeListener("listening",i),n(!1)},i=()=>{t.removeListener("error",o),n(!0)};t.once("error",o),t.once("listening",i),t.listen(e,nZ)}))return e;throw new Error(`No free port in ${Hk}-${Gk} for the OAuth callback server`)}async function Vk(){let t=!1,e,r,n=new Promise((a,c)=>{e=u=>{t||(t=!0,a(u))},r=u=>{t||(t=!0,c(u))}}),o,i=rZ((a,c)=>{iZ(a,c,{onSuccess:u=>e?.(u),onError:u=>r?.(u),onErrorRetry:u=>o?.(u)??Promise.resolve(null)})}),s=await sZ(i);return{port:s,redirectUri:`http://localhost:${s}${Zk}`,waitForCode:()=>n,cancelWait:()=>e?.(null),close:()=>i.close(),setErrorRetryHandler:a=>{o=a}}}var um=aZ.child({prefix:"pi-mcp"}),cZ=300*1e3,Yk="MCP authentication was superseded";function Kk(){return Bk()?"You appear to be on a remote machine. Open the URL in a local browser, then paste the final redirect URL or code below.":"Complete sign-in in your browser. If it doesn't open, paste the final redirect URL or code below."}function vr(t){if(t.aborted)throw new Error("Authentication cancelled")}function Xk(t,e,r){return t.authenticationGeneration===r.authenticationGeneration&&t.servers.get(e)===r.server&&(t.serverGenerations.get(e)??0)===r.serverGeneration&&(t.configRevisions.get(e)??0)===r.installedConfigRevision&&(t.configDesiredRevisions.get(e)??0)===r.desiredConfigRevision&&t.tokens===r.tokenStore&&t.tokens.get(e)===r.token&&Qk(t.credentialRevisions.get(e),r.credentialRevision)}function Qk(t,e){return t?.revision===e?.revision&&t?.domain===e?.domain}function Jk(t,e,r){if(!Xk(t,e,r))throw new Error(Yk)}async function uZ(t,e,r,n,o,i,s){let a=t.servers.get(e),c=t.tokens,u=c.get(e),d=t.credentialRevisions.get(e);if(c!==r.tokenStore||!a||!u||!ft(r.server.config,a.config))return;let l=a.config,f=qt(t,a);try{let p=await c.restoreAfterSupersededAuthentication(e,o,u,n,i,f);if(p===void 0||t.tokens!==c||t.servers.get(e)?.config!==l||c.get(e)!==u||!Cr(qt(t,a),f)||!Qk(t.credentialRevisions.get(e),d)||c.reconcileCredentialIdentity?.(e,u,f)!==!0)return;on({state:t,name:e,revision:p}),j(t.currentLoad?.latestPi??s,t)}catch{um.error(`Failed to restore authoritative MCP OAuth token for "${e}" after superseded authentication`)}}function dZ(t){let e=t.serverMetadata;if(!e.authorization_endpoint||!e.token_endpoint)throw new Error("Authorization server metadata is missing required endpoints");let r=t.client.client_secret,n=t.client.token_endpoint_auth_method;return{accessToken:t.accessToken,refreshToken:t.refreshToken,expiresAt:t.expiresAt,tokenType:t.tokenType,scope:t.scope,resource:t.resource,serverMetadata:{issuer:e.issuer,authorization_endpoint:e.authorization_endpoint,token_endpoint:e.token_endpoint},client:{client_id:t.client.client_id,...typeof r=="string"?{client_secret:r}:{},...typeof n=="string"?{token_endpoint_auth_method:n}:{}}}}function lZ(t,e,r,n){return new Promise((o,i)=>{let s=!1,a,c=()=>{a&&clearTimeout(a),e.signal.removeEventListener("abort",d),t.cancelWait()},u=h=>{s||(s=!0,c(),h())},d=()=>u(()=>i(new Error("Authentication cancelled"))),l=()=>{a&&clearTimeout(a),a=setTimeout(()=>u(()=>i(new Error("Authentication timed out"))),cZ)},f=h=>{let g=h instanceof Error?h.message:String(h);u(()=>i(new Error(`Could not read the pasted authorization code (${g}). Restart sign-in and paste the full redirect URL.`)))},p=async(h,g)=>{let v=await n(h,l);if(!s){if(v){m(g);return}u(()=>i(cm(h)))}},m=(h=e.waitForManualCode())=>{h.then(async g=>{if(!(s||!g))try{let v=Wk(g,r());if(v.kind==="success"){u(()=>o(new URLSearchParams({code:v.result.code,state:v.result.state})));return}let w=e.waitForManualCode();await p(v.params,w)}catch(v){f(v)}}).catch(g=>u(()=>i(g instanceof Error?g:new Error(String(g)))))};if(t.setErrorRetryHandler(h=>n(h,l)),l(),e.signal.aborted){u(()=>i(new Error("Authentication cancelled")));return}e.signal.addEventListener("abort",d),t.waitForCode().then(h=>{h&&u(()=>o(new URLSearchParams({code:h.code,state:h.state})))}).catch(h=>u(()=>i(h instanceof Error?h:new Error(String(h))))),m()})}async function eE(t){let{serverName:e,state:r,pi:n,controller:o}=t,i=r.servers.get(e);if(!i)throw new Error(`Unknown MCP server "${e}"`);let s=i.config;if(s.type!=="http"&&s.type!=="sse")throw new Error(`MCP server "${e}" does not use OAuth authentication`);if(r.authenticating)throw new Error("Another MCP authentication is already in progress");r.authenticating=!0,r.authenticatingServerName=e;let a=++r.authenticationGeneration,c={authenticationGeneration:a,server:i,serverGeneration:r.serverGenerations.get(e)??0,installedConfigRevision:r.configRevisions.get(e)??0,desiredConfigRevision:r.configDesiredRevisions.get(e)??0,tokenStore:r.tokens,token:r.tokens.get(e),credentialRevision:r.credentialRevisions.get(e)},u=qt(r,i),d;try{vr(o.signal),d=await Vk(),vr(o.signal);let l=new URL(s.url),f,p;try{f=await Dd(l),vr(o.signal),p=await Ld(f),vr(o.signal)}catch{throw vr(o.signal),new Error(`OAuth discovery failed for MCP server "${e}". Verify that the endpoint supports OAuth and publishes discovery metadata.`)}let m=await c.tokenStore.captureAuthenticatedIdentityVersion(u);Jk(r,e,c),vr(o.signal);let h=await jd({config:{},serverMetadata:p,redirectUris:[d.redirectUri]});vr(o.signal);let g=await Pa(l,h,p,d.redirectUri,f.resourceScopes?.join(" "),f.resourceIdentifier?new URL(f.resourceIdentifier):void 0);vr(o.signal);let v=g,w=!1,b,x,S=(Pe,rn)=>{if(w)return x&&b&&xa(Pe,b)?x.then(lt=>lt.authUri.toString()):Promise.resolve(null);if(!xa(Pe,v))return Promise.resolve(null);w=!0;let nn=v;return b=nn,rn(),um.info(`MCP server "${e}" rejected offline_access (invalid_scope); retrying authorization without it`),x=Fd(nn).then(lt=>(v=lt,o.onAuthUrl({url:lt.authUri.toString(),instructions:Kk()}),lt)),x.then(lt=>lt.authUri.toString())};d.setErrorRetryHandler(Pe=>S(Pe,()=>{})),o.onAuthUrl({url:g.authUri.toString(),instructions:Kk()}),vr(o.signal),await Fk(g.authUri.toString());let R=await lZ(d,o,()=>v.state,S),I=await Ud(R,v);Jk(r,e,c);let ne=dZ(I),fe=await c.tokenStore.persistAuthenticated(e,ne,u,m);if(!Xk(r,e,c))throw await uZ(r,e,c,u,ne,fe,n),new Error(Yk);c.tokenStore.commit(e,ne,u),r.preservedCredentialIdentities?.delete(e),on({state:r,name:e,revision:fe}),r.tokens.clearAuthRequired(e),it(r,e),await Zs([e],r,n),j(r.currentLoad?.latestPi??n,r),_e(r),um.info(`MCP server "${e}" authenticated`)}finally{d?.close(),r.authenticationGeneration===a&&(r.authenticating=!1,r.authenticatingServerName=void 0)}}import{SettingsManager as kZ}from"@augmentcode/auggie-v2";import{resolveTargetFiles as fZ,SETTINGS_TARGET_ORDER as pZ,SettingsManager as hZ,scopeToSettingsTarget as mZ,settingsTargetToScope as dm}from"@augmentcode/auggie-v2";var gZ=pZ.map(t=>dm(t)),tE=(t,e)=>hZ.create(t,e);function rE(t,e){switch(e){case"global":return t.getGlobalSettings().mcpServers;case"project":return t.getProjectSettings().mcpServers;case"local":return t.getLocalSettings().mcpServers;case"managed":return t.getManagedSettings().mcpServers}}function nE(t,e,r){let n=tE(e,r);return gZ.filter(o=>rE(n,o)?.[t])}function oE(t){let e=t.map(n=>({target:mZ(n),path:n,exists:!0})),r=fZ({files:e});return"directTarget"in r?{scopes:t,direct:dm(r.directTarget)}:{scopes:r.files.map(n=>dm(n.target)),direct:null}}function yZ(t,e,r){let{servers:n}=Yn(e,r);return n.find(o=>o.name===t)?.disabled===!0}function iE(t,e,r,n,o){try{let i=tE(n,o);if(!rE(i,r)?.[t])return{ok:!1,error:`Server "${t}" not found in ${r} settings`};i.update(r,{path:["mcpServers",t,"disabled"],value:e})}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}return{ok:!0,overridden:yZ(t,n,o)!==e}}function lm(t){return`Cannot toggle "${t}": server is not in any editable settings file`}function sE(t,e,r){return lm(t)}function aE(t){return`Saved toggle for "${t}", but a higher-priority settings file overrides it`}import{logger as vZ}from"@hermes/logger";var pm=vZ.child({prefix:"pi-mcp"}),cE="hermes:mcp:register-server-source";function _Z(t,e){return t.type==="stdio"?Gt(t,e):Ht(t,e)}function uE(t,e){return JSON.stringify(t)===JSON.stringify(e)}function SZ(t,e){return{...t,disabled:e}}function wZ(t){try{return t.getServers()}catch(e){return pm.warn(`plugin MCP server source getServers() threw: ${e instanceof Error?e.message:String(e)}`),[]}}function bZ(t,e){if(t.getDiagnostics)try{for(let r of t.getDiagnostics())e.diagnostics.push({message:r.message,origin:"plugin"})}catch{}}function dE(t,e){t.diagnostics.push({server:e,message:`plugin MCP server "${e}" is shadowed by an existing MCP server of the same name; skipping`,origin:"plugin"})}function RZ(t,e,r,n){let o=new Map;if(!t)return o;for(let i of wZ(t)){let s=e.servers.get(i.name),a=_Z(i,r),c=e.sessionPluginDisabledOverrides.get(i.name),u=SZ(a,c??a.disabled===!0),d=e.pluginServerHosts.get(i.name);s&&d===s&&Q(e,i.name,s);let l=N(e,i.name),f=s!==void 0&&l?.owner.kind==="plugin"&&l.host===s,p=s!==void 0&&d===void 0&&n.has(i.name)&&uE(s.config,u);p&&(Q(e,i.name,s),Nm({state:e,name:i.name,host:s}));let m=l?.owner.kind==="vfs";if(s&&!(f||p||m)){e.pluginServerNames.delete(i.name),e.pluginServerHosts.delete(i.name),dE(e,i.name);continue}o.has(i.name)||o.set(i.name,u)}return o}async function CZ(t,e,r){let n=[];for(let o of e){if(t.has(o))continue;r.sessionPluginDisabledOverrides.delete(o);let i=N(r,o);if(i?.owner.kind!=="plugin")continue;let s=i.host;if(!s){xe({state:r,name:o,owner:i.owner,revision:i.revision});continue}let a=st({state:r,name:o,owner:i.owner,revision:i.revision,host:s});if(!a)continue;let c=pt(r,o,s.config.id,s.config);s.beginDisposal?.(),n.push(Promise.allSettled([c,s.dispose({strict:!0})]).then(u=>{let d=u.find(l=>l.status==="rejected");if(d)throw ve({state:r,name:o,retirement:a,result:{status:"failed",error:d.reason}}),d.reason;ve({state:r,name:o,retirement:a,result:{status:"retired"}}),xe({state:r,name:o,owner:i.owner,revision:i.revision})}))}await Promise.all(n)}function lE(t,e){dE(t,e)}function PZ(t){let{state:e,desired:r,previousNames:n,previousHosts:o}=t,i=[],s=new Map;for(let[a,c]of r){let u=e.servers.get(a),d=u?Q(e,a,u):N(e,a);if(d?.owner.kind==="local"||d?.owner.kind==="registry"){lE(e,a);continue}u===o.get(a)&&n.has(a)&&uE(u.config,c)||(s.set(a,We(e,a,"plugin")),i.push(c))}return{reservedRevisions:s,toConnect:i}}async function xZ(t,e,r){let n=r?.connect??Ve,o=e.pluginServerSource,i=e.workspaceRoot??process.cwd();e.diagnostics=e.diagnostics.filter(m=>m.origin!=="plugin"),o&&bZ(o,e);let s=new Set(e.pluginServerNames);e.pluginServerHosts??=new Map;for(let[m,h]of e.pluginServerHosts){let g=e.servers.get(m);(g===void 0||g===h)&&Q(e,m,h)}let a=RZ(o,e,i,s);e.configDesiredRevisions??=new Map,e.configRevisions??=new Map;let c=new Map,u=new Set;for(let[m,h]of e.hostLeases)h.owner.kind==="plugin"&&(u.add(m),h.host&&c.set(m,h.host));await CZ(a,u,e);let{reservedRevisions:d,toConnect:l}=PZ({state:e,desired:a,previousNames:u,previousHosts:c});if(l.length===0)return;pm.info(`Plugin MCP source: connecting ${l.length} server(s)`);let f=()=>e.currentLoad?.latestPi??t,p=m=>{let h=d.get(m.name);if(h===void 0||e.configDesiredRevisions.get(m.name)!==h)return!1;let g=N(e,m.name),v=g?.owner.kind!=="local"&&g?.owner.kind!=="registry";return v||lE(e,m.name),v};try{await n(l,e,f(),p,d,"plugin");for(let m of l)p(m)}catch{}finally{e.pluginServerNames=new Set([...e.hostLeases].filter(([,m])=>m.owner.kind==="plugin").map(([m])=>m)),j(f(),e),_e(e)}}function fm(t,e,r){e.pluginReconcileQueue??=Promise.resolve();let o=e.pluginReconcileQueue.then(()=>xZ(t,e,r)).catch(i=>{pm.warn(`Plugin MCP reconciliation failed: ${i instanceof Error?i.message:String(i)}`)});return e.pluginReconcileQueue=o,o}function fE(t,e){let{name:r,disabled:n,state:o,pi:i}=t,s=o.servers.get(r),a=s?Q(o,r,s):N(o,r);return a?.owner.kind!=="plugin"||a.host!==s?Promise.resolve():(o.sessionPluginDisabledOverrides.set(r,n),fm(o.currentLoad?.latestPi??i,o,e))}function pE(t,e){return{registerServerSource:r=>(e.pluginServerSource=r,fm(e.currentLoad?.latestPi??t,e),()=>{e.pluginServerSource===r&&(e.pluginServerSource=void 0,fm(e.currentLoad?.latestPi??t,e))})}}function EZ(t,e){let n=kZ.create(t,e).getManagedSettings().mcpServers;return new Set(Object.entries(n??{}).filter(([,o])=>o!==null).map(([o])=>o))}function hE(t){let{server:e,state:r,cwd:n,agentDir:o}=t;if(EZ(n,o).has(e))return{kind:"blocked",message:`Cannot toggle "${e}": server is managed and cannot be modified`};let i=r.servers.get(e);if(!i)return{kind:"blocked",message:lm(e)};if(Qu(r.mcpConfigOverride).has(e))return{kind:"session"};if(br(i,r.pluginServerHosts,r.hostLeases)!=="local")return{kind:"session"};let s=nE(e,n,o);if(s.length===0)return{kind:"blocked",message:sE(e,n,o)};let{scopes:a,direct:c}=oE(s);return{kind:"local",scopes:a,direct:c}}async function mE(t){let{server:e,disable:r,state:n,pi:o}=t,i=n.servers.get(e);if(!i)return;let s=n.hostLeases?.get(e)??(n.pluginServerHosts?.get(e)===i?Q(n,e,i):void 0);if(s?.owner.kind==="plugin"&&s.host===i){await fE({name:e,disabled:r,state:n,pi:o});return}Qu(n.mcpConfigOverride).has(e)&&n.sessionMcpConfigDisabledOverrides.set(e,r),i.config.registrySource!==void 0&&n.sessionRegistryDisabledOverrides.set(e,r);let a={...i.config,disabled:r};await Ve([a],n,o,void 0,void 0,s?.owner.kind),_e(n)}async function gE(t){let{server:e,disable:r,scope:n,state:o,pi:i,cwd:s,agentDir:a}=t,c=iE(e,r,n,s,a);if(!c.ok)throw new Error(c.error);return await lk(e,o,i,s,a),_e(o),c.overridden?{notice:aE(e)}:{}}import{DynamicBorder as KZ}from"@augmentcode/auggie-v2";import{Key as JZ,matchesKey as YZ,SearchableWindowedList as XZ,SpinnerTimer as QZ,truncateToWidth as Iu,wrapTextWithAnsi as e2}from"@earendil-works/pi-tui";import{getSettingsTargetLabel as TZ,scopeToSettingsTarget as AZ}from"@augmentcode/auggie-v2";import{truncateToWidth as MZ,visibleWidth as Zn,wrapTextWithAnsi as $Z}from"@earendil-works/pi-tui";var IZ=2,OZ=2,ku={name:"Name",source:"Source",status:"Status"};function hm(t){if(t.disabled)return{label:"Disabled",color:"muted"};switch(t.status){case"success":return{label:`${t.tools.length} tools available`,color:"success"};case"failed":return{label:"Failed",color:"error"};case"auth_required":return{label:"Auth required",color:"warning",hint:" Press Enter for options"};case"disabled":return{label:"Disabled",color:"muted"};default:return{label:"Initializing",color:"text"}}}function mm(t){return t.registrySource==="tenant"?"Shared":t.registrySource==="user"?"Private registry":t.source==="plugin"?"Plugin":t.source==="vfs"?"VFS":"User-configured"}function gm(t,e){let r=e-Zn(t);return r>0?t+" ".repeat(r):t}function Eu(t){return t.reduce((e,r)=>Math.max(e,Zn(r)),0)}function Yo(t,e,r,n){let o=`${e}Width`,i=Math.min(Math.max(0,r-t[o]),n);return t[o]+=i,n-i}function yE(t,e){let r=Math.max(1,Math.floor(e)),n=Math.min(IZ,r),o=r-n,i=Math.min(3,o),s=i<2?0:Math.min(OZ,Math.floor((o-i)/(i-1))),a=o-s*Math.max(0,i-1),c=["name","source","status"].slice(0,i),u={prefixWidth:n,gapWidth:s,nameWidth:0,sourceWidth:0,statusWidth:0};for(let g of c)a=Yo(u,g,1,a);for(let g=1;a>0;g++){let v=!1;for(let w of c)if(!(g>=Zn(ku[w]))&&(a=Yo(u,w,g+1,a),v=!0,a===0))break;if(!v)break}let d=t.map(g=>mm(g)),l=t.map(g=>hm(g)),f=Math.max(Zn(ku.source),Eu(d)),p=Math.max(Zn(ku.status),Eu(l.map(g=>g.label))),m=Math.max(Zn(ku.name),Eu(t.map(g=>g.name))),h=Math.max(p,Eu(l.map(g=>g.label+(g.hint??""))));return a=Yo(u,"source",f,a),a=Yo(u,"status",p,a),a=Yo(u,"name",m,a),Yo(u,"status",h,a),u}function vE(t,e,r){if(e<=r)return{start:0,end:e};let n=Math.floor(r/2),o=Math.max(0,Math.min(t-n,e-r));return{start:o,end:o+r}}function Xo(t,e){let r=Math.max(1,Math.floor(e));return t.flatMap(n=>$Z(n,r).map(o=>Zn(o)<=r?o:MZ(o,r,"")))}function zZ(t,e){return Math.max(0,t-e)}function Qo(t,e,r){return Math.max(0,Math.min(t,zZ(e,r)))}function _E(t,e,r){let n=Qo(t,e,r),o=Math.min(e,n+r);return{start:n,end:o,aboveCount:n,belowCount:e-o,rangeLabel:`Rows ${n+1}-${o} of ${e}`}}function SE(t,e){return String(t+1).padStart(String(e).length," ")}function ym(t){return TZ(AZ(t))}import{Key as NZ,matchesKey as DZ}from"@earendil-works/pi-tui";function Tu(t){if(t.source==="plugin"&&t.disabled)return t.canAuthenticate?["authenticate","toggle"]:["toggle"];let e=t.transport==="stdio"?["viewTools","viewLogs"]:["viewTools"];return t.canAuthenticate&&e.unshift("authenticate"),e.push("toggle","reconnect"),e}function wE(){return{step:"serverList",filterQuery:"",selectedServer:null,actionIndex:0,toolIndex:0,logScrollOffset:0,authInput:"",targetScopes:[],targetIndex:0,pendingToggle:null}}var bE=10,Bn=15;var LZ="k",jZ="j";function ei(t,e){return(t%e+e)%e}function ot(t,e){let r=t.findIndex(n=>n.name===e);return r>=0?r:0}function vm(t,e,r=!0){return e.matches(t,"tui.select.up")||r&&t===LZ?{kind:"up"}:e.matches(t,"tui.select.down")||r&&t===jZ?{kind:"down"}:e.matches(t,"tui.select.confirm")?{kind:"confirm"}:e.matches(t,"tui.select.cancel")?{kind:"cancel"}:DZ(t,NZ.backspace)?{kind:"back"}:{kind:"ignore"}}function FZ(t,e,r){if(e.kind==="filterChanged")return{state:{...t,filterQuery:e.query,selectedServer:r[0]?.name??null}};let n=r.length;if(n===0)return e.kind==="cancel"?{state:t,effect:{kind:"close"}}:{state:t};switch(e.kind){case"up":{let o=ei(ot(r,t.selectedServer)-1,n);return{state:{...t,selectedServer:r[o]?.name??null}}}case"down":{let o=ei(ot(r,t.selectedServer)+1,n);return{state:{...t,selectedServer:r[o]?.name??null}}}case"confirm":{let o=r[ot(r,t.selectedServer)];return o?.status==="auth_required"&&o.canAuthenticate?{state:t,effect:{kind:"authenticate",server:o.name}}:{state:{...t,step:"serverActions",actionIndex:0}}}case"cancel":return{state:t,effect:{kind:"close"}};default:return{state:t}}}function UZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)];if(!n)return{state:{...t,step:"serverList"}};let o=Tu(n);switch(e.kind){case"up":return{state:{...t,actionIndex:ei(t.actionIndex-1,o.length)}};case"down":return{state:{...t,actionIndex:ei(t.actionIndex+1,o.length)}};case"cancel":case"back":return{state:{...t,step:"serverList"}};case"confirm":{let i=o[t.actionIndex];return i==="viewTools"?{state:{...t,step:"viewTools",toolIndex:0}}:i==="viewLogs"?{state:{...t,step:"viewLogs",logScrollOffset:0}}:i==="authenticate"?{state:t,effect:{kind:"authenticate",server:n.name}}:i==="toggle"?{state:t,effect:{kind:"toggle",server:n.name,disable:!n.disabled}}:{state:t,effect:{kind:"reconnect",server:n.name}}}default:return{state:t}}}function qZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)]?.tools.length??0;switch(e.kind){case"up":return{state:{...t,toolIndex:Math.max(0,t.toolIndex-1)}};case"down":return{state:{...t,toolIndex:Math.min(Math.max(0,n-1),t.toolIndex+1)}};case"cancel":case"back":return{state:{...t,step:"serverActions"}};default:return{state:t}}}function HZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)]?.logLines()??[],o=Xo(n,r.logViewportWidth).length;switch(e.kind){case"up":return{state:{...t,logScrollOffset:Qo(t.logScrollOffset-1,o,r.windowSize)}};case"down":return{state:{...t,logScrollOffset:Qo(t.logScrollOffset+1,o,r.windowSize)}};case"cancel":case"back":return{state:{...t,step:"serverActions"}};default:return{state:t}}}function GZ(t,e){return e.kind==="cancel"||e.kind==="back"?{state:{...t,step:"serverActions",authInput:""}}:{state:t}}function Au(t,e){return{...t,step:e,targetScopes:[],targetIndex:0,pendingToggle:null}}function ZZ(t,e){let r=t.targetScopes.length;if(r===0)return{state:Au(t,"serverActions")};switch(e.kind){case"up":return{state:{...t,targetIndex:ei(t.targetIndex-1,r)}};case"down":return{state:{...t,targetIndex:ei(t.targetIndex+1,r)}};case"cancel":case"back":return{state:Au(t,"serverActions")};case"confirm":{let n=t.targetScopes[t.targetIndex],o=t.pendingToggle;return n&&o?{state:Au({...t,actionIndex:0},"serverList"),effect:{kind:"toggleWrite",server:o.server,disable:o.disable,scope:n}}:{state:Au(t,"serverActions")}}default:return{state:t}}}function RE(t,e,r){switch(t.step){case"serverList":return FZ(t,e,r.snapshots);case"serverActions":return UZ(t,e,r);case"viewTools":return qZ(t,e,r);case"viewLogs":return HZ(t,e,r);case"pasteAuthCode":return GZ(t,e);case"selectTarget":return ZZ(t,e);default:return{state:t}}}import{truncateToWidth as Ft,visibleWidth as BZ,wrapTextWithAnsi as tn}from"@earendil-works/pi-tui";var _m="\u2192 ",Mu=" ";function CE(t,e,r){return e?r.bold(r.fg("accent",t)):r.fg("text",t)}function _r(t,e){return e>0?Ft(t,e,"\u2026"):""}function PE(t,e,r,n,o,i,s){let a=Math.max(1,s),c=yE(r,a),u=" ".repeat(c.gapWidth),d=(m,h,g,v)=>{let w=[c.nameWidth>0?gm(h,c.nameWidth):"",c.sourceWidth>0?gm(g,c.sourceWidth):"",c.statusWidth>0?v:""].filter(b=>b.length>0);return m+w.join(u)},l=_r(Mu,c.prefixWidth),p=[d(l,i.bold(i.fg("accent",_r("Name",c.nameWidth))),i.bold(i.fg("accent",_r("Source",c.sourceWidth))),i.bold(i.fg("accent",_r("Status",c.statusWidth))))];if(e.length===0)p.push(Ft(i.fg("muted","No MCP servers available"),a,"\u2026"));else if(o.total===0)p.push(Ft(i.fg("muted","No matching MCP servers"),a,"\u2026"));else for(let m of n){let h=m.name===t.selectedServer,g=hm(m),v=_r(g.label,c.statusWidth),w=c.statusWidth-BZ(v),b=g.hint?_r(g.hint,w):"",x=i.fg(g.color,v)+(b?i.fg("muted",b):""),S=_r(h?_m:Mu,c.prefixWidth);p.push(d(h?i.fg("accent",S):S,CE(_r(m.name,c.nameWidth),h,i),CE(_r(mm(m),c.sourceWidth),h,i),x))}return o.hasOverflow&&p.push(Ft(i.fg("muted",` (${o.current}/${o.total})`),a,"\u2026")),p}var WZ={authenticate:{label:"Authenticate",description:"Connect to this server"},viewTools:{label:"View tools",description:"See all tools provided by this server"},viewLogs:{label:"View logs",description:"View logs from this server"},reconnect:{label:"Reconnect",description:"Restart the server connection"},toggle:{label:"Disable",description:"Enable or disable this server"}};function VZ(t,e){if(t==="authenticate")return e.status==="auth_required"?{label:"Authenticate",description:"Connect to this server"}:{label:"Reauthenticate",description:"Refresh authentication"};if(t==="toggle"){let r=e.source!=="local";return e.disabled?r?{label:"Enable for this session",description:"Re-enable this server for the current session only"}:{label:"Enable",description:"Enable this server (saved to settings.json)"}:r?{label:"Disable for this session",description:"Disable this server for the current session only"}:{label:"Disable",description:"Disable this server (saved to settings.json)"}}return WZ[t]}function xE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)];if(!i)return tn(r.fg("muted","No MCP servers available"),o);let s=i.transport==="stdio"?"Command: ":"URL: ",a=tn(r.fg("muted",s+i.connectionInfo),o);i.source==="plugin"&&a.push(...tn(r.fg("muted","Source: plugin (toggles apply to this session only)"),o)),a.push("");let c=Tu(i);for(let[u,d]of c.entries()){let l=u===t.actionIndex,f=VZ(d,i),p=f.label,m=l?r.bold(r.fg("accent",p)):r.fg("text",p);a.push(Ft((l?_m:Mu)+m+r.fg("muted",` - ${f.description}`),o,"\u2026"))}return a}function kE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)];if(!i)return tn(r.fg("muted","No tools available."),o);if(i.disabled)return tn(r.fg("muted","Server is disabled; no tools are currently available."),o);if(i.tools.length===0)return tn(r.fg("muted","No tools available."),o);let s=i.tools.length,{start:a,end:c}=vE(t.toolIndex,s,Bn),u=[];for(let d=a;d<c;d++){let l=i.tools[d];if(!l)continue;let p=d===t.toolIndex?r.bold(r.fg("accent",l.name)):r.fg("text",l.name);u.push(Ft(r.fg("muted",`${SE(d,s)} `)+p+(l.disabled?r.fg("muted"," (disabled)"):""),o,"\u2026"))}return u}function EE(t,e,r,n){let o=Math.max(1,n),s=e[ot(e,t.selectedServer)]?.logLines()??[];if(s.length===0)return tn(r.fg("muted","No logs available yet."),o);let a=Xo(s,o),c=a.length,u=_E(t.logScrollOffset,c,Bn),d=[];c>Bn&&d.push(Ft(r.fg("muted",u.rangeLabel),o,"\u2026")),u.aboveCount>0&&d.push(Ft(r.fg("dim",`\u2191 ${u.aboveCount} more rows`),o,"\u2026"));for(let l of a.slice(u.start,u.end))d.push(Ft(r.fg("text",l),o,""));return u.belowCount>0&&d.push(Ft(r.fg("dim",`\u2193 ${u.belowCount} more rows`),o,"\u2026")),d}function TE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)]?.name??"",s=[...tn(r.fg("muted",`Save the toggle for "${i}" to which settings file?`),o),""];for(let[a,c]of t.targetScopes.entries()){let u=a===t.targetIndex,d=u?r.bold(r.fg("accent",ym(c))):r.fg("text",ym(c));s.push(Ft((u?_m:Mu)+d,o,"\u2026"))}return s}var $u=3;function t2(t){return t.type==="stdio"?t.command:t.url}function r2(t){let e=t.getLogHistory();if(e.length===0){let r=t.lastError;return r?r.split(`
143
+ </html>`}function qk(t){return Uk({title:"Authentication successful",heading:"Authentication successful",message:t,autoClose:!0})}function Pu(t,e){return Uk({title:"Authentication failed",heading:"Authentication failed",message:t,details:e})}var nZ="127.0.0.1",Zk="/callback",Hk=3e3,Gk=3010,oZ="Authentication successful. You can close this window.",xu={"Content-Type":"text/html; charset=utf-8"};function Bk(t=process.env){return!!(t.SSH_CONNECTION||t.SSH_TTY)}function Wk(t,e){let r=t.trim();if(!r)throw new Error("No authorization code provided");let n;try{n=new URL(r).searchParams}catch{(r.includes("code=")||r.includes("error="))&&(n=new URLSearchParams(r))}if(!n)return{kind:"success",result:{code:r,state:e}};let o=n.get("state");if(n.has("error")){if(o!==e)throw new Error("OAuth state mismatch");return{kind:"error",params:n}}let i=n.get("code");if(!i)throw new Error("Could not find an authorization code in the pasted input");if(o&&o!==e)throw new Error("OAuth state mismatch");return{kind:"success",result:{code:i,state:o??e}}}function cm(t){let e=t.get("error")??"unknown_error",r=t.get("error_description");return new Error(`Authentication did not complete: ${e}${r?`: ${r}`:""}`)}function iZ(t,e,r){try{let n=new URL(t.url??"","http://localhost");if(n.pathname!==Zk){e.writeHead(404,xu),e.end(Pu("Callback route not found."));return}let o=n.searchParams.get("code"),i=n.searchParams.get("state"),s=n.searchParams.get("error");if(s){let a=c=>{e.writeHead(400,xu),e.end(Pu("Authentication did not complete.",`Error: ${s}`));let u=cm(n.searchParams);c instanceof Error?u=c:c!==void 0&&(u=new Error(String(c))),r.onError(u)};r.onErrorRetry(n.searchParams).then(c=>{c?(e.writeHead(302,{Location:c}),e.end()):a()}).catch(c=>a(c));return}if(!o||!i){e.writeHead(400,xu),e.end(Pu("Missing code or state parameter.")),r.onError(new Error("OAuth callback missing code or state"));return}e.writeHead(200,xu),e.end(qk(oZ)),r.onSuccess({code:o,state:i})}catch{e.writeHead(500,{"Content-Type":"text/plain; charset=utf-8"}),e.end("Internal error")}}async function sZ(t){for(let e=Hk;e<=Gk;e++)if(await new Promise(n=>{let o=()=>{t.removeListener("listening",i),n(!1)},i=()=>{t.removeListener("error",o),n(!0)};t.once("error",o),t.once("listening",i),t.listen(e,nZ)}))return e;throw new Error(`No free port in ${Hk}-${Gk} for the OAuth callback server`)}async function Vk(){let t=!1,e,r,n=new Promise((a,c)=>{e=u=>{t||(t=!0,a(u))},r=u=>{t||(t=!0,c(u))}}),o,i=rZ((a,c)=>{iZ(a,c,{onSuccess:u=>e?.(u),onError:u=>r?.(u),onErrorRetry:u=>o?.(u)??Promise.resolve(null)})}),s=await sZ(i);return{port:s,redirectUri:`http://localhost:${s}${Zk}`,waitForCode:()=>n,cancelWait:()=>e?.(null),close:()=>i.close(),setErrorRetryHandler:a=>{o=a}}}var um=aZ.child({prefix:"pi-mcp"}),cZ=300*1e3,Yk="MCP authentication was superseded";function Kk(){return Bk()?"You appear to be on a remote machine. Open the URL in a local browser, then paste the final redirect URL or code below.":"Complete sign-in in your browser. If it doesn't open, paste the final redirect URL or code below."}function vr(t){if(t.aborted)throw new Error("Authentication cancelled")}function Xk(t,e,r){return t.authenticationGeneration===r.authenticationGeneration&&t.servers.get(e)===r.server&&(t.serverGenerations.get(e)??0)===r.serverGeneration&&(t.configRevisions.get(e)??0)===r.installedConfigRevision&&(t.configDesiredRevisions.get(e)??0)===r.desiredConfigRevision&&t.tokens===r.tokenStore&&t.tokens.get(e)===r.token&&Qk(t.credentialRevisions.get(e),r.credentialRevision)}function Qk(t,e){return t?.revision===e?.revision&&t?.domain===e?.domain}function Jk(t,e,r){if(!Xk(t,e,r))throw new Error(Yk)}async function uZ(t,e,r,n,o,i,s){let a=t.servers.get(e),c=t.tokens,u=c.get(e),d=t.credentialRevisions.get(e);if(c!==r.tokenStore||!a||!u||!ft(r.server.config,a.config))return;let l=a.config,f=qt(t,a);try{let p=await c.restoreAfterSupersededAuthentication(e,o,u,n,i,f);if(p===void 0||t.tokens!==c||t.servers.get(e)?.config!==l||c.get(e)!==u||!Cr(qt(t,a),f)||!Qk(t.credentialRevisions.get(e),d)||c.reconcileCredentialIdentity?.(e,u,f)!==!0)return;on({state:t,name:e,revision:p}),D(t.currentLoad?.latestPi??s,t)}catch{um.error(`Failed to restore authoritative MCP OAuth token for "${e}" after superseded authentication`)}}function dZ(t){let e=t.serverMetadata;if(!e.authorization_endpoint||!e.token_endpoint)throw new Error("Authorization server metadata is missing required endpoints");let r=t.client.client_secret,n=t.client.token_endpoint_auth_method;return{accessToken:t.accessToken,refreshToken:t.refreshToken,expiresAt:t.expiresAt,tokenType:t.tokenType,scope:t.scope,resource:t.resource,serverMetadata:{issuer:e.issuer,authorization_endpoint:e.authorization_endpoint,token_endpoint:e.token_endpoint},client:{client_id:t.client.client_id,...typeof r=="string"?{client_secret:r}:{},...typeof n=="string"?{token_endpoint_auth_method:n}:{}}}}function lZ(t,e,r,n){return new Promise((o,i)=>{let s=!1,a,c=()=>{a&&clearTimeout(a),e.signal.removeEventListener("abort",d),t.cancelWait()},u=h=>{s||(s=!0,c(),h())},d=()=>u(()=>i(new Error("Authentication cancelled"))),l=()=>{a&&clearTimeout(a),a=setTimeout(()=>u(()=>i(new Error("Authentication timed out"))),cZ)},f=h=>{let g=h instanceof Error?h.message:String(h);u(()=>i(new Error(`Could not read the pasted authorization code (${g}). Restart sign-in and paste the full redirect URL.`)))},p=async(h,g)=>{let v=await n(h,l);if(!s){if(v){m(g);return}u(()=>i(cm(h)))}},m=(h=e.waitForManualCode())=>{h.then(async g=>{if(!(s||!g))try{let v=Wk(g,r());if(v.kind==="success"){u(()=>o(new URLSearchParams({code:v.result.code,state:v.result.state})));return}let w=e.waitForManualCode();await p(v.params,w)}catch(v){f(v)}}).catch(g=>u(()=>i(g instanceof Error?g:new Error(String(g)))))};if(t.setErrorRetryHandler(h=>n(h,l)),l(),e.signal.aborted){u(()=>i(new Error("Authentication cancelled")));return}e.signal.addEventListener("abort",d),t.waitForCode().then(h=>{h&&u(()=>o(new URLSearchParams({code:h.code,state:h.state})))}).catch(h=>u(()=>i(h instanceof Error?h:new Error(String(h))))),m()})}async function eE(t){let{serverName:e,state:r,pi:n,controller:o}=t,i=r.servers.get(e);if(!i)throw new Error(`Unknown MCP server "${e}"`);let s=i.config;if(s.type!=="http"&&s.type!=="sse")throw new Error(`MCP server "${e}" does not use OAuth authentication`);if(r.authenticating)throw new Error("Another MCP authentication is already in progress");r.authenticating=!0,r.authenticatingServerName=e;let a=++r.authenticationGeneration,c={authenticationGeneration:a,server:i,serverGeneration:r.serverGenerations.get(e)??0,installedConfigRevision:r.configRevisions.get(e)??0,desiredConfigRevision:r.configDesiredRevisions.get(e)??0,tokenStore:r.tokens,token:r.tokens.get(e),credentialRevision:r.credentialRevisions.get(e)},u=qt(r,i),d;try{vr(o.signal),d=await Vk(),vr(o.signal);let l=new URL(s.url),f,p;try{f=await Dd(l),vr(o.signal),p=await Ld(f),vr(o.signal)}catch{throw vr(o.signal),new Error(`OAuth discovery failed for MCP server "${e}". Verify that the endpoint supports OAuth and publishes discovery metadata.`)}let m=await c.tokenStore.captureAuthenticatedIdentityVersion(u);Jk(r,e,c),vr(o.signal);let h=await jd({config:{},serverMetadata:p,redirectUris:[d.redirectUri]});vr(o.signal);let g=await Pa(l,h,p,d.redirectUri,f.resourceScopes?.join(" "),f.resourceIdentifier?new URL(f.resourceIdentifier):void 0);vr(o.signal);let v=g,w=!1,b,x,S=(Pe,rn)=>{if(w)return x&&b&&xa(Pe,b)?x.then(lt=>lt.authUri.toString()):Promise.resolve(null);if(!xa(Pe,v))return Promise.resolve(null);w=!0;let nn=v;return b=nn,rn(),um.info(`MCP server "${e}" rejected offline_access (invalid_scope); retrying authorization without it`),x=Fd(nn).then(lt=>(v=lt,o.onAuthUrl({url:lt.authUri.toString(),instructions:Kk()}),lt)),x.then(lt=>lt.authUri.toString())};d.setErrorRetryHandler(Pe=>S(Pe,()=>{})),o.onAuthUrl({url:g.authUri.toString(),instructions:Kk()}),vr(o.signal),await Fk(g.authUri.toString());let R=await lZ(d,o,()=>v.state,S),I=await Ud(R,v);Jk(r,e,c);let ne=dZ(I),fe=await c.tokenStore.persistAuthenticated(e,ne,u,m);if(!Xk(r,e,c))throw await uZ(r,e,c,u,ne,fe,n),new Error(Yk);c.tokenStore.commit(e,ne,u),r.preservedCredentialIdentities?.delete(e),on({state:r,name:e,revision:fe}),r.tokens.clearAuthRequired(e),it(r,e),await Zs([e],r,n),D(r.currentLoad?.latestPi??n,r),_e(r),um.info(`MCP server "${e}" authenticated`)}finally{d?.close(),r.authenticationGeneration===a&&(r.authenticating=!1,r.authenticatingServerName=void 0)}}import{SettingsManager as kZ}from"@augmentcode/auggie-v2";import{resolveTargetFiles as fZ,SETTINGS_TARGET_ORDER as pZ,SettingsManager as hZ,scopeToSettingsTarget as mZ,settingsTargetToScope as dm}from"@augmentcode/auggie-v2";var gZ=pZ.map(t=>dm(t)),tE=(t,e)=>hZ.create(t,e);function rE(t,e){switch(e){case"global":return t.getGlobalSettings().mcpServers;case"project":return t.getProjectSettings().mcpServers;case"local":return t.getLocalSettings().mcpServers;case"managed":return t.getManagedSettings().mcpServers}}function nE(t,e,r){let n=tE(e,r);return gZ.filter(o=>rE(n,o)?.[t])}function oE(t){let e=t.map(n=>({target:mZ(n),path:n,exists:!0})),r=fZ({files:e});return"directTarget"in r?{scopes:t,direct:dm(r.directTarget)}:{scopes:r.files.map(n=>dm(n.target)),direct:null}}function yZ(t,e,r){let{servers:n}=Yn(e,r);return n.find(o=>o.name===t)?.disabled===!0}function iE(t,e,r,n,o){try{let i=tE(n,o);if(!rE(i,r)?.[t])return{ok:!1,error:`Server "${t}" not found in ${r} settings`};i.update(r,{path:["mcpServers",t,"disabled"],value:e})}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}return{ok:!0,overridden:yZ(t,n,o)!==e}}function lm(t){return`Cannot toggle "${t}": server is not in any editable settings file`}function sE(t,e,r){return lm(t)}function aE(t){return`Saved toggle for "${t}", but a higher-priority settings file overrides it`}import{logger as vZ}from"@hermes/logger";var pm=vZ.child({prefix:"pi-mcp"}),cE="hermes:mcp:register-server-source";function _Z(t,e){return t.type==="stdio"?Gt(t,e):Ht(t,e)}function uE(t,e){return JSON.stringify(t)===JSON.stringify(e)}function SZ(t,e){return{...t,disabled:e}}function wZ(t){try{return t.getServers()}catch(e){return pm.warn(`plugin MCP server source getServers() threw: ${e instanceof Error?e.message:String(e)}`),[]}}function bZ(t,e){if(t.getDiagnostics)try{for(let r of t.getDiagnostics())e.diagnostics.push({message:r.message,origin:"plugin"})}catch{}}function dE(t,e){t.diagnostics.push({server:e,message:`plugin MCP server "${e}" is shadowed by an existing MCP server of the same name; skipping`,origin:"plugin"})}function RZ(t,e,r,n){let o=new Map;if(!t)return o;for(let i of wZ(t)){let s=e.servers.get(i.name),a=_Z(i,r),c=e.sessionPluginDisabledOverrides.get(i.name),u=SZ(a,c??a.disabled===!0),d=e.pluginServerHosts.get(i.name);s&&d===s&&Q(e,i.name,s);let l=N(e,i.name),f=s!==void 0&&l?.owner.kind==="plugin"&&l.host===s,p=s!==void 0&&d===void 0&&n.has(i.name)&&uE(s.config,u);p&&(Q(e,i.name,s),Nm({state:e,name:i.name,host:s}));let m=l?.owner.kind==="vfs";if(s&&!(f||p||m)){e.pluginServerNames.delete(i.name),e.pluginServerHosts.delete(i.name),dE(e,i.name);continue}o.has(i.name)||o.set(i.name,u)}return o}async function CZ(t,e,r){let n=[];for(let o of e){if(t.has(o))continue;r.sessionPluginDisabledOverrides.delete(o);let i=N(r,o);if(i?.owner.kind!=="plugin")continue;let s=i.host;if(!s){xe({state:r,name:o,owner:i.owner,revision:i.revision});continue}let a=st({state:r,name:o,owner:i.owner,revision:i.revision,host:s});if(!a)continue;let c=pt(r,o,s.config.id,s.config);s.beginDisposal?.(),n.push(Promise.allSettled([c,s.dispose({strict:!0})]).then(u=>{let d=u.find(l=>l.status==="rejected");if(d)throw ve({state:r,name:o,retirement:a,result:{status:"failed",error:d.reason}}),d.reason;ve({state:r,name:o,retirement:a,result:{status:"retired"}}),xe({state:r,name:o,owner:i.owner,revision:i.revision})}))}await Promise.all(n)}function lE(t,e){dE(t,e)}function PZ(t){let{state:e,desired:r,previousNames:n,previousHosts:o}=t,i=[],s=new Map;for(let[a,c]of r){let u=e.servers.get(a),d=u?Q(e,a,u):N(e,a);if(d?.owner.kind==="local"||d?.owner.kind==="registry"){lE(e,a);continue}u===o.get(a)&&n.has(a)&&uE(u.config,c)||(s.set(a,We(e,a,"plugin")),i.push(c))}return{reservedRevisions:s,toConnect:i}}async function xZ(t,e,r){let n=r?.connect??Ve,o=e.pluginServerSource,i=e.workspaceRoot??process.cwd();e.diagnostics=e.diagnostics.filter(m=>m.origin!=="plugin"),o&&bZ(o,e);let s=new Set(e.pluginServerNames);e.pluginServerHosts??=new Map;for(let[m,h]of e.pluginServerHosts){let g=e.servers.get(m);(g===void 0||g===h)&&Q(e,m,h)}let a=RZ(o,e,i,s);e.configDesiredRevisions??=new Map,e.configRevisions??=new Map;let c=new Map,u=new Set;for(let[m,h]of e.hostLeases)h.owner.kind==="plugin"&&(u.add(m),h.host&&c.set(m,h.host));await CZ(a,u,e);let{reservedRevisions:d,toConnect:l}=PZ({state:e,desired:a,previousNames:u,previousHosts:c});if(l.length===0)return;pm.info(`Plugin MCP source: connecting ${l.length} server(s)`);let f=()=>e.currentLoad?.latestPi??t,p=m=>{let h=d.get(m.name);if(h===void 0||e.configDesiredRevisions.get(m.name)!==h)return!1;let g=N(e,m.name),v=g?.owner.kind!=="local"&&g?.owner.kind!=="registry";return v||lE(e,m.name),v};try{await n(l,e,f(),p,d,"plugin");for(let m of l)p(m)}catch{}finally{e.pluginServerNames=new Set([...e.hostLeases].filter(([,m])=>m.owner.kind==="plugin").map(([m])=>m)),D(f(),e),_e(e)}}function fm(t,e,r){e.pluginReconcileQueue??=Promise.resolve();let o=e.pluginReconcileQueue.then(()=>xZ(t,e,r)).catch(i=>{pm.warn(`Plugin MCP reconciliation failed: ${i instanceof Error?i.message:String(i)}`)});return e.pluginReconcileQueue=o,o}function fE(t,e){let{name:r,disabled:n,state:o,pi:i}=t,s=o.servers.get(r),a=s?Q(o,r,s):N(o,r);return a?.owner.kind!=="plugin"||a.host!==s?Promise.resolve():(o.sessionPluginDisabledOverrides.set(r,n),fm(o.currentLoad?.latestPi??i,o,e))}function pE(t,e){return{registerServerSource:r=>(e.pluginServerSource=r,fm(e.currentLoad?.latestPi??t,e),()=>{e.pluginServerSource===r&&(e.pluginServerSource=void 0,fm(e.currentLoad?.latestPi??t,e))})}}function EZ(t,e){let n=kZ.create(t,e).getManagedSettings().mcpServers;return new Set(Object.entries(n??{}).filter(([,o])=>o!==null).map(([o])=>o))}function hE(t){let{server:e,state:r,cwd:n,agentDir:o}=t;if(EZ(n,o).has(e))return{kind:"blocked",message:`Cannot toggle "${e}": server is managed and cannot be modified`};let i=r.servers.get(e);if(!i)return{kind:"blocked",message:lm(e)};if(Qu(r.mcpConfigOverride).has(e))return{kind:"session"};if(br(i,r.pluginServerHosts,r.hostLeases)!=="local")return{kind:"session"};let s=nE(e,n,o);if(s.length===0)return{kind:"blocked",message:sE(e,n,o)};let{scopes:a,direct:c}=oE(s);return{kind:"local",scopes:a,direct:c}}async function mE(t){let{server:e,disable:r,state:n,pi:o}=t,i=n.servers.get(e);if(!i)return;let s=n.hostLeases?.get(e)??(n.pluginServerHosts?.get(e)===i?Q(n,e,i):void 0);if(s?.owner.kind==="plugin"&&s.host===i){await fE({name:e,disabled:r,state:n,pi:o});return}Qu(n.mcpConfigOverride).has(e)&&n.sessionMcpConfigDisabledOverrides.set(e,r),i.config.registrySource!==void 0&&n.sessionRegistryDisabledOverrides.set(e,r);let a={...i.config,disabled:r};await Ve([a],n,o,void 0,void 0,s?.owner.kind),_e(n)}async function gE(t){let{server:e,disable:r,scope:n,state:o,pi:i,cwd:s,agentDir:a}=t,c=iE(e,r,n,s,a);if(!c.ok)throw new Error(c.error);return await lk(e,o,i,s,a),_e(o),c.overridden?{notice:aE(e)}:{}}import{DynamicBorder as KZ}from"@augmentcode/auggie-v2";import{Key as JZ,matchesKey as YZ,SearchableWindowedList as XZ,SpinnerTimer as QZ,truncateToWidth as Iu,wrapTextWithAnsi as e2}from"@earendil-works/pi-tui";import{getSettingsTargetLabel as TZ,scopeToSettingsTarget as AZ}from"@augmentcode/auggie-v2";import{truncateToWidth as MZ,visibleWidth as Zn,wrapTextWithAnsi as $Z}from"@earendil-works/pi-tui";var IZ=2,OZ=2,ku={name:"Name",source:"Source",status:"Status"};function hm(t){if(t.disabled)return{label:"Disabled",color:"muted"};switch(t.status){case"success":return{label:`${t.tools.length} tools available`,color:"success"};case"failed":return{label:"Failed",color:"error"};case"auth_required":return{label:"Auth required",color:"warning",hint:" Press Enter for options"};case"disabled":return{label:"Disabled",color:"muted"};default:return{label:"Initializing",color:"text"}}}function mm(t){return t.registrySource==="tenant"?"Shared":t.registrySource==="user"?"Private registry":t.source==="plugin"?"Plugin":t.source==="vfs"?"VFS":"User-configured"}function gm(t,e){let r=e-Zn(t);return r>0?t+" ".repeat(r):t}function Eu(t){return t.reduce((e,r)=>Math.max(e,Zn(r)),0)}function Yo(t,e,r,n){let o=`${e}Width`,i=Math.min(Math.max(0,r-t[o]),n);return t[o]+=i,n-i}function yE(t,e){let r=Math.max(1,Math.floor(e)),n=Math.min(IZ,r),o=r-n,i=Math.min(3,o),s=i<2?0:Math.min(OZ,Math.floor((o-i)/(i-1))),a=o-s*Math.max(0,i-1),c=["name","source","status"].slice(0,i),u={prefixWidth:n,gapWidth:s,nameWidth:0,sourceWidth:0,statusWidth:0};for(let g of c)a=Yo(u,g,1,a);for(let g=1;a>0;g++){let v=!1;for(let w of c)if(!(g>=Zn(ku[w]))&&(a=Yo(u,w,g+1,a),v=!0,a===0))break;if(!v)break}let d=t.map(g=>mm(g)),l=t.map(g=>hm(g)),f=Math.max(Zn(ku.source),Eu(d)),p=Math.max(Zn(ku.status),Eu(l.map(g=>g.label))),m=Math.max(Zn(ku.name),Eu(t.map(g=>g.name))),h=Math.max(p,Eu(l.map(g=>g.label+(g.hint??""))));return a=Yo(u,"source",f,a),a=Yo(u,"status",p,a),a=Yo(u,"name",m,a),Yo(u,"status",h,a),u}function vE(t,e,r){if(e<=r)return{start:0,end:e};let n=Math.floor(r/2),o=Math.max(0,Math.min(t-n,e-r));return{start:o,end:o+r}}function Xo(t,e){let r=Math.max(1,Math.floor(e));return t.flatMap(n=>$Z(n,r).map(o=>Zn(o)<=r?o:MZ(o,r,"")))}function zZ(t,e){return Math.max(0,t-e)}function Qo(t,e,r){return Math.max(0,Math.min(t,zZ(e,r)))}function _E(t,e,r){let n=Qo(t,e,r),o=Math.min(e,n+r);return{start:n,end:o,aboveCount:n,belowCount:e-o,rangeLabel:`Rows ${n+1}-${o} of ${e}`}}function SE(t,e){return String(t+1).padStart(String(e).length," ")}function ym(t){return TZ(AZ(t))}import{Key as NZ,matchesKey as DZ}from"@earendil-works/pi-tui";function Tu(t){if(t.source==="plugin"&&t.disabled)return t.canAuthenticate?["authenticate","toggle"]:["toggle"];let e=t.transport==="stdio"?["viewTools","viewLogs"]:["viewTools"];return t.canAuthenticate&&e.unshift("authenticate"),e.push("toggle","reconnect"),e}function wE(){return{step:"serverList",filterQuery:"",selectedServer:null,actionIndex:0,toolIndex:0,logScrollOffset:0,authInput:"",targetScopes:[],targetIndex:0,pendingToggle:null}}var bE=10,Bn=15;var LZ="k",jZ="j";function ei(t,e){return(t%e+e)%e}function ot(t,e){let r=t.findIndex(n=>n.name===e);return r>=0?r:0}function vm(t,e,r=!0){return e.matches(t,"tui.select.up")||r&&t===LZ?{kind:"up"}:e.matches(t,"tui.select.down")||r&&t===jZ?{kind:"down"}:e.matches(t,"tui.select.confirm")?{kind:"confirm"}:e.matches(t,"tui.select.cancel")?{kind:"cancel"}:DZ(t,NZ.backspace)?{kind:"back"}:{kind:"ignore"}}function FZ(t,e,r){if(e.kind==="filterChanged")return{state:{...t,filterQuery:e.query,selectedServer:r[0]?.name??null}};let n=r.length;if(n===0)return e.kind==="cancel"?{state:t,effect:{kind:"close"}}:{state:t};switch(e.kind){case"up":{let o=ei(ot(r,t.selectedServer)-1,n);return{state:{...t,selectedServer:r[o]?.name??null}}}case"down":{let o=ei(ot(r,t.selectedServer)+1,n);return{state:{...t,selectedServer:r[o]?.name??null}}}case"confirm":{let o=r[ot(r,t.selectedServer)];return o?.status==="auth_required"&&o.canAuthenticate?{state:t,effect:{kind:"authenticate",server:o.name}}:{state:{...t,step:"serverActions",actionIndex:0}}}case"cancel":return{state:t,effect:{kind:"close"}};default:return{state:t}}}function UZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)];if(!n)return{state:{...t,step:"serverList"}};let o=Tu(n);switch(e.kind){case"up":return{state:{...t,actionIndex:ei(t.actionIndex-1,o.length)}};case"down":return{state:{...t,actionIndex:ei(t.actionIndex+1,o.length)}};case"cancel":case"back":return{state:{...t,step:"serverList"}};case"confirm":{let i=o[t.actionIndex];return i==="viewTools"?{state:{...t,step:"viewTools",toolIndex:0}}:i==="viewLogs"?{state:{...t,step:"viewLogs",logScrollOffset:0}}:i==="authenticate"?{state:t,effect:{kind:"authenticate",server:n.name}}:i==="toggle"?{state:t,effect:{kind:"toggle",server:n.name,disable:!n.disabled}}:{state:t,effect:{kind:"reconnect",server:n.name}}}default:return{state:t}}}function qZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)]?.tools.length??0;switch(e.kind){case"up":return{state:{...t,toolIndex:Math.max(0,t.toolIndex-1)}};case"down":return{state:{...t,toolIndex:Math.min(Math.max(0,n-1),t.toolIndex+1)}};case"cancel":case"back":return{state:{...t,step:"serverActions"}};default:return{state:t}}}function HZ(t,e,r){let n=r.snapshots[ot(r.snapshots,t.selectedServer)]?.logLines()??[],o=Xo(n,r.logViewportWidth).length;switch(e.kind){case"up":return{state:{...t,logScrollOffset:Qo(t.logScrollOffset-1,o,r.windowSize)}};case"down":return{state:{...t,logScrollOffset:Qo(t.logScrollOffset+1,o,r.windowSize)}};case"cancel":case"back":return{state:{...t,step:"serverActions"}};default:return{state:t}}}function GZ(t,e){return e.kind==="cancel"||e.kind==="back"?{state:{...t,step:"serverActions",authInput:""}}:{state:t}}function Au(t,e){return{...t,step:e,targetScopes:[],targetIndex:0,pendingToggle:null}}function ZZ(t,e){let r=t.targetScopes.length;if(r===0)return{state:Au(t,"serverActions")};switch(e.kind){case"up":return{state:{...t,targetIndex:ei(t.targetIndex-1,r)}};case"down":return{state:{...t,targetIndex:ei(t.targetIndex+1,r)}};case"cancel":case"back":return{state:Au(t,"serverActions")};case"confirm":{let n=t.targetScopes[t.targetIndex],o=t.pendingToggle;return n&&o?{state:Au({...t,actionIndex:0},"serverList"),effect:{kind:"toggleWrite",server:o.server,disable:o.disable,scope:n}}:{state:Au(t,"serverActions")}}default:return{state:t}}}function RE(t,e,r){switch(t.step){case"serverList":return FZ(t,e,r.snapshots);case"serverActions":return UZ(t,e,r);case"viewTools":return qZ(t,e,r);case"viewLogs":return HZ(t,e,r);case"pasteAuthCode":return GZ(t,e);case"selectTarget":return ZZ(t,e);default:return{state:t}}}import{truncateToWidth as Ft,visibleWidth as BZ,wrapTextWithAnsi as tn}from"@earendil-works/pi-tui";var _m="\u2192 ",Mu=" ";function CE(t,e,r){return e?r.bold(r.fg("accent",t)):r.fg("text",t)}function _r(t,e){return e>0?Ft(t,e,"\u2026"):""}function PE(t,e,r,n,o,i,s){let a=Math.max(1,s),c=yE(r,a),u=" ".repeat(c.gapWidth),d=(m,h,g,v)=>{let w=[c.nameWidth>0?gm(h,c.nameWidth):"",c.sourceWidth>0?gm(g,c.sourceWidth):"",c.statusWidth>0?v:""].filter(b=>b.length>0);return m+w.join(u)},l=_r(Mu,c.prefixWidth),p=[d(l,i.bold(i.fg("accent",_r("Name",c.nameWidth))),i.bold(i.fg("accent",_r("Source",c.sourceWidth))),i.bold(i.fg("accent",_r("Status",c.statusWidth))))];if(e.length===0)p.push(Ft(i.fg("muted","No MCP servers available"),a,"\u2026"));else if(o.total===0)p.push(Ft(i.fg("muted","No matching MCP servers"),a,"\u2026"));else for(let m of n){let h=m.name===t.selectedServer,g=hm(m),v=_r(g.label,c.statusWidth),w=c.statusWidth-BZ(v),b=g.hint?_r(g.hint,w):"",x=i.fg(g.color,v)+(b?i.fg("muted",b):""),S=_r(h?_m:Mu,c.prefixWidth);p.push(d(h?i.fg("accent",S):S,CE(_r(m.name,c.nameWidth),h,i),CE(_r(mm(m),c.sourceWidth),h,i),x))}return o.hasOverflow&&p.push(Ft(i.fg("muted",` (${o.current}/${o.total})`),a,"\u2026")),p}var WZ={authenticate:{label:"Authenticate",description:"Connect to this server"},viewTools:{label:"View tools",description:"See all tools provided by this server"},viewLogs:{label:"View logs",description:"View logs from this server"},reconnect:{label:"Reconnect",description:"Restart the server connection"},toggle:{label:"Disable",description:"Enable or disable this server"}};function VZ(t,e){if(t==="authenticate")return e.status==="auth_required"?{label:"Authenticate",description:"Connect to this server"}:{label:"Reauthenticate",description:"Refresh authentication"};if(t==="toggle"){let r=e.source!=="local";return e.disabled?r?{label:"Enable for this session",description:"Re-enable this server for the current session only"}:{label:"Enable",description:"Enable this server (saved to settings.json)"}:r?{label:"Disable for this session",description:"Disable this server for the current session only"}:{label:"Disable",description:"Disable this server (saved to settings.json)"}}return WZ[t]}function xE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)];if(!i)return tn(r.fg("muted","No MCP servers available"),o);let s=i.transport==="stdio"?"Command: ":"URL: ",a=tn(r.fg("muted",s+i.connectionInfo),o);i.source==="plugin"&&a.push(...tn(r.fg("muted","Source: plugin (toggles apply to this session only)"),o)),a.push("");let c=Tu(i);for(let[u,d]of c.entries()){let l=u===t.actionIndex,f=VZ(d,i),p=f.label,m=l?r.bold(r.fg("accent",p)):r.fg("text",p);a.push(Ft((l?_m:Mu)+m+r.fg("muted",` - ${f.description}`),o,"\u2026"))}return a}function kE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)];if(!i)return tn(r.fg("muted","No tools available."),o);if(i.disabled)return tn(r.fg("muted","Server is disabled; no tools are currently available."),o);if(i.tools.length===0)return tn(r.fg("muted","No tools available."),o);let s=i.tools.length,{start:a,end:c}=vE(t.toolIndex,s,Bn),u=[];for(let d=a;d<c;d++){let l=i.tools[d];if(!l)continue;let p=d===t.toolIndex?r.bold(r.fg("accent",l.name)):r.fg("text",l.name);u.push(Ft(r.fg("muted",`${SE(d,s)} `)+p+(l.disabled?r.fg("muted"," (disabled)"):""),o,"\u2026"))}return u}function EE(t,e,r,n){let o=Math.max(1,n),s=e[ot(e,t.selectedServer)]?.logLines()??[];if(s.length===0)return tn(r.fg("muted","No logs available yet."),o);let a=Xo(s,o),c=a.length,u=_E(t.logScrollOffset,c,Bn),d=[];c>Bn&&d.push(Ft(r.fg("muted",u.rangeLabel),o,"\u2026")),u.aboveCount>0&&d.push(Ft(r.fg("dim",`\u2191 ${u.aboveCount} more rows`),o,"\u2026"));for(let l of a.slice(u.start,u.end))d.push(Ft(r.fg("text",l),o,""));return u.belowCount>0&&d.push(Ft(r.fg("dim",`\u2193 ${u.belowCount} more rows`),o,"\u2026")),d}function TE(t,e,r,n){let o=Math.max(1,n),i=e[ot(e,t.selectedServer)]?.name??"",s=[...tn(r.fg("muted",`Save the toggle for "${i}" to which settings file?`),o),""];for(let[a,c]of t.targetScopes.entries()){let u=a===t.targetIndex,d=u?r.bold(r.fg("accent",ym(c))):r.fg("text",ym(c));s.push(Ft((u?_m:Mu)+d,o,"\u2026"))}return s}var $u=3;function t2(t){return t.type==="stdio"?t.command:t.url}function r2(t){let e=t.getLogHistory();if(e.length===0){let r=t.lastError;return r?r.split(`
144
144
  `).map(n=>n.trimEnd()).filter(n=>n.length>0):[]}return e.flatMap(r=>r.split(`
145
145
  `)).map(r=>r.trimEnd()).filter(r=>r.length>0)}function AE(t){return t.disabled?2:t.status==="auth_required"?0:1}function n2(t){let e=[];for(let r of t.servers.values())e.push({name:r.name,status:r.status,transport:r.config.type,source:br(r,t.pluginServerHosts,t.hostLeases),registrySource:r.config.registrySource,disabled:r.config.disabled===!0,canAuthenticate:r.config.type!=="stdio",tools:r.tools.map(n=>({name:n.name,disabled:!1})),connectionInfo:t2(r.config),logLines:()=>r2(r)});return e.sort((r,n)=>AE(r)-AE(n)),e}function o2(t,e){let r=e[ot(e,t.selectedServer)]?.name??"";switch(t.step){case"serverActions":return`MCP Servers \u203A ${r}`;case"viewTools":return`MCP Servers \u203A ${r} \u203A Tools`;case"viewLogs":return`MCP Servers \u203A ${r} \u203A Logs`;case"selectTarget":return`MCP Servers \u203A ${r} \u203A Settings file`;default:return"MCP Servers"}}function i2(t){switch(t){case"serverList":return"Type to filter \xB7 \u2191\u2193 Navigate \xB7 Enter Select \xB7 Esc Close";case"serverActions":case"selectTarget":return"\u2191\u2193 Navigate \xB7 Enter Select \xB7 Esc Back";default:return"\u2191\u2193 Navigate \xB7 Esc Back"}}function s2(t,e,r,n,o){switch(t.step){case"serverActions":return xE(t,e,n,o);case"viewTools":return kE(t,e,n,o);case"viewLogs":return EE(t,e,n,o);case"selectTarget":return TE(t,e,n,o);default:return PE(t,e,r.getMatchingItems(),r.getVisibleItems(),r.getMetadata(),n,o)}}function a2(t,e,r,n,o){let i=Math.max(1,o),s=Iu(n.bold(n.fg("accent",o2(t,e))),i,"\u2026"),a=t.step==="serverList"&&i>=$u?[...r.renderInput(i),""]:[],c=s2(t,e,r,n,i);return[s,"",...a,...c,"",Iu(n.fg("muted",i2(t.step)),i,"\u2026")]}function c2(t,e,r,n,o){let i=Math.max(1,o),s=n.bold(n.fg("accent",`MCP Servers \u203A ${t}`)),a=`${n.fg("accent",r)} ${n.fg("text",`${e} ${t}\u2026`)}`;return[Iu(s,i,"\u2026"),"",Iu(a,i,"\u2026")]}function u2(){let t;return{promise:new Promise(r=>{t=r}),resolve:t}}function d2(t,e,r){let n=s=>s.flatMap(a=>e2(a,Math.max(1,r))),o=e.bold(e.fg("accent",`MCP Servers \u203A ${t.server} \u203A Authenticate`));if(t.status==="error")return n([o,"",e.fg("error","Authentication failed"),e.fg("muted",t.error??"Unknown error"),"",e.fg("muted","Press any key to dismiss")]);let i=[o,"",e.fg("text","Opening your browser to sign in\u2026")];return t.url&&i.push(e.fg("accent",t.url)),t.instructions&&i.push(e.fg("muted",t.instructions)),i.push("",`${e.fg("text","Paste code or redirect URL: ")}${e.fg("accent",t.input)}`,"",e.fg("muted","Enter Submit \xB7 Esc Cancel")),n(i)}function l2(t){return t.length>0&&!t.startsWith("\x1B")&&t>=" "}function ME(t){return t?"Disabling":"Enabling"}function $E(t,e){return`Failed to toggle "${t}": ${e instanceof Error?e.message:String(e)}`}var Sm=class{state=wE();config;border;serverList;busy=null;spinner;opDone;authenticating=null;authStatus="pending";authUrl;authInstructions;authError;authAbort;manualCode;queuedManualCodes=[];authInPaste=!1;authPasteBuffer="";authDone;currentWidth;_focused=!1;component=this;get focused(){return this._focused}set focused(e){this._focused=e,this.syncSearchFocus()}constructor(e){this.config=e,this.border=new KZ(r=>e.theme.fg("border",r)),this.serverList=new XZ({items:[],getIdentity:r=>r.name,getSearchText:r=>r.name,maxVisible:bE})}get reconnectSettled(){return this.opDone}get authSettled(){return this.authDone}render(e){let r=Math.max(1,e);this.currentWidth=r,this.syncSearchFocus();let n;if(this.busy)n=c2(this.busy.server,this.busy.verb,this.spinner?.frame??"",this.config.theme,r);else if(this.authenticating)n=d2({server:this.authenticating,status:this.authStatus,url:this.authUrl,instructions:this.authInstructions,input:this.state.authInput,error:this.authError},this.config.theme,r);else{let o=this.config.snapshots();this.syncServerList(o),this.clampLogScrollOffset(o,r),n=a2(this.state,o,this.serverList,this.config.theme,r)}return[...this.border.render(r),...n,...this.border.render(r)]}handleInput=e=>{this.dispatch(e)};invalidate(){}syncServerList(e){this.serverList.setItems(e);let r=this.state.selectedServer;r!==null&&this.serverList.selectIdentity(r)||(this.state={...this.state,selectedServer:this.serverList.getSelectedIdentity()??null})}isSearchAvailable(){return this.currentWidth===void 0||this.currentWidth>=$u}syncSearchFocus(){let e=this.currentWidth!==void 0&&this.currentWidth>=$u&&this.state.step==="serverList"&&this.busy===null&&this.authenticating===null;this.serverList.setInputFocused(this._focused&&e)}clampLogScrollOffset(e,r){if(this.state.step!=="viewLogs")return;let n=e[ot(e,this.state.selectedServer)],o=Xo(n?.logLines()??[],r).length,i=Qo(this.state.logScrollOffset,o,Bn);i!==this.state.logScrollOffset&&(this.state={...this.state,logScrollOffset:i})}applyAction(e,r){let n=RE(this.state,e,{snapshots:r,windowSize:Bn,logViewportWidth:this.currentWidth??$u});this.state=n.state,n.effect&&this.runEffect(n.effect)}dispatchServerList(e,r){this.syncServerList(r);let n=this.isSearchAvailable(),o=vm(e,this.config.keybindings,!n);if(o.kind==="up"||o.kind==="down"){o.kind==="up"?this.serverList.selectPrevious():this.serverList.selectNext(),this.state={...this.state,selectedServer:this.serverList.getSelectedIdentity()??null};return}if(o.kind==="confirm"||o.kind==="cancel"){this.applyAction(o,[...this.serverList.getMatchingItems()]);return}n&&this.serverList.handleInput(e)&&this.applyAction({kind:"filterChanged",query:this.serverList.getQuery()},[...this.serverList.getMatchingItems()])}dispatch(e){if(this.busy)return;if(this.authenticating){this.handleAuthInput(e);return}let r=this.config.snapshots();this.state.step==="serverList"?this.dispatchServerList(e,r):this.applyAction(vm(e,this.config.keybindings),r),this.syncSearchFocus(),this.config.tui.requestRender()}runEffect(e){switch(e.kind){case"close":this.config.done();return;case"reconnect":this.startOp(e.server,"Reconnecting",()=>this.config.reconnect(e.server));return;case"authenticate":this.startAuth(e.server);return;case"toggle":this.startToggle(e.server,e.disable);return;case"toggleWrite":this.startToggleWrite(e.server,e.disable,e.scope);return;default:return}}startToggle(e,r){if(this.busy||this.config.isReconnecting())return;let n=this.config.toggle.classify(e);if(n.kind==="blocked"){this.config.toggle.notify(n.message),this.state={...this.state,step:"serverList",actionIndex:0},this.config.tui.requestRender();return}if(n.kind==="session"){this.startOp(e,ME(r),async()=>{try{await this.config.toggle.applySession(e,r)}catch(o){this.config.toggle.notify($E(e,o))}});return}if(n.direct){this.startToggleWrite(e,r,n.direct);return}this.state={...this.state,step:"selectTarget",targetScopes:n.scopes,targetIndex:0,pendingToggle:{server:e,disable:r}},this.config.tui.requestRender()}startToggleWrite(e,r,n){this.startOp(e,ME(r),async()=>{try{let{notice:o}=await this.config.toggle.applyLocal(e,r,n);o&&this.config.toggle.notify(o)}catch(o){this.config.toggle.notify($E(e,o))}})}startOp(e,r,n){this.busy||this.config.isReconnecting()||(this.busy={server:e,verb:r},this.spinner=new QZ(()=>this.config.tui.requestRender()),this.opDone=n().finally(()=>{this.spinner?.stop(),this.spinner=void 0,this.busy=null,this.state={...this.state,step:"serverList",actionIndex:0},this.config.tui.requestRender()}))}startAuth(e){if(this.authenticating||this.config.isAuthenticating())return;this.authenticating=e,this.authStatus="pending",this.authUrl=void 0,this.authInstructions=void 0,this.authError=void 0,this.state={...this.state,step:"pasteAuthCode",authInput:""},this.authAbort=new AbortController,this.manualCode=void 0,this.queuedManualCodes.length=0;let r={onAuthUrl:n=>{this.authUrl=n.url,this.authInstructions=n.instructions,this.config.tui.requestRender()},waitForManualCode:()=>{if(this.authenticating!==e)return Promise.resolve(null);let n=this.queuedManualCodes.shift();return n!==void 0?Promise.resolve(n):(this.manualCode??=u2(),this.manualCode.promise)},signal:this.authAbort.signal};this.authDone=this.config.authenticate(e,r).then(()=>{this.authenticating===e&&this.exitAuth()}).catch(n=>{this.authenticating===e&&(this.authStatus="error",this.authError=n instanceof Error?n.message:String(n),this.config.tui.requestRender())})}handleAuthInput(e){if(this.authStatus==="error"){this.exitAuth("serverActions");return}if(this.config.keybindings.matches(e,"tui.select.cancel")){this.authAbort?.abort(),this.manualCode?.resolve(null),this.exitAuth();return}if(this.config.keybindings.matches(e,"tui.select.confirm")){let n=this.state.authInput.trim();if(n){let o=this.manualCode;this.manualCode=void 0,this.state={...this.state,authInput:""},o?o.resolve(n):this.queuedManualCodes.push(n),this.config.tui.requestRender()}return}if(YZ(e,JZ.backspace)){this.state={...this.state,authInput:this.state.authInput.slice(0,-1)},this.config.tui.requestRender();return}let r=this.consumeAuthPaste(e);r!==void 0&&l2(r)&&(this.state={...this.state,authInput:this.state.authInput+r},this.config.tui.requestRender())}consumeAuthPaste(e){let r=e;if(r.startsWith("\x1B[200~")&&(this.authInPaste=!0,this.authPasteBuffer="",r=r.slice(6)),!this.authInPaste)return r;this.authPasteBuffer+=r;let n=this.authPasteBuffer.indexOf("\x1B[201~");if(n===-1)return;let o=this.authPasteBuffer.slice(0,n),i=this.authPasteBuffer.slice(n+6);this.authInPaste=!1,this.authPasteBuffer="",o&&(this.state={...this.state,authInput:this.state.authInput+o},this.config.tui.requestRender()),i&&this.handleAuthInput(i)}exitAuth(e="serverList"){let r=this.authenticating,n=e==="serverActions"&&r!==null&&this.config.snapshots().some(o=>o.name===r)?"serverActions":"serverList";this.authenticating=null,this.authStatus="pending",this.authUrl=void 0,this.authInstructions=void 0,this.authError=void 0,this.authAbort=void 0,this.manualCode?.resolve(null),this.manualCode=void 0,this.queuedManualCodes.length=0,this.authInPaste=!1,this.authPasteBuffer="",this.state={...this.state,step:n,selectedServer:n==="serverActions"?r:this.state.selectedServer,actionIndex:0,authInput:""},this.config.tui.requestRender()}};async function IE(t,e,r,n,o){await t.ui.custom((i,s,a,c)=>new Sm({tui:i,theme:s,keybindings:a,snapshots:()=>n2(e),reconnect:r,toggle:n,isReconnecting:()=>e.reconnecting,authenticate:o,isAuthenticating:()=>e.authenticating,done:()=>c(void 0)}).component)}var bm=["list"];function OE(t){let{name:e,status:r}=t,n;switch(r){case"success":{let o=t.tools.length;n=o>0?` \u2705 ${e} (${o} tool${o===1?"":"s"})`:` \u2705 ${e} (ready)`;break}case"failed":n=` \u274C ${e} (failed)`;break;case"auth_required":n=` \u{1F510} ${e} (auth required)`;break;case"disabled":n=` \u26AA ${e} (disabled)`;break;default:n=` \u23F3 ${e} (initializing...)`;break}return r==="failed"&&t.lastError?`${n}
146
146
  error: ${t.lastError}`:n}function f2(t){return` ! ${t.server?`${t.server}: `:""}${t.message}`}var p2="No MCP servers configured. Add servers under the 'mcpServers' key in ~/.augment/settings.json or your project's .augment/settings.json.";function wm(t,e){return e.length>0?[t,...e]:null}function h2(t){let e=[],r=[];for(let o of t.servers.values())(br(o,t.pluginServerHosts,t.hostLeases)==="plugin"?r:e).push(o);let n=[wm("MCP Server Status:",e.map(OE)),wm("Plugin MCP servers:",r.map(OE)),wm("Diagnostics:",t.diagnostics.map(f2))];return t.servers.size===0&&n.unshift([p2]),n.filter(o=>o!==null).map(o=>o.join(`
147
147
  `)).join(`
148
148
 
149
- `)}function m2(t){let e=t.trim().split(/\s+/)[0];if(!e)return"list";if(bm.includes(e))return e}async function g2(t,e,r){if(e.servers.size===0){t.ui.notify("MCP servers are not available","warning");return}if(e.reconnecting){t.ui.notify("MCP servers are already restarting...","warning");return}t.ui.notify("Restarting MCP servers...","info");let n=Zs([...e.servers.keys()],e,r);t.mode!=="interactive"&&await n}function zE(t,e){t.registerCommand("mcp",{description:"List configured MCP servers and their status",getArgumentCompletions:r=>{let n=r.trim().toLowerCase();return bm.filter(o=>o.startsWith(n)).map(o=>({value:o,label:o}))},handler:async(r,n)=>{if(r.trim().length===0&&n.mode==="interactive"&&n.hasUI){await IE(n,e,s=>Zs([s],e,t),{classify:s=>hE({server:s,state:e,cwd:n.cwd,agentDir:n.agentDir}),applySession:(s,a)=>mE({server:s,disable:a,state:e,pi:t}),applyLocal:(s,a,c)=>gE({server:s,disable:a,scope:c,state:e,pi:t,cwd:n.cwd,agentDir:n.agentDir}),notify:s=>n.ui.notify(s,"info")},(s,a)=>eE({serverName:s,state:e,pi:t,controller:a}));return}let i=m2(r);if(!i){n.ui.notify(`Unknown /mcp subcommand. Available: ${bm.join(", ")}.`,"warning");return}if(i==="list"){n.ui.notify(h2(e),"info");return}else return i}}),t.registerCommand("restart-mcp",{description:"Restart all configured MCP servers",handler:async(r,n)=>{await g2(n,e,t)}})}import{logger as y2}from"@hermes/logger";var NE=y2.child({prefix:"pi-mcp"}),Rm="augment:feature-flags";function v2(t){if(!t||typeof t!="object")return;let e=t;if(!(!e.flags||typeof e.flags!="object")&&!(e.errorStatus!==void 0&&typeof e.errorStatus!="string"))return t}function DE(t,e){e.featureFlagsListenerBound||(e.featureFlagsListenerBound=!0,t.events.on(Rm,r=>{let n=v2(r);if(n===void 0){NE.warn(`${Rm} payload missing a flags object or has a non-string errorStatus`);return}e.featureFlags=n,NE.debug(`Received feature-flag snapshot via ${Rm} event`+(n.errorStatus?` (errorStatus=${n.errorStatus})`:""))}))}import{logger as _2}from"@hermes/logger";var Vs=_2.child({prefix:"pi-mcp"}),LE=300*1e3,Cm=600*1e3;function S2(t){if(!t.shouldProactivelyRefreshTokens)return;let e=Date.now();for(let r of t.servers.values()){let{config:n}=r;if(n.type!=="http"&&n.type!=="sse"||n.disabled||!r.hasRefreshEligibleOAuthCredential())continue;let o=t.tokens.get(r.name);o&&o.expiresAt!==void 0&&(yi(o,e)||o.expiresAt>e+Cm||(Vs.debug(`Background refresh: token for MCP server "${r.name}" expires within ${Cm}ms; refreshing`),r.refreshTokenIfPossible().then(i=>{i.kind!=="refreshed"&&Vs.warn(`Background refresh for MCP server "${r.name}" did not complete (${i.kind})`)}).catch(()=>{Vs.warn(`Background refresh for MCP server "${r.name}" rejected unexpectedly`)})))}}function jE(t){if(t.backgroundRefreshIntervalId!==void 0||!t.shouldProactivelyRefreshTokens)return;let e=setInterval(()=>{S2(t)},LE);typeof e.unref=="function"&&e.unref(),t.backgroundRefreshIntervalId=e,Vs.debug(`Started background MCP OAuth refresh loop (interval ${LE}ms, buffer ${Cm}ms)`)}function FE(t){t.backgroundRefreshIntervalId!==void 0&&(clearInterval(t.backgroundRefreshIntervalId),t.backgroundRefreshIntervalId=void 0,Vs.debug("Stopped background MCP OAuth refresh loop"))}import{logger as w2}from"@hermes/logger";var Pt=w2.child({prefix:"pi-mcp"});function b2(t,e,r){t.dynamicallyAddedConfigIds.add(e),t.failedAddConfigIds.delete(e),t.nameCollisionAddConfigIds.delete(e),t.sessionRemovedConfigIds.delete(e);for(let n of r)n.id!==void 0&&(t.registryConfigNamesById.set(n.id,n.name),t.registryCredentialConfigsById.set(n.id,{...n}))}function tr(t){Ke({state:t.state,domain:at(t.configId),epoch:t.intentEpoch})}function R2(t){let e=new Set;for(let[r,n]of t.servers){let o=Q(t,r,n);(o.owner.kind==="local"||o.owner.kind==="registry")&&e.add(r)}for(let[r,n]of t.hostLeases)(n.owner.kind==="local"||n.owner.kind==="registry")&&e.add(r);return e}function UE(t,e){for(let r of t.servers.values())if(r.config.id===e)return!0;return!1}function qE(t,e){for(let r of e.diagnostics)t.diagnostics.push({...r,origin:"registry"}),Pt.warn(r.message);for(let[r,n]of e.namesById??[])t.registryConfigNamesById.set(r,n)}function Ks(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t;tr(t);let s=`Live MCP add-server failed for config id ${n}: ${e instanceof Error?e.message:String(e)}`;if(Pt.warn(s),!o()){if(r.diagnostics.push({message:s,origin:"registry"}),!i()){r.failedAddConfigIds.add(n);return}r.dynamicallyAddedConfigIds.add(n),r.sessionRemovedConfigIds.delete(n)}}function C2(t,e){return e.flatMap(r=>pu(t,r)?[r.config]:[])}function P2(t){return t.find(e=>e.status==="failed"||e.status==="unavailable")}function x2(t,e){let r=P2(e);if(r){if(Ks(t,r.error),r.error instanceof xt)throw r.error;return}let n=C2(t.state,e).filter(o=>o.id===t.configId);if(n.length>0&&!t.superseded()){b2(t.state,t.configId,n);return}!t.superseded()&&e.some(o=>o.status==="collision")&&(t.state.failedAddConfigIds.add(t.configId),t.state.nameCollisionAddConfigIds.add(t.configId))}function HE(t,e){try{x2(t,e)}finally{t.superseded()||t.report(t.state.currentLoad?.latestPi??t.activePi,t.state)}}function k2(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t,s=r.servers.get(e.name);if(!s)return!1;let a=Q(r,e.name,s);if(a.owner.kind==="plugin"||a.owner.kind==="vfs")return!1;if(i())return Pt.info(`Live MCP add-server: embedded config id ${n} resolves to already-connected server "${e.name}"; no-op`),!0;let c=`Live MCP add-server: embedded config id ${n} collides on display name "${e.name}" with an already-connected server; cannot add a second server sharing that name`;return Pt.warn(c),o()||(r.registryConfigNamesById.set(n,e.name),r.diagnostics.push({message:c,origin:"registry"}),r.failedAddConfigIds.add(n),r.nameCollisionAddConfigIds.add(n)),!0}async function E2(t,e){if(t.state.missingHostRemovals.has(t.configId)&&await ui(t.state,t.configId),t.superseded()){tr(t);return}if(k2(t,e)){tr(t);return}try{if(!await Er({state:t.state,config:e,pi:t.activePi})){tr(t);return}}catch(r){throw Ks(t,r),r}Pt.info(`Live MCP add-server: connecting embedded config id ${t.configId} (no registry refetch)`);try{let r=await t.connect([e],t.state,t.activePi,t.sourceOwnership);HE(t,r??[])}catch(r){if(Ks(t,r),r instanceof xt)throw r}}async function T2(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t;if(o()){tr(t),Pt.info(`Live MCP add-server for config id ${n} superseded by a newer selection; discarding`);return}if(e.servers.length===0){qE(r,e),Pt.info(`Live MCP add-server: config id ${n} resolved to no new server (already connected, not opted in, or unknown id)`),i()||r.failedAddConfigIds.add(n),tr(t);return}if(await ui(r,n),o()){tr(t);return}try{if((await Promise.all(e.servers.map(c=>Er({state:r,config:c,pi:t.activePi})))).some(c=>!c)){tr(t);return}}catch(a){throw Ks(t,a),a}Pt.info(`Live MCP add-server: connecting ${e.servers.length} server(s) for config id ${n}`);let s=await t.connect(e.servers,r,t.activePi,t.sourceOwnership);if(o()){tr(t);return}qE(r,e),HE(t,s??[])}function A2(t,e){if(typeof e=="string")return _k(e,t.workspaceRoot??process.cwd())}function M2(t,e,r){return t.targetMaterialStore?.has(e)===!0||r!==void 0&&t.targetMaterialStore?.has(r.name)===!0}function GE(t){let{pi:e,state:r,data:n,deps:o}=t,i=n,s=i&&typeof i.configId=="string"?i.configId:"";if(!s)return Pt.warn("augment:mcp-add-server payload missing configId"),Promise.resolve();let a=A2(r,i?.embeddedConfig);if(M2(r,s,a))return Promise.resolve();if(a!==void 0&&a.id!==s)return Pt.warn(`Embedded MCP config id ${a.id??"<missing>"} does not match add target ${s}; rejecting`),Promise.resolve();if(!Xn({state:r,configId:s,generation:i?.attachmentGeneration}))return Pt.info(`Ignoring stale live MCP add-server command for config id ${s}`),Promise.resolve();r.sessionRemovedConfigIds.delete(s);let c=ra({state:r,domain:at(s),forceNew:!0}),u=R2(r),d=r.currentLoad?.latestPi??e,l=r.registryGeneration;r.liveEditGenerations??=new Map;let f=(r.liveEditGenerations.get(s)??0)+1;r.liveEditGenerations.set(s,f);let p=()=>r.registryGeneration!==l||r.liveEditGenerations.get(s)!==f,m={state:r,configId:s,activePi:d,connect:o?.connect??Ve,report:o?.report??j,intentEpoch:c.epoch,superseded:p,sourceOwnership:()=>!p(),hasLiveHostForId:()=>UE(r,s)},h;if(a)h=E2(m,a);else{let g=r.credentials;g?h=(o?.discover??_u)({configIds:[s],creds:g,currentUserId:g.userId,workspaceRoot:r.workspaceRoot??process.cwd(),localServerNames:u}).then(w=>T2(m,w)).catch(w=>{if(!(w instanceof xt)){Ks(m,w);return}throw w}):(Pt.warn("augment:mcp-add-server received before credentials; cannot fetch registry config"),tr(m),h=Promise.resolve())}return sa({state:r,configId:s,generation:i?.attachmentGeneration,operation:h,wasApplied:()=>UE(r,s)})}import{logger as $2}from"@hermes/logger";var Ou=$2.child({prefix:"pi-mcp"}),ZE=3,BE=6e4,I2=1e3,O2=8e3;function Pm(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.reconnect??Yr,s=o?.now??Date.now,a=o?.sleep??ln,c=o?.report??j,u=n,d=u&&typeof u.serverName=="string"?u.serverName:"";if(!d)return Ou.warn("augment:mcp-restart-server payload missing serverName"),Promise.resolve();let l=Xr({state:r,target:d});if(!l||r.targetMaterialStore?.has(l.name)||r.targetMaterialStore?.has(d))return Promise.resolve();let f=l.name,p=r.mcpConnectionEpoch,m=N(r,f),h=s(),g=r.mcpRestartState.get(f),v=g&&h-g.lastRestart<BE?g.count+1:1,w=r.currentLoad?.latestPi??e;if(v>ZE)return Ou.warn(`augment:mcp-restart-server: ${f} exceeded ${ZE} restarts within ${BE}ms; rejecting`),c(w,r),Promise.resolve();r.mcpRestartState.set(f,{count:v,lastRestart:h});let b=Math.min(I2*2**(v-1),O2);return(v>1?a(b):Promise.resolve()).then(()=>{if(!(r.mcpConnectionEpoch!==p||N(r,f)!==m||Xr({state:r,target:d})?.server!==l.server||t.isCurrent&&!t.isCurrent()))return Ou.info(`Live MCP restart-server: reconnecting ${f}`),i(f,r,w)}).catch(S=>{let R=`Live MCP restart-server failed for ${f}: ${S instanceof Error?S.message:String(S)}`;Ou.warn(R),r.diagnostics.push({server:f,message:R})}).then(()=>{c(w,r)})}import{logger as z2}from"@hermes/logger";var Js=z2.child({prefix:"pi-mcp"}),N2=/^\d+$/,xm=1,WE="AUGMENT_ACTIVE_SPACE_ID",D2="augment-mcp-access-token-";function zu(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}function VE(t,e){return e?.["augment:encoding"]!=="base64"?t:/^[A-Za-z0-9+/]*={0,2}$/.test(t)&&t.length%4===0?Buffer.from(t,"base64").toString("utf-8"):t}var Nu=class{apiKey;apiUrl;userAgent;fetchImpl;timeoutMs;cache=new Map;inflight=new Map;constructor(e,r,n){this.apiKey=e.apiKey,this.apiUrl=e.apiUrl.replace(/\/+$/,""),this.userAgent=e.userAgent,this.fetchImpl=r,this.timeoutMs=n??ud}_headers(){return{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json",...this.userAgent?{"User-Agent":this.userAgent}:{}}}lookupBody(e){let r={name:e};return!e.startsWith(D2)&&Object.hasOwn(process.env,WE)&&(r.active_space_id=process.env[WE]??""),r}getSecret(e){let r=zu(e),n=this.inflight.get(r);if(n)return n;let o=this._resolve(r).finally(()=>{this.inflight.delete(r)});return this.inflight.set(r,o),o}upsertUserSecret(e,r,n){return fn(()=>this.upsertUserSecretOnce(e,r,n))}async upsertUserSecretOnce(e,r,n){let o=zu(e),s=(await this._callUpsert({name:o,value:r,scope:xm,...n===void 0?{}:{expected_version:n}})).secret?.version;if(typeof s!="string"||!N2.test(s))throw new Error("user secret upsert response contained an invalid persisted version");let a=BigInt(s).toString();return this.cache.set(o,r),Js.debug(`Upserted user secret "${o}"`),a}async deleteUserSecret(e){await fn(()=>this.deleteUserSecretOnce(e))}async deleteUserSecretOnce(e){let r=zu(e);this.cache.delete(r),await this._callDelete({name:r,scope:xm}),Js.debug(`Deleted user secret "${r}"`)}async _callUpsert(e){let n=await(this.fetchImpl??fetch)(`${this.apiUrl}/user-secrets/upsert`,{method:"POST",headers:this._headers(),body:JSON.stringify(e),signal:AbortSignal.timeout(this.timeoutMs)});if(!n.ok){let o=await n.text().catch(()=>""),i=o.length>or?`${o.slice(0,or)}\u2026[truncated]`:o;throw new ht(n.status,n.statusText,i)}return await n.json()}async _callDelete(e){let n=await(this.fetchImpl??fetch)(`${this.apiUrl}/user-secrets/delete`,{method:"POST",headers:this._headers(),body:JSON.stringify(e),signal:AbortSignal.timeout(this.timeoutMs)});if(!n.ok){let o=await n.text().catch(()=>""),i=o.length>or?`${o.slice(0,or)}\u2026[truncated]`:o;throw new ht(n.status,n.statusText,i)}}async getUserSecretWithVersion(e){let r=zu(e);try{let n=await fn(()=>this._callApi("/mcp-secrets/get",this.lookupBody(r))),o=n.secret?.value,i=n.secret?.version;if(o===void 0||i===void 0)return;let s=n.secret?.scope===xm||n.secret?.scope==="SECRET_SCOPE_PRIVATE";return{value:VE(o,n.secret?.tags),version:s?i:"0"}}catch(n){if(n instanceof ht&&n.statusCode===404)return;throw n}}async _resolve(e){let r=await this._tryGet("/mcp-secrets/get",this.lookupBody(e),e);if(r.value!==void 0)return this.cache.set(e,r.value),r.value;if(r.errored){let n=this.cache.get(e);return n!==void 0&&Js.debug(`Secret "${e}" lookup failed; using cached fallback value`),n}this.cache.delete(e)}async _tryGet(e,r,n){try{let o=await fn(()=>this._callApi(e,r)),i=o.secret?.value;return i===void 0?{errored:!1}:{value:VE(i,o.secret?.tags),errored:!1}}catch(o){if(o instanceof ht&&o.statusCode===404)return Js.debug(`Secret "${n}" not found via ${e} (404)`),{errored:!1};let i=o instanceof Error?o.message:String(o);return Js.debug(`Secret "${n}" lookup via ${e} failed: ${i}`),{errored:!0}}}async _callApi(e,r){let o=await(this.fetchImpl??fetch)(`${this.apiUrl}${e}`,{method:"POST",headers:this._headers(),body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeoutMs)});if(!o.ok){let i=await o.text().catch(()=>""),s=i.length>or?`${i.slice(0,or)}\u2026[truncated]`:i;throw new ht(o.status,o.statusText,s)}return await o.json()}};function km(t){return{latestPi:t}}import{logger as L2}from"@hermes/logger";var ti=L2.child({prefix:"pi-mcp"});async function j2(t){let e=[];for(let[r,n]of t.servers){let o=Q(t,r,n);if(o.owner.kind!=="vfs"||o.host!==n)continue;let i=st({state:t,name:r,owner:o.owner,revision:o.revision,host:n});if(!i)continue;We(t,r);let s=pt(t,r,n.config.id,n.config);n.beginDisposal?.(),e.push(Promise.allSettled([s,n.dispose({strict:!0})]).then(a=>{let c=a.find(u=>u.status==="rejected");if(c)throw ve({state:t,name:r,retirement:i,result:{status:"failed",error:c.reason}}),c.reason;ve({state:t,name:r,retirement:i,result:{status:"retired"}}),xe({state:t,name:r,owner:o.owner,revision:o.revision})}))}await Promise.all(e)}function F2(t,e){for(let r of e??[])typeof r?.message=="string"&&(t.diagnostics.push({message:r.message,origin:"vfs"}),ti.warn(r.message))}function U2(t){let{state:e,name:r,stored:n,higherPriorityNames:o,blockedNames:i,workspaceRoot:s}=t;if(o.has(r)){i.add(r);let a=`VFS MCP server "${r}" ignored: a higher-priority server with the same name takes precedence`;e.diagnostics.push({server:r,message:a,origin:"vfs"}),ti.warn(a);return}try{let a=Jn(r,n);return{...a.type==="stdio"?Gt(a,s):Ht(a,s),vfsSource:"vfs"}}catch(a){let c=a instanceof kt?a.message:`Failed to normalize VFS MCP server "${r}": ${a instanceof Error?a.message:String(a)}`;e.diagnostics.push({server:r,message:c,origin:"vfs"}),ti.warn(c);return}}function q2(t,e){let r=new Set;for(let[s,a]of t.servers){let c=Q(t,s,a);c.owner.kind!=="vfs"&&c.host===a&&r.add(s)}for(let[s,a]of t.hostLeases)a.owner.kind!=="vfs"&&r.add(s);let n=t.workspaceRoot??process.cwd(),o=[],i=new Set;for(let[s,a]of Object.entries(e.servers??{})){if(a===null)continue;let c=U2({state:t,name:s,stored:a,higherPriorityNames:r,blockedNames:i,workspaceRoot:n});c&&o.push(c)}return{servers:o,blockedNames:i}}function H2(t){for(let e of t.blockedVfsMcpNames){let r=t.hostLeases.get(e);if(!r||r.owner.kind==="vfs")return!1}return!0}function KE(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.connect??Ve,s=n;if(!s||typeof s!="object"||Array.isArray(s))return ti.warn("augment:mcp-vfs-servers payload is not an object"),Promise.resolve();let a=typeof s.signature=="string"?s.signature:void 0;if(a!==void 0&&a===r.lastSuccessfulVfsMcpSignature&&H2(r))return Promise.resolve();let c=++r.vfsGeneration,u=new Set,d=j2(r);return r.diagnostics=r.diagnostics.filter(l=>l.origin!=="vfs"),r.lastSuccessfulVfsMcpSignature=void 0,r.blockedVfsMcpNames.clear(),d.then(()=>{if(r.vfsGeneration!==c)return!1;F2(r,s.diagnostics);let{servers:l,blockedNames:f}=q2(r,s);return u=f,l.length===0?(a!==void 0&&(r.lastSuccessfulVfsMcpSignature=a,r.blockedVfsMcpNames=f),!1):(ti.info(`VFS MCP overlay: connecting ${l.length} server(s)`),i(l,r,r.currentLoad?.latestPi??e,()=>r.vfsGeneration===c).then(p=>{let m=p?.find(h=>h.status==="failed"||h.status==="unavailable");if(m)throw m.error instanceof Error?m.error:new Error(String(m.error));return l.every(h=>(p??[]).some(g=>g.config===h&&pu(r,g)))}))}).then(l=>{l&&a!==void 0&&r.vfsGeneration===c&&(r.lastSuccessfulVfsMcpSignature=a,r.blockedVfsMcpNames=u)}).catch(l=>{let f=`VFS MCP overlay connect failed: ${l instanceof Error?l.message:String(l)}`;ti.warn(f),r.vfsGeneration===c&&r.diagnostics.push({message:f,origin:"vfs"})})}var Me=G2.child({prefix:"pi-mcp"}),eT="augment:mcp-oauth-credentials",JE="augment:mcp-header-secrets",YE="augment:mcp-header-secret-failures",Em="augment:mcp-oauth-failures",XE="augment:credentials",Z2="augment:mcp-config-ids",QE="augment:mcp-configs",B2="augment:mcp-vfs-servers",W2="augment:mcp-add-server",V2="augment:mcp-restart-server",K2="augment:mcp-remove-server";function J2(t){if(!t.secretsClient||t.tokens instanceof hi)return;let e=t.tokens;t.tokens=new hi(()=>t.secretsClient,()=>t.shouldProactivelyRefreshTokens,e.snapshot()),Me.debug("Installed durable BackendTokenStore (durable ops gated at runtime)")}function Y2(t){if(!t||typeof t!="object"){Me.warn(`${eT} payload is not an object`);return}let e=t,r=e.suppressReconnect===!0&&typeof e.credentials=="object"&&e.credentials!==null&&!Array.isArray(e.credentials);return{credentials:r?e.credentials:t,restart:r&&e.restart&&typeof e.restart=="object"?e.restart:void 0,suppressReconnect:r,targetConfigId:r&&typeof e.targetConfigId=="string"?e.targetConfigId:void 0}}function Tm(t,e){let r=e.restart?.serverName;if(typeof r!="string")return!1;let n=e.credentials[r],o=Qr(n),i=Xr({state:t,target:r})?.server;if(i&&i.config.type!=="stdio"&&i.config.auth==="oauth"&&o&&tT({state:t,name:r,revision:o})&&!rT({state:t,revision:o})&&yr({store:t.tokens,serverName:r,proto:n,options:{acceptedRevisions:t.oauthCredentialRevisions,acceptedDomains:t.oauthCredentialDomains,expectedDomains:t.expectedCredentialDomains,equalRevisionRebindDomains:t.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:!0}}).decision!=="reject")return!0;let s="MCP restart credential was rejected; keeping the existing host";return Me.warn(s),t.diagnostics.push({server:r,message:s}),!1}function X2(t){let{pi:e,state:r}=t,{payload:n}=t,o=r.mcpConnectionEpoch;if(Object.entries(n.credentials).some(([c,u])=>r.targetMaterialStore?.has(c)||Re(u)&&Object.hasOwn(u,"target_material"))||n.targetConfigId&&r.targetMaterialStore?.has(n.targetConfigId))return;if(n.restart){let c=Object.keys(n.credentials);if(typeof n.restart.serverName!="string"||typeof n.restart.requestId!="string"||c.length!==1){Me.warn("MCP restart credentials must contain exactly the target entry");return}let u=Xr({state:r,target:n.restart.serverName});if(!u||c[0]!==u.name){Me.warn("MCP restart credentials must contain exactly the resolved target entry");return}n={...n,restart:{...n.restart,serverName:u.name}}}if(n.targetConfigId){mk({pi:e,state:r,update:{configId:n.targetConfigId,credentials:n.credentials}});return}if(n.restart&&!Tm(r,n))return;let i=Object.keys(n.credentials).map(c=>({name:c,server:r.servers.get(c),lease:N(r,c)})),s=new Set;for(let c of Object.keys(n.credentials)){let u=r.servers.get(c)?.getRefreshInFlight?.();u&&s.add(u)}let a=()=>{if(r.mcpConnectionEpoch!==o||i.some(({name:d,server:l,lease:f})=>r.servers.get(d)!==l||N(r,d)!==f)||n.restart&&!Tm(r,n))return;let c=n4({pi:e,state:r,credentials:n.credentials,suppressReconnect:n.suppressReconnect,requireEqualMaterial:n.restart!==void 0}),{restart:u}=n;if(!(typeof u?.serverName!="string"||typeof u.requestId!="string")){if(c.rejected.length===0&&c.applied.length+c.equal.length===1&&(c.applied.includes(u.serverName)||c.equal.includes(u.serverName))){Pm({pi:e,state:r,isCurrent:()=>r.mcpConnectionEpoch===o&&i.every(({name:d,server:l,lease:f})=>r.servers.get(d)===l&&N(r,d)===f)&&Tm(r,n),data:{serverName:u.serverName,requestId:u.requestId}});return}if(Object.hasOwn(n.credentials,u.serverName)&&!c.equal.includes(u.serverName)){let d="MCP restart credential was rejected; keeping the existing host";Me.warn(d),r.diagnostics.push({server:u.serverName,message:d})}}};if(s.size===0){a();return}Promise.allSettled(s).then(a)}function Q2(t,e){e.credsListenerBound||(e.credsListenerBound=!0,t.events.on(eT,r=>{let n=Y2(r);n&&X2({pi:t,state:e,payload:n})}))}function tT(t){let{state:e,name:r,revision:n}=t,o=sn(n);if(e.pendingRegistryCredentialDomains.has(o)&&e.registryCredentialIntents.has(o))return!1;let i=e.expectedCredentialDomains.get(r),s=e.oauthCredentialDomains.get(r),a=e.servers.get(r),c=a?.config.id,u=a?.config.registrySource!==void 0&&c!==void 0&&at(c)===o;return n.ownerDomain!==void 0?i?.kind==="domain"?i.domain===o:u:i===void 0&&s===void 0?u:i?.kind==="domain"&&(i.domain===o||ct(n.domain))||s===n.domain}function rT(t){let{state:e,revision:r}=t,n=sn(r);return e.pendingRegistryCredentialDomains.has(n)&&e.registryCredentialIntents.has(n)}function e4(t){let{state:e,credentials:r,suppressReconnect:n}=t,o={};for(let[i,s]of Object.entries(r)){let a=Qr(s);if(yr({store:e.tokens,serverName:i,proto:s,options:{requireRevision:!0}}).decision!=="reject"&&a!==void 0){if(rT({state:e,revision:a})){Ym({state:e,revision:a,credential:s,suppressReconnect:n});continue}if(tT({state:e,name:i,revision:a})){o[i]=s;continue}Km({state:e,serverName:i,revision:a,credential:s,suppressReconnect:n})}}return o}function t4(t){let{state:e,applicable:r,seeded:n}=t;for(let o of n){let i=r[o],s=Qr(i);s===void 0?(e.credentialRevisions.delete(o),e.hostedCredentialOwnership.delete(o)):(e.credentialRevisions.set(o,s),e.hostedCredentialOwnership.set(o,{...s,accessTokenOnly:i?.refresh_token===void 0})),e.statusFailureCategories.delete(o),e.authRefreshNeededReportKeys.delete(o),e.tokens.clearAuthRequired(o)}}function r4(t){let{pi:e,state:r,seeded:n,suppressReconnect:o}=t;if(o)return;let i=r.currentLoad?.latestPi??e;for(let s of n){let a=r.servers.get(s),c=r.expectedCredentialDomains.get(s),u=N(r,s),d=c?.kind!=="domain"||u?.owner.kind==="registry"&&u.owner.identity===c.domain;a&&d&&a.config.type!=="stdio"&&a.config.auth==="oauth"&&Yr(s,r,i).catch(()=>{}).finally(()=>{j(i,r),_e(r)})}}function n4(t){let{pi:e,state:r,credentials:n,suppressReconnect:o}=t;r.oauthCredentialRevisions??=new Map,r.oauthCredentialDomains??=new Map,r.credentialRevisions??=new Map,r.expectedCredentialDomains??=new Map;let i=e4({state:r,credentials:n,suppressReconnect:o}),s={acceptedRevisions:r.oauthCredentialRevisions,acceptedDomains:r.oauthCredentialDomains,expectedDomains:r.expectedCredentialDomains,equalRevisionRebindDomains:r.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:t.requireEqualMaterial};Object.entries(i).some(([u,d])=>{let{decision:l}=yr({store:r.tokens,serverName:u,proto:d,options:s});return l==="apply"||l==="equal"&&t.requireEqualMaterial===!0})&&(r.shouldProactivelyRefreshTokens=!1);let c=mu(r.tokens,i,s);return t4({state:r,applicable:i,seeded:c.applied}),c.applied.length===0||(Me.info(`Seeded MCP OAuth token(s) for ${c.applied.length} server(s)`),r4({pi:e,state:r,seeded:c.applied,suppressReconnect:o})),c}function o4(t,e){e.headerSecretsListenerBound||(e.headerSecretsListenerBound=!0,t.events.on(JE,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${JE} payload is not an object`);return}let n=r,o=typeof n.secrets=="object"&&n.secrets!==null&&!Array.isArray(n.secrets);zy(e,o?n.secrets:r,{authoritative:o&&n.authoritative===!0})}),t.events.on(YE,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${YE} payload is not an object`);return}let n=r,o=typeof n.entries=="object"&&n.entries!==null&&!Array.isArray(n.entries);Dy(e,o?n.entries:r,{authoritative:o&&n.authoritative===!0})}),t.events.on(Em,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${Em} payload is not an object`);return}let n=r;if(typeof n.entries!="object"||n.entries===null||Array.isArray(n.entries)){Me.warn(`${Em} entries is not an object`);return}Im(e,n.entries)}))}function i4(t,e){e.configIdsListenerBound||(e.configIdsListenerBound=!0,t.events.on(XE,r=>{let n=r;if(!n||typeof n.apiKey!="string"||typeof n.apiUrl!="string"){Me.warn(`${XE} payload missing apiKey or apiUrl`);return}e.credentials={apiKey:n.apiKey,apiUrl:n.apiUrl,...typeof n.userAgent=="string"?{userAgent:n.userAgent}:{},...typeof n.userId=="string"?{userId:n.userId}:{}},e.secretsClient=new Nu(e.credentials),J2(e)}),t.events.on(Z2,r=>{e.mcpAttachCloudSignaled||(e.mcpAttachCloudSignaled=!0,Bs(e.currentLoad?.latestPi??t,e)),Su({pi:t,state:e,data:r}).then(()=>{j(e.currentLoad?.latestPi??t,e)}).catch(n=>{Me.warn(`Registry config apply did not retire credentials durably: ${n instanceof Error?n.message:String(n)}`),j(e.currentLoad?.latestPi??t,e)}).finally(()=>{let n=e.currentLoad?.latestPi??t;_e(e),Vo(n,e)})}))}function s4(t,e){e.mcpConfigsListenerBound||(e.mcpConfigsListenerBound=!0,t.events.on(QE,r=>{let o=r?.configs;if(o!==void 0&&!Array.isArray(o)){Me.warn(`${QE} payload configs is not an array`),e.embeddedRegistryConfigs=void 0;return}if(e.embeddedRegistryConfigs=o,o!==void 0){let i=Jo(o,e.workspaceRoot??process.cwd());for(let{config:s}of i?.allConfigsById.values()??[])s&&Er({state:e,config:s,pi:t}).catch(a=>{Me.warn(`Embedded MCP credential intent did not retire durably: ${a instanceof Error?a.message:String(a)}`)})}Me.info(`Stored ${o===void 0?0:o.length} embedded MCP config(s) for the next registry selection`)}))}function a4(t,e){e.vfsListenerBound||(e.vfsListenerBound=!0,t.events.on(B2,r=>{KE({pi:t,state:e,data:r}).then(()=>{j(e.currentLoad?.latestPi??t,e),_e(e)})}))}function c4(t,e){e.addServerListenerBound||(e.addServerListenerBound=!0,t.events.on(W2,r=>{let n=()=>GE({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).then(()=>{j(e.currentLoad?.latestPi??t,e)}).catch(o=>{Me.warn(`Live MCP add-server did not retire credentials durably: ${o instanceof Error?o.message:String(o)}`),j(e.currentLoad?.latestPi??t,e)}).finally(()=>{let o=e.currentLoad?.latestPi??t;_e(e),Vo(o,e)})}))}function u4(t,e){e.restartServerListenerBound||(e.restartServerListenerBound=!0,t.events.on(V2,r=>{let n=()=>Pm({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).then(()=>{_e(e)})}))}function d4(t,e){e.removeServerListenerBound||(e.removeServerListenerBound=!0,t.events.on(K2,r=>{let n=()=>wu({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).catch(o=>{Me.warn(`Live MCP remove-server did not retire durably: ${o instanceof Error?o.message:String(o)}`)}).finally(()=>{let o=e.currentLoad?.latestPi??t;_e(e),Vo(o,e)})}))}function See(t){return Oy(t)}var nT=t=>{let e=ee();e.currentLoad=km(t),e.themeChangeUnsubscribe?.(),e.themeChangeUnsubscribe=t.events.on("theme_changed",()=>{_e(e)});let r=!1;zE(t,e),jk(t,e),Q2(t,e),o4(t,e),i4(t,e),s4(t,e),a4(t,e),c4(t,e),u4(t,e),d4(t,e),DE(t,e),gk(t,e),e.mcpAttachCloudSignaled&&Bs(t,e),t.on("session_start",(n,o)=>{e.currentLoad=km(t),e.workspaceRoot=o.cwd;let i=o.mcpConfigOverride;if(e.mcpConfigOverride=Array.isArray(i)&&i.length>0?i:void 0,e.ui=o.ui,jE(e),e.connectStarted)Qn(e)?(dn(t),da(t)):pg(t,e),_e(e);else{e.connectStarted=!0,di()&&dn(t);let{servers:s,diagnostics:a}=Yn(o.cwd,o.agentDir,e.mcpConfigOverride,e.sessionMcpConfigDisabledOverrides);for(let c of a)e.diagnostics.push(c),Me.warn(c.message);Ve(s,e,t).then(()=>dk(e)).catch(()=>{}).finally(()=>{j(e.currentLoad?.latestPi??t,e),_e(e)})}r||(r=!0,t.events.emit(cE,pE(t,e)))}),t.on("session_shutdown",()=>{FE(e)})};ug(nT);var wee=nT;export{wee as default,See as setMcpErrorReporter};
149
+ `)}function m2(t){let e=t.trim().split(/\s+/)[0];if(!e)return"list";if(bm.includes(e))return e}async function g2(t,e,r){if(e.servers.size===0){t.ui.notify("MCP servers are not available","warning");return}if(e.reconnecting){t.ui.notify("MCP servers are already restarting...","warning");return}t.ui.notify("Restarting MCP servers...","info");let n=Zs([...e.servers.keys()],e,r);t.mode!=="interactive"&&await n}function zE(t,e){t.registerCommand("mcp",{description:"List configured MCP servers and their status",getArgumentCompletions:r=>{let n=r.trim().toLowerCase();return bm.filter(o=>o.startsWith(n)).map(o=>({value:o,label:o}))},handler:async(r,n)=>{if(r.trim().length===0&&n.mode==="interactive"&&n.hasUI){await IE(n,e,s=>Zs([s],e,t),{classify:s=>hE({server:s,state:e,cwd:n.cwd,agentDir:n.agentDir}),applySession:(s,a)=>mE({server:s,disable:a,state:e,pi:t}),applyLocal:(s,a,c)=>gE({server:s,disable:a,scope:c,state:e,pi:t,cwd:n.cwd,agentDir:n.agentDir}),notify:s=>n.ui.notify(s,"info")},(s,a)=>eE({serverName:s,state:e,pi:t,controller:a}));return}let i=m2(r);if(!i){n.ui.notify(`Unknown /mcp subcommand. Available: ${bm.join(", ")}.`,"warning");return}if(i==="list"){n.ui.notify(h2(e),"info");return}else return i}}),t.registerCommand("restart-mcp",{description:"Restart all configured MCP servers",handler:async(r,n)=>{await g2(n,e,t)}})}import{logger as y2}from"@hermes/logger";var NE=y2.child({prefix:"pi-mcp"}),Rm="augment:feature-flags";function v2(t){if(!t||typeof t!="object")return;let e=t;if(!(!e.flags||typeof e.flags!="object")&&!(e.errorStatus!==void 0&&typeof e.errorStatus!="string"))return t}function DE(t,e){e.featureFlagsListenerBound||(e.featureFlagsListenerBound=!0,t.events.on(Rm,r=>{let n=v2(r);if(n===void 0){NE.warn(`${Rm} payload missing a flags object or has a non-string errorStatus`);return}e.featureFlags=n,NE.debug(`Received feature-flag snapshot via ${Rm} event`+(n.errorStatus?` (errorStatus=${n.errorStatus})`:""))}))}import{logger as _2}from"@hermes/logger";var Vs=_2.child({prefix:"pi-mcp"}),LE=300*1e3,Cm=600*1e3;function S2(t){if(!t.shouldProactivelyRefreshTokens)return;let e=Date.now();for(let r of t.servers.values()){let{config:n}=r;if(n.type!=="http"&&n.type!=="sse"||n.disabled||!r.hasRefreshEligibleOAuthCredential())continue;let o=t.tokens.get(r.name);o&&o.expiresAt!==void 0&&(yi(o,e)||o.expiresAt>e+Cm||(Vs.debug(`Background refresh: token for MCP server "${r.name}" expires within ${Cm}ms; refreshing`),r.refreshTokenIfPossible().then(i=>{i.kind!=="refreshed"&&Vs.warn(`Background refresh for MCP server "${r.name}" did not complete (${i.kind})`)}).catch(()=>{Vs.warn(`Background refresh for MCP server "${r.name}" rejected unexpectedly`)})))}}function jE(t){if(t.backgroundRefreshIntervalId!==void 0||!t.shouldProactivelyRefreshTokens)return;let e=setInterval(()=>{S2(t)},LE);typeof e.unref=="function"&&e.unref(),t.backgroundRefreshIntervalId=e,Vs.debug(`Started background MCP OAuth refresh loop (interval ${LE}ms, buffer ${Cm}ms)`)}function FE(t){t.backgroundRefreshIntervalId!==void 0&&(clearInterval(t.backgroundRefreshIntervalId),t.backgroundRefreshIntervalId=void 0,Vs.debug("Stopped background MCP OAuth refresh loop"))}import{logger as w2}from"@hermes/logger";var Pt=w2.child({prefix:"pi-mcp"});function b2(t,e,r){t.dynamicallyAddedConfigIds.add(e),t.failedAddConfigIds.delete(e),t.nameCollisionAddConfigIds.delete(e),t.sessionRemovedConfigIds.delete(e);for(let n of r)n.id!==void 0&&(t.registryConfigNamesById.set(n.id,n.name),t.registryCredentialConfigsById.set(n.id,{...n}))}function tr(t){Ke({state:t.state,domain:at(t.configId),epoch:t.intentEpoch})}function R2(t){let e=new Set;for(let[r,n]of t.servers){let o=Q(t,r,n);(o.owner.kind==="local"||o.owner.kind==="registry")&&e.add(r)}for(let[r,n]of t.hostLeases)(n.owner.kind==="local"||n.owner.kind==="registry")&&e.add(r);return e}function UE(t,e){for(let r of t.servers.values())if(r.config.id===e)return!0;return!1}function qE(t,e){for(let r of e.diagnostics)t.diagnostics.push({...r,origin:"registry"}),Pt.warn(r.message);for(let[r,n]of e.namesById??[])t.registryConfigNamesById.set(r,n)}function Ks(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t;tr(t);let s=`Live MCP add-server failed for config id ${n}: ${e instanceof Error?e.message:String(e)}`;if(Pt.warn(s),!o()){if(r.diagnostics.push({message:s,origin:"registry"}),!i()){r.failedAddConfigIds.add(n);return}r.dynamicallyAddedConfigIds.add(n),r.sessionRemovedConfigIds.delete(n)}}function C2(t,e){return e.flatMap(r=>pu(t,r)?[r.config]:[])}function P2(t){return t.find(e=>e.status==="failed"||e.status==="unavailable")}function x2(t,e){let r=P2(e);if(r){if(Ks(t,r.error),r.error instanceof xt)throw r.error;return}let n=C2(t.state,e).filter(o=>o.id===t.configId);if(n.length>0&&!t.superseded()){b2(t.state,t.configId,n);return}!t.superseded()&&e.some(o=>o.status==="collision")&&(t.state.failedAddConfigIds.add(t.configId),t.state.nameCollisionAddConfigIds.add(t.configId))}function HE(t,e){try{x2(t,e)}finally{t.superseded()||t.report(t.state.currentLoad?.latestPi??t.activePi,t.state)}}function k2(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t,s=r.servers.get(e.name);if(!s)return!1;let a=Q(r,e.name,s);if(a.owner.kind==="plugin"||a.owner.kind==="vfs")return!1;if(i())return Pt.info(`Live MCP add-server: embedded config id ${n} resolves to already-connected server "${e.name}"; no-op`),!0;let c=`Live MCP add-server: embedded config id ${n} collides on display name "${e.name}" with an already-connected server; cannot add a second server sharing that name`;return Pt.warn(c),o()||(r.registryConfigNamesById.set(n,e.name),r.diagnostics.push({message:c,origin:"registry"}),r.failedAddConfigIds.add(n),r.nameCollisionAddConfigIds.add(n)),!0}async function E2(t,e){if(t.state.missingHostRemovals.has(t.configId)&&await ui(t.state,t.configId),t.superseded()){tr(t);return}if(k2(t,e)){tr(t);return}try{if(!await Er({state:t.state,config:e,pi:t.activePi})){tr(t);return}}catch(r){throw Ks(t,r),r}Pt.info(`Live MCP add-server: connecting embedded config id ${t.configId} (no registry refetch)`);try{let r=await t.connect([e],t.state,t.activePi,t.sourceOwnership);HE(t,r??[])}catch(r){if(Ks(t,r),r instanceof xt)throw r}}async function T2(t,e){let{state:r,configId:n,superseded:o,hasLiveHostForId:i}=t;if(o()){tr(t),Pt.info(`Live MCP add-server for config id ${n} superseded by a newer selection; discarding`);return}if(e.servers.length===0){qE(r,e),Pt.info(`Live MCP add-server: config id ${n} resolved to no new server (already connected, not opted in, or unknown id)`),i()||r.failedAddConfigIds.add(n),tr(t);return}if(await ui(r,n),o()){tr(t);return}try{if((await Promise.all(e.servers.map(c=>Er({state:r,config:c,pi:t.activePi})))).some(c=>!c)){tr(t);return}}catch(a){throw Ks(t,a),a}Pt.info(`Live MCP add-server: connecting ${e.servers.length} server(s) for config id ${n}`);let s=await t.connect(e.servers,r,t.activePi,t.sourceOwnership);if(o()){tr(t);return}qE(r,e),HE(t,s??[])}function A2(t,e){if(typeof e=="string")return _k(e,t.workspaceRoot??process.cwd())}function M2(t,e,r){return t.targetMaterialStore?.has(e)===!0||r!==void 0&&t.targetMaterialStore?.has(r.name)===!0}function GE(t){let{pi:e,state:r,data:n,deps:o}=t,i=n,s=i&&typeof i.configId=="string"?i.configId:"";if(!s)return Pt.warn("augment:mcp-add-server payload missing configId"),Promise.resolve();let a=A2(r,i?.embeddedConfig);if(M2(r,s,a))return Promise.resolve();if(a!==void 0&&a.id!==s)return Pt.warn(`Embedded MCP config id ${a.id??"<missing>"} does not match add target ${s}; rejecting`),Promise.resolve();if(!Xn({state:r,configId:s,generation:i?.attachmentGeneration}))return Pt.info(`Ignoring stale live MCP add-server command for config id ${s}`),Promise.resolve();r.sessionRemovedConfigIds.delete(s);let c=ra({state:r,domain:at(s),forceNew:!0}),u=R2(r),d=r.currentLoad?.latestPi??e,l=r.registryGeneration;r.liveEditGenerations??=new Map;let f=(r.liveEditGenerations.get(s)??0)+1;r.liveEditGenerations.set(s,f);let p=()=>r.registryGeneration!==l||r.liveEditGenerations.get(s)!==f,m={state:r,configId:s,activePi:d,connect:o?.connect??Ve,report:o?.report??D,intentEpoch:c.epoch,superseded:p,sourceOwnership:()=>!p(),hasLiveHostForId:()=>UE(r,s)},h;if(a)h=E2(m,a);else{let g=r.credentials;g?h=(o?.discover??_u)({configIds:[s],creds:g,currentUserId:g.userId,workspaceRoot:r.workspaceRoot??process.cwd(),localServerNames:u}).then(w=>T2(m,w)).catch(w=>{if(!(w instanceof xt)){Ks(m,w);return}throw w}):(Pt.warn("augment:mcp-add-server received before credentials; cannot fetch registry config"),tr(m),h=Promise.resolve())}return sa({state:r,configId:s,generation:i?.attachmentGeneration,operation:h,wasApplied:()=>UE(r,s)})}import{logger as $2}from"@hermes/logger";var Ou=$2.child({prefix:"pi-mcp"}),ZE=3,BE=6e4,I2=1e3,O2=8e3;function Pm(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.reconnect??Yr,s=o?.now??Date.now,a=o?.sleep??ln,c=o?.report??D,u=n,d=u&&typeof u.serverName=="string"?u.serverName:"";if(!d)return Ou.warn("augment:mcp-restart-server payload missing serverName"),Promise.resolve();let l=Xr({state:r,target:d});if(!l||r.targetMaterialStore?.has(l.name)||r.targetMaterialStore?.has(d))return Promise.resolve();let f=l.name,p=r.mcpConnectionEpoch,m=N(r,f),h=s(),g=r.mcpRestartState.get(f),v=g&&h-g.lastRestart<BE?g.count+1:1,w=r.currentLoad?.latestPi??e;if(v>ZE)return Ou.warn(`augment:mcp-restart-server: ${f} exceeded ${ZE} restarts within ${BE}ms; rejecting`),c(w,r),Promise.resolve();r.mcpRestartState.set(f,{count:v,lastRestart:h});let b=Math.min(I2*2**(v-1),O2);return(v>1?a(b):Promise.resolve()).then(()=>{if(!(r.mcpConnectionEpoch!==p||N(r,f)!==m||Xr({state:r,target:d})?.server!==l.server||t.isCurrent&&!t.isCurrent()))return Ou.info(`Live MCP restart-server: reconnecting ${f}`),i(f,r,w)}).catch(S=>{let R=`Live MCP restart-server failed for ${f}: ${S instanceof Error?S.message:String(S)}`;Ou.warn(R),r.diagnostics.push({server:f,message:R})}).then(()=>{c(w,r)})}import{logger as z2}from"@hermes/logger";var Js=z2.child({prefix:"pi-mcp"}),N2=/^\d+$/,xm=1,WE="AUGMENT_ACTIVE_SPACE_ID",D2="augment-mcp-access-token-";function zu(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}function VE(t,e){return e?.["augment:encoding"]!=="base64"?t:/^[A-Za-z0-9+/]*={0,2}$/.test(t)&&t.length%4===0?Buffer.from(t,"base64").toString("utf-8"):t}var Nu=class{apiKey;apiUrl;userAgent;fetchImpl;timeoutMs;cache=new Map;inflight=new Map;constructor(e,r,n){this.apiKey=e.apiKey,this.apiUrl=e.apiUrl.replace(/\/+$/,""),this.userAgent=e.userAgent,this.fetchImpl=r,this.timeoutMs=n??ud}_headers(){return{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json",...this.userAgent?{"User-Agent":this.userAgent}:{}}}lookupBody(e){let r={name:e};return!e.startsWith(D2)&&Object.hasOwn(process.env,WE)&&(r.active_space_id=process.env[WE]??""),r}getSecret(e){let r=zu(e),n=this.inflight.get(r);if(n)return n;let o=this._resolve(r).finally(()=>{this.inflight.delete(r)});return this.inflight.set(r,o),o}upsertUserSecret(e,r,n){return fn(()=>this.upsertUserSecretOnce(e,r,n))}async upsertUserSecretOnce(e,r,n){let o=zu(e),s=(await this._callUpsert({name:o,value:r,scope:xm,...n===void 0?{}:{expected_version:n}})).secret?.version;if(typeof s!="string"||!N2.test(s))throw new Error("user secret upsert response contained an invalid persisted version");let a=BigInt(s).toString();return this.cache.set(o,r),Js.debug(`Upserted user secret "${o}"`),a}async deleteUserSecret(e){await fn(()=>this.deleteUserSecretOnce(e))}async deleteUserSecretOnce(e){let r=zu(e);this.cache.delete(r),await this._callDelete({name:r,scope:xm}),Js.debug(`Deleted user secret "${r}"`)}async _callUpsert(e){let n=await(this.fetchImpl??fetch)(`${this.apiUrl}/user-secrets/upsert`,{method:"POST",headers:this._headers(),body:JSON.stringify(e),signal:AbortSignal.timeout(this.timeoutMs)});if(!n.ok){let o=await n.text().catch(()=>""),i=o.length>or?`${o.slice(0,or)}\u2026[truncated]`:o;throw new ht(n.status,n.statusText,i)}return await n.json()}async _callDelete(e){let n=await(this.fetchImpl??fetch)(`${this.apiUrl}/user-secrets/delete`,{method:"POST",headers:this._headers(),body:JSON.stringify(e),signal:AbortSignal.timeout(this.timeoutMs)});if(!n.ok){let o=await n.text().catch(()=>""),i=o.length>or?`${o.slice(0,or)}\u2026[truncated]`:o;throw new ht(n.status,n.statusText,i)}}async getUserSecretWithVersion(e){let r=zu(e);try{let n=await fn(()=>this._callApi("/mcp-secrets/get",this.lookupBody(r))),o=n.secret?.value,i=n.secret?.version;if(o===void 0||i===void 0)return;let s=n.secret?.scope===xm||n.secret?.scope==="SECRET_SCOPE_PRIVATE";return{value:VE(o,n.secret?.tags),version:s?i:"0"}}catch(n){if(n instanceof ht&&n.statusCode===404)return;throw n}}async _resolve(e){let r=await this._tryGet("/mcp-secrets/get",this.lookupBody(e),e);if(r.value!==void 0)return this.cache.set(e,r.value),r.value;if(r.errored){let n=this.cache.get(e);return n!==void 0&&Js.debug(`Secret "${e}" lookup failed; using cached fallback value`),n}this.cache.delete(e)}async _tryGet(e,r,n){try{let o=await fn(()=>this._callApi(e,r)),i=o.secret?.value;return i===void 0?{errored:!1}:{value:VE(i,o.secret?.tags),errored:!1}}catch(o){if(o instanceof ht&&o.statusCode===404)return Js.debug(`Secret "${n}" not found via ${e} (404)`),{errored:!1};let i=o instanceof Error?o.message:String(o);return Js.debug(`Secret "${n}" lookup via ${e} failed: ${i}`),{errored:!0}}}async _callApi(e,r){let o=await(this.fetchImpl??fetch)(`${this.apiUrl}${e}`,{method:"POST",headers:this._headers(),body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeoutMs)});if(!o.ok){let i=await o.text().catch(()=>""),s=i.length>or?`${i.slice(0,or)}\u2026[truncated]`:i;throw new ht(o.status,o.statusText,s)}return await o.json()}};function km(t){return{latestPi:t}}import{logger as L2}from"@hermes/logger";var ti=L2.child({prefix:"pi-mcp"});async function j2(t){let e=[];for(let[r,n]of t.servers){let o=Q(t,r,n);if(o.owner.kind!=="vfs"||o.host!==n)continue;let i=st({state:t,name:r,owner:o.owner,revision:o.revision,host:n});if(!i)continue;We(t,r);let s=pt(t,r,n.config.id,n.config);n.beginDisposal?.(),e.push(Promise.allSettled([s,n.dispose({strict:!0})]).then(a=>{let c=a.find(u=>u.status==="rejected");if(c)throw ve({state:t,name:r,retirement:i,result:{status:"failed",error:c.reason}}),c.reason;ve({state:t,name:r,retirement:i,result:{status:"retired"}}),xe({state:t,name:r,owner:o.owner,revision:o.revision})}))}await Promise.all(e)}function F2(t,e){for(let r of e??[])typeof r?.message=="string"&&(t.diagnostics.push({message:r.message,origin:"vfs"}),ti.warn(r.message))}function U2(t){let{state:e,name:r,stored:n,higherPriorityNames:o,blockedNames:i,workspaceRoot:s}=t;if(o.has(r)){i.add(r);let a=`VFS MCP server "${r}" ignored: a higher-priority server with the same name takes precedence`;e.diagnostics.push({server:r,message:a,origin:"vfs"}),ti.warn(a);return}try{let a=Jn(r,n);return{...a.type==="stdio"?Gt(a,s):Ht(a,s),vfsSource:"vfs"}}catch(a){let c=a instanceof kt?a.message:`Failed to normalize VFS MCP server "${r}": ${a instanceof Error?a.message:String(a)}`;e.diagnostics.push({server:r,message:c,origin:"vfs"}),ti.warn(c);return}}function q2(t,e){let r=new Set;for(let[s,a]of t.servers){let c=Q(t,s,a);c.owner.kind!=="vfs"&&c.host===a&&r.add(s)}for(let[s,a]of t.hostLeases)a.owner.kind!=="vfs"&&r.add(s);let n=t.workspaceRoot??process.cwd(),o=[],i=new Set;for(let[s,a]of Object.entries(e.servers??{})){if(a===null)continue;let c=U2({state:t,name:s,stored:a,higherPriorityNames:r,blockedNames:i,workspaceRoot:n});c&&o.push(c)}return{servers:o,blockedNames:i}}function H2(t){for(let e of t.blockedVfsMcpNames){let r=t.hostLeases.get(e);if(!r||r.owner.kind==="vfs")return!1}return!0}function KE(t){let{pi:e,state:r,data:n,deps:o}=t,i=o?.connect??Ve,s=n;if(!s||typeof s!="object"||Array.isArray(s))return ti.warn("augment:mcp-vfs-servers payload is not an object"),Promise.resolve();let a=typeof s.signature=="string"?s.signature:void 0;if(a!==void 0&&a===r.lastSuccessfulVfsMcpSignature&&H2(r))return Promise.resolve();let c=++r.vfsGeneration,u=new Set,d=j2(r);return r.diagnostics=r.diagnostics.filter(l=>l.origin!=="vfs"),r.lastSuccessfulVfsMcpSignature=void 0,r.blockedVfsMcpNames.clear(),d.then(()=>{if(r.vfsGeneration!==c)return!1;F2(r,s.diagnostics);let{servers:l,blockedNames:f}=q2(r,s);return u=f,l.length===0?(a!==void 0&&(r.lastSuccessfulVfsMcpSignature=a,r.blockedVfsMcpNames=f),!1):(ti.info(`VFS MCP overlay: connecting ${l.length} server(s)`),i(l,r,r.currentLoad?.latestPi??e,()=>r.vfsGeneration===c).then(p=>{let m=p?.find(h=>h.status==="failed"||h.status==="unavailable");if(m)throw m.error instanceof Error?m.error:new Error(String(m.error));return l.every(h=>(p??[]).some(g=>g.config===h&&pu(r,g)))}))}).then(l=>{l&&a!==void 0&&r.vfsGeneration===c&&(r.lastSuccessfulVfsMcpSignature=a,r.blockedVfsMcpNames=u)}).catch(l=>{let f=`VFS MCP overlay connect failed: ${l instanceof Error?l.message:String(l)}`;ti.warn(f),r.vfsGeneration===c&&r.diagnostics.push({message:f,origin:"vfs"})})}var Me=G2.child({prefix:"pi-mcp"}),eT="augment:mcp-oauth-credentials",JE="augment:mcp-header-secrets",YE="augment:mcp-header-secret-failures",Em="augment:mcp-oauth-failures",XE="augment:credentials",Z2="augment:mcp-config-ids",QE="augment:mcp-configs",B2="augment:mcp-vfs-servers",W2="augment:mcp-add-server",V2="augment:mcp-restart-server",K2="augment:mcp-remove-server";function J2(t){if(!t.secretsClient||t.tokens instanceof hi)return;let e=t.tokens;t.tokens=new hi(()=>t.secretsClient,()=>t.shouldProactivelyRefreshTokens,e.snapshot()),Me.debug("Installed durable BackendTokenStore (durable ops gated at runtime)")}function Y2(t){if(!t||typeof t!="object"){Me.warn(`${eT} payload is not an object`);return}let e=t,r=e.suppressReconnect===!0&&typeof e.credentials=="object"&&e.credentials!==null&&!Array.isArray(e.credentials);return{credentials:r?e.credentials:t,restart:r&&e.restart&&typeof e.restart=="object"?e.restart:void 0,suppressReconnect:r,targetConfigId:r&&typeof e.targetConfigId=="string"?e.targetConfigId:void 0}}function Tm(t,e){let r=e.restart?.serverName;if(typeof r!="string")return!1;let n=e.credentials[r],o=Qr(n),i=Xr({state:t,target:r})?.server;if(i&&i.config.type!=="stdio"&&i.config.auth==="oauth"&&o&&tT({state:t,name:r,revision:o})&&!rT({state:t,revision:o})&&yr({store:t.tokens,serverName:r,proto:n,options:{acceptedRevisions:t.oauthCredentialRevisions,acceptedDomains:t.oauthCredentialDomains,expectedDomains:t.expectedCredentialDomains,equalRevisionRebindDomains:t.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:!0}}).decision!=="reject")return!0;let s="MCP restart credential was rejected; keeping the existing host";return Me.warn(s),t.diagnostics.push({server:r,message:s}),!1}function X2(t){let{pi:e,state:r}=t,{payload:n}=t,o=r.mcpConnectionEpoch;if(Object.entries(n.credentials).some(([c,u])=>r.targetMaterialStore?.has(c)||Re(u)&&Object.hasOwn(u,"target_material"))||n.targetConfigId&&r.targetMaterialStore?.has(n.targetConfigId))return;if(n.restart){let c=Object.keys(n.credentials);if(typeof n.restart.serverName!="string"||typeof n.restart.requestId!="string"||c.length!==1){Me.warn("MCP restart credentials must contain exactly the target entry");return}let u=Xr({state:r,target:n.restart.serverName});if(!u||c[0]!==u.name){Me.warn("MCP restart credentials must contain exactly the resolved target entry");return}n={...n,restart:{...n.restart,serverName:u.name}}}if(n.targetConfigId){mk({pi:e,state:r,update:{configId:n.targetConfigId,credentials:n.credentials}});return}if(n.restart&&!Tm(r,n))return;let i=Object.keys(n.credentials).map(c=>({name:c,server:r.servers.get(c),lease:N(r,c)})),s=new Set;for(let c of Object.keys(n.credentials)){let u=r.servers.get(c)?.getRefreshInFlight?.();u&&s.add(u)}let a=()=>{if(r.mcpConnectionEpoch!==o||i.some(({name:d,server:l,lease:f})=>r.servers.get(d)!==l||N(r,d)!==f)||n.restart&&!Tm(r,n))return;let c=n4({pi:e,state:r,credentials:n.credentials,suppressReconnect:n.suppressReconnect,requireEqualMaterial:n.restart!==void 0}),{restart:u}=n;if(!(typeof u?.serverName!="string"||typeof u.requestId!="string")){if(c.rejected.length===0&&c.applied.length+c.equal.length===1&&(c.applied.includes(u.serverName)||c.equal.includes(u.serverName))){Pm({pi:e,state:r,isCurrent:()=>r.mcpConnectionEpoch===o&&i.every(({name:d,server:l,lease:f})=>r.servers.get(d)===l&&N(r,d)===f)&&Tm(r,n),data:{serverName:u.serverName,requestId:u.requestId}});return}if(Object.hasOwn(n.credentials,u.serverName)&&!c.equal.includes(u.serverName)){let d="MCP restart credential was rejected; keeping the existing host";Me.warn(d),r.diagnostics.push({server:u.serverName,message:d})}}};if(s.size===0){a();return}Promise.allSettled(s).then(a)}function Q2(t,e){e.credsListenerBound||(e.credsListenerBound=!0,t.events.on(eT,r=>{let n=Y2(r);n&&X2({pi:t,state:e,payload:n})}))}function tT(t){let{state:e,name:r,revision:n}=t,o=sn(n);if(e.pendingRegistryCredentialDomains.has(o)&&e.registryCredentialIntents.has(o))return!1;let i=e.expectedCredentialDomains.get(r),s=e.oauthCredentialDomains.get(r),a=e.servers.get(r),c=a?.config.id,u=a?.config.registrySource!==void 0&&c!==void 0&&at(c)===o;return n.ownerDomain!==void 0?i?.kind==="domain"?i.domain===o:u:i===void 0&&s===void 0?u:i?.kind==="domain"&&(i.domain===o||ct(n.domain))||s===n.domain}function rT(t){let{state:e,revision:r}=t,n=sn(r);return e.pendingRegistryCredentialDomains.has(n)&&e.registryCredentialIntents.has(n)}function e4(t){let{state:e,credentials:r,suppressReconnect:n}=t,o={};for(let[i,s]of Object.entries(r)){let a=Qr(s);if(yr({store:e.tokens,serverName:i,proto:s,options:{requireRevision:!0}}).decision!=="reject"&&a!==void 0){if(rT({state:e,revision:a})){Ym({state:e,revision:a,credential:s,suppressReconnect:n});continue}if(tT({state:e,name:i,revision:a})){o[i]=s;continue}Km({state:e,serverName:i,revision:a,credential:s,suppressReconnect:n})}}return o}function t4(t){let{state:e,applicable:r,seeded:n}=t;for(let o of n){let i=r[o],s=Qr(i);s===void 0?(e.credentialRevisions.delete(o),e.hostedCredentialOwnership.delete(o)):(e.credentialRevisions.set(o,s),e.hostedCredentialOwnership.set(o,{...s,accessTokenOnly:i?.refresh_token===void 0})),e.statusFailureCategories.delete(o),e.authRefreshNeededReportKeys.delete(o),e.tokens.clearAuthRequired(o)}}function r4(t){let{pi:e,state:r,seeded:n,suppressReconnect:o}=t;if(o)return;let i=r.currentLoad?.latestPi??e;for(let s of n){let a=r.servers.get(s),c=r.expectedCredentialDomains.get(s),u=N(r,s),d=c?.kind!=="domain"||u?.owner.kind==="registry"&&u.owner.identity===c.domain;a&&d&&a.config.type!=="stdio"&&a.config.auth==="oauth"&&Yr(s,r,i).catch(()=>{}).finally(()=>{D(i,r),_e(r)})}}function n4(t){let{pi:e,state:r,credentials:n,suppressReconnect:o}=t;r.oauthCredentialRevisions??=new Map,r.oauthCredentialDomains??=new Map,r.credentialRevisions??=new Map,r.expectedCredentialDomains??=new Map;let i=e4({state:r,credentials:n,suppressReconnect:o}),s={acceptedRevisions:r.oauthCredentialRevisions,acceptedDomains:r.oauthCredentialDomains,expectedDomains:r.expectedCredentialDomains,equalRevisionRebindDomains:r.equalRevisionRebindDomains,requireRevision:!0,requireEqualMaterial:t.requireEqualMaterial};Object.entries(i).some(([u,d])=>{let{decision:l}=yr({store:r.tokens,serverName:u,proto:d,options:s});return l==="apply"||l==="equal"&&t.requireEqualMaterial===!0})&&(r.shouldProactivelyRefreshTokens=!1);let c=mu(r.tokens,i,s);return t4({state:r,applicable:i,seeded:c.applied}),c.applied.length===0||(Me.info(`Seeded MCP OAuth token(s) for ${c.applied.length} server(s)`),r4({pi:e,state:r,seeded:c.applied,suppressReconnect:o})),c}function o4(t,e){e.headerSecretsListenerBound||(e.headerSecretsListenerBound=!0,t.events.on(JE,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${JE} payload is not an object`);return}let n=r,o=typeof n.secrets=="object"&&n.secrets!==null&&!Array.isArray(n.secrets);zy(e,o?n.secrets:r,{authoritative:o&&n.authoritative===!0})}),t.events.on(YE,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${YE} payload is not an object`);return}let n=r,o=typeof n.entries=="object"&&n.entries!==null&&!Array.isArray(n.entries);Dy(e,o?n.entries:r,{authoritative:o&&n.authoritative===!0})}),t.events.on(Em,r=>{if(!r||typeof r!="object"||Array.isArray(r)){Me.warn(`${Em} payload is not an object`);return}let n=r;if(typeof n.entries!="object"||n.entries===null||Array.isArray(n.entries)){Me.warn(`${Em} entries is not an object`);return}Im(e,n.entries)}))}function i4(t,e){e.configIdsListenerBound||(e.configIdsListenerBound=!0,t.events.on(XE,r=>{let n=r;if(!n||typeof n.apiKey!="string"||typeof n.apiUrl!="string"){Me.warn(`${XE} payload missing apiKey or apiUrl`);return}e.credentials={apiKey:n.apiKey,apiUrl:n.apiUrl,...typeof n.userAgent=="string"?{userAgent:n.userAgent}:{},...typeof n.userId=="string"?{userId:n.userId}:{}},e.secretsClient=new Nu(e.credentials),J2(e)}),t.events.on(Z2,r=>{e.mcpAttachCloudSignaled||(e.mcpAttachCloudSignaled=!0,Bs(e.currentLoad?.latestPi??t,e)),Su({pi:t,state:e,data:r}).then(()=>{D(e.currentLoad?.latestPi??t,e)}).catch(n=>{Me.warn(`Registry config apply did not retire credentials durably: ${n instanceof Error?n.message:String(n)}`),D(e.currentLoad?.latestPi??t,e)}).finally(()=>{let n=e.currentLoad?.latestPi??t;_e(e),Vo(n,e)})}))}function s4(t,e){e.mcpConfigsListenerBound||(e.mcpConfigsListenerBound=!0,t.events.on(QE,r=>{let o=r?.configs;if(o!==void 0&&!Array.isArray(o)){Me.warn(`${QE} payload configs is not an array`),e.embeddedRegistryConfigs=void 0;return}if(e.embeddedRegistryConfigs=o,o!==void 0){let i=Jo(o,e.workspaceRoot??process.cwd());for(let{config:s}of i?.allConfigsById.values()??[])s&&Er({state:e,config:s,pi:t}).catch(a=>{Me.warn(`Embedded MCP credential intent did not retire durably: ${a instanceof Error?a.message:String(a)}`)})}Me.info(`Stored ${o===void 0?0:o.length} embedded MCP config(s) for the next registry selection`)}))}function a4(t,e){e.vfsListenerBound||(e.vfsListenerBound=!0,t.events.on(B2,r=>{KE({pi:t,state:e,data:r}).then(()=>{D(e.currentLoad?.latestPi??t,e),_e(e)})}))}function c4(t,e){e.addServerListenerBound||(e.addServerListenerBound=!0,t.events.on(W2,r=>{let n=()=>GE({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).then(()=>{D(e.currentLoad?.latestPi??t,e)}).catch(o=>{Me.warn(`Live MCP add-server did not retire credentials durably: ${o instanceof Error?o.message:String(o)}`),D(e.currentLoad?.latestPi??t,e)}).finally(()=>{let o=e.currentLoad?.latestPi??t;_e(e),Vo(o,e)})}))}function u4(t,e){e.restartServerListenerBound||(e.restartServerListenerBound=!0,t.events.on(V2,r=>{let n=()=>Pm({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).then(()=>{_e(e)})}))}function d4(t,e){e.removeServerListenerBound||(e.removeServerListenerBound=!0,t.events.on(K2,r=>{let n=()=>wu({pi:t,state:e,data:r});(e.targetMaterialQueue?Ws(e,n):n()).catch(o=>{Me.warn(`Live MCP remove-server did not retire durably: ${o instanceof Error?o.message:String(o)}`)}).finally(()=>{let o=e.currentLoad?.latestPi??t;_e(e),Vo(o,e)})}))}function See(t){return Oy(t)}var nT=t=>{let e=ee();e.currentLoad=km(t),e.themeChangeUnsubscribe?.(),e.themeChangeUnsubscribe=t.events.on("theme_changed",()=>{_e(e)});let r=!1;zE(t,e),jk(t,e),Q2(t,e),o4(t,e),i4(t,e),s4(t,e),a4(t,e),c4(t,e),u4(t,e),d4(t,e),DE(t,e),gk(t,e),e.mcpAttachCloudSignaled&&Bs(t,e),t.on("session_start",(n,o)=>{e.currentLoad=km(t),e.workspaceRoot=o.cwd;let i=o.mcpConfigOverride;if(e.mcpConfigOverride=Array.isArray(i)&&i.length>0?i:void 0,e.ui=o.ui,jE(e),e.connectStarted)Qn(e)?(dn(t),da(t)):pg(t,e),_e(e);else{e.connectStarted=!0,di()&&dn(t);let{servers:s,diagnostics:a}=Yn(o.cwd,o.agentDir,e.mcpConfigOverride,e.sessionMcpConfigDisabledOverrides);for(let c of a)e.diagnostics.push(c),Me.warn(c.message);Ve(s,e,t).then(()=>dk(e)).catch(()=>{}).finally(()=>{D(e.currentLoad?.latestPi??t,e),_e(e)})}r||(r=!0,t.events.emit(cE,pE(t,e)))}),t.on("session_shutdown",()=>{FE(e)})};ug(nT);var wee=nT;export{wee as default,See as setMcpErrorReporter};
150
150
  /*! Bundled license information:
151
151
 
152
152
  content-type/index.js: