claude-mem 10.4.2 → 10.4.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/package.json
CHANGED
package/plugin/package.json
CHANGED
|
@@ -54,7 +54,7 @@ ${i.stack}`:` ${i.message}`:this.getLevel()===0&&typeof i=="object"?l=`
|
|
|
54
54
|
|
|
55
55
|
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of t.seen.entries()){let s=a[1];if(e===a[0]){i(a);continue}if(t.external){let u=t.external.registry.get(a[0])?.id;if(e!==a[0]&&u){i(a);continue}}if(t.metadataRegistry.get(a[0])?.id){i(a);continue}if(s.cycle){i(a);continue}if(s.count>1&&t.reused==="ref"){i(a);continue}}}function ta(t,e){let r=t.seen.get(e);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=a=>{let s=t.seen.get(a);if(s.ref===null)return;let c=s.def??s.schema,u={...c},l=s.ref;if(s.ref=null,l){n(l);let f=t.seen.get(l),m=f.schema;if(m.$ref&&(t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(m)):Object.assign(c,m),Object.assign(c,u),a._zod.parent===l)for(let v in c)v==="$ref"||v==="allOf"||v in u||delete c[v];if(m.$ref&&f.def)for(let v in c)v==="$ref"||v==="allOf"||v in f.def&&JSON.stringify(c[v])===JSON.stringify(f.def[v])&&delete c[v]}let d=a._zod.parent;if(d&&d!==l){n(d);let f=t.seen.get(d);if(f?.schema.$ref&&(c.$ref=f.schema.$ref,f.def))for(let m in c)m==="$ref"||m==="allOf"||m in f.def&&JSON.stringify(c[m])===JSON.stringify(f.def[m])&&delete c[m]}t.override({zodSchema:a,jsonSchema:c,path:s.path??[]})};for(let a of[...t.seen.entries()].reverse())n(a[0]);let o={};if(t.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":t.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":t.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":t.target,t.external?.uri){let a=t.external.registry.get(e)?.id;if(!a)throw new Error("Schema is missing an `id` property");o.$id=t.external.uri(a)}Object.assign(o,r.def??r.schema);let i=t.external?.defs??{};for(let a of t.seen.entries()){let s=a[1];s.def&&s.defId&&(i[s.defId]=s.def)}t.external||Object.keys(i).length>0&&(t.target==="draft-2020-12"?o.$defs=i:o.definitions=i);try{let a=JSON.parse(JSON.stringify(o));return Object.defineProperty(a,"~standard",{value:{...e["~standard"],jsonSchema:{input:ho(e,"input",t.processors),output:ho(e,"output",t.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function Ue(t,e){let r=e??{seen:new Set};if(r.seen.has(t))return!1;r.seen.add(t);let n=t._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ue(n.element,r);if(n.type==="set")return Ue(n.valueType,r);if(n.type==="lazy")return Ue(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return Ue(n.innerType,r);if(n.type==="intersection")return Ue(n.left,r)||Ue(n.right,r);if(n.type==="record"||n.type==="map")return Ue(n.keyType,r)||Ue(n.valueType,r);if(n.type==="pipe")return Ue(n.in,r)||Ue(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Ue(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Ue(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Ue(o,r))return!0;return!!(n.rest&&Ue(n.rest,r))}return!1}var Am=(t,e={})=>r=>{let n=Qi({...r,processors:e});return de(t,n),ea(n,t),ta(n,t)},ho=(t,e,r={})=>n=>{let{libraryOptions:o,target:i}=n??{},a=Qi({...o??{},target:i,io:e,processors:r});return de(t,a),ea(a,t),ta(a,t)};var wb={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Um=(t,e,r,n)=>{let o=r;o.type="string";let{minimum:i,maximum:a,format:s,patterns:c,contentEncoding:u}=t._zod.bag;if(typeof i=="number"&&(o.minLength=i),typeof a=="number"&&(o.maxLength=a),s&&(o.format=wb[s]??s,o.format===""&&delete o.format,s==="time"&&delete o.format),u&&(o.contentEncoding=u),c&&c.size>0){let l=[...c];l.length===1?o.pattern=l[0].source:l.length>1&&(o.allOf=[...l.map(d=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))])}},Cm=(t,e,r,n)=>{let o=r,{minimum:i,maximum:a,format:s,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:l}=t._zod.bag;typeof s=="string"&&s.includes("int")?o.type="integer":o.type="number",typeof l=="number"&&(e.target==="draft-04"||e.target==="openapi-3.0"?(o.minimum=l,o.exclusiveMinimum=!0):o.exclusiveMinimum=l),typeof i=="number"&&(o.minimum=i,typeof l=="number"&&e.target!=="draft-04"&&(l>=i?delete o.minimum:delete o.exclusiveMinimum)),typeof u=="number"&&(e.target==="draft-04"||e.target==="openapi-3.0"?(o.maximum=u,o.exclusiveMaximum=!0):o.exclusiveMaximum=u),typeof a=="number"&&(o.maximum=a,typeof u=="number"&&e.target!=="draft-04"&&(u<=a?delete o.maximum:delete o.exclusiveMaximum)),typeof c=="number"&&(o.multipleOf=c)},Mm=(t,e,r,n)=>{r.type="boolean"},Zm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Lm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},qm=(t,e,r,n)=>{e.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},Fm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Vm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},Jm=(t,e,r,n)=>{r.not={}},Km=(t,e,r,n)=>{},Hm=(t,e,r,n)=>{},Wm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},Gm=(t,e,r,n)=>{let o=t._zod.def,i=An(o.entries);i.every(a=>typeof a=="number")&&(r.type="number"),i.every(a=>typeof a=="string")&&(r.type="string"),r.enum=i},Bm=(t,e,r,n)=>{let o=t._zod.def,i=[];for(let a of o.values)if(a===void 0){if(e.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a=="bigint"){if(e.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");i.push(Number(a))}else i.push(a);if(i.length!==0)if(i.length===1){let a=i[0];r.type=a===null?"null":typeof a,e.target==="draft-04"||e.target==="openapi-3.0"?r.enum=[a]:r.const=a}else i.every(a=>typeof a=="number")&&(r.type="number"),i.every(a=>typeof a=="string")&&(r.type="string"),i.every(a=>typeof a=="boolean")&&(r.type="boolean"),i.every(a=>a===null)&&(r.type="null"),r.enum=i},Xm=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Ym=(t,e,r,n)=>{let o=r,i=t._zod.pattern;if(!i)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=i.source},Qm=(t,e,r,n)=>{let o=r,i={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:s,mime:c}=t._zod.bag;a!==void 0&&(i.minLength=a),s!==void 0&&(i.maxLength=s),c?c.length===1?(i.contentMediaType=c[0],Object.assign(o,i)):(Object.assign(o,i),o.anyOf=c.map(u=>({contentMediaType:u}))):Object.assign(o,i)},eh=(t,e,r,n)=>{r.type="boolean"},th=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},rh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},nh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},oh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},ih=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},ah=(t,e,r,n)=>{let o=r,i=t._zod.def,{minimum:a,maximum:s}=t._zod.bag;typeof a=="number"&&(o.minItems=a),typeof s=="number"&&(o.maxItems=s),o.type="array",o.items=de(i.element,e,{...n,path:[...n.path,"items"]})},sh=(t,e,r,n)=>{let o=r,i=t._zod.def;o.type="object",o.properties={};let a=i.shape;for(let u in a)o.properties[u]=de(a[u],e,{...n,path:[...n.path,"properties",u]});let s=new Set(Object.keys(a)),c=new Set([...s].filter(u=>{let l=i.shape[u]._zod;return e.io==="input"?l.optin===void 0:l.optout===void 0}));c.size>0&&(o.required=Array.from(c)),i.catchall?._zod.def.type==="never"?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=de(i.catchall,e,{...n,path:[...n.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},vl=(t,e,r,n)=>{let o=t._zod.def,i=o.inclusive===!1,a=o.options.map((s,c)=>de(s,e,{...n,path:[...n.path,i?"oneOf":"anyOf",c]}));i?r.oneOf=a:r.anyOf=a},ch=(t,e,r,n)=>{let o=t._zod.def,i=de(o.left,e,{...n,path:[...n.path,"allOf",0]}),a=de(o.right,e,{...n,path:[...n.path,"allOf",1]}),s=u=>"allOf"in u&&Object.keys(u).length===1,c=[...s(i)?i.allOf:[i],...s(a)?a.allOf:[a]];r.allOf=c},uh=(t,e,r,n)=>{let o=r,i=t._zod.def;o.type="array";let a=e.target==="draft-2020-12"?"prefixItems":"items",s=e.target==="draft-2020-12"||e.target==="openapi-3.0"?"items":"additionalItems",c=i.items.map((f,m)=>de(f,e,{...n,path:[...n.path,a,m]})),u=i.rest?de(i.rest,e,{...n,path:[...n.path,s,...e.target==="openapi-3.0"?[i.items.length]:[]]}):null;e.target==="draft-2020-12"?(o.prefixItems=c,u&&(o.items=u)):e.target==="openapi-3.0"?(o.items={anyOf:c},u&&o.items.anyOf.push(u),o.minItems=c.length,u||(o.maxItems=c.length)):(o.items=c,u&&(o.additionalItems=u));let{minimum:l,maximum:d}=t._zod.bag;typeof l=="number"&&(o.minItems=l),typeof d=="number"&&(o.maxItems=d)},lh=(t,e,r,n)=>{let o=r,i=t._zod.def;o.type="object";let a=i.keyType,c=a._zod.bag?.patterns;if(i.mode==="loose"&&c&&c.size>0){let l=de(i.valueType,e,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let d of c)o.patternProperties[d.source]=l}else(e.target==="draft-07"||e.target==="draft-2020-12")&&(o.propertyNames=de(i.keyType,e,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=de(i.valueType,e,{...n,path:[...n.path,"additionalProperties"]});let u=a._zod.values;if(u){let l=[...u].filter(d=>typeof d=="string"||typeof d=="number");l.length>0&&(o.required=l)}},dh=(t,e,r,n)=>{let o=t._zod.def,i=de(o.innerType,e,n),a=e.seen.get(t);e.target==="openapi-3.0"?(a.ref=o.innerType,r.nullable=!0):r.anyOf=[i,{type:"null"}]},ph=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},fh=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},mh=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType,e.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},hh=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType;let a;try{a=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=a},gh=(t,e,r,n)=>{let o=t._zod.def,i=e.io==="input"?o.in._zod.def.type==="transform"?o.out:o.in:o.out;de(i,e,n);let a=e.seen.get(t);a.ref=i},vh=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType,r.readOnly=!0},_h=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},_l=(t,e,r,n)=>{let o=t._zod.def;de(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},yh=(t,e,r,n)=>{let o=t._zod.innerType;de(o,e,n);let i=e.seen.get(t);i.ref=o};function Br(t){return!!t._zod}function Yt(t,e){return Br(t)?Jr(t,e):t.safeParse(e)}function ra(t){if(!t)return;let e;if(Br(t)?e=t._zod?.def?.shape:e=t.shape,!!e){if(typeof e=="function")try{return e()}catch{return}return e}}function kh(t){if(Br(t)){let i=t._zod?.def;if(i){if(i.value!==void 0)return i.value;if(Array.isArray(i.values)&&i.values.length>0)return i.values[0]}}let r=t._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=t.value;if(n!==void 0)return n}var go={};bn(go,{ZodAny:()=>Lh,ZodArray:()=>Jh,ZodBase64:()=>ql,ZodBase64URL:()=>Fl,ZodBigInt:()=>da,ZodBigIntFormat:()=>Kl,ZodBoolean:()=>la,ZodCIDRv4:()=>Zl,ZodCIDRv6:()=>Ll,ZodCUID:()=>Dl,ZodCUID2:()=>Nl,ZodCatch:()=>dg,ZodCodec:()=>Ql,ZodCustom:()=>ga,ZodCustomStringFormat:()=>_o,ZodDate:()=>Wl,ZodDefault:()=>ig,ZodDiscriminatedUnion:()=>Hh,ZodE164:()=>Vl,ZodEmail:()=>Pl,ZodEmoji:()=>Ol,ZodEnum:()=>vo,ZodExactOptional:()=>rg,ZodFile:()=>eg,ZodFunction:()=>$g,ZodGUID:()=>oa,ZodIPv4:()=>Cl,ZodIPv6:()=>Ml,ZodIntersection:()=>Wh,ZodJWT:()=>Jl,ZodKSUID:()=>Ul,ZodLazy:()=>vg,ZodLiteral:()=>Qh,ZodMAC:()=>Uh,ZodMap:()=>Xh,ZodNaN:()=>fg,ZodNanoID:()=>jl,ZodNever:()=>Fh,ZodNonOptional:()=>Xl,ZodNull:()=>Zh,ZodNullable:()=>og,ZodNumber:()=>ua,ZodNumberFormat:()=>Xr,ZodObject:()=>pa,ZodOptional:()=>Bl,ZodPipe:()=>Yl,ZodPrefault:()=>sg,ZodPromise:()=>yg,ZodReadonly:()=>mg,ZodRecord:()=>ha,ZodSet:()=>Yh,ZodString:()=>sa,ZodStringFormat:()=>ce,ZodSuccess:()=>lg,ZodSymbol:()=>Ch,ZodTemplateLiteral:()=>gg,ZodTransform:()=>tg,ZodTuple:()=>Gh,ZodType:()=>F,ZodULID:()=>Rl,ZodURL:()=>ca,ZodUUID:()=>Rt,ZodUndefined:()=>Mh,ZodUnion:()=>fa,ZodUnknown:()=>qh,ZodVoid:()=>Vh,ZodXID:()=>Al,ZodXor:()=>Kh,_ZodString:()=>Tl,_default:()=>ag,_function:()=>Fx,any:()=>wx,array:()=>G,base64:()=>cx,base64url:()=>ux,bigint:()=>$x,boolean:()=>_e,catch:()=>pg,check:()=>Vx,cidrv4:()=>ax,cidrv6:()=>sx,codec:()=>Zx,cuid:()=>Yb,cuid2:()=>Qb,custom:()=>ed,date:()=>Ix,describe:()=>Jx,discriminatedUnion:()=>ma,e164:()=>lx,email:()=>qb,emoji:()=>Bb,enum:()=>Te,exactOptional:()=>ng,file:()=>Ax,float32:()=>gx,float64:()=>vx,function:()=>Fx,guid:()=>Fb,hash:()=>hx,hex:()=>mx,hostname:()=>fx,httpUrl:()=>Gb,instanceof:()=>Hx,int:()=>El,int32:()=>_x,int64:()=>bx,intersection:()=>$o,ipv4:()=>nx,ipv6:()=>ix,json:()=>Gx,jwt:()=>dx,keyof:()=>Ex,ksuid:()=>rx,lazy:()=>_g,literal:()=>T,looseObject:()=>Ee,looseRecord:()=>jx,mac:()=>ox,map:()=>Dx,meta:()=>Kx,nan:()=>Mx,nanoid:()=>Xb,nativeEnum:()=>Rx,never:()=>Hl,nonoptional:()=>ug,null:()=>yo,nullable:()=>ia,nullish:()=>Ux,number:()=>ne,object:()=>z,optional:()=>fe,partialRecord:()=>Ox,pipe:()=>aa,prefault:()=>cg,preprocess:()=>va,promise:()=>qx,readonly:()=>hg,record:()=>pe,refine:()=>bg,set:()=>Nx,strictObject:()=>Tx,string:()=>h,stringFormat:()=>px,stringbool:()=>Wx,success:()=>Cx,superRefine:()=>xg,symbol:()=>kx,templateLiteral:()=>Lx,transform:()=>Gl,tuple:()=>Bh,uint32:()=>yx,uint64:()=>xx,ulid:()=>ex,undefined:()=>Sx,union:()=>ie,unknown:()=>ue,url:()=>Wb,uuid:()=>Vb,uuidv4:()=>Jb,uuidv6:()=>Kb,uuidv7:()=>Hb,void:()=>zx,xid:()=>tx,xor:()=>Px});var na={};bn(na,{endsWith:()=>co,gt:()=>Dt,gte:()=>Ae,includes:()=>ao,length:()=>Wr,lowercase:()=>oo,lt:()=>jt,lte:()=>We,maxLength:()=>Hr,maxSize:()=>gr,mime:()=>uo,minLength:()=>Xt,minSize:()=>Nt,multipleOf:()=>hr,negative:()=>al,nonnegative:()=>cl,nonpositive:()=>sl,normalize:()=>lo,overwrite:()=>_t,positive:()=>il,property:()=>ul,regex:()=>no,size:()=>Kr,slugify:()=>Yi,startsWith:()=>so,toLowerCase:()=>fo,toUpperCase:()=>mo,trim:()=>po,uppercase:()=>io});var vr={};bn(vr,{ZodISODate:()=>xl,ZodISODateTime:()=>$l,ZodISODuration:()=>zl,ZodISOTime:()=>Sl,date:()=>kl,datetime:()=>bl,duration:()=>Il,time:()=>wl});var $l=p("ZodISODateTime",(t,e)=>{Nc.init(t,e),ce.init(t,e)});function bl(t){return Au($l,t)}var xl=p("ZodISODate",(t,e)=>{Rc.init(t,e),ce.init(t,e)});function kl(t){return Uu(xl,t)}var Sl=p("ZodISOTime",(t,e)=>{Ac.init(t,e),ce.init(t,e)});function wl(t){return Cu(Sl,t)}var zl=p("ZodISODuration",(t,e)=>{Uc.init(t,e),ce.init(t,e)});function Il(t){return Mu(zl,t)}var Sh=(t,e)=>{vi.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:r=>yi(t,r)},flatten:{value:r=>_i(t,r)},addIssue:{value:r=>{t.issues.push(r),t.message=JSON.stringify(t.issues,qr,2)}},addIssues:{value:r=>{t.issues.push(...r),t.message=JSON.stringify(t.issues,qr,2)}},isEmpty:{get(){return t.issues.length===0}}})},MN=p("ZodError",Sh),Ge=p("ZodError",Sh,{Parent:Error});var wh=qn(Ge),zh=Vn(Ge),Ih=Kn(Ge),Eh=Hn(Ge),Th=Mf(Ge),Ph=Zf(Ge),Oh=Lf(Ge),jh=qf(Ge),Dh=Ff(Ge),Nh=Vf(Ge),Rh=Jf(Ge),Ah=Kf(Ge);var F=p("ZodType",(t,e)=>(Z.init(t,e),Object.assign(t["~standard"],{jsonSchema:{input:ho(t,"input"),output:ho(t,"output")}}),t.toJSONSchema=Am(t,{}),t.def=e,t.type=e.type,Object.defineProperty(t,"_def",{value:e}),t.check=(...r)=>t.clone(y.mergeDefs(e,{checks:[...e.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0}),t.with=t.check,t.clone=(r,n)=>Ne(t,r,n),t.brand=()=>t,t.register=((r,n)=>(r.add(t,n),t)),t.parse=(r,n)=>wh(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>Ih(t,r,n),t.parseAsync=async(r,n)=>zh(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>Eh(t,r,n),t.spa=t.safeParseAsync,t.encode=(r,n)=>Th(t,r,n),t.decode=(r,n)=>Ph(t,r,n),t.encodeAsync=async(r,n)=>Oh(t,r,n),t.decodeAsync=async(r,n)=>jh(t,r,n),t.safeEncode=(r,n)=>Dh(t,r,n),t.safeDecode=(r,n)=>Nh(t,r,n),t.safeEncodeAsync=async(r,n)=>Rh(t,r,n),t.safeDecodeAsync=async(r,n)=>Ah(t,r,n),t.refine=(r,n)=>t.check(bg(r,n)),t.superRefine=r=>t.check(xg(r)),t.overwrite=r=>t.check(_t(r)),t.optional=()=>fe(t),t.exactOptional=()=>ng(t),t.nullable=()=>ia(t),t.nullish=()=>fe(ia(t)),t.nonoptional=r=>ug(t,r),t.array=()=>G(t),t.or=r=>ie([t,r]),t.and=r=>$o(t,r),t.transform=r=>aa(t,Gl(r)),t.default=r=>ag(t,r),t.prefault=r=>cg(t,r),t.catch=r=>pg(t,r),t.pipe=r=>aa(t,r),t.readonly=()=>hg(t),t.describe=r=>{let n=t.clone();return Re.add(n,{description:r}),n},Object.defineProperty(t,"description",{get(){return Re.get(t)?.description},configurable:!0}),t.meta=(...r)=>{if(r.length===0)return Re.get(t);let n=t.clone();return Re.add(n,r[0]),n},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t.apply=r=>r(t),t)),Tl=p("_ZodString",(t,e)=>{mr.init(t,e),F.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Um(t,n,o,i);let r=t._zod.bag;t.format=r.format??null,t.minLength=r.minimum??null,t.maxLength=r.maximum??null,t.regex=(...n)=>t.check(no(...n)),t.includes=(...n)=>t.check(ao(...n)),t.startsWith=(...n)=>t.check(so(...n)),t.endsWith=(...n)=>t.check(co(...n)),t.min=(...n)=>t.check(Xt(...n)),t.max=(...n)=>t.check(Hr(...n)),t.length=(...n)=>t.check(Wr(...n)),t.nonempty=(...n)=>t.check(Xt(1,...n)),t.lowercase=n=>t.check(oo(n)),t.uppercase=n=>t.check(io(n)),t.trim=()=>t.check(po()),t.normalize=(...n)=>t.check(lo(...n)),t.toLowerCase=()=>t.check(fo()),t.toUpperCase=()=>t.check(mo()),t.slugify=()=>t.check(Yi())}),sa=p("ZodString",(t,e)=>{mr.init(t,e),Tl.init(t,e),t.email=r=>t.check(ji(Pl,r)),t.url=r=>t.check(ro(ca,r)),t.jwt=r=>t.check(Xi(Jl,r)),t.emoji=r=>t.check(Ui(Ol,r)),t.guid=r=>t.check(to(oa,r)),t.uuid=r=>t.check(Di(Rt,r)),t.uuidv4=r=>t.check(Ni(Rt,r)),t.uuidv6=r=>t.check(Ri(Rt,r)),t.uuidv7=r=>t.check(Ai(Rt,r)),t.nanoid=r=>t.check(Ci(jl,r)),t.guid=r=>t.check(to(oa,r)),t.cuid=r=>t.check(Mi(Dl,r)),t.cuid2=r=>t.check(Zi(Nl,r)),t.ulid=r=>t.check(Li(Rl,r)),t.base64=r=>t.check(Wi(ql,r)),t.base64url=r=>t.check(Gi(Fl,r)),t.xid=r=>t.check(qi(Al,r)),t.ksuid=r=>t.check(Fi(Ul,r)),t.ipv4=r=>t.check(Vi(Cl,r)),t.ipv6=r=>t.check(Ji(Ml,r)),t.cidrv4=r=>t.check(Ki(Zl,r)),t.cidrv6=r=>t.check(Hi(Ll,r)),t.e164=r=>t.check(Bi(Vl,r)),t.datetime=r=>t.check(bl(r)),t.date=r=>t.check(kl(r)),t.time=r=>t.check(wl(r)),t.duration=r=>t.check(Il(r))});function h(t){return Nu(sa,t)}var ce=p("ZodStringFormat",(t,e)=>{oe.init(t,e),Tl.init(t,e)}),Pl=p("ZodEmail",(t,e)=>{wc.init(t,e),ce.init(t,e)});function qb(t){return ji(Pl,t)}var oa=p("ZodGUID",(t,e)=>{kc.init(t,e),ce.init(t,e)});function Fb(t){return to(oa,t)}var Rt=p("ZodUUID",(t,e)=>{Sc.init(t,e),ce.init(t,e)});function Vb(t){return Di(Rt,t)}function Jb(t){return Ni(Rt,t)}function Kb(t){return Ri(Rt,t)}function Hb(t){return Ai(Rt,t)}var ca=p("ZodURL",(t,e)=>{zc.init(t,e),ce.init(t,e)});function Wb(t){return ro(ca,t)}function Gb(t){return ro(ca,{protocol:/^https?$/,hostname:Qe.domain,...y.normalizeParams(t)})}var Ol=p("ZodEmoji",(t,e)=>{Ic.init(t,e),ce.init(t,e)});function Bb(t){return Ui(Ol,t)}var jl=p("ZodNanoID",(t,e)=>{Ec.init(t,e),ce.init(t,e)});function Xb(t){return Ci(jl,t)}var Dl=p("ZodCUID",(t,e)=>{Tc.init(t,e),ce.init(t,e)});function Yb(t){return Mi(Dl,t)}var Nl=p("ZodCUID2",(t,e)=>{Pc.init(t,e),ce.init(t,e)});function Qb(t){return Zi(Nl,t)}var Rl=p("ZodULID",(t,e)=>{Oc.init(t,e),ce.init(t,e)});function ex(t){return Li(Rl,t)}var Al=p("ZodXID",(t,e)=>{jc.init(t,e),ce.init(t,e)});function tx(t){return qi(Al,t)}var Ul=p("ZodKSUID",(t,e)=>{Dc.init(t,e),ce.init(t,e)});function rx(t){return Fi(Ul,t)}var Cl=p("ZodIPv4",(t,e)=>{Cc.init(t,e),ce.init(t,e)});function nx(t){return Vi(Cl,t)}var Uh=p("ZodMAC",(t,e)=>{Zc.init(t,e),ce.init(t,e)});function ox(t){return Ru(Uh,t)}var Ml=p("ZodIPv6",(t,e)=>{Mc.init(t,e),ce.init(t,e)});function ix(t){return Ji(Ml,t)}var Zl=p("ZodCIDRv4",(t,e)=>{Lc.init(t,e),ce.init(t,e)});function ax(t){return Ki(Zl,t)}var Ll=p("ZodCIDRv6",(t,e)=>{qc.init(t,e),ce.init(t,e)});function sx(t){return Hi(Ll,t)}var ql=p("ZodBase64",(t,e)=>{Fc.init(t,e),ce.init(t,e)});function cx(t){return Wi(ql,t)}var Fl=p("ZodBase64URL",(t,e)=>{Vc.init(t,e),ce.init(t,e)});function ux(t){return Gi(Fl,t)}var Vl=p("ZodE164",(t,e)=>{Jc.init(t,e),ce.init(t,e)});function lx(t){return Bi(Vl,t)}var Jl=p("ZodJWT",(t,e)=>{Kc.init(t,e),ce.init(t,e)});function dx(t){return Xi(Jl,t)}var _o=p("ZodCustomStringFormat",(t,e)=>{Hc.init(t,e),ce.init(t,e)});function px(t,e,r={}){return Gr(_o,t,e,r)}function fx(t){return Gr(_o,"hostname",Qe.hostname,t)}function mx(t){return Gr(_o,"hex",Qe.hex,t)}function hx(t,e){let r=e?.enc??"hex",n=`${t}_${r}`,o=Qe[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Gr(_o,n,o,e)}var ua=p("ZodNumber",(t,e)=>{Ei.init(t,e),F.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Cm(t,n,o,i),t.gt=(n,o)=>t.check(Dt(n,o)),t.gte=(n,o)=>t.check(Ae(n,o)),t.min=(n,o)=>t.check(Ae(n,o)),t.lt=(n,o)=>t.check(jt(n,o)),t.lte=(n,o)=>t.check(We(n,o)),t.max=(n,o)=>t.check(We(n,o)),t.int=n=>t.check(El(n)),t.safe=n=>t.check(El(n)),t.positive=n=>t.check(Dt(0,n)),t.nonnegative=n=>t.check(Ae(0,n)),t.negative=n=>t.check(jt(0,n)),t.nonpositive=n=>t.check(We(0,n)),t.multipleOf=(n,o)=>t.check(hr(n,o)),t.step=(n,o)=>t.check(hr(n,o)),t.finite=()=>t;let r=t._zod.bag;t.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),t.isFinite=!0,t.format=r.format??null});function ne(t){return Zu(ua,t)}var Xr=p("ZodNumberFormat",(t,e)=>{Wc.init(t,e),ua.init(t,e)});function El(t){return Lu(Xr,t)}function gx(t){return qu(Xr,t)}function vx(t){return Fu(Xr,t)}function _x(t){return Vu(Xr,t)}function yx(t){return Ju(Xr,t)}var la=p("ZodBoolean",(t,e)=>{Yn.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Mm(t,r,n,o)});function _e(t){return Ku(la,t)}var da=p("ZodBigInt",(t,e)=>{Ti.init(t,e),F.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Zm(t,n,o,i),t.gte=(n,o)=>t.check(Ae(n,o)),t.min=(n,o)=>t.check(Ae(n,o)),t.gt=(n,o)=>t.check(Dt(n,o)),t.gte=(n,o)=>t.check(Ae(n,o)),t.min=(n,o)=>t.check(Ae(n,o)),t.lt=(n,o)=>t.check(jt(n,o)),t.lte=(n,o)=>t.check(We(n,o)),t.max=(n,o)=>t.check(We(n,o)),t.positive=n=>t.check(Dt(BigInt(0),n)),t.negative=n=>t.check(jt(BigInt(0),n)),t.nonpositive=n=>t.check(We(BigInt(0),n)),t.nonnegative=n=>t.check(Ae(BigInt(0),n)),t.multipleOf=(n,o)=>t.check(hr(n,o));let r=t._zod.bag;t.minValue=r.minimum??null,t.maxValue=r.maximum??null,t.format=r.format??null});function $x(t){return Hu(da,t)}var Kl=p("ZodBigIntFormat",(t,e)=>{Gc.init(t,e),da.init(t,e)});function bx(t){return Wu(Kl,t)}function xx(t){return Gu(Kl,t)}var Ch=p("ZodSymbol",(t,e)=>{Bc.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Lm(t,r,n,o)});function kx(t){return Bu(Ch,t)}var Mh=p("ZodUndefined",(t,e)=>{Xc.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Fm(t,r,n,o)});function Sx(t){return Xu(Mh,t)}var Zh=p("ZodNull",(t,e)=>{Yc.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>qm(t,r,n,o)});function yo(t){return Yu(Zh,t)}var Lh=p("ZodAny",(t,e)=>{Qc.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Km(t,r,n,o)});function wx(){return Qu(Lh)}var qh=p("ZodUnknown",(t,e)=>{eu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Hm(t,r,n,o)});function ue(){return el(qh)}var Fh=p("ZodNever",(t,e)=>{tu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Jm(t,r,n,o)});function Hl(t){return tl(Fh,t)}var Vh=p("ZodVoid",(t,e)=>{ru.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Vm(t,r,n,o)});function zx(t){return rl(Vh,t)}var Wl=p("ZodDate",(t,e)=>{nu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Wm(t,n,o,i),t.min=(n,o)=>t.check(Ae(n,o)),t.max=(n,o)=>t.check(We(n,o));let r=t._zod.bag;t.minDate=r.minimum?new Date(r.minimum):null,t.maxDate=r.maximum?new Date(r.maximum):null});function Ix(t){return nl(Wl,t)}var Jh=p("ZodArray",(t,e)=>{ou.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ah(t,r,n,o),t.element=e.element,t.min=(r,n)=>t.check(Xt(r,n)),t.nonempty=r=>t.check(Xt(1,r)),t.max=(r,n)=>t.check(Hr(r,n)),t.length=(r,n)=>t.check(Wr(r,n)),t.unwrap=()=>t.element});function G(t,e){return Rm(Jh,t,e)}function Ex(t){let e=t._zod.def.shape;return Te(Object.keys(e))}var pa=p("ZodObject",(t,e)=>{Dm.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>sh(t,r,n,o),y.defineLazy(t,"shape",()=>e.shape),t.keyof=()=>Te(Object.keys(t._zod.def.shape)),t.catchall=r=>t.clone({...t._zod.def,catchall:r}),t.passthrough=()=>t.clone({...t._zod.def,catchall:ue()}),t.loose=()=>t.clone({...t._zod.def,catchall:ue()}),t.strict=()=>t.clone({...t._zod.def,catchall:Hl()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=r=>y.extend(t,r),t.safeExtend=r=>y.safeExtend(t,r),t.merge=r=>y.merge(t,r),t.pick=r=>y.pick(t,r),t.omit=r=>y.omit(t,r),t.partial=(...r)=>y.partial(Bl,t,r[0]),t.required=(...r)=>y.required(Xl,t,r[0])});function z(t,e){let r={type:"object",shape:t??{},...y.normalizeParams(e)};return new pa(r)}function Tx(t,e){return new pa({type:"object",shape:t,catchall:Hl(),...y.normalizeParams(e)})}function Ee(t,e){return new pa({type:"object",shape:t,catchall:ue(),...y.normalizeParams(e)})}var fa=p("ZodUnion",(t,e)=>{Qn.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>vl(t,r,n,o),t.options=e.options});function ie(t,e){return new fa({type:"union",options:t,...y.normalizeParams(e)})}var Kh=p("ZodXor",(t,e)=>{fa.init(t,e),iu.init(t,e),t._zod.processJSONSchema=(r,n,o)=>vl(t,r,n,o),t.options=e.options});function Px(t,e){return new Kh({type:"union",options:t,inclusive:!1,...y.normalizeParams(e)})}var Hh=p("ZodDiscriminatedUnion",(t,e)=>{fa.init(t,e),au.init(t,e)});function ma(t,e,r){return new Hh({type:"union",options:e,discriminator:t,...y.normalizeParams(r)})}var Wh=p("ZodIntersection",(t,e)=>{su.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ch(t,r,n,o)});function $o(t,e){return new Wh({type:"intersection",left:t,right:e})}var Gh=p("ZodTuple",(t,e)=>{Pi.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>uh(t,r,n,o),t.rest=r=>t.clone({...t._zod.def,rest:r})});function Bh(t,e,r){let n=e instanceof Z,o=n?r:e,i=n?e:null;return new Gh({type:"tuple",items:t,rest:i,...y.normalizeParams(o)})}var ha=p("ZodRecord",(t,e)=>{cu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>lh(t,r,n,o),t.keyType=e.keyType,t.valueType=e.valueType});function pe(t,e,r){return new ha({type:"record",keyType:t,valueType:e,...y.normalizeParams(r)})}function Ox(t,e,r){let n=Ne(t);return n._zod.values=void 0,new ha({type:"record",keyType:n,valueType:e,...y.normalizeParams(r)})}function jx(t,e,r){return new ha({type:"record",keyType:t,valueType:e,mode:"loose",...y.normalizeParams(r)})}var Xh=p("ZodMap",(t,e)=>{uu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>oh(t,r,n,o),t.keyType=e.keyType,t.valueType=e.valueType,t.min=(...r)=>t.check(Nt(...r)),t.nonempty=r=>t.check(Nt(1,r)),t.max=(...r)=>t.check(gr(...r)),t.size=(...r)=>t.check(Kr(...r))});function Dx(t,e,r){return new Xh({type:"map",keyType:t,valueType:e,...y.normalizeParams(r)})}var Yh=p("ZodSet",(t,e)=>{lu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ih(t,r,n,o),t.min=(...r)=>t.check(Nt(...r)),t.nonempty=r=>t.check(Nt(1,r)),t.max=(...r)=>t.check(gr(...r)),t.size=(...r)=>t.check(Kr(...r))});function Nx(t,e){return new Yh({type:"set",valueType:t,...y.normalizeParams(e)})}var vo=p("ZodEnum",(t,e)=>{du.init(t,e),F.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Gm(t,n,o,i),t.enum=e.entries,t.options=Object.values(e.entries);let r=new Set(Object.keys(e.entries));t.extract=(n,o)=>{let i={};for(let a of n)if(r.has(a))i[a]=e.entries[a];else throw new Error(`Key ${a} not found in enum`);return new vo({...e,checks:[],...y.normalizeParams(o),entries:i})},t.exclude=(n,o)=>{let i={...e.entries};for(let a of n)if(r.has(a))delete i[a];else throw new Error(`Key ${a} not found in enum`);return new vo({...e,checks:[],...y.normalizeParams(o),entries:i})}});function Te(t,e){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new vo({type:"enum",entries:r,...y.normalizeParams(e)})}function Rx(t,e){return new vo({type:"enum",entries:t,...y.normalizeParams(e)})}var Qh=p("ZodLiteral",(t,e)=>{pu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Bm(t,r,n,o),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function T(t,e){return new Qh({type:"literal",values:Array.isArray(t)?t:[t],...y.normalizeParams(e)})}var eg=p("ZodFile",(t,e)=>{fu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Qm(t,r,n,o),t.min=(r,n)=>t.check(Nt(r,n)),t.max=(r,n)=>t.check(gr(r,n)),t.mime=(r,n)=>t.check(uo(Array.isArray(r)?r:[r],n))});function Ax(t){return ll(eg,t)}var tg=p("ZodTransform",(t,e)=>{mu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>nh(t,r,n,o),t._zod.parse=(r,n)=>{if(n.direction==="backward")throw new dr(t.constructor.name);r.addIssue=i=>{if(typeof i=="string")r.issues.push(y.issue(i,r.value,e));else{let a=i;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=r.value),a.inst??(a.inst=t),r.issues.push(y.issue(a))}};let o=e.transform(r.value,r);return o instanceof Promise?o.then(i=>(r.value=i,r)):(r.value=o,r)}});function Gl(t){return new tg({type:"transform",transform:t})}var Bl=p("ZodOptional",(t,e)=>{Oi.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>_l(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function fe(t){return new Bl({type:"optional",innerType:t})}var rg=p("ZodExactOptional",(t,e)=>{hu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>_l(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function ng(t){return new rg({type:"optional",innerType:t})}var og=p("ZodNullable",(t,e)=>{gu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>dh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function ia(t){return new og({type:"nullable",innerType:t})}function Ux(t){return fe(ia(t))}var ig=p("ZodDefault",(t,e)=>{vu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>fh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function ag(t,e){return new ig({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():y.shallowClone(e)}})}var sg=p("ZodPrefault",(t,e)=>{_u.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>mh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function cg(t,e){return new sg({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():y.shallowClone(e)}})}var Xl=p("ZodNonOptional",(t,e)=>{yu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ph(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function ug(t,e){return new Xl({type:"nonoptional",innerType:t,...y.normalizeParams(e)})}var lg=p("ZodSuccess",(t,e)=>{$u.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>eh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function Cx(t){return new lg({type:"success",innerType:t})}var dg=p("ZodCatch",(t,e)=>{bu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>hh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function pg(t,e){return new dg({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}var fg=p("ZodNaN",(t,e)=>{xu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Xm(t,r,n,o)});function Mx(t){return ol(fg,t)}var Yl=p("ZodPipe",(t,e)=>{ku.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>gh(t,r,n,o),t.in=e.in,t.out=e.out});function aa(t,e){return new Yl({type:"pipe",in:t,out:e})}var Ql=p("ZodCodec",(t,e)=>{Yl.init(t,e),eo.init(t,e)});function Zx(t,e,r){return new Ql({type:"pipe",in:t,out:e,transform:r.decode,reverseTransform:r.encode})}var mg=p("ZodReadonly",(t,e)=>{Su.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>vh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function hg(t){return new mg({type:"readonly",innerType:t})}var gg=p("ZodTemplateLiteral",(t,e)=>{wu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Ym(t,r,n,o)});function Lx(t,e){return new gg({type:"template_literal",parts:t,...y.normalizeParams(e)})}var vg=p("ZodLazy",(t,e)=>{Eu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>yh(t,r,n,o),t.unwrap=()=>t._zod.def.getter()});function _g(t){return new vg({type:"lazy",getter:t})}var yg=p("ZodPromise",(t,e)=>{Iu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>_h(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function qx(t){return new yg({type:"promise",innerType:t})}var $g=p("ZodFunction",(t,e)=>{zu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>rh(t,r,n,o)});function Fx(t){return new $g({type:"function",input:Array.isArray(t?.input)?Bh(t?.input):t?.input??G(ue()),output:t?.output??ue()})}var ga=p("ZodCustom",(t,e)=>{Tu.init(t,e),F.init(t,e),t._zod.processJSONSchema=(r,n,o)=>th(t,r,n,o)});function Vx(t){let e=new se({check:"custom"});return e._zod.check=t,e}function ed(t,e){return dl(ga,t??(()=>!0),e)}function bg(t,e={}){return pl(ga,t,e)}function xg(t){return fl(t)}var Jx=ml,Kx=hl;function Hx(t,e={}){let r=new ga({type:"custom",check:"custom",fn:n=>n instanceof t,abort:!0,...y.normalizeParams(e)});return r._zod.bag.Class=t,r._zod.check=n=>{n.value instanceof t||n.issues.push({code:"invalid_type",expected:t.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var Wx=(...t)=>gl({Codec:Ql,Boolean:la,String:sa},...t);function Gx(t){let e=_g(()=>ie([h(t),ne(),_e(),yo(),G(e),pe(h(),e)]));return e}function va(t,e){return aa(Gl(t),e)}var kg;kg||(kg={});var HN={...go,...na,iso:vr};ye(Pu());var rd="2025-11-25";var Sg=[rd,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],Qt="io.modelcontextprotocol/related-task",ya="2.0",be=ed(t=>t!==null&&(typeof t=="object"||typeof t=="function")),wg=ie([h(),ne().int()]),zg=h(),pR=Ee({ttl:ie([ne(),yo()]).optional(),pollInterval:ne().optional()}),Qx=z({ttl:ne().optional()}),ek=z({taskId:h()}),nd=Ee({progressToken:wg.optional(),[Qt]:ek.optional()}),Be=z({_meta:nd.optional()}),bo=Be.extend({task:Qx.optional()}),Ig=t=>bo.safeParse(t).success,xe=z({method:h(),params:Be.loose().optional()}),et=z({_meta:nd.optional()}),tt=z({method:h(),params:et.loose().optional()}),ke=Ee({_meta:nd.optional()}),$a=ie([h(),ne().int()]),Eg=z({jsonrpc:T(ya),id:$a,...xe.shape}).strict(),od=t=>Eg.safeParse(t).success,Tg=z({jsonrpc:T(ya),...tt.shape}).strict(),Pg=t=>Tg.safeParse(t).success,id=z({jsonrpc:T(ya),id:$a,result:ke}).strict(),xo=t=>id.safeParse(t).success;var Y;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError",t[t.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(Y||(Y={}));var ad=z({jsonrpc:T(ya),id:$a.optional(),error:z({code:ne().int(),message:h(),data:ue().optional()})}).strict();var Og=t=>ad.safeParse(t).success;var jg=ie([Eg,Tg,id,ad]),fR=ie([id,ad]),ba=ke.strict(),tk=et.extend({requestId:$a.optional(),reason:h().optional()}),xa=tt.extend({method:T("notifications/cancelled"),params:tk}),rk=z({src:h(),mimeType:h().optional(),sizes:G(h()).optional(),theme:Te(["light","dark"]).optional()}),ko=z({icons:G(rk).optional()}),Yr=z({name:h(),title:h().optional()}),Dg=Yr.extend({...Yr.shape,...ko.shape,version:h(),websiteUrl:h().optional(),description:h().optional()}),nk=$o(z({applyDefaults:_e().optional()}),pe(h(),ue())),ok=va(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0?{form:{}}:t,$o(z({form:nk.optional(),url:be.optional()}),pe(h(),ue()).optional())),ik=Ee({list:be.optional(),cancel:be.optional(),requests:Ee({sampling:Ee({createMessage:be.optional()}).optional(),elicitation:Ee({create:be.optional()}).optional()}).optional()}),ak=Ee({list:be.optional(),cancel:be.optional(),requests:Ee({tools:Ee({call:be.optional()}).optional()}).optional()}),sk=z({experimental:pe(h(),be).optional(),sampling:z({context:be.optional(),tools:be.optional()}).optional(),elicitation:ok.optional(),roots:z({listChanged:_e().optional()}).optional(),tasks:ik.optional()}),ck=Be.extend({protocolVersion:h(),capabilities:sk,clientInfo:Dg}),sd=xe.extend({method:T("initialize"),params:ck});var uk=z({experimental:pe(h(),be).optional(),logging:be.optional(),completions:be.optional(),prompts:z({listChanged:_e().optional()}).optional(),resources:z({subscribe:_e().optional(),listChanged:_e().optional()}).optional(),tools:z({listChanged:_e().optional()}).optional(),tasks:ak.optional()}),lk=ke.extend({protocolVersion:h(),capabilities:uk,serverInfo:Dg,instructions:h().optional()}),cd=tt.extend({method:T("notifications/initialized"),params:et.optional()});var ka=xe.extend({method:T("ping"),params:Be.optional()}),dk=z({progress:ne(),total:fe(ne()),message:fe(h())}),pk=z({...et.shape,...dk.shape,progressToken:wg}),Sa=tt.extend({method:T("notifications/progress"),params:pk}),fk=Be.extend({cursor:zg.optional()}),So=xe.extend({params:fk.optional()}),wo=ke.extend({nextCursor:zg.optional()}),mk=Te(["working","input_required","completed","failed","cancelled"]),zo=z({taskId:h(),status:mk,ttl:ie([ne(),yo()]),createdAt:h(),lastUpdatedAt:h(),pollInterval:fe(ne()),statusMessage:fe(h())}),Qr=ke.extend({task:zo}),hk=et.merge(zo),Io=tt.extend({method:T("notifications/tasks/status"),params:hk}),wa=xe.extend({method:T("tasks/get"),params:Be.extend({taskId:h()})}),za=ke.merge(zo),Ia=xe.extend({method:T("tasks/result"),params:Be.extend({taskId:h()})}),mR=ke.loose(),Ea=So.extend({method:T("tasks/list")}),Ta=wo.extend({tasks:G(zo)}),Pa=xe.extend({method:T("tasks/cancel"),params:Be.extend({taskId:h()})}),Ng=ke.merge(zo),Rg=z({uri:h(),mimeType:fe(h()),_meta:pe(h(),ue()).optional()}),Ag=Rg.extend({text:h()}),ud=h().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Ug=Rg.extend({blob:ud}),Eo=Te(["user","assistant"]),en=z({audience:G(Eo).optional(),priority:ne().min(0).max(1).optional(),lastModified:vr.datetime({offset:!0}).optional()}),Cg=z({...Yr.shape,...ko.shape,uri:h(),description:fe(h()),mimeType:fe(h()),annotations:en.optional(),_meta:fe(Ee({}))}),gk=z({...Yr.shape,...ko.shape,uriTemplate:h(),description:fe(h()),mimeType:fe(h()),annotations:en.optional(),_meta:fe(Ee({}))}),vk=So.extend({method:T("resources/list")}),_k=wo.extend({resources:G(Cg)}),yk=So.extend({method:T("resources/templates/list")}),$k=wo.extend({resourceTemplates:G(gk)}),ld=Be.extend({uri:h()}),bk=ld,xk=xe.extend({method:T("resources/read"),params:bk}),kk=ke.extend({contents:G(ie([Ag,Ug]))}),Sk=tt.extend({method:T("notifications/resources/list_changed"),params:et.optional()}),wk=ld,zk=xe.extend({method:T("resources/subscribe"),params:wk}),Ik=ld,Ek=xe.extend({method:T("resources/unsubscribe"),params:Ik}),Tk=et.extend({uri:h()}),Pk=tt.extend({method:T("notifications/resources/updated"),params:Tk}),Ok=z({name:h(),description:fe(h()),required:fe(_e())}),jk=z({...Yr.shape,...ko.shape,description:fe(h()),arguments:fe(G(Ok)),_meta:fe(Ee({}))}),Dk=So.extend({method:T("prompts/list")}),Nk=wo.extend({prompts:G(jk)}),Rk=Be.extend({name:h(),arguments:pe(h(),h()).optional()}),Ak=xe.extend({method:T("prompts/get"),params:Rk}),dd=z({type:T("text"),text:h(),annotations:en.optional(),_meta:pe(h(),ue()).optional()}),pd=z({type:T("image"),data:ud,mimeType:h(),annotations:en.optional(),_meta:pe(h(),ue()).optional()}),fd=z({type:T("audio"),data:ud,mimeType:h(),annotations:en.optional(),_meta:pe(h(),ue()).optional()}),Uk=z({type:T("tool_use"),name:h(),id:h(),input:pe(h(),ue()),_meta:pe(h(),ue()).optional()}),Ck=z({type:T("resource"),resource:ie([Ag,Ug]),annotations:en.optional(),_meta:pe(h(),ue()).optional()}),Mk=Cg.extend({type:T("resource_link")}),md=ie([dd,pd,fd,Mk,Ck]),Zk=z({role:Eo,content:md}),Lk=ke.extend({description:h().optional(),messages:G(Zk)}),qk=tt.extend({method:T("notifications/prompts/list_changed"),params:et.optional()}),Fk=z({title:h().optional(),readOnlyHint:_e().optional(),destructiveHint:_e().optional(),idempotentHint:_e().optional(),openWorldHint:_e().optional()}),Vk=z({taskSupport:Te(["required","optional","forbidden"]).optional()}),Mg=z({...Yr.shape,...ko.shape,description:h().optional(),inputSchema:z({type:T("object"),properties:pe(h(),be).optional(),required:G(h()).optional()}).catchall(ue()),outputSchema:z({type:T("object"),properties:pe(h(),be).optional(),required:G(h()).optional()}).catchall(ue()).optional(),annotations:Fk.optional(),execution:Vk.optional(),_meta:pe(h(),ue()).optional()}),hd=So.extend({method:T("tools/list")}),Jk=wo.extend({tools:G(Mg)}),Oa=ke.extend({content:G(md).default([]),structuredContent:pe(h(),ue()).optional(),isError:_e().optional()}),hR=Oa.or(ke.extend({toolResult:ue()})),Kk=bo.extend({name:h(),arguments:pe(h(),ue()).optional()}),To=xe.extend({method:T("tools/call"),params:Kk}),Hk=tt.extend({method:T("notifications/tools/list_changed"),params:et.optional()}),gR=z({autoRefresh:_e().default(!0),debounceMs:ne().int().nonnegative().default(300)}),Po=Te(["debug","info","notice","warning","error","critical","alert","emergency"]),Wk=Be.extend({level:Po}),gd=xe.extend({method:T("logging/setLevel"),params:Wk}),Gk=et.extend({level:Po,logger:h().optional(),data:ue()}),Bk=tt.extend({method:T("notifications/message"),params:Gk}),Xk=z({name:h().optional()}),Yk=z({hints:G(Xk).optional(),costPriority:ne().min(0).max(1).optional(),speedPriority:ne().min(0).max(1).optional(),intelligencePriority:ne().min(0).max(1).optional()}),Qk=z({mode:Te(["auto","required","none"]).optional()}),eS=z({type:T("tool_result"),toolUseId:h().describe("The unique identifier for the corresponding tool call."),content:G(md).default([]),structuredContent:z({}).loose().optional(),isError:_e().optional(),_meta:pe(h(),ue()).optional()}),tS=ma("type",[dd,pd,fd]),_a=ma("type",[dd,pd,fd,Uk,eS]),rS=z({role:Eo,content:ie([_a,G(_a)]),_meta:pe(h(),ue()).optional()}),nS=bo.extend({messages:G(rS),modelPreferences:Yk.optional(),systemPrompt:h().optional(),includeContext:Te(["none","thisServer","allServers"]).optional(),temperature:ne().optional(),maxTokens:ne().int(),stopSequences:G(h()).optional(),metadata:be.optional(),tools:G(Mg).optional(),toolChoice:Qk.optional()}),oS=xe.extend({method:T("sampling/createMessage"),params:nS}),Oo=ke.extend({model:h(),stopReason:fe(Te(["endTurn","stopSequence","maxTokens"]).or(h())),role:Eo,content:tS}),vd=ke.extend({model:h(),stopReason:fe(Te(["endTurn","stopSequence","maxTokens","toolUse"]).or(h())),role:Eo,content:ie([_a,G(_a)])}),iS=z({type:T("boolean"),title:h().optional(),description:h().optional(),default:_e().optional()}),aS=z({type:T("string"),title:h().optional(),description:h().optional(),minLength:ne().optional(),maxLength:ne().optional(),format:Te(["email","uri","date","date-time"]).optional(),default:h().optional()}),sS=z({type:Te(["number","integer"]),title:h().optional(),description:h().optional(),minimum:ne().optional(),maximum:ne().optional(),default:ne().optional()}),cS=z({type:T("string"),title:h().optional(),description:h().optional(),enum:G(h()),default:h().optional()}),uS=z({type:T("string"),title:h().optional(),description:h().optional(),oneOf:G(z({const:h(),title:h()})),default:h().optional()}),lS=z({type:T("string"),title:h().optional(),description:h().optional(),enum:G(h()),enumNames:G(h()).optional(),default:h().optional()}),dS=ie([cS,uS]),pS=z({type:T("array"),title:h().optional(),description:h().optional(),minItems:ne().optional(),maxItems:ne().optional(),items:z({type:T("string"),enum:G(h())}),default:G(h()).optional()}),fS=z({type:T("array"),title:h().optional(),description:h().optional(),minItems:ne().optional(),maxItems:ne().optional(),items:z({anyOf:G(z({const:h(),title:h()}))}),default:G(h()).optional()}),mS=ie([pS,fS]),hS=ie([lS,dS,mS]),gS=ie([hS,iS,aS,sS]),vS=bo.extend({mode:T("form").optional(),message:h(),requestedSchema:z({type:T("object"),properties:pe(h(),gS),required:G(h()).optional()})}),_S=bo.extend({mode:T("url"),message:h(),elicitationId:h(),url:h().url()}),yS=ie([vS,_S]),$S=xe.extend({method:T("elicitation/create"),params:yS}),bS=et.extend({elicitationId:h()}),xS=tt.extend({method:T("notifications/elicitation/complete"),params:bS}),tn=ke.extend({action:Te(["accept","decline","cancel"]),content:va(t=>t===null?void 0:t,pe(h(),ie([h(),ne(),_e(),G(h())])).optional())}),kS=z({type:T("ref/resource"),uri:h()});var SS=z({type:T("ref/prompt"),name:h()}),wS=Be.extend({ref:ie([SS,kS]),argument:z({name:h(),value:h()}),context:z({arguments:pe(h(),h()).optional()}).optional()}),zS=xe.extend({method:T("completion/complete"),params:wS});var IS=ke.extend({completion:Ee({values:G(h()).max(100),total:fe(ne().int()),hasMore:fe(_e())})}),ES=z({uri:h().startsWith("file://"),name:h().optional(),_meta:pe(h(),ue()).optional()}),TS=xe.extend({method:T("roots/list"),params:Be.optional()}),_d=ke.extend({roots:G(ES)}),PS=tt.extend({method:T("notifications/roots/list_changed"),params:et.optional()}),vR=ie([ka,sd,zS,gd,Ak,Dk,vk,yk,xk,zk,Ek,To,hd,wa,Ia,Ea,Pa]),_R=ie([xa,Sa,cd,PS,Io]),yR=ie([ba,Oo,vd,tn,_d,za,Ta,Qr]),$R=ie([ka,oS,$S,TS,wa,Ia,Ea,Pa]),bR=ie([xa,Sa,Bk,Pk,Sk,Hk,qk,Io,xS]),xR=ie([ba,lk,IS,Lk,Nk,_k,$k,kk,Oa,Jk,za,Ta,Qr]),V=class t extends Error{constructor(e,r,n){super(`MCP error ${e}: ${r}`),this.code=e,this.data=n,this.name="McpError"}static fromError(e,r,n){if(e===Y.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new td(o.elicitations,r)}return new t(e,r,n)}},td=class extends V{constructor(e,r=`URL elicitation${e.length>1?"s":""} required`){super(Y.UrlElicitationRequired,r,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}};function er(t){return t==="completed"||t==="failed"||t==="cancelled"}var r4=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function yd(t){let r=ra(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=kh(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function $d(t,e){let r=Yt(t,e);if(!r.success)throw r.error;return r.data}var AS=6e4,ja=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(xa,r=>{this._oncancel(r)}),this.setNotificationHandler(Sa,r=>{this._onprogress(r)}),this.setRequestHandler(ka,r=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(wa,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new V(Y.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(Ia,async(r,n)=>{let o=async()=>{let i=r.params.taskId;if(this._taskMessageQueue){let s;for(;s=await this._taskMessageQueue.dequeue(i,n.sessionId);){if(s.type==="response"||s.type==="error"){let c=s.message,u=c.id,l=this._requestResolvers.get(u);if(l)if(this._requestResolvers.delete(u),s.type==="response")l(c);else{let d=c,f=new V(d.error.code,d.error.message,d.error.data);l(f)}else{let d=s.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${u}`))}continue}await this._transport?.send(s.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(i,n.sessionId);if(!a)throw new V(Y.InvalidParams,`Task not found: ${i}`);if(!er(a.status))return await this._waitForTaskUpdate(i,n.signal),await o();if(er(a.status)){let s=await this._taskStore.getTaskResult(i,n.sessionId);return this._clearTaskQueue(i),{...s,_meta:{...s._meta,[Qt]:{taskId:i}}}}return await o()};return await o()}),this.setRequestHandler(Ea,async(r,n)=>{try{let{tasks:o,nextCursor:i}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:i,_meta:{}}}catch(o){throw new V(Y.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(Pa,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new V(Y.InvalidParams,`Task not found: ${r.params.taskId}`);if(er(o.status))throw new V(Y.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 i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new V(Y.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...i}}catch(o){throw o instanceof V?o:new V(Y.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,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:i,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),V.fromError(Y.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=i=>{n?.(i),this._onerror(i)};let o=this._transport?.onmessage;this._transport.onmessage=(i,a)=>{o?.(i,a),xo(i)||Og(i)?this._onresponse(i):od(i)?this._onrequest(i,a):Pg(i)?this._onnotification(i):this._onerror(new Error(`Unknown message type: ${JSON.stringify(i)}`))},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=V.fromError(Y.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,i=e.params?._meta?.[Qt]?.taskId;if(n===void 0){let l={jsonrpc:"2.0",id:e.id,error:{code:Y.MethodNotFound,message:"Method not found"}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{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 a=new AbortController;this._requestHandlerAbortControllers.set(e.id,a);let s=Ig(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,o?.sessionId):void 0,u={signal:a.signal,sessionId:o?.sessionId,_meta:e.params?._meta,sendNotification:async l=>{if(a.signal.aborted)return;let d={relatedRequestId:e.id};i&&(d.relatedTask={taskId:i}),await this.notification(l,d)},sendRequest:async(l,d,f)=>{if(a.signal.aborted)throw new V(Y.ConnectionClosed,"Request was cancelled");let m={...f,relatedRequestId:e.id};i&&!m.relatedTask&&(m.relatedTask={taskId:i});let g=m.relatedTask?.taskId??i;return g&&c&&await c.updateTaskStatus(g,"input_required"),await this.request(l,d,m)},authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo,taskId:i,taskStore:c,taskRequestedTtl:s?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,u)).then(async l=>{if(a.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:e.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:"response",message:d,timestamp:Date.now()},o?.sessionId):await o?.send(d)},async l=>{if(a.signal.aborted)return;let d={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(l.code)?l.code:Y.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{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),i=this._progressHandlers.get(o);if(!i){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(o),s=this._timeoutInfo.get(o);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),a(c);return}i(n)}_onresponse(e){let r=Number(e.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),xo(e))n(e);else{let a=new V(e.error.code,e.error.message,e.error.data);n(a)}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 i=!1;if(xo(e)&&e.result&&typeof e.result=="object"){let a=e.result;if(a.task&&typeof a.task=="object"){let s=a.task;typeof s.taskId=="string"&&(i=!0,this._taskProgressTokens.set(s.taskId,r))}}if(i||this._progressHandlers.delete(r),xo(e))o(e);else{let a=V.fromError(e.error.code,e.error.message,e.error.data);o(a)}}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(a){yield{type:"error",error:a instanceof V?a:new V(Y.InternalError,String(a))}}return}let i;try{let a=await this.request(e,Qr,n);if(a.task)i=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new V(Y.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:i},n);if(yield{type:"taskStatus",task:s},er(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:i},r,n)}:s.status==="failed"?yield{type:"error",error:new V(Y.InternalError,`Task ${i} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new V(Y.InternalError,`Task ${i} was cancelled`)});return}if(s.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:i},r,n)};return}let c=s.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(u=>setTimeout(u,c)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof V?a:new V(Y.InternalError,String(a))}}}request(e,r,n){let{relatedRequestId:o,resumptionToken:i,onresumptiontoken:a,task:s,relatedTask:c}=n??{};return new Promise((u,l)=>{let d=O=>{l(O)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),s&&this.assertTaskCapability(e.method)}catch(O){d(O);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,m={...e,jsonrpc:"2.0",id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),m.params={...e.params,_meta:{...e.params?._meta||{},progressToken:f}}),s&&(m.params={...m.params,task:s}),c&&(m.params={...m.params,_meta:{...m.params?._meta||{},[Qt]:c}});let g=O=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(O)}},{relatedRequestId:o,resumptionToken:i,onresumptiontoken:a}).catch(C=>this._onerror(new Error(`Failed to send cancellation: ${C}`)));let I=O instanceof V?O:new V(Y.RequestTimeout,String(O));l(I)};this._responseHandlers.set(f,O=>{if(!n?.signal?.aborted){if(O instanceof Error)return l(O);try{let I=Yt(r,O.result);I.success?u(I.data):l(I.error)}catch(I){l(I)}}}),n?.signal?.addEventListener("abort",()=>{g(n?.signal?.reason)});let v=n?.timeout??AS,$=()=>g(V.fromError(Y.RequestTimeout,"Request timed out",{timeout:v}));this._setupTimeout(f,v,n?.maxTotalTimeout,$,n?.resetTimeoutOnProgress??!1);let k=c?.taskId;if(k){let O=I=>{let C=this._responseHandlers.get(f);C?C(I):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,O),this._enqueueTaskMessage(k,{type:"request",message:m,timestamp:Date.now()}).catch(I=>{this._cleanupTimeout(f),l(I)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:i,onresumptiontoken:a}).catch(O=>{this._cleanupTimeout(f),l(O)})})}async getTask(e,r){return this.request({method:"tasks/get",params:e},za,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},Ta,r)}async cancelTask(e,r){return this.request({method:"tasks/cancel",params:e},Ng,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 s={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[Qt]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:s,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 s={...e,jsonrpc:"2.0"};r?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[Qt]:r.relatedTask}}}),this._transport?.send(s,r).catch(c=>this._onerror(c))});return}let a={...e,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[Qt]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(e,r){let n=yd(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,i)=>{let a=$d(e,o);return Promise.resolve(r(a,i))})}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=yd(e);this._notificationHandlers.set(n,o=>{let i=$d(e,o);return Promise.resolve(r(i))})}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"&&od(o.message)){let i=o.message.id,a=this._requestResolvers.get(i);a?(a(new V(Y.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(i)):this._onerror(new Error(`Resolver missing for request ${i} 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,i)=>{if(r.aborted){i(new V(Y.InvalidRequest,"Request cancelled"));return}let a=setTimeout(o,n);r.addEventListener("abort",()=>{clearTimeout(a),i(new V(Y.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 i=await n.getTask(o,r);if(!i)throw new V(Y.InvalidParams,"Failed to retrieve task: Task not found");return i},storeTaskResult:async(o,i,a)=>{await n.storeTaskResult(o,i,a,r);let s=await n.getTask(o,r);if(s){let c=Io.parse({method:"notifications/tasks/status",params:s});await this.notification(c),er(s.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,i,a)=>{let s=await n.getTask(o,r);if(!s)throw new V(Y.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(er(s.status))throw new V(Y.InvalidParams,`Cannot update task "${o}" from terminal status "${s.status}" to "${i}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,i,a,r);let c=await n.getTask(o,r);if(c){let u=Io.parse({method:"notifications/tasks/status",params:c});await this.notification(u),er(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function Zg(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Lg(t,e){let r={...t};for(let n in e){let o=n,i=e[o];if(i===void 0)continue;let a=r[o];Zg(a)&&Zg(i)?r[o]={...a,...i}:r[o]=i}return r}var Iy=li(af(),1),Ey=li(zy(),1);function IT(){let t=new Iy.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,Ey.default)(t),t}var ms=class{constructor(e){this._ajv=e??IT()}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 hs=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}createMessageStream(e,r){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let o=e.messages[e.messages.length-1],i=Array.isArray(o.content)?o.content:[o.content],a=i.some(l=>l.type==="tool_result"),s=e.messages.length>1?e.messages[e.messages.length-2]:void 0,c=s?Array.isArray(s.content)?s.content:[s.content]:[],u=c.some(l=>l.type==="tool_use");if(a){if(i.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(f=>f.type==="tool_use").map(f=>f.id)),d=new Set(i.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(l.size!==d.size||![...l].every(f=>d.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:e},Oo,r)}elicitInputStream(e,r){let n=this._server.getClientCapabilities(),o=e.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let i=o==="form"&&e.mode===void 0?{...e,mode:"form"}:e;return this.requestStream({method:"elicitation/create",params:i},tn,r)}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 Ty(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 Py(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 gs=class extends ja{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Po.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let i=this._loggingLevels.get(o);return i?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(i):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ms,this.setRequestHandler(sd,n=>this._oninitialize(n)),this.setNotificationHandler(cd,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(gd,async(n,o)=>{let i=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,s=Po.safeParse(a);return s.success&&this._loggingLevels.set(i,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new hs(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Lg(this._capabilities,e)}setRequestHandler(e,r){let o=ra(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let i;if(Br(o)){let s=o;i=s._zod?.def?.value??s.value}else{let s=o;i=s._def?.value??s.value}if(typeof i!="string")throw new Error("Schema method literal must be a string");if(i==="tools/call"){let s=async(c,u)=>{let l=Yt(To,c);if(!l.success){let g=l.error instanceof Error?l.error.message:String(l.error);throw new V(Y.InvalidParams,`Invalid tools/call request: ${g}`)}let{params:d}=l.data,f=await Promise.resolve(r(c,u));if(d.task){let g=Yt(Qr,f);if(!g.success){let v=g.error instanceof Error?g.error.message:String(g.error);throw new V(Y.InvalidParams,`Invalid task creation result: ${v}`)}return g.data}let m=Yt(Oa,f);if(!m.success){let g=m.error instanceof Error?m.error.message:String(m.error);throw new V(Y.InvalidParams,`Invalid tools/call result: ${g}`)}return m.data};return super.setRequestHandler(e,s)}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){Py(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&Ty(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:Sg.includes(r)?r:rd,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"},ba)}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],i=o.some(u=>u.type==="tool_result"),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,s=a?Array.isArray(a.content)?a.content:[a.content]:[],c=s.some(u=>u.type==="tool_use");if(i){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(s.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},vd,r):this.request({method:"sampling/createMessage",params:e},Oo,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},tn,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"},i=await this.request({method:"elicitation/create",params:o},tn,r);if(i.action==="accept"&&i.content&&o.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(o.requestedSchema)(i.content);if(!s.valid)throw new V(Y.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof V?a:new V(Y.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return i}}}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},_d,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 mf=li(require("node:process"),1);var vs=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
|
|
56
56
|
`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),ET(r)}clear(){this._buffer=void 0}};function ET(t){return jg.parse(JSON.parse(t))}function Oy(t){return JSON.stringify(t)+`
|
|
57
|
-
`}var _s=class{constructor(e=mf.default.stdin,r=mf.default.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new vs,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(r=>{let n=Oy(e);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var gf=li(require("path"),1);var hf={DEFAULT:3e5,HEALTH_CHECK:3e3,POST_SPAWN_WAIT:5e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,WORKER_STARTUP_WAIT:1e3,PRE_RESTART_SETTLE_DELAY:2e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5};function jy(t){return process.platform==="win32"?Math.round(t*hf.WINDOWS_MULTIPLIER):t}var wt=require("fs"),ys=require("path"),Ry=require("os");var Dy="bugfix,feature,refactor,discovery,decision,change",Ny="how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off";var qt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"cli",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_OPENROUTER_MAX_TOKENS:"100000",CLAUDE_MEM_DATA_DIR:(0,ys.join)((0,Ry.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:Dy,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:Ny,CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let r=this.get(e);return parseInt(r,10)}static getBool(e){let r=this.get(e);return r==="true"||r===!0}static applyEnvOverrides(e){let r={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(e){try{if(!(0,wt.existsSync)(e)){let a=this.getAllDefaults();try{let s=(0,ys.dirname)(e);(0,wt.existsSync)(s)||(0,wt.mkdirSync)(s,{recursive:!0}),(0,wt.writeFileSync)(e,JSON.stringify(a,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",e)}catch(s){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,s)}return this.applyEnvOverrides(a)}let r=(0,wt.readFileSync)(e,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{(0,wt.writeFileSync)(e,JSON.stringify(o,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(a){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,a)}}let i={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))o[a]!==void 0&&(i[a]=o[a]);return this.applyEnvOverrides(i)}catch(r){return console.warn("[SETTINGS] Failed to load settings, using defaults:",e,r),this.applyEnvOverrides(this.getAllDefaults())}}};var $e=require("path"),Ay=require("os");var Uy=require("url");var OT={};function TT(){return typeof __dirname<"u"?__dirname:(0,$e.dirname)((0,Uy.fileURLToPath)(OT.url))}var ZC=TT(),Ft=qt.get("CLAUDE_MEM_DATA_DIR"),$s=process.env.CLAUDE_CONFIG_DIR||(0,$e.join)((0,Ay.homedir)(),".claude"),PT=(0,$e.join)($s,"plugins","marketplaces","thedotmack"),LC=(0,$e.join)(Ft,"archives"),qC=(0,$e.join)(Ft,"logs"),FC=(0,$e.join)(Ft,"trash"),VC=(0,$e.join)(Ft,"backups"),JC=(0,$e.join)(Ft,"modes"),KC=(0,$e.join)(Ft,"settings.json"),HC=(0,$e.join)(Ft,"claude-mem.db"),WC=(0,$e.join)(Ft,"vector-db"),GC=(0,$e.join)(Ft,"observer-sessions"),BC=(0,$e.join)($s,"settings.json"),XC=(0,$e.join)($s,"commands"),YC=(0,$e.join)($s,"CLAUDE.md");var oM=(()=>{let t=process.env.CLAUDE_MEM_HEALTH_TIMEOUT_MS;if(t){let e=parseInt(t,10);if(Number.isFinite(e)&&e>=500&&e<=3e5)return e;ge.warn("SYSTEM","Invalid CLAUDE_MEM_HEALTH_TIMEOUT_MS, using default",{value:t,min:500,max:3e5})}return jy(hf.HEALTH_CHECK)})();var bs=null,xs=null;function Cy(){if(bs!==null)return bs;let t=gf.default.join(qt.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=qt.loadFromFile(t);return bs=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),bs}function My(){if(xs!==null)return xs;let t=gf.default.join(qt.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return xs=qt.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,xs}var jT="10.4.
|
|
57
|
+
`}var _s=class{constructor(e=mf.default.stdin,r=mf.default.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new vs,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(r=>{let n=Oy(e);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var gf=li(require("path"),1);var hf={DEFAULT:3e5,HEALTH_CHECK:3e3,POST_SPAWN_WAIT:5e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,WORKER_STARTUP_WAIT:1e3,PRE_RESTART_SETTLE_DELAY:2e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5};function jy(t){return process.platform==="win32"?Math.round(t*hf.WINDOWS_MULTIPLIER):t}var wt=require("fs"),ys=require("path"),Ry=require("os");var Dy="bugfix,feature,refactor,discovery,decision,change",Ny="how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off";var qt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"cli",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_OPENROUTER_MAX_TOKENS:"100000",CLAUDE_MEM_DATA_DIR:(0,ys.join)((0,Ry.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:Dy,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:Ny,CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let r=this.get(e);return parseInt(r,10)}static getBool(e){let r=this.get(e);return r==="true"||r===!0}static applyEnvOverrides(e){let r={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(e){try{if(!(0,wt.existsSync)(e)){let a=this.getAllDefaults();try{let s=(0,ys.dirname)(e);(0,wt.existsSync)(s)||(0,wt.mkdirSync)(s,{recursive:!0}),(0,wt.writeFileSync)(e,JSON.stringify(a,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",e)}catch(s){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,s)}return this.applyEnvOverrides(a)}let r=(0,wt.readFileSync)(e,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{(0,wt.writeFileSync)(e,JSON.stringify(o,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(a){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,a)}}let i={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))o[a]!==void 0&&(i[a]=o[a]);return this.applyEnvOverrides(i)}catch(r){return console.warn("[SETTINGS] Failed to load settings, using defaults:",e,r),this.applyEnvOverrides(this.getAllDefaults())}}};var $e=require("path"),Ay=require("os");var Uy=require("url");var OT={};function TT(){return typeof __dirname<"u"?__dirname:(0,$e.dirname)((0,Uy.fileURLToPath)(OT.url))}var ZC=TT(),Ft=qt.get("CLAUDE_MEM_DATA_DIR"),$s=process.env.CLAUDE_CONFIG_DIR||(0,$e.join)((0,Ay.homedir)(),".claude"),PT=(0,$e.join)($s,"plugins","marketplaces","thedotmack"),LC=(0,$e.join)(Ft,"archives"),qC=(0,$e.join)(Ft,"logs"),FC=(0,$e.join)(Ft,"trash"),VC=(0,$e.join)(Ft,"backups"),JC=(0,$e.join)(Ft,"modes"),KC=(0,$e.join)(Ft,"settings.json"),HC=(0,$e.join)(Ft,"claude-mem.db"),WC=(0,$e.join)(Ft,"vector-db"),GC=(0,$e.join)(Ft,"observer-sessions"),BC=(0,$e.join)($s,"settings.json"),XC=(0,$e.join)($s,"commands"),YC=(0,$e.join)($s,"CLAUDE.md");var oM=(()=>{let t=process.env.CLAUDE_MEM_HEALTH_TIMEOUT_MS;if(t){let e=parseInt(t,10);if(Number.isFinite(e)&&e>=500&&e<=3e5)return e;ge.warn("SYSTEM","Invalid CLAUDE_MEM_HEALTH_TIMEOUT_MS, using default",{value:t,min:500,max:3e5})}return jy(hf.HEALTH_CHECK)})();var bs=null,xs=null;function Cy(){if(bs!==null)return bs;let t=gf.default.join(qt.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=qt.loadFromFile(t);return bs=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),bs}function My(){if(xs!==null)return xs;let t=gf.default.join(qt.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return xs=qt.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,xs}var jT="10.4.3";console.log=(...t)=>{ge.error("CONSOLE","Intercepted console output (MCP protocol protection)",void 0,{args:t})};var DT=Cy(),NT=My(),ui=`http://${NT}:${DT}`,Zy={search:"/api/search",timeline:"/api/timeline"};async function Ly(t,e){ge.debug("SYSTEM","\u2192 Worker API",void 0,{endpoint:t,params:e});try{let r=new URLSearchParams;for(let[a,s]of Object.entries(e))s!=null&&r.append(a,String(s));let n=`${ui}${t}?${r}`,o=await fetch(n);if(!o.ok){let a=await o.text();throw new Error(`Worker API error (${o.status}): ${a}`)}let i=await o.json();return ge.debug("SYSTEM","\u2190 Worker API success",void 0,{endpoint:t}),i}catch(r){return ge.error("SYSTEM","\u2190 Worker API error",{endpoint:t},r),{content:[{type:"text",text:`Error calling Worker API: ${r instanceof Error?r.message:String(r)}`}],isError:!0}}}async function qy(t,e){ge.debug("HTTP","Worker API request (POST)",void 0,{endpoint:t});try{let r=`${ui}${t}`,n=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok){let i=await n.text();throw new Error(`Worker API error (${n.status}): ${i}`)}let o=await n.json();return ge.debug("HTTP","Worker API success (POST)",void 0,{endpoint:t}),{content:[{type:"text",text:JSON.stringify(o,null,2)}]}}catch(r){return ge.error("HTTP","Worker API error (POST)",{endpoint:t},r),{content:[{type:"text",text:`Error calling Worker API: ${r instanceof Error?r.message:String(r)}`}],isError:!0}}}async function RT(){try{return(await fetch(`${ui}/api/health`)).ok}catch(t){return ge.debug("SYSTEM","Worker health check failed",{},t),!1}}var Fy=[{name:"__IMPORTANT",description:`3-LAYER WORKFLOW (ALWAYS FOLLOW):
|
|
58
58
|
1. search(query) \u2192 Get index with IDs (~50-100 tokens/result)
|
|
59
59
|
2. timeline(anchor=ID) \u2192 Get context around interesting results
|
|
60
60
|
3. get_observations([IDs]) \u2192 Fetch full details ONLY for filtered IDs
|
|
@@ -920,7 +920,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
920
920
|
WHERE s.project = ?
|
|
921
921
|
`).get(r);b.info("CHROMA_SYNC","Backfilling user prompts",{project:r,missing:v.length,existing:n.prompts.size,total:y.count});let _=[];for(let x of v)_.push(this.formatUserPromptDoc(x));for(let x=0;x<_.length;x+=this.BATCH_SIZE){let S=_.slice(x,x+this.BATCH_SIZE);await this.addDocuments(S),b.debug("CHROMA_SYNC","Backfill progress",{project:r,progress:`${Math.min(x+this.BATCH_SIZE,_.length)}/${_.length}`})}b.info("CHROMA_SYNC","Smart backfill complete",{project:r,synced:{observationDocs:u.length,summaryDocs:f.length,promptDocs:_.length},skipped:{observations:n.observations.size,summaries:n.summaries.size,prompts:n.prompts.size}})}catch(o){throw b.error("CHROMA_SYNC","Backfill failed",{project:r},o),new Error(`Backfill failed: ${o instanceof Error?o.message:String(o)}`)}finally{i.close()}}async queryChroma(e,r,n){await this.ensureCollectionExists();try{let o=await Gi.getInstance().callTool("chroma_query_documents",{collection_name:this.collectionName,query_texts:[e],n_results:r,...n&&{where:n},include:["documents","metadatas","distances"]}),s=[],a=new Set,c=o?.ids?.[0]||[],u=o?.metadatas?.[0]||[],l=o?.distances?.[0]||[],d=[],p=[];for(let m=0;m<c.length;m++){let f=c[m],g=f.match(/obs_(\d+)_/),h=f.match(/summary_(\d+)_/),v=f.match(/prompt_(\d+)/),y=null;g?y=parseInt(g[1],10):h?y=parseInt(h[1],10):v&&(y=parseInt(v[1],10)),y!==null&&!a.has(y)&&(a.add(y),s.push(y),d.push(u[m]??null),p.push(l[m]??0))}return{ids:s,distances:p,metadatas:d}}catch(i){let o=i instanceof Error?i.message:String(i);throw o.includes("ECONNREFUSED")||o.includes("ENOTFOUND")||o.includes("fetch failed")||o.includes("subprocess closed")||o.includes("timed out")?(this.collectionCreated=!1,b.error("CHROMA_SYNC","Connection lost during query",{project:this.project,query:e},i),new Error(`Chroma query failed - connection lost: ${o}`)):(b.error("CHROMA_SYNC","Query failed",{project:this.project,query:e},i),i)}}static async backfillAllProjects(){let e=new Wi,r=new t("claude-mem");try{let n=e.db.prepare("SELECT DISTINCT project FROM observations WHERE project IS NOT NULL AND project != ?").all("");b.info("CHROMA_SYNC",`Backfill check for ${n.length} projects`);for(let{project:i}of n)try{await r.ensureBackfilled(i)}catch(o){b.error("CHROMA_SYNC",`Backfill failed for project: ${i}`,{},o)}}finally{await r.close(),e.close()}}async close(){b.info("CHROMA_SYNC","ChromaSync closed",{project:this.project})}};var Af=require("fs"),k0=require("path"),tA=require("os"),Z7="claude-mem@thedotmack";function Nf(){try{let t=process.env.CLAUDE_CONFIG_DIR||(0,k0.join)((0,tA.homedir)(),".claude"),e=(0,k0.join)(t,"settings.json");if(!(0,Af.existsSync)(e))return!1;let r=(0,Af.readFileSync)(e,"utf-8");return JSON.parse(r)?.enabledPlugins?.[Z7]===!1}catch{return!1}}var hi=Ye(require("path"),1),T0=require("os"),Dt=require("fs"),Ki=require("child_process"),iA=require("util");de();Tn();var Mf=(0,iA.promisify)(Ki.exec),I0=hi.default.join((0,T0.homedir)(),".claude-mem"),gi=hi.default.join(I0,"worker.pid");var rA=30;function nA(t){return t?/(^|[\\/])bun(\.exe)?$/i.test(t.trim()):!1}function H7(t,e){let r=e==="win32"?`where ${t}`:`which ${t}`;try{return(0,Ki.execSync)(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0}).split(/\r?\n/).map(o=>o.trim()).find(o=>o.length>0)||null}catch{return null}}function B7(t={}){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(e!=="win32"||nA(r))return r;let n=t.env??process.env,i=t.homeDirectory??(0,T0.homedir)(),o=t.pathExists??Dt.existsSync,s=t.lookupInPath??H7,a=[n.BUN,n.BUN_PATH,hi.default.join(i,".bun","bin","bun.exe"),hi.default.join(i,".bun","bin","bun"),n.USERPROFILE?hi.default.join(n.USERPROFILE,".bun","bin","bun.exe"):void 0,n.LOCALAPPDATA?hi.default.join(n.LOCALAPPDATA,"bun","bun.exe"):void 0,n.LOCALAPPDATA?hi.default.join(n.LOCALAPPDATA,"bun","bin","bun.exe"):void 0];for(let c of a){let u=c?.trim();if(u&&(nA(u)&&o(u)||u.toLowerCase()==="bun"))return u}return s("bun",e)}function oA(t){(0,Dt.mkdirSync)(I0,{recursive:!0}),(0,Dt.writeFileSync)(gi,JSON.stringify(t,null,2))}function Df(){if(!(0,Dt.existsSync)(gi))return null;try{return JSON.parse((0,Dt.readFileSync)(gi,"utf-8"))}catch(t){return b.warn("SYSTEM","Failed to parse PID file",{path:gi},t),null}}function Wn(){if((0,Dt.existsSync)(gi))try{(0,Dt.unlinkSync)(gi)}catch(t){b.warn("SYSTEM","Failed to remove PID file",{path:gi},t)}}function Io(t){return process.platform==="win32"?Math.round(t*2):t}async function sA(t){if(process.platform!=="win32")return[];if(!Number.isInteger(t)||t<=0)return b.warn("SYSTEM","Invalid parent PID for child process enumeration",{parentPid:t}),[];try{let e=`powershell -NoProfile -NonInteractive -Command "Get-CimInstance Win32_Process -Filter 'ParentProcessId=${t}' | Select-Object -ExpandProperty ProcessId"`,{stdout:r}=await Mf(e,{timeout:$r.POWERSHELL_COMMAND,windowsHide:!0});return r.split(`
|
|
922
922
|
`).map(n=>n.trim()).filter(n=>n.length>0&&/^\d+$/.test(n)).map(n=>parseInt(n,10)).filter(n=>n>0)}catch(e){return b.error("SYSTEM","Failed to enumerate child processes",{parentPid:t},e),[]}}async function aA(t){if(!Number.isInteger(t)||t<=0){b.warn("SYSTEM","Invalid PID for force kill",{pid:t});return}try{process.platform==="win32"?await Mf(`taskkill /PID ${t} /T /F`,{timeout:$r.POWERSHELL_COMMAND,windowsHide:!0}):process.kill(t,"SIGKILL"),b.info("SYSTEM","Killed process",{pid:t})}catch(e){b.debug("SYSTEM","Process already exited during force kill",{pid:t},e)}}async function cA(t,e){let r=Date.now();for(;Date.now()-r<e;){let n=t.filter(i=>{try{return process.kill(i,0),!0}catch{return!1}});if(n.length===0){b.info("SYSTEM","All child processes exited");return}b.debug("SYSTEM","Waiting for processes to exit",{stillAlive:n}),await new Promise(i=>setTimeout(i,100))}b.warn("SYSTEM","Timeout waiting for child processes to exit")}function V7(t){if(!t||t.trim()==="")return-1;let e=t.trim(),r=0,n=e.match(/^(\d+)-(\d+):(\d+):(\d+)$/);if(n)return r=parseInt(n[1],10)*24*60+parseInt(n[2],10)*60+parseInt(n[3],10),r;let i=e.match(/^(\d+):(\d+):(\d+)$/);if(i)return r=parseInt(i[1],10)*60+parseInt(i[2],10),r;let o=e.match(/^(\d+):(\d+)$/);return o?parseInt(o[1],10):-1}var $0=["worker-service.cjs","chroma-mcp"],G7=["mcp-server.cjs"];async function uA(){let t=process.platform==="win32",e=process.pid,r=[],n=[...$0,...G7];try{if(t){let o=`powershell -NoProfile -NonInteractive -Command "Get-CimInstance Win32_Process -Filter '(${n.map(l=>`CommandLine LIKE '%${l}%'`).join(" OR ")}) AND ProcessId != ${e}' | Select-Object ProcessId, CommandLine, CreationDate | ConvertTo-Json"`,{stdout:s}=await Mf(o,{timeout:$r.POWERSHELL_COMMAND,windowsHide:!0});if(!s.trim()||s.trim()==="null"){b.debug("SYSTEM","No orphaned claude-mem processes found (Windows)");return}let a=JSON.parse(s),c=Array.isArray(a)?a:[a],u=Date.now();for(let l of c){let d=l.ProcessId;if(!Number.isInteger(d)||d<=0||d===e)continue;let p=l.CommandLine||"";if($0.some(f=>p.includes(f)))r.push(d),b.debug("SYSTEM","Found orphaned process (aggressive)",{pid:d,commandLine:p.substring(0,80)});else{let f=l.CreationDate?.match(/\/Date\((\d+)\)\//);if(f){let g=parseInt(f[1],10),h=(u-g)/(1e3*60);h>=rA&&(r.push(d),b.debug("SYSTEM","Found orphaned process (age-gated)",{pid:d,ageMinutes:Math.round(h)}))}}}}else{let i=n.join("|"),{stdout:o}=await Mf(`ps -eo pid,etime,command | grep -E "${i}" | grep -v grep || true`);if(!o.trim()){b.debug("SYSTEM","No orphaned claude-mem processes found (Unix)");return}let s=o.trim().split(`
|
|
923
|
-
`);for(let a of s){let c=a.trim().match(/^(\d+)\s+(\S+)\s+(.*)$/);if(!c)continue;let u=parseInt(c[1],10),l=c[2],d=c[3];if(!Number.isInteger(u)||u<=0||u===e)continue;if($0.some(m=>d.includes(m)))r.push(u),b.debug("SYSTEM","Found orphaned process (aggressive)",{pid:u,command:d.substring(0,80)});else{let m=V7(l);m>=rA&&(r.push(u),b.debug("SYSTEM","Found orphaned process (age-gated)",{pid:u,ageMinutes:m,command:d.substring(0,80)}))}}}}catch(i){b.error("SYSTEM","Failed to enumerate orphaned processes during aggressive cleanup",{},i);return}if(r.length!==0){if(b.info("SYSTEM","Aggressive startup cleanup: killing orphaned processes",{platform:t?"Windows":"Unix",count:r.length,pids:r}),t){for(let i of r)if(!(!Number.isInteger(i)||i<=0))try{(0,Ki.execSync)(`taskkill /PID ${i} /T /F`,{timeout:$r.POWERSHELL_COMMAND,stdio:"ignore",windowsHide:!0})}catch(o){b.debug("SYSTEM","Failed to kill process, may have already exited",{pid:i},o)}}else for(let i of r)try{process.kill(i,"SIGKILL")}catch(o){b.debug("SYSTEM","Process already exited",{pid:i},o)}b.info("SYSTEM","Aggressive startup cleanup complete",{count:r.length})}}var W7=".chroma-cleaned-v10.3";function lA(t){let e=t??I0,r=hi.default.join(e,W7),n=hi.default.join(e,"chroma");if((0,Dt.existsSync)(r)){b.debug("SYSTEM","Chroma migration marker exists, skipping wipe");return}b.warn("SYSTEM","Running one-time chroma data wipe (upgrade from pre-v10.3)",{chromaDir:n}),(0,Dt.existsSync)(n)&&((0,Dt.rmSync)(n,{recursive:!0,force:!0}),b.info("SYSTEM","Chroma data directory removed",{chromaDir:n})),(0,Dt.mkdirSync)(e,{recursive:!0}),(0,Dt.writeFileSync)(r,new Date().toISOString()),b.info("SYSTEM","Chroma migration marker written",{markerPath:r})}function O0(t,e,r={}){let n=process.platform==="win32",i={...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r};if(n){let a=B7();if(!a){b.error("SYSTEM","Failed to locate Bun runtime for Windows worker spawn");return}let c=a.replace(/'/g,"''"),u=t.replace(/'/g,"''"),l=`Start-Process -FilePath '${c}' -ArgumentList '${u}','--daemon' -WindowStyle Hidden`;try{return(0,Ki.execSync)(`powershell -NoProfile -Command "${l}"`,{stdio:"ignore",windowsHide:!0,env:i}),0}catch(d){b.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:a},d);return}}let o="/usr/bin/setsid";if((0,Dt.existsSync)(o)){let a=(0,Ki.spawn)(o,[process.execPath,t,"--daemon"],{detached:!0,stdio:"ignore",env:i});return a.pid===void 0?void 0:(a.unref(),a.pid)}let s=(0,Ki.spawn)(process.execPath,[t,"--daemon"],{detached:!0,stdio:"ignore",env:i});if(s.pid!==void 0)return s.unref(),s.pid}function R0(t){if(t===0)return!0;if(!Number.isInteger(t)||t<0)return!1;try{return process.kill(t,0),!0}catch(e){return e.code==="EPERM"}}function dA(t=15e3){try{let e=(0,Dt.statSync)(gi);return Date.now()-e.mtimeMs<t}catch{return!1}}function pA(){try{if(!(0,Dt.existsSync)(gi))return;let t=new Date;(0,Dt.utimesSync)(gi,t,t)}catch{}}function mA(){let t=Df();t&&(R0(t.pid)||(b.info("SYSTEM","Removing stale PID file (worker process is dead)",{pid:t.pid,port:t.port,startedAt:t.startedAt}),Wn()))}function fA(t,e){return async r=>{if(e.value){b.warn("SYSTEM",`Received ${r} but shutdown already in progress`);return}e.value=!0,b.info("SYSTEM",`Received ${r}, shutting down...`);try{await t(),process.exit(0)}catch(n){b.error("SYSTEM","Error during shutdown",{},n),process.exit(0)}}}var hA=Ye(require("path"),1),gA=require("fs");de();Mt();async function Ha(t){try{return(await fetch(`http://127.0.0.1:${t}/api/health`)).ok}catch{return!1}}async function vA(t,e,r,n){let i=Date.now();for(;Date.now()-i<r;){try{if((await fetch(`http://127.0.0.1:${t}${e}`)).ok)return!0}catch(o){b.debug("SYSTEM",n,{port:t},o)}await new Promise(o=>setTimeout(o,500))}return!1}function Ba(t,e=3e4){return vA(t,"/api/health",e,"Service not ready yet, will retry")}function yA(t,e=3e4){return vA(t,"/api/readiness",e,"Worker not ready yet, will retry")}async function jf(t,e=1e4){let r=Date.now();for(;Date.now()-r<e;){if(!await Ha(t))return!0;await new Promise(n=>setTimeout(n,500))}return!1}async function zf(t){try{let e=await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST"});return e.ok?!0:(b.warn("SYSTEM","Shutdown request returned error",{port:t,status:e.status}),!1)}catch(e){return e instanceof Error&&e.message?.includes("ECONNREFUSED")?(b.debug("SYSTEM","Worker already stopped",{port:t},e),!1):(b.error("SYSTEM","Shutdown request failed unexpectedly",{port:t},e),!1)}}function K7(){try{let t=hA.default.join(Vi,"package.json");return JSON.parse((0,gA.readFileSync)(t,"utf-8")).version}catch(t){let e=t.code;if(e==="ENOENT"||e==="EBUSY")return b.debug("SYSTEM","Could not read plugin version (shutdown race)",{code:e}),"unknown";throw t}}async function J7(t){try{let e=await fetch(`http://127.0.0.1:${t}/api/version`);return e.ok?(await e.json()).version:null}catch{return b.debug("SYSTEM","Could not fetch worker version",{port:t}),null}}async function _A(t){let e=K7(),r=await J7(t);return!r||e==="unknown"?{matches:!0,pluginVersion:e,workerVersion:r}:{matches:e===r,pluginVersion:e,workerVersion:r}}de();async function bA(t){b.info("SYSTEM","Shutdown initiated"),Wn();let e=await sA(process.pid);if(b.info("SYSTEM","Found child processes",{count:e.length,pids:e}),t.server&&(await X7(t.server),b.info("SYSTEM","HTTP server closed")),await t.sessionManager.shutdownAll(),t.mcpClient&&(await t.mcpClient.close(),b.info("SYSTEM","MCP client closed")),t.chromaMcpManager&&(b.info("SHUTDOWN","Stopping Chroma MCP connection..."),await t.chromaMcpManager.stop(),b.info("SHUTDOWN","Chroma MCP connection stopped")),t.dbManager&&await t.dbManager.close(),e.length>0){b.info("SYSTEM","Force killing remaining children");for(let r of e)await aA(r);await cA(e,5e3)}b.info("SYSTEM","Worker shutdown complete")}async function X7(t){t.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{t.close(n=>n?r(n):e())}),process.platform==="win32"&&(await new Promise(e=>setTimeout(e,500)),b.info("SYSTEM","Waited for Windows port cleanup"))}var R2=Ye(Bh(),1),DE=Ye(require("fs"),1),kd=Ye(require("path"),1);var v2=["search","context","summarize","import","export"],y2=["workflow","search_params","examples","all"];de();var AE=Ye(Bh(),1),E2=Ye(w2(),1),k2=Ye(require("path"),1);Mt();de();function NE(t){let e=[];e.push(AE.default.json({limit:"50mb"})),e.push((0,E2.default)({origin:(i,o)=>{!i||i.startsWith("http://localhost:")||i.startsWith("http://127.0.0.1:")?o(null,!0):o(new Error("CORS not allowed"))},methods:["GET","HEAD","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","X-Requested-With"],credentials:!1})),e.push((i,o,s)=>{let c=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(f=>i.path.endsWith(f)),u=i.path==="/api/logs";if(i.path.startsWith("/health")||i.path==="/"||c||u)return s();let l=Date.now(),d=`${i.method}-${Date.now()}`,p=t(i.method,i.path,i.body);b.info("HTTP",`\u2192 ${i.method} ${i.path}`,{requestId:d},p);let m=o.send.bind(o);o.send=function(f){let g=Date.now()-l;return b.info("HTTP",`\u2190 ${o.statusCode} ${i.path}`,{requestId:d,duration:`${g}ms`}),m(f)},s()});let r=Xr(),n=k2.default.join(r,"plugin","ui");return e.push(AE.default.static(n)),e}function Vh(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){b.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function ME(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",i=r.tool_input;return`tool=${b.formatTool(n,i)}`}return e.includes("/summarize")?"requesting summary":""}de();var _c=class extends Error{constructor(r,n=500,i,o){super(r);this.statusCode=n;this.code=i;this.details=o;this.name="AppError"}};function $2(t,e,r,n){let i={error:t,message:e};return r&&(i.code=r),n&&(i.details=n),i}var T2=(t,e,r,n)=>{let i=t instanceof _c?t.statusCode:500;b.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:t.message,code:t instanceof _c?t.code:void 0},t);let o=$2(t.name||"Error",t.message,t instanceof _c?t.code:void 0,t instanceof _c?t.details:void 0);r.status(i).json(o)};function I2(t,e){e.status(404).json($2("NotFound",`Cannot ${t.method} ${t.path}`))}var O2="10.4.2",Gh=class{app;server=null;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,R2.default)(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}async listen(e,r){return new Promise((n,i)=>{this.server=this.app.listen(e,r,()=>{b.info("SYSTEM","HTTP server started",{host:r,port:e,pid:process.pid}),n()}),this.server.on("error",i)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{this.server.close(n=>n?r(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,b.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(I2),this.app.use(T2)}setupMiddleware(){NE(ME).forEach(r=>this.app.use(r))}setupCoreRoutes(){this.app.get("/api/health",(e,r)=>{r.status(200).json({status:"ok",version:O2,workerPath:this.options.workerPath,uptime:Date.now()-this.startTime,managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.options.getInitializationComplete(),mcpReady:this.options.getMcpReady(),ai:this.options.getAiStatus()})}),this.app.get("/api/readiness",(e,r)=>{this.options.getInitializationComplete()?r.status(200).json({status:"ready",mcpReady:this.options.getMcpReady()}):r.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(e,r)=>{r.status(200).json({version:O2})}),this.app.get("/api/instructions",async(e,r)=>{let n=e.query.topic||"all",i=e.query.operation;if(n&&!y2.includes(n))return r.status(400).json({error:"Invalid topic"});try{let o;if(i){if(!v2.includes(i))return r.status(400).json({error:"Invalid operation"});let s=kd.default.resolve(__dirname,"../skills/mem-search/operations"),a=kd.default.resolve(s,`${i}.md`);if(!a.startsWith(s+kd.default.sep))return r.status(400).json({error:"Invalid request"});o=await DE.promises.readFile(a,"utf-8")}else{let s=kd.default.join(__dirname,"../skills/mem-search/SKILL.md"),a=await DE.promises.readFile(s,"utf-8");o=this.extractInstructionSection(a,n)}r.json({content:[{type:"text",text:o}]})}catch{r.status(404).json({error:"Instruction not found"})}}),this.app.post("/api/admin/restart",Vh,async(e,r)=>{r.json({status:"restarting"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(b.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):setTimeout(async()=>{try{await this.options.onRestart()}finally{process.exit(0)}},100)}),this.app.post("/api/admin/shutdown",Vh,async(e,r)=>{r.json({status:"shutting_down"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(b.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown"})):setTimeout(async()=>{try{await this.options.onShutdown()}finally{process.exit(0)}},100)})}extractInstructionSection(e,r){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[r]||n.all}extractBetween(e,r,n){let i=e.indexOf(r),o=e.indexOf(n);return i===-1?e:o===-1?e.substring(i):e.substring(i,o).trim()}};var vt=Ye(require("path"),1),Td=require("os"),Gt=require("fs"),A2=require("child_process"),N2=require("util");de();Ur();Mt();var Cn=require("fs"),$d=require("path");de();function P2(t){try{return(0,Cn.existsSync)(t)?JSON.parse((0,Cn.readFileSync)(t,"utf-8")):{}}catch(e){return b.error("CONFIG","Failed to read Cursor registry, using empty registry",{file:t,error:e instanceof Error?e.message:String(e)}),{}}}function C2(t,e){let r=(0,$d.join)(t,"..");(0,Cn.mkdirSync)(r,{recursive:!0}),(0,Cn.writeFileSync)(t,JSON.stringify(e,null,2))}function jE(t,e){let r=(0,$d.join)(t,".cursor","rules"),n=(0,$d.join)(r,"claude-mem-context.mdc"),i=`${n}.tmp`;(0,Cn.mkdirSync)(r,{recursive:!0});let o=`---
|
|
923
|
+
`);for(let a of s){let c=a.trim().match(/^(\d+)\s+(\S+)\s+(.*)$/);if(!c)continue;let u=parseInt(c[1],10),l=c[2],d=c[3];if(!Number.isInteger(u)||u<=0||u===e)continue;if($0.some(m=>d.includes(m)))r.push(u),b.debug("SYSTEM","Found orphaned process (aggressive)",{pid:u,command:d.substring(0,80)});else{let m=V7(l);m>=rA&&(r.push(u),b.debug("SYSTEM","Found orphaned process (age-gated)",{pid:u,ageMinutes:m,command:d.substring(0,80)}))}}}}catch(i){b.error("SYSTEM","Failed to enumerate orphaned processes during aggressive cleanup",{},i);return}if(r.length!==0){if(b.info("SYSTEM","Aggressive startup cleanup: killing orphaned processes",{platform:t?"Windows":"Unix",count:r.length,pids:r}),t){for(let i of r)if(!(!Number.isInteger(i)||i<=0))try{(0,Ki.execSync)(`taskkill /PID ${i} /T /F`,{timeout:$r.POWERSHELL_COMMAND,stdio:"ignore",windowsHide:!0})}catch(o){b.debug("SYSTEM","Failed to kill process, may have already exited",{pid:i},o)}}else for(let i of r)try{process.kill(i,"SIGKILL")}catch(o){b.debug("SYSTEM","Process already exited",{pid:i},o)}b.info("SYSTEM","Aggressive startup cleanup complete",{count:r.length})}}var W7=".chroma-cleaned-v10.3";function lA(t){let e=t??I0,r=hi.default.join(e,W7),n=hi.default.join(e,"chroma");if((0,Dt.existsSync)(r)){b.debug("SYSTEM","Chroma migration marker exists, skipping wipe");return}b.warn("SYSTEM","Running one-time chroma data wipe (upgrade from pre-v10.3)",{chromaDir:n}),(0,Dt.existsSync)(n)&&((0,Dt.rmSync)(n,{recursive:!0,force:!0}),b.info("SYSTEM","Chroma data directory removed",{chromaDir:n})),(0,Dt.mkdirSync)(e,{recursive:!0}),(0,Dt.writeFileSync)(r,new Date().toISOString()),b.info("SYSTEM","Chroma migration marker written",{markerPath:r})}function O0(t,e,r={}){let n=process.platform==="win32",i={...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r};if(n){let a=B7();if(!a){b.error("SYSTEM","Failed to locate Bun runtime for Windows worker spawn");return}let c=a.replace(/'/g,"''"),u=t.replace(/'/g,"''"),l=`Start-Process -FilePath '${c}' -ArgumentList '${u}','--daemon' -WindowStyle Hidden`;try{return(0,Ki.execSync)(`powershell -NoProfile -Command "${l}"`,{stdio:"ignore",windowsHide:!0,env:i}),0}catch(d){b.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:a},d);return}}let o="/usr/bin/setsid";if((0,Dt.existsSync)(o)){let a=(0,Ki.spawn)(o,[process.execPath,t,"--daemon"],{detached:!0,stdio:"ignore",env:i});return a.pid===void 0?void 0:(a.unref(),a.pid)}let s=(0,Ki.spawn)(process.execPath,[t,"--daemon"],{detached:!0,stdio:"ignore",env:i});if(s.pid!==void 0)return s.unref(),s.pid}function R0(t){if(t===0)return!0;if(!Number.isInteger(t)||t<0)return!1;try{return process.kill(t,0),!0}catch(e){return e.code==="EPERM"}}function dA(t=15e3){try{let e=(0,Dt.statSync)(gi);return Date.now()-e.mtimeMs<t}catch{return!1}}function pA(){try{if(!(0,Dt.existsSync)(gi))return;let t=new Date;(0,Dt.utimesSync)(gi,t,t)}catch{}}function mA(){let t=Df();t&&(R0(t.pid)||(b.info("SYSTEM","Removing stale PID file (worker process is dead)",{pid:t.pid,port:t.port,startedAt:t.startedAt}),Wn()))}function fA(t,e){return async r=>{if(e.value){b.warn("SYSTEM",`Received ${r} but shutdown already in progress`);return}e.value=!0,b.info("SYSTEM",`Received ${r}, shutting down...`);try{await t(),process.exit(0)}catch(n){b.error("SYSTEM","Error during shutdown",{},n),process.exit(0)}}}var hA=Ye(require("path"),1),gA=require("fs");de();Mt();async function Ha(t){try{return(await fetch(`http://127.0.0.1:${t}/api/health`)).ok}catch{return!1}}async function vA(t,e,r,n){let i=Date.now();for(;Date.now()-i<r;){try{if((await fetch(`http://127.0.0.1:${t}${e}`)).ok)return!0}catch(o){b.debug("SYSTEM",n,{port:t},o)}await new Promise(o=>setTimeout(o,500))}return!1}function Ba(t,e=3e4){return vA(t,"/api/health",e,"Service not ready yet, will retry")}function yA(t,e=3e4){return vA(t,"/api/readiness",e,"Worker not ready yet, will retry")}async function jf(t,e=1e4){let r=Date.now();for(;Date.now()-r<e;){if(!await Ha(t))return!0;await new Promise(n=>setTimeout(n,500))}return!1}async function zf(t){try{let e=await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST"});return e.ok?!0:(b.warn("SYSTEM","Shutdown request returned error",{port:t,status:e.status}),!1)}catch(e){return e instanceof Error&&e.message?.includes("ECONNREFUSED")?(b.debug("SYSTEM","Worker already stopped",{port:t},e),!1):(b.error("SYSTEM","Shutdown request failed unexpectedly",{port:t},e),!1)}}function K7(){try{let t=hA.default.join(Vi,"package.json");return JSON.parse((0,gA.readFileSync)(t,"utf-8")).version}catch(t){let e=t.code;if(e==="ENOENT"||e==="EBUSY")return b.debug("SYSTEM","Could not read plugin version (shutdown race)",{code:e}),"unknown";throw t}}async function J7(t){try{let e=await fetch(`http://127.0.0.1:${t}/api/version`);return e.ok?(await e.json()).version:null}catch{return b.debug("SYSTEM","Could not fetch worker version",{port:t}),null}}async function _A(t){let e=K7(),r=await J7(t);return!r||e==="unknown"?{matches:!0,pluginVersion:e,workerVersion:r}:{matches:e===r,pluginVersion:e,workerVersion:r}}de();async function bA(t){b.info("SYSTEM","Shutdown initiated"),Wn();let e=await sA(process.pid);if(b.info("SYSTEM","Found child processes",{count:e.length,pids:e}),t.server&&(await X7(t.server),b.info("SYSTEM","HTTP server closed")),await t.sessionManager.shutdownAll(),t.mcpClient&&(await t.mcpClient.close(),b.info("SYSTEM","MCP client closed")),t.chromaMcpManager&&(b.info("SHUTDOWN","Stopping Chroma MCP connection..."),await t.chromaMcpManager.stop(),b.info("SHUTDOWN","Chroma MCP connection stopped")),t.dbManager&&await t.dbManager.close(),e.length>0){b.info("SYSTEM","Force killing remaining children");for(let r of e)await aA(r);await cA(e,5e3)}b.info("SYSTEM","Worker shutdown complete")}async function X7(t){t.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{t.close(n=>n?r(n):e())}),process.platform==="win32"&&(await new Promise(e=>setTimeout(e,500)),b.info("SYSTEM","Waited for Windows port cleanup"))}var R2=Ye(Bh(),1),DE=Ye(require("fs"),1),kd=Ye(require("path"),1);var v2=["search","context","summarize","import","export"],y2=["workflow","search_params","examples","all"];de();var AE=Ye(Bh(),1),E2=Ye(w2(),1),k2=Ye(require("path"),1);Mt();de();function NE(t){let e=[];e.push(AE.default.json({limit:"50mb"})),e.push((0,E2.default)({origin:(i,o)=>{!i||i.startsWith("http://localhost:")||i.startsWith("http://127.0.0.1:")?o(null,!0):o(new Error("CORS not allowed"))},methods:["GET","HEAD","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","X-Requested-With"],credentials:!1})),e.push((i,o,s)=>{let c=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(f=>i.path.endsWith(f)),u=i.path==="/api/logs";if(i.path.startsWith("/health")||i.path==="/"||c||u)return s();let l=Date.now(),d=`${i.method}-${Date.now()}`,p=t(i.method,i.path,i.body);b.info("HTTP",`\u2192 ${i.method} ${i.path}`,{requestId:d},p);let m=o.send.bind(o);o.send=function(f){let g=Date.now()-l;return b.info("HTTP",`\u2190 ${o.statusCode} ${i.path}`,{requestId:d,duration:`${g}ms`}),m(f)},s()});let r=Xr(),n=k2.default.join(r,"plugin","ui");return e.push(AE.default.static(n)),e}function Vh(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){b.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function ME(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",i=r.tool_input;return`tool=${b.formatTool(n,i)}`}return e.includes("/summarize")?"requesting summary":""}de();var _c=class extends Error{constructor(r,n=500,i,o){super(r);this.statusCode=n;this.code=i;this.details=o;this.name="AppError"}};function $2(t,e,r,n){let i={error:t,message:e};return r&&(i.code=r),n&&(i.details=n),i}var T2=(t,e,r,n)=>{let i=t instanceof _c?t.statusCode:500;b.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:t.message,code:t instanceof _c?t.code:void 0},t);let o=$2(t.name||"Error",t.message,t instanceof _c?t.code:void 0,t instanceof _c?t.details:void 0);r.status(i).json(o)};function I2(t,e){e.status(404).json($2("NotFound",`Cannot ${t.method} ${t.path}`))}var O2="10.4.3",Gh=class{app;server=null;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,R2.default)(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}async listen(e,r){return new Promise((n,i)=>{this.server=this.app.listen(e,r,()=>{b.info("SYSTEM","HTTP server started",{host:r,port:e,pid:process.pid}),n()}),this.server.on("error",i)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{this.server.close(n=>n?r(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,b.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(I2),this.app.use(T2)}setupMiddleware(){NE(ME).forEach(r=>this.app.use(r))}setupCoreRoutes(){this.app.get("/api/health",(e,r)=>{r.status(200).json({status:"ok",version:O2,workerPath:this.options.workerPath,uptime:Date.now()-this.startTime,managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.options.getInitializationComplete(),mcpReady:this.options.getMcpReady(),ai:this.options.getAiStatus()})}),this.app.get("/api/readiness",(e,r)=>{this.options.getInitializationComplete()?r.status(200).json({status:"ready",mcpReady:this.options.getMcpReady()}):r.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(e,r)=>{r.status(200).json({version:O2})}),this.app.get("/api/instructions",async(e,r)=>{let n=e.query.topic||"all",i=e.query.operation;if(n&&!y2.includes(n))return r.status(400).json({error:"Invalid topic"});try{let o;if(i){if(!v2.includes(i))return r.status(400).json({error:"Invalid operation"});let s=kd.default.resolve(__dirname,"../skills/mem-search/operations"),a=kd.default.resolve(s,`${i}.md`);if(!a.startsWith(s+kd.default.sep))return r.status(400).json({error:"Invalid request"});o=await DE.promises.readFile(a,"utf-8")}else{let s=kd.default.join(__dirname,"../skills/mem-search/SKILL.md"),a=await DE.promises.readFile(s,"utf-8");o=this.extractInstructionSection(a,n)}r.json({content:[{type:"text",text:o}]})}catch{r.status(404).json({error:"Instruction not found"})}}),this.app.post("/api/admin/restart",Vh,async(e,r)=>{r.json({status:"restarting"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(b.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):setTimeout(async()=>{try{await this.options.onRestart()}finally{process.exit(0)}},100)}),this.app.post("/api/admin/shutdown",Vh,async(e,r)=>{r.json({status:"shutting_down"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(b.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown"})):setTimeout(async()=>{try{await this.options.onShutdown()}finally{process.exit(0)}},100)})}extractInstructionSection(e,r){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[r]||n.all}extractBetween(e,r,n){let i=e.indexOf(r),o=e.indexOf(n);return i===-1?e:o===-1?e.substring(i):e.substring(i,o).trim()}};var vt=Ye(require("path"),1),Td=require("os"),Gt=require("fs"),A2=require("child_process"),N2=require("util");de();Ur();Mt();var Cn=require("fs"),$d=require("path");de();function P2(t){try{return(0,Cn.existsSync)(t)?JSON.parse((0,Cn.readFileSync)(t,"utf-8")):{}}catch(e){return b.error("CONFIG","Failed to read Cursor registry, using empty registry",{file:t,error:e instanceof Error?e.message:String(e)}),{}}}function C2(t,e){let r=(0,$d.join)(t,"..");(0,Cn.mkdirSync)(r,{recursive:!0}),(0,Cn.writeFileSync)(t,JSON.stringify(e,null,2))}function jE(t,e){let r=(0,$d.join)(t,".cursor","rules"),n=(0,$d.join)(r,"claude-mem-context.mdc"),i=`${n}.tmp`;(0,Cn.mkdirSync)(r,{recursive:!0});let o=`---
|
|
924
924
|
alwaysApply: true
|
|
925
925
|
description: "Claude-mem context from past sessions (auto-updated)"
|
|
926
926
|
---
|
|
@@ -1425,7 +1425,7 @@ Tips:
|
|
|
1425
1425
|
`&&u++;if(u>=e||f===0)break;a=Math.min(a*2,i,s)}let l=c.split(`
|
|
1426
1426
|
`);l.length>0&&l[l.length-1]===""&&l.pop();let d=Math.max(0,l.length-e),p=l.slice(d),m;if(i<=a)m=l.length;else{let f=c.length/Math.max(u,1);m=Math.round(i/f)}return{lines:p.join(`
|
|
1427
1427
|
`),totalEstimate:m}}finally{(0,gn.closeSync)(r)}}var sv=class extends Pr{getLogFilePath(){let e=_e.get("CLAUDE_MEM_DATA_DIR"),r=(0,ov.join)(e,"logs"),n=new Date().toISOString().split("T")[0];return(0,ov.join)(r,`claude-mem-${n}.log`)}getLogsDir(){let e=_e.get("CLAUDE_MEM_DATA_DIR");return(0,ov.join)(e,"logs")}setupRoutes(e){e.get("/api/logs",this.handleGetLogs.bind(this)),e.post("/api/logs/clear",this.handleClearLogs.bind(this))}handleGetLogs=this.wrapHandler((e,r)=>{let n=this.getLogFilePath();if(!(0,gn.existsSync)(n)){r.json({logs:"",path:n,exists:!1});return}let i=parseInt(e.query.lines||"1000",10),o=Math.min(i,1e4),{lines:s,totalEstimate:a}=fhe(n,o),c=s===""?0:s.split(`
|
|
1428
|
-
`).length;r.json({logs:s,path:n,exists:!0,totalLines:a,returnedLines:c})});handleClearLogs=this.wrapHandler((e,r)=>{let n=this.getLogFilePath();if(!(0,gn.existsSync)(n)){r.json({success:!0,message:"Log file does not exist",path:n});return}(0,gn.writeFileSync)(n,"","utf-8"),b.info("SYSTEM","Log file cleared via UI",{path:n}),r.json({success:!0,message:"Log file cleared",path:n})})};de();var av=class extends Pr{constructor(r,n){super();this.dbManager=r;this.defaultProject=n}setupRoutes(r){r.post("/api/memory/save",this.handleSaveMemory.bind(this))}handleSaveMemory=this.wrapHandler(async(r,n)=>{let{text:i,title:o,project:s}=r.body,a=s||this.defaultProject;if(!i||typeof i!="string"||i.trim().length===0){this.badRequest(n,"text is required and must be non-empty");return}let c=this.dbManager.getSessionStore(),u=this.dbManager.getChromaSync(),l=c.getOrCreateManualSession(a),d={type:"discovery",title:o||i.substring(0,60).trim()+(i.length>60?"...":""),subtitle:"Manual memory",facts:[],narrative:i,concepts:[],files_read:[],files_modified:[]},p=c.storeObservation(l,a,d,0,0);b.info("HTTP","Manual observation saved",{id:p.id,project:a,title:d.title}),u.syncObservation(p.id,l,a,d,0,p.createdAtEpoch,0).catch(m=>{b.error("CHROMA","ChromaDB sync failed",{id:p.id},m)}),n.json({success:!0,id:p.id,title:d.title,project:a,message:`Memory saved as observation #${p.id}`})})};var Zhe={},Mhe=120*1e3;function x$(){return b$.default.join(_e.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function Dhe(){if(process.platform!=="win32")return!1;let t=x$();if(!(0,co.existsSync)(t))return!1;try{let e=(0,co.statSync)(t).mtimeMs;return Date.now()-e<Mhe}catch{return!1}}function jhe(){if(process.platform==="win32")try{(0,co.writeFileSync)(x$(),"","utf-8")}catch{}}function zhe(){if(process.platform==="win32")try{let t=x$();(0,co.existsSync)(t)&&(0,co.unlinkSync)(t)}catch{}}var Uhe="10.4.2";function l9(t,e){return{continue:!0,suppressOutput:!0,status:t,...e&&{message:e}}}var gp=class{server;startTime=Date.now();mcpClient;mcpReady=!1;initializationCompleteFlag=!1;isShuttingDown=!1;dbManager;sessionManager;sseBroadcaster;sdkAgent;geminiAgent;openRouterAgent;paginationHelper;settingsManager;sessionEventBroadcaster;searchRoutes=null;chromaMcpManager=null;initializationComplete;resolveInitialization;stopOrphanReaper=null;staleSessionReaperInterval=null;lastAiInteraction=null;constructor(){this.initializationComplete=new Promise(e=>{this.resolveInitialization=e}),this.dbManager=new Kh,this.sessionManager=new Yh(this.dbManager),this.sseBroadcaster=new Qh,this.sdkAgent=new Pg(this.dbManager,this.sessionManager),this.geminiAgent=new Cg(this.dbManager,this.sessionManager),this.openRouterAgent=new Mg(this.dbManager,this.sessionManager),this.paginationHelper=new Dg(this.dbManager),this.settingsManager=new jg(this.dbManager),this.sessionEventBroadcaster=new qg(this.sseBroadcaster,this),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new ja({name:"worker-search-proxy",version:Uhe},{capabilities:{}}),this.server=new Gh({getInitializationComplete:()=>this.initializationCompleteFlag,getMcpReady:()=>this.mcpReady,onShutdown:()=>this.shutdown(),onRestart:()=>this.shutdown(),workerPath:__filename,getAiStatus:()=>{let e="claude";return Kc()&&qs()?e="openrouter":Wc()&&Ls()&&(e="gemini"),{provider:e,authMethod:Pf(),lastInteraction:this.lastAiInteraction?{timestamp:this.lastAiInteraction.timestamp,success:this.lastAiInteraction.success,...this.lastAiInteraction.error&&{error:this.lastAiInteraction.error}}:null}}}),this.registerRoutes(),this.registerSignalHandlers()}registerSignalHandlers(){let e={value:this.isShuttingDown},r=fA(()=>this.shutdown(),e);process.on("SIGTERM",()=>{this.isShuttingDown=e.value,r("SIGTERM")}),process.on("SIGINT",()=>{this.isShuttingDown=e.value,r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{b.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{this.isShuttingDown=e.value,r("SIGHUP")}))}registerRoutes(){this.server.app.get("/api/context/inject",async(e,r,n)=>{if(!this.initializationCompleteFlag||!this.searchRoutes){b.warn("SYSTEM","Context requested before initialization complete, returning empty"),r.status(200).json({content:[{type:"text",text:""}]});return}n()}),this.server.app.use("/api",async(e,r,n)=>{if(this.initializationCompleteFlag){n();return}let i=3e4,o=new Promise((s,a)=>setTimeout(()=>a(new Error("Database initialization timeout")),i));try{await Promise.race([this.initializationComplete,o]),n()}catch(s){b.error("HTTP",`Request to ${e.method} ${e.path} rejected \u2014 DB not initialized`,{},s),r.status(503).json({error:"Service initializing",message:"Database is still initializing, please retry"})}}),this.server.registerRoutes(new Zg(this.sseBroadcaster,this.dbManager,this.sessionManager)),this.server.registerRoutes(new Vg(this.sessionManager,this.dbManager,this.sdkAgent,this.geminiAgent,this.openRouterAgent,this.sessionEventBroadcaster,this)),this.server.registerRoutes(new Gg(this.paginationHelper,this.dbManager,this.sessionManager,this.sseBroadcaster,this,this.startTime)),this.server.registerRoutes(new iv(this.settingsManager)),this.server.registerRoutes(new sv),this.server.registerRoutes(new av(this.dbManager,"claude-mem"))}async start(){let e=ht(),r=Rf();await this.server.listen(e,r),oA({pid:process.pid,port:e,startedAt:new Date().toISOString()}),b.info("SYSTEM","Worker started",{host:r,port:e,pid:process.pid}),this.initializeBackground().catch(n=>{b.error("SYSTEM","Background initialization failed",{},n)})}async initializeBackground(){try{await uA();let{ModeManager:e}=await Promise.resolve().then(()=>(Fr(),W2)),{SettingsDefaultsManager:r}=await Promise.resolve().then(()=>(Xt(),CC)),{USER_SETTINGS_PATH:n}=await Promise.resolve().then(()=>(Mt(),FC)),i=r.loadFromFile(n);(i.CLAUDE_MEM_MODE==="local"||!i.CLAUDE_MEM_MODE)&&lA(),i.CLAUDE_MEM_CHROMA_ENABLED!=="false"?(this.chromaMcpManager=Gi.getInstance(),b.info("SYSTEM","ChromaMcpManager initialized (lazy - connects on first use)")):b.info("SYSTEM","Chroma disabled via CLAUDE_MEM_CHROMA_ENABLED=false, skipping ChromaMcpManager");let s=i.CLAUDE_MEM_MODE;e.getInstance().loadMode(s),b.info("SYSTEM",`Mode loaded: ${s}`),await this.dbManager.initialize();let{PendingMessageStore:a}=await Promise.resolve().then(()=>(jo(),Ps)),u=new a(this.dbManager.getSessionStore().db,3).resetStaleProcessingMessages(0);u>0&&b.info("SYSTEM",`Reset ${u} stale processing messages to pending`);let l=new Ug,d=new Lg,p=new zg(this.dbManager.getSessionSearch(),this.dbManager.getSessionStore(),this.dbManager.getChromaSync(),l,d);this.searchRoutes=new tv(p),this.server.registerRoutes(this.searchRoutes),b.info("WORKER","SearchManager initialized and search routes registered"),this.initializationCompleteFlag=!0,this.resolveInitialization(),b.info("SYSTEM","Core initialization complete (DB + search ready)"),this.chromaMcpManager&&Za.backfillAllProjects().then(()=>{b.info("CHROMA_SYNC","Backfill check complete for all projects")}).catch(y=>{b.error("CHROMA_SYNC","Backfill failed (non-blocking)",{},y)});let m=b$.default.join(__dirname,"mcp-server.cjs"),f=new La({command:"node",args:[m],env:process.env}),g=3e5,h=this.mcpClient.connect(f),v=new Promise((y,_)=>setTimeout(()=>_(new Error("MCP connection timeout after 5 minutes")),g));await Promise.race([h,v]),this.mcpReady=!0,b.success("WORKER","MCP server connected"),this.stopOrphanReaper=V2(()=>{let y=new Set;for(let[_]of this.sessionManager.sessions)y.add(_);return y}),b.info("SYSTEM","Started orphan reaper (runs every 5 minutes)"),this.staleSessionReaperInterval=setInterval(async()=>{try{let y=await this.sessionManager.reapStaleSessions();y>0&&b.info("SYSTEM",`Reaped ${y} stale sessions`)}catch(y){b.error("SYSTEM","Stale session reaper error",{error:y instanceof Error?y.message:String(y)})}},120*1e3),this.processPendingQueues(50).then(y=>{y.sessionsStarted>0&&b.info("SYSTEM",`Auto-recovered ${y.sessionsStarted} sessions with pending work`,{totalPending:y.totalPendingSessions,started:y.sessionsStarted,sessionIds:y.startedSessionIds})}).catch(y=>{b.error("SYSTEM","Auto-recovery of pending queues failed",{},y)})}catch(e){throw b.error("SYSTEM","Background initialization failed",{},e),e}}getActiveAgent(){return Kc()&&qs()?this.openRouterAgent:Wc()&&Ls()?this.geminiAgent:this.sdkAgent}startSessionProcessor(e,r){if(!e)return;let n=e.sessionDbId,i=this.getActiveAgent(),o=i.constructor.name;e.abortController.signal.aborted&&(b.debug("SYSTEM","Replacing aborted AbortController before starting generator",{sessionId:e.sessionDbId}),e.abortController=new AbortController);let s=!1,a=!1;b.info("SYSTEM",`Starting generator (${r}) using ${o}`,{sessionId:n}),e.lastGeneratorActivity=Date.now(),e.generatorPromise=i.startSession(e,this).catch(async c=>{let u=c?.message||"";if(["Claude executable not found","CLAUDE_CODE_PATH","ENOENT","spawn","Invalid API key"].some(d=>u.includes(d))){s=!0,this.lastAiInteraction={timestamp:Date.now(),success:!1,provider:o,error:u},b.error("SDK","Unrecoverable generator error - will NOT restart",{sessionId:e.sessionDbId,project:e.project,errorMessage:u});return}if(this.isSessionTerminatedError(c))return b.warn("SDK","SDK resume failed, falling back to standalone processing",{sessionId:e.sessionDbId,project:e.project,reason:c instanceof Error?c.message:String(c)}),this.runFallbackForTerminatedSession(e,c);throw(u.includes("aborted by user")||u.includes("No conversation found"))&&e.memorySessionId&&(b.warn("SDK","Detected stale resume failure, clearing memorySessionId for fresh start",{sessionId:e.sessionDbId,memorySessionId:e.memorySessionId,errorMessage:u}),this.dbManager.getSessionStore().updateMemorySessionId(e.sessionDbId,null),e.memorySessionId=null,e.forceInit=!0),b.error("SDK","Session generator failed",{sessionId:e.sessionDbId,project:e.project,provider:o},c),a=!0,this.lastAiInteraction={timestamp:Date.now(),success:!1,provider:o,error:u},c}).finally(async()=>{let c=zo(e.sessionDbId);if(c&&!c.process.killed&&c.process.exitCode===null&&await Uo(c,5e3),e.generatorPromise=null,!a&&!s&&(this.lastAiInteraction={timestamp:Date.now(),success:!0,provider:o}),s){b.warn("SYSTEM","Skipping restart due to unrecoverable error",{sessionId:e.sessionDbId}),this.broadcastProcessingStatus();return}let{PendingMessageStore:u}=(jo(),tu(Ps)),l=new u(this.dbManager.getSessionStore().db,3);if(e.idleTimedOut){b.info("SYSTEM","Generator exited due to idle timeout, not restarting",{sessionId:e.sessionDbId}),e.idleTimedOut=!1,this.broadcastProcessingStatus();return}let d=l.getPendingCount(e.sessionDbId);d>0&&(b.info("SYSTEM","Pending work remains after generator exit, restarting with fresh AbortController",{sessionId:e.sessionDbId,pendingCount:d}),e.abortController=new AbortController,this.startSessionProcessor(e,"pending-work-restart")),this.broadcastProcessingStatus()})}isSessionTerminatedError(e){let n=(e instanceof Error?e.message:String(e)).toLowerCase();return n.includes("process aborted by user")||n.includes("processtransport")||n.includes("not ready for writing")||n.includes("session generator failed")||n.includes("claude code process")}async runFallbackForTerminatedSession(e,r){if(!e)return;let n=e.sessionDbId;if(!e.memorySessionId){let s=`fallback-${n}-${Date.now()}`;e.memorySessionId=s,this.dbManager.getSessionStore().updateMemorySessionId(n,s)}if(Ls())try{await this.geminiAgent.startSession(e,this);return}catch(s){b.warn("SDK","Fallback Gemini failed, trying OpenRouter",{sessionId:n,error:s instanceof Error?s.message:String(s)})}if(qs())try{await this.openRouterAgent.startSession(e,this);return}catch(s){b.warn("SDK","Fallback OpenRouter failed",{sessionId:n,error:s instanceof Error?s.message:String(s)})}let o=this.sessionManager.getPendingMessageStore().markAllSessionMessagesAbandoned(n);o>0&&b.warn("SDK","No fallback available; marked pending messages abandoned",{sessionId:n,abandoned:o}),this.sessionManager.removeSessionImmediate(n),this.sessionEventBroadcaster.broadcastSessionCompleted(n)}async processPendingQueues(e=10){let{PendingMessageStore:r}=await Promise.resolve().then(()=>(jo(),Ps)),n=new r(this.dbManager.getSessionStore().db,3),i=this.dbManager.getSessionStore(),o=360*60*1e3,s=Date.now()-o;try{let u=i.db.prepare(`
|
|
1428
|
+
`).length;r.json({logs:s,path:n,exists:!0,totalLines:a,returnedLines:c})});handleClearLogs=this.wrapHandler((e,r)=>{let n=this.getLogFilePath();if(!(0,gn.existsSync)(n)){r.json({success:!0,message:"Log file does not exist",path:n});return}(0,gn.writeFileSync)(n,"","utf-8"),b.info("SYSTEM","Log file cleared via UI",{path:n}),r.json({success:!0,message:"Log file cleared",path:n})})};de();var av=class extends Pr{constructor(r,n){super();this.dbManager=r;this.defaultProject=n}setupRoutes(r){r.post("/api/memory/save",this.handleSaveMemory.bind(this))}handleSaveMemory=this.wrapHandler(async(r,n)=>{let{text:i,title:o,project:s}=r.body,a=s||this.defaultProject;if(!i||typeof i!="string"||i.trim().length===0){this.badRequest(n,"text is required and must be non-empty");return}let c=this.dbManager.getSessionStore(),u=this.dbManager.getChromaSync(),l=c.getOrCreateManualSession(a),d={type:"discovery",title:o||i.substring(0,60).trim()+(i.length>60?"...":""),subtitle:"Manual memory",facts:[],narrative:i,concepts:[],files_read:[],files_modified:[]},p=c.storeObservation(l,a,d,0,0);b.info("HTTP","Manual observation saved",{id:p.id,project:a,title:d.title}),u.syncObservation(p.id,l,a,d,0,p.createdAtEpoch,0).catch(m=>{b.error("CHROMA","ChromaDB sync failed",{id:p.id},m)}),n.json({success:!0,id:p.id,title:d.title,project:a,message:`Memory saved as observation #${p.id}`})})};var Zhe={},Mhe=120*1e3;function x$(){return b$.default.join(_e.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function Dhe(){if(process.platform!=="win32")return!1;let t=x$();if(!(0,co.existsSync)(t))return!1;try{let e=(0,co.statSync)(t).mtimeMs;return Date.now()-e<Mhe}catch{return!1}}function jhe(){if(process.platform==="win32")try{(0,co.writeFileSync)(x$(),"","utf-8")}catch{}}function zhe(){if(process.platform==="win32")try{let t=x$();(0,co.existsSync)(t)&&(0,co.unlinkSync)(t)}catch{}}var Uhe="10.4.3";function l9(t,e){return{continue:!0,suppressOutput:!0,status:t,...e&&{message:e}}}var gp=class{server;startTime=Date.now();mcpClient;mcpReady=!1;initializationCompleteFlag=!1;isShuttingDown=!1;dbManager;sessionManager;sseBroadcaster;sdkAgent;geminiAgent;openRouterAgent;paginationHelper;settingsManager;sessionEventBroadcaster;searchRoutes=null;chromaMcpManager=null;initializationComplete;resolveInitialization;stopOrphanReaper=null;staleSessionReaperInterval=null;lastAiInteraction=null;constructor(){this.initializationComplete=new Promise(e=>{this.resolveInitialization=e}),this.dbManager=new Kh,this.sessionManager=new Yh(this.dbManager),this.sseBroadcaster=new Qh,this.sdkAgent=new Pg(this.dbManager,this.sessionManager),this.geminiAgent=new Cg(this.dbManager,this.sessionManager),this.openRouterAgent=new Mg(this.dbManager,this.sessionManager),this.paginationHelper=new Dg(this.dbManager),this.settingsManager=new jg(this.dbManager),this.sessionEventBroadcaster=new qg(this.sseBroadcaster,this),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new ja({name:"worker-search-proxy",version:Uhe},{capabilities:{}}),this.server=new Gh({getInitializationComplete:()=>this.initializationCompleteFlag,getMcpReady:()=>this.mcpReady,onShutdown:()=>this.shutdown(),onRestart:()=>this.shutdown(),workerPath:__filename,getAiStatus:()=>{let e="claude";return Kc()&&qs()?e="openrouter":Wc()&&Ls()&&(e="gemini"),{provider:e,authMethod:Pf(),lastInteraction:this.lastAiInteraction?{timestamp:this.lastAiInteraction.timestamp,success:this.lastAiInteraction.success,...this.lastAiInteraction.error&&{error:this.lastAiInteraction.error}}:null}}}),this.registerRoutes(),this.registerSignalHandlers()}registerSignalHandlers(){let e={value:this.isShuttingDown},r=fA(()=>this.shutdown(),e);process.on("SIGTERM",()=>{this.isShuttingDown=e.value,r("SIGTERM")}),process.on("SIGINT",()=>{this.isShuttingDown=e.value,r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{b.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{this.isShuttingDown=e.value,r("SIGHUP")}))}registerRoutes(){this.server.app.get("/api/context/inject",async(e,r,n)=>{if(!this.initializationCompleteFlag||!this.searchRoutes){b.warn("SYSTEM","Context requested before initialization complete, returning empty"),r.status(200).json({content:[{type:"text",text:""}]});return}n()}),this.server.app.use("/api",async(e,r,n)=>{if(this.initializationCompleteFlag){n();return}let i=3e4,o=new Promise((s,a)=>setTimeout(()=>a(new Error("Database initialization timeout")),i));try{await Promise.race([this.initializationComplete,o]),n()}catch(s){b.error("HTTP",`Request to ${e.method} ${e.path} rejected \u2014 DB not initialized`,{},s),r.status(503).json({error:"Service initializing",message:"Database is still initializing, please retry"})}}),this.server.registerRoutes(new Zg(this.sseBroadcaster,this.dbManager,this.sessionManager)),this.server.registerRoutes(new Vg(this.sessionManager,this.dbManager,this.sdkAgent,this.geminiAgent,this.openRouterAgent,this.sessionEventBroadcaster,this)),this.server.registerRoutes(new Gg(this.paginationHelper,this.dbManager,this.sessionManager,this.sseBroadcaster,this,this.startTime)),this.server.registerRoutes(new iv(this.settingsManager)),this.server.registerRoutes(new sv),this.server.registerRoutes(new av(this.dbManager,"claude-mem"))}async start(){let e=ht(),r=Rf();await this.server.listen(e,r),oA({pid:process.pid,port:e,startedAt:new Date().toISOString()}),b.info("SYSTEM","Worker started",{host:r,port:e,pid:process.pid}),this.initializeBackground().catch(n=>{b.error("SYSTEM","Background initialization failed",{},n)})}async initializeBackground(){try{await uA();let{ModeManager:e}=await Promise.resolve().then(()=>(Fr(),W2)),{SettingsDefaultsManager:r}=await Promise.resolve().then(()=>(Xt(),CC)),{USER_SETTINGS_PATH:n}=await Promise.resolve().then(()=>(Mt(),FC)),i=r.loadFromFile(n);(i.CLAUDE_MEM_MODE==="local"||!i.CLAUDE_MEM_MODE)&&lA(),i.CLAUDE_MEM_CHROMA_ENABLED!=="false"?(this.chromaMcpManager=Gi.getInstance(),b.info("SYSTEM","ChromaMcpManager initialized (lazy - connects on first use)")):b.info("SYSTEM","Chroma disabled via CLAUDE_MEM_CHROMA_ENABLED=false, skipping ChromaMcpManager");let s=i.CLAUDE_MEM_MODE;e.getInstance().loadMode(s),b.info("SYSTEM",`Mode loaded: ${s}`),await this.dbManager.initialize();let{PendingMessageStore:a}=await Promise.resolve().then(()=>(jo(),Ps)),u=new a(this.dbManager.getSessionStore().db,3).resetStaleProcessingMessages(0);u>0&&b.info("SYSTEM",`Reset ${u} stale processing messages to pending`);let l=new Ug,d=new Lg,p=new zg(this.dbManager.getSessionSearch(),this.dbManager.getSessionStore(),this.dbManager.getChromaSync(),l,d);this.searchRoutes=new tv(p),this.server.registerRoutes(this.searchRoutes),b.info("WORKER","SearchManager initialized and search routes registered"),this.initializationCompleteFlag=!0,this.resolveInitialization(),b.info("SYSTEM","Core initialization complete (DB + search ready)"),this.chromaMcpManager&&Za.backfillAllProjects().then(()=>{b.info("CHROMA_SYNC","Backfill check complete for all projects")}).catch(y=>{b.error("CHROMA_SYNC","Backfill failed (non-blocking)",{},y)});let m=b$.default.join(__dirname,"mcp-server.cjs"),f=new La({command:"node",args:[m],env:process.env}),g=3e5,h=this.mcpClient.connect(f),v=new Promise((y,_)=>setTimeout(()=>_(new Error("MCP connection timeout after 5 minutes")),g));await Promise.race([h,v]),this.mcpReady=!0,b.success("WORKER","MCP server connected"),this.stopOrphanReaper=V2(()=>{let y=new Set;for(let[_]of this.sessionManager.sessions)y.add(_);return y}),b.info("SYSTEM","Started orphan reaper (runs every 5 minutes)"),this.staleSessionReaperInterval=setInterval(async()=>{try{let y=await this.sessionManager.reapStaleSessions();y>0&&b.info("SYSTEM",`Reaped ${y} stale sessions`)}catch(y){b.error("SYSTEM","Stale session reaper error",{error:y instanceof Error?y.message:String(y)})}},120*1e3),this.processPendingQueues(50).then(y=>{y.sessionsStarted>0&&b.info("SYSTEM",`Auto-recovered ${y.sessionsStarted} sessions with pending work`,{totalPending:y.totalPendingSessions,started:y.sessionsStarted,sessionIds:y.startedSessionIds})}).catch(y=>{b.error("SYSTEM","Auto-recovery of pending queues failed",{},y)})}catch(e){throw b.error("SYSTEM","Background initialization failed",{},e),e}}getActiveAgent(){return Kc()&&qs()?this.openRouterAgent:Wc()&&Ls()?this.geminiAgent:this.sdkAgent}startSessionProcessor(e,r){if(!e)return;let n=e.sessionDbId,i=this.getActiveAgent(),o=i.constructor.name;e.abortController.signal.aborted&&(b.debug("SYSTEM","Replacing aborted AbortController before starting generator",{sessionId:e.sessionDbId}),e.abortController=new AbortController);let s=!1,a=!1;b.info("SYSTEM",`Starting generator (${r}) using ${o}`,{sessionId:n}),e.lastGeneratorActivity=Date.now(),e.generatorPromise=i.startSession(e,this).catch(async c=>{let u=c?.message||"";if(["Claude executable not found","CLAUDE_CODE_PATH","ENOENT","spawn","Invalid API key"].some(d=>u.includes(d))){s=!0,this.lastAiInteraction={timestamp:Date.now(),success:!1,provider:o,error:u},b.error("SDK","Unrecoverable generator error - will NOT restart",{sessionId:e.sessionDbId,project:e.project,errorMessage:u});return}if(this.isSessionTerminatedError(c))return b.warn("SDK","SDK resume failed, falling back to standalone processing",{sessionId:e.sessionDbId,project:e.project,reason:c instanceof Error?c.message:String(c)}),this.runFallbackForTerminatedSession(e,c);throw(u.includes("aborted by user")||u.includes("No conversation found"))&&e.memorySessionId&&(b.warn("SDK","Detected stale resume failure, clearing memorySessionId for fresh start",{sessionId:e.sessionDbId,memorySessionId:e.memorySessionId,errorMessage:u}),this.dbManager.getSessionStore().updateMemorySessionId(e.sessionDbId,null),e.memorySessionId=null,e.forceInit=!0),b.error("SDK","Session generator failed",{sessionId:e.sessionDbId,project:e.project,provider:o},c),a=!0,this.lastAiInteraction={timestamp:Date.now(),success:!1,provider:o,error:u},c}).finally(async()=>{let c=zo(e.sessionDbId);if(c&&!c.process.killed&&c.process.exitCode===null&&await Uo(c,5e3),e.generatorPromise=null,!a&&!s&&(this.lastAiInteraction={timestamp:Date.now(),success:!0,provider:o}),s){b.warn("SYSTEM","Skipping restart due to unrecoverable error",{sessionId:e.sessionDbId}),this.broadcastProcessingStatus();return}let{PendingMessageStore:u}=(jo(),tu(Ps)),l=new u(this.dbManager.getSessionStore().db,3);if(e.idleTimedOut){b.info("SYSTEM","Generator exited due to idle timeout, not restarting",{sessionId:e.sessionDbId}),e.idleTimedOut=!1,this.broadcastProcessingStatus();return}let d=l.getPendingCount(e.sessionDbId);d>0&&(b.info("SYSTEM","Pending work remains after generator exit, restarting with fresh AbortController",{sessionId:e.sessionDbId,pendingCount:d}),e.abortController=new AbortController,this.startSessionProcessor(e,"pending-work-restart")),this.broadcastProcessingStatus()})}isSessionTerminatedError(e){let n=(e instanceof Error?e.message:String(e)).toLowerCase();return n.includes("process aborted by user")||n.includes("processtransport")||n.includes("not ready for writing")||n.includes("session generator failed")||n.includes("claude code process")}async runFallbackForTerminatedSession(e,r){if(!e)return;let n=e.sessionDbId;if(!e.memorySessionId){let s=`fallback-${n}-${Date.now()}`;e.memorySessionId=s,this.dbManager.getSessionStore().updateMemorySessionId(n,s)}if(Ls())try{await this.geminiAgent.startSession(e,this);return}catch(s){b.warn("SDK","Fallback Gemini failed, trying OpenRouter",{sessionId:n,error:s instanceof Error?s.message:String(s)})}if(qs())try{await this.openRouterAgent.startSession(e,this);return}catch(s){b.warn("SDK","Fallback OpenRouter failed",{sessionId:n,error:s instanceof Error?s.message:String(s)})}let o=this.sessionManager.getPendingMessageStore().markAllSessionMessagesAbandoned(n);o>0&&b.warn("SDK","No fallback available; marked pending messages abandoned",{sessionId:n,abandoned:o}),this.sessionManager.removeSessionImmediate(n),this.sessionEventBroadcaster.broadcastSessionCompleted(n)}async processPendingQueues(e=10){let{PendingMessageStore:r}=await Promise.resolve().then(()=>(jo(),Ps)),n=new r(this.dbManager.getSessionStore().db,3),i=this.dbManager.getSessionStore(),o=360*60*1e3,s=Date.now()-o;try{let u=i.db.prepare(`
|
|
1429
1429
|
SELECT id FROM sdk_sessions
|
|
1430
1430
|
WHERE status = 'active' AND started_at_epoch < ?
|
|
1431
1431
|
`).all(s);if(u.length>0){let l=u.map(m=>m.id),d=l.map(()=>"?").join(",");i.db.prepare(`
|