opencode-metis 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +1 -1
- package/dist/mcp-server.cjs +1 -1
- package/dist/plugin.cjs +6 -4
- package/dist/worker.cjs +39 -39
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -49,7 +49,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
49
49
|
missingProperty: ${n},
|
|
50
50
|
depsCount: ${e},
|
|
51
51
|
deps: ${r}}`};var vq={keyword:"dependencies",type:"object",schemaType:"object",error:gr.error,code(t){let[e,r]=$q(t);fk(t,e),mk(t,r)}};function $q({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 fk(t,e=t.schema){let{gen:r,data:n,it:o}=t;if(Object.keys(e).length===0)return;let s=r.let("missing");for(let i in e){let a=e[i];if(a.length===0)continue;let c=(0,Hi.propertyInData)(r,n,i,o.opts.ownProperties);t.setParams({property:i,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let u of a)(0,Hi.checkReportMissingProp)(t,u)}):(r.if((0,vg._)`${c} && (${(0,Hi.checkMissingProp)(t,a,s)})`),(0,Hi.reportMissingProp)(t,s),r.else())}}gr.validatePropertyDeps=fk;function mk(t,e=t.schema){let{gen:r,data:n,keyword:o,it:s}=t,i=r.name("valid");for(let a in e)(0,_q.alwaysValidSchema)(s,e[a])||(r.if((0,Hi.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let c=t.subschema({keyword:o,schemaProp:a},i);t.mergeValidEvaluated(c,i)},()=>r.var(i,!0)),t.ok(i))}gr.validateSchemaDeps=mk;gr.default=vq});var yk=_($g=>{"use strict";Object.defineProperty($g,"__esModule",{value:!0});var gk=K(),bq=ie(),wq={message:"property name must be valid",params:({params:t})=>(0,gk._)`{propertyName: ${t.propertyName}}`},xq={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:wq,code(t){let{gen:e,schema:r,data:n,it:o}=t;if((0,bq.alwaysValidSchema)(o,r))return;let s=e.name("valid");e.forIn("key",n,i=>{t.setParams({propertyName:i}),t.subschema({keyword:"propertyNames",data:i,dataTypes:["string"],propertyName:i,compositeRule:!0},s),e.if((0,gk.not)(s),()=>{t.error(!0),o.allErrors||e.break()})}),t.ok(s)}};$g.default=xq});var wg=_(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});var $u=jt(),Yt=K(),kq=Tr(),bu=ie(),Sq={message:"must NOT have additional properties",params:({params:t})=>(0,Yt._)`{additionalProperty: ${t.additionalProperty}}`},Pq={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:Sq,code(t){let{gen:e,schema:r,parentSchema:n,data:o,errsCount:s,it:i}=t;if(!s)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=i;if(i.props=!0,c.removeAdditional!=="all"&&(0,bu.alwaysValidSchema)(i,r))return;let u=(0,$u.allSchemaProperties)(n.properties),l=(0,$u.allSchemaProperties)(n.patternProperties);d(),t.ok((0,Yt._)`${s} === ${kq.default.errors}`);function d(){e.forIn("key",o,g=>{!u.length&&!l.length?p(g):e.if(h(g),()=>p(g))})}function h(g){let y;if(u.length>8){let $=(0,bu.schemaRefOrVal)(i,n.properties,"properties");y=(0,$u.isOwnProperty)(e,$,g)}else u.length?y=(0,Yt.or)(...u.map($=>(0,Yt._)`${g} === ${$}`)):y=Yt.nil;return l.length&&(y=(0,Yt.or)(y,...l.map($=>(0,Yt._)`${(0,$u.usePattern)(t,$)}.test(${g})`))),(0,Yt.not)(y)}function m(g){e.code((0,Yt._)`delete ${o}[${g}]`)}function p(g){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){m(g);return}if(r===!1){t.setParams({additionalProperty:g}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,bu.alwaysValidSchema)(i,r)){let y=e.name("valid");c.removeAdditional==="failing"?(f(g,y,!1),e.if((0,Yt.not)(y),()=>{t.reset(),m(g)})):(f(g,y),a||e.if((0,Yt.not)(y),()=>e.break()))}}function f(g,y,$){let w={keyword:"additionalProperties",dataProp:g,dataPropType:bu.Type.Str};$===!1&&Object.assign(w,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(w,y)}}};bg.default=Pq});var $k=_(kg=>{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});var Eq=Oi(),_k=jt(),xg=ie(),vk=wg(),zq={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:s}=t;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&vk.default.code(new Eq.KeywordCxt(s,vk.default,"additionalProperties"));let i=(0,_k.allSchemaProperties)(r);for(let d of i)s.definedProperties.add(d);s.opts.unevaluated&&i.length&&s.props!==!0&&(s.props=xg.mergeEvaluated.props(e,(0,xg.toHash)(i),s.props));let a=i.filter(d=>!(0,xg.alwaysValidSchema)(s,r[d]));if(a.length===0)return;let c=e.name("valid");for(let d of a)u(d)?l(d):(e.if((0,_k.propertyInData)(e,o,d,s.opts.ownProperties)),l(d),s.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(d),t.ok(c);function u(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function l(d){t.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};kg.default=zq});var kk=_(Sg=>{"use strict";Object.defineProperty(Sg,"__esModule",{value:!0});var bk=jt(),wu=K(),wk=ie(),xk=ie(),Tq={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:o,it:s}=t,{opts:i}=s,a=(0,bk.allSchemaProperties)(r),c=a.filter(f=>(0,wk.alwaysValidSchema)(s,r[f]));if(a.length===0||c.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let u=i.strictSchema&&!i.allowMatchingProperties&&o.properties,l=e.name("valid");s.props!==!0&&!(s.props instanceof wu.Name)&&(s.props=(0,xk.evaluatedPropsToName)(e,s.props));let{props:d}=s;h();function h(){for(let f of a)u&&m(f),s.allErrors?p(f):(e.var(l,!0),p(f),e.if(l))}function m(f){for(let g in u)new RegExp(f).test(g)&&(0,wk.checkStrictMode)(s,`property ${g} matches pattern ${f} (use allowMatchingProperties)`)}function p(f){e.forIn("key",n,g=>{e.if((0,wu._)`${(0,bk.usePattern)(t,f)}.test(${g})`,()=>{let y=c.includes(f);y||t.subschema({keyword:"patternProperties",schemaProp:f,dataProp:g,dataPropType:xk.Type.Str},l),s.opts.unevaluated&&d!==!0?e.assign((0,wu._)`${d}[${g}]`,!0):!y&&!s.allErrors&&e.if((0,wu.not)(l),()=>e.break())})})}}};Sg.default=Tq});var Sk=_(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});var Rq=ie(),Iq={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,Rq.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"}};Pg.default=Iq});var Pk=_(Eg=>{"use strict";Object.defineProperty(Eg,"__esModule",{value:!0});var Oq=jt(),Nq={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Oq.validateUnion,error:{message:"must match a schema in anyOf"}};Eg.default=Nq});var Ek=_(zg=>{"use strict";Object.defineProperty(zg,"__esModule",{value:!0});var xu=K(),jq=ie(),Cq={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,xu._)`{passingSchemas: ${t.passing}}`},Aq={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Cq,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 s=r,i=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(u),t.result(i,()=>t.reset(),()=>t.error(!0));function u(){s.forEach((l,d)=>{let h;(0,jq.alwaysValidSchema)(o,l)?e.var(c,!0):h=t.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&e.if((0,xu._)`${c} && ${i}`).assign(i,!1).assign(a,(0,xu._)`[${a}, ${d}]`).else(),e.if(c,()=>{e.assign(i,!0),e.assign(a,d),h&&t.mergeEvaluated(h,xu.Name)})})}}};zg.default=Aq});var zk=_(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});var Mq=ie(),Zq={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((s,i)=>{if((0,Mq.alwaysValidSchema)(n,s))return;let a=t.subschema({keyword:"allOf",schemaProp:i},o);t.ok(o),t.mergeEvaluated(a)})}};Tg.default=Zq});var Ik=_(Rg=>{"use strict";Object.defineProperty(Rg,"__esModule",{value:!0});var ku=K(),Rk=ie(),qq={message:({params:t})=>(0,ku.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,ku._)`{failingKeyword: ${t.ifClause}}`},Dq={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:qq,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,Rk.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=Tk(n,"then"),s=Tk(n,"else");if(!o&&!s)return;let i=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),o&&s){let l=e.let("ifClause");t.setParams({ifClause:l}),e.if(a,u("then",l),u("else",l))}else o?e.if(a,u("then")):e.if((0,ku.not)(a),u("else"));t.pass(i,()=>t.error(!0));function c(){let l=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(l)}function u(l,d){return()=>{let h=t.subschema({keyword:l},a);e.assign(i,a),t.mergeValidEvaluated(h,i),d?e.assign(d,(0,ku._)`${l}`):t.setParams({ifClause:l})}}}};function Tk(t,e){let r=t.schema[e];return r!==void 0&&!(0,Rk.alwaysValidSchema)(t,r)}Rg.default=Dq});var Ok=_(Ig=>{"use strict";Object.defineProperty(Ig,"__esModule",{value:!0});var Lq=ie(),Uq={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,Lq.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};Ig.default=Uq});var Nk=_(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});var Vq=mg(),Fq=uk(),Hq=hg(),Kq=dk(),Bq=pk(),Gq=hk(),Jq=yk(),Wq=wg(),Yq=$k(),Xq=kk(),Qq=Sk(),eD=Pk(),tD=Ek(),rD=zk(),nD=Ik(),oD=Ok();function sD(t=!1){let e=[Qq.default,eD.default,tD.default,rD.default,nD.default,oD.default,Jq.default,Wq.default,Gq.default,Yq.default,Xq.default];return t?e.push(Fq.default,Kq.default):e.push(Vq.default,Hq.default),e.push(Bq.default),e}Og.default=sD});var jk=_(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});var Oe=K(),iD={message:({schemaCode:t})=>(0,Oe.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,Oe._)`{format: ${t}}`},aD={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:iD,code(t,e){let{gen:r,data:n,$data:o,schema:s,schemaCode:i,it:a}=t,{opts:c,errSchemaPath:u,schemaEnv:l,self:d}=a;if(!c.validateFormats)return;o?h():m();function h(){let p=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),f=r.const("fDef",(0,Oe._)`${p}[${i}]`),g=r.let("fType"),y=r.let("format");r.if((0,Oe._)`typeof ${f} == "object" && !(${f} instanceof RegExp)`,()=>r.assign(g,(0,Oe._)`${f}.type || "string"`).assign(y,(0,Oe._)`${f}.validate`),()=>r.assign(g,(0,Oe._)`"string"`).assign(y,f)),t.fail$data((0,Oe.or)($(),w()));function $(){return c.strictSchema===!1?Oe.nil:(0,Oe._)`${i} && !${y}`}function w(){let E=l.$async?(0,Oe._)`(${f}.async ? await ${y}(${n}) : ${y}(${n}))`:(0,Oe._)`${y}(${n})`,S=(0,Oe._)`(typeof ${y} == "function" ? ${E} : ${y}.test(${n}))`;return(0,Oe._)`${y} && ${y} !== true && ${g} === ${e} && !${S}`}}function m(){let p=d.formats[s];if(!p){$();return}if(p===!0)return;let[f,g,y]=w(p);f===e&&t.pass(E());function $(){if(c.strictSchema===!1){d.logger.warn(S());return}throw new Error(S());function S(){return`unknown format "${s}" ignored in schema at path "${u}"`}}function w(S){let ge=S instanceof RegExp?(0,Oe.regexpCode)(S):c.code.formats?(0,Oe._)`${c.code.formats}${(0,Oe.getProperty)(s)}`:void 0,Re=r.scopeValue("formats",{key:s,ref:S,code:ge});return typeof S=="object"&&!(S instanceof RegExp)?[S.type||"string",S.validate,(0,Oe._)`${Re}.validate`]:["string",S,Re]}function E(){if(typeof p=="object"&&!(p instanceof RegExp)&&p.async){if(!l.$async)throw new Error("async format in sync schema");return(0,Oe._)`await ${y}(${n})`}return typeof g=="function"?(0,Oe._)`${y}(${n})`:(0,Oe._)`${y}.test(${n})`}}}};Ng.default=aD});var Ck=_(jg=>{"use strict";Object.defineProperty(jg,"__esModule",{value:!0});var cD=jk(),uD=[cD.default];jg.default=uD});var Ak=_(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.contentVocabulary=Yo.metadataVocabulary=void 0;Yo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Yo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var Zk=_(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});var lD=Hx(),dD=sk(),pD=Nk(),fD=Ck(),Mk=Ak(),mD=[lD.default,dD.default,(0,pD.default)(),fD.default,Mk.metadataVocabulary,Mk.contentVocabulary];Cg.default=mD});var Dk=_(Su=>{"use strict";Object.defineProperty(Su,"__esModule",{value:!0});Su.DiscrError=void 0;var qk;(function(t){t.Tag="tag",t.Mapping="mapping"})(qk||(Su.DiscrError=qk={}))});var Uk=_(Mg=>{"use strict";Object.defineProperty(Mg,"__esModule",{value:!0});var Xo=K(),Ag=Dk(),Lk=du(),hD=Ni(),gD=ie(),yD={message:({params:{discrError:t,tagName:e}})=>t===Ag.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,Xo._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},_D={keyword:"discriminator",type:"object",schemaType:"object",error:yD,code(t){let{gen:e,data:r,schema:n,parentSchema:o,it:s}=t,{oneOf:i}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!i)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),u=e.const("tag",(0,Xo._)`${r}${(0,Xo.getProperty)(a)}`);e.if((0,Xo._)`typeof ${u} == "string"`,()=>l(),()=>t.error(!1,{discrError:Ag.DiscrError.Tag,tag:u,tagName:a})),t.ok(c);function l(){let m=h();e.if(!1);for(let p in m)e.elseIf((0,Xo._)`${u} === ${p}`),e.assign(c,d(m[p]));e.else(),t.error(!1,{discrError:Ag.DiscrError.Mapping,tag:u,tagName:a}),e.endIf()}function d(m){let p=e.name("valid"),f=t.subschema({keyword:"oneOf",schemaProp:m},p);return t.mergeEvaluated(f,Xo.Name),p}function h(){var m;let p={},f=y(o),g=!0;for(let E=0;E<i.length;E++){let S=i[E];if(S?.$ref&&!(0,gD.schemaHasRulesButRef)(S,s.self.RULES)){let Re=S.$ref;if(S=Lk.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,Re),S instanceof Lk.SchemaEnv&&(S=S.schema),S===void 0)throw new hD.default(s.opts.uriResolver,s.baseId,Re)}let ge=(m=S?.properties)===null||m===void 0?void 0:m[a];if(typeof ge!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(f||y(S)),$(ge,E)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return p;function y({required:E}){return Array.isArray(E)&&E.includes(a)}function $(E,S){if(E.const)w(E.const,S);else if(E.enum)for(let ge of E.enum)w(ge,S);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function w(E,S){if(typeof E!="string"||E in p)throw new Error(`discriminator: "${a}" values must be unique strings`);p[E]=S}}}};Mg.default=_D});var Vk=_((Y6,vD)=>{vD.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 Hk=_((xe,Zg)=>{"use strict";Object.defineProperty(xe,"__esModule",{value:!0});xe.MissingRefError=xe.ValidationError=xe.CodeGen=xe.Name=xe.nil=xe.stringify=xe.str=xe._=xe.KeywordCxt=xe.Ajv=void 0;var $D=qx(),bD=Zk(),wD=Uk(),Fk=Vk(),xD=["/properties"],Pu="http://json-schema.org/draft-07/schema",Qo=class extends $D.default{_addVocabularies(){super._addVocabularies(),bD.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(wD.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(Fk,xD):Fk;this.addMetaSchema(e,Pu,!1),this.refs["http://json-schema.org/schema"]=Pu}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Pu)?Pu:void 0)}};xe.Ajv=Qo;Zg.exports=xe=Qo;Zg.exports.Ajv=Qo;Object.defineProperty(xe,"__esModule",{value:!0});xe.default=Qo;var kD=Oi();Object.defineProperty(xe,"KeywordCxt",{enumerable:!0,get:function(){return kD.KeywordCxt}});var es=K();Object.defineProperty(xe,"_",{enumerable:!0,get:function(){return es._}});Object.defineProperty(xe,"str",{enumerable:!0,get:function(){return es.str}});Object.defineProperty(xe,"stringify",{enumerable:!0,get:function(){return es.stringify}});Object.defineProperty(xe,"nil",{enumerable:!0,get:function(){return es.nil}});Object.defineProperty(xe,"Name",{enumerable:!0,get:function(){return es.Name}});Object.defineProperty(xe,"CodeGen",{enumerable:!0,get:function(){return es.CodeGen}});var SD=uu();Object.defineProperty(xe,"ValidationError",{enumerable:!0,get:function(){return SD.default}});var PD=Ni();Object.defineProperty(xe,"MissingRefError",{enumerable:!0,get:function(){return PD.default}})});var Kk=_(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});ts.formatLimitDefinition=void 0;var ED=Hk(),Xt=K(),an=Xt.operators,Eu={formatMaximum:{okStr:"<=",ok:an.LTE,fail:an.GT},formatMinimum:{okStr:">=",ok:an.GTE,fail:an.LT},formatExclusiveMaximum:{okStr:"<",ok:an.LT,fail:an.GTE},formatExclusiveMinimum:{okStr:">",ok:an.GT,fail:an.LTE}},zD={message:({keyword:t,schemaCode:e})=>(0,Xt.str)`should be ${Eu[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Xt._)`{comparison: ${Eu[t].okStr}, limit: ${e}}`};ts.formatLimitDefinition={keyword:Object.keys(Eu),type:"string",schemaType:"string",$data:!0,error:zD,code(t){let{gen:e,data:r,schemaCode:n,keyword:o,it:s}=t,{opts:i,self:a}=s;if(!i.validateFormats)return;let c=new ED.KeywordCxt(s,a.RULES.all.format.definition,"format");c.$data?u():l();function u(){let h=e.scopeValue("formats",{ref:a.formats,code:i.code.formats}),m=e.const("fmt",(0,Xt._)`${h}[${c.schemaCode}]`);t.fail$data((0,Xt.or)((0,Xt._)`typeof ${m} != "object"`,(0,Xt._)`${m} instanceof RegExp`,(0,Xt._)`typeof ${m}.compare != "function"`,d(m)))}function l(){let h=c.schema,m=a.formats[h];if(!m||m===!0)return;if(typeof m!="object"||m instanceof RegExp||typeof m.compare!="function")throw new Error(`"${o}": format "${h}" does not define "compare" function`);let p=e.scopeValue("formats",{key:h,ref:m,code:i.code.formats?(0,Xt._)`${i.code.formats}${(0,Xt.getProperty)(h)}`:void 0});t.fail$data(d(p))}function d(h){return(0,Xt._)`${h}.compare(${r}, ${n}) ${Eu[o].fail} 0`}},dependencies:["format"]};var TD=t=>(t.addKeyword(ts.formatLimitDefinition),t);ts.default=TD});var Wk=_((Ki,Jk)=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});var rs=Iw(),RD=Kk(),qg=K(),Bk=new qg.Name("fullFormats"),ID=new qg.Name("fastFormats"),Dg=(t,e={keywords:!0})=>{if(Array.isArray(e))return Gk(t,e,rs.fullFormats,Bk),t;let[r,n]=e.mode==="fast"?[rs.fastFormats,ID]:[rs.fullFormats,Bk],o=e.formats||rs.formatNames;return Gk(t,o,r,n),e.keywords&&(0,RD.default)(t),t};Dg.get=(t,e="full")=>{let n=(e==="fast"?rs.fastFormats:rs.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function Gk(t,e,r,n){var o,s;(o=(s=t.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,qg._)`require("ajv-formats/dist/formats").${n}`);for(let i of e)t.addFormat(i,r[i])}Jk.exports=Ki=Dg;Object.defineProperty(Ki,"__esModule",{value:!0});Ki.default=Dg});function OD(){let t=new Yk.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,Xk.default)(t),t}var Yk,Xk,zu,Qk=x(()=>{Yk=Au(xw(),1),Xk=Au(Wk(),1);zu=class{constructor(e){this._ajv=e??OD()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}}});var Tu,eS=x(()=>{Tu=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,n){return this._server.getTaskResult({taskId:e},r,n)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}}});function tS(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function rS(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var nS=x(()=>{});var Ru,oS=x(()=>{Y$();As();Qk();Us();eS();nS();Ru=class extends gc{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Cs.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new zu,this.setRequestHandler(pp,n=>this._oninitialize(n)),this.setNotificationHandler(fp,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler($p,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:i}=n.params,a=Cs.safeParse(i);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Tu(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=W$(this._capabilities,e)}setRequestHandler(e,r){let o=Vr(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let s;if(Et(o)){let a=o;s=a._zod?.def?.value??a.value}else{let a=o;s=a._def?.value??a.value}if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let a=async(c,u)=>{let l=Ur(ho,c);if(!l.success){let p=l.error instanceof Error?l.error.message:String(l.error);throw new O(A.InvalidParams,`Invalid tools/call request: ${p}`)}let{params:d}=l.data,h=await Promise.resolve(r(c,u));if(d.task){let p=Ur(fo,h);if(!p.success){let f=p.error instanceof Error?p.error.message:String(p.error);throw new O(A.InvalidParams,`Invalid task creation result: ${f}`)}return p.data}let m=Ur(Va,h);if(!m.success){let p=m.error instanceof Error?m.error.message:String(m.error);throw new O(A.InvalidParams,`Invalid tools/call result: ${p}`)}return m.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){rS(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&tS(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:xv.includes(r)?r:ap,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Ea)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(u=>u.type==="tool_result"),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],c=a.some(u=>u.type==="tool_use");if(s){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},wp,r):this.request({method:"sampling/createMessage",params:e},bp,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=e;return this.request({method:"elicitation/create",params:o},Fa,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=e.mode==="form"?e:{...e,mode:"form"},s=await this.request({method:"elicitation/create",params:o},Fa,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!a.valid)throw new O(A.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(i){throw i instanceof O?i:new O(A.InternalError,`Error validating elicitation response: ${i instanceof Error?i.message:String(i)}`)}return s}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},xp,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function Lg(t){return!!t&&typeof t=="object"&&iS in t}function aS(t){return t[iS]?.complete}var iS,sS,cS=x(()=>{iS=Symbol.for("mcp.completable");(function(t){t.Completable="McpCompletable"})(sS||(sS={}))});var uS=x(()=>{});function jD(t){let e=[];if(t.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(t.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${t.length})`]};if(t.includes(" ")&&e.push("Tool name contains spaces, which may cause parsing issues"),t.includes(",")&&e.push("Tool name contains commas, which may cause parsing issues"),(t.startsWith("-")||t.endsWith("-"))&&e.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(t.startsWith(".")||t.endsWith("."))&&e.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!ND.test(t)){let r=t.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,s)=>s.indexOf(n)===o);return e.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:e}}return{isValid:!0,warnings:e}}function CD(t,e){if(e.length>0){console.warn(`Tool name validation warning for "${t}":`);for(let r of e)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function Ug(t){let e=jD(t);return CD(t,e.warnings),e.isValid}var ND,lS=x(()=>{ND=/^[A-Za-z0-9._-]{1,128}$/});var Iu,dS=x(()=>{Iu=class{constructor(e){this._mcpServer=e}registerToolTask(e,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}}});var Vg=x(()=>{rc();rc()});function mS(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function MD(t){return"_def"in t||"_zod"in t||mS(t)}function Fg(t){return typeof t!="object"||t===null||MD(t)?!1:Object.keys(t).length===0?!0:Object.values(t).some(mS)}function pS(t){if(t)return Fg(t)?An(t):t}function ZD(t){let e=Vr(t);return e?Object.entries(e).map(([r,n])=>{let o=p$(n),s=f$(n);return{name:r,description:o,required:!s}}):[]}function cn(t){let r=Vr(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=sc(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function fS(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var Ou,AD,Bi,hS=x(()=>{oS();Us();yf();As();cS();uS();lS();dS();Vg();Ou=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Ru(e,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Iu(this)}),this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(cn(Ua)),this.server.assertCanSetRequestHandler(cn(ho)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Ua,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let n={name:e,title:r.title,description:r.description,inputSchema:(()=>{let o=ko(r.inputSchema);return o?mf(o,{strictUnions:!0,pipeStrategy:"input"}):AD})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=ko(r.outputSchema);o&&(n.outputSchema=mf(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(ho,async(e,r)=>{try{let n=this._registeredTools[e.params.name];if(!n)throw new O(A.InvalidParams,`Tool ${e.params.name} not found`);if(!n.enabled)throw new O(A.InvalidParams,`Tool ${e.params.name} disabled`);let o=!!e.params.task,s=n.execution?.taskSupport,i="createTask"in n.handler;if((s==="required"||s==="optional")&&!i)throw new O(A.InternalError,`Tool ${e.params.name} has taskSupport '${s}' but was not registered with registerToolTask`);if(s==="required"&&!o)throw new O(A.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if(s==="optional"&&!o&&i)return await this.handleAutomaticTaskPolling(n,e,r);let a=await this.validateToolInput(n,e.params.arguments,e.params.name),c=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,c,e.params.name),c}catch(n){if(n instanceof O&&n.code===A.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(e){return{content:[{type:"text",text:e}],isError:!0}}async validateToolInput(e,r,n){if(!e.inputSchema)return;let s=ko(e.inputSchema)??e.inputSchema,i=await nc(s,r);if(!i.success){let a="error"in i?i.error:"Unknown error",c=oc(a);throw new O(A.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${c}`)}return i.data}async validateToolOutput(e,r,n){if(!e.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new O(A.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=ko(e.outputSchema),s=await nc(o,r.structuredContent);if(!s.success){let i="error"in s?s.error:"Unknown error",a=oc(i);throw new O(A.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(e,r,n){let o=e.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let i={...n,taskStore:n.taskStore};if(e.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,i))}else{let a=o;return await Promise.resolve(a.createTask(i))}}if(e.inputSchema){let i=o;return await Promise.resolve(i(r,n))}else{let i=o;return await Promise.resolve(i(n))}}async handleAutomaticTaskPolling(e,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(e,r.params.arguments,r.params.name),s=e.handler,i={...n,taskStore:n.taskStore},a=o?await Promise.resolve(s.createTask(o,i)):await Promise.resolve(s.createTask(i)),c=a.task.taskId,u=a.task,l=u.pollInterval??5e3;for(;u.status!=="completed"&&u.status!=="failed"&&u.status!=="cancelled";){await new Promise(h=>setTimeout(h,l));let d=await n.taskStore.getTask(c);if(!d)throw new O(A.InternalError,`Task ${c} not found during polling`);u=d}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(cn(Ha)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Ha,async e=>{switch(e.params.ref.type){case"ref/prompt":return qv(e),this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return Dv(e),this.handleResourceCompletion(e,e.params.ref);default:throw new O(A.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let n=this._registeredPrompts[r.name];if(!n)throw new O(A.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new O(A.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return Bi;let s=Vr(n.argsSchema)?.[e.params.argument.name];if(!Lg(s))return Bi;let i=aS(s);if(!i)return Bi;let a=await i(e.params.argument.value,e.params.context);return fS(a)}async handleResourceCompletion(e,r){let n=Object.values(this._registeredResourceTemplates).find(i=>i.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return Bi;throw new O(A.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(e.params.argument.name);if(!o)return Bi;let s=await o(e.params.argument.value,e.params.context);return fS(s)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(cn(Ma)),this.server.assertCanSetRequestHandler(cn(Za)),this.server.assertCanSetRequestHandler(cn(qa)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Ma,async(e,r)=>{let n=Object.entries(this._registeredResources).filter(([s,i])=>i.enabled).map(([s,i])=>({uri:s,name:i.name,...i.metadata})),o=[];for(let s of Object.values(this._registeredResourceTemplates)){if(!s.resourceTemplate.listCallback)continue;let i=await s.resourceTemplate.listCallback(r);for(let a of i.resources)o.push({...s.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Za,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(qa,async(e,r)=>{let n=new URL(e.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new O(A.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let s of Object.values(this._registeredResourceTemplates)){let i=s.resourceTemplate.uriTemplate.match(n.toString());if(i)return s.readCallback(n,i,r)}throw new O(A.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(cn(Da)),this.server.assertCanSetRequestHandler(cn(La)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Da,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?ZD(r.argsSchema):void 0}))})),this.server.setRequestHandler(La,async(e,r)=>{let n=this._registeredPrompts[e.params.name];if(!n)throw new O(A.InvalidParams,`Prompt ${e.params.name} not found`);if(!n.enabled)throw new O(A.InvalidParams,`Prompt ${e.params.name} disabled`);if(n.argsSchema){let o=ko(n.argsSchema),s=await nc(o,e.params.arguments);if(!s.success){let c="error"in s?s.error:"Unknown error",u=oc(c);throw new O(A.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${u}`)}let i=s.data,a=n.callback;return await Promise.resolve(a(i,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(e,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let s=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let i=this._createRegisteredResourceTemplate(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}registerResource(e,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}_createRegisteredResource(e,r,n,o,s){let i={name:e,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=i)),typeof a.name<"u"&&(i.name=a.name),typeof a.title<"u"&&(i.title=a.title),typeof a.metadata<"u"&&(i.metadata=a.metadata),typeof a.callback<"u"&&(i.readCallback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=i,i}_createRegisteredResourceTemplate(e,r,n,o,s){let i={resourceTemplate:n,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredResourceTemplates[e],u.name&&(this._registeredResourceTemplates[u.name]=i)),typeof u.title<"u"&&(i.title=u.title),typeof u.template<"u"&&(i.resourceTemplate=u.template),typeof u.metadata<"u"&&(i.metadata=u.metadata),typeof u.callback<"u"&&(i.readCallback=u.callback),typeof u.enabled<"u"&&(i.enabled=u.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=i;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(u=>!!n.completeCallback(u))&&this.setCompletionRequestHandler(),i}_createRegisteredPrompt(e,r,n,o,s){let i={title:r,description:n,argsSchema:o===void 0?void 0:An(o),callback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==e&&(delete this._registeredPrompts[e],a.name&&(this._registeredPrompts[a.name]=i)),typeof a.title<"u"&&(i.title=a.title),typeof a.description<"u"&&(i.description=a.description),typeof a.argsSchema<"u"&&(i.argsSchema=An(a.argsSchema)),typeof a.callback<"u"&&(i.callback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=i,o&&Object.values(o).some(c=>{let u=c instanceof lt?c._def?.innerType:c;return Lg(u)})&&this.setCompletionRequestHandler(),i}_createRegisteredTool(e,r,n,o,s,i,a,c,u){Ug(e);let l={title:r,description:n,inputSchema:pS(o),outputSchema:pS(s),annotations:i,execution:a,_meta:c,handler:u,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==e&&(typeof d.name=="string"&&Ug(d.name),delete this._registeredTools[e],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=An(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=An(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let n,o,s,i;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let c=r[0];Fg(c)?(o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Fg(r[0])&&(i=r.shift())):typeof c=="object"&&c!==null&&(i=r.shift())}let a=r[0];return this._createRegisteredTool(e,void 0,n,o,s,i,{taskSupport:"forbidden"},void 0,a)}registerTool(e,r,n){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:o,description:s,inputSchema:i,outputSchema:a,annotations:c,_meta:u}=r;return this._createRegisteredTool(e,o,s,i,a,c,{taskSupport:"forbidden"},u,n)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let s=r[0],i=this._createRegisteredPrompt(e,void 0,n,o,s);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),i}registerPrompt(e,r,n){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:o,description:s,argsSchema:i}=r,a=this._createRegisteredPrompt(e,o,s,i,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}},AD={type:"object",properties:{}};Bi={completion:{values:[],hasMore:!1}}});function ns(t){return{content:[{type:"text",text:JSON.stringify(t,null,2)}]}}function os(t){return{content:[{type:"text",text:t}],isError:!0}}function gS(t){let e=new Ou({name:"mem-search",version:"0.1.0"},{capabilities:{tools:{}}});return e.registerTool("search",{description:"Search memory observations using semantic or keyword search",inputSchema:{query:Ae.string().describe("The search query"),limit:Ae.number().int().positive().optional().describe("Maximum number of results to return"),type:Ae.string().optional().describe("Filter by observation type (decision, bugfix, feature, etc.)"),project:Ae.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query};r.limit!==void 0&&(n.limit=r.limit),r.type!==void 0&&(n.type=r.type),r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return ns(o)}catch(n){return os(`Search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("timeline",{description:"Get chronological context around an observation",inputSchema:{anchor:Ae.string().describe("Observation ID, session ID, timestamp, or query to anchor the timeline"),depth_before:Ae.number().int().nonnegative().optional().describe("Number of entries before the anchor"),depth_after:Ae.number().int().nonnegative().optional().describe("Number of entries after the anchor")}},async r=>{try{let n={anchor:r.anchor};r.depth_before!==void 0&&(n.depth_before=r.depth_before),r.depth_after!==void 0&&(n.depth_after=r.depth_after);let o=await t.timeline(n);return ns(o)}catch(n){return os(`Timeline failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("get_observations",{description:"Get full details for specific observation IDs",inputSchema:{ids:Ae.array(Ae.number().int().positive()).describe("Array of observation IDs to fetch")}},async r=>{try{let n=await t.getObservations({ids:r.ids});return ns(n)}catch(n){return os(`Get observations failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("save_memory",{description:"Save a new memory observation",inputSchema:{text:Ae.string().describe("The observation text to save"),title:Ae.string().optional().describe("Optional title for the observation"),project:Ae.string().optional().describe("Optional project name to associate the observation with")}},async r=>{try{let n={text:r.text};r.title!==void 0&&(n.title=r.title),r.project!==void 0&&(n.project=r.project);let o=await t.saveMemory(n);return ns(o)}catch(n){return os(`Save memory failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("decisions",{description:"Search for decision-type observations",inputSchema:{query:Ae.string().optional().describe("Optional search query (defaults to all decisions)"),project:Ae.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query??"*",type:"decision"};r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return ns(o)}catch(n){return os(`Decisions search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("changes",{description:"Search for recent change-type observations",inputSchema:{project:Ae.string().optional().describe("Filter by project name"),limit:Ae.number().int().positive().optional().describe("Maximum number of results to return")}},async r=>{try{let n={query:"*",type:"change"};r.project!==void 0&&(n.project=r.project),r.limit!==void 0&&(n.limit=r.limit);let o=await t.search(n);return ns(o)}catch(n){return os(`Changes search failed: ${n instanceof Error?n.message:String(n)}`)}}),e}var yS=x(()=>{"use strict";hS();Vg();console.log=(...t)=>{process.stderr.write(`${t.map(String).join(" ")}
|
|
52
|
-
`)}});function qD(t){return typeof t=="object"&&t!==null&&"token"in t&&typeof t.token=="string"&&"pid"in t&&typeof t.pid=="number"}function DD(t){try{return process.kill(t,0),!0}catch{return!1}}function vS(t){try{let e=(0,_S.readFileSync)(t,"utf-8");if(e.trim().length===0)return null;let r=JSON.parse(e);return!qD(r)||!DD(r.pid)?null:r.token}catch{return null}}var _S,$S=x(()=>{"use strict";_S=require("node:fs")});function LD(){if(un!==null)return un;if(!(0,Nu.existsSync)(qu))return un={...Hg},un;try{let t=(0,Nu.readFileSync)(qu,"utf-8"),e=JSON.parse(t);return un={...Hg,...e},un}catch{return un={...Hg},un}}function bS(){let t=LD();return`http://${t.workerBind}:${t.workerPort}`}var Nu,Hg,un,wS=x(()=>{"use strict";Nu=require("node:fs");Or();Hg={workerPort:er,workerBind:us,chromaDbUrl:"http://localhost:8000",chromaDbEnabled:!0,recencyWindowDays:90,retentionDays:365,tddEnabled:!0,fileLengthWarn:300,fileLengthCritical:500,testFilePatterns:["*.test.ts","*.spec.ts","*_test.go","test_*.py"],toolRedirectRules:[],aiProvider:null,aiModel:null,aiCompressionTimeoutMs:15e3,aiCompressionMaxRetries:3,aiSkipTools:[],secretDetectionEnabled:!0,secretPatterns:[],contextTokenBudget:2e3,notificationsEnabled:!1},un=null});var xS={};pn(xS,{runStartMcp:()=>UD});async function UD(){let t=bS(),e=()=>vS(no),r=new Ga(t,e);await r.isWorkerAvailable()||(process.stderr.write(`Error: Worker not reachable at ${t}
|
|
52
|
+
`)}});function qD(t){return typeof t=="object"&&t!==null&&"token"in t&&typeof t.token=="string"&&"pid"in t&&typeof t.pid=="number"}function DD(t){try{return process.kill(t,0),!0}catch{return!1}}function vS(t){try{let e=(0,_S.readFileSync)(t,"utf-8");if(e.trim().length===0)return null;let r=JSON.parse(e);return!qD(r)||!DD(r.pid)?null:r.token}catch{return null}}var _S,$S=x(()=>{"use strict";_S=require("node:fs")});function LD(){if(un!==null)return un;if(!(0,Nu.existsSync)(qu))return un={...Hg},un;try{let t=(0,Nu.readFileSync)(qu,"utf-8"),e=JSON.parse(t);return un={...Hg,...e},un}catch{return un={...Hg},un}}function bS(){let t=LD();return`http://${t.workerBind}:${t.workerPort}`}var Nu,Hg,un,wS=x(()=>{"use strict";Nu=require("node:fs");Or();Hg={workerPort:er,workerBind:us,chromaDbUrl:"http://localhost:8000",chromaDbEnabled:!0,recencyWindowDays:90,retentionDays:365,tddEnabled:!0,fileLengthWarn:300,fileLengthCritical:500,testFilePatterns:["*.test.ts","*.spec.ts","*_test.go","test_*.py"],toolRedirectRules:[],aiProvider:null,aiModel:null,aiCompressionTimeoutMs:15e3,aiCompressionMaxRetries:3,aiSkipTools:[],secretDetectionEnabled:!0,secretPatterns:[],contextTokenBudget:2e3,notificationsEnabled:!1,debugEnabled:!1},un=null});var xS={};pn(xS,{runStartMcp:()=>UD});async function UD(){let t=bS(),e=()=>vS(no),r=new Ga(t,e);await r.isWorkerAvailable()||(process.stderr.write(`Error: Worker not reachable at ${t}
|
|
53
53
|
Run 'opencode-metis start' first to start the worker.
|
|
54
54
|
`),process.exit(1));let o=gS(r),s=new Ba;await o.connect(s)}var kS=x(()=>{"use strict";Vv();Fv();yS();$S();wS();Or()});cs();var SS=`opencode-metis - Persistent memory for OpenCode
|
|
55
55
|
|
package/dist/mcp-server.cjs
CHANGED
|
@@ -47,5 +47,5 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
47
47
|
]))`;continue}}if(r.s&&n[c]==="."){o+=i?`${n[c]}\r
|
|
48
48
|
`:`[${n[c]}\r
|
|
49
49
|
]`;continue}o+=n[c],n[c]==="\\"?s=!0:i&&n[c]==="]"?i=!1:!i&&n[c]==="["&&(i=!0)}try{new RegExp(o)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),t.source}return o}function ya(t,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&t.keyType?._def.typeName===S.ZodEnum)return{type:"object",required:t.keyType._def.values,properties:t.keyType._def.values.reduce((n,o)=>({...n,[o]:Z(t.valueType._def,{...e,currentPath:[...e.currentPath,"properties",o]})??Pe(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:Z(t.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(t.keyType?._def.typeName===S.ZodString&&t.keyType._def.checks?.length){let{type:n,...o}=ga(t.keyType._def,e);return{...r,propertyNames:o}}else{if(t.keyType?._def.typeName===S.ZodEnum)return{...r,propertyNames:{enum:t.keyType._def.values}};if(t.keyType?._def.typeName===S.ZodBranded&&t.keyType._def.type._def.typeName===S.ZodString&&t.keyType._def.type._def.checks?.length){let{type:n,...o}=ha(t.keyType._def,e);return{...r,propertyNames:o}}}return r}function Ty(t,e){if(e.mapStrategy==="record")return ya(t,e);let r=Z(t.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||Pe(e),n=Z(t.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||Pe(e);return{type:"array",maxItems:125,items:{type:"array",items:[r,n],minItems:2,maxItems:2}}}function Ry(t){let e=t.values,n=Object.keys(t.values).filter(s=>typeof e[e[s]]!="number").map(s=>e[s]),o=Array.from(new Set(n.map(s=>typeof s)));return{type:o.length===1?o[0]==="string"?"string":"number":["string","number"],enum:n}}function Iy(t){return t.target==="openAi"?void 0:{not:Pe({...t,currentPath:[...t.currentPath,"not"]})}}function Oy(t){return t.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var ls={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function jy(t,e){if(e.target==="openApi3")return Ny(t,e);let r=t.options instanceof Map?Array.from(t.options.values()):t.options;if(r.every(n=>n._def.typeName in ls&&(!n._def.checks||!n._def.checks.length))){let n=r.reduce((o,s)=>{let i=ls[s._def.typeName];return i&&!o.includes(i)?[...o,i]:o},[]);return{type:n.length>1?n:n[0]}}else if(r.every(n=>n._def.typeName==="ZodLiteral"&&!n.description)){let n=r.reduce((o,s)=>{let i=typeof s._def.value;switch(i){case"string":case"number":case"boolean":return[...o,i];case"bigint":return[...o,"integer"];case"object":if(s._def.value===null)return[...o,"null"];default:return o}},[]);if(n.length===r.length){let o=n.filter((s,i,a)=>a.indexOf(s)===i);return{type:o.length>1?o:o[0],enum:r.reduce((s,i)=>s.includes(i._def.value)?s:[...s,i._def.value],[])}}}else if(r.every(n=>n._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((n,o)=>[...n,...o._def.values.filter(s=>!n.includes(s))],[])};return Ny(t,e)}var Ny=(t,e)=>{let r=(t.options instanceof Map?Array.from(t.options.values()):t.options).map((n,o)=>Z(n._def,{...e,currentPath:[...e.currentPath,"anyOf",`${o}`]})).filter(n=>!!n&&(!e.strictUnions||typeof n=="object"&&Object.keys(n).length>0));return r.length?{anyOf:r}:void 0};function Cy(t,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(t.innerType._def.typeName)&&(!t.innerType._def.checks||!t.innerType._def.checks.length))return e.target==="openApi3"?{type:ls[t.innerType._def.typeName],nullable:!0}:{type:[ls[t.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let n=Z(t.innerType._def,{...e,currentPath:[...e.currentPath]});return n&&"$ref"in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let r=Z(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function My(t,e){let r={type:"number"};if(!t.checks)return r;for(let n of t.checks)switch(n.kind){case"int":r.type="integer",gd(r,"type",n.message,e);break;case"min":e.target==="jsonSchema7"?n.inclusive?ee(r,"minimum",n.value,n.message,e):ee(r,"exclusiveMinimum",n.value,n.message,e):(n.inclusive||(r.exclusiveMinimum=!0),ee(r,"minimum",n.value,n.message,e));break;case"max":e.target==="jsonSchema7"?n.inclusive?ee(r,"maximum",n.value,n.message,e):ee(r,"exclusiveMaximum",n.value,n.message,e):(n.inclusive||(r.exclusiveMaximum=!0),ee(r,"maximum",n.value,n.message,e));break;case"multipleOf":ee(r,"multipleOf",n.value,n.message,e);break}return r}function Ay(t,e){let r=e.target==="openAi",n={type:"object",properties:{}},o=[],s=t.shape();for(let a in s){let c=s[a];if(c===void 0||c._def===void 0)continue;let u=uE(c);u&&r&&(c._def.typeName==="ZodOptional"&&(c=c._def.innerType),c.isNullable()||(c=c.nullable()),u=!1);let l=Z(c._def,{...e,currentPath:[...e.currentPath,"properties",a],propertyPath:[...e.currentPath,"properties",a]});l!==void 0&&(n.properties[a]=l,u||o.push(a))}o.length&&(n.required=o);let i=cE(t,e);return i!==void 0&&(n.additionalProperties=i),n}function cE(t,e){if(t.catchall._def.typeName!=="ZodNever")return Z(t.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(t.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function uE(t){try{return t.isOptional()}catch{return!0}}var Zy=(t,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return Z(t.innerType._def,e);let r=Z(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Pe(e)},r]}:Pe(e)};var qy=(t,e)=>{if(e.pipeStrategy==="input")return Z(t.in._def,e);if(e.pipeStrategy==="output")return Z(t.out._def,e);let r=Z(t.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),n=Z(t.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,n].filter(o=>o!==void 0)}};function Dy(t,e){return Z(t.type._def,e)}function Ly(t,e){let n={type:"array",uniqueItems:!0,items:Z(t.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return t.minSize&&ee(n,"minItems",t.minSize.value,t.minSize.message,e),t.maxSize&&ee(n,"maxItems",t.maxSize.value,t.maxSize.message,e),n}function Vy(t,e){return t.rest?{type:"array",minItems:t.items.length,items:t.items.map((r,n)=>Z(r._def,{...e,currentPath:[...e.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[]),additionalItems:Z(t.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:t.items.length,maxItems:t.items.length,items:t.items.map((r,n)=>Z(r._def,{...e,currentPath:[...e.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[])}}function Uy(t){return{not:Pe(t)}}function Fy(t){return Pe(t)}var Hy=(t,e)=>Z(t.innerType._def,e);var Ky=(t,e,r)=>{switch(e){case S.ZodString:return ga(t,r);case S.ZodNumber:return My(t,r);case S.ZodObject:return Ay(t,r);case S.ZodBigInt:return $y(t,r);case S.ZodBoolean:return by();case S.ZodDate:return yd(t,r);case S.ZodUndefined:return Uy(r);case S.ZodNull:return Oy(r);case S.ZodArray:return vy(t,r);case S.ZodUnion:case S.ZodDiscriminatedUnion:return jy(t,r);case S.ZodIntersection:return Py(t,r);case S.ZodTuple:return Vy(t,r);case S.ZodRecord:return ya(t,r);case S.ZodLiteral:return Ey(t,r);case S.ZodEnum:return Sy(t);case S.ZodNativeEnum:return Ry(t);case S.ZodNullable:return Cy(t,r);case S.ZodOptional:return Zy(t,r);case S.ZodMap:return Ty(t,r);case S.ZodSet:return Ly(t,r);case S.ZodLazy:return()=>t.getter()._def;case S.ZodPromise:return Dy(t,r);case S.ZodNaN:case S.ZodNever:return Iy(r);case S.ZodEffects:return ky(t,r);case S.ZodAny:return Pe(r);case S.ZodUnknown:return Fy(r);case S.ZodDefault:return xy(t,r);case S.ZodBranded:return ha(t,r);case S.ZodReadonly:return Hy(t,r);case S.ZodCatch:return wy(t,r);case S.ZodPipeline:return qy(t,r);case S.ZodFunction:case S.ZodVoid:case S.ZodSymbol:return;default:return(n=>{})(e)}};function Z(t,e,r=!1){let n=e.seen.get(t);if(e.override){let a=e.override?.(t,e,n,r);if(a!==gy)return a}if(n&&!r){let a=lE(n,e);if(a!==void 0)return a}let o={def:t,path:e.currentPath,jsonSchema:void 0};e.seen.set(t,o);let s=Ky(t,t.typeName,e),i=typeof s=="function"?Z(s(),e):s;if(i&&dE(t,e,i),e.postProcess){let a=e.postProcess(i,t,e);return o.jsonSchema=i,a}return o.jsonSchema=i,i}var lE=(t,e)=>{switch(e.$refStrategy){case"root":return{$ref:t.path.join("/")};case"relative":return{$ref:ma(e.currentPath,t.path)};case"none":case"seen":return t.path.length<e.currentPath.length&&t.path.every((r,n)=>e.currentPath[n]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),Pe(e)):e.$refStrategy==="seen"?Pe(e):void 0}},dE=(t,e,r)=>(t.description&&(r.description=t.description,e.markdownDescription&&(r.markdownDescription=t.description)),r);var $d=(t,e)=>{let r=_y(e),n=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((c,[u,l])=>({...c,[u]:Z(l._def,{...r,currentPath:[...r.basePath,r.definitionPath,u]},!0)??Pe(r)}),{}):void 0,o=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,s=Z(t._def,o===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,o]},!1)??Pe(r),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(s.title=i),r.flags.hasReferencedOpenAiAnyType&&(n||(n={}),n[r.openAiAnyTypeName]||(n[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let a=o===void 0?n?{...s,[r.definitionPath]:n}:s:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,o].join("/"),[r.definitionPath]:{...n,[o]:s}};return r.target==="jsonSchema7"?a.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(a.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in a||"oneOf"in a||"allOf"in a||"type"in a&&Array.isArray(a.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),a};function fE(t){return!t||t==="jsonSchema7"||t==="draft-7"?"draft-7":t==="jsonSchema2019-09"||t==="draft-2020-12"?"draft-2020-12":"draft-7"}function bd(t,e){return wt(t)?Ml(t,{target:fE(e?.target),io:e?.pipeStrategy??"input"}):$d(t,{strictUnions:e?.strictUnions??!0,pipeStrategy:e?.pipeStrategy??"input"})}function wd(t){let r=Er(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=pa(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function xd(t,e){let r=Pr(t,e);if(!r.success)throw r.error;return r.data}var pE=6e4,_a=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(qi,r=>{this._oncancel(r)}),this.setNotificationHandler(Li,r=>{this._onprogress(r)}),this.setRequestHandler(Di,r=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Vi,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new I(C.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(Fi,async(r,n)=>{let o=async()=>{let s=r.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(a.type==="response"||a.type==="error"){let c=a.message,u=c.id,l=this._requestResolvers.get(u);if(l)if(this._requestResolvers.delete(u),a.type==="response")l(c);else{let d=c,h=new I(d.error.code,d.error.message,d.error.data);l(h)}else{let d=a.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${u}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let i=await this._taskStore.getTask(s,n.sessionId);if(!i)throw new I(C.InvalidParams,`Task not found: ${s}`);if(!zr(i.status))return await this._waitForTaskUpdate(s,n.signal),await o();if(zr(i.status)){let a=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s),{...a,_meta:{...a._meta,[br]:{taskId:s}}}}return await o()};return await o()}),this.setRequestHandler(Hi,async(r,n)=>{try{let{tasks:o,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:s,_meta:{}}}catch(o){throw new I(C.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(Bi,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new I(C.InvalidParams,`Task not found: ${r.params.taskId}`);if(zr(o.status))throw new I(C.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new I(C.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(o){throw o instanceof I?o:new I(C.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(e){if(!e.params.requestId)return;this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,r,n,o,s=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:o})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),I.fromError(C.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let o=this._transport?.onmessage;this._transport.onmessage=(s,i)=>{o?.(s,i),Qo(s)||Fg(s)?this._onresponse(s):Jl(s)?this._onrequest(s,i):Ug(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=I.fromError(C.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of e.values())n(r)}_onerror(e){this.onerror?.(e)}_onnotification(e){let r=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(e)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(e,r){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,o=this._transport,s=e.params?._meta?.[br]?.taskId;if(n===void 0){let l={jsonrpc:"2.0",id:e.id,error:{code:C.MethodNotFound,message:"Method not found"}};s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:l,timestamp:Date.now()},o?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):o?.send(l).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let i=new AbortController;this._requestHandlerAbortControllers.set(e.id,i);let a=Dg(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,o?.sessionId):void 0,u={signal:i.signal,sessionId:o?.sessionId,_meta:e.params?._meta,sendNotification:async l=>{if(i.signal.aborted)return;let d={relatedRequestId:e.id};s&&(d.relatedTask={taskId:s}),await this.notification(l,d)},sendRequest:async(l,d,h)=>{if(i.signal.aborted)throw new I(C.ConnectionClosed,"Request was cancelled");let m={...h,relatedRequestId:e.id};s&&!m.relatedTask&&(m.relatedTask={taskId:s});let f=m.relatedTask?.taskId??s;return f&&c&&await c.updateTaskStatus(f,"input_required"),await this.request(l,d,m)},authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo,taskId:s,taskStore:c,taskRequestedTtl:a?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{a&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,u)).then(async l=>{if(i.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:e.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:d,timestamp:Date.now()},o?.sessionId):await o?.send(d)},async l=>{if(i.signal.aborted)return;let d={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(l.code)?l.code:C.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"error",message:d,timestamp:Date.now()},o?.sessionId):await o?.send(d)}).catch(l=>this._onerror(new Error(`Failed to send response: ${l}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...n}=e.params,o=Number(r),s=this._progressHandlers.get(o);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(o),a=this._timeoutInfo.get(o);if(a&&i&&a.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),i(c);return}s(n)}_onresponse(e){let r=Number(e.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),Qo(e))n(e);else{let i=new I(e.error.code,e.error.message,e.error.data);n(i)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(Qo(e)&&e.result&&typeof e.result=="object"){let i=e.result;if(i.task&&typeof i.task=="object"){let a=i.task;typeof a.taskId=="string"&&(s=!0,this._taskProgressTokens.set(a.taskId,r))}}if(s||this._progressHandlers.delete(r),Qo(e))o(e);else{let i=I.fromError(e.error.code,e.error.message,e.error.data);o(i)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(e,r,n)}}catch(i){yield{type:"error",error:i instanceof I?i:new I(C.InternalError,String(i))}}return}let s;try{let i=await this.request(e,Un,n);if(i.task)s=i.task.taskId,yield{type:"taskCreated",task:i.task};else throw new I(C.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:a},zr(a.status)){a.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:a.status==="failed"?yield{type:"error",error:new I(C.InternalError,`Task ${s} failed`)}:a.status==="cancelled"&&(yield{type:"error",error:new I(C.InternalError,`Task ${s} was cancelled`)});return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let c=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(u=>setTimeout(u,c)),n?.signal?.throwIfAborted()}}catch(i){yield{type:"error",error:i instanceof I?i:new I(C.InternalError,String(i))}}}request(e,r,n){let{relatedRequestId:o,resumptionToken:s,onresumptiontoken:i,task:a,relatedTask:c}=n??{};return new Promise((u,l)=>{let d=$=>{l($)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),a&&this.assertTaskCapability(e.method)}catch($){d($);return}n?.signal?.throwIfAborted();let h=this._requestMessageId++,m={...e,jsonrpc:"2.0",id:h};n?.onprogress&&(this._progressHandlers.set(h,n.onprogress),m.params={...e.params,_meta:{...e.params?._meta||{},progressToken:h}}),a&&(m.params={...m.params,task:a}),c&&(m.params={...m.params,_meta:{...m.params?._meta||{},[br]:c}});let f=$=>{this._responseHandlers.delete(h),this._progressHandlers.delete(h),this._cleanupTimeout(h),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:h,reason:String($)}},{relatedRequestId:o,resumptionToken:s,onresumptiontoken:i}).catch(P=>this._onerror(new Error(`Failed to send cancellation: ${P}`)));let w=$ instanceof I?$:new I(C.RequestTimeout,String($));l(w)};this._responseHandlers.set(h,$=>{if(!n?.signal?.aborted){if($ instanceof Error)return l($);try{let w=Pr(r,$.result);w.success?u(w.data):l(w.error)}catch(w){l(w)}}}),n?.signal?.addEventListener("abort",()=>{f(n?.signal?.reason)});let p=n?.timeout??pE,g=()=>f(I.fromError(C.RequestTimeout,"Request timed out",{timeout:p}));this._setupTimeout(h,p,n?.maxTotalTimeout,g,n?.resetTimeoutOnProgress??!1);let y=c?.taskId;if(y){let $=w=>{let P=this._responseHandlers.get(h);P?P(w):this._onerror(new Error(`Response handler missing for side-channeled request ${h}`))};this._requestResolvers.set(h,$),this._enqueueTaskMessage(y,{type:"request",message:m,timestamp:Date.now()}).catch(w=>{this._cleanupTimeout(h),l(w)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:s,onresumptiontoken:i}).catch($=>{this._cleanupTimeout(h),l($)})})}async getTask(e,r){return this.request({method:"tasks/get",params:e},Ui,r)}async getTaskResult(e,r,n){return this.request({method:"tasks/result",params:e},r,n)}async listTasks(e,r){return this.request({method:"tasks/list",params:e},Ki,r)}async cancelTask(e,r){return this.request({method:"tasks/cancel",params:e},Bg,r)}async notification(e,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(e.method);let n=r?.relatedTask?.taskId;if(n){let a={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[br]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let a={...e,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[br]:r.relatedTask}}}),this._transport?.send(a,r).catch(c=>this._onerror(c))});return}let i={...e,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[br]:r.relatedTask}}}),await this._transport.send(i,r)}setRequestHandler(e,r){let n=wd(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,s)=>{let i=xd(e,o);return Promise.resolve(r(i,s))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){let n=wd(e);this._notificationHandlers.set(n,o=>{let s=xd(e,o);return Promise.resolve(r(s))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let r=this._taskProgressTokens.get(e);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,r,n,o)}async _clearTaskQueue(e,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,r);for(let o of n)if(o.type==="request"&&Jl(o.message)){let s=o.message.id,i=this._requestResolvers.get(s);i?(i(new I(C.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,r){let n=this._options?.defaultTaskPollInterval??1e3;try{let o=await this._taskStore?.getTask(e);o?.pollInterval&&(n=o.pollInterval)}catch{}return new Promise((o,s)=>{if(r.aborted){s(new I(C.InvalidRequest,"Request cancelled"));return}let i=setTimeout(o,n);r.addEventListener("abort",()=>{clearTimeout(i),s(new I(C.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!e)throw new Error("No request provided");return await n.createTask(o,e.id,{method:e.method,params:e.params},r)},getTask:async o=>{let s=await n.getTask(o,r);if(!s)throw new I(C.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(o,s,i)=>{await n.storeTaskResult(o,s,i,r);let a=await n.getTask(o,r);if(a){let c=os.parse({method:"notifications/tasks/status",params:a});await this.notification(c),zr(a.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,s,i)=>{let a=await n.getTask(o,r);if(!a)throw new I(C.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(zr(a.status))throw new I(C.InvalidParams,`Cannot update task "${o}" from terminal status "${a.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,s,i,r);let c=await n.getTask(o,r);if(c){let u=os.parse({method:"notifications/tasks/status",params:c});await this.notification(u),zr(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function By(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Gy(t,e){let r={...t};for(let n in e){let o=n,s=e[o];if(s===void 0)continue;let i=r[o];By(i)&&By(s)?r[o]={...i,...s}:r[o]=s}return r}var G0=Dc($$(),1),J0=Dc(B0(),1);function QM(){let t=new G0.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,J0.default)(t),t}var Rc=class{constructor(e){this._ajv=e??QM()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var Ic=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,n){return this._server.getTaskResult({taskId:e},r,n)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}};function W0(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function X0(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var Oc=class extends _a{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(is.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new Rc,this.setRequestHandler(Yl,n=>this._oninitialize(n)),this.setNotificationHandler(Ql,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(id,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:i}=n.params,a=is.safeParse(i);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Ic(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Gy(this._capabilities,e)}setRequestHandler(e,r){let o=Er(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let s;if(wt(o)){let a=o;s=a._zod?.def?.value??a.value}else{let a=o;s=a._def?.value??a.value}if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let a=async(c,u)=>{let l=Pr(Hn,c);if(!l.success){let f=l.error instanceof Error?l.error.message:String(l.error);throw new I(C.InvalidParams,`Invalid tools/call request: ${f}`)}let{params:d}=l.data,h=await Promise.resolve(r(c,u));if(d.task){let f=Pr(Un,h);if(!f.success){let p=f.error instanceof Error?f.error.message:String(f.error);throw new I(C.InvalidParams,`Invalid task creation result: ${p}`)}return f.data}let m=Pr(ea,h);if(!m.success){let f=m.error instanceof Error?m.error.message:String(m.error);throw new I(C.InvalidParams,`Invalid tools/call result: ${f}`)}return m.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){X0(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&W0(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Ag.includes(r)?r:Bl,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Zi)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(u=>u.type==="tool_result"),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],c=a.some(u=>u.type==="tool_use");if(s){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},cd,r):this.request({method:"sampling/createMessage",params:e},ad,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=e;return this.request({method:"elicitation/create",params:o},ta,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=e.mode==="form"?e:{...e,mode:"form"},s=await this.request({method:"elicitation/create",params:o},ta,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!a.valid)throw new I(C.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(i){throw i instanceof I?i:new I(C.InternalError,`Error validating elicitation response: ${i instanceof Error?i.message:String(i)}`)}return s}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},ud,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var Q0=Symbol.for("mcp.completable");function Gm(t){return!!t&&typeof t=="object"&&Q0 in t}function ew(t){return t[Q0]?.complete}var Y0;(function(t){t.Completable="McpCompletable"})(Y0||(Y0={}));var eA=/^[A-Za-z0-9._-]{1,128}$/;function tA(t){let e=[];if(t.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(t.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${t.length})`]};if(t.includes(" ")&&e.push("Tool name contains spaces, which may cause parsing issues"),t.includes(",")&&e.push("Tool name contains commas, which may cause parsing issues"),(t.startsWith("-")||t.endsWith("-"))&&e.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(t.startsWith(".")||t.endsWith("."))&&e.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!eA.test(t)){let r=t.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,s)=>s.indexOf(n)===o);return e.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:e}}return{isValid:!0,warnings:e}}function rA(t,e){if(e.length>0){console.warn(`Tool name validation warning for "${t}":`);for(let r of e)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function Jm(t){let e=tA(t);return rA(t,e.warnings),e.isValid}var Nc=class{constructor(e){this._mcpServer=e}registerToolTask(e,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}};var jc=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Oc(e,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Nc(this)}),this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(Fr(Qi)),this.server.assertCanSetRequestHandler(Fr(Hn)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Qi,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let n={name:e,title:r.title,description:r.description,inputSchema:(()=>{let o=eo(r.inputSchema);return o?bd(o,{strictUnions:!0,pipeStrategy:"input"}):nA})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=eo(r.outputSchema);o&&(n.outputSchema=bd(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(Hn,async(e,r)=>{try{let n=this._registeredTools[e.params.name];if(!n)throw new I(C.InvalidParams,`Tool ${e.params.name} not found`);if(!n.enabled)throw new I(C.InvalidParams,`Tool ${e.params.name} disabled`);let o=!!e.params.task,s=n.execution?.taskSupport,i="createTask"in n.handler;if((s==="required"||s==="optional")&&!i)throw new I(C.InternalError,`Tool ${e.params.name} has taskSupport '${s}' but was not registered with registerToolTask`);if(s==="required"&&!o)throw new I(C.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if(s==="optional"&&!o&&i)return await this.handleAutomaticTaskPolling(n,e,r);let a=await this.validateToolInput(n,e.params.arguments,e.params.name),c=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,c,e.params.name),c}catch(n){if(n instanceof I&&n.code===C.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(e){return{content:[{type:"text",text:e}],isError:!0}}async validateToolInput(e,r,n){if(!e.inputSchema)return;let s=eo(e.inputSchema)??e.inputSchema,i=await da(s,r);if(!i.success){let a="error"in i?i.error:"Unknown error",c=fa(a);throw new I(C.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${c}`)}return i.data}async validateToolOutput(e,r,n){if(!e.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new I(C.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=eo(e.outputSchema),s=await da(o,r.structuredContent);if(!s.success){let i="error"in s?s.error:"Unknown error",a=fa(i);throw new I(C.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(e,r,n){let o=e.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let i={...n,taskStore:n.taskStore};if(e.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,i))}else{let a=o;return await Promise.resolve(a.createTask(i))}}if(e.inputSchema){let i=o;return await Promise.resolve(i(r,n))}else{let i=o;return await Promise.resolve(i(n))}}async handleAutomaticTaskPolling(e,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(e,r.params.arguments,r.params.name),s=e.handler,i={...n,taskStore:n.taskStore},a=o?await Promise.resolve(s.createTask(o,i)):await Promise.resolve(s.createTask(i)),c=a.task.taskId,u=a.task,l=u.pollInterval??5e3;for(;u.status!=="completed"&&u.status!=="failed"&&u.status!=="cancelled";){await new Promise(h=>setTimeout(h,l));let d=await n.taskStore.getTask(c);if(!d)throw new I(C.InternalError,`Task ${c} not found during polling`);u=d}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(Fr(ra)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(ra,async e=>{switch(e.params.ref.type){case"ref/prompt":return Qg(e),this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return ey(e),this.handleResourceCompletion(e,e.params.ref);default:throw new I(C.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let n=this._registeredPrompts[r.name];if(!n)throw new I(C.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new I(C.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return mi;let s=Er(n.argsSchema)?.[e.params.argument.name];if(!Gm(s))return mi;let i=ew(s);if(!i)return mi;let a=await i(e.params.argument.value,e.params.context);return rw(a)}async handleResourceCompletion(e,r){let n=Object.values(this._registeredResourceTemplates).find(i=>i.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return mi;throw new I(C.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(e.params.argument.name);if(!o)return mi;let s=await o(e.params.argument.value,e.params.context);return rw(s)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(Fr(Gi)),this.server.assertCanSetRequestHandler(Fr(Ji)),this.server.assertCanSetRequestHandler(Fr(Wi)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Gi,async(e,r)=>{let n=Object.entries(this._registeredResources).filter(([s,i])=>i.enabled).map(([s,i])=>({uri:s,name:i.name,...i.metadata})),o=[];for(let s of Object.values(this._registeredResourceTemplates)){if(!s.resourceTemplate.listCallback)continue;let i=await s.resourceTemplate.listCallback(r);for(let a of i.resources)o.push({...s.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Ji,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Wi,async(e,r)=>{let n=new URL(e.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new I(C.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let s of Object.values(this._registeredResourceTemplates)){let i=s.resourceTemplate.uriTemplate.match(n.toString());if(i)return s.readCallback(n,i,r)}throw new I(C.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(Fr(Xi)),this.server.assertCanSetRequestHandler(Fr(Yi)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Xi,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?sA(r.argsSchema):void 0}))})),this.server.setRequestHandler(Yi,async(e,r)=>{let n=this._registeredPrompts[e.params.name];if(!n)throw new I(C.InvalidParams,`Prompt ${e.params.name} not found`);if(!n.enabled)throw new I(C.InvalidParams,`Prompt ${e.params.name} disabled`);if(n.argsSchema){let o=eo(n.argsSchema),s=await da(o,e.params.arguments);if(!s.success){let c="error"in s?s.error:"Unknown error",u=fa(c);throw new I(C.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${u}`)}let i=s.data,a=n.callback;return await Promise.resolve(a(i,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(e,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let s=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let i=this._createRegisteredResourceTemplate(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}registerResource(e,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}_createRegisteredResource(e,r,n,o,s){let i={name:e,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=i)),typeof a.name<"u"&&(i.name=a.name),typeof a.title<"u"&&(i.title=a.title),typeof a.metadata<"u"&&(i.metadata=a.metadata),typeof a.callback<"u"&&(i.readCallback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=i,i}_createRegisteredResourceTemplate(e,r,n,o,s){let i={resourceTemplate:n,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredResourceTemplates[e],u.name&&(this._registeredResourceTemplates[u.name]=i)),typeof u.title<"u"&&(i.title=u.title),typeof u.template<"u"&&(i.resourceTemplate=u.template),typeof u.metadata<"u"&&(i.metadata=u.metadata),typeof u.callback<"u"&&(i.readCallback=u.callback),typeof u.enabled<"u"&&(i.enabled=u.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=i;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(u=>!!n.completeCallback(u))&&this.setCompletionRequestHandler(),i}_createRegisteredPrompt(e,r,n,o,s){let i={title:r,description:n,argsSchema:o===void 0?void 0:_n(o),callback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==e&&(delete this._registeredPrompts[e],a.name&&(this._registeredPrompts[a.name]=i)),typeof a.title<"u"&&(i.title=a.title),typeof a.description<"u"&&(i.description=a.description),typeof a.argsSchema<"u"&&(i.argsSchema=_n(a.argsSchema)),typeof a.callback<"u"&&(i.callback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=i,o&&Object.values(o).some(c=>{let u=c instanceof st?c._def?.innerType:c;return Gm(u)})&&this.setCompletionRequestHandler(),i}_createRegisteredTool(e,r,n,o,s,i,a,c,u){Jm(e);let l={title:r,description:n,inputSchema:tw(o),outputSchema:tw(s),annotations:i,execution:a,_meta:c,handler:u,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==e&&(typeof d.name=="string"&&Jm(d.name),delete this._registeredTools[e],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=_n(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=_n(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let n,o,s,i;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let c=r[0];Wm(c)?(o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Wm(r[0])&&(i=r.shift())):typeof c=="object"&&c!==null&&(i=r.shift())}let a=r[0];return this._createRegisteredTool(e,void 0,n,o,s,i,{taskSupport:"forbidden"},void 0,a)}registerTool(e,r,n){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:o,description:s,inputSchema:i,outputSchema:a,annotations:c,_meta:u}=r;return this._createRegisteredTool(e,o,s,i,a,c,{taskSupport:"forbidden"},u,n)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let s=r[0],i=this._createRegisteredPrompt(e,void 0,n,o,s);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),i}registerPrompt(e,r,n){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:o,description:s,argsSchema:i}=r,a=this._createRegisteredPrompt(e,o,s,i,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var nA={type:"object",properties:{}};function nw(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function oA(t){return"_def"in t||"_zod"in t||nw(t)}function Wm(t){return typeof t!="object"||t===null||oA(t)?!1:Object.keys(t).length===0?!0:Object.values(t).some(nw)}function tw(t){if(t)return Wm(t)?_n(t):t}function sA(t){let e=Er(t);return e?Object.entries(e).map(([r,n])=>{let o=py(n),s=my(n);return{name:r,description:o,required:!s}}):[]}function Fr(t){let r=Er(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=pa(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function rw(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var mi={completion:{values:[],hasMore:!1}};console.log=(...t)=>{process.stderr.write(`${t.map(String).join(" ")}
|
|
50
|
-
`)};function jo(t){return{content:[{type:"text",text:JSON.stringify(t,null,2)}]}}function Co(t){return{content:[{type:"text",text:t}],isError:!0}}function ow(t){let e=new jc({name:"mem-search",version:"0.1.0"},{capabilities:{tools:{}}});return e.registerTool("search",{description:"Search memory observations using semantic or keyword search",inputSchema:{query:Ne.string().describe("The search query"),limit:Ne.number().int().positive().optional().describe("Maximum number of results to return"),type:Ne.string().optional().describe("Filter by observation type (decision, bugfix, feature, etc.)"),project:Ne.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query};r.limit!==void 0&&(n.limit=r.limit),r.type!==void 0&&(n.type=r.type),r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return jo(o)}catch(n){return Co(`Search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("timeline",{description:"Get chronological context around an observation",inputSchema:{anchor:Ne.string().describe("Observation ID, session ID, timestamp, or query to anchor the timeline"),depth_before:Ne.number().int().nonnegative().optional().describe("Number of entries before the anchor"),depth_after:Ne.number().int().nonnegative().optional().describe("Number of entries after the anchor")}},async r=>{try{let n={anchor:r.anchor};r.depth_before!==void 0&&(n.depth_before=r.depth_before),r.depth_after!==void 0&&(n.depth_after=r.depth_after);let o=await t.timeline(n);return jo(o)}catch(n){return Co(`Timeline failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("get_observations",{description:"Get full details for specific observation IDs",inputSchema:{ids:Ne.array(Ne.number().int().positive()).describe("Array of observation IDs to fetch")}},async r=>{try{let n=await t.getObservations({ids:r.ids});return jo(n)}catch(n){return Co(`Get observations failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("save_memory",{description:"Save a new memory observation",inputSchema:{text:Ne.string().describe("The observation text to save"),title:Ne.string().optional().describe("Optional title for the observation"),project:Ne.string().optional().describe("Optional project name to associate the observation with")}},async r=>{try{let n={text:r.text};r.title!==void 0&&(n.title=r.title),r.project!==void 0&&(n.project=r.project);let o=await t.saveMemory(n);return jo(o)}catch(n){return Co(`Save memory failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("decisions",{description:"Search for decision-type observations",inputSchema:{query:Ne.string().optional().describe("Optional search query (defaults to all decisions)"),project:Ne.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query??"*",type:"decision"};r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return jo(o)}catch(n){return Co(`Decisions search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("changes",{description:"Search for recent change-type observations",inputSchema:{project:Ne.string().optional().describe("Filter by project name"),limit:Ne.number().int().positive().optional().describe("Maximum number of results to return")}},async r=>{try{let n={query:"*",type:"change"};r.project!==void 0&&(n.project=r.project),r.limit!==void 0&&(n.limit=r.limit);let o=await t.search(n);return jo(o)}catch(n){return Co(`Changes search failed: ${n instanceof Error?n.message:String(n)}`)}}),e}var sw=require("node:fs");function iA(t){return typeof t=="object"&&t!==null&&"token"in t&&typeof t.token=="string"&&"pid"in t&&typeof t.pid=="number"}function aA(t){try{return process.kill(t,0),!0}catch{return!1}}function iw(t){try{let e=(0,sw.readFileSync)(t,"utf-8");if(e.trim().length===0)return null;let r=JSON.parse(e);return!iA(r)||!aA(r.pid)?null:r.token}catch{return null}}var Mc=require("node:fs");var Xm=require("node:os"),Hr=require("node:path"),aw=41777,cw="127.0.0.1",cA=(0,Hr.join)((0,Xm.homedir)(),".config","opencode"),xV=(0,Hr.join)(cA,"opencode.json"),Cc=(0,Hr.join)((0,Xm.homedir)(),".config","opencode","memory"),uA="memory.db",lA="settings.json",uw=(0,Hr.join)(Cc,"worker.pid");var kV=(0,Hr.join)(Cc,uA),Ym=(0,Hr.join)(Cc,lA),SV=(0,Hr.join)(Cc,"logs");var Qm={workerPort:aw,workerBind:cw,chromaDbUrl:"http://localhost:8000",chromaDbEnabled:!0,recencyWindowDays:90,retentionDays:365,tddEnabled:!0,fileLengthWarn:300,fileLengthCritical:500,testFilePatterns:["*.test.ts","*.spec.ts","*_test.go","test_*.py"],toolRedirectRules:[],aiProvider:null,aiModel:null,aiCompressionTimeoutMs:15e3,aiCompressionMaxRetries:3,aiSkipTools:[],secretDetectionEnabled:!0,secretPatterns:[],contextTokenBudget:2e3,notificationsEnabled:!1},Kr=null;function dA(){if(Kr!==null)return Kr;if(!(0,Mc.existsSync)(Ym))return Kr={...Qm},Kr;try{let t=(0,Mc.readFileSync)(Ym,"utf-8"),e=JSON.parse(t);return Kr={...Qm,...e},Kr}catch{return Kr={...Qm},Kr}}function lw(){let t=dA();return`http://${t.workerBind}:${t.workerPort}`}async function fA(){let t=lw(),e=iw(uw),r=new sa(t,e),n=ow(r),o=new oa;await n.connect(o)}fA().catch(t=>{process.stderr.write(`[mcp-server] Fatal error: ${t instanceof Error?t.message:String(t)}
|
|
50
|
+
`)};function jo(t){return{content:[{type:"text",text:JSON.stringify(t,null,2)}]}}function Co(t){return{content:[{type:"text",text:t}],isError:!0}}function ow(t){let e=new jc({name:"mem-search",version:"0.1.0"},{capabilities:{tools:{}}});return e.registerTool("search",{description:"Search memory observations using semantic or keyword search",inputSchema:{query:Ne.string().describe("The search query"),limit:Ne.number().int().positive().optional().describe("Maximum number of results to return"),type:Ne.string().optional().describe("Filter by observation type (decision, bugfix, feature, etc.)"),project:Ne.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query};r.limit!==void 0&&(n.limit=r.limit),r.type!==void 0&&(n.type=r.type),r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return jo(o)}catch(n){return Co(`Search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("timeline",{description:"Get chronological context around an observation",inputSchema:{anchor:Ne.string().describe("Observation ID, session ID, timestamp, or query to anchor the timeline"),depth_before:Ne.number().int().nonnegative().optional().describe("Number of entries before the anchor"),depth_after:Ne.number().int().nonnegative().optional().describe("Number of entries after the anchor")}},async r=>{try{let n={anchor:r.anchor};r.depth_before!==void 0&&(n.depth_before=r.depth_before),r.depth_after!==void 0&&(n.depth_after=r.depth_after);let o=await t.timeline(n);return jo(o)}catch(n){return Co(`Timeline failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("get_observations",{description:"Get full details for specific observation IDs",inputSchema:{ids:Ne.array(Ne.number().int().positive()).describe("Array of observation IDs to fetch")}},async r=>{try{let n=await t.getObservations({ids:r.ids});return jo(n)}catch(n){return Co(`Get observations failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("save_memory",{description:"Save a new memory observation",inputSchema:{text:Ne.string().describe("The observation text to save"),title:Ne.string().optional().describe("Optional title for the observation"),project:Ne.string().optional().describe("Optional project name to associate the observation with")}},async r=>{try{let n={text:r.text};r.title!==void 0&&(n.title=r.title),r.project!==void 0&&(n.project=r.project);let o=await t.saveMemory(n);return jo(o)}catch(n){return Co(`Save memory failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("decisions",{description:"Search for decision-type observations",inputSchema:{query:Ne.string().optional().describe("Optional search query (defaults to all decisions)"),project:Ne.string().optional().describe("Filter by project name")}},async r=>{try{let n={query:r.query??"*",type:"decision"};r.project!==void 0&&(n.project=r.project);let o=await t.search(n);return jo(o)}catch(n){return Co(`Decisions search failed: ${n instanceof Error?n.message:String(n)}`)}}),e.registerTool("changes",{description:"Search for recent change-type observations",inputSchema:{project:Ne.string().optional().describe("Filter by project name"),limit:Ne.number().int().positive().optional().describe("Maximum number of results to return")}},async r=>{try{let n={query:"*",type:"change"};r.project!==void 0&&(n.project=r.project),r.limit!==void 0&&(n.limit=r.limit);let o=await t.search(n);return jo(o)}catch(n){return Co(`Changes search failed: ${n instanceof Error?n.message:String(n)}`)}}),e}var sw=require("node:fs");function iA(t){return typeof t=="object"&&t!==null&&"token"in t&&typeof t.token=="string"&&"pid"in t&&typeof t.pid=="number"}function aA(t){try{return process.kill(t,0),!0}catch{return!1}}function iw(t){try{let e=(0,sw.readFileSync)(t,"utf-8");if(e.trim().length===0)return null;let r=JSON.parse(e);return!iA(r)||!aA(r.pid)?null:r.token}catch{return null}}var Mc=require("node:fs");var Xm=require("node:os"),Hr=require("node:path"),aw=41777,cw="127.0.0.1",cA=(0,Hr.join)((0,Xm.homedir)(),".config","opencode"),xV=(0,Hr.join)(cA,"opencode.json"),Cc=(0,Hr.join)((0,Xm.homedir)(),".config","opencode","memory"),uA="memory.db",lA="settings.json",uw=(0,Hr.join)(Cc,"worker.pid");var kV=(0,Hr.join)(Cc,uA),Ym=(0,Hr.join)(Cc,lA),SV=(0,Hr.join)(Cc,"logs");var Qm={workerPort:aw,workerBind:cw,chromaDbUrl:"http://localhost:8000",chromaDbEnabled:!0,recencyWindowDays:90,retentionDays:365,tddEnabled:!0,fileLengthWarn:300,fileLengthCritical:500,testFilePatterns:["*.test.ts","*.spec.ts","*_test.go","test_*.py"],toolRedirectRules:[],aiProvider:null,aiModel:null,aiCompressionTimeoutMs:15e3,aiCompressionMaxRetries:3,aiSkipTools:[],secretDetectionEnabled:!0,secretPatterns:[],contextTokenBudget:2e3,notificationsEnabled:!1,debugEnabled:!1},Kr=null;function dA(){if(Kr!==null)return Kr;if(!(0,Mc.existsSync)(Ym))return Kr={...Qm},Kr;try{let t=(0,Mc.readFileSync)(Ym,"utf-8"),e=JSON.parse(t);return Kr={...Qm,...e},Kr}catch{return Kr={...Qm},Kr}}function lw(){let t=dA();return`http://${t.workerBind}:${t.workerPort}`}async function fA(){let t=lw(),e=iw(uw),r=new sa(t,e),n=ow(r),o=new oa;await n.connect(o)}fA().catch(t=>{process.stderr.write(`[mcp-server] Fatal error: ${t instanceof Error?t.message:String(t)}
|
|
51
51
|
`),process.exit(1)});
|
package/dist/plugin.cjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
|
|
3
|
-
`)}async function
|
|
4
|
-
`)}function
|
|
1
|
+
"use strict";var _=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var fe=(e,t)=>{for(var n in t)_(e,n,{get:t[n],enumerable:!0})},ye=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of de(t))!pe.call(e,o)&&o!==n&&_(e,o,{get:()=>t[o],enumerable:!(r=me(t,o))||r.enumerable});return e};var he=e=>ye(_({},"__esModule",{value:!0}),e);var ft={};fe(ft,{default:()=>le});module.exports=he(ft);var P=require("node:fs");var O=require("node:os"),m=require("node:path"),L=41777,U="127.0.0.1",Se=(0,m.join)((0,O.homedir)(),".config","opencode"),ht=(0,m.join)(Se,"opencode.json"),h=(0,m.join)((0,O.homedir)(),".config","opencode","memory"),Te="memory.db",Ee="settings.json",x=(0,m.join)(h,"worker.pid");var St=(0,m.join)(h,Te),k=(0,m.join)(h,Ee),Tt=(0,m.join)(h,"logs");var v={workerPort:L,workerBind:U,chromaDbUrl:"http://localhost:8000",chromaDbEnabled:!0,recencyWindowDays:90,retentionDays:365,tddEnabled:!0,fileLengthWarn:300,fileLengthCritical:500,testFilePatterns:["*.test.ts","*.spec.ts","*_test.go","test_*.py"],toolRedirectRules:[],aiProvider:null,aiModel:null,aiCompressionTimeoutMs:15e3,aiCompressionMaxRetries:3,aiSkipTools:[],secretDetectionEnabled:!0,secretPatterns:[],contextTokenBudget:2e3,notificationsEnabled:!1,debugEnabled:!1},d=null;function y(){if(d!==null)return d;if(!(0,P.existsSync)(k))return d={...v},d;try{let e=(0,P.readFileSync)(k,"utf-8"),t=JSON.parse(e);return d={...v,...t},d}catch{return d={...v},d}}function B(){let e=y();return`http://${e.workerBind}:${e.workerPort}`}var T=require("node:fs"),H=require("node:os"),A=require("node:path");var S=require("node:fs"),R=require("node:path");var G=(0,R.join)(h,"plugin-debug.log"),I=null;function be(){return I===null&&(I=y().debugEnabled),I}function c(e,t){if(!be())return;let r=`[${new Date().toISOString()}] [${e}] ${t}
|
|
2
|
+
`;try{let o=(0,R.dirname)(G);(0,S.existsSync)(o)||(0,S.mkdirSync)(o,{recursive:!0}),(0,S.appendFileSync)(G,r,"utf-8")}catch{}}var xe=5e3,p="compacted";function Pe(){return process.env.OPENCODE_SESSIONS_DIR??(0,A.join)((0,H.homedir)(),".config","opencode","sessions")}function Re(e){return(0,A.join)(Pe(),"sessions",e,"pre-compact-state.json")}function Ce(e){let t=["[Memory Context Restored After Compaction]"];return e.activePlan&&t.push(`Active plan: ${e.activePlan}`),e.currentTask&&t.push(`Current task: ${e.currentTask}`),e.status&&t.push(`Status: ${e.status}`),e.summary&&t.push(`Recent context: ${e.summary}`),t.join(`
|
|
3
|
+
`)}async function $e(e,t,n){let r=`${e}/api/context/inject?project=${encodeURIComponent(n)}`,o={};t!==null&&(o.Authorization=`Bearer ${t}`);let a=await fetch(r,{headers:o,signal:AbortSignal.timeout(xe)});return a.ok?(await a.json()).context??null:null}function _e(e){let t=Re(e);if(!(0,T.existsSync)(t))return null;try{let n=(0,T.readFileSync)(t,"utf-8"),r=JSON.parse(n);return(0,T.unlinkSync)(t),r}catch{return null}}function z(e,t){e.messages=e.messages??[],e.messages.push({role:"user",content:t})}async function W(e,t,n,r,o){c(p,`Session compacted: ${r.sessionId}`);try{let a=null;try{let i=`${t}/api/context/inject?project=${encodeURIComponent(e.project.name)}`;c(p,`GET ${i}`),a=await $e(t,n,e.project.name),c(p,a?`got context (${a.length} chars)`:"no context from worker")}catch(i){if(i instanceof TypeError)throw i;c(p,`worker fetch failed: ${i instanceof Error?i.message:String(i)}`)}if(a){z(o,a),c(p,"injected worker context");return}let s=_e(r.sessionId);if(s){let i=Ce(s);z(o,i),c(p,"injected fallback state from file")}else c(p,"no context available")}catch(a){c(p,`error: ${a instanceof Error?a.message:String(a)}`),e.client.app.log("warn","Compacted state restore failed",{error:a instanceof Error?a.message:String(a),sessionId:r.sessionId})}}var w=require("node:path");var Oe=5e3,ke=5,g="compacting";function ve(e){if(e?.project?.name&&e.project.name!=="undefined")return e.project.name;if(e?.directory){let t=(0,w.basename)(e.directory);if(t&&t!=="."&&t!=="/")return t}if(e?.worktree){let t=(0,w.basename)(e.worktree);if(t&&t!=="."&&t!=="/")return t}}async function Ie(e,t,n){try{let r={};t!==null&&(r.Authorization=`Bearer ${t}`);let o="decisions context observations",a=new URLSearchParams({query:o,limit:String(ke)});n!==void 0&&n!=="undefined"&&n.length>0&&a.set("project",n);let s=`${e}/api/search?${a.toString()}`;c(g,`GET ${s}`);let i=await fetch(s,{method:"GET",headers:r,signal:AbortSignal.timeout(Oe)});if(c(g,`response.ok=${i.ok}, status=${i.status}`),!i.ok)return[];let l=await i.json();return c(g,`found ${l.results.length} memories`),l.results}catch(r){return c(g,`fetch error: ${r instanceof Error?r.message:String(r)}`),[]}}function Ae(e){if(e.length===0)return"";let t=["## Relevant Context from Memory"];t.push(""),t.push("The following information was retrieved from long-term memory and may be relevant:"),t.push("");for(let n of e){let r=n.title||"Observation",o=n.relevanceScore!==null?` (relevance: ${Math.abs(n.relevanceScore*100).toFixed(0)}%)`:"";t.push(`### ${r}${o}`),t.push(n.summary),t.push("")}return t.join(`
|
|
4
|
+
`)}async function K(e,t,n,r,o){c(g,"Session compacting - fetching memories..."),c(g,`workerUrl=${t}, token=${n?"present":"null"}`),c(g,`input=${JSON.stringify(r).slice(0,300)}`);let a=ve(e);c(g,`project=${a??"none"} (dir=${e?.directory??"unknown"})`);let s=await Ie(t,n,a);if(s.length>0){let i=Ae(s);o.context.push(i),c(g,`injected ${s.length} memories into compaction context`)}else c(g,"no memories found to inject")}var J=require("node:fs"),u=require("node:path");var we=300,je=500,Fe=["*.test.ts","*.spec.ts","*_test.go","test_*.py"],j="file-edited";function Me(e,t){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${n}$`).test(e)}function De(e,t){let n=(0,u.basename)(e);return t.some(r=>Me(n,r))}function Ne(e,t){let n=(0,u.dirname)(e),r=(0,u.extname)(e),o=(0,u.basename)(e,r),a=[];for(let s of t)if(s.startsWith("*.")){let i=s.slice(1);a.push((0,u.join)(n,`${o}${i}`))}else if(s.endsWith("*")){let i=s.slice(0,-1);a.push((0,u.join)(n,`${i}${o}${r}`))}return a}function F(e,t){e.messages=e.messages??[],e.messages.push({role:"system",content:t})}function Le(e,t,n,r){if(De(t,n))return;let o=Ne(t,n),a=e.project.root;o.some(i=>{let l=i.startsWith("/")?i:(0,u.join)(a,i);return(0,J.existsSync)(l)})||F(r,`\u26A0\uFE0F TDD Warning: No test file found for ${t}. Consider writing tests first (Red-Green-Refactor).`)}function Ue(e,t,n,r,o){if(t>r){F(o,`\u{1F6A8} File Length Critical: ${e} has ${t} lines. This file should be refactored.`);return}t>n&&F(o,`\u26A0\uFE0F File Length Warning: ${e} has ${t} lines. Consider splitting this file.`)}async function q(e,t,n,r){try{c(j,`File edited: ${n.filePath}`);let o=y(),a=n.testFilePatterns??o.testFilePatterns??Fe,s=n.fileLengthWarn??o.fileLengthWarn??we,i=n.fileLengthCritical??o.fileLengthCritical??je;Le(e,n.filePath,a,r);let l=n.lineCount??0;Ue(n.filePath,l,s,i,r),c(j,`checks complete for ${n.filePath} (${l} lines)`)}catch(o){c(j,`error: ${o instanceof Error?o.message:String(o)}`),e.client.app.log("warn","File edited check failed",{error:o instanceof Error?o.message:String(o),filePath:n.filePath})}}var Be=15e3,E="session-idle";function Ge(e){let{context:t}=e;return t?!!(t.requested||t.investigated||t.learned||t.completed):!1}function ze(e){let t=e.context??{};return["Session Summary:",`Requested: ${t.requested??"Not specified"}`,`Investigated: ${t.investigated??"Not specified"}`,`Learned: ${t.learned??"Not specified"}`,`Completed: ${t.completed??"Not specified"}`].join(`
|
|
5
|
+
`)}async function Z(e,t,n,r,o){if(c(E,`Session idle: ${r.sessionId}`),!Ge(r)){c(E,"no meaningful context to save");return}let a={"Content-Type":"application/json"};n!==null&&(a.Authorization=`Bearer ${n}`);try{let s=`${t}/api/memory/save`;c(E,`POST ${s}`);let i=await fetch(s,{method:"POST",headers:a,body:JSON.stringify({type:"session-summary",title:`Session Summary: ${r.sessionId}`,text:ze(r),project:e.project.name}),signal:AbortSignal.timeout(Be)});c(E,`response.status=${i.status}`),i.ok||e.client.app.log("warn","Failed to save session summary",{status:i.status})}catch(s){c(E,`error: ${s instanceof Error?s.message:String(s)}`),e.client.app.log("warn","Session summary save failed",{error:s instanceof Error?s.message:String(s)})}}var He=3e3,f="session-start";function We(e){let t={};return e!==null&&(t.Authorization=`Bearer ${e}`),t}async function Y(e,t){return fetch(e,{headers:We(t),signal:AbortSignal.timeout(He)})}async function V(e,t,n,r,o,a){c(f,"Session started");let s=`${t}/api/context/inject?project=${encodeURIComponent(e.project.name)}`;c(f,`GET ${s}`);try{let i=await Y(s,n);if(c(f,`response.status=${i.status}`),i.status===401&&a!==void 0){c(f,"Token expired, refreshing...");let $=a();i=await Y(s,$),c(f,`retry response.status=${i.status}`)}if(!i.ok){e.client.app.log("warn","Failed to load memory context",{status:i.status});return}let l=await i.json();l.context?(o.messages=o.messages??[],o.messages.push({role:"system",content:l.context}),c(f,`injected context (${l.context.length} chars)`)):c(f,"no context returned from worker")}catch(i){c(f,`error: ${i instanceof Error?i.message:String(i)}`),e.client.app.log("warn","Memory context injection failed",{error:i instanceof Error?i.message:String(i)})}}var Ke=15e3,Je=200,X="tool-after";async function ee(e,t,n,r,o,a,s){c(X,`Tool completed: ${o.tool}`),qe(e,t,n,r,o,a,s).catch(i=>{c(X,`error: ${i instanceof Error?i.message:String(i)}`),e.client.app.log("warn","Observation capture failed",{error:i instanceof Error?i.message:String(i)})})}async function qe(e,t,n,r,o,a,s){let i=`Tool ${o.tool}: ${Ye(o,a)}`,l=`${o.tool} execution`,$=Ze(o.input),ue=a.output??a.error??"",D={text:r.sanitize(i),title:r.sanitize(l),project:e.project.name,toolName:o.tool,toolInput:r.sanitize($),toolOutput:r.sanitize(ue)},N=`${t}/api/memory/save`,b=await Q(N,D,n);if(b.status===401&&s!==void 0){let ge=s();b=await Q(N,D,ge)}b.ok||e.client.app.log("warn","Observation save failed",{status:b.status})}async function Q(e,t,n){let r={"Content-Type":"application/json"};return n!==null&&(r.Authorization=`Bearer ${n}`),fetch(e,{method:"POST",headers:r,body:JSON.stringify(t),signal:AbortSignal.timeout(Ke)})}function Ze(e){try{return JSON.stringify(e)}catch{return String(e)}}function Ye(e,t){let n=t.output??t.error??"",r=Ve(e.input),o=n.slice(0,Je).trim();return r&&o?`${r} -> ${o}`:r||o||"(no details)"}function Ve(e){let t=Object.entries(e);return t.length===0?"":t.map(([n,r])=>`${n}=${String(r).slice(0,80)}`).join(", ")}var C="tool-before";function Xe(){let e=process.env.MEMORY_TOOL_REDIRECT_RULES;if(e!==void 0)try{return JSON.parse(e)}catch{return[]}return y().toolRedirectRules}function Qe(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.tool=="string"&&(t.action==="deny"||t.action==="redirect")}function et(e){return e.message??`Tool '${e.tool}' is blocked by project configuration.`}function tt(e){let t=e.message??`Tool '${e.tool}' has been redirected.`;return e.alternative?`${t} Suggested alternative: ${e.alternative}.`:t}function nt(e,t){t.blocked=!0,t.messages=[{role:"user",content:et(e)}]}function rt(e,t){t.messages=[{role:"user",content:tt(e)}]}async function te(e,t,n,r){c(C,`Tool executing: ${n.tool}`);let o=Xe();for(let a of o)try{if(!Qe(a))throw new Error("Invalid rule: tool must be a string and action must be 'deny' or 'redirect'");if(a.tool!==n.tool)continue;a.action==="deny"?(nt(a,r),c(C,`blocked tool ${n.tool} (deny rule)`)):(rt(a,r),c(C,`redirected tool ${n.tool}`));return}catch(s){c(C,`rule error: ${s instanceof Error?s.message:String(s)}`),e.client.app.log("warn","Tool redirect rule evaluation failed",{error:s instanceof Error?s.message:String(s),rule:JSON.stringify(a)})}}var ne=require("node:fs");function ot(e){return typeof e=="object"&&e!==null&&"token"in e&&typeof e.token=="string"&&"pid"in e&&typeof e.pid=="number"}function it(e){try{return process.kill(e,0),!0}catch{return!1}}function M(e){try{let t=(0,ne.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let n=JSON.parse(t);return!ot(n)||!it(n.pid)?null:n.token}catch{return null}}var re=[{name:"aws_access_key",pattern:/AKIA[0-9A-Z]{16}/g},{name:"github_pat",pattern:/ghp_[a-zA-Z0-9]{36}/g},{name:"github_oauth",pattern:/gho_[a-zA-Z0-9]{36}/g},{name:"anthropic_key",pattern:/sk-ant-[a-zA-Z0-9\-_]{20,}/g},{name:"openai_key",pattern:/sk-[a-zA-Z0-9]{20,}/g},{name:"jwt_token",pattern:/eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g},{name:"pem_private_key",pattern:/-----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----/g},{name:"generic_api_key",pattern:/(?:api[_-]?key|token|secret|password)\s*[:=]\s*['"]?([a-zA-Z0-9\-_]{20,})['"]?/gi}];function st(e,t=re){if(!e)return e;let n=e;for(let{pattern:r}of t)r.lastIndex=0,n=n.replace(r,"[REDACTED]");return n}function oe(e=[]){let t=[...re,...e];return n=>st(n,t)}var at=/<private>[\s\S]*?<\/private>/gi;function ie(e){return e.replace(at,"")}function se(e={}){let{additionalSecretPatterns:t=[],secretDetectionEnabled:n=!0}=e,r=oe(t);return{sanitize(o){let a=ie(o);return n?r(a):a}}}function ae(e,t,n){return[ct(e,t,n),lt(e,t,n)]}function ct(e,t,n){return{name:"memory_search",description:"Search memory observations by topic or keyword",parameters:{query:{type:"string",description:"The search query or topic to look up in memory",required:!0},limit:{type:"number",description:"Maximum number of results to return (default 20)"},project:{type:"string",description:"Filter results to a specific project name"}},execute:r=>ut(e,t,n,r)}}function lt(e,t,n){return{name:"memory_save",description:"Save an observation to memory for future reference",parameters:{text:{type:"string",description:"The observation text to save to memory",required:!0},title:{type:"string",description:"Optional short title summarising the observation"}},execute:r=>gt(e,t,n,r)}}function ce(e){return e===null?{}:{Authorization:`Bearer ${e}`}}async function ut(e,t,n,r){try{let o=mt(t,r),a=await fetch(o,{headers:ce(n()),signal:AbortSignal.timeout(1e4)});if(!a.ok)return{result:`Error: Worker returned status ${a.status}`};let s=await a.json();return{result:dt(s.results??[])}}catch(o){return e.client.app.log("warn","memory_search failed",{error:o instanceof Error?o.message:String(o)}),{result:`Error: ${o instanceof Error?o.message:String(o)}`}}}async function gt(e,t,n,r){try{let o={text:r.text};r.title!==void 0&&(o.title=r.title);let a={"Content-Type":"application/json",...ce(n())},s=await fetch(`${t}/api/memory/save`,{method:"POST",headers:a,body:JSON.stringify(o),signal:AbortSignal.timeout(1e4)});if(!s.ok)return{result:`Error: Worker returned status ${s.status}`};let i=await s.json();return{result:pt(i)}}catch(o){return e.client.app.log("warn","memory_save failed",{error:o instanceof Error?o.message:String(o)}),{result:`Error: ${o instanceof Error?o.message:String(o)}`}}}function mt(e,t){let n=new URLSearchParams;return n.set("query",String(t.query??"")),t.limit!==void 0&&n.set("limit",String(t.limit)),t.project!==void 0&&n.set("project",String(t.project)),`${e}/api/search?${n.toString()}`}function dt(e){return e.length===0?"No results found for the given query.":e.map(t=>`[${t.id}] ${t.title} (${t.type}, ${t.project}) \u2014 ${t.summary}`).join(`
|
|
6
|
+
`)}function pt(e){let t=e.id??"unknown",n=e.title??"(untitled)";return`Saved observation #${t}: "${n}"`}async function le(e){let t=B(),n=se(),r=M(x);r===null&&e.client.app.log("warn","Auth token not found in PID file \u2014 requests will be unauthenticated",{pidFilePath:x});function o(){return r=M(x),r}return ae(e,t,()=>r),{"session.created":(s,i)=>V(e,t,r,s,i,o),"tool.execute.after":(s,i)=>ee(e,t,r,n,s,i,o),"tool.execute.before":(s,i)=>te(e,t,s,i),"session.idle":(s,i)=>Z(e,t,r,s,i),"experimental.session.compacting":(s,i)=>K(e,t,o(),s,i),"session.compacted":(s,i)=>W(e,t,r,s,i),"file.edited":(s,i)=>q(e,t,s,i)}}
|