claude-mem 12.3.4 → 12.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/npx-cli/index.js +27 -27
- package/dist/opencode-plugin/index.js +2 -2
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +3 -3
- package/plugin/package.json +1 -1
- package/plugin/scripts/context-generator.cjs +1 -1
- package/plugin/scripts/mcp-server.cjs +2 -2
- package/plugin/scripts/worker-service.cjs +160 -156
- package/plugin/ui/viewer-bundle.js +10 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var d="http://127.0.0.1:37777";function l(t,s){fetch(`${d}${t}`,{method:"POST",headers:
|
|
2
|
-
`)}}}}},w
|
|
1
|
+
var d="http://127.0.0.1:37777";var g={"Content-Type":"application/json"};function l(t,s){fetch(`${d}${t}`,{method:"POST",headers:g,body:JSON.stringify(s)}).catch(o=>{let r=o instanceof Error?o.message:String(o);r.includes("ECONNREFUSED")||console.warn(`[claude-mem] Worker POST ${t} failed: ${r}`)})}async function E(t){try{let s=await fetch(`${d}${t}`,{headers:g});return s.ok?await s.text():(console.warn(`[claude-mem] Worker GET ${t} returned ${s.status}`),null)}catch(s){let o=s instanceof Error?s.message:String(s);return o.includes("ECONNREFUSED")||console.warn(`[claude-mem] Worker GET ${t} failed: ${o}`),null}}var a=new Map,S=1e3;function u(t){if(!a.has(t)){for(;a.size>=S;){let s=a.keys().next().value;if(s!==void 0)a.delete(s);else break}a.set(t,`opencode-${t}-${Date.now()}`)}return a.get(t)}var w=async t=>{let s=t.project?.name||"opencode";return console.log(`[claude-mem] OpenCode plugin loading (project: ${s})`),{hooks:{tool:{execute:{after:(o,r)=>{let e=u(o.sessionID),n=r.output||"";n.length>1e3&&(n=n.slice(0,1e3)),l("/api/sessions/observations",{contentSessionId:e,tool_name:o.tool,tool_input:o.args||{},tool_response:n,cwd:t.directory})}}}},event:(o,r)=>{switch(o){case"session.created":{let{event:e}=r,n=u(e.sessionID);l("/api/sessions/init",{contentSessionId:n,project:s,prompt:""});break}case"message.updated":{let{event:e}=r;if(e.role!=="assistant")break;let n=u(e.sessionID),c=e.content||"";c.length>1e3&&(c=c.slice(0,1e3)),l("/api/sessions/observations",{contentSessionId:n,tool_name:"assistant_message",tool_input:{},tool_response:c,cwd:t.directory});break}case"session.compacted":{let{event:e}=r,n=u(e.sessionID);l("/api/sessions/summarize",{contentSessionId:n,last_assistant_message:e.summary||""});break}case"file.edited":{let{event:e}=r,n=u(e.sessionID);l("/api/sessions/observations",{contentSessionId:n,tool_name:"file_edit",tool_input:{path:e.path},tool_response:e.diff?e.diff.slice(0,1e3):`File edited: ${e.path}`,cwd:t.directory});break}case"session.deleted":{let{event:e}=r,n=a.get(e.sessionID);n&&(l("/api/sessions/complete",{contentSessionId:n}),a.delete(e.sessionID));break}}},tool:{claude_mem_search:{description:"Search claude-mem memory database for past observations, sessions, and context",args:{query:{type:"string",description:"Search query for memory observations"}},async execute(o){let r=String(o.query||"");if(!r)return"Please provide a search query.";let e=await E(`/api/search/observations?query=${encodeURIComponent(r)}&limit=10`);if(!e)return"claude-mem worker is not running. Start it with: npx claude-mem start";let n;try{n=JSON.parse(e)}catch(i){return console.warn("[claude-mem] Failed to parse search results:",i instanceof Error?i.message:String(i)),"Failed to parse search results."}let c=Array.isArray(n.items)?n.items:[];return c.length===0?`No results found for "${r}".`:c.slice(0,10).map((i,m)=>{let f=String(i.title||i.subtitle||"Untitled"),p=i.project?` [${String(i.project)}]`:"";return`${m+1}. ${f}${p}`}).join(`
|
|
2
|
+
`)}}}}},O=w;export{w as ClaudeMemPlugin,O as default};
|
package/package.json
CHANGED
package/plugin/hooks/hooks.json
CHANGED
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "command",
|
|
27
|
-
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" start; for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do curl -sf http://localhost
|
|
27
|
+
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" start; for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1 && break; sleep 1; done; curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1 || true; echo '{\"continue\":true,\"suppressOutput\":true}'",
|
|
28
28
|
"timeout": 60
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"type": "command",
|
|
32
|
-
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do curl -sf http://localhost
|
|
32
|
+
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1 && break; sleep 1; done; if curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1; then node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook claude-code context || true; fi",
|
|
33
33
|
"timeout": 60
|
|
34
34
|
}
|
|
35
35
|
]
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"hooks": [
|
|
41
41
|
{
|
|
42
42
|
"type": "command",
|
|
43
|
-
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook claude-code session-init",
|
|
43
|
+
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=$(ls -dt $HOME/.claude/plugins/cache/thedotmack/claude-mem/[0-9]*/ 2>/dev/null | head -1); _R=\"${_R%/}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/thedotmack/plugin\"; _HEALTH=0; curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1 && _HEALTH=1 || for i in 1 2 3 4 5 6 7 8 9 10; do sleep 1; curl -sf http://localhost:$((37700 + $(id -u 2>/dev/null || echo 77) % 100))/health >/dev/null 2>&1 && _HEALTH=1 && break; done; [ \"$_HEALTH\" = \"1\" ] && node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook claude-code session-init",
|
|
44
44
|
"timeout": 60
|
|
45
45
|
}
|
|
46
46
|
]
|
package/plugin/package.json
CHANGED
|
@@ -657,7 +657,7 @@ ${o.stack}`:` ${o.message}`:this.getLevel()===0&&typeof o=="object"?u=`
|
|
|
657
657
|
content_session_id, prompt_number, prompt_text,
|
|
658
658
|
created_at, created_at_epoch
|
|
659
659
|
) VALUES (?, ?, ?, ?, ?)
|
|
660
|
-
`).run(e.content_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var Me=L(require("path"),1),xe=require("os");var C=require("fs"),x=require("path"),ne=require("os"),W=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:
|
|
660
|
+
`).run(e.content_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var Me=L(require("path"),1),xe=require("os");var C=require("fs"),x=require("path"),ne=require("os"),W=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),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_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",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,x.join)((0,ne.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_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_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,x.join)((0,ne.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",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 process.env[e]??this.DEFAULTS[e]}static getInt(e){let t=this.get(e);return parseInt(t,10)}static getBool(e){let t=this.get(e);return t==="true"||t===!0}static applyEnvOverrides(e){let t={...e};for(let s of Object.keys(this.DEFAULTS))process.env[s]!==void 0&&(t[s]=process.env[s]);return t}static loadFromFile(e){try{if(!(0,C.existsSync)(e)){let i=this.getAllDefaults();try{let a=(0,x.dirname)(e);(0,C.existsSync)(a)||(0,C.mkdirSync)(a,{recursive:!0}),(0,C.writeFileSync)(e,JSON.stringify(i,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",e)}catch(a){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,a instanceof Error?a.message:String(a))}return this.applyEnvOverrides(i)}let t=(0,C.readFileSync)(e,"utf-8"),s=JSON.parse(t),n=s;if(s.env&&typeof s.env=="object"){n=s.env;try{(0,C.writeFileSync)(e,JSON.stringify(n,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(i){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,i instanceof Error?i.message:String(i))}}let o={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))n[i]!==void 0&&(o[i]=n[i]);return this.applyEnvOverrides(o)}catch(t){return console.warn("[SETTINGS] Failed to load settings, using defaults:",e,t instanceof Error?t.message:String(t)),this.applyEnvOverrides(this.getAllDefaults())}}};var U=require("fs"),q=require("path");var A=class r{static instance=null;activeMode=null;modesDir;constructor(){let e=Re(),t=[(0,q.join)(e,"modes"),(0,q.join)(e,"..","plugin","modes")],s=t.find(n=>(0,U.existsSync)(n));this.modesDir=s||t[0]}static getInstance(){return r.instance||(r.instance=new r),r.instance}parseInheritance(e){let t=e.split("--");if(t.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(t.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:t[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,t){let s={...e};for(let n in t){let o=t[n],i=e[n];this.isPlainObject(o)&&this.isPlainObject(i)?s[n]=this.deepMerge(i,o):s[n]=o}return s}loadModeFile(e){let t=(0,q.join)(this.modesDir,`${e}.json`);if(!(0,U.existsSync)(t))throw new Error(`Mode file not found: ${t}`);let s=(0,U.readFileSync)(t,"utf-8");return JSON.parse(s)}loadMode(e){let t=this.parseInheritance(e);if(!t.hasParent)try{let d=this.loadModeFile(e);return this.activeMode=d,_.debug("SYSTEM",`Loaded mode: ${d.name} (${e})`,void 0,{types:d.observation_types.map(m=>m.id),concepts:d.observation_concepts.map(m=>m.id)}),d}catch(d){if(d instanceof Error?_.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:d.message}):_.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{error:String(d)}),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:s,overrideId:n}=t,o;try{o=this.loadMode(s)}catch(d){d instanceof Error?_.warn("WORKER",`Parent mode '${s}' not found for ${e}, falling back to 'code'`,{message:d.message}):_.warn("WORKER",`Parent mode '${s}' not found for ${e}, falling back to 'code'`,{error:String(d)}),o=this.loadMode("code")}let i;try{i=this.loadModeFile(n),_.debug("SYSTEM",`Loaded override file: ${n} for parent ${s}`)}catch(d){return d instanceof Error?_.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{message:d.message}):_.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{error:String(d)}),this.activeMode=o,o}if(!i)return _.warn("SYSTEM",`Invalid override file: ${n}, using parent mode '${s}' only`),this.activeMode=o,o;let a=this.deepMerge(o,i);return this.activeMode=a,_.debug("SYSTEM",`Loaded mode with inheritance: ${a.name} (${e} = ${s} + ${n})`,void 0,{parent:s,override:n,types:a.observation_types.map(d=>d.id),concepts:a.observation_concepts.map(d=>d.id)}),a}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getObservationTypes(){return this.getActiveMode().observation_types}getObservationConcepts(){return this.getActiveMode().observation_concepts}getTypeIcon(e){return this.getObservationTypes().find(s=>s.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(s=>s.id===e)?.work_emoji||"\u{1F4DD}"}validateType(e){return this.getObservationTypes().some(t=>t.id===e)}getTypeLabel(e){return this.getObservationTypes().find(s=>s.id===e)?.label||e}};function oe(){let r=Me.default.join((0,xe.homedir)(),".claude-mem","settings.json"),e=W.loadFromFile(r),t=A.getInstance().getActiveMode(),s=new Set(t.observation_types.map(o=>o.id)),n=new Set(t.observation_concepts.map(o=>o.id));return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:s,observationConcepts:n,fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}var c={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"},Ue=4,ie=1;function ae(r){let e=(r.title?.length||0)+(r.subtitle?.length||0)+(r.narrative?.length||0)+JSON.stringify(r.facts||[]).length;return Math.ceil(e/Ue)}function de(r){let e=r.length,t=r.reduce((i,a)=>i+ae(a),0),s=r.reduce((i,a)=>i+(a.discovery_tokens||0),0),n=s-t,o=s>0?Math.round(n/s*100):0;return{totalObservations:e,totalReadTokens:t,totalDiscoveryTokens:s,savings:n,savingsPercent:o}}function Wt(r){return A.getInstance().getWorkEmoji(r)}function k(r,e){let t=ae(r),s=r.discovery_tokens||0,n=Wt(r.type),o=s>0?`${n} ${s.toLocaleString()}`:"-";return{readTokens:t,discoveryTokens:s,discoveryDisplay:o,workEmoji:n}}function V(r){return r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent}var we=L(require("path"),1),Y=require("fs");var ke=/<system-reminder>[\s\S]*?<\/system-reminder>/g;function ce(r,e,t,s){let n=Array.from(t.observationTypes),o=n.map(()=>"?").join(","),i=Array.from(t.observationConcepts),a=i.map(()=>"?").join(",");return r.db.prepare(`
|
|
661
661
|
SELECT
|
|
662
662
|
o.id,
|
|
663
663
|
o.memory_session_id,
|
|
@@ -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 p=t.seen.get(l),f=p.schema;if(f.$ref&&(t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(f)):Object.assign(c,f),Object.assign(c,u),a._zod.parent===l)for(let g in c)g==="$ref"||g==="allOf"||g in u||delete c[g];if(f.$ref&&p.def)for(let g in c)g==="$ref"||g==="allOf"||g in p.def&&JSON.stringify(c[g])===JSON.stringify(p.def[g])&&delete c[g]}let d=a._zod.parent;if(d&&d!==l){n(d);let p=t.seen.get(d);if(p?.schema.$ref&&(c.$ref=p.schema.$ref,p.def))for(let f in c)f==="$ref"||f==="allOf"||f in p.def&&JSON.stringify(c[f])===JSON.stringify(p.def[f])&&delete c[f]}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:Uo(e,"input",t.processors),output:Uo(e,"output",t.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function Ze(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 Ze(n.element,r);if(n.type==="set")return Ze(n.valueType,r);if(n.type==="lazy")return Ze(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 Ze(n.innerType,r);if(n.type==="intersection")return Ze(n.left,r)||Ze(n.right,r);if(n.type==="record"||n.type==="map")return Ze(n.keyType,r)||Ze(n.valueType,r);if(n.type==="pipe")return Ze(n.in,r)||Ze(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Ze(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Ze(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Ze(o,r))return!0;return!!(n.rest&&Ze(n.rest,r))}return!1}var Nh=(t,e={})=>r=>{let n=za({...r,processors:e});return fe(t,n),Pa(n,t),Ta(n,t)},Uo=(t,e,r={})=>n=>{let{libraryOptions:o,target:i}=n??{},a=za({...o??{},target:i,io:e,processors:r});return fe(t,a),Pa(a,t),Ta(a,t)};var lS={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Mh=(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=lS[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}))])}},Rh=(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)},Ah=(t,e,r,n)=>{r.type="boolean"},Ch=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Uh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},Zh=(t,e,r,n)=>{e.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},Lh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Fh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},qh=(t,e,r,n)=>{r.not={}},Vh=(t,e,r,n)=>{},Wh=(t,e,r,n)=>{},Jh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},Hh=(t,e,r,n)=>{let o=t._zod.def,i=ao(o.entries);i.every(a=>typeof a=="number")&&(r.type="number"),i.every(a=>typeof a=="string")&&(r.type="string"),r.enum=i},Gh=(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},Kh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Yh=(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},Bh=(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)},Xh=(t,e,r,n)=>{r.type="boolean"},Qh=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},eg=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},tg=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},rg=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},ng=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},og=(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=fe(i.element,e,{...n,path:[...n.path,"items"]})},ig=(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]=fe(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=fe(i.catchall,e,{...n,path:[...n.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},Kl=(t,e,r,n)=>{let o=t._zod.def,i=o.inclusive===!1,a=o.options.map((s,c)=>fe(s,e,{...n,path:[...n.path,i?"oneOf":"anyOf",c]}));i?r.oneOf=a:r.anyOf=a},ag=(t,e,r,n)=>{let o=t._zod.def,i=fe(o.left,e,{...n,path:[...n.path,"allOf",0]}),a=fe(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},sg=(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((p,f)=>fe(p,e,{...n,path:[...n.path,a,f]})),u=i.rest?fe(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)},cg=(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=fe(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=fe(i.keyType,e,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=fe(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)}},ug=(t,e,r,n)=>{let o=t._zod.def,i=fe(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"}]},lg=(t,e,r,n)=>{let o=t._zod.def;fe(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},dg=(t,e,r,n)=>{let o=t._zod.def;fe(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},pg=(t,e,r,n)=>{let o=t._zod.def;fe(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)))},fg=(t,e,r,n)=>{let o=t._zod.def;fe(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},mg=(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;fe(i,e,n);let a=e.seen.get(t);a.ref=i},hg=(t,e,r,n)=>{let o=t._zod.def;fe(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType,r.readOnly=!0},gg=(t,e,r,n)=>{let o=t._zod.def;fe(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},Yl=(t,e,r,n)=>{let o=t._zod.def;fe(o.innerType,e,n);let i=e.seen.get(t);i.ref=o.innerType},vg=(t,e,r,n)=>{let o=t._zod.innerType;fe(o,e,n);let i=e.seen.get(t);i.ref=o};function fn(t){return!!t._zod}function dr(t,e){return fn(t)?cn(t,e):t.safeParse(e)}function Oa(t){if(!t)return;let e;if(fn(t)?e=t._zod?.def?.shape:e=t.shape,!!e){if(typeof e=="function")try{return e()}catch{return}return e}}function bg(t){if(fn(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 Zo={};Wn(Zo,{ZodAny:()=>Ug,ZodArray:()=>qg,ZodBase64:()=>$d,ZodBase64URL:()=>bd,ZodBigInt:()=>Za,ZodBigIntFormat:()=>kd,ZodBoolean:()=>Ua,ZodCIDRv4:()=>_d,ZodCIDRv6:()=>yd,ZodCUID:()=>dd,ZodCUID2:()=>pd,ZodCatch:()=>uv,ZodCodec:()=>Od,ZodCustom:()=>Ja,ZodCustomStringFormat:()=>Fo,ZodDate:()=>Ed,ZodDefault:()=>nv,ZodDiscriminatedUnion:()=>Wg,ZodE164:()=>xd,ZodEmail:()=>cd,ZodEmoji:()=>ud,ZodEnum:()=>Lo,ZodExactOptional:()=>ev,ZodFile:()=>Xg,ZodFunction:()=>_v,ZodGUID:()=>Da,ZodIPv4:()=>gd,ZodIPv6:()=>vd,ZodIntersection:()=>Jg,ZodJWT:()=>Sd,ZodKSUID:()=>hd,ZodLazy:()=>hv,ZodLiteral:()=>Bg,ZodMAC:()=>Mg,ZodMap:()=>Kg,ZodNaN:()=>dv,ZodNanoID:()=>ld,ZodNever:()=>Lg,ZodNonOptional:()=>Pd,ZodNull:()=>Cg,ZodNullable:()=>rv,ZodNumber:()=>Ca,ZodNumberFormat:()=>mn,ZodObject:()=>Fa,ZodOptional:()=>zd,ZodPipe:()=>Td,ZodPrefault:()=>iv,ZodPromise:()=>vv,ZodReadonly:()=>pv,ZodRecord:()=>Wa,ZodSet:()=>Yg,ZodString:()=>Ra,ZodStringFormat:()=>ue,ZodSuccess:()=>cv,ZodSymbol:()=>Rg,ZodTemplateLiteral:()=>mv,ZodTransform:()=>Qg,ZodTuple:()=>Hg,ZodType:()=>V,ZodULID:()=>fd,ZodURL:()=>Aa,ZodUUID:()=>Vt,ZodUndefined:()=>Ag,ZodUnion:()=>qa,ZodUnknown:()=>Zg,ZodVoid:()=>Fg,ZodXID:()=>md,ZodXor:()=>Vg,_ZodString:()=>sd,_default:()=>ov,_function:()=>zk,any:()=>lk,array:()=>Y,base64:()=>HS,base64url:()=>GS,bigint:()=>ik,boolean:()=>$e,catch:()=>lv,check:()=>Pk,cidrv4:()=>WS,cidrv6:()=>JS,codec:()=>wk,cuid:()=>AS,cuid2:()=>CS,custom:()=>jd,date:()=>pk,describe:()=>Tk,discriminatedUnion:()=>Va,e164:()=>KS,email:()=>IS,emoji:()=>MS,enum:()=>Oe,exactOptional:()=>tv,file:()=>bk,float32:()=>tk,float64:()=>rk,function:()=>zk,guid:()=>zS,hash:()=>ek,hex:()=>QS,hostname:()=>XS,httpUrl:()=>NS,instanceof:()=>jk,int:()=>ad,int32:()=>nk,int64:()=>ak,intersection:()=>qo,ipv4:()=>FS,ipv6:()=>VS,json:()=>Nk,jwt:()=>YS,keyof:()=>fk,ksuid:()=>LS,lazy:()=>gv,literal:()=>j,looseObject:()=>Te,looseRecord:()=>vk,mac:()=>qS,map:()=>_k,meta:()=>Ok,nan:()=>kk,nanoid:()=>RS,nativeEnum:()=>$k,never:()=>wd,nonoptional:()=>sv,null:()=>La,nullable:()=>Na,nullish:()=>xk,number:()=>oe,object:()=>P,optional:()=>me,partialRecord:()=>gk,pipe:()=>Ma,prefault:()=>av,preprocess:()=>Ha,promise:()=>Ik,readonly:()=>fv,record:()=>ae,refine:()=>yv,set:()=>yk,strictObject:()=>mk,string:()=>v,stringFormat:()=>BS,stringbool:()=>Dk,success:()=>Sk,superRefine:()=>$v,symbol:()=>ck,templateLiteral:()=>Ek,transform:()=>Id,tuple:()=>Gg,uint32:()=>ok,uint64:()=>sk,ulid:()=>US,undefined:()=>uk,union:()=>de,unknown:()=>le,url:()=>DS,uuid:()=>PS,uuidv4:()=>TS,uuidv6:()=>OS,uuidv7:()=>jS,void:()=>dk,xid:()=>ZS,xor:()=>hk});var ja={};Wn(ja,{endsWith:()=>Do,gt:()=>Ft,gte:()=>Ue,includes:()=>Oo,length:()=>dn,lowercase:()=>Po,lt:()=>Lt,lte:()=>et,maxLength:()=>ln,maxSize:()=>Pr,mime:()=>No,minLength:()=>lr,minSize:()=>qt,multipleOf:()=>zr,negative:()=>Cl,nonnegative:()=>Zl,nonpositive:()=>Ul,normalize:()=>Mo,overwrite:()=>It,positive:()=>Al,property:()=>Ll,regex:()=>zo,size:()=>un,slugify:()=>Ia,startsWith:()=>jo,toLowerCase:()=>Ao,toUpperCase:()=>Co,trim:()=>Ro,uppercase:()=>To});var Tr={};Wn(Tr,{ZodISODate:()=>ed,ZodISODateTime:()=>Xl,ZodISODuration:()=>od,ZodISOTime:()=>rd,date:()=>td,datetime:()=>Ql,duration:()=>id,time:()=>nd});var Xl=m("ZodISODateTime",(t,e)=>{pu.init(t,e),ue.init(t,e)});function Ql(t){return ml(Xl,t)}var ed=m("ZodISODate",(t,e)=>{fu.init(t,e),ue.init(t,e)});function td(t){return hl(ed,t)}var rd=m("ZodISOTime",(t,e)=>{mu.init(t,e),ue.init(t,e)});function nd(t){return gl(rd,t)}var od=m("ZodISODuration",(t,e)=>{hu.init(t,e),ue.init(t,e)});function id(t){return vl(od,t)}var xg=(t,e)=>{Ji.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:r=>Gi(t,r)},flatten:{value:r=>Hi(t,r)},addIssue:{value:r=>{t.issues.push(r),t.message=JSON.stringify(t.issues,on,2)}},addIssues:{value:r=>{t.issues.push(...r),t.message=JSON.stringify(t.issues,on,2)}},isEmpty:{get(){return t.issues.length===0}}})},$A=m("ZodError",xg),tt=m("ZodError",xg,{Parent:Error});var Sg=fo(tt),kg=ho(tt),wg=vo(tt),Eg=_o(tt),Ig=Am(tt),zg=Cm(tt),Pg=Um(tt),Tg=Zm(tt),Og=Lm(tt),jg=Fm(tt),Dg=qm(tt),Ng=Vm(tt);var V=m("ZodType",(t,e)=>(L.init(t,e),Object.assign(t["~standard"],{jsonSchema:{input:Uo(t,"input"),output:Uo(t,"output")}}),t.toJSONSchema=Nh(t,{}),t.def=e,t.type=e.type,Object.defineProperty(t,"_def",{value:e}),t.check=(...r)=>t.clone(b.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)=>Ae(t,r,n),t.brand=()=>t,t.register=((r,n)=>(r.add(t,n),t)),t.parse=(r,n)=>Sg(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>wg(t,r,n),t.parseAsync=async(r,n)=>kg(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>Eg(t,r,n),t.spa=t.safeParseAsync,t.encode=(r,n)=>Ig(t,r,n),t.decode=(r,n)=>zg(t,r,n),t.encodeAsync=async(r,n)=>Pg(t,r,n),t.decodeAsync=async(r,n)=>Tg(t,r,n),t.safeEncode=(r,n)=>Og(t,r,n),t.safeDecode=(r,n)=>jg(t,r,n),t.safeEncodeAsync=async(r,n)=>Dg(t,r,n),t.safeDecodeAsync=async(r,n)=>Ng(t,r,n),t.refine=(r,n)=>t.check(yv(r,n)),t.superRefine=r=>t.check($v(r)),t.overwrite=r=>t.check(It(r)),t.optional=()=>me(t),t.exactOptional=()=>tv(t),t.nullable=()=>Na(t),t.nullish=()=>me(Na(t)),t.nonoptional=r=>sv(t,r),t.array=()=>Y(t),t.or=r=>de([t,r]),t.and=r=>qo(t,r),t.transform=r=>Ma(t,Id(r)),t.default=r=>ov(t,r),t.prefault=r=>av(t,r),t.catch=r=>lv(t,r),t.pipe=r=>Ma(t,r),t.readonly=()=>fv(t),t.describe=r=>{let n=t.clone();return Ce.add(n,{description:r}),n},Object.defineProperty(t,"description",{get(){return Ce.get(t)?.description},configurable:!0}),t.meta=(...r)=>{if(r.length===0)return Ce.get(t);let n=t.clone();return Ce.add(n,r[0]),n},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t.apply=r=>r(t),t)),sd=m("_ZodString",(t,e)=>{Ir.init(t,e),V.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Mh(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(zo(...n)),t.includes=(...n)=>t.check(Oo(...n)),t.startsWith=(...n)=>t.check(jo(...n)),t.endsWith=(...n)=>t.check(Do(...n)),t.min=(...n)=>t.check(lr(...n)),t.max=(...n)=>t.check(ln(...n)),t.length=(...n)=>t.check(dn(...n)),t.nonempty=(...n)=>t.check(lr(1,...n)),t.lowercase=n=>t.check(Po(n)),t.uppercase=n=>t.check(To(n)),t.trim=()=>t.check(Ro()),t.normalize=(...n)=>t.check(Mo(...n)),t.toLowerCase=()=>t.check(Ao()),t.toUpperCase=()=>t.check(Co()),t.slugify=()=>t.check(Ia())}),Ra=m("ZodString",(t,e)=>{Ir.init(t,e),sd.init(t,e),t.email=r=>t.check(sa(cd,r)),t.url=r=>t.check(Io(Aa,r)),t.jwt=r=>t.check(Ea(Sd,r)),t.emoji=r=>t.check(pa(ud,r)),t.guid=r=>t.check(Eo(Da,r)),t.uuid=r=>t.check(ca(Vt,r)),t.uuidv4=r=>t.check(ua(Vt,r)),t.uuidv6=r=>t.check(la(Vt,r)),t.uuidv7=r=>t.check(da(Vt,r)),t.nanoid=r=>t.check(fa(ld,r)),t.guid=r=>t.check(Eo(Da,r)),t.cuid=r=>t.check(ma(dd,r)),t.cuid2=r=>t.check(ha(pd,r)),t.ulid=r=>t.check(ga(fd,r)),t.base64=r=>t.check(Sa($d,r)),t.base64url=r=>t.check(ka(bd,r)),t.xid=r=>t.check(va(md,r)),t.ksuid=r=>t.check(_a(hd,r)),t.ipv4=r=>t.check(ya(gd,r)),t.ipv6=r=>t.check($a(vd,r)),t.cidrv4=r=>t.check(ba(_d,r)),t.cidrv6=r=>t.check(xa(yd,r)),t.e164=r=>t.check(wa(xd,r)),t.datetime=r=>t.check(Ql(r)),t.date=r=>t.check(td(r)),t.time=r=>t.check(nd(r)),t.duration=r=>t.check(id(r))});function v(t){return pl(Ra,t)}var ue=m("ZodStringFormat",(t,e)=>{ie.init(t,e),sd.init(t,e)}),cd=m("ZodEmail",(t,e)=>{nu.init(t,e),ue.init(t,e)});function IS(t){return sa(cd,t)}var Da=m("ZodGUID",(t,e)=>{tu.init(t,e),ue.init(t,e)});function zS(t){return Eo(Da,t)}var Vt=m("ZodUUID",(t,e)=>{ru.init(t,e),ue.init(t,e)});function PS(t){return ca(Vt,t)}function TS(t){return ua(Vt,t)}function OS(t){return la(Vt,t)}function jS(t){return da(Vt,t)}var Aa=m("ZodURL",(t,e)=>{ou.init(t,e),ue.init(t,e)});function DS(t){return Io(Aa,t)}function NS(t){return Io(Aa,{protocol:/^https?$/,hostname:it.domain,...b.normalizeParams(t)})}var ud=m("ZodEmoji",(t,e)=>{iu.init(t,e),ue.init(t,e)});function MS(t){return pa(ud,t)}var ld=m("ZodNanoID",(t,e)=>{au.init(t,e),ue.init(t,e)});function RS(t){return fa(ld,t)}var dd=m("ZodCUID",(t,e)=>{su.init(t,e),ue.init(t,e)});function AS(t){return ma(dd,t)}var pd=m("ZodCUID2",(t,e)=>{cu.init(t,e),ue.init(t,e)});function CS(t){return ha(pd,t)}var fd=m("ZodULID",(t,e)=>{uu.init(t,e),ue.init(t,e)});function US(t){return ga(fd,t)}var md=m("ZodXID",(t,e)=>{lu.init(t,e),ue.init(t,e)});function ZS(t){return va(md,t)}var hd=m("ZodKSUID",(t,e)=>{du.init(t,e),ue.init(t,e)});function LS(t){return _a(hd,t)}var gd=m("ZodIPv4",(t,e)=>{gu.init(t,e),ue.init(t,e)});function FS(t){return ya(gd,t)}var Mg=m("ZodMAC",(t,e)=>{_u.init(t,e),ue.init(t,e)});function qS(t){return fl(Mg,t)}var vd=m("ZodIPv6",(t,e)=>{vu.init(t,e),ue.init(t,e)});function VS(t){return $a(vd,t)}var _d=m("ZodCIDRv4",(t,e)=>{yu.init(t,e),ue.init(t,e)});function WS(t){return ba(_d,t)}var yd=m("ZodCIDRv6",(t,e)=>{$u.init(t,e),ue.init(t,e)});function JS(t){return xa(yd,t)}var $d=m("ZodBase64",(t,e)=>{bu.init(t,e),ue.init(t,e)});function HS(t){return Sa($d,t)}var bd=m("ZodBase64URL",(t,e)=>{xu.init(t,e),ue.init(t,e)});function GS(t){return ka(bd,t)}var xd=m("ZodE164",(t,e)=>{Su.init(t,e),ue.init(t,e)});function KS(t){return wa(xd,t)}var Sd=m("ZodJWT",(t,e)=>{ku.init(t,e),ue.init(t,e)});function YS(t){return Ea(Sd,t)}var Fo=m("ZodCustomStringFormat",(t,e)=>{wu.init(t,e),ue.init(t,e)});function BS(t,e,r={}){return pn(Fo,t,e,r)}function XS(t){return pn(Fo,"hostname",it.hostname,t)}function QS(t){return pn(Fo,"hex",it.hex,t)}function ek(t,e){let r=e?.enc??"hex",n=`${t}_${r}`,o=it[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return pn(Fo,n,o,e)}var Ca=m("ZodNumber",(t,e)=>{na.init(t,e),V.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Rh(t,n,o,i),t.gt=(n,o)=>t.check(Ft(n,o)),t.gte=(n,o)=>t.check(Ue(n,o)),t.min=(n,o)=>t.check(Ue(n,o)),t.lt=(n,o)=>t.check(Lt(n,o)),t.lte=(n,o)=>t.check(et(n,o)),t.max=(n,o)=>t.check(et(n,o)),t.int=n=>t.check(ad(n)),t.safe=n=>t.check(ad(n)),t.positive=n=>t.check(Ft(0,n)),t.nonnegative=n=>t.check(Ue(0,n)),t.negative=n=>t.check(Lt(0,n)),t.nonpositive=n=>t.check(et(0,n)),t.multipleOf=(n,o)=>t.check(zr(n,o)),t.step=(n,o)=>t.check(zr(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 oe(t){return _l(Ca,t)}var mn=m("ZodNumberFormat",(t,e)=>{Eu.init(t,e),Ca.init(t,e)});function ad(t){return yl(mn,t)}function tk(t){return $l(mn,t)}function rk(t){return bl(mn,t)}function nk(t){return xl(mn,t)}function ok(t){return Sl(mn,t)}var Ua=m("ZodBoolean",(t,e)=>{So.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Ah(t,r,n,o)});function $e(t){return kl(Ua,t)}var Za=m("ZodBigInt",(t,e)=>{oa.init(t,e),V.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Ch(t,n,o,i),t.gte=(n,o)=>t.check(Ue(n,o)),t.min=(n,o)=>t.check(Ue(n,o)),t.gt=(n,o)=>t.check(Ft(n,o)),t.gte=(n,o)=>t.check(Ue(n,o)),t.min=(n,o)=>t.check(Ue(n,o)),t.lt=(n,o)=>t.check(Lt(n,o)),t.lte=(n,o)=>t.check(et(n,o)),t.max=(n,o)=>t.check(et(n,o)),t.positive=n=>t.check(Ft(BigInt(0),n)),t.negative=n=>t.check(Lt(BigInt(0),n)),t.nonpositive=n=>t.check(et(BigInt(0),n)),t.nonnegative=n=>t.check(Ue(BigInt(0),n)),t.multipleOf=(n,o)=>t.check(zr(n,o));let r=t._zod.bag;t.minValue=r.minimum??null,t.maxValue=r.maximum??null,t.format=r.format??null});function ik(t){return wl(Za,t)}var kd=m("ZodBigIntFormat",(t,e)=>{Iu.init(t,e),Za.init(t,e)});function ak(t){return El(kd,t)}function sk(t){return Il(kd,t)}var Rg=m("ZodSymbol",(t,e)=>{zu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Uh(t,r,n,o)});function ck(t){return zl(Rg,t)}var Ag=m("ZodUndefined",(t,e)=>{Pu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Lh(t,r,n,o)});function uk(t){return Pl(Ag,t)}var Cg=m("ZodNull",(t,e)=>{Tu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Zh(t,r,n,o)});function La(t){return Tl(Cg,t)}var Ug=m("ZodAny",(t,e)=>{Ou.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Vh(t,r,n,o)});function lk(){return Ol(Ug)}var Zg=m("ZodUnknown",(t,e)=>{ju.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Wh(t,r,n,o)});function le(){return jl(Zg)}var Lg=m("ZodNever",(t,e)=>{Du.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>qh(t,r,n,o)});function wd(t){return Dl(Lg,t)}var Fg=m("ZodVoid",(t,e)=>{Nu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Fh(t,r,n,o)});function dk(t){return Nl(Fg,t)}var Ed=m("ZodDate",(t,e)=>{Mu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Jh(t,n,o,i),t.min=(n,o)=>t.check(Ue(n,o)),t.max=(n,o)=>t.check(et(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 pk(t){return Ml(Ed,t)}var qg=m("ZodArray",(t,e)=>{Ru.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>og(t,r,n,o),t.element=e.element,t.min=(r,n)=>t.check(lr(r,n)),t.nonempty=r=>t.check(lr(1,r)),t.max=(r,n)=>t.check(ln(r,n)),t.length=(r,n)=>t.check(dn(r,n)),t.unwrap=()=>t.element});function Y(t,e){return Dh(qg,t,e)}function fk(t){let e=t._zod.def.shape;return Oe(Object.keys(e))}var Fa=m("ZodObject",(t,e)=>{Oh.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ig(t,r,n,o),b.defineLazy(t,"shape",()=>e.shape),t.keyof=()=>Oe(Object.keys(t._zod.def.shape)),t.catchall=r=>t.clone({...t._zod.def,catchall:r}),t.passthrough=()=>t.clone({...t._zod.def,catchall:le()}),t.loose=()=>t.clone({...t._zod.def,catchall:le()}),t.strict=()=>t.clone({...t._zod.def,catchall:wd()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=r=>b.extend(t,r),t.safeExtend=r=>b.safeExtend(t,r),t.merge=r=>b.merge(t,r),t.pick=r=>b.pick(t,r),t.omit=r=>b.omit(t,r),t.partial=(...r)=>b.partial(zd,t,r[0]),t.required=(...r)=>b.required(Pd,t,r[0])});function P(t,e){let r={type:"object",shape:t??{},...b.normalizeParams(e)};return new Fa(r)}function mk(t,e){return new Fa({type:"object",shape:t,catchall:wd(),...b.normalizeParams(e)})}function Te(t,e){return new Fa({type:"object",shape:t,catchall:le(),...b.normalizeParams(e)})}var qa=m("ZodUnion",(t,e)=>{ko.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Kl(t,r,n,o),t.options=e.options});function de(t,e){return new qa({type:"union",options:t,...b.normalizeParams(e)})}var Vg=m("ZodXor",(t,e)=>{qa.init(t,e),Au.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Kl(t,r,n,o),t.options=e.options});function hk(t,e){return new Vg({type:"union",options:t,inclusive:!1,...b.normalizeParams(e)})}var Wg=m("ZodDiscriminatedUnion",(t,e)=>{qa.init(t,e),Cu.init(t,e)});function Va(t,e,r){return new Wg({type:"union",options:e,discriminator:t,...b.normalizeParams(r)})}var Jg=m("ZodIntersection",(t,e)=>{Uu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ag(t,r,n,o)});function qo(t,e){return new Jg({type:"intersection",left:t,right:e})}var Hg=m("ZodTuple",(t,e)=>{ia.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>sg(t,r,n,o),t.rest=r=>t.clone({...t._zod.def,rest:r})});function Gg(t,e,r){let n=e instanceof L,o=n?r:e,i=n?e:null;return new Hg({type:"tuple",items:t,rest:i,...b.normalizeParams(o)})}var Wa=m("ZodRecord",(t,e)=>{Zu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>cg(t,r,n,o),t.keyType=e.keyType,t.valueType=e.valueType});function ae(t,e,r){return new Wa({type:"record",keyType:t,valueType:e,...b.normalizeParams(r)})}function gk(t,e,r){let n=Ae(t);return n._zod.values=void 0,new Wa({type:"record",keyType:n,valueType:e,...b.normalizeParams(r)})}function vk(t,e,r){return new Wa({type:"record",keyType:t,valueType:e,mode:"loose",...b.normalizeParams(r)})}var Kg=m("ZodMap",(t,e)=>{Lu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>rg(t,r,n,o),t.keyType=e.keyType,t.valueType=e.valueType,t.min=(...r)=>t.check(qt(...r)),t.nonempty=r=>t.check(qt(1,r)),t.max=(...r)=>t.check(Pr(...r)),t.size=(...r)=>t.check(un(...r))});function _k(t,e,r){return new Kg({type:"map",keyType:t,valueType:e,...b.normalizeParams(r)})}var Yg=m("ZodSet",(t,e)=>{Fu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ng(t,r,n,o),t.min=(...r)=>t.check(qt(...r)),t.nonempty=r=>t.check(qt(1,r)),t.max=(...r)=>t.check(Pr(...r)),t.size=(...r)=>t.check(un(...r))});function yk(t,e){return new Yg({type:"set",valueType:t,...b.normalizeParams(e)})}var Lo=m("ZodEnum",(t,e)=>{qu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(n,o,i)=>Hh(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 Lo({...e,checks:[],...b.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 Lo({...e,checks:[],...b.normalizeParams(o),entries:i})}});function Oe(t,e){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new Lo({type:"enum",entries:r,...b.normalizeParams(e)})}function $k(t,e){return new Lo({type:"enum",entries:t,...b.normalizeParams(e)})}var Bg=m("ZodLiteral",(t,e)=>{Vu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Gh(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 j(t,e){return new Bg({type:"literal",values:Array.isArray(t)?t:[t],...b.normalizeParams(e)})}var Xg=m("ZodFile",(t,e)=>{Wu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Bh(t,r,n,o),t.min=(r,n)=>t.check(qt(r,n)),t.max=(r,n)=>t.check(Pr(r,n)),t.mime=(r,n)=>t.check(No(Array.isArray(r)?r:[r],n))});function bk(t){return Fl(Xg,t)}var Qg=m("ZodTransform",(t,e)=>{Ju.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>tg(t,r,n,o),t._zod.parse=(r,n)=>{if(n.direction==="backward")throw new kr(t.constructor.name);r.addIssue=i=>{if(typeof i=="string")r.issues.push(b.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(b.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 Id(t){return new Qg({type:"transform",transform:t})}var zd=m("ZodOptional",(t,e)=>{aa.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Yl(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function me(t){return new zd({type:"optional",innerType:t})}var ev=m("ZodExactOptional",(t,e)=>{Hu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Yl(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function tv(t){return new ev({type:"optional",innerType:t})}var rv=m("ZodNullable",(t,e)=>{Gu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>ug(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function Na(t){return new rv({type:"nullable",innerType:t})}function xk(t){return me(Na(t))}var nv=m("ZodDefault",(t,e)=>{Ku.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>dg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function ov(t,e){return new nv({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():b.shallowClone(e)}})}var iv=m("ZodPrefault",(t,e)=>{Yu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>pg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function av(t,e){return new iv({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():b.shallowClone(e)}})}var Pd=m("ZodNonOptional",(t,e)=>{Bu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>lg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function sv(t,e){return new Pd({type:"nonoptional",innerType:t,...b.normalizeParams(e)})}var cv=m("ZodSuccess",(t,e)=>{Xu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Xh(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function Sk(t){return new cv({type:"success",innerType:t})}var uv=m("ZodCatch",(t,e)=>{Qu.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>fg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function lv(t,e){return new uv({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}var dv=m("ZodNaN",(t,e)=>{el.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Kh(t,r,n,o)});function kk(t){return Rl(dv,t)}var Td=m("ZodPipe",(t,e)=>{tl.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>mg(t,r,n,o),t.in=e.in,t.out=e.out});function Ma(t,e){return new Td({type:"pipe",in:t,out:e})}var Od=m("ZodCodec",(t,e)=>{Td.init(t,e),wo.init(t,e)});function wk(t,e,r){return new Od({type:"pipe",in:t,out:e,transform:r.decode,reverseTransform:r.encode})}var pv=m("ZodReadonly",(t,e)=>{rl.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>hg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function fv(t){return new pv({type:"readonly",innerType:t})}var mv=m("ZodTemplateLiteral",(t,e)=>{nl.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Yh(t,r,n,o)});function Ek(t,e){return new mv({type:"template_literal",parts:t,...b.normalizeParams(e)})}var hv=m("ZodLazy",(t,e)=>{al.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>vg(t,r,n,o),t.unwrap=()=>t._zod.def.getter()});function gv(t){return new hv({type:"lazy",getter:t})}var vv=m("ZodPromise",(t,e)=>{il.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>gg(t,r,n,o),t.unwrap=()=>t._zod.def.innerType});function Ik(t){return new vv({type:"promise",innerType:t})}var _v=m("ZodFunction",(t,e)=>{ol.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>eg(t,r,n,o)});function zk(t){return new _v({type:"function",input:Array.isArray(t?.input)?Gg(t?.input):t?.input??Y(le()),output:t?.output??le()})}var Ja=m("ZodCustom",(t,e)=>{sl.init(t,e),V.init(t,e),t._zod.processJSONSchema=(r,n,o)=>Qh(t,r,n,o)});function Pk(t){let e=new ce({check:"custom"});return e._zod.check=t,e}function jd(t,e){return ql(Ja,t??(()=>!0),e)}function yv(t,e={}){return Vl(Ja,t,e)}function $v(t){return Wl(t)}var Tk=Jl,Ok=Hl;function jk(t,e={}){let r=new Ja({type:"custom",check:"custom",fn:n=>n instanceof t,abort:!0,...b.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 Dk=(...t)=>Gl({Codec:Od,Boolean:Ua,String:Ra},...t);function Nk(t){let e=gv(()=>de([v(t),oe(),$e(),La(),Y(e),ae(v(),e)]));return e}function Ha(t,e){return Ma(Id(t),e)}var bv;bv||(bv={});var zA={...Zo,...ja,iso:Tr};be(cl());var Nd="2025-11-25";var xv=[Nd,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],pr="io.modelcontextprotocol/related-task",Ka="2.0",xe=jd(t=>t!==null&&(typeof t=="object"||typeof t=="function")),Sv=de([v(),oe().int()]),kv=v(),HA=Te({ttl:oe().optional(),pollInterval:oe().optional()}),Ck=P({ttl:oe().optional()}),Uk=P({taskId:v()}),Md=Te({progressToken:Sv.optional(),[pr]:Uk.optional()}),rt=P({_meta:Md.optional()}),Vo=rt.extend({task:Ck.optional()}),wv=t=>Vo.safeParse(t).success,Se=P({method:v(),params:rt.loose().optional()}),at=P({_meta:Md.optional()}),st=P({method:v(),params:at.loose().optional()}),ke=Te({_meta:Md.optional()}),Ya=de([v(),oe().int()]),Ev=P({jsonrpc:j(Ka),id:Ya,...Se.shape}).strict(),Rd=t=>Ev.safeParse(t).success,Iv=P({jsonrpc:j(Ka),...st.shape}).strict(),zv=t=>Iv.safeParse(t).success,Ad=P({jsonrpc:j(Ka),id:Ya,result:ke}).strict(),Wo=t=>Ad.safeParse(t).success;var Q;(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"})(Q||(Q={}));var Cd=P({jsonrpc:j(Ka),id:Ya.optional(),error:P({code:oe().int(),message:v(),data:le().optional()})}).strict();var Pv=t=>Cd.safeParse(t).success;var Tv=de([Ev,Iv,Ad,Cd]),GA=de([Ad,Cd]),Ba=ke.strict(),Zk=at.extend({requestId:Ya.optional(),reason:v().optional()}),Xa=st.extend({method:j("notifications/cancelled"),params:Zk}),Lk=P({src:v(),mimeType:v().optional(),sizes:Y(v()).optional(),theme:Oe(["light","dark"]).optional()}),Jo=P({icons:Y(Lk).optional()}),hn=P({name:v(),title:v().optional()}),Ov=hn.extend({...hn.shape,...Jo.shape,version:v(),websiteUrl:v().optional(),description:v().optional()}),Fk=qo(P({applyDefaults:$e().optional()}),ae(v(),le())),qk=Ha(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0?{form:{}}:t,qo(P({form:Fk.optional(),url:xe.optional()}),ae(v(),le()).optional())),Vk=Te({list:xe.optional(),cancel:xe.optional(),requests:Te({sampling:Te({createMessage:xe.optional()}).optional(),elicitation:Te({create:xe.optional()}).optional()}).optional()}),Wk=Te({list:xe.optional(),cancel:xe.optional(),requests:Te({tools:Te({call:xe.optional()}).optional()}).optional()}),Jk=P({experimental:ae(v(),xe).optional(),sampling:P({context:xe.optional(),tools:xe.optional()}).optional(),elicitation:qk.optional(),roots:P({listChanged:$e().optional()}).optional(),tasks:Vk.optional(),extensions:ae(v(),xe).optional()}),Hk=rt.extend({protocolVersion:v(),capabilities:Jk,clientInfo:Ov}),Ud=Se.extend({method:j("initialize"),params:Hk});var Gk=P({experimental:ae(v(),xe).optional(),logging:xe.optional(),completions:xe.optional(),prompts:P({listChanged:$e().optional()}).optional(),resources:P({subscribe:$e().optional(),listChanged:$e().optional()}).optional(),tools:P({listChanged:$e().optional()}).optional(),tasks:Wk.optional(),extensions:ae(v(),xe).optional()}),Kk=ke.extend({protocolVersion:v(),capabilities:Gk,serverInfo:Ov,instructions:v().optional()}),Zd=st.extend({method:j("notifications/initialized"),params:at.optional()});var Qa=Se.extend({method:j("ping"),params:rt.optional()}),Yk=P({progress:oe(),total:me(oe()),message:me(v())}),Bk=P({...at.shape,...Yk.shape,progressToken:Sv}),es=st.extend({method:j("notifications/progress"),params:Bk}),Xk=rt.extend({cursor:kv.optional()}),Ho=Se.extend({params:Xk.optional()}),Go=ke.extend({nextCursor:kv.optional()}),Qk=Oe(["working","input_required","completed","failed","cancelled"]),Ko=P({taskId:v(),status:Qk,ttl:de([oe(),La()]),createdAt:v(),lastUpdatedAt:v(),pollInterval:me(oe()),statusMessage:me(v())}),gn=ke.extend({task:Ko}),ew=at.merge(Ko),Yo=st.extend({method:j("notifications/tasks/status"),params:ew}),ts=Se.extend({method:j("tasks/get"),params:rt.extend({taskId:v()})}),rs=ke.merge(Ko),ns=Se.extend({method:j("tasks/result"),params:rt.extend({taskId:v()})}),KA=ke.loose(),os=Ho.extend({method:j("tasks/list")}),is=Go.extend({tasks:Y(Ko)}),as=Se.extend({method:j("tasks/cancel"),params:rt.extend({taskId:v()})}),jv=ke.merge(Ko),Dv=P({uri:v(),mimeType:me(v()),_meta:ae(v(),le()).optional()}),Nv=Dv.extend({text:v()}),Ld=v().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Mv=Dv.extend({blob:Ld}),Bo=Oe(["user","assistant"]),vn=P({audience:Y(Bo).optional(),priority:oe().min(0).max(1).optional(),lastModified:Tr.datetime({offset:!0}).optional()}),Rv=P({...hn.shape,...Jo.shape,uri:v(),description:me(v()),mimeType:me(v()),size:me(oe()),annotations:vn.optional(),_meta:me(Te({}))}),tw=P({...hn.shape,...Jo.shape,uriTemplate:v(),description:me(v()),mimeType:me(v()),annotations:vn.optional(),_meta:me(Te({}))}),rw=Ho.extend({method:j("resources/list")}),nw=Go.extend({resources:Y(Rv)}),ow=Ho.extend({method:j("resources/templates/list")}),iw=Go.extend({resourceTemplates:Y(tw)}),Fd=rt.extend({uri:v()}),aw=Fd,sw=Se.extend({method:j("resources/read"),params:aw}),cw=ke.extend({contents:Y(de([Nv,Mv]))}),uw=st.extend({method:j("notifications/resources/list_changed"),params:at.optional()}),lw=Fd,dw=Se.extend({method:j("resources/subscribe"),params:lw}),pw=Fd,fw=Se.extend({method:j("resources/unsubscribe"),params:pw}),mw=at.extend({uri:v()}),hw=st.extend({method:j("notifications/resources/updated"),params:mw}),gw=P({name:v(),description:me(v()),required:me($e())}),vw=P({...hn.shape,...Jo.shape,description:me(v()),arguments:me(Y(gw)),_meta:me(Te({}))}),_w=Ho.extend({method:j("prompts/list")}),yw=Go.extend({prompts:Y(vw)}),$w=rt.extend({name:v(),arguments:ae(v(),v()).optional()}),bw=Se.extend({method:j("prompts/get"),params:$w}),qd=P({type:j("text"),text:v(),annotations:vn.optional(),_meta:ae(v(),le()).optional()}),Vd=P({type:j("image"),data:Ld,mimeType:v(),annotations:vn.optional(),_meta:ae(v(),le()).optional()}),Wd=P({type:j("audio"),data:Ld,mimeType:v(),annotations:vn.optional(),_meta:ae(v(),le()).optional()}),xw=P({type:j("tool_use"),name:v(),id:v(),input:ae(v(),le()),_meta:ae(v(),le()).optional()}),Sw=P({type:j("resource"),resource:de([Nv,Mv]),annotations:vn.optional(),_meta:ae(v(),le()).optional()}),kw=Rv.extend({type:j("resource_link")}),Jd=de([qd,Vd,Wd,kw,Sw]),ww=P({role:Bo,content:Jd}),Ew=ke.extend({description:v().optional(),messages:Y(ww)}),Iw=st.extend({method:j("notifications/prompts/list_changed"),params:at.optional()}),zw=P({title:v().optional(),readOnlyHint:$e().optional(),destructiveHint:$e().optional(),idempotentHint:$e().optional(),openWorldHint:$e().optional()}),Pw=P({taskSupport:Oe(["required","optional","forbidden"]).optional()}),Av=P({...hn.shape,...Jo.shape,description:v().optional(),inputSchema:P({type:j("object"),properties:ae(v(),xe).optional(),required:Y(v()).optional()}).catchall(le()),outputSchema:P({type:j("object"),properties:ae(v(),xe).optional(),required:Y(v()).optional()}).catchall(le()).optional(),annotations:zw.optional(),execution:Pw.optional(),_meta:ae(v(),le()).optional()}),Hd=Ho.extend({method:j("tools/list")}),Tw=Go.extend({tools:Y(Av)}),ss=ke.extend({content:Y(Jd).default([]),structuredContent:ae(v(),le()).optional(),isError:$e().optional()}),YA=ss.or(ke.extend({toolResult:le()})),Ow=Vo.extend({name:v(),arguments:ae(v(),le()).optional()}),Xo=Se.extend({method:j("tools/call"),params:Ow}),jw=st.extend({method:j("notifications/tools/list_changed"),params:at.optional()}),BA=P({autoRefresh:$e().default(!0),debounceMs:oe().int().nonnegative().default(300)}),Qo=Oe(["debug","info","notice","warning","error","critical","alert","emergency"]),Dw=rt.extend({level:Qo}),Gd=Se.extend({method:j("logging/setLevel"),params:Dw}),Nw=at.extend({level:Qo,logger:v().optional(),data:le()}),Mw=st.extend({method:j("notifications/message"),params:Nw}),Rw=P({name:v().optional()}),Aw=P({hints:Y(Rw).optional(),costPriority:oe().min(0).max(1).optional(),speedPriority:oe().min(0).max(1).optional(),intelligencePriority:oe().min(0).max(1).optional()}),Cw=P({mode:Oe(["auto","required","none"]).optional()}),Uw=P({type:j("tool_result"),toolUseId:v().describe("The unique identifier for the corresponding tool call."),content:Y(Jd).default([]),structuredContent:P({}).loose().optional(),isError:$e().optional(),_meta:ae(v(),le()).optional()}),Zw=Va("type",[qd,Vd,Wd]),Ga=Va("type",[qd,Vd,Wd,xw,Uw]),Lw=P({role:Bo,content:de([Ga,Y(Ga)]),_meta:ae(v(),le()).optional()}),Fw=Vo.extend({messages:Y(Lw),modelPreferences:Aw.optional(),systemPrompt:v().optional(),includeContext:Oe(["none","thisServer","allServers"]).optional(),temperature:oe().optional(),maxTokens:oe().int(),stopSequences:Y(v()).optional(),metadata:xe.optional(),tools:Y(Av).optional(),toolChoice:Cw.optional()}),qw=Se.extend({method:j("sampling/createMessage"),params:Fw}),ei=ke.extend({model:v(),stopReason:me(Oe(["endTurn","stopSequence","maxTokens"]).or(v())),role:Bo,content:Zw}),Kd=ke.extend({model:v(),stopReason:me(Oe(["endTurn","stopSequence","maxTokens","toolUse"]).or(v())),role:Bo,content:de([Ga,Y(Ga)])}),Vw=P({type:j("boolean"),title:v().optional(),description:v().optional(),default:$e().optional()}),Ww=P({type:j("string"),title:v().optional(),description:v().optional(),minLength:oe().optional(),maxLength:oe().optional(),format:Oe(["email","uri","date","date-time"]).optional(),default:v().optional()}),Jw=P({type:Oe(["number","integer"]),title:v().optional(),description:v().optional(),minimum:oe().optional(),maximum:oe().optional(),default:oe().optional()}),Hw=P({type:j("string"),title:v().optional(),description:v().optional(),enum:Y(v()),default:v().optional()}),Gw=P({type:j("string"),title:v().optional(),description:v().optional(),oneOf:Y(P({const:v(),title:v()})),default:v().optional()}),Kw=P({type:j("string"),title:v().optional(),description:v().optional(),enum:Y(v()),enumNames:Y(v()).optional(),default:v().optional()}),Yw=de([Hw,Gw]),Bw=P({type:j("array"),title:v().optional(),description:v().optional(),minItems:oe().optional(),maxItems:oe().optional(),items:P({type:j("string"),enum:Y(v())}),default:Y(v()).optional()}),Xw=P({type:j("array"),title:v().optional(),description:v().optional(),minItems:oe().optional(),maxItems:oe().optional(),items:P({anyOf:Y(P({const:v(),title:v()}))}),default:Y(v()).optional()}),Qw=de([Bw,Xw]),eE=de([Kw,Yw,Qw]),tE=de([eE,Vw,Ww,Jw]),rE=Vo.extend({mode:j("form").optional(),message:v(),requestedSchema:P({type:j("object"),properties:ae(v(),tE),required:Y(v()).optional()})}),nE=Vo.extend({mode:j("url"),message:v(),elicitationId:v(),url:v().url()}),oE=de([rE,nE]),iE=Se.extend({method:j("elicitation/create"),params:oE}),aE=at.extend({elicitationId:v()}),sE=st.extend({method:j("notifications/elicitation/complete"),params:aE}),_n=ke.extend({action:Oe(["accept","decline","cancel"]),content:Ha(t=>t===null?void 0:t,ae(v(),de([v(),oe(),$e(),Y(v())])).optional())}),cE=P({type:j("ref/resource"),uri:v()});var uE=P({type:j("ref/prompt"),name:v()}),lE=rt.extend({ref:de([uE,cE]),argument:P({name:v(),value:v()}),context:P({arguments:ae(v(),v()).optional()}).optional()}),dE=Se.extend({method:j("completion/complete"),params:lE});var pE=ke.extend({completion:Te({values:Y(v()).max(100),total:me(oe().int()),hasMore:me($e())})}),fE=P({uri:v().startsWith("file://"),name:v().optional(),_meta:ae(v(),le()).optional()}),mE=Se.extend({method:j("roots/list"),params:rt.optional()}),Yd=ke.extend({roots:Y(fE)}),hE=st.extend({method:j("notifications/roots/list_changed"),params:at.optional()}),XA=de([Qa,Ud,dE,Gd,bw,_w,rw,ow,sw,dw,fw,Xo,Hd,ts,ns,os,as]),QA=de([Xa,es,Zd,hE,Yo]),eC=de([Ba,ei,Kd,_n,Yd,rs,is,gn]),tC=de([Qa,qw,iE,mE,ts,ns,os,as]),rC=de([Xa,es,Mw,hw,uw,jw,Iw,Yo,sE]),nC=de([Ba,Kk,pE,Ew,yw,nw,iw,cw,ss,Tw,rs,is,gn]),W=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===Q.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new Dd(o.elicitations,r)}return new t(e,r,n)}},Dd=class extends W{constructor(e,r=`URL elicitation${e.length>1?"s":""} required`){super(Q.UrlElicitationRequired,r,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}};function fr(t){return t==="completed"||t==="failed"||t==="cancelled"}var AC=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Bd(t){let r=Oa(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=bg(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function Xd(t,e){let r=dr(t,e);if(!r.success)throw r.error;return r.data}var bE=6e4,cs=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(es,r=>{this._onprogress(r)}),this.setRequestHandler(Qa,r=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(ts,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new W(Q.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(ns,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,p=new W(d.error.code,d.error.message,d.error.data);l(p)}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 W(Q.InvalidParams,`Task not found: ${i}`);if(!fr(a.status))return await this._waitForTaskUpdate(i,n.signal),await o();if(fr(a.status)){let s=await this._taskStore.getTaskResult(i,n.sessionId);return this._clearTaskQueue(i),{...s,_meta:{...s._meta,[pr]:{taskId:i}}}}return await o()};return await o()}),this.setRequestHandler(os,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 W(Q.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(as,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new W(Q.InvalidParams,`Task not found: ${r.params.taskId}`);if(fr(o.status))throw new W(Q.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 W(Q.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...i}}catch(o){throw o instanceof W?o:new W(Q.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),W.fromError(Q.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),Wo(i)||Pv(i)?this._onresponse(i):Rd(i)?this._onrequest(i,a):zv(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._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=W.fromError(Q.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?.[pr]?.taskId;if(n===void 0){let l={jsonrpc:"2.0",id:e.id,error:{code:Q.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=wv(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,p)=>{if(a.signal.aborted)throw new W(Q.ConnectionClosed,"Request was cancelled");let f={...p,relatedRequestId:e.id};i&&!f.relatedTask&&(f.relatedTask={taskId:i});let h=f.relatedTask?.taskId??i;return h&&c&&await c.updateTaskStatus(h,"input_required"),await this.request(l,d,f)},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:Q.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.get(e.id)===a&&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),Wo(e))n(e);else{let a=new W(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(Wo(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),Wo(e))o(e);else{let a=W.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 W?a:new W(Q.InternalError,String(a))}}return}let i;try{let a=await this.request(e,gn,n);if(a.task)i=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new W(Q.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:i},n);if(yield{type:"taskStatus",task:s},fr(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:i},r,n)}:s.status==="failed"?yield{type:"error",error:new W(Q.InternalError,`Task ${i} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new W(Q.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 W?a:new W(Q.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=S=>{l(S)};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(S){d(S);return}n?.signal?.throwIfAborted();let p=this._requestMessageId++,f={...e,jsonrpc:"2.0",id:p};n?.onprogress&&(this._progressHandlers.set(p,n.onprogress),f.params={...e.params,_meta:{...e.params?._meta||{},progressToken:p}}),s&&(f.params={...f.params,task:s}),c&&(f.params={...f.params,_meta:{...f.params?._meta||{},[pr]:c}});let h=S=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(S)}},{relatedRequestId:o,resumptionToken:i,onresumptiontoken:a}).catch(N=>this._onerror(new Error(`Failed to send cancellation: ${N}`)));let x=S instanceof W?S:new W(Q.RequestTimeout,String(S));l(x)};this._responseHandlers.set(p,S=>{if(!n?.signal?.aborted){if(S instanceof Error)return l(S);try{let x=dr(r,S.result);x.success?u(x.data):l(x.error)}catch(x){l(x)}}}),n?.signal?.addEventListener("abort",()=>{h(n?.signal?.reason)});let g=n?.timeout??bE,$=()=>h(W.fromError(Q.RequestTimeout,"Request timed out",{timeout:g}));this._setupTimeout(p,g,n?.maxTotalTimeout,$,n?.resetTimeoutOnProgress??!1);let k=c?.taskId;if(k){let S=x=>{let N=this._responseHandlers.get(p);N?N(x):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,S),this._enqueueTaskMessage(k,{type:"request",message:f,timestamp:Date.now()}).catch(x=>{this._cleanupTimeout(p),l(x)})}else this._transport.send(f,{relatedRequestId:o,resumptionToken:i,onresumptiontoken:a}).catch(S=>{this._cleanupTimeout(p),l(S)})})}async getTask(e,r){return this.request({method:"tasks/get",params:e},rs,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},is,r)}async cancelTask(e,r){return this.request({method:"tasks/cancel",params:e},jv,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||{},[pr]: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||{},[pr]: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||{},[pr]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(e,r){let n=Bd(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,i)=>{let a=Xd(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=Bd(e);this._notificationHandlers.set(n,o=>{let i=Xd(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"&&Rd(o.message)){let i=o.message.id,a=this._requestResolvers.get(i);a?(a(new W(Q.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 W(Q.InvalidRequest,"Request cancelled"));return}let a=setTimeout(o,n);r.addEventListener("abort",()=>{clearTimeout(a),i(new W(Q.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 W(Q.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=Yo.parse({method:"notifications/tasks/status",params:s});await this.notification(c),fr(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 W(Q.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(fr(s.status))throw new W(Q.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=Yo.parse({method:"notifications/tasks/status",params:c});await this.notification(u),fr(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function Cv(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Uv(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];Cv(a)&&Cv(i)?r[o]={...a,...i}:r[o]=i}return r}var w$=kt(Cf(),1),E$=kt(k$(),1);function pO(){let t=new w$.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,E$.default)(t),t}var Vs=class{constructor(e){this._ajv=e??pO()}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 Ws=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(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(i.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(l.size!==d.size||![...l].every(p=>d.has(p)))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},ei,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},_n,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 I$(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 z$(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 Js=class extends cs{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Qo.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 Vs,this.setRequestHandler(Ud,n=>this._oninitialize(n)),this.setNotificationHandler(Zd,()=>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=Qo.safeParse(a);return s.success&&this._loggingLevels.set(i,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Ws(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Uv(this._capabilities,e)}setRequestHandler(e,r){let o=Oa(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let i;if(fn(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=dr(Xo,c);if(!l.success){let h=l.error instanceof Error?l.error.message:String(l.error);throw new W(Q.InvalidParams,`Invalid tools/call request: ${h}`)}let{params:d}=l.data,p=await Promise.resolve(r(c,u));if(d.task){let h=dr(gn,p);if(!h.success){let g=h.error instanceof Error?h.error.message:String(h.error);throw new W(Q.InvalidParams,`Invalid task creation result: ${g}`)}return h.data}let f=dr(ss,p);if(!f.success){let h=f.error instanceof Error?f.error.message:String(f.error);throw new W(Q.InvalidParams,`Invalid tools/call result: ${h}`)}return f.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){z$(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&I$(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:xv.includes(r)?r:Nd,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},Kd,r):this.request({method:"sampling/createMessage",params:e},ei,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},_n,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},_n,r);if(i.action==="accept"&&i.content&&o.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(o.requestedSchema)(i.content);if(!s.valid)throw new W(Q.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof W?a:new W(Q.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},Yd,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 Jf=kt(require("node:process"),1);var Hs=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),fO(r)}clear(){this._buffer=void 0}};function fO(t){return Tv.parse(JSON.parse(t))}function P$(t){return JSON.stringify(t)+`
|
|
57
|
-
`}var Gs=class{constructor(e=Jf.default.stdin,r=Jf.default.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new Hs,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=P$(e);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var Yf=kt(require("path"),1);var pt={DEFAULT:3e5,HEALTH_CHECK:3e3,POST_SPAWN_WAIT:15e3,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 T$(t){return process.platform==="win32"?Math.round(t*pt.WINDOWS_MULTIPLIER):t}var Nt=require("fs"),Oi=require("path"),Hf=require("os"),Bt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",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_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",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,Oi.join)((0,Hf.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_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_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,Oi.join)((0,Hf.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",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 process.env[e]??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,Nt.existsSync)(e)){let a=this.getAllDefaults();try{let s=(0,Oi.dirname)(e);(0,Nt.existsSync)(s)||(0,Nt.mkdirSync)(s,{recursive:!0}),(0,Nt.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 instanceof Error?s.message:String(s))}return this.applyEnvOverrides(a)}let r=(0,Nt.readFileSync)(e,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{(0,Nt.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 instanceof Error?a.message:String(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 instanceof Error?r.message:String(r)),this.applyEnvOverrides(this.getAllDefaults())}}};var _e=require("path"),Gf=require("os"),Kf=require("fs");var O$=require("url");var vO={};function mO(){return typeof __dirname<"u"?__dirname:(0,_e.dirname)((0,O$.fileURLToPath)(vO.url))}var _L=mO();function hO(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let t=(0,_e.join)((0,Gf.homedir)(),".claude-mem"),e=(0,_e.join)(t,"settings.json");try{if((0,Kf.existsSync)(e)){let{readFileSync:r}=require("fs"),n=JSON.parse(r(e,"utf-8")),o=n.env??n;if(o.CLAUDE_MEM_DATA_DIR)return o.CLAUDE_MEM_DATA_DIR}}catch{}return t}var Xt=hO(),Ks=process.env.CLAUDE_CONFIG_DIR||(0,_e.join)((0,Gf.homedir)(),".claude"),j$=(0,_e.join)(Ks,"plugins","marketplaces","thedotmack"),yL=(0,_e.join)(Xt,"archives"),$L=(0,_e.join)(Xt,"logs"),bL=(0,_e.join)(Xt,"trash"),xL=(0,_e.join)(Xt,"backups"),SL=(0,_e.join)(Xt,"modes"),kL=(0,_e.join)(Xt,"settings.json"),wL=(0,_e.join)(Xt,"claude-mem.db"),EL=(0,_e.join)(Xt,"vector-db"),gO=(0,_e.join)(Xt,"observer-sessions"),IL=(0,_e.basename)(gO),zL=(0,_e.join)(Ks,"settings.json"),PL=(0,_e.join)(Ks,"commands"),TL=(0,_e.join)(Ks,"CLAUDE.md");var _O=(()=>{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;_.warn("SYSTEM","Invalid CLAUDE_MEM_HEALTH_TIMEOUT_MS, using default",{value:t,min:500,max:3e5})}return T$(pt.HEALTH_CHECK)})();function yO(t,e={},r){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error(`Request timed out after ${r}ms`)),r);fetch(t,e).then(a=>{clearTimeout(i),n(a)},a=>{clearTimeout(i),o(a)})})}var Ys=null,Bs=null;function Bf(){if(Ys!==null)return Ys;let t=Yf.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=Bt.loadFromFile(t);return Ys=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),Ys}function $O(){if(Bs!==null)return Bs;let t=Yf.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return Bs=Bt.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,Bs}function bO(t){return`http://${$O()}:${Bf()}${t}`}function Xs(t,e={}){let r=e.method??"GET",n=e.timeoutMs??_O,o=bO(t),i={method:r};return e.headers&&(i.headers=e.headers),e.body&&(i.body=e.body),n>0?yO(o,i,n):fetch(o,i)}var sm=kt(require("path"),1),ft=require("fs");var er=kt(require("path"),1),im=require("os"),qe=require("fs"),tr=require("child_process"),G$=require("util");var xO=["CLAUDECODE_","CLAUDE_CODE_"],SO=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),kO=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH"]);function D$(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(kO.has(r)){e[r]=n;continue}SO.has(r)||xO.some(o=>r.startsWith(o))||(e[r]=n)}return e}var Lr=require("fs"),W$=require("os"),rm=kt(require("path"),1);var Qt=require("fs"),N$=require("os"),ji=kt(require("path"),1);var wO=5e3,EO=1e3,IO=ji.default.join((0,N$.homedir)(),".claude-mem"),zO=ji.default.join(IO,"supervisor.json");function St(t){if(!Number.isInteger(t)||t<0||t===0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;return r==="EPERM"?!0:(_.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return _.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}var Qf=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=zO){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,Qt.mkdirSync)(ji.default.dirname(this.registryPath),{recursive:!0}),!(0,Qt.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,Qt.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[o,i]of Object.entries(n))this.entries.set(o,i)}catch(r){r instanceof Error?_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&_.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}register(e,r,n){this.initialize(),this.entries.set(e,r),n&&this.runtimeProcesses.set(e,n),this.persist()}unregister(e){this.initialize(),this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([e,r])=>({id:e,...r})).sort((e,r)=>{let n=Date.parse(e.startedAt),o=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(o)?0:o)})}getBySession(e){let r=String(e);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}getByPid(e){return this.getAll().filter(r=>r.pid===e)}pruneDeadEntries(){this.initialize();let e=0;for(let[r,n]of this.entries)St(n.pid)||(this.entries.delete(r),this.runtimeProcesses.delete(r),e+=1);return e>0&&this.persist(),e}async reapSession(e){this.initialize();let r=this.getBySession(e);if(r.length===0)return 0;let n=typeof e=="number"?e:Number(e)||void 0;_.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(s=>s.pid)});let o=r.filter(s=>St(s.pid));for(let s of o)try{process.kill(s.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGTERM session process PID ${s.pid}`,{pid:s.pid},c):_.warn("SYSTEM",`Failed to SIGTERM session process PID ${s.pid} (non-Error)`,{pid:s.pid,error:String(c)})}let i=Date.now()+wO;for(;Date.now()<i&&o.filter(c=>St(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100));let a=o.filter(s=>St(s.pid));for(let s of a){_.warn("SYSTEM",`Session process PID ${s.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:s.pid,sessionId:n});try{process.kill(s.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGKILL session process PID ${s.pid}`,{pid:s.pid},c):_.warn("SYSTEM",`Failed to SIGKILL session process PID ${s.pid} (non-Error)`,{pid:s.pid,error:String(c)})}}if(a.length>0){let s=Date.now()+EO;for(;Date.now()<s&&a.filter(u=>St(u.pid)).length!==0;)await new Promise(u=>setTimeout(u,100))}for(let s of r)this.entries.delete(s.id),this.runtimeProcesses.delete(s.id);return this.persist(),_.info("SYSTEM",`Reaped ${r.length} process(es) for session ${e}`,{sessionId:n,reaped:r.length}),r.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};(0,Qt.mkdirSync)(ji.default.dirname(this.registryPath),{recursive:!0}),(0,Qt.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},Xf=null;function Qs(){return Xf||(Xf=new Qf),Xf}var A$=require("child_process"),C$=require("fs"),U$=require("os"),em=kt(require("path"),1),Z$=require("util");var PO=(0,Z$.promisify)(A$.execFile),TO=em.default.join((0,U$.homedir)(),".claude-mem"),OO=em.default.join(TO,"worker.pid");async function L$(t){let e=t.currentPid??process.pid,r=t.pidFilePath??OO,n=t.registry.getAll(),o=[...n].filter(a=>a.pid!==e).sort((a,s)=>Date.parse(s.startedAt)-Date.parse(a.startedAt));for(let a of o){if(!St(a.pid)){t.registry.unregister(a.id);continue}try{await R$(a.pid,"SIGTERM")}catch(s){s instanceof Error?_.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:a.pid,type:a.type},s):_.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:a.pid,type:a.type,error:String(s)})}}await M$(o,5e3);let i=o.filter(a=>St(a.pid));for(let a of i)try{await R$(a.pid,"SIGKILL")}catch(s){s instanceof Error?_.debug("SYSTEM","Failed to force kill child process",{pid:a.pid,type:a.type},s):_.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:a.pid,type:a.type,error:String(s)})}await M$(i,1e3);for(let a of o)t.registry.unregister(a.id);for(let a of n.filter(s=>s.pid===e))t.registry.unregister(a.id);try{(0,C$.rmSync)(r,{force:!0})}catch(a){a instanceof Error?_.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:r},a):_.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:r,error:String(a)})}t.registry.pruneDeadEntries()}async function M$(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.filter(o=>St(o.pid)).length===0)return;await new Promise(o=>setTimeout(o,100))}}async function R$(t,e){if(e==="SIGTERM"){try{process.kill(t,e)}catch(r){if(r instanceof Error&&r.code==="ESRCH")return;throw r}return}if(process.platform==="win32"){let r=await jO();if(r){await new Promise((o,i)=>{r(t,e,a=>{if(!a){o();return}if(a.code==="ESRCH"){o();return}i(a)})});return}let n=["/PID",String(t),"/T"];e==="SIGKILL"&&n.push("/F"),await PO("taskkill",n,{timeout:pt.POWERSHELL_COMMAND,windowsHide:!0});return}try{process.kill(t,e)}catch(r){if(r instanceof Error&&r.code==="ESRCH")return;throw r}}async function jO(){let t="tree-kill";try{let e=await import(t);return e.default??e}catch(e){return _.debug("SYSTEM","tree-kill module not available, using fallback",{},e instanceof Error?e:void 0),null}}var F$=3e4,Rn=null;function DO(){let e=Qs().pruneDeadEntries();e>0&&_.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function q$(){Rn===null&&(Rn=setInterval(DO,F$),Rn.unref(),_.debug("SYSTEM","Health checker started",{intervalMs:F$}))}function V$(){Rn!==null&&(clearInterval(Rn),Rn=null,_.debug("SYSTEM","Health checker stopped"))}var NO=rm.default.join((0,W$.homedir)(),".claude-mem"),MO=rm.default.join(NO,"worker.pid"),tm=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),nm({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,q$()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){_.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,_.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?_.error("SYSTEM","Error during shutdown",{},o):_.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(i){i instanceof Error?_.debug("SYSTEM","Supervisor shutdown fallback failed",{},i):_.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(i)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{_.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}V$(),this.stopPromise=L$({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,r,n){this.registry.register(e,r,n)}unregisterProcess(e){this.registry.unregister(e)}getRegistry(){return this.registry}},RO=new tm(Qs());function J$(){return RO}function nm(t={}){let e=t.pidFilePath??MO;if(!(0,Lr.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Lr.readFileSync)(e,"utf-8"))}catch(n){return n instanceof Error?_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},n):_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(n)}),(0,Lr.rmSync)(e,{force:!0}),"invalid"}return St(r.pid)?((t.logAlive??!0)&&_.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(_.info("SYSTEM","Removing stale PID file (worker process is dead)",{pid:r.pid,port:r.port,startedAt:r.startedAt}),(0,Lr.rmSync)(e,{force:!0}),"stale")}var r6=(0,G$.promisify)(tr.exec),AO=er.default.join((0,im.homedir)(),".claude-mem"),An=er.default.join(AO,"worker.pid");function H$(t){return t?/(^|[\\/])bun(\.exe)?$/i.test(t.trim()):!1}function CO(t,e){let r=e==="win32"?`where ${t}`:`which ${t}`,n;try{n=(0,tr.execSync)(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(i){return i instanceof Error?_.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},i):_.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},new Error(String(i))),null}return n.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)||null}var om;function UO(t={}){let e=Object.keys(t).length===0;if(e&&om!==void 0)return om;let r=ZO(t);return e&&r!==null&&(om=r),r}function ZO(t){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(H$(r))return r;let n=t.env??process.env,o=t.homeDirectory??(0,im.homedir)(),i=t.pathExists??qe.existsSync,a=t.lookupInPath??CO,s=e==="win32"?[n.BUN,n.BUN_PATH,er.default.join(o,".bun","bin","bun.exe"),er.default.join(o,".bun","bin","bun"),n.USERPROFILE?er.default.join(n.USERPROFILE,".bun","bin","bun.exe"):void 0,n.LOCALAPPDATA?er.default.join(n.LOCALAPPDATA,"bun","bun.exe"):void 0,n.LOCALAPPDATA?er.default.join(n.LOCALAPPDATA,"bun","bin","bun.exe"):void 0]:[n.BUN,n.BUN_PATH,er.default.join(o,".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun","/usr/bin/bun","/snap/bin/bun"];for(let c of s){let u=c?.trim();if(u&&(H$(u)&&i(u)||u.toLowerCase()==="bun"))return u}return a("bun",e)}function K$(){if((0,qe.existsSync)(An))try{(0,qe.unlinkSync)(An)}catch(t){t instanceof Error?_.warn("SYSTEM","Failed to remove PID file",{path:An},t):_.warn("SYSTEM","Failed to remove PID file",{path:An},new Error(String(t)))}}function Cn(t){return process.platform==="win32"?Math.round(t*2):t}function Y$(t,e,r={}){let n=process.platform==="win32";J$().assertCanSpawn("worker daemon");let o=D$({...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r}),i=UO();if(!i){_.error("SYSTEM","Bun runtime not found \u2014 install from https://bun.sh and ensure it is on PATH or set BUN env var. The worker daemon requires Bun because it uses bun:sqlite.");return}if(n){let c=`Start-Process -FilePath '${i.replace(/'/g,"''")}' -ArgumentList @('${t.replace(/'/g,"''")}','--daemon') -WindowStyle Hidden`,u=Buffer.from(c,"utf16le").toString("base64");try{return(0,tr.execSync)(`powershell -NoProfile -EncodedCommand ${u}`,{stdio:"ignore",windowsHide:!0,env:o}),0}catch(l){l instanceof Error?_.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:i},l):_.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:i},new Error(String(l)));return}}let a="/usr/bin/setsid";if((0,qe.existsSync)(a)){let c=(0,tr.spawn)(a,[i,t,"--daemon"],{detached:!0,stdio:"ignore",env:o});return c.pid===void 0?void 0:(c.unref(),c.pid)}let s=(0,tr.spawn)(i,[t,"--daemon"],{detached:!0,stdio:"ignore",env:o});if(s.pid!==void 0)return s.unref(),s.pid}function B$(){try{if(!(0,qe.existsSync)(An))return;let t=new Date;(0,qe.utimesSync)(An,t,t)}catch{}}function X$(){return nm({logAlive:!1})}var Q$=kt(require("net"),1);async function LO(t,e,r="GET"){let n=await fetch(`http://127.0.0.1:${t}${e}`,{method:r}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function eb(t){if(process.platform==="win32")try{return(await fetch(`http://127.0.0.1:${t}/api/health`)).ok}catch(e){return e instanceof Error?_.debug("SYSTEM","Windows health check failed (port not in use)",{},e):_.debug("SYSTEM","Windows health check failed (port not in use)",{error:String(e)}),!1}return new Promise(e=>{let r=Q$.default.createServer();r.once("error",n=>{n.code==="EADDRINUSE"?e(!0):e(!1)}),r.once("listening",()=>{r.close(()=>e(!1))}),r.listen(t,"127.0.0.1")})}async function tb(t,e,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await LO(t,e)).ok)return!0}catch(i){i instanceof Error?_.debug("SYSTEM",n,{},i):_.debug("SYSTEM",n,{error:String(i)})}await new Promise(i=>setTimeout(i,500))}return!1}function Di(t,e=3e4){return tb(t,"/api/health",e,"Service not ready yet, will retry")}function am(t,e=3e4){return tb(t,"/api/readiness",e,"Worker not ready yet, will retry")}var FO=120*1e3;function cm(){return sm.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function qO(){if(process.platform!=="win32")return!1;let t=cm();if(!(0,ft.existsSync)(t))return!1;try{let e=(0,ft.statSync)(t).mtimeMs;return Date.now()-e<FO}catch(e){return e instanceof Error?_.debug("SYSTEM","Could not stat worker spawn lock file",{},e):_.debug("SYSTEM","Could not stat worker spawn lock file",{error:String(e)}),!1}}function VO(){if(process.platform==="win32")try{let t=cm();(0,ft.mkdirSync)(sm.default.dirname(t),{recursive:!0}),(0,ft.writeFileSync)(t,"","utf-8")}catch{}}function ec(){if(process.platform==="win32")try{let t=cm();(0,ft.existsSync)(t)&&(0,ft.unlinkSync)(t)}catch{}}async function rb(t,e){return e?(0,ft.existsSync)(e)?X$()==="alive"?(_.info("SYSTEM","Worker PID file points to a live process, skipping duplicate spawn"),await Di(t,Cn(pt.PORT_IN_USE_WAIT))?(ec(),_.info("SYSTEM","Worker became healthy while waiting on live PID"),!0):(_.warn("SYSTEM","Live PID detected but worker did not become healthy before timeout"),!1)):await Di(t,1e3)?(ec(),await am(t,Cn(pt.READINESS_WAIT))||_.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),_.info("SYSTEM","Worker already running and healthy"),!0):await eb(t)?(_.info("SYSTEM","Port in use, waiting for worker to become healthy"),await Di(t,Cn(pt.PORT_IN_USE_WAIT))?(ec(),_.info("SYSTEM","Worker is now healthy"),!0):(_.error("SYSTEM","Port in use but worker not responding to health checks"),!1)):qO()?(_.warn("SYSTEM","Worker unavailable on Windows \u2014 skipping spawn (recent attempt failed within cooldown)"),!1):(_.info("SYSTEM","Starting worker daemon",{workerScriptPath:e}),VO(),Y$(e,t)===void 0?(_.error("SYSTEM","Failed to spawn worker daemon"),!1):await Di(t,Cn(pt.POST_SPAWN_WAIT))?(await am(t,Cn(pt.READINESS_WAIT))||_.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),ec(),B$(),_.info("SYSTEM","Worker started successfully"),!0):(K$(),_.error("SYSTEM","Worker failed to start (health check timeout)"),!1)):(_.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:e}),!1):(_.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),!1)}var Ln=require("node:fs/promises"),Ai=require("node:path");var ib=require("node:child_process"),Me=require("node:fs"),ze=require("node:path"),mm=require("node:os"),dm=require("node:module");var oj={},pm=typeof __filename<"u"?(0,dm.createRequire)(__filename):(0,dm.createRequire)(oj.url),fm={".js":"javascript",".mjs":"javascript",".cjs":"javascript",".jsx":"tsx",".ts":"typescript",".tsx":"tsx",".py":"python",".pyw":"python",".go":"go",".rs":"rust",".rb":"ruby",".java":"java",".c":"c",".h":"c",".cpp":"cpp",".cc":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".kt":"kotlin",".kts":"kotlin",".swift":"swift",".php":"php",".ex":"elixir",".exs":"elixir",".lua":"lua",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".zsh":"bash",".hs":"haskell",".zig":"zig",".css":"css",".scss":"scss",".toml":"toml",".yml":"yaml",".yaml":"yaml",".sql":"sql",".md":"markdown",".mdx":"markdown"};function ab(t,e){let r=t.slice(t.lastIndexOf("."));return fm[r]?fm[r]:e.extensionToLanguage[r]?e.extensionToLanguage[r]:"unknown"}function sb(t,e){return e.languageToQueryKey[t]?e.languageToQueryKey[t]:HO(t)}var Ni=new Map,Un={grammars:{},extensionToLanguage:{},languageToQueryKey:{}};function Ri(t){if(Ni.has(t))return Ni.get(t);let e=(0,ze.join)(t,".claude-mem.json"),r;try{let i=(0,Me.readFileSync)(e,"utf-8");r=JSON.parse(i)}catch{return Ni.set(t,Un),Un}let n=r.grammars;if(!n||typeof n!="object"||Array.isArray(n))return Ni.set(t,Un),Un;let o={grammars:{},extensionToLanguage:{},languageToQueryKey:{}};for(let[i,a]of Object.entries(n)){if(cb[i]||!a||typeof a!="object"||Array.isArray(a))continue;let s=a,c=s.package,u=s.extensions,l=s.query;if(!(typeof c!="string"||!Array.isArray(u))&&u.every(d=>typeof d=="string")){o.grammars[i]={package:c,extensions:u,query:typeof l=="string"?l:void 0};for(let d of u)fm[d]||(o.extensionToLanguage[d]=i);if(typeof l=="string"){let d=(0,ze.join)(t,l);try{let p=(0,Me.readFileSync)(d,"utf-8"),f=`user_${i}`;lb[f]=p,o.languageToQueryKey[i]=f}catch{console.error(`[smart-file-read] Custom query file not found: ${d}, falling back to generic`),o.languageToQueryKey[i]="generic"}}else o.languageToQueryKey[i]="generic"}}return Ni.set(t,o),o}var cb={javascript:"tree-sitter-javascript",typescript:"tree-sitter-typescript/typescript",tsx:"tree-sitter-typescript/tsx",python:"tree-sitter-python",go:"tree-sitter-go",rust:"tree-sitter-rust",ruby:"tree-sitter-ruby",java:"tree-sitter-java",c:"tree-sitter-c",cpp:"tree-sitter-cpp",kotlin:"tree-sitter-kotlin",swift:"tree-sitter-swift",php:"tree-sitter-php/php",elixir:"tree-sitter-elixir",lua:"@tree-sitter-grammars/tree-sitter-lua",scala:"tree-sitter-scala",bash:"tree-sitter-bash",haskell:"tree-sitter-haskell",zig:"@tree-sitter-grammars/tree-sitter-zig",css:"tree-sitter-css",scss:"tree-sitter-scss",toml:"@tree-sitter-grammars/tree-sitter-toml",yaml:"@tree-sitter-grammars/tree-sitter-yaml",sql:"@derekstride/tree-sitter-sql",markdown:"@tree-sitter-grammars/tree-sitter-markdown"},WO={markdown:"tree-sitter-markdown"};function JO(t){let e=cb[t];if(!e)return null;let r=WO[t];if(r){try{let n=pm.resolve(e+"/package.json"),o=(0,ze.join)((0,ze.dirname)(n),r);if((0,Me.existsSync)((0,ze.join)(o,"src")))return o}catch{}return null}try{let n=pm.resolve(e+"/package.json");return(0,ze.dirname)(n)}catch{return null}}function ub(t,e){let r=JO(t);if(r)return r;if(!e)return null;let o=Ri(e).grammars[t];if(!o)return null;try{let i=(0,ze.join)(e,"node_modules",o.package,"package.json");if((0,Me.existsSync)(i)){let a=(0,ze.dirname)(i);if((0,Me.existsSync)((0,ze.join)(a,"src")))return a}}catch{}return console.error(`[smart-file-read] Grammar package not found for "${t}": ${o.package} (install it in your project's node_modules)`),null}var lb={jsts:`
|
|
57
|
+
`}var Gs=class{constructor(e=Jf.default.stdin,r=Jf.default.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new Hs,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=P$(e);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var Yf=kt(require("path"),1);var pt={DEFAULT:3e5,HEALTH_CHECK:3e3,POST_SPAWN_WAIT:15e3,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 T$(t){return process.platform==="win32"?Math.round(t*pt.WINDOWS_MULTIPLIER):t}var Nt=require("fs"),Oi=require("path"),Hf=require("os"),Bt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),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_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",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,Oi.join)((0,Hf.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_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_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,Oi.join)((0,Hf.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",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 process.env[e]??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,Nt.existsSync)(e)){let a=this.getAllDefaults();try{let s=(0,Oi.dirname)(e);(0,Nt.existsSync)(s)||(0,Nt.mkdirSync)(s,{recursive:!0}),(0,Nt.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 instanceof Error?s.message:String(s))}return this.applyEnvOverrides(a)}let r=(0,Nt.readFileSync)(e,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{(0,Nt.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 instanceof Error?a.message:String(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 instanceof Error?r.message:String(r)),this.applyEnvOverrides(this.getAllDefaults())}}};var _e=require("path"),Gf=require("os"),Kf=require("fs");var O$=require("url");var vO={};function mO(){return typeof __dirname<"u"?__dirname:(0,_e.dirname)((0,O$.fileURLToPath)(vO.url))}var _L=mO();function hO(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let t=(0,_e.join)((0,Gf.homedir)(),".claude-mem"),e=(0,_e.join)(t,"settings.json");try{if((0,Kf.existsSync)(e)){let{readFileSync:r}=require("fs"),n=JSON.parse(r(e,"utf-8")),o=n.env??n;if(o.CLAUDE_MEM_DATA_DIR)return o.CLAUDE_MEM_DATA_DIR}}catch{}return t}var Xt=hO(),Ks=process.env.CLAUDE_CONFIG_DIR||(0,_e.join)((0,Gf.homedir)(),".claude"),j$=(0,_e.join)(Ks,"plugins","marketplaces","thedotmack"),yL=(0,_e.join)(Xt,"archives"),$L=(0,_e.join)(Xt,"logs"),bL=(0,_e.join)(Xt,"trash"),xL=(0,_e.join)(Xt,"backups"),SL=(0,_e.join)(Xt,"modes"),kL=(0,_e.join)(Xt,"settings.json"),wL=(0,_e.join)(Xt,"claude-mem.db"),EL=(0,_e.join)(Xt,"vector-db"),gO=(0,_e.join)(Xt,"observer-sessions"),IL=(0,_e.basename)(gO),zL=(0,_e.join)(Ks,"settings.json"),PL=(0,_e.join)(Ks,"commands"),TL=(0,_e.join)(Ks,"CLAUDE.md");var _O=(()=>{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;_.warn("SYSTEM","Invalid CLAUDE_MEM_HEALTH_TIMEOUT_MS, using default",{value:t,min:500,max:3e5})}return T$(pt.HEALTH_CHECK)})();function yO(t,e={},r){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error(`Request timed out after ${r}ms`)),r);fetch(t,e).then(a=>{clearTimeout(i),n(a)},a=>{clearTimeout(i),o(a)})})}var Ys=null,Bs=null;function Bf(){if(Ys!==null)return Ys;let t=Yf.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=Bt.loadFromFile(t);return Ys=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),Ys}function $O(){if(Bs!==null)return Bs;let t=Yf.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return Bs=Bt.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,Bs}function bO(t){return`http://${$O()}:${Bf()}${t}`}function Xs(t,e={}){let r=e.method??"GET",n=e.timeoutMs??_O,o=bO(t),i={method:r};return e.headers&&(i.headers=e.headers),e.body&&(i.body=e.body),n>0?yO(o,i,n):fetch(o,i)}var sm=kt(require("path"),1),ft=require("fs");var er=kt(require("path"),1),im=require("os"),qe=require("fs"),tr=require("child_process"),G$=require("util");var xO=["CLAUDECODE_","CLAUDE_CODE_"],SO=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),kO=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH"]);function D$(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(kO.has(r)){e[r]=n;continue}SO.has(r)||xO.some(o=>r.startsWith(o))||(e[r]=n)}return e}var Lr=require("fs"),W$=require("os"),rm=kt(require("path"),1);var Qt=require("fs"),N$=require("os"),ji=kt(require("path"),1);var wO=5e3,EO=1e3,IO=ji.default.join((0,N$.homedir)(),".claude-mem"),zO=ji.default.join(IO,"supervisor.json");function St(t){if(!Number.isInteger(t)||t<0||t===0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;return r==="EPERM"?!0:(_.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return _.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}var Qf=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=zO){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,Qt.mkdirSync)(ji.default.dirname(this.registryPath),{recursive:!0}),!(0,Qt.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,Qt.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[o,i]of Object.entries(n))this.entries.set(o,i)}catch(r){r instanceof Error?_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&_.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}register(e,r,n){this.initialize(),this.entries.set(e,r),n&&this.runtimeProcesses.set(e,n),this.persist()}unregister(e){this.initialize(),this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([e,r])=>({id:e,...r})).sort((e,r)=>{let n=Date.parse(e.startedAt),o=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(o)?0:o)})}getBySession(e){let r=String(e);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}getByPid(e){return this.getAll().filter(r=>r.pid===e)}pruneDeadEntries(){this.initialize();let e=0;for(let[r,n]of this.entries)St(n.pid)||(this.entries.delete(r),this.runtimeProcesses.delete(r),e+=1);return e>0&&this.persist(),e}async reapSession(e){this.initialize();let r=this.getBySession(e);if(r.length===0)return 0;let n=typeof e=="number"?e:Number(e)||void 0;_.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(s=>s.pid)});let o=r.filter(s=>St(s.pid));for(let s of o)try{process.kill(s.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGTERM session process PID ${s.pid}`,{pid:s.pid},c):_.warn("SYSTEM",`Failed to SIGTERM session process PID ${s.pid} (non-Error)`,{pid:s.pid,error:String(c)})}let i=Date.now()+wO;for(;Date.now()<i&&o.filter(c=>St(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100));let a=o.filter(s=>St(s.pid));for(let s of a){_.warn("SYSTEM",`Session process PID ${s.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:s.pid,sessionId:n});try{process.kill(s.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGKILL session process PID ${s.pid}`,{pid:s.pid},c):_.warn("SYSTEM",`Failed to SIGKILL session process PID ${s.pid} (non-Error)`,{pid:s.pid,error:String(c)})}}if(a.length>0){let s=Date.now()+EO;for(;Date.now()<s&&a.filter(u=>St(u.pid)).length!==0;)await new Promise(u=>setTimeout(u,100))}for(let s of r)this.entries.delete(s.id),this.runtimeProcesses.delete(s.id);return this.persist(),_.info("SYSTEM",`Reaped ${r.length} process(es) for session ${e}`,{sessionId:n,reaped:r.length}),r.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};(0,Qt.mkdirSync)(ji.default.dirname(this.registryPath),{recursive:!0}),(0,Qt.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},Xf=null;function Qs(){return Xf||(Xf=new Qf),Xf}var A$=require("child_process"),C$=require("fs"),U$=require("os"),em=kt(require("path"),1),Z$=require("util");var PO=(0,Z$.promisify)(A$.execFile),TO=em.default.join((0,U$.homedir)(),".claude-mem"),OO=em.default.join(TO,"worker.pid");async function L$(t){let e=t.currentPid??process.pid,r=t.pidFilePath??OO,n=t.registry.getAll(),o=[...n].filter(a=>a.pid!==e).sort((a,s)=>Date.parse(s.startedAt)-Date.parse(a.startedAt));for(let a of o){if(!St(a.pid)){t.registry.unregister(a.id);continue}try{await R$(a.pid,"SIGTERM")}catch(s){s instanceof Error?_.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:a.pid,type:a.type},s):_.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:a.pid,type:a.type,error:String(s)})}}await M$(o,5e3);let i=o.filter(a=>St(a.pid));for(let a of i)try{await R$(a.pid,"SIGKILL")}catch(s){s instanceof Error?_.debug("SYSTEM","Failed to force kill child process",{pid:a.pid,type:a.type},s):_.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:a.pid,type:a.type,error:String(s)})}await M$(i,1e3);for(let a of o)t.registry.unregister(a.id);for(let a of n.filter(s=>s.pid===e))t.registry.unregister(a.id);try{(0,C$.rmSync)(r,{force:!0})}catch(a){a instanceof Error?_.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:r},a):_.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:r,error:String(a)})}t.registry.pruneDeadEntries()}async function M$(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.filter(o=>St(o.pid)).length===0)return;await new Promise(o=>setTimeout(o,100))}}async function R$(t,e){if(e==="SIGTERM"){try{process.kill(t,e)}catch(r){if(r instanceof Error&&r.code==="ESRCH")return;throw r}return}if(process.platform==="win32"){let r=await jO();if(r){await new Promise((o,i)=>{r(t,e,a=>{if(!a){o();return}if(a.code==="ESRCH"){o();return}i(a)})});return}let n=["/PID",String(t),"/T"];e==="SIGKILL"&&n.push("/F"),await PO("taskkill",n,{timeout:pt.POWERSHELL_COMMAND,windowsHide:!0});return}try{process.kill(t,e)}catch(r){if(r instanceof Error&&r.code==="ESRCH")return;throw r}}async function jO(){let t="tree-kill";try{let e=await import(t);return e.default??e}catch(e){return _.debug("SYSTEM","tree-kill module not available, using fallback",{},e instanceof Error?e:void 0),null}}var F$=3e4,Rn=null;function DO(){let e=Qs().pruneDeadEntries();e>0&&_.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function q$(){Rn===null&&(Rn=setInterval(DO,F$),Rn.unref(),_.debug("SYSTEM","Health checker started",{intervalMs:F$}))}function V$(){Rn!==null&&(clearInterval(Rn),Rn=null,_.debug("SYSTEM","Health checker stopped"))}var NO=rm.default.join((0,W$.homedir)(),".claude-mem"),MO=rm.default.join(NO,"worker.pid"),tm=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),nm({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,q$()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){_.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,_.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?_.error("SYSTEM","Error during shutdown",{},o):_.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(i){i instanceof Error?_.debug("SYSTEM","Supervisor shutdown fallback failed",{},i):_.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(i)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{_.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}V$(),this.stopPromise=L$({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,r,n){this.registry.register(e,r,n)}unregisterProcess(e){this.registry.unregister(e)}getRegistry(){return this.registry}},RO=new tm(Qs());function J$(){return RO}function nm(t={}){let e=t.pidFilePath??MO;if(!(0,Lr.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Lr.readFileSync)(e,"utf-8"))}catch(n){return n instanceof Error?_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},n):_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(n)}),(0,Lr.rmSync)(e,{force:!0}),"invalid"}return St(r.pid)?((t.logAlive??!0)&&_.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(_.info("SYSTEM","Removing stale PID file (worker process is dead)",{pid:r.pid,port:r.port,startedAt:r.startedAt}),(0,Lr.rmSync)(e,{force:!0}),"stale")}var r6=(0,G$.promisify)(tr.exec),AO=er.default.join((0,im.homedir)(),".claude-mem"),An=er.default.join(AO,"worker.pid");function H$(t){return t?/(^|[\\/])bun(\.exe)?$/i.test(t.trim()):!1}function CO(t,e){let r=e==="win32"?`where ${t}`:`which ${t}`,n;try{n=(0,tr.execSync)(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(i){return i instanceof Error?_.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},i):_.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},new Error(String(i))),null}return n.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)||null}var om;function UO(t={}){let e=Object.keys(t).length===0;if(e&&om!==void 0)return om;let r=ZO(t);return e&&r!==null&&(om=r),r}function ZO(t){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(H$(r))return r;let n=t.env??process.env,o=t.homeDirectory??(0,im.homedir)(),i=t.pathExists??qe.existsSync,a=t.lookupInPath??CO,s=e==="win32"?[n.BUN,n.BUN_PATH,er.default.join(o,".bun","bin","bun.exe"),er.default.join(o,".bun","bin","bun"),n.USERPROFILE?er.default.join(n.USERPROFILE,".bun","bin","bun.exe"):void 0,n.LOCALAPPDATA?er.default.join(n.LOCALAPPDATA,"bun","bun.exe"):void 0,n.LOCALAPPDATA?er.default.join(n.LOCALAPPDATA,"bun","bin","bun.exe"):void 0]:[n.BUN,n.BUN_PATH,er.default.join(o,".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun","/usr/bin/bun","/snap/bin/bun"];for(let c of s){let u=c?.trim();if(u&&(H$(u)&&i(u)||u.toLowerCase()==="bun"))return u}return a("bun",e)}function K$(){if((0,qe.existsSync)(An))try{(0,qe.unlinkSync)(An)}catch(t){t instanceof Error?_.warn("SYSTEM","Failed to remove PID file",{path:An},t):_.warn("SYSTEM","Failed to remove PID file",{path:An},new Error(String(t)))}}function Cn(t){return process.platform==="win32"?Math.round(t*2):t}function Y$(t,e,r={}){let n=process.platform==="win32";J$().assertCanSpawn("worker daemon");let o=D$({...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r}),i=UO();if(!i){_.error("SYSTEM","Bun runtime not found \u2014 install from https://bun.sh and ensure it is on PATH or set BUN env var. The worker daemon requires Bun because it uses bun:sqlite.");return}if(n){let c=`Start-Process -FilePath '${i.replace(/'/g,"''")}' -ArgumentList @('${t.replace(/'/g,"''")}','--daemon') -WindowStyle Hidden`,u=Buffer.from(c,"utf16le").toString("base64");try{return(0,tr.execSync)(`powershell -NoProfile -EncodedCommand ${u}`,{stdio:"ignore",windowsHide:!0,env:o}),0}catch(l){l instanceof Error?_.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:i},l):_.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:i},new Error(String(l)));return}}let a="/usr/bin/setsid";if((0,qe.existsSync)(a)){let c=(0,tr.spawn)(a,[i,t,"--daemon"],{detached:!0,stdio:"ignore",env:o});return c.pid===void 0?void 0:(c.unref(),c.pid)}let s=(0,tr.spawn)(i,[t,"--daemon"],{detached:!0,stdio:"ignore",env:o});if(s.pid!==void 0)return s.unref(),s.pid}function B$(){try{if(!(0,qe.existsSync)(An))return;let t=new Date;(0,qe.utimesSync)(An,t,t)}catch{}}function X$(){return nm({logAlive:!1})}var Q$=kt(require("net"),1);async function LO(t,e,r="GET"){let n=await fetch(`http://127.0.0.1:${t}${e}`,{method:r}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function eb(t){if(process.platform==="win32")try{return(await fetch(`http://127.0.0.1:${t}/api/health`)).ok}catch(e){return e instanceof Error?_.debug("SYSTEM","Windows health check failed (port not in use)",{},e):_.debug("SYSTEM","Windows health check failed (port not in use)",{error:String(e)}),!1}return new Promise(e=>{let r=Q$.default.createServer();r.once("error",n=>{n.code==="EADDRINUSE"?e(!0):e(!1)}),r.once("listening",()=>{r.close(()=>e(!1))}),r.listen(t,"127.0.0.1")})}async function tb(t,e,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await LO(t,e)).ok)return!0}catch(i){i instanceof Error?_.debug("SYSTEM",n,{},i):_.debug("SYSTEM",n,{error:String(i)})}await new Promise(i=>setTimeout(i,500))}return!1}function Di(t,e=3e4){return tb(t,"/api/health",e,"Service not ready yet, will retry")}function am(t,e=3e4){return tb(t,"/api/readiness",e,"Worker not ready yet, will retry")}var FO=120*1e3;function cm(){return sm.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function qO(){if(process.platform!=="win32")return!1;let t=cm();if(!(0,ft.existsSync)(t))return!1;try{let e=(0,ft.statSync)(t).mtimeMs;return Date.now()-e<FO}catch(e){return e instanceof Error?_.debug("SYSTEM","Could not stat worker spawn lock file",{},e):_.debug("SYSTEM","Could not stat worker spawn lock file",{error:String(e)}),!1}}function VO(){if(process.platform==="win32")try{let t=cm();(0,ft.mkdirSync)(sm.default.dirname(t),{recursive:!0}),(0,ft.writeFileSync)(t,"","utf-8")}catch{}}function ec(){if(process.platform==="win32")try{let t=cm();(0,ft.existsSync)(t)&&(0,ft.unlinkSync)(t)}catch{}}async function rb(t,e){return e?(0,ft.existsSync)(e)?X$()==="alive"?(_.info("SYSTEM","Worker PID file points to a live process, skipping duplicate spawn"),await Di(t,Cn(pt.PORT_IN_USE_WAIT))?(ec(),_.info("SYSTEM","Worker became healthy while waiting on live PID"),!0):(_.warn("SYSTEM","Live PID detected but worker did not become healthy before timeout"),!1)):await Di(t,1e3)?(ec(),await am(t,Cn(pt.READINESS_WAIT))||_.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),_.info("SYSTEM","Worker already running and healthy"),!0):await eb(t)?(_.info("SYSTEM","Port in use, waiting for worker to become healthy"),await Di(t,Cn(pt.PORT_IN_USE_WAIT))?(ec(),_.info("SYSTEM","Worker is now healthy"),!0):(_.error("SYSTEM","Port in use but worker not responding to health checks"),!1)):qO()?(_.warn("SYSTEM","Worker unavailable on Windows \u2014 skipping spawn (recent attempt failed within cooldown)"),!1):(_.info("SYSTEM","Starting worker daemon",{workerScriptPath:e}),VO(),Y$(e,t)===void 0?(_.error("SYSTEM","Failed to spawn worker daemon"),!1):await Di(t,Cn(pt.POST_SPAWN_WAIT))?(await am(t,Cn(pt.READINESS_WAIT))||_.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),ec(),B$(),_.info("SYSTEM","Worker started successfully"),!0):(K$(),_.error("SYSTEM","Worker failed to start (health check timeout)"),!1)):(_.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:e}),!1):(_.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),!1)}var Ln=require("node:fs/promises"),Ai=require("node:path");var ib=require("node:child_process"),Me=require("node:fs"),ze=require("node:path"),mm=require("node:os"),dm=require("node:module");var oj={},pm=typeof __filename<"u"?(0,dm.createRequire)(__filename):(0,dm.createRequire)(oj.url),fm={".js":"javascript",".mjs":"javascript",".cjs":"javascript",".jsx":"tsx",".ts":"typescript",".tsx":"tsx",".py":"python",".pyw":"python",".go":"go",".rs":"rust",".rb":"ruby",".java":"java",".c":"c",".h":"c",".cpp":"cpp",".cc":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".kt":"kotlin",".kts":"kotlin",".swift":"swift",".php":"php",".ex":"elixir",".exs":"elixir",".lua":"lua",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".zsh":"bash",".hs":"haskell",".zig":"zig",".css":"css",".scss":"scss",".toml":"toml",".yml":"yaml",".yaml":"yaml",".sql":"sql",".md":"markdown",".mdx":"markdown"};function ab(t,e){let r=t.slice(t.lastIndexOf("."));return fm[r]?fm[r]:e.extensionToLanguage[r]?e.extensionToLanguage[r]:"unknown"}function sb(t,e){return e.languageToQueryKey[t]?e.languageToQueryKey[t]:HO(t)}var Ni=new Map,Un={grammars:{},extensionToLanguage:{},languageToQueryKey:{}};function Ri(t){if(Ni.has(t))return Ni.get(t);let e=(0,ze.join)(t,".claude-mem.json"),r;try{let i=(0,Me.readFileSync)(e,"utf-8");r=JSON.parse(i)}catch{return Ni.set(t,Un),Un}let n=r.grammars;if(!n||typeof n!="object"||Array.isArray(n))return Ni.set(t,Un),Un;let o={grammars:{},extensionToLanguage:{},languageToQueryKey:{}};for(let[i,a]of Object.entries(n)){if(cb[i]||!a||typeof a!="object"||Array.isArray(a))continue;let s=a,c=s.package,u=s.extensions,l=s.query;if(!(typeof c!="string"||!Array.isArray(u))&&u.every(d=>typeof d=="string")){o.grammars[i]={package:c,extensions:u,query:typeof l=="string"?l:void 0};for(let d of u)fm[d]||(o.extensionToLanguage[d]=i);if(typeof l=="string"){let d=(0,ze.join)(t,l);try{let p=(0,Me.readFileSync)(d,"utf-8"),f=`user_${i}`;lb[f]=p,o.languageToQueryKey[i]=f}catch{console.error(`[smart-file-read] Custom query file not found: ${d}, falling back to generic`),o.languageToQueryKey[i]="generic"}}else o.languageToQueryKey[i]="generic"}}return Ni.set(t,o),o}var cb={javascript:"tree-sitter-javascript",typescript:"tree-sitter-typescript/typescript",tsx:"tree-sitter-typescript/tsx",python:"tree-sitter-python",go:"tree-sitter-go",rust:"tree-sitter-rust",ruby:"tree-sitter-ruby",java:"tree-sitter-java",c:"tree-sitter-c",cpp:"tree-sitter-cpp",kotlin:"tree-sitter-kotlin",swift:"tree-sitter-swift",php:"tree-sitter-php/php",elixir:"tree-sitter-elixir",lua:"@tree-sitter-grammars/tree-sitter-lua",scala:"tree-sitter-scala",bash:"tree-sitter-bash",haskell:"tree-sitter-haskell",zig:"@tree-sitter-grammars/tree-sitter-zig",css:"tree-sitter-css",scss:"tree-sitter-scss",toml:"@tree-sitter-grammars/tree-sitter-toml",yaml:"@tree-sitter-grammars/tree-sitter-yaml",sql:"@derekstride/tree-sitter-sql",markdown:"@tree-sitter-grammars/tree-sitter-markdown"},WO={markdown:"tree-sitter-markdown"};function JO(t){let e=cb[t];if(!e)return null;let r=WO[t];if(r){try{let n=pm.resolve(e+"/package.json"),o=(0,ze.join)((0,ze.dirname)(n),r);if((0,Me.existsSync)((0,ze.join)(o,"src")))return o}catch{}return null}try{let n=pm.resolve(e+"/package.json");return(0,ze.dirname)(n)}catch{return null}}function ub(t,e){let r=JO(t);if(r)return r;if(!e)return null;let o=Ri(e).grammars[t];if(!o)return null;try{let i=(0,ze.join)(e,"node_modules",o.package,"package.json");if((0,Me.existsSync)(i)){let a=(0,ze.dirname)(i);if((0,Me.existsSync)((0,ze.join)(a,"src")))return a}}catch{}return console.error(`[smart-file-read] Grammar package not found for "${t}": ${o.package} (install it in your project's node_modules)`),null}var lb={jsts:`
|
|
58
58
|
(function_declaration name: (identifier) @name) @func
|
|
59
59
|
(lexical_declaration (variable_declarator name: (identifier) @name value: [(arrow_function) (function_expression)])) @const_func
|
|
60
60
|
(class_declaration name: (type_identifier) @name) @cls
|
|
@@ -194,7 +194,7 @@ ${f}`}let s=i.lineStart;for(let u=i.lineStart-1;u>=0;u--){let l=a[u].trim();if(l
|
|
|
194
194
|
${c}`}var vb=new Set([".js",".jsx",".ts",".tsx",".mjs",".cjs",".py",".pyw",".go",".rs",".rb",".java",".cs",".cpp",".cc",".cxx",".c",".h",".hpp",".hh",".swift",".kt",".kts",".php",".vue",".svelte",".ex",".exs",".lua",".scala",".sc",".sh",".bash",".zsh",".hs",".zig",".css",".scss",".toml",".yml",".yaml",".sql",".md",".mdx"]),ij=new Set(["node_modules",".git","dist","build",".next","__pycache__",".venv","venv","env",".env","target","vendor",".cache",".turbo","coverage",".nyc_output",".claude",".smart-file-read"]),aj=512*1024;async function*_b(t,e,r=20,n){if(r<=0)return;let o;try{o=await(0,Ln.readdir)(t,{withFileTypes:!0})}catch(i){_.debug("WORKER",`walkDir: failed to read directory ${t}`,void 0,i instanceof Error?i:void 0);return}for(let i of o){if(i.name.startsWith(".")&&i.name!=="."||ij.has(i.name))continue;let a=(0,Ai.join)(t,i.name);if(i.isDirectory())yield*_b(a,e,r-1,n);else if(i.isFile()){let s=i.name.slice(i.name.lastIndexOf("."));(vb.has(s)||n&&n.has(s))&&(yield a)}}}async function sj(t){try{let e=await(0,Ln.stat)(t);if(e.size>aj||e.size===0)return null;let r=await(0,Ln.readFile)(t,"utf-8");return r.slice(0,1e3).includes("\0")?null:r}catch(e){return _.debug("WORKER",`safeReadFile: failed to read ${t}`,void 0,e instanceof Error?e:void 0),null}}async function yb(t,e,r={}){let n=r.maxResults||20,o=e.toLowerCase(),i=o.split(/[\s_\-./]+/).filter(S=>S.length>0),a=r.projectRoot||t,s=Ri(a),c=new Set;for(let S of Object.values(s.grammars))for(let x of S.extensions)vb.has(x)||c.add(x);let u=[];for await(let S of _b(t,t,20,c.size>0?c:void 0)){if(r.filePattern&&!(0,Ai.relative)(t,S).toLowerCase().includes(r.filePattern.toLowerCase()))continue;let x=await sj(S);x&&u.push({absolutePath:S,relativePath:(0,Ai.relative)(t,S),content:x})}let l=mb(u,a),d=[],p=[],f=0;for(let[S,x]of l){f+=cj(x);let T=rc(S.toLowerCase(),i)>0,Ve=[],We=(qn,qr)=>{for(let ye of qn){let rr=0,mt="",Vn=rc(ye.name.toLowerCase(),i);Vn>0&&(rr+=Vn*3,mt="name match"),ye.signature.toLowerCase().includes(o)&&(rr+=2,mt=mt?`${mt} + signature`:"signature match"),ye.jsdoc&&ye.jsdoc.toLowerCase().includes(o)&&(rr+=1,mt=mt?`${mt} + jsdoc`:"jsdoc match"),rr>0&&(T=!0,Ve.push({filePath:S,symbolName:qr?`${qr}.${ye.name}`:ye.name,kind:ye.kind,signature:ye.signature,jsdoc:ye.jsdoc,lineStart:ye.lineStart,lineEnd:ye.lineEnd,matchReason:mt})),ye.children&&We(ye.children,ye.name)}};We(x.symbols),T&&(d.push(x),p.push(...Ve))}p.sort((S,x)=>{let N=rc(S.symbolName.toLowerCase(),i);return rc(x.symbolName.toLowerCase(),i)-N});let h=p.slice(0,n),g=new Set(h.map(S=>S.filePath)),$=d.filter(S=>g.has(S.filePath)).slice(0,n),k=$.reduce((S,x)=>S+x.foldedTokenEstimate,0);return{foldedFiles:$,matchingSymbols:h,totalFilesScanned:u.length,totalSymbolsFound:f,tokenEstimate:k}}function rc(t,e){let r=0;for(let n of e)if(t===n)r+=10;else if(t.includes(n))r+=5;else{let o=0,i=0;for(let a of n){let s=t.indexOf(a,o);s!==-1&&(i++,o=s+1)}i===n.length&&(r+=1)}return r}function cj(t){let e=t.symbols.length;for(let r of t.symbols)r.children&&(e+=r.children.length);return e}function $b(t,e){let r=[];if(r.push(`\u{1F50D} Smart Search: "${e}"`),r.push(` Scanned ${t.totalFilesScanned} files, found ${t.totalSymbolsFound} symbols`),r.push(` ${t.matchingSymbols.length} matches across ${t.foldedFiles.length} files (~${t.tokenEstimate} tokens for folded view)`),r.push(""),t.matchingSymbols.length===0)return r.push(" No matching symbols found."),r.join(`
|
|
195
195
|
`);r.push("\u2500\u2500 Matching Symbols \u2500\u2500"),r.push("");for(let n of t.matchingSymbols){if(r.push(` ${n.kind} ${n.symbolName} (${n.filePath}:${n.lineStart+1})`),r.push(` ${n.signature}`),n.jsdoc){let o=n.jsdoc.split(`
|
|
196
196
|
`).find(i=>i.replace(/^[\s*/]+/,"").trim().length>0);o&&r.push(` \u{1F4AC} ${o.replace(/^[\s*/]+/,"").trim()}`)}r.push("")}r.push("\u2500\u2500 Folded File Views \u2500\u2500"),r.push("");for(let n of t.foldedFiles)r.push(Zn(n)),r.push("");return r.push("\u2500\u2500 Actions \u2500\u2500"),r.push(" To see full implementation: use smart_unfold with file path and symbol name"),r.join(`
|
|
197
|
-
`)}var gm=require("node:fs/promises"),Sb=require("node:fs"),Fr=require("node:path"),kb=require("node:url"),yj={},uj="12.3.
|
|
197
|
+
`)}var gm=require("node:fs/promises"),Sb=require("node:fs"),Fr=require("node:path"),kb=require("node:url"),yj={},uj="12.3.6";console.log=(...t)=>{_.error("CONSOLE","Intercepted console output (MCP protocol protection)",void 0,{args:t})};var wb=!1,Eb=(()=>{if(typeof __dirname<"u")return __dirname;try{return(0,Fr.dirname)((0,kb.fileURLToPath)(yj.url))}catch{return wb=!0,process.cwd()}})(),vm=(0,Fr.resolve)(Eb,"worker-service.cjs");function lj(){wb&&((0,Sb.existsSync)(vm)||_.error("SYSTEM","mcp-server: dirname resolution failed (both __dirname and import.meta.url are unavailable). Fell back to process.cwd() and the resolved WORKER_SCRIPT_PATH does not exist. This is the actual problem \u2014 the worker bundle is fine, but mcp-server cannot locate it. Worker auto-start will fail until the dirname-resolution path is fixed.",{workerScriptPath:vm,mcpServerDir:Eb}))}var bb={search:"/api/search",timeline:"/api/timeline"};async function hm(t,e){_.debug("SYSTEM","\u2192 Worker API",void 0,{endpoint:t,params:e});let r=new URLSearchParams;for(let[o,i]of Object.entries(e))i!=null&&r.append(o,String(i));let n=`${t}?${r}`;try{let o=await Xs(n);if(!o.ok){let a=await o.text();throw new Error(`Worker API error (${o.status}): ${a}`)}let i=await o.json();return _.debug("SYSTEM","\u2190 Worker API success",void 0,{endpoint:t}),i}catch(o){return _.error("SYSTEM","\u2190 Worker API error",{endpoint:t},o instanceof Error?o:new Error(String(o))),{content:[{type:"text",text:`Error calling Worker API: ${o instanceof Error?o.message:String(o)}`}],isError:!0}}}async function dj(t,e){let r=await Xs(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!r.ok){let o=await r.text();throw new Error(`Worker API error (${r.status}): ${o}`)}let n=await r.json();return _.debug("HTTP","Worker API success (POST)",void 0,{endpoint:t}),{content:[{type:"text",text:JSON.stringify(n,null,2)}]}}async function Fn(t,e){_.debug("HTTP","Worker API request (POST)",void 0,{endpoint:t});try{return await dj(t,e)}catch(r){return _.error("HTTP","Worker API error (POST)",{endpoint:t},r instanceof Error?r:new Error(String(r))),{content:[{type:"text",text:`Error calling Worker API: ${r instanceof Error?r.message:String(r)}`}],isError:!0}}}async function pj(){try{return(await Xs("/api/health")).ok}catch(t){return _.debug("SYSTEM","Worker health check failed",{},t instanceof Error?t:new Error(String(t))),!1}}async function fj(){if(await pj())return!0;_.warn("SYSTEM","Worker not available, attempting auto-start for MCP client"),lj();try{let t=Bf(),e=await rb(t,vm);return e||_.error("SYSTEM","Worker auto-start returned false \u2014 MCP tools that require the worker (search, timeline, get_observations) will fail until the worker is running. Check earlier log lines for the specific failure reason (Bun not found, missing worker bundle, port conflict, etc.)."),e}catch(t){return _.error("SYSTEM","Worker auto-start threw \u2014 MCP tools that require the worker (search, timeline, get_observations) will fail until the worker is running.",void 0,t instanceof Error?t:new Error(String(t))),!1}}var Ib=[{name:"__IMPORTANT",description:`3-LAYER WORKFLOW (ALWAYS FOLLOW):
|
|
198
198
|
1. search(query) \u2192 Get index with IDs (~50-100 tokens/result)
|
|
199
199
|
2. timeline(anchor=ID) \u2192 Get context around interesting results
|
|
200
200
|
3. get_observations([IDs]) \u2192 Fetch full details ONLY for filtered IDs
|