keepmind 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keepmind",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Memory compression system for Claude Code - persist context across sessions (node-only fork of claude-mem)",
5
5
  "keywords": [
6
6
  "claude",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keepmind",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Memory compression system for Claude Code - persist context across sessions (node-only fork of claude-mem)",
5
5
  "author": {
6
6
  "name": "Manuel Staggl"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keepmind",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Memory compression system for Claude Code - persist context across sessions (node-only fork of claude-mem)",
5
5
  "author": {
6
6
  "name": "Manuel Staggl",
package/plugin/.mcp.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "command": "node",
6
6
  "args": [
7
7
  "-e",
8
- "const f=require('fs'),p=require('path'),o=require('os'),c=require('child_process');const h=o.homedir();const C=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude');const E=process.env.CLAUDE_PLUGIN_ROOT||process.env.PLUGIN_ROOT||'';const d=process.cwd();const L=x=>{try{return f.readdirSync(x).filter(n=>/^\\d/.test(n)).map(n=>p.join(x,n)).filter(z=>{try{return f.statSync(z).isDirectory()}catch{return false}}).sort((a,b)=>f.statSync(b).mtimeMs-f.statSync(a).mtimeMs)}catch{return[]}};const K=[E,p.join(d,\"plugin\"),d,...L(p.join(h,\".codex/plugins/cache/keepmind-local/keepmind\")),...L(p.join(h,\".codex/plugins/cache/keepmind/keepmind\")),...L(p.join(C,\"plugins/cache/keepmind/keepmind\")),p.join(C,\"plugins/marketplaces/keepmind/plugin\")].filter(Boolean);let R=null;for(const k of K){const r=f.existsSync(p.join(k,'plugin','scripts'))?p.join(k,'plugin'):k;if(f.existsSync(p.join(r,'scripts',\"mcp-server.cjs\"))){R=r;break}}if(!R){process.stderr.write(\"keepmind: mcp server not found\\n\");process.exit(1)}const ch=c.spawn(process.execPath,[p.join(R,'scripts',\"mcp-server.cjs\")],{stdio:'inherit'});for(const s of ['SIGTERM','SIGINT','SIGHUP'])process.on(s,()=>{try{ch.kill(s)}catch{}});ch.on('exit',(code,sig)=>{if(sig){process.removeAllListeners(sig);try{process.kill(process.pid,sig)}catch{process.exit(1)}}else process.exit(code==null?0:code)})"
8
+ "const f=require('fs'),p=require('path'),o=require('os'),c=require('child_process');const h=o.homedir();const C=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude');const E=process.env.CLAUDE_PLUGIN_ROOT||process.env.PLUGIN_ROOT||'';const d=process.cwd();const L=x=>{try{return f.readdirSync(x).filter(n=>/^\\d/.test(n)).map(n=>p.join(x,n)).filter(z=>{try{return f.statSync(z).isDirectory()}catch{return false}}).sort((a,b)=>f.statSync(b).mtimeMs-f.statSync(a).mtimeMs)}catch{return[]}};const K=[E,p.join(d,\"plugin\"),d,...L(p.join(h,\".codex/plugins/cache/keepmind-local/keepmind\")),...L(p.join(h,\".codex/plugins/cache/keepmind/keepmind\")),...L(p.join(C,\"plugins/cache/keepmind/keepmind\")),p.join(C,\"plugins/marketplaces/keepmind/plugin\")].filter(Boolean);let R=null;for(const k of K){const r=f.existsSync(p.join(k,'plugin','scripts'))?p.join(k,'plugin'):k;if(f.existsSync(p.join(r,'scripts',\"mcp-server.cjs\"))){R=r;break}}if(!R){process.stderr.write(\"keepmind: mcp server not found\\n\");process.exit(1)}const ch=c.spawn(process.execPath,[p.join(R,'scripts',\"mcp-server.cjs\")],{stdio:'inherit',windowsHide:true});for(const s of ['SIGTERM','SIGINT','SIGHUP'])process.on(s,()=>{try{ch.kill(s)}catch{}});ch.on('exit',(code,sig)=>{if(sig){process.removeAllListeners(sig);try{process.kill(process.pid,sig)}catch{process.exit(1)}}else process.exit(code==null?0:code)})"
9
9
  ]
10
10
  }
11
11
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keepmind-plugin",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "private": true,
5
5
  "description": "Runtime dependencies for keepmind bundled hooks",
6
6
  "type": "module",
@@ -882,8 +882,8 @@ ${o.stack}`:` ${o.message}`;else if(this.getLevel()===0&&typeof o=="object")try{
882
882
  session_db_id, content_session_id, prompt_number, prompt_text,
883
883
  created_at, created_at_epoch
884
884
  ) VALUES (?, ?, ?, ?, ?, ?)
885
- `).run(t,e.content_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var dt=require("os"),ut=G(require("path"),1),ct=require("child_process");var oe=require("fs"),ne=G(require("path"),1);var X={isWorktree:!1,worktreeName:null,parentRepoPath:null,parentProjectName:null};function at(r){let e=ne.default.join(r,".git"),t;try{t=(0,oe.statSync)(e)}catch(c){return c instanceof Error&&c.code!=="ENOENT"&&l.warn("GIT","Unexpected error checking .git",{error:c instanceof Error?c.message:String(c)}),X}if(!t.isFile())return X;let s;try{s=(0,oe.readFileSync)(e,"utf-8").trim()}catch(c){return l.warn("GIT","Failed to read .git file",{error:c instanceof Error?c.message:String(c)}),X}let n=s.match(/^gitdir:\s*(.+)$/);if(!n)return X;let i=n[1].match(/^(.+)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)$/);if(!i)return X;let a=i[1],d=ne.default.basename(r),u=ne.default.basename(a);return{isWorktree:!0,worktreeName:d,parentRepoPath:a,parentProjectName:u}}function lt(r){return r==="~"||r.startsWith("~/")?r.replace(/^~/,(0,dt.homedir)()):r}function tr(r){try{return(0,ct.execFileSync)("git",["rev-parse","--show-toplevel"],{cwd:r,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function sr(r){if(!r||r.trim()==="")return l.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:r}),"unknown-project";let e=lt(r),s=tr(e)??e,n=ut.default.basename(s);if(n===""){if(process.platform==="win32"){let i=r.match(/^([A-Z]):\\/i);if(i){let d=`drive-${i[1].toUpperCase()}`;return l.info("PROJECT_NAME","Drive root detected",{cwd:r,projectName:d}),d}}return l.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:r}),"unknown-project"}return n}function _t(r){let e=sr(r);if(!r)return{primary:e,parent:null,isWorktree:!1,allProjects:[e]};let t=lt(r),s=at(t);if(s.isWorktree&&s.parentProjectName){let n=`${s.parentProjectName}/${e}`;return{primary:n,parent:s.parentProjectName,isWorktree:!0,allProjects:[s.parentProjectName,n]}}return{primary:e,parent:null,isWorktree:!1,allProjects:[e]}}var w=require("fs"),j=require("path"),we=require("os");var xe={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,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 pt(r){return process.platform==="win32"?Math.round(r*xe.WINDOWS_MULTIPLIER):r}var O=require("fs");var x=require("path");var mt=require("crypto");var rr=process.platform==="win32";function nr(r){(0,O.existsSync)(r)||(0,O.mkdirSync)(r,{recursive:!0})}function ie(r,e){let t=r;try{if((0,O.lstatSync)(r).isSymbolicLink())try{t=(0,O.realpathSync)(r)}catch{let u=(0,O.readlinkSync)(r);t=(0,x.resolve)((0,x.dirname)(r),u)}}catch(u){let c=u.code;if(c!=="ENOENT"&&c!=="ENOTDIR")throw u}nr((0,x.dirname)(t));let s=(0,x.dirname)(t),n=(0,x.basename)(t),o=(0,x.join)(s,`.${n}.${process.pid}.${(0,mt.randomBytes)(6).toString("hex")}.tmp`),i=Buffer.from(JSON.stringify(e,null,2)+`
886
- `,"utf-8"),a;try{a=(0,O.statSync)(t).mode&511}catch{}let d;try{d=a!==void 0?(0,O.openSync)(o,"w",a):(0,O.openSync)(o,"w");let u=0;for(;u<i.length;){let c=(0,O.writeSync)(d,i,u,i.length-u);if(c===0)throw new Error(`writeSync stalled at ${u}/${i.length} bytes`);u+=c}if((0,O.fsyncSync)(d),(0,O.closeSync)(d),d=void 0,(0,O.renameSync)(o,t),!rr){let c;try{c=(0,O.openSync)(s,"r"),(0,O.fsyncSync)(c)}catch{}finally{if(c!==void 0)try{(0,O.closeSync)(c)}catch{}}}}catch(u){if(d!==void 0)try{(0,O.closeSync)(d)}catch{}try{(0,O.unlinkSync)(o)}catch{}throw u}}var ae=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",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_API_TIMEOUT_MS:String(pt(xe.API_REQUEST)),CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",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_BASE_URL:"",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,j.join)((0,we.homedir)(),".keepmind"),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:"5",CLAUDE_MEM_OBSERVATION_BATCH_MAX:"1",CLAUDE_MEM_MAX_CONTEXT_MESSAGES:"40",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"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,j.join)((0,we.homedir)(),".keepmind","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",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_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static envOverride(e){let t=e.replace(/^CLAUDE_MEM_/,"KEEPMIND_");return process.env[t]??process.env[e]}static get(e){return this.envOverride(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)){let n=this.envOverride(s);n!==void 0&&(t[s]=n)}return t}static loadFromFile(e,t=!0){try{if(!(0,w.existsSync)(e)){let a=this.getAllDefaults();try{let d=(0,j.dirname)(e);(0,w.existsSync)(d)||(0,w.mkdirSync)(d,{recursive:!0}),ie(e,a),console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(d){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,d instanceof Error?d.message:String(d))}return t?this.applyEnvOverrides(a):a}let s=(0,w.readFileSync)(e,"utf-8"),n=JSON.parse(s.replace(/^\uFEFF/,"")),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{ie(e,o),console.warn("[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 t?this.applyEnvOverrides(i):i}catch(s){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,s instanceof Error?s.message:String(s));let n=this.getAllDefaults();try{if((0,w.existsSync)(e)){let o=`${e}.corrupt-${Date.now()}`;(0,w.renameSync)(e,o),console.warn("[SETTINGS] Backed up corrupt settings file to:",o)}ie(e,n),console.warn("[SETTINGS] Recovered settings file with defaults:",e)}catch(o){console.warn("[SETTINGS] Failed to recover corrupt settings file:",e,o instanceof Error?o.message:String(o))}return t?this.applyEnvOverrides(n):n}}};var W=require("fs"),de=require("path");var M=class r{static instance=null;activeMode=null;modesDir;constructor(){let e=Ke(),t=[...process.env.CLAUDE_MEM_MODES_DIR?[process.env.CLAUDE_MEM_MODES_DIR]:[],(0,de.join)(e,"modes"),(0,de.join)(e,"..","plugin","modes")],s=t.find(n=>(0,W.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,de.join)(this.modesDir,`${e}.json`);if(!(0,W.existsSync)(t))throw new Error(`Mode file not found: ${t}`);let s=(0,W.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,l.debug("SYSTEM",`Loaded mode: ${d.name} (${e})`,void 0,{types:d.observation_types.map(u=>u.id),concepts:d.observation_concepts.map(u=>u.id)}),d}catch(d){if(d instanceof Error?l.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:d.message}):l.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?l.warn("WORKER",`Parent mode '${s}' not found for ${e}, falling back to 'code'`,{message:d.message}):l.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),l.debug("SYSTEM",`Loaded override file: ${n} for parent ${s}`)}catch(d){return d instanceof Error?l.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{message:d.message}):l.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{error:String(d)}),this.activeMode=o,o}if(!i)return l.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,l.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}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}"}};function Et(){let r=P.settings(),e=ae.loadFromFile(r),t=M.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 _={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"},gt=4,ke=1;function ue(r){let e=(r.title?.length||0)+(r.subtitle?.length||0)+(r.narrative?.length||0)+JSON.stringify(r.facts||[]).length;return Math.ceil(e/gt)}function Fe(r){let e=r.length,t=r.reduce((i,a)=>i+ue(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 or(r){return M.getInstance().getWorkEmoji(r)}function V(r,e){let t=ue(r),s=r.discovery_tokens||0,n=or(r.type),o=s>0?`${n} ${s.toLocaleString("en-US")}`:"-";return{readTokens:t,discoveryTokens:s,discoveryDisplay:o,workEmoji:n}}function ce(r){return r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent}function ir(r){return ue(r)}function ar(r,e){if(!Number.isFinite(e)||e<=0)return r;let t=[],s=0;for(let n of r){let o=ir(n);s+o>e||(t.push(n),s+=o)}return t}function Tt(r,e){let t=e.now??Date.now(),s=r.map(i=>({o:i,score:Je(i,{now:t,halfLifeDays:e.halfLifeDays})})).sort((i,a)=>a.score-i.score).map(i=>i.o),n=e.maxRows>0?s.slice(0,e.maxRows):s;return ar(n,e.tokenBudget).sort((i,a)=>(a.created_at_epoch??0)-(i.created_at_epoch??0))}var ft=G(require("path"),1),le=require("fs");function bt(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(`
885
+ `).run(t,e.content_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var dt=require("os"),ut=G(require("path"),1),ct=require("child_process");var oe=require("fs"),ne=G(require("path"),1);var X={isWorktree:!1,worktreeName:null,parentRepoPath:null,parentProjectName:null};function at(r){let e=ne.default.join(r,".git"),t;try{t=(0,oe.statSync)(e)}catch(c){return c instanceof Error&&c.code!=="ENOENT"&&l.warn("GIT","Unexpected error checking .git",{error:c instanceof Error?c.message:String(c)}),X}if(!t.isFile())return X;let s;try{s=(0,oe.readFileSync)(e,"utf-8").trim()}catch(c){return l.warn("GIT","Failed to read .git file",{error:c instanceof Error?c.message:String(c)}),X}let n=s.match(/^gitdir:\s*(.+)$/);if(!n)return X;let i=n[1].match(/^(.+)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)$/);if(!i)return X;let a=i[1],d=ne.default.basename(r),u=ne.default.basename(a);return{isWorktree:!0,worktreeName:d,parentRepoPath:a,parentProjectName:u}}function lt(r){return r==="~"||r.startsWith("~/")?r.replace(/^~/,(0,dt.homedir)()):r}function tr(r){try{return(0,ct.execFileSync)("git",["rev-parse","--show-toplevel"],{cwd:r,encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0}).trim()||null}catch{return null}}function sr(r){if(!r||r.trim()==="")return l.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:r}),"unknown-project";let e=lt(r),s=tr(e)??e,n=ut.default.basename(s);if(n===""){if(process.platform==="win32"){let i=r.match(/^([A-Z]):\\/i);if(i){let d=`drive-${i[1].toUpperCase()}`;return l.info("PROJECT_NAME","Drive root detected",{cwd:r,projectName:d}),d}}return l.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:r}),"unknown-project"}return n}function _t(r){let e=sr(r);if(!r)return{primary:e,parent:null,isWorktree:!1,allProjects:[e]};let t=lt(r),s=at(t);if(s.isWorktree&&s.parentProjectName){let n=`${s.parentProjectName}/${e}`;return{primary:n,parent:s.parentProjectName,isWorktree:!0,allProjects:[s.parentProjectName,n]}}return{primary:e,parent:null,isWorktree:!1,allProjects:[e]}}var w=require("fs"),j=require("path"),we=require("os");var xe={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,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 pt(r){return process.platform==="win32"?Math.round(r*xe.WINDOWS_MULTIPLIER):r}var O=require("fs");var x=require("path");var mt=require("crypto");var rr=process.platform==="win32";function nr(r){(0,O.existsSync)(r)||(0,O.mkdirSync)(r,{recursive:!0})}function ie(r,e){let t=r;try{if((0,O.lstatSync)(r).isSymbolicLink())try{t=(0,O.realpathSync)(r)}catch{let u=(0,O.readlinkSync)(r);t=(0,x.resolve)((0,x.dirname)(r),u)}}catch(u){let c=u.code;if(c!=="ENOENT"&&c!=="ENOTDIR")throw u}nr((0,x.dirname)(t));let s=(0,x.dirname)(t),n=(0,x.basename)(t),o=(0,x.join)(s,`.${n}.${process.pid}.${(0,mt.randomBytes)(6).toString("hex")}.tmp`),i=Buffer.from(JSON.stringify(e,null,2)+`
886
+ `,"utf-8"),a;try{a=(0,O.statSync)(t).mode&511}catch{}let d;try{d=a!==void 0?(0,O.openSync)(o,"w",a):(0,O.openSync)(o,"w");let u=0;for(;u<i.length;){let c=(0,O.writeSync)(d,i,u,i.length-u);if(c===0)throw new Error(`writeSync stalled at ${u}/${i.length} bytes`);u+=c}if((0,O.fsyncSync)(d),(0,O.closeSync)(d),d=void 0,(0,O.renameSync)(o,t),!rr){let c;try{c=(0,O.openSync)(s,"r"),(0,O.fsyncSync)(c)}catch{}finally{if(c!==void 0)try{(0,O.closeSync)(c)}catch{}}}}catch(u){if(d!==void 0)try{(0,O.closeSync)(d)}catch{}try{(0,O.unlinkSync)(o)}catch{}throw u}}var ae=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",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_API_TIMEOUT_MS:String(pt(xe.API_REQUEST)),CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",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_BASE_URL:"",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,j.join)((0,we.homedir)(),".keepmind"),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:"5",CLAUDE_MEM_OBSERVATION_BATCH_MAX:"3",CLAUDE_MEM_MAX_CONTEXT_MESSAGES:"40",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"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,j.join)((0,we.homedir)(),".keepmind","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",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_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static envOverride(e){let t=e.replace(/^CLAUDE_MEM_/,"KEEPMIND_");return process.env[t]??process.env[e]}static get(e){return this.envOverride(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)){let n=this.envOverride(s);n!==void 0&&(t[s]=n)}return t}static loadFromFile(e,t=!0){try{if(!(0,w.existsSync)(e)){let a=this.getAllDefaults();try{let d=(0,j.dirname)(e);(0,w.existsSync)(d)||(0,w.mkdirSync)(d,{recursive:!0}),ie(e,a),console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(d){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,d instanceof Error?d.message:String(d))}return t?this.applyEnvOverrides(a):a}let s=(0,w.readFileSync)(e,"utf-8"),n=JSON.parse(s.replace(/^\uFEFF/,"")),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{ie(e,o),console.warn("[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 t?this.applyEnvOverrides(i):i}catch(s){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,s instanceof Error?s.message:String(s));let n=this.getAllDefaults();try{if((0,w.existsSync)(e)){let o=`${e}.corrupt-${Date.now()}`;(0,w.renameSync)(e,o),console.warn("[SETTINGS] Backed up corrupt settings file to:",o)}ie(e,n),console.warn("[SETTINGS] Recovered settings file with defaults:",e)}catch(o){console.warn("[SETTINGS] Failed to recover corrupt settings file:",e,o instanceof Error?o.message:String(o))}return t?this.applyEnvOverrides(n):n}}};var W=require("fs"),de=require("path");var M=class r{static instance=null;activeMode=null;modesDir;constructor(){let e=Ke(),t=[...process.env.CLAUDE_MEM_MODES_DIR?[process.env.CLAUDE_MEM_MODES_DIR]:[],(0,de.join)(e,"modes"),(0,de.join)(e,"..","plugin","modes")],s=t.find(n=>(0,W.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,de.join)(this.modesDir,`${e}.json`);if(!(0,W.existsSync)(t))throw new Error(`Mode file not found: ${t}`);let s=(0,W.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,l.debug("SYSTEM",`Loaded mode: ${d.name} (${e})`,void 0,{types:d.observation_types.map(u=>u.id),concepts:d.observation_concepts.map(u=>u.id)}),d}catch(d){if(d instanceof Error?l.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:d.message}):l.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?l.warn("WORKER",`Parent mode '${s}' not found for ${e}, falling back to 'code'`,{message:d.message}):l.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),l.debug("SYSTEM",`Loaded override file: ${n} for parent ${s}`)}catch(d){return d instanceof Error?l.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{message:d.message}):l.warn("WORKER",`Override file '${n}' not found, using parent mode '${s}' only`,{error:String(d)}),this.activeMode=o,o}if(!i)return l.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,l.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}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}"}};function Et(){let r=P.settings(),e=ae.loadFromFile(r),t=M.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 _={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"},gt=4,ke=1;function ue(r){let e=(r.title?.length||0)+(r.subtitle?.length||0)+(r.narrative?.length||0)+JSON.stringify(r.facts||[]).length;return Math.ceil(e/gt)}function Fe(r){let e=r.length,t=r.reduce((i,a)=>i+ue(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 or(r){return M.getInstance().getWorkEmoji(r)}function V(r,e){let t=ue(r),s=r.discovery_tokens||0,n=or(r.type),o=s>0?`${n} ${s.toLocaleString("en-US")}`:"-";return{readTokens:t,discoveryTokens:s,discoveryDisplay:o,workEmoji:n}}function ce(r){return r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent}function ir(r){return ue(r)}function ar(r,e){if(!Number.isFinite(e)||e<=0)return r;let t=[],s=0;for(let n of r){let o=ir(n);s+o>e||(t.push(n),s+=o)}return t}function Tt(r,e){let t=e.now??Date.now(),s=r.map(i=>({o:i,score:Je(i,{now:t,halfLifeDays:e.halfLifeDays})})).sort((i,a)=>a.score-i.score).map(i=>i.o),n=e.maxRows>0?s.slice(0,e.maxRows):s;return ar(n,e.tokenBudget).sort((i,a)=>(a.created_at_epoch??0)-(i.created_at_epoch??0))}var ft=G(require("path"),1),le=require("fs");function bt(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(`
887
887
  SELECT
888
888
  o.id,
889
889
  o.memory_session_id,
@@ -20,7 +20,7 @@ ${s.stack}`:` ${s.message}`;else if(this.getLevel()===0&&typeof s=="object")try{
20
20
  `)}else un(p+`
21
21
  `)}debug(e,r,n,o){this.log(0,e,r,n,o)}info(e,r,n,o){this.log(1,e,r,n,o)}warn(e,r,n,o){this.log(2,e,r,n,o)}setErrorSink(e){_i=e}error(e,r,n,o){this.log(3,e,r,n,o),this.routeErrorToSink(r,n,o)}routeErrorToSink(e,r,n){try{if(!_i||!(n instanceof Error))return;_i(n)}catch{}}dataIn(e,r,n,o){this.info(e,`\u2192 ${r}`,n,o)}dataOut(e,r,n,o){this.info(e,`\u2190 ${r}`,n,o)}success(e,r,n,o){this.info(e,`\u2713 ${r}`,n,o)}failure(e,r,n,o){this.error(e,`\u2717 ${r}`,n,o)}happyPathError(e,r,n,o,s=""){let u=((new Error().stack||"").split(`
22
22
  `)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",d={...n,location:l};return this.warn(e,`[HAPPY-PATH] ${r}`,d,o),s}},f=new vi;var ue={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,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},C={SUCCESS:0,FAILURE:1,BLOCKING_ERROR:2,USER_MESSAGE_ONLY:3};function vt(t){return process.platform==="win32"?Math.round(t*ue.WINDOWS_MULTIPLIER):t}var dt=require("fs"),dn=require("path"),Ei=require("os");var W=require("fs");var lt=require("path");var jl=require("crypto"),Yv=process.platform==="win32";function Xv(t){(0,W.existsSync)(t)||(0,W.mkdirSync)(t,{recursive:!0})}function So(t,e){let r=t;try{if((0,W.lstatSync)(t).isSymbolicLink())try{r=(0,W.realpathSync)(t)}catch{let u=(0,W.readlinkSync)(t);r=(0,lt.resolve)((0,lt.dirname)(t),u)}}catch(u){let l=u.code;if(l!=="ENOENT"&&l!=="ENOTDIR")throw u}Xv((0,lt.dirname)(r));let n=(0,lt.dirname)(r),o=(0,lt.basename)(r),s=(0,lt.join)(n,`.${o}.${process.pid}.${(0,jl.randomBytes)(6).toString("hex")}.tmp`),i=Buffer.from(JSON.stringify(e,null,2)+`
23
- `,"utf-8"),a;try{a=(0,W.statSync)(r).mode&511}catch{}let c;try{c=a!==void 0?(0,W.openSync)(s,"w",a):(0,W.openSync)(s,"w");let u=0;for(;u<i.length;){let l=(0,W.writeSync)(c,i,u,i.length-u);if(l===0)throw new Error(`writeSync stalled at ${u}/${i.length} bytes`);u+=l}if((0,W.fsyncSync)(c),(0,W.closeSync)(c),c=void 0,(0,W.renameSync)(s,r),!Yv){let l;try{l=(0,W.openSync)(n,"r"),(0,W.fsyncSync)(l)}catch{}finally{if(l!==void 0)try{(0,W.closeSync)(l)}catch{}}}}catch(u){if(c!==void 0)try{(0,W.closeSync)(c)}catch{}try{(0,W.unlinkSync)(s)}catch{}throw u}}var Bt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",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_API_TIMEOUT_MS:String(vt(ue.API_REQUEST)),CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",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_BASE_URL:"",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,dn.join)((0,Ei.homedir)(),".keepmind"),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:"5",CLAUDE_MEM_OBSERVATION_BATCH_MAX:"1",CLAUDE_MEM_MAX_CONTEXT_MESSAGES:"40",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"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,dn.join)((0,Ei.homedir)(),".keepmind","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",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_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static envOverride(e){let r=e.replace(/^CLAUDE_MEM_/,"KEEPMIND_");return process.env[r]??process.env[e]}static get(e){return this.envOverride(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)){let o=this.envOverride(n);o!==void 0&&(r[n]=o)}return r}static loadFromFile(e,r=!0){try{if(!(0,dt.existsSync)(e)){let a=this.getAllDefaults();try{let c=(0,dn.dirname)(e);(0,dt.existsSync)(c)||(0,dt.mkdirSync)(c,{recursive:!0}),So(e,a),console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(c){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,c instanceof Error?c.message:String(c))}return r?this.applyEnvOverrides(a):a}let n=(0,dt.readFileSync)(e,"utf-8"),o=JSON.parse(n.replace(/^\uFEFF/,"")),s=o;if(o.env&&typeof o.env=="object"){s=o.env;try{So(e,s),console.warn("[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))s[a]!==void 0&&(i[a]=s[a]);return r?this.applyEnvOverrides(i):i}catch(n){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n));let o=this.getAllDefaults();try{if((0,dt.existsSync)(e)){let s=`${e}.corrupt-${Date.now()}`;(0,dt.renameSync)(e,s),console.warn("[SETTINGS] Backed up corrupt settings file to:",s)}So(e,o),console.warn("[SETTINGS] Recovered settings file with defaults:",e)}catch(s){console.warn("[SETTINGS] Failed to recover corrupt settings file:",e,s instanceof Error?s.message:String(s))}return r?this.applyEnvOverrides(o):o}}};var vo=null;function rt(){return vo!==null||(vo=Bt.loadFromFile(Al)),vo}var Xt=require("fs");var $i=require("child_process");var pt=require("fs"),ki=we(require("path"),1);var Qv=["CLAUDECODE_","CLAUDE_CODE_"],eE=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy"]),tE=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS"]);function Yt(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(tE.has(r)){e[r]=n;continue}eE.has(r)||Qv.some(o=>r.startsWith(o))||(e[r]=n)}return e}var rE=5e3,nE=1e3,oE=fe.supervisorRegistry();function Et(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:(f.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return f.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}async function Eo(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.every(n=>!Et(n.pid)))return;await new Promise(n=>setTimeout(n,100))}}var sE=5e3,Ul=new Map;function iE(t){let e=Ul.get(t);if(e&&Date.now()-e.capturedAtMs<sE)return e.token;let r=null;try{let n=(0,$i.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...Yt(process.env),LC_ALL:"C",LANG:"C"}});if(n.status===0){let o=n.stdout.trim();r=o.length>0?o:null}}catch(n){f.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:n instanceof Error?n.message:String(n)}),r=null}return Ul.set(t,{token:r,capturedAtMs:Date.now()}),r}function Fl(t){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux")try{let e=(0,pt.readFileSync)(`/proc/${t}/stat`,"utf-8"),r=e.lastIndexOf(") ");if(r<0)return null;let o=e.slice(r+2).split(" ")[19];return o&&/^\d+$/.test(o)?o:null}catch(e){return f.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:e instanceof Error?e.message:String(e)}),null}if(process.platform==="win32")return iE(t);try{let e=(0,$i.spawnSync)("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...Yt(process.env),LC_ALL:"C",LANG:"C"}});if(e.status!==0)return null;let r=e.stdout.trim();return r.length>0?r:null}catch(e){return f.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:e instanceof Error?e.message:String(e)}),null}}function Pi(t){if(!t||!Et(t.pid))return!1;if(!t.startToken)return!0;let e=Fl(t.pid);if(e===null)return!0;let r=e===t.startToken;return r||f.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:t.pid,stored:t.startToken,current:e}),r}var xi=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=oE){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,pt.mkdirSync)(ki.default.dirname(this.registryPath),{recursive:!0}),!(0,pt.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,pt.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[o,s]of Object.entries(n))this.entries.set(o,s)}catch(r){r instanceof Error?f.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):f.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&f.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();let r=this.entries.get(e);this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist(),r?.type==="sdk"&&bi()}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,r=0;for(let[n,o]of this.entries)Et(o.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),e+=1,o.type==="sdk"&&(r+=1));e>0&&this.persist();for(let n=0;n<r;n+=1)bi();return 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;f.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(i=>i.pid)});let o=r.filter(i=>Et(i.pid));for(let i of o)try{typeof i.pgid=="number"&&process.platform!=="win32"?process.kill(-i.pgid,"SIGTERM"):process.kill(i.pid,"SIGTERM")}catch(a){a instanceof Error?a.code!=="ESRCH"&&f.debug("SYSTEM",`Failed to SIGTERM session process PID ${i.pid}`,{pid:i.pid,pgid:i.pgid},a):f.warn("SYSTEM",`Failed to SIGTERM session process PID ${i.pid} (non-Error)`,{pid:i.pid,pgid:i.pgid,error:String(a)})}await Eo(o,rE);let s=o.filter(i=>Et(i.pid));for(let i of s){f.warn("SYSTEM",`Session process PID ${i.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:i.pid,pgid:i.pgid,sessionId:n});try{typeof i.pgid=="number"&&process.platform!=="win32"?process.kill(-i.pgid,"SIGKILL"):process.kill(i.pid,"SIGKILL")}catch(a){a instanceof Error?a.code!=="ESRCH"&&f.debug("SYSTEM",`Failed to SIGKILL session process PID ${i.pid}`,{pid:i.pid,pgid:i.pgid},a):f.warn("SYSTEM",`Failed to SIGKILL session process PID ${i.pid} (non-Error)`,{pid:i.pid,pgid:i.pgid,error:String(a)})}}if(s.length>0){let i=Date.now()+nE;for(;Date.now()<i&&s.filter(c=>Et(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100))}for(let i of r)this.entries.delete(i.id),this.runtimeProcesses.delete(i.id);this.persist();for(let i of r)i.type==="sdk"&&bi();return f.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,pt.mkdirSync)(ki.default.dirname(this.registryPath),{recursive:!0}),(0,pt.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},wi=null;function wo(){return wi||(wi=new xi),wi}var aE=[];function bi(){let t=aE.shift();t&&t()}var ql=require("child_process"),Er=require("fs"),Hl=require("util");var cE=(0,Hl.promisify)(ql.execFile),uE=fe.workerPid();async function Wl(t){let e=t.currentPid??process.pid,r=t.pidFilePath??uE,n=t.registry.getAll(),o=[...n].filter(i=>i.pid!==e).sort((i,a)=>Date.parse(a.startedAt)-Date.parse(i.startedAt));for(let i of o){if(!Et(i.pid)){t.registry.unregister(i.id);continue}try{await Zl(i,"SIGTERM")}catch(a){a instanceof Error?f.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):f.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}}await Eo(o,5e3);let s=o.filter(i=>Et(i.pid));for(let i of s)try{await Zl(i,"SIGKILL")}catch(a){a instanceof Error?f.debug("SYSTEM","Failed to force kill child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):f.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}await Eo(s,1e3);for(let i of o)t.registry.unregister(i.id);for(let i of n.filter(a=>a.pid===e))t.registry.unregister(i.id);lE(r,e),t.registry.pruneDeadEntries()}function lE(t,e){if(!(0,Er.existsSync)(t))return;let r=null;try{let n=JSON.parse((0,Er.readFileSync)(t,"utf-8"));r=typeof n.pid=="number"?n.pid:null}catch(n){f.debug("SYSTEM","PID file unreadable during shutdown \u2014 leaving it (cannot prove ownership)",{pidFilePath:t,error:n instanceof Error?n.message:String(n)});return}if(r!==e){f.debug("SYSTEM","PID file not owned by this process \u2014 leaving it for its owner (restart successor?)",{pidFilePath:t,recordedPid:r,currentPid:e});return}try{(0,Er.rmSync)(t,{force:!0})}catch(n){n instanceof Error?f.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:t},n):f.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:t,error:String(n)})}}async function Zl(t,e){let{pid:r,pgid:n}=t;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,e);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}try{process.kill(r,e)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}if(e==="SIGTERM"){try{process.kill(r,e)}catch(i){if(i instanceof Error&&i.code==="ESRCH")return;throw i}return}let o=await dE();if(o){await new Promise((i,a)=>{o(r,e,c=>{if(!c){i();return}if(c.code==="ESRCH"){i();return}a(c)})});return}let s=["/PID",String(r),"/T"];e==="SIGKILL"&&s.push("/F"),await cE("taskkill",s,{timeout:ue.POWERSHELL_COMMAND,windowsHide:!0})}async function dE(){let t="tree-kill";try{let e=await import(t);return e.default??e}catch(e){return f.debug("SYSTEM","tree-kill module not available, using fallback",{},e instanceof Error?e:void 0),null}}var Vl=3e4,wr=null;function pE(){let e=wo().pruneDeadEntries();e>0&&f.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function Kl(){wr===null&&(wr=setInterval(pE,Vl),wr.unref(),f.debug("SYSTEM","Health checker started",{intervalMs:Vl}))}function Jl(){wr!==null&&(clearInterval(wr),wr=null,f.debug("SYSTEM","Health checker stopped"))}var fE=fe.workerPid(),Ti=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(),pn({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,Kl()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){f.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,f.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?f.error("SYSTEM","Error during shutdown",{},o):f.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(s){s instanceof Error?f.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):f.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{f.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}Jl(),this.stopPromise=Wl({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}},mE=new Ti(wo());function Oi(){return mE}function pn(t={}){let e=t.pidFilePath??fE;if(!(0,Xt.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Xt.readFileSync)(e,"utf-8"))}catch(o){return o instanceof Error?f.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},o):f.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(o)}),(0,Xt.rmSync)(e,{force:!0}),"invalid"}return Pi(r)&&r?((t.logAlive??!0)&&f.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(f.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),(0,Xt.rmSync)(e,{force:!0}),"stale")}var Yl=we(require("path"),1),Xl=require("os"),be=require("fs"),Ql=require("child_process");function Gl(t){return t instanceof Error?t:new Error(String(t))}var YI=fe.dataDir(),ft=fe.workerPid(),XI=fe.workerPort();function Bl(t){return t?/(^|[\\/])node(\.exe)?$/i.test(t.trim()):!1}function hE(t,e){let r=e==="win32"?`where ${t}`:`which ${t}`,n;try{n=(0,Ql.execSync)(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(s){return s instanceof Error?f.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},s):f.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},new Error(String(s))),null}return n.split(/\r?\n/).map(s=>s.trim()).find(s=>s.length>0)||null}var zi;function Ri(t={}){let e=Object.keys(t).length===0;if(e&&zi!==void 0)return zi;let r=gE(t);return e&&r!==null&&(zi=r),r}function gE(t){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(Bl(r))return r;let n=t.env??process.env,o=t.homeDirectory??(0,Xl.homedir)(),s=t.pathExists??be.existsSync,i=t.lookupInPath??hE,a=e==="win32"?[n.NODE,Yl.default.join(o,".nvm","current","bin","node.exe"),"node"]:[n.NODE,"/usr/local/bin/node","/opt/homebrew/bin/node","/usr/bin/node","node"];for(let c of a){let u=c?.trim();if(u&&(Bl(u)&&s(u)||u.toLowerCase()==="node"))return u}return i("node",e)}function ed(){if(!(0,be.existsSync)(ft))return null;try{return JSON.parse((0,be.readFileSync)(ft,"utf-8"))}catch(t){return t instanceof Error?f.warn("SYSTEM","Failed to parse PID file",{path:ft},t):f.warn("SYSTEM","Failed to parse PID file",{path:ft},new Error(String(t))),null}}function td(){if((0,be.existsSync)(ft))try{(0,be.unlinkSync)(ft)}catch(t){t instanceof Error?f.warn("SYSTEM","Failed to remove PID file",{path:ft},t):f.warn("SYSTEM","Failed to remove PID file",{path:ft},new Error(String(t)))}}function Rt(t){return process.platform==="win32"?Math.round(t*2):t}function rd(t,e,r={}){Oi().assertCanSpawn("worker daemon");let n=Yt({...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r}),o=Ri();if(!o){f.error("SYSTEM","Node runtime not found \u2014 ensure node is on PATH or set the NODE env var. The worker daemon runs under Node (node:sqlite).");return}if(process.platform==="win32")try{let l=yr(o,[t,"--daemon"],{detached:!0,stdio:"ignore",windowsHide:!0,env:n});if(l.pid===void 0){f.error("SYSTEM","Worker daemon spawn produced no PID on Windows",{runtimePath:o});return}return l.unref(),l.pid}catch(l){f.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:o},Gl(l));return}let s="/usr/bin/setsid",i=(0,be.existsSync)(s),u=yr(i?s:o,i?[o,t,"--daemon"]:[t,"--daemon"],{detached:!0,stdio:"ignore",env:n});if(u.pid!==void 0)return u.unref(),u.pid}function nd(t){if(t===0)return!0;if(!Number.isInteger(t)||t<0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;if(r==="EPERM")return!0;f.debug("SYSTEM","Process not alive",{pid:t,code:r})}else f.debug("SYSTEM","Process not alive (non-Error thrown)",{pid:t},new Error(String(e)));return!1}}function od(){try{if(!(0,be.existsSync)(ft))return;let t=new Date;(0,be.utimesSync)(ft,t,t)}catch{}}function sd(){return pn({logAlive:!1})}var id=we(require("path"),1),ad=we(require("net"),1),cd=require("fs");var _E=2500;async function ud(t,e,r="GET"){let n=await fetch(`http://127.0.0.1:${t}${e}`,{method:r,signal:AbortSignal.timeout(_E)}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function ld(t){return new Promise(e=>{let r=ad.default.createServer();r.once("error",n=>{n.code==="EADDRINUSE"||n.code==="EACCES"?e(!0):e(!1)}),r.once("listening",()=>{r.close(()=>e(!1))}),r.listen(t,"127.0.0.1")})}async function dd(t,e,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await ud(t,e)).ok)return!0}catch(s){s instanceof Error?f.debug("SYSTEM",n,{},s):f.debug("SYSTEM",n,{error:String(s)})}await new Promise(s=>setTimeout(s,500))}return!1}function fn(t,e=3e4){return dd(t,"/api/health",e,"Service not ready yet, will retry")}function mn(t,e=3e4){return dd(t,"/api/readiness",e,"Worker not ready yet, will retry")}function yE(){try{let t=id.default.join(vr,"package.json");return JSON.parse((0,cd.readFileSync)(t,"utf-8")).version}catch(t){if(t instanceof Error){let e=t.code;if(e==="ENOENT"||e==="EBUSY")return f.debug("SYSTEM","Could not read plugin version (shutdown race)",{code:e}),"unknown";throw t}throw t}}async function SE(t){try{let e=await ud(t,"/api/version");return e.ok?JSON.parse(e.body).version:null}catch{return f.debug("SYSTEM","Could not fetch worker version",{}),null}}async function pd(t){let e=yE(),r=await SE(t);return!r||e==="unknown"?{matches:!0,pluginVersion:e,workerVersion:r}:{matches:e===r,pluginVersion:e,workerVersion:r}}var bo=require("path"),Ve=require("fs");var vE=6e4;function fd(){return(0,bo.join)(pi(),"spawn.lock")}function ko(){let t=fd(),e=JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()});for(let r=0;r<2;r++)try{return(0,Ve.mkdirSync)((0,bo.dirname)(t),{recursive:!0}),(0,Ve.writeFileSync)(t,e,{flag:"wx"}),!0}catch(n){if(n?.code!=="EEXIST")return!0;if(r>0)return!1;let s;try{s=(0,Ve.statSync)(t).mtimeMs}catch{continue}if(Date.now()-s<=vE)return!1;let i;try{i=(0,Ve.statSync)(t).mtimeMs}catch{continue}if(i!==s)return!1;try{(0,Ve.unlinkSync)(t)}catch{return!1}}return!1}function xo(){let t=fd();try{if(JSON.parse((0,Ve.readFileSync)(t,"utf-8")).pid!==process.pid)return;(0,Ve.unlinkSync)(t)}catch{}}function Mi(t,e,r){let n=process.env[t];if(n){let o=parseInt(n,10);if(Number.isFinite(o)&&o>=r.min&&o<=r.max)return o;f.warn("SYSTEM",`Invalid ${t}, using default`,{value:n,min:r.min,max:r.max})}return e}var Ro=Mi("CLAUDE_MEM_HEALTH_TIMEOUT_MS",vt(ue.HEALTH_CHECK),{min:500,max:3e5}),kC=Mi("CLAUDE_MEM_API_TIMEOUT_MS",vt(ue.API_REQUEST),{min:500,max:3e5}),_d=Mi("CLAUDE_MEM_HOOK_READINESS_TIMEOUT_MS",vt(ue.HOOK_READINESS_WAIT),{min:0,max:3e5}),EE={min:500,max:3e5};async function Ni(t,e={},r){try{return await fetch(t,{...e,signal:AbortSignal.timeout(r)})}catch(n){throw n instanceof DOMException&&n.name==="TimeoutError"?new Error(`Request timed out after ${r}ms`):n}}var $o=null,Po=null,To=null,Oo=null;function wE(){return br.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json")}function bE(t){if(!Number.isInteger(t)||t<=0)return!1;try{return process.kill(t,0),!0}catch(e){return e?.code==="EPERM"}}function kE(){try{let t=fe.workerPid();if(!(0,Fe.existsSync)(t))return null;let e=JSON.parse((0,Fe.readFileSync)(t,"utf-8"));return typeof e.pid!="number"||typeof e.port!="number"||!bE(e.pid)?null:e.port}catch{return null}}function Di(){return To!==null||(To=Bt.loadFromFile(wE())),To}function md(t,e){if(!t)return null;let r=parseInt(t,10);return Number.isFinite(r)&&r>=e.min&&r<=e.max?r:null}function xE(t,e,r){let n=process.env[t];if(n!==void 0){let i=md(n,r);return i!==null?i:(f.warn("SYSTEM",`Invalid ${t}, using default`,{value:n,min:r.min,max:r.max}),e)}let o=Di()[t],s=md(o,r);return s!==null?s:(f.warn("SYSTEM",`Invalid ${t} in settings.json, using default`,{value:o,min:r.min,max:r.max}),e)}function $E(){if($o!==null)return $o;let t=Di();return $o=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),$o}function It(){let t=kE();return t!==null?t:$E()}function PE(){return Po!==null||(Po=Di().CLAUDE_MEM_WORKER_HOST),Po}function TE(){return Oo!==null||(Oo=xE("CLAUDE_MEM_API_TIMEOUT_MS",vt(ue.API_REQUEST),EE)),Oo}function OE(t){return`http://${PE()}:${It()}${t}`}function Qt(t,e={}){let r=e.method??"GET",n=e.timeoutMs??TE(),o=OE(t),s={method:r};return e.headers&&(s.headers=e.headers),e.body&&(s.body=e.body),n>0?Ni(o,s,n):fetch(o,s)}async function zE(){return(await Qt("/api/health",{timeoutMs:Ro})).ok}async function hd(){return(await Qt("/api/readiness",{timeoutMs:Ro})).ok}function Li(){let t=[br.default.join(vr,"plugin","scripts","worker-service.cjs"),br.default.join(process.cwd(),"plugin","scripts","worker-service.cjs")];for(let e of t)if((0,Fe.existsSync)(e))return e;return null}async function RE(t){let e=t.backoffMs;for(let r=1;r<=t.attempts;r++){if(await Sd())return!0;r<t.attempts&&(await new Promise(n=>setTimeout(n,e)),e*=2)}return!1}async function Ii(t=_d){if(t<=0)try{return await hd()}catch{return!1}let e=Date.now();for(;Date.now()-e<t;){try{if(await hd())return!0}catch(n){f.debug("SYSTEM","Worker readiness check threw",{error:n instanceof Error?n.message:String(n)})}let r=t-(Date.now()-e);if(r<=0)break;await new Promise(n=>setTimeout(n,Math.min(250,r)))}return!1}async function yd(){try{let e=await(await Qt("/api/health",{timeoutMs:Ro})).json();return typeof e.version=="string"?e.version:null}catch{return null}}async function IE(t,e=_d){let r=Date.now();for(;Date.now()-r<e;){if(await yd()===t)return!0;let o=e-(Date.now()-r);if(o<=0)break;await new Promise(s=>setTimeout(s,Math.min(500,o)))}return!1}async function Ci(t){let e=await yd();e!==null&&e!==t&&f.warn("SYSTEM","Worker is ready but still reports a stale version; not recycling again in this hook invocation (one recycle per hook event)",{pluginVersion:t,workerVersion:e})}async function Sd(){let t;try{t=await zE()}catch(r){return f.debug("SYSTEM","Worker health check threw",{error:r instanceof Error?r.message:String(r)}),!1}if(!t)return!1;let e=pn({logAlive:!1});return e==="missing"||e==="alive"}async function CE(){let t=null;if(await Sd()){let{matches:s,pluginVersion:i,workerVersion:a}=await pd(It());if(i!=="unknown"&&(t=i),s)return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Worker is healthy but not ready; skipping hook API call"),!1);f.info("SYSTEM","Worker version mismatch \u2014 recycling stale worker",{pluginVersion:i,workerVersion:a});try{if(await Qt("/api/admin/restart",{method:"POST",timeoutMs:Ro}),await IE(i))return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Recycled worker appeared but did not become ready; skipping hook API call"),!1);f.warn("SYSTEM","No successor worker appeared after recycle; falling through to lazy-spawn",{pluginVersion:i,workerVersion:a})}catch(c){f.debug("SYSTEM","Worker restart request failed; falling through to lazy-spawn",{error:c instanceof Error?c.message:String(c)})}}let e=Ri(),r=Li();if(!e)return f.warn("SYSTEM","Cannot lazy-spawn worker: Node runtime not found on PATH"),!1;if(!r)return f.warn("SYSTEM","Cannot lazy-spawn worker: worker-service.cjs not found in plugin/scripts"),!1;let n=ko();try{if(n){f.info("SYSTEM","Worker not running \u2014 lazy-spawning",{runtimePath:e,scriptPath:r});try{yr(e,[r,"--daemon"],{detached:!0,stdio:["ignore","ignore","ignore"]}).unref()}catch(i){return i instanceof Error?f.error("SYSTEM","Lazy-spawn of worker failed",{runtimePath:e,scriptPath:r},i):f.error("SYSTEM","Lazy-spawn of worker failed (non-Error)",{runtimePath:e,scriptPath:r,error:String(i)}),!1}}else f.info("SYSTEM","Another launcher holds the spawn lock \u2014 skipping lazy-spawn and waiting for its worker");if(!await RE({attempts:6,backoffMs:500}))return f.warn("SYSTEM",n?"Worker port did not open after lazy-spawn within the cold-boot wait (~15s)":"Spawn-lock holder's worker port did not open within the cold-boot wait (~15s)"),!1}finally{n&&xo()}return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Worker lazy-spawned but did not become ready before hook readiness timeout"),!1)}var zo=null;async function AE(){return zo!==null||(zo=await CE()),zo}var ME=3;function vd(){return br.default.join(B,"state")}function Ed(){return br.default.join(vd(),"hook-failures.json")}function wd(){try{let t=(0,Fe.readFileSync)(Ed(),"utf-8"),e=JSON.parse(t);return{consecutiveFailures:typeof e.consecutiveFailures=="number"&&Number.isFinite(e.consecutiveFailures)?Math.max(0,Math.floor(e.consecutiveFailures)):0,lastFailureAt:typeof e.lastFailureAt=="number"&&Number.isFinite(e.lastFailureAt)?e.lastFailureAt:0}}catch{return{consecutiveFailures:0,lastFailureAt:0}}}function bd(t){let e=vd(),r=Ed(),n=`${r}.tmp`;try{(0,Fe.existsSync)(e)||(0,Fe.mkdirSync)(e,{recursive:!0}),(0,Fe.writeFileSync)(n,JSON.stringify(t),"utf-8"),(0,Fe.renameSync)(n,r)}catch(o){f.debug("SYSTEM","Failed to persist hook-failure counter",{error:o instanceof Error?o.message:String(o)})}}function NE(){try{let e=rt().CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD,r=parseInt(e,10);if(Number.isFinite(r)&&r>=1)return r}catch{}return ME}var DE=["context","session-init","observation","summarize","file-context"],LE=null;function kd(t){LE=DE.includes(t)?t:null}async function ji(){let e={consecutiveFailures:wd().consecutiveFailures+1,lastFailureAt:Date.now()};bd(e);let r=NE();return e.consecutiveFailures>=r&&un(`keepmind worker unreachable for ${e.consecutiveFailures} consecutive hooks \u2014 continuing without memory capture. Run \`keepmind doctor\` to diagnose.`),e.consecutiveFailures}function gd(){wd().consecutiveFailures!==0&&bd({consecutiveFailures:0,lastFailureAt:0})}var Ai=Symbol.for("claude-mem/worker-fallback");function me(t){return typeof t=="object"&&t!==null&&t[Ai]===!0}async function le(t,e,r,n={}){if(!await AE())return await ji(),{continue:!0,reason:"worker_unreachable",[Ai]:!0};let s={method:e};r!==void 0&&(s.headers={"Content-Type":"application/json"},s.body=JSON.stringify(r)),n.timeoutMs!==void 0&&(s.timeoutMs=n.timeoutMs);let i=await Qt(t,s);if(!i.ok){let c=await i.text().catch(()=>"");if(gd(),i.status===429||i.status>=500)return f.warn("SYSTEM",`Worker API ${e} ${t} returned ${i.status}; skipping hook API call`,{body:c.substring(0,200)}),{continue:!0,reason:`worker_api_${i.status}`,[Ai]:!0};let u=c;try{u=JSON.parse(c)}catch{}return u}gd();let a=await i.text();if(a.length!==0)try{return JSON.parse(a)}catch{return a}}var xd=require("fs");function jE(t){let e=ed();return e&&typeof e.port=="number"&&nd(e.pid)?e.port:t}async function UE(t,e){let r=Date.now()+e;for(;Date.now()<r;){let n=jE(t);if(await fn(n,800))return n;await new Promise(o=>setTimeout(o,300))}return null}async function $d(t,e){if(!e)return f.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),"dead";if(!(0,xd.existsSync)(e))return f.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:e}),"dead";if(await fn(t,1e3)){let a=await mn(t,Rt(ue.READINESS_WAIT));return a||f.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),f.info("SYSTEM","Worker already running and healthy (fast path)"),a?"ready":"warming"}if(sd()==="alive"){if(f.info("SYSTEM","Worker PID file points to a live process, waiting for it to become healthy"),await fn(t,Rt(ue.POST_SPAWN_WAIT))){let c=await mn(t,Rt(ue.READINESS_WAIT));return f.info("SYSTEM","Worker became healthy while waiting on live PID"),c?"ready":"warming"}f.warn("SYSTEM","PID file marked live but worker never became healthy within the cold-boot window \u2014 treating it as a stale/reused PID and re-spawning"),td()}if(await ld(t)){if(f.info("SYSTEM","Port in use, waiting for worker to become healthy"),await fn(t,Rt(ue.PORT_IN_USE_WAIT))){let c=await mn(t,Rt(ue.READINESS_WAIT));return f.info("SYSTEM","Worker is now healthy"),c?"ready":"warming"}f.warn("SYSTEM","Configured port in use but no healthy worker \u2014 spawning anyway (worker will pick a free ephemeral port)")}let o=ko(),s=t;try{if(o){if(f.info("SYSTEM","Starting worker daemon",{workerScriptPath:e}),rd(e,t)===void 0)return f.error("SYSTEM","Failed to spawn worker daemon"),"dead"}else f.info("SYSTEM","Another launcher holds the spawn lock \u2014 skipping duplicate spawn and waiting for its worker");let a=await UE(t,Rt(ue.POST_SPAWN_WAIT));if(a===null)return f.warn("SYSTEM",o?"Worker spawned but health endpoint not responding within window \u2014 likely still starting in background":"Spawn-lock holder's worker not healthy within window \u2014 likely still starting in background"),"warming";s=a}finally{o&&xo()}let i=await mn(s,Rt(ue.READINESS_WAIT));return i||f.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),od(),f.info("SYSTEM",o?"Worker started successfully":"Worker is up (started by another launcher)"),i?"ready":"warming"}function FE(){try{let t=process.stdin;return t.isTTY?!1:(t.readable,!0)}catch(t){return f.debug("HOOK","stdin not available (expected for some runtimes)",{error:t instanceof Error?t.message:String(t)}),!1}}function ZE(t){let e=t.trim();if(!e)return{success:!1};try{return{success:!0,value:JSON.parse(e)}}catch(r){return f.debug("HOOK","JSON parse attempt incomplete",{error:r instanceof Error?r.message:String(r)}),{success:!1}}}var Pd=3e4;async function Td(){if(FE())return new Promise((t,e)=>{let r="",n=!1,o=()=>{try{process.stdin.removeAllListeners("data"),process.stdin.removeAllListeners("end"),process.stdin.removeAllListeners("error")}catch{}},s=p=>{n||(n=!0,clearTimeout(c),o(),t(p))},i=p=>{n||(n=!0,clearTimeout(c),o(),e(p))},a=()=>{let p=ZE(r);return p.success?(s(p.value),!0):!1},c=setTimeout(()=>{n||a()||(r.trim()?i(new Error(`Incomplete JSON after ${Pd}ms: ${r.slice(0,100)}...`)):s(void 0))},Pd),u=p=>{r+=p,a()},l=()=>{n||a()||(r.trim()?i(new Error(`Malformed JSON at stdin EOF: ${r.slice(0,100)}...`)):s(void 0))},d=()=>{n||s(void 0)};try{process.stdin.on("data",u),process.stdin.on("end",l),process.stdin.on("error",d)}catch(p){f.debug("HOOK","Failed to attach stdin listeners",{error:p instanceof Error?p.message:String(p)}),n=!0,clearTimeout(c),o(),t(void 0)}})}var he=class extends Error{constructor(r){super(`adapter rejected input: ${r}`);this.reason=r;this.name="AdapterRejectedInput"}reason};function Ke(t){return typeof t=="string"&&t.length>0}var qE=128,Od=t=>typeof t=="string"&&t.length>0&&t.length<=qE?t:void 0,zd={normalizeInput(t){let e=t??{},r=e.cwd??process.cwd();if(!Ke(r))throw new he("invalid_cwd");return{sessionId:e.session_id??e.id??e.sessionId,cwd:r,prompt:e.prompt,toolName:e.tool_name,toolInput:e.tool_input,toolResponse:e.tool_response,transcriptPath:e.transcript_path,agentId:Od(e.agent_id),agentType:Od(e.agent_type)}},formatOutput(t){let e=t??{};if(e.hookSpecificOutput){let n={hookSpecificOutput:t.hookSpecificOutput};return e.systemMessage&&(n.systemMessage=e.systemMessage),n}let r={};return e.systemMessage&&(r.systemMessage=e.systemMessage),r}};var Co=require("fs"),Io=we(require("path"),1),qd=we(Fd(),1),ew=10,tw=new Set(["cat","head","tail","less","more","bat","view","nl","tac"]),rw={head:new Set(["-n","-c","--lines","--bytes"]),tail:new Set(["-n","-c","--lines","--bytes"])},nw=new Set;function ow(t){return typeof t=="object"&&t!==null&&"op"in t}function sw(t){let e=[],r=[];for(let n of t){if(ow(n)){r.length>0&&e.push(r),r=[];continue}typeof n=="string"&&r.push(n)}return r.length>0&&e.push(r),e}function iw(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.filter(r=>typeof r=="string");return e.length>0?e.join(" "):null}return null}function Zd(t){return t.startsWith("-")||t.startsWith("+")}function aw(t){return rw[t]??nw}function cw(t,e){let r=aw(e);if(r.has(t))return!0;let n=t.indexOf("=");return n>0&&r.has(t.slice(0,n))}function Hd(t,e){let r=Io.default.isAbsolute(t)?t:Io.default.resolve(e,t);try{return(0,Co.existsSync)(r)?(0,Co.statSync)(r).isFile():!1}catch{return!1}}function Wd(t){let e=new Set,r=[];for(let n of t)if(!e.has(n)&&(e.add(n),r.push(n),r.length>=ew))break;return r}function uw(t,e){let r=iw(t?.command);if(!r)return[];let n=(0,qd.parse)(r),o=[];for(let s of sw(n)){let i=s.findIndex(u=>u&&!Zd(u));if(i===-1)continue;let a=Io.default.basename(s[i]);if(!tw.has(a))continue;let c=!1;for(let u of s.slice(i+1)){if(c){c=!1;continue}if(Zd(u)){c=cw(u,a)&&!u.includes("=");continue}Hd(u,e)&&o.push(u)}}return Wd(o)}function lw(t,e,r){if(!/^mcp__.+__(read|view|cat)(?:_file|_files)?$/.test(t))return[];let n=e??{},o=[];if(typeof n.path=="string"&&o.push(n.path),Array.isArray(n.paths))for(let s of n.paths)typeof s=="string"&&o.push(s);return Wd(o.filter(s=>Hd(s,r)))}function Vd(t,e,r){return t==="Bash"?uw(e,r):t.startsWith("mcp__")?lw(t,e,r):[]}var dw=new Set(["PreToolUse","PermissionRequest","PostToolUse","SessionStart","UserPromptSubmit","Stop"]);function Kd(t){return typeof t=="string"&&dw.has(t)?t:void 0}function Ct(t){return typeof t=="string"&&t.length>0?t:void 0}function pw(t){if(typeof t=="boolean")return t;if(t==="true")return!0;if(t==="false")return!1}function fw(t){return t&&typeof t=="object"&&!Array.isArray(t)?{...t}:t}function mw(t){let e={};return t.continue!==void 0&&(e.continue=t.continue),t.systemMessage&&(e.systemMessage=t.systemMessage),t.decision==="block"&&(e.decision="block"),t.reason&&(e.reason=t.reason),e}function hw(t){return Kd(t.hookSpecificOutput?.hookEventName)}var Jd={normalizeInput(t){let e=t??{},r=typeof e.cwd=="string"?e.cwd:process.cwd();if(!Ke(r))throw new he("invalid_cwd");let n=Kd(e.hook_event_name),o=Ct(e.tool_name),s=fw(e.tool_input);if(n==="PreToolUse"&&o){let u=Vd(o,s,r);u.length>0&&s&&typeof s=="object"&&!Array.isArray(s)&&(s={...s,filePaths:u})}let i=e.source,a=i==="startup"||i==="resume"||i==="clear"?i:void 0,c=Ct(e.session_id);if(!c)throw new he("missing_session_id");return{sessionId:c,cwd:r,prompt:Ct(e.prompt),toolName:o,toolInput:s,toolResponse:e.tool_response,transcriptPath:Ct(e.transcript_path),lastAssistantMessage:Ct(e.last_assistant_message),turnId:Ct(e.turn_id),stopHookActive:pw(e.stop_hook_active),permissionMode:Ct(e.permission_mode),model:Ct(e.model),sessionSource:a}},formatOutput(t){let e=t??{},r=mw(e),n=e.hookSpecificOutput,o=hw(e);if(!n||!o||o==="Stop")return r;let s={hookEventName:o};return n.additionalContext&&(s.additionalContext=n.additionalContext),o==="PreToolUse"&&(n.permissionDecision==="deny"&&(s.permissionDecision="deny",n.permissionDecisionReason&&(s.permissionDecisionReason=n.permissionDecisionReason)),n.updatedInput&&(s.updatedInput=n.updatedInput)),r.hookSpecificOutput=s,r}};var Gd=require("fs"),Bd=require("os"),Yd=require("path");var gw=/^[A-Za-z0-9_-]+$/;function _w(t,e){if(!t||!e||!gw.test(e))return;let r=t.replace(/^\//,"").replace(/[/.]/g,"-"),n=(0,Yd.join)((0,Bd.homedir)(),".cursor","projects",r,"agent-transcripts",e,`${e}.jsonl`);return(0,Gd.existsSync)(n)?n:void 0}var Xd={normalizeInput(t){let e=t??{},r=!!e.command&&!e.tool_name,n=e.workspace_roots?.[0]??e.cwd??process.cwd();if(!Ke(n))throw new he("invalid_cwd");let o=e.conversation_id||e.generation_id||e.id;return{sessionId:o,cwd:n,prompt:e.prompt??e.query??e.input??e.message,toolName:r?"Bash":e.tool_name,toolInput:r?{command:e.command}:e.tool_input,toolResponse:r?{output:e.output}:e.result_json,transcriptPath:_w(n,o),filePath:e.file_path,edits:e.edits}},formatOutput(t){return{continue:t.continue??!0}}};var Qd={normalizeInput(t){let e=t??{},r=e.cwd??process.env.GEMINI_CWD??process.env.GEMINI_PROJECT_DIR??process.env.CLAUDE_PROJECT_DIR??process.cwd();if(!Ke(r))throw new he("invalid_cwd");let n=e.session_id??process.env.GEMINI_SESSION_ID??void 0,o=e.hook_event_name,s=e.tool_name,i=e.tool_input,a=e.tool_response;return o==="AfterAgent"&&e.prompt_response&&(s=s??"GeminiProvider",i=i??{prompt:e.prompt},a=a??{response:e.prompt_response}),o==="BeforeTool"&&s&&!a&&(a={_preExecution:!0}),o==="Notification"&&(s=s??"GeminiNotification",i=i??{notification_type:e.notification_type,message:e.message},a=a??{details:e.details}),{sessionId:n,cwd:r,prompt:e.prompt,toolName:s,toolInput:i,toolResponse:a,transcriptPath:e.transcript_path}},formatOutput(t){let e={};if(e.continue=t.continue??!0,t.suppressOutput!==void 0&&(e.suppressOutput=t.suppressOutput),t.systemMessage){let r=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;e.systemMessage=t.systemMessage.replace(r,"")}return t.hookSpecificOutput&&(e.hookSpecificOutput={additionalContext:t.hookSpecificOutput.additionalContext}),e}};var qi={normalizeInput(t){let e=t??{},r=e.cwd??process.cwd();if(!Ke(r))throw new he("invalid_cwd");return{sessionId:e.sessionId??e.session_id??"unknown",cwd:r,prompt:e.prompt,toolName:e.toolName??e.tool_name,toolInput:e.toolInput??e.tool_input,toolResponse:e.toolResponse??e.tool_response,transcriptPath:e.transcriptPath??e.transcript_path,filePath:e.filePath??e.file_path,edits:e.edits}},formatOutput(t){return t}};var ep={normalizeInput(t){let e=t??{},r=e.tool_info??{},n=e.agent_action_name??"",o=r.cwd??process.cwd();if(!Ke(o))throw new he("invalid_cwd");let s={sessionId:e.trajectory_id??e.execution_id,cwd:o,platform:"windsurf"};switch(n){case"pre_user_prompt":return{...s,prompt:r.user_prompt};case"post_write_code":return{...s,toolName:"Write",filePath:r.file_path,edits:r.edits,toolInput:{file_path:r.file_path,edits:r.edits}};case"post_run_command":return{...s,cwd:r.cwd??s.cwd,toolName:"Bash",toolInput:{command:r.command_line}};case"post_mcp_tool_use":return{...s,toolName:r.mcp_tool_name??"mcp_tool",toolInput:r.mcp_tool_arguments,toolResponse:r.mcp_result};case"post_cascade_response":return{...s,toolName:"cascade_response",toolResponse:r.response};default:return s}},formatOutput(t){return{continue:t.continue??!0}}};function tp(t){switch(t){case"claude-code":return zd;case"codex":return Jd;case"cursor":return Xd;case"gemini":case"gemini-cli":return Qd;case"windsurf":return ep;case"raw":return qi;default:return qi}}var np=require("os"),op=we(require("path"),1),sp=require("child_process");var Mo=require("fs"),Ao=we(require("path"),1);var hn={isWorktree:!1,worktreeName:null,parentRepoPath:null,parentProjectName:null};function rp(t){let e=Ao.default.join(t,".git"),r;try{r=(0,Mo.statSync)(e)}catch(l){return l instanceof Error&&l.code!=="ENOENT"&&f.warn("GIT","Unexpected error checking .git",{error:l instanceof Error?l.message:String(l)}),hn}if(!r.isFile())return hn;let n;try{n=(0,Mo.readFileSync)(e,"utf-8").trim()}catch(l){return f.warn("GIT","Failed to read .git file",{error:l instanceof Error?l.message:String(l)}),hn}let o=n.match(/^gitdir:\s*(.+)$/);if(!o)return hn;let i=o[1].match(/^(.+)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)$/);if(!i)return hn;let a=i[1],c=Ao.default.basename(t),u=Ao.default.basename(a);return{isWorktree:!0,worktreeName:c,parentRepoPath:a,parentProjectName:u}}function ip(t){return t==="~"||t.startsWith("~/")?t.replace(/^~/,(0,np.homedir)()):t}function yw(t){try{return(0,sp.execFileSync)("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Hi(t){if(!t||t.trim()==="")return f.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:t}),"unknown-project";let e=ip(t),n=yw(e)??e,o=op.default.basename(n);if(o===""){if(process.platform==="win32"){let i=t.match(/^([A-Z]):\\/i);if(i){let c=`drive-${i[1].toUpperCase()}`;return f.info("PROJECT_NAME","Drive root detected",{cwd:t,projectName:c}),c}}return f.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:t}),"unknown-project"}return o}function kr(t){let e=Hi(t);if(!t)return{primary:e,parent:null,isWorktree:!1,allProjects:[e]};let r=ip(t),n=rp(r);if(n.isWorktree&&n.parentProjectName){let o=`${n.parentProjectName}/${e}`;return{primary:o,parent:n.parentProjectName,isWorktree:!0,allProjects:[n.parentProjectName,o]}}return{primary:e,parent:null,isWorktree:!1,allProjects:[e]}}var ap=require("child_process"),cp=require("util"),tr=require("fs");var up=require("path");var pA=(0,cp.promisify)(ap.execFile);function lp(){try{let t=(0,up.join)(fe.dataDir(),"oauth-stale.marker");return(0,tr.existsSync)(t)?(0,tr.readFileSync)(t,"utf-8"):void 0}catch{return}}var dp="claude";function Sw(t){return t.trim().toLowerCase().replace(/\s+/g,"-")}function Ce(t){if(!t)return dp;let e=Sw(t);return e?e==="transcript"||e.includes("codex")?"codex":e.includes("cursor")?"cursor":e.includes("claude")?"claude":e:dp}var pp;function S(t,e,r){function n(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(t))return;a._zod.traits.add(t),e(a,c);let u=i.prototype,l=Object.keys(u);for(let d=0;d<l.length;d++){let p=l[d];p in a||(a[p]=u[p].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:t});function i(a){var c;let u=r?.Parent?new s:this;n(u,a),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(t)}),Object.defineProperty(i,"name",{value:t}),i}var mt=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},xr=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(pp=globalThis).__zod_globalConfig??(pp.__zod_globalConfig={});var $r=globalThis.__zod_globalConfig;function Ze(t){return t&&Object.assign($r,t),$r}var F={};Rl(F,{BIGINT_FORMAT_RANGES:()=>gp,Class:()=>Vi,NUMBER_FORMAT_RANGES:()=>Xi,aborted:()=>Nt,allowsEval:()=>Gi,assert:()=>kw,assertEqual:()=>vw,assertIs:()=>ww,assertNever:()=>bw,assertNotEqual:()=>Ew,assignProp:()=>At,base64ToUint8Array:()=>yp,base64urlToUint8Array:()=>Fw,cached:()=>Tr,captureStackTrace:()=>Lo,cleanEnum:()=>Uw,cleanRegex:()=>Sn,clone:()=>nt,cloneDef:()=>$w,createTransparentProxy:()=>Iw,defineLazy:()=>V,esc:()=>Do,escapeRegex:()=>bt,explicitlyAborted:()=>Qi,extend:()=>Mw,finalizeIssue:()=>Je,floatSafeRemainder:()=>Ki,getElementAtPath:()=>Pw,getEnumValues:()=>_n,getLengthableOrigin:()=>vn,getParsedType:()=>Rw,getSizableOrigin:()=>_p,hexToUint8Array:()=>qw,isObject:()=>rr,isPlainObject:()=>Mt,issue:()=>Or,joinValues:()=>No,jsonStringifyReplacer:()=>Pr,merge:()=>Dw,mergeDefs:()=>wt,normalizeParams:()=>z,nullish:()=>yn,numKeys:()=>zw,objectClone:()=>xw,omit:()=>Aw,optionalKeys:()=>Yi,parsedType:()=>ea,partial:()=>Lw,pick:()=>Cw,prefixIssues:()=>kt,primitiveTypes:()=>hp,promiseAllObject:()=>Tw,propertyKeyTypes:()=>Bi,randomString:()=>Ow,required:()=>jw,safeExtend:()=>Nw,shallowClone:()=>mp,slugify:()=>Ji,stringifyPrimitive:()=>jo,uint8ArrayToBase64:()=>Sp,uint8ArrayToBase64url:()=>Zw,uint8ArrayToHex:()=>Hw,unwrapMessage:()=>gn});function vw(t){return t}function Ew(t){return t}function ww(t){}function bw(t){throw new Error("Unexpected value in exhaustive check")}function kw(t){}function _n(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,o])=>e.indexOf(+n)===-1).map(([n,o])=>o)}function No(t,e="|"){return t.map(r=>jo(r)).join(e)}function Pr(t,e){return typeof e=="bigint"?e.toString():e}function Tr(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function yn(t){return t==null}function Sn(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function Ki(t,e){let r=t/e,n=Math.round(r),o=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var fp=Symbol("evaluating");function V(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==fp)return n===void 0&&(n=fp,n=r()),n},set(o){Object.defineProperty(t,e,{value:o})},configurable:!0})}function xw(t){return Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t))}function At(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function wt(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}function $w(t){return wt(t._zod.def)}function Pw(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function Tw(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<e.length;s++)o[e[s]]=n[s];return o})}function Ow(t=10){let e="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<t;n++)r+=e[Math.floor(Math.random()*e.length)];return r}function Do(t){return JSON.stringify(t)}function Ji(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Lo="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function rr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Gi=Tr(()=>{if($r.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function Mt(t){if(rr(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(rr(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function mp(t){return Mt(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}function zw(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var Rw=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},Bi=new Set(["string","number","symbol"]),hp=new Set(["string","number","bigint","boolean","symbol","undefined"]);function bt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function nt(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function z(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Iw(t){let e;return new Proxy({},{get(r,n,o){return e??(e=t()),Reflect.get(e,n,o)},set(r,n,o,s){return e??(e=t()),Reflect.set(e,n,o,s)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,o){return e??(e=t()),Reflect.defineProperty(e,n,o)}})}function jo(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function Yi(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var Xi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},gp={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Cw(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=wt(t._zod.def,{get shape(){let i={};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(i[a]=r.shape[a])}return At(this,"shape",i),i},checks:[]});return nt(t,s)}function Aw(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=wt(t._zod.def,{get shape(){let i={...t._zod.def.shape};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete i[a]}return At(this,"shape",i),i},checks:[]});return nt(t,s)}function Mw(t,e){if(!Mt(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let s=t._zod.def.shape;for(let i in e)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=wt(t._zod.def,{get shape(){let s={...t._zod.def.shape,...e};return At(this,"shape",s),s}});return nt(t,o)}function Nw(t,e){if(!Mt(e))throw new Error("Invalid input to safeExtend: expected a plain object");let r=wt(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e};return At(this,"shape",n),n}});return nt(t,r)}function Dw(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=wt(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e._zod.def.shape};return At(this,"shape",n),n},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return nt(t,r)}function Lw(t,e,r){let o=e._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=wt(e._zod.def,{get shape(){let a=e._zod.def.shape,c={...a};if(r)for(let u in r){if(!(u in a))throw new Error(`Unrecognized key: "${u}"`);r[u]&&(c[u]=t?new t({type:"optional",innerType:a[u]}):a[u])}else for(let u in a)c[u]=t?new t({type:"optional",innerType:a[u]}):a[u];return At(this,"shape",c),c},checks:[]});return nt(e,i)}function jw(t,e,r){let n=wt(e._zod.def,{get shape(){let o=e._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new t({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new t({type:"nonoptional",innerType:o[i]});return At(this,"shape",s),s}});return nt(e,n)}function Nt(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function Qi(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue===!1)return!0;return!1}function kt(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function gn(t){return typeof t=="string"?t:t?.message}function Je(t,e,r){let n=t.message?t.message:gn(t.inst?._zod.def?.error?.(t))??gn(e?.error?.(t))??gn(r.customError?.(t))??gn(r.localeError?.(t))??"Invalid input",{inst:o,continue:s,input:i,...a}=t;return a.path??(a.path=[]),a.message=n,e?.reportInput&&(a.input=i),a}function _p(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function vn(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function ea(t){let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"nan":"number";case"object":{if(t===null)return"null";if(Array.isArray(t))return"array";let r=t;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return e}function Or(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function Uw(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}function yp(t){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function Sp(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function Fw(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-e.length%4)%4);return yp(e+r)}function Zw(t){return Sp(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function qw(t){let e=t.replace(/^0x/,"");if(e.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)r[n/2]=Number.parseInt(e.slice(n,n+2),16);return r}function Hw(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var Vi=class{constructor(...e){}};var vp=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Pr,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},Uo=S("$ZodError",vp),ta=S("$ZodError",vp,{Parent:Error});function Ep(t,e=r=>r.message){let r={},n=[];for(let o of t.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(e(o))):n.push(e(o));return{formErrors:n,fieldErrors:r}}function wp(t,e=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>n({issues:a},[...s,...i.path]));else if(i.code==="invalid_key")n({issues:i.issues},[...s,...i.path]);else if(i.code==="invalid_element")n({issues:i.issues},[...s,...i.path]);else{let a=[...s,...i.path];if(a.length===0)r._errors.push(e(i));else{let c=r,u=0;for(;u<a.length;){let l=a[u];u===a.length-1?(c[l]=c[l]||{_errors:[]},c[l]._errors.push(e(i))):c[l]=c[l]||{_errors:[]},c=c[l],u++}}}};return n(t),r}var Fo=t=>(e,r,n,o)=>{let s=n?{...n,async:!1}:{async:!1},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new mt;if(i.issues.length){let a=new(o?.Err??t)(i.issues.map(c=>Je(c,s,Ze())));throw Lo(a,o?.callee),a}return i.value};var Zo=t=>async(e,r,n,o)=>{let s=n?{...n,async:!0}:{async:!0},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??t)(i.issues.map(c=>Je(c,s,Ze())));throw Lo(a,o?.callee),a}return i.value};var En=t=>(e,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new mt;return s.issues.length?{success:!1,error:new(t??Uo)(s.issues.map(i=>Je(i,o,Ze())))}:{success:!0,data:s.value}},wn=En(ta),bn=t=>async(e,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=e._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new t(s.issues.map(i=>Je(i,o,Ze())))}:{success:!0,data:s.value}},qo=bn(ta),bp=t=>(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Fo(t)(e,r,o)};var kp=t=>(e,r,n)=>Fo(t)(e,r,n);var xp=t=>async(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Zo(t)(e,r,o)};var $p=t=>async(e,r,n)=>Zo(t)(e,r,n);var Pp=t=>(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return En(t)(e,r,o)};var Tp=t=>(e,r,n)=>En(t)(e,r,n);var Op=t=>async(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return bn(t)(e,r,o)};var zp=t=>async(e,r,n)=>bn(t)(e,r,n);var Rp=/^[cC][0-9a-z]{6,}$/,Ip=/^[0-9a-z]+$/,Cp=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ap=/^[0-9a-vA-V]{20}$/,Mp=/^[A-Za-z0-9]{27}$/,Np=/^[a-zA-Z0-9_-]{21}$/,Dp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Lp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ra=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;var jp=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Vw="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Up(){return new RegExp(Vw,"u")}var Fp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var qp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Hp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,na=/^[A-Za-z0-9_-]*$/;var Vp=/^https?$/,Kp=/^\+[1-9]\d{6,14}$/,Jp="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Gp=new RegExp(`^${Jp}$`);function Bp(t){let e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Yp(t){return new RegExp(`^${Bp(t)}$`)}function Xp(t){let e=Bp({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${e}(?:${r.join("|")})`;return new RegExp(`^${Jp}T(?:${n})$`)}var Qp=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)};var ef=/^-?\d+$/,oa=/^-?\d+(?:\.\d+)?$/,tf=/^(?:true|false)$/i,rf=/^null$/i;var nf=/^[^A-Z]*$/,of=/^[^a-z]*$/;var ge=S("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),sf={number:"number",bigint:"bigint",object:"date"},sa=S("$ZodCheckLessThan",(t,e)=>{ge.init(t,e);let r=sf[typeof e.value];t._zod.onattach.push(n=>{let o=n._zod.bag,s=(e.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<s&&(e.inclusive?o.maximum=e.value:o.exclusiveMaximum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value<=e.value:n.value<e.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),ia=S("$ZodCheckGreaterThan",(t,e)=>{ge.init(t,e);let r=sf[typeof e.value];t._zod.onattach.push(n=>{let o=n._zod.bag,s=(e.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>s&&(e.inclusive?o.minimum=e.value:o.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),af=S("$ZodCheckMultipleOf",(t,e)=>{ge.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):Ki(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),cf=S("$ZodCheckNumberFormat",(t,e)=>{ge.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[o,s]=Xi[e.format];t._zod.onattach.push(i=>{let a=i._zod.bag;a.format=e.format,a.minimum=o,a.maximum=s,r&&(a.pattern=ef)}),t._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:a,inst:t});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:t,continue:!e.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:t,continue:!e.abort})}});var uf=S("$ZodCheckMaxLength",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<o&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{let o=n.value;if(o.length<=e.maximum)return;let i=vn(o);n.issues.push({origin:i,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),lf=S("$ZodCheckMinLength",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>o&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{let o=n.value;if(o.length>=e.minimum)return;let i=vn(o);n.issues.push({origin:i,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),df=S("$ZodCheckLengthEquals",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=e.length,o.maximum=e.length,o.length=e.length}),t._zod.check=n=>{let o=n.value,s=o.length;if(s===e.length)return;let i=vn(o),a=s>e.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),kn=S("$ZodCheckStringFormat",(t,e)=>{var r,n;ge.init(t,e),t._zod.onattach.push(o=>{let s=o._zod.bag;s.format=e.format,e.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),pf=S("$ZodCheckRegex",(t,e)=>{kn.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),ff=S("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=nf),kn.init(t,e)}),mf=S("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=of),kn.init(t,e)}),hf=S("$ZodCheckIncludes",(t,e)=>{ge.init(t,e);let r=bt(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),t._zod.check=o=>{o.value.includes(e.includes,e.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:o.value,inst:t,continue:!e.abort})}}),gf=S("$ZodCheckStartsWith",(t,e)=>{ge.init(t,e);let r=new RegExp(`^${bt(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),_f=S("$ZodCheckEndsWith",(t,e)=>{ge.init(t,e);let r=new RegExp(`.*${bt(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}});var yf=S("$ZodCheckOverwrite",(t,e)=>{ge.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}});var Wo=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
23
+ `,"utf-8"),a;try{a=(0,W.statSync)(r).mode&511}catch{}let c;try{c=a!==void 0?(0,W.openSync)(s,"w",a):(0,W.openSync)(s,"w");let u=0;for(;u<i.length;){let l=(0,W.writeSync)(c,i,u,i.length-u);if(l===0)throw new Error(`writeSync stalled at ${u}/${i.length} bytes`);u+=l}if((0,W.fsyncSync)(c),(0,W.closeSync)(c),c=void 0,(0,W.renameSync)(s,r),!Yv){let l;try{l=(0,W.openSync)(n,"r"),(0,W.fsyncSync)(l)}catch{}finally{if(l!==void 0)try{(0,W.closeSync)(l)}catch{}}}}catch(u){if(c!==void 0)try{(0,W.closeSync)(c)}catch{}try{(0,W.unlinkSync)(s)}catch{}throw u}}var Bt=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",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_API_TIMEOUT_MS:String(vt(ue.API_REQUEST)),CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",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_BASE_URL:"",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,dn.join)((0,Ei.homedir)(),".keepmind"),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:"5",CLAUDE_MEM_OBSERVATION_BATCH_MAX:"3",CLAUDE_MEM_MAX_CONTEXT_MESSAGES:"40",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"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,dn.join)((0,Ei.homedir)(),".keepmind","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",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_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static envOverride(e){let r=e.replace(/^CLAUDE_MEM_/,"KEEPMIND_");return process.env[r]??process.env[e]}static get(e){return this.envOverride(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)){let o=this.envOverride(n);o!==void 0&&(r[n]=o)}return r}static loadFromFile(e,r=!0){try{if(!(0,dt.existsSync)(e)){let a=this.getAllDefaults();try{let c=(0,dn.dirname)(e);(0,dt.existsSync)(c)||(0,dt.mkdirSync)(c,{recursive:!0}),So(e,a),console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(c){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,c instanceof Error?c.message:String(c))}return r?this.applyEnvOverrides(a):a}let n=(0,dt.readFileSync)(e,"utf-8"),o=JSON.parse(n.replace(/^\uFEFF/,"")),s=o;if(o.env&&typeof o.env=="object"){s=o.env;try{So(e,s),console.warn("[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))s[a]!==void 0&&(i[a]=s[a]);return r?this.applyEnvOverrides(i):i}catch(n){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n));let o=this.getAllDefaults();try{if((0,dt.existsSync)(e)){let s=`${e}.corrupt-${Date.now()}`;(0,dt.renameSync)(e,s),console.warn("[SETTINGS] Backed up corrupt settings file to:",s)}So(e,o),console.warn("[SETTINGS] Recovered settings file with defaults:",e)}catch(s){console.warn("[SETTINGS] Failed to recover corrupt settings file:",e,s instanceof Error?s.message:String(s))}return r?this.applyEnvOverrides(o):o}}};var vo=null;function rt(){return vo!==null||(vo=Bt.loadFromFile(Al)),vo}var Xt=require("fs");var $i=require("child_process");var pt=require("fs"),ki=we(require("path"),1);var Qv=["CLAUDECODE_","CLAUDE_CODE_"],eE=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy"]),tE=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS"]);function Yt(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(tE.has(r)){e[r]=n;continue}eE.has(r)||Qv.some(o=>r.startsWith(o))||(e[r]=n)}return e}var rE=5e3,nE=1e3,oE=fe.supervisorRegistry();function Et(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:(f.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return f.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}async function Eo(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.every(n=>!Et(n.pid)))return;await new Promise(n=>setTimeout(n,100))}}var sE=5e3,Ul=new Map;function iE(t){let e=Ul.get(t);if(e&&Date.now()-e.capturedAtMs<sE)return e.token;let r=null;try{let n=(0,$i.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...Yt(process.env),LC_ALL:"C",LANG:"C"}});if(n.status===0){let o=n.stdout.trim();r=o.length>0?o:null}}catch(n){f.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:n instanceof Error?n.message:String(n)}),r=null}return Ul.set(t,{token:r,capturedAtMs:Date.now()}),r}function Fl(t){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux")try{let e=(0,pt.readFileSync)(`/proc/${t}/stat`,"utf-8"),r=e.lastIndexOf(") ");if(r<0)return null;let o=e.slice(r+2).split(" ")[19];return o&&/^\d+$/.test(o)?o:null}catch(e){return f.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:e instanceof Error?e.message:String(e)}),null}if(process.platform==="win32")return iE(t);try{let e=(0,$i.spawnSync)("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...Yt(process.env),LC_ALL:"C",LANG:"C"}});if(e.status!==0)return null;let r=e.stdout.trim();return r.length>0?r:null}catch(e){return f.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:e instanceof Error?e.message:String(e)}),null}}function Pi(t){if(!t||!Et(t.pid))return!1;if(!t.startToken)return!0;let e=Fl(t.pid);if(e===null)return!0;let r=e===t.startToken;return r||f.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:t.pid,stored:t.startToken,current:e}),r}var xi=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=oE){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,pt.mkdirSync)(ki.default.dirname(this.registryPath),{recursive:!0}),!(0,pt.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,pt.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[o,s]of Object.entries(n))this.entries.set(o,s)}catch(r){r instanceof Error?f.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):f.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&f.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();let r=this.entries.get(e);this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist(),r?.type==="sdk"&&bi()}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,r=0;for(let[n,o]of this.entries)Et(o.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),e+=1,o.type==="sdk"&&(r+=1));e>0&&this.persist();for(let n=0;n<r;n+=1)bi();return 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;f.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(i=>i.pid)});let o=r.filter(i=>Et(i.pid));for(let i of o)try{typeof i.pgid=="number"&&process.platform!=="win32"?process.kill(-i.pgid,"SIGTERM"):process.kill(i.pid,"SIGTERM")}catch(a){a instanceof Error?a.code!=="ESRCH"&&f.debug("SYSTEM",`Failed to SIGTERM session process PID ${i.pid}`,{pid:i.pid,pgid:i.pgid},a):f.warn("SYSTEM",`Failed to SIGTERM session process PID ${i.pid} (non-Error)`,{pid:i.pid,pgid:i.pgid,error:String(a)})}await Eo(o,rE);let s=o.filter(i=>Et(i.pid));for(let i of s){f.warn("SYSTEM",`Session process PID ${i.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:i.pid,pgid:i.pgid,sessionId:n});try{typeof i.pgid=="number"&&process.platform!=="win32"?process.kill(-i.pgid,"SIGKILL"):process.kill(i.pid,"SIGKILL")}catch(a){a instanceof Error?a.code!=="ESRCH"&&f.debug("SYSTEM",`Failed to SIGKILL session process PID ${i.pid}`,{pid:i.pid,pgid:i.pgid},a):f.warn("SYSTEM",`Failed to SIGKILL session process PID ${i.pid} (non-Error)`,{pid:i.pid,pgid:i.pgid,error:String(a)})}}if(s.length>0){let i=Date.now()+nE;for(;Date.now()<i&&s.filter(c=>Et(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100))}for(let i of r)this.entries.delete(i.id),this.runtimeProcesses.delete(i.id);this.persist();for(let i of r)i.type==="sdk"&&bi();return f.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,pt.mkdirSync)(ki.default.dirname(this.registryPath),{recursive:!0}),(0,pt.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},wi=null;function wo(){return wi||(wi=new xi),wi}var aE=[];function bi(){let t=aE.shift();t&&t()}var ql=require("child_process"),Er=require("fs"),Hl=require("util");var cE=(0,Hl.promisify)(ql.execFile),uE=fe.workerPid();async function Wl(t){let e=t.currentPid??process.pid,r=t.pidFilePath??uE,n=t.registry.getAll(),o=[...n].filter(i=>i.pid!==e).sort((i,a)=>Date.parse(a.startedAt)-Date.parse(i.startedAt));for(let i of o){if(!Et(i.pid)){t.registry.unregister(i.id);continue}try{await Zl(i,"SIGTERM")}catch(a){a instanceof Error?f.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):f.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}}await Eo(o,5e3);let s=o.filter(i=>Et(i.pid));for(let i of s)try{await Zl(i,"SIGKILL")}catch(a){a instanceof Error?f.debug("SYSTEM","Failed to force kill child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):f.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}await Eo(s,1e3);for(let i of o)t.registry.unregister(i.id);for(let i of n.filter(a=>a.pid===e))t.registry.unregister(i.id);lE(r,e),t.registry.pruneDeadEntries()}function lE(t,e){if(!(0,Er.existsSync)(t))return;let r=null;try{let n=JSON.parse((0,Er.readFileSync)(t,"utf-8"));r=typeof n.pid=="number"?n.pid:null}catch(n){f.debug("SYSTEM","PID file unreadable during shutdown \u2014 leaving it (cannot prove ownership)",{pidFilePath:t,error:n instanceof Error?n.message:String(n)});return}if(r!==e){f.debug("SYSTEM","PID file not owned by this process \u2014 leaving it for its owner (restart successor?)",{pidFilePath:t,recordedPid:r,currentPid:e});return}try{(0,Er.rmSync)(t,{force:!0})}catch(n){n instanceof Error?f.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:t},n):f.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:t,error:String(n)})}}async function Zl(t,e){let{pid:r,pgid:n}=t;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,e);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}try{process.kill(r,e)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}if(e==="SIGTERM"){try{process.kill(r,e)}catch(i){if(i instanceof Error&&i.code==="ESRCH")return;throw i}return}let o=await dE();if(o){await new Promise((i,a)=>{o(r,e,c=>{if(!c){i();return}if(c.code==="ESRCH"){i();return}a(c)})});return}let s=["/PID",String(r),"/T"];e==="SIGKILL"&&s.push("/F"),await cE("taskkill",s,{timeout:ue.POWERSHELL_COMMAND,windowsHide:!0})}async function dE(){let t="tree-kill";try{let e=await import(t);return e.default??e}catch(e){return f.debug("SYSTEM","tree-kill module not available, using fallback",{},e instanceof Error?e:void 0),null}}var Vl=3e4,wr=null;function pE(){let e=wo().pruneDeadEntries();e>0&&f.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function Kl(){wr===null&&(wr=setInterval(pE,Vl),wr.unref(),f.debug("SYSTEM","Health checker started",{intervalMs:Vl}))}function Jl(){wr!==null&&(clearInterval(wr),wr=null,f.debug("SYSTEM","Health checker stopped"))}var fE=fe.workerPid(),Ti=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(),pn({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,Kl()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){f.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,f.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?f.error("SYSTEM","Error during shutdown",{},o):f.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(s){s instanceof Error?f.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):f.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{f.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}Jl(),this.stopPromise=Wl({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}},mE=new Ti(wo());function Oi(){return mE}function pn(t={}){let e=t.pidFilePath??fE;if(!(0,Xt.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Xt.readFileSync)(e,"utf-8"))}catch(o){return o instanceof Error?f.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},o):f.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(o)}),(0,Xt.rmSync)(e,{force:!0}),"invalid"}return Pi(r)&&r?((t.logAlive??!0)&&f.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(f.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),(0,Xt.rmSync)(e,{force:!0}),"stale")}var Yl=we(require("path"),1),Xl=require("os"),be=require("fs"),Ql=require("child_process");function Gl(t){return t instanceof Error?t:new Error(String(t))}var YI=fe.dataDir(),ft=fe.workerPid(),XI=fe.workerPort();function Bl(t){return t?/(^|[\\/])node(\.exe)?$/i.test(t.trim()):!1}function hE(t,e){let r=e==="win32"?`where ${t}`:`which ${t}`,n;try{n=(0,Ql.execSync)(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(s){return s instanceof Error?f.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},s):f.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r},new Error(String(s))),null}return n.split(/\r?\n/).map(s=>s.trim()).find(s=>s.length>0)||null}var zi;function Ri(t={}){let e=Object.keys(t).length===0;if(e&&zi!==void 0)return zi;let r=gE(t);return e&&r!==null&&(zi=r),r}function gE(t){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(Bl(r))return r;let n=t.env??process.env,o=t.homeDirectory??(0,Xl.homedir)(),s=t.pathExists??be.existsSync,i=t.lookupInPath??hE,a=e==="win32"?[n.NODE,Yl.default.join(o,".nvm","current","bin","node.exe"),"node"]:[n.NODE,"/usr/local/bin/node","/opt/homebrew/bin/node","/usr/bin/node","node"];for(let c of a){let u=c?.trim();if(u&&(Bl(u)&&s(u)||u.toLowerCase()==="node"))return u}return i("node",e)}function ed(){if(!(0,be.existsSync)(ft))return null;try{return JSON.parse((0,be.readFileSync)(ft,"utf-8"))}catch(t){return t instanceof Error?f.warn("SYSTEM","Failed to parse PID file",{path:ft},t):f.warn("SYSTEM","Failed to parse PID file",{path:ft},new Error(String(t))),null}}function td(){if((0,be.existsSync)(ft))try{(0,be.unlinkSync)(ft)}catch(t){t instanceof Error?f.warn("SYSTEM","Failed to remove PID file",{path:ft},t):f.warn("SYSTEM","Failed to remove PID file",{path:ft},new Error(String(t)))}}function Rt(t){return process.platform==="win32"?Math.round(t*2):t}function rd(t,e,r={}){Oi().assertCanSpawn("worker daemon");let n=Yt({...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r}),o=Ri();if(!o){f.error("SYSTEM","Node runtime not found \u2014 ensure node is on PATH or set the NODE env var. The worker daemon runs under Node (node:sqlite).");return}if(process.platform==="win32")try{let l=yr(o,[t,"--daemon"],{detached:!0,stdio:"ignore",windowsHide:!0,env:n});if(l.pid===void 0){f.error("SYSTEM","Worker daemon spawn produced no PID on Windows",{runtimePath:o});return}return l.unref(),l.pid}catch(l){f.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:o},Gl(l));return}let s="/usr/bin/setsid",i=(0,be.existsSync)(s),u=yr(i?s:o,i?[o,t,"--daemon"]:[t,"--daemon"],{detached:!0,stdio:"ignore",env:n});if(u.pid!==void 0)return u.unref(),u.pid}function nd(t){if(t===0)return!0;if(!Number.isInteger(t)||t<0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;if(r==="EPERM")return!0;f.debug("SYSTEM","Process not alive",{pid:t,code:r})}else f.debug("SYSTEM","Process not alive (non-Error thrown)",{pid:t},new Error(String(e)));return!1}}function od(){try{if(!(0,be.existsSync)(ft))return;let t=new Date;(0,be.utimesSync)(ft,t,t)}catch{}}function sd(){return pn({logAlive:!1})}var id=we(require("path"),1),ad=we(require("net"),1),cd=require("fs");var _E=2500;async function ud(t,e,r="GET"){let n=await fetch(`http://127.0.0.1:${t}${e}`,{method:r,signal:AbortSignal.timeout(_E)}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function ld(t){return new Promise(e=>{let r=ad.default.createServer();r.once("error",n=>{n.code==="EADDRINUSE"||n.code==="EACCES"?e(!0):e(!1)}),r.once("listening",()=>{r.close(()=>e(!1))}),r.listen(t,"127.0.0.1")})}async function dd(t,e,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await ud(t,e)).ok)return!0}catch(s){s instanceof Error?f.debug("SYSTEM",n,{},s):f.debug("SYSTEM",n,{error:String(s)})}await new Promise(s=>setTimeout(s,500))}return!1}function fn(t,e=3e4){return dd(t,"/api/health",e,"Service not ready yet, will retry")}function mn(t,e=3e4){return dd(t,"/api/readiness",e,"Worker not ready yet, will retry")}function yE(){try{let t=id.default.join(vr,"package.json");return JSON.parse((0,cd.readFileSync)(t,"utf-8")).version}catch(t){if(t instanceof Error){let e=t.code;if(e==="ENOENT"||e==="EBUSY")return f.debug("SYSTEM","Could not read plugin version (shutdown race)",{code:e}),"unknown";throw t}throw t}}async function SE(t){try{let e=await ud(t,"/api/version");return e.ok?JSON.parse(e.body).version:null}catch{return f.debug("SYSTEM","Could not fetch worker version",{}),null}}async function pd(t){let e=yE(),r=await SE(t);return!r||e==="unknown"?{matches:!0,pluginVersion:e,workerVersion:r}:{matches:e===r,pluginVersion:e,workerVersion:r}}var bo=require("path"),Ve=require("fs");var vE=6e4;function fd(){return(0,bo.join)(pi(),"spawn.lock")}function ko(){let t=fd(),e=JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()});for(let r=0;r<2;r++)try{return(0,Ve.mkdirSync)((0,bo.dirname)(t),{recursive:!0}),(0,Ve.writeFileSync)(t,e,{flag:"wx"}),!0}catch(n){if(n?.code!=="EEXIST")return!0;if(r>0)return!1;let s;try{s=(0,Ve.statSync)(t).mtimeMs}catch{continue}if(Date.now()-s<=vE)return!1;let i;try{i=(0,Ve.statSync)(t).mtimeMs}catch{continue}if(i!==s)return!1;try{(0,Ve.unlinkSync)(t)}catch{return!1}}return!1}function xo(){let t=fd();try{if(JSON.parse((0,Ve.readFileSync)(t,"utf-8")).pid!==process.pid)return;(0,Ve.unlinkSync)(t)}catch{}}function Mi(t,e,r){let n=process.env[t];if(n){let o=parseInt(n,10);if(Number.isFinite(o)&&o>=r.min&&o<=r.max)return o;f.warn("SYSTEM",`Invalid ${t}, using default`,{value:n,min:r.min,max:r.max})}return e}var Ro=Mi("CLAUDE_MEM_HEALTH_TIMEOUT_MS",vt(ue.HEALTH_CHECK),{min:500,max:3e5}),kC=Mi("CLAUDE_MEM_API_TIMEOUT_MS",vt(ue.API_REQUEST),{min:500,max:3e5}),_d=Mi("CLAUDE_MEM_HOOK_READINESS_TIMEOUT_MS",vt(ue.HOOK_READINESS_WAIT),{min:0,max:3e5}),EE={min:500,max:3e5};async function Ni(t,e={},r){try{return await fetch(t,{...e,signal:AbortSignal.timeout(r)})}catch(n){throw n instanceof DOMException&&n.name==="TimeoutError"?new Error(`Request timed out after ${r}ms`):n}}var $o=null,Po=null,To=null,Oo=null;function wE(){return br.default.join(Bt.get("CLAUDE_MEM_DATA_DIR"),"settings.json")}function bE(t){if(!Number.isInteger(t)||t<=0)return!1;try{return process.kill(t,0),!0}catch(e){return e?.code==="EPERM"}}function kE(){try{let t=fe.workerPid();if(!(0,Fe.existsSync)(t))return null;let e=JSON.parse((0,Fe.readFileSync)(t,"utf-8"));return typeof e.pid!="number"||typeof e.port!="number"||!bE(e.pid)?null:e.port}catch{return null}}function Di(){return To!==null||(To=Bt.loadFromFile(wE())),To}function md(t,e){if(!t)return null;let r=parseInt(t,10);return Number.isFinite(r)&&r>=e.min&&r<=e.max?r:null}function xE(t,e,r){let n=process.env[t];if(n!==void 0){let i=md(n,r);return i!==null?i:(f.warn("SYSTEM",`Invalid ${t}, using default`,{value:n,min:r.min,max:r.max}),e)}let o=Di()[t],s=md(o,r);return s!==null?s:(f.warn("SYSTEM",`Invalid ${t} in settings.json, using default`,{value:o,min:r.min,max:r.max}),e)}function $E(){if($o!==null)return $o;let t=Di();return $o=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),$o}function It(){let t=kE();return t!==null?t:$E()}function PE(){return Po!==null||(Po=Di().CLAUDE_MEM_WORKER_HOST),Po}function TE(){return Oo!==null||(Oo=xE("CLAUDE_MEM_API_TIMEOUT_MS",vt(ue.API_REQUEST),EE)),Oo}function OE(t){return`http://${PE()}:${It()}${t}`}function Qt(t,e={}){let r=e.method??"GET",n=e.timeoutMs??TE(),o=OE(t),s={method:r};return e.headers&&(s.headers=e.headers),e.body&&(s.body=e.body),n>0?Ni(o,s,n):fetch(o,s)}async function zE(){return(await Qt("/api/health",{timeoutMs:Ro})).ok}async function hd(){return(await Qt("/api/readiness",{timeoutMs:Ro})).ok}function Li(){let t=[br.default.join(vr,"plugin","scripts","worker-service.cjs"),br.default.join(process.cwd(),"plugin","scripts","worker-service.cjs")];for(let e of t)if((0,Fe.existsSync)(e))return e;return null}async function RE(t){let e=t.backoffMs;for(let r=1;r<=t.attempts;r++){if(await Sd())return!0;r<t.attempts&&(await new Promise(n=>setTimeout(n,e)),e*=2)}return!1}async function Ii(t=_d){if(t<=0)try{return await hd()}catch{return!1}let e=Date.now();for(;Date.now()-e<t;){try{if(await hd())return!0}catch(n){f.debug("SYSTEM","Worker readiness check threw",{error:n instanceof Error?n.message:String(n)})}let r=t-(Date.now()-e);if(r<=0)break;await new Promise(n=>setTimeout(n,Math.min(250,r)))}return!1}async function yd(){try{let e=await(await Qt("/api/health",{timeoutMs:Ro})).json();return typeof e.version=="string"?e.version:null}catch{return null}}async function IE(t,e=_d){let r=Date.now();for(;Date.now()-r<e;){if(await yd()===t)return!0;let o=e-(Date.now()-r);if(o<=0)break;await new Promise(s=>setTimeout(s,Math.min(500,o)))}return!1}async function Ci(t){let e=await yd();e!==null&&e!==t&&f.warn("SYSTEM","Worker is ready but still reports a stale version; not recycling again in this hook invocation (one recycle per hook event)",{pluginVersion:t,workerVersion:e})}async function Sd(){let t;try{t=await zE()}catch(r){return f.debug("SYSTEM","Worker health check threw",{error:r instanceof Error?r.message:String(r)}),!1}if(!t)return!1;let e=pn({logAlive:!1});return e==="missing"||e==="alive"}async function CE(){let t=null;if(await Sd()){let{matches:s,pluginVersion:i,workerVersion:a}=await pd(It());if(i!=="unknown"&&(t=i),s)return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Worker is healthy but not ready; skipping hook API call"),!1);f.info("SYSTEM","Worker version mismatch \u2014 recycling stale worker",{pluginVersion:i,workerVersion:a});try{if(await Qt("/api/admin/restart",{method:"POST",timeoutMs:Ro}),await IE(i))return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Recycled worker appeared but did not become ready; skipping hook API call"),!1);f.warn("SYSTEM","No successor worker appeared after recycle; falling through to lazy-spawn",{pluginVersion:i,workerVersion:a})}catch(c){f.debug("SYSTEM","Worker restart request failed; falling through to lazy-spawn",{error:c instanceof Error?c.message:String(c)})}}let e=Ri(),r=Li();if(!e)return f.warn("SYSTEM","Cannot lazy-spawn worker: Node runtime not found on PATH"),!1;if(!r)return f.warn("SYSTEM","Cannot lazy-spawn worker: worker-service.cjs not found in plugin/scripts"),!1;let n=ko();try{if(n){f.info("SYSTEM","Worker not running \u2014 lazy-spawning",{runtimePath:e,scriptPath:r});try{yr(e,[r,"--daemon"],{detached:!0,stdio:["ignore","ignore","ignore"]}).unref()}catch(i){return i instanceof Error?f.error("SYSTEM","Lazy-spawn of worker failed",{runtimePath:e,scriptPath:r},i):f.error("SYSTEM","Lazy-spawn of worker failed (non-Error)",{runtimePath:e,scriptPath:r,error:String(i)}),!1}}else f.info("SYSTEM","Another launcher holds the spawn lock \u2014 skipping lazy-spawn and waiting for its worker");if(!await RE({attempts:6,backoffMs:500}))return f.warn("SYSTEM",n?"Worker port did not open after lazy-spawn within the cold-boot wait (~15s)":"Spawn-lock holder's worker port did not open within the cold-boot wait (~15s)"),!1}finally{n&&xo()}return await Ii()?(t!==null&&await Ci(t),!0):(f.warn("SYSTEM","Worker lazy-spawned but did not become ready before hook readiness timeout"),!1)}var zo=null;async function AE(){return zo!==null||(zo=await CE()),zo}var ME=3;function vd(){return br.default.join(B,"state")}function Ed(){return br.default.join(vd(),"hook-failures.json")}function wd(){try{let t=(0,Fe.readFileSync)(Ed(),"utf-8"),e=JSON.parse(t);return{consecutiveFailures:typeof e.consecutiveFailures=="number"&&Number.isFinite(e.consecutiveFailures)?Math.max(0,Math.floor(e.consecutiveFailures)):0,lastFailureAt:typeof e.lastFailureAt=="number"&&Number.isFinite(e.lastFailureAt)?e.lastFailureAt:0}}catch{return{consecutiveFailures:0,lastFailureAt:0}}}function bd(t){let e=vd(),r=Ed(),n=`${r}.tmp`;try{(0,Fe.existsSync)(e)||(0,Fe.mkdirSync)(e,{recursive:!0}),(0,Fe.writeFileSync)(n,JSON.stringify(t),"utf-8"),(0,Fe.renameSync)(n,r)}catch(o){f.debug("SYSTEM","Failed to persist hook-failure counter",{error:o instanceof Error?o.message:String(o)})}}function NE(){try{let e=rt().CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD,r=parseInt(e,10);if(Number.isFinite(r)&&r>=1)return r}catch{}return ME}var DE=["context","session-init","observation","summarize","file-context"],LE=null;function kd(t){LE=DE.includes(t)?t:null}async function ji(){let e={consecutiveFailures:wd().consecutiveFailures+1,lastFailureAt:Date.now()};bd(e);let r=NE();return e.consecutiveFailures>=r&&un(`keepmind worker unreachable for ${e.consecutiveFailures} consecutive hooks \u2014 continuing without memory capture. Run \`keepmind doctor\` to diagnose.`),e.consecutiveFailures}function gd(){wd().consecutiveFailures!==0&&bd({consecutiveFailures:0,lastFailureAt:0})}var Ai=Symbol.for("claude-mem/worker-fallback");function me(t){return typeof t=="object"&&t!==null&&t[Ai]===!0}async function le(t,e,r,n={}){if(!await AE())return await ji(),{continue:!0,reason:"worker_unreachable",[Ai]:!0};let s={method:e};r!==void 0&&(s.headers={"Content-Type":"application/json"},s.body=JSON.stringify(r)),n.timeoutMs!==void 0&&(s.timeoutMs=n.timeoutMs);let i=await Qt(t,s);if(!i.ok){let c=await i.text().catch(()=>"");if(gd(),i.status===429||i.status>=500)return f.warn("SYSTEM",`Worker API ${e} ${t} returned ${i.status}; skipping hook API call`,{body:c.substring(0,200)}),{continue:!0,reason:`worker_api_${i.status}`,[Ai]:!0};let u=c;try{u=JSON.parse(c)}catch{}return u}gd();let a=await i.text();if(a.length!==0)try{return JSON.parse(a)}catch{return a}}var xd=require("fs");function jE(t){let e=ed();return e&&typeof e.port=="number"&&nd(e.pid)?e.port:t}async function UE(t,e){let r=Date.now()+e;for(;Date.now()<r;){let n=jE(t);if(await fn(n,800))return n;await new Promise(o=>setTimeout(o,300))}return null}async function $d(t,e){if(!e)return f.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),"dead";if(!(0,xd.existsSync)(e))return f.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:e}),"dead";if(await fn(t,1e3)){let a=await mn(t,Rt(ue.READINESS_WAIT));return a||f.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),f.info("SYSTEM","Worker already running and healthy (fast path)"),a?"ready":"warming"}if(sd()==="alive"){if(f.info("SYSTEM","Worker PID file points to a live process, waiting for it to become healthy"),await fn(t,Rt(ue.POST_SPAWN_WAIT))){let c=await mn(t,Rt(ue.READINESS_WAIT));return f.info("SYSTEM","Worker became healthy while waiting on live PID"),c?"ready":"warming"}f.warn("SYSTEM","PID file marked live but worker never became healthy within the cold-boot window \u2014 treating it as a stale/reused PID and re-spawning"),td()}if(await ld(t)){if(f.info("SYSTEM","Port in use, waiting for worker to become healthy"),await fn(t,Rt(ue.PORT_IN_USE_WAIT))){let c=await mn(t,Rt(ue.READINESS_WAIT));return f.info("SYSTEM","Worker is now healthy"),c?"ready":"warming"}f.warn("SYSTEM","Configured port in use but no healthy worker \u2014 spawning anyway (worker will pick a free ephemeral port)")}let o=ko(),s=t;try{if(o){if(f.info("SYSTEM","Starting worker daemon",{workerScriptPath:e}),rd(e,t)===void 0)return f.error("SYSTEM","Failed to spawn worker daemon"),"dead"}else f.info("SYSTEM","Another launcher holds the spawn lock \u2014 skipping duplicate spawn and waiting for its worker");let a=await UE(t,Rt(ue.POST_SPAWN_WAIT));if(a===null)return f.warn("SYSTEM",o?"Worker spawned but health endpoint not responding within window \u2014 likely still starting in background":"Spawn-lock holder's worker not healthy within window \u2014 likely still starting in background"),"warming";s=a}finally{o&&xo()}let i=await mn(s,Rt(ue.READINESS_WAIT));return i||f.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),od(),f.info("SYSTEM",o?"Worker started successfully":"Worker is up (started by another launcher)"),i?"ready":"warming"}function FE(){try{let t=process.stdin;return t.isTTY?!1:(t.readable,!0)}catch(t){return f.debug("HOOK","stdin not available (expected for some runtimes)",{error:t instanceof Error?t.message:String(t)}),!1}}function ZE(t){let e=t.trim();if(!e)return{success:!1};try{return{success:!0,value:JSON.parse(e)}}catch(r){return f.debug("HOOK","JSON parse attempt incomplete",{error:r instanceof Error?r.message:String(r)}),{success:!1}}}var Pd=3e4;async function Td(){if(FE())return new Promise((t,e)=>{let r="",n=!1,o=()=>{try{process.stdin.removeAllListeners("data"),process.stdin.removeAllListeners("end"),process.stdin.removeAllListeners("error")}catch{}},s=p=>{n||(n=!0,clearTimeout(c),o(),t(p))},i=p=>{n||(n=!0,clearTimeout(c),o(),e(p))},a=()=>{let p=ZE(r);return p.success?(s(p.value),!0):!1},c=setTimeout(()=>{n||a()||(r.trim()?i(new Error(`Incomplete JSON after ${Pd}ms: ${r.slice(0,100)}...`)):s(void 0))},Pd),u=p=>{r+=p,a()},l=()=>{n||a()||(r.trim()?i(new Error(`Malformed JSON at stdin EOF: ${r.slice(0,100)}...`)):s(void 0))},d=()=>{n||s(void 0)};try{process.stdin.on("data",u),process.stdin.on("end",l),process.stdin.on("error",d)}catch(p){f.debug("HOOK","Failed to attach stdin listeners",{error:p instanceof Error?p.message:String(p)}),n=!0,clearTimeout(c),o(),t(void 0)}})}var he=class extends Error{constructor(r){super(`adapter rejected input: ${r}`);this.reason=r;this.name="AdapterRejectedInput"}reason};function Ke(t){return typeof t=="string"&&t.length>0}var qE=128,Od=t=>typeof t=="string"&&t.length>0&&t.length<=qE?t:void 0,zd={normalizeInput(t){let e=t??{},r=e.cwd??process.cwd();if(!Ke(r))throw new he("invalid_cwd");return{sessionId:e.session_id??e.id??e.sessionId,cwd:r,prompt:e.prompt,toolName:e.tool_name,toolInput:e.tool_input,toolResponse:e.tool_response,transcriptPath:e.transcript_path,agentId:Od(e.agent_id),agentType:Od(e.agent_type)}},formatOutput(t){let e=t??{};if(e.hookSpecificOutput){let n={hookSpecificOutput:t.hookSpecificOutput};return e.systemMessage&&(n.systemMessage=e.systemMessage),n}let r={};return e.systemMessage&&(r.systemMessage=e.systemMessage),r}};var Co=require("fs"),Io=we(require("path"),1),qd=we(Fd(),1),ew=10,tw=new Set(["cat","head","tail","less","more","bat","view","nl","tac"]),rw={head:new Set(["-n","-c","--lines","--bytes"]),tail:new Set(["-n","-c","--lines","--bytes"])},nw=new Set;function ow(t){return typeof t=="object"&&t!==null&&"op"in t}function sw(t){let e=[],r=[];for(let n of t){if(ow(n)){r.length>0&&e.push(r),r=[];continue}typeof n=="string"&&r.push(n)}return r.length>0&&e.push(r),e}function iw(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.filter(r=>typeof r=="string");return e.length>0?e.join(" "):null}return null}function Zd(t){return t.startsWith("-")||t.startsWith("+")}function aw(t){return rw[t]??nw}function cw(t,e){let r=aw(e);if(r.has(t))return!0;let n=t.indexOf("=");return n>0&&r.has(t.slice(0,n))}function Hd(t,e){let r=Io.default.isAbsolute(t)?t:Io.default.resolve(e,t);try{return(0,Co.existsSync)(r)?(0,Co.statSync)(r).isFile():!1}catch{return!1}}function Wd(t){let e=new Set,r=[];for(let n of t)if(!e.has(n)&&(e.add(n),r.push(n),r.length>=ew))break;return r}function uw(t,e){let r=iw(t?.command);if(!r)return[];let n=(0,qd.parse)(r),o=[];for(let s of sw(n)){let i=s.findIndex(u=>u&&!Zd(u));if(i===-1)continue;let a=Io.default.basename(s[i]);if(!tw.has(a))continue;let c=!1;for(let u of s.slice(i+1)){if(c){c=!1;continue}if(Zd(u)){c=cw(u,a)&&!u.includes("=");continue}Hd(u,e)&&o.push(u)}}return Wd(o)}function lw(t,e,r){if(!/^mcp__.+__(read|view|cat)(?:_file|_files)?$/.test(t))return[];let n=e??{},o=[];if(typeof n.path=="string"&&o.push(n.path),Array.isArray(n.paths))for(let s of n.paths)typeof s=="string"&&o.push(s);return Wd(o.filter(s=>Hd(s,r)))}function Vd(t,e,r){return t==="Bash"?uw(e,r):t.startsWith("mcp__")?lw(t,e,r):[]}var dw=new Set(["PreToolUse","PermissionRequest","PostToolUse","SessionStart","UserPromptSubmit","Stop"]);function Kd(t){return typeof t=="string"&&dw.has(t)?t:void 0}function Ct(t){return typeof t=="string"&&t.length>0?t:void 0}function pw(t){if(typeof t=="boolean")return t;if(t==="true")return!0;if(t==="false")return!1}function fw(t){return t&&typeof t=="object"&&!Array.isArray(t)?{...t}:t}function mw(t){let e={};return t.continue!==void 0&&(e.continue=t.continue),t.systemMessage&&(e.systemMessage=t.systemMessage),t.decision==="block"&&(e.decision="block"),t.reason&&(e.reason=t.reason),e}function hw(t){return Kd(t.hookSpecificOutput?.hookEventName)}var Jd={normalizeInput(t){let e=t??{},r=typeof e.cwd=="string"?e.cwd:process.cwd();if(!Ke(r))throw new he("invalid_cwd");let n=Kd(e.hook_event_name),o=Ct(e.tool_name),s=fw(e.tool_input);if(n==="PreToolUse"&&o){let u=Vd(o,s,r);u.length>0&&s&&typeof s=="object"&&!Array.isArray(s)&&(s={...s,filePaths:u})}let i=e.source,a=i==="startup"||i==="resume"||i==="clear"?i:void 0,c=Ct(e.session_id);if(!c)throw new he("missing_session_id");return{sessionId:c,cwd:r,prompt:Ct(e.prompt),toolName:o,toolInput:s,toolResponse:e.tool_response,transcriptPath:Ct(e.transcript_path),lastAssistantMessage:Ct(e.last_assistant_message),turnId:Ct(e.turn_id),stopHookActive:pw(e.stop_hook_active),permissionMode:Ct(e.permission_mode),model:Ct(e.model),sessionSource:a}},formatOutput(t){let e=t??{},r=mw(e),n=e.hookSpecificOutput,o=hw(e);if(!n||!o||o==="Stop")return r;let s={hookEventName:o};return n.additionalContext&&(s.additionalContext=n.additionalContext),o==="PreToolUse"&&(n.permissionDecision==="deny"&&(s.permissionDecision="deny",n.permissionDecisionReason&&(s.permissionDecisionReason=n.permissionDecisionReason)),n.updatedInput&&(s.updatedInput=n.updatedInput)),r.hookSpecificOutput=s,r}};var Gd=require("fs"),Bd=require("os"),Yd=require("path");var gw=/^[A-Za-z0-9_-]+$/;function _w(t,e){if(!t||!e||!gw.test(e))return;let r=t.replace(/^\//,"").replace(/[/.]/g,"-"),n=(0,Yd.join)((0,Bd.homedir)(),".cursor","projects",r,"agent-transcripts",e,`${e}.jsonl`);return(0,Gd.existsSync)(n)?n:void 0}var Xd={normalizeInput(t){let e=t??{},r=!!e.command&&!e.tool_name,n=e.workspace_roots?.[0]??e.cwd??process.cwd();if(!Ke(n))throw new he("invalid_cwd");let o=e.conversation_id||e.generation_id||e.id;return{sessionId:o,cwd:n,prompt:e.prompt??e.query??e.input??e.message,toolName:r?"Bash":e.tool_name,toolInput:r?{command:e.command}:e.tool_input,toolResponse:r?{output:e.output}:e.result_json,transcriptPath:_w(n,o),filePath:e.file_path,edits:e.edits}},formatOutput(t){return{continue:t.continue??!0}}};var Qd={normalizeInput(t){let e=t??{},r=e.cwd??process.env.GEMINI_CWD??process.env.GEMINI_PROJECT_DIR??process.env.CLAUDE_PROJECT_DIR??process.cwd();if(!Ke(r))throw new he("invalid_cwd");let n=e.session_id??process.env.GEMINI_SESSION_ID??void 0,o=e.hook_event_name,s=e.tool_name,i=e.tool_input,a=e.tool_response;return o==="AfterAgent"&&e.prompt_response&&(s=s??"GeminiProvider",i=i??{prompt:e.prompt},a=a??{response:e.prompt_response}),o==="BeforeTool"&&s&&!a&&(a={_preExecution:!0}),o==="Notification"&&(s=s??"GeminiNotification",i=i??{notification_type:e.notification_type,message:e.message},a=a??{details:e.details}),{sessionId:n,cwd:r,prompt:e.prompt,toolName:s,toolInput:i,toolResponse:a,transcriptPath:e.transcript_path}},formatOutput(t){let e={};if(e.continue=t.continue??!0,t.suppressOutput!==void 0&&(e.suppressOutput=t.suppressOutput),t.systemMessage){let r=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;e.systemMessage=t.systemMessage.replace(r,"")}return t.hookSpecificOutput&&(e.hookSpecificOutput={additionalContext:t.hookSpecificOutput.additionalContext}),e}};var qi={normalizeInput(t){let e=t??{},r=e.cwd??process.cwd();if(!Ke(r))throw new he("invalid_cwd");return{sessionId:e.sessionId??e.session_id??"unknown",cwd:r,prompt:e.prompt,toolName:e.toolName??e.tool_name,toolInput:e.toolInput??e.tool_input,toolResponse:e.toolResponse??e.tool_response,transcriptPath:e.transcriptPath??e.transcript_path,filePath:e.filePath??e.file_path,edits:e.edits}},formatOutput(t){return t}};var ep={normalizeInput(t){let e=t??{},r=e.tool_info??{},n=e.agent_action_name??"",o=r.cwd??process.cwd();if(!Ke(o))throw new he("invalid_cwd");let s={sessionId:e.trajectory_id??e.execution_id,cwd:o,platform:"windsurf"};switch(n){case"pre_user_prompt":return{...s,prompt:r.user_prompt};case"post_write_code":return{...s,toolName:"Write",filePath:r.file_path,edits:r.edits,toolInput:{file_path:r.file_path,edits:r.edits}};case"post_run_command":return{...s,cwd:r.cwd??s.cwd,toolName:"Bash",toolInput:{command:r.command_line}};case"post_mcp_tool_use":return{...s,toolName:r.mcp_tool_name??"mcp_tool",toolInput:r.mcp_tool_arguments,toolResponse:r.mcp_result};case"post_cascade_response":return{...s,toolName:"cascade_response",toolResponse:r.response};default:return s}},formatOutput(t){return{continue:t.continue??!0}}};function tp(t){switch(t){case"claude-code":return zd;case"codex":return Jd;case"cursor":return Xd;case"gemini":case"gemini-cli":return Qd;case"windsurf":return ep;case"raw":return qi;default:return qi}}var np=require("os"),op=we(require("path"),1),sp=require("child_process");var Mo=require("fs"),Ao=we(require("path"),1);var hn={isWorktree:!1,worktreeName:null,parentRepoPath:null,parentProjectName:null};function rp(t){let e=Ao.default.join(t,".git"),r;try{r=(0,Mo.statSync)(e)}catch(l){return l instanceof Error&&l.code!=="ENOENT"&&f.warn("GIT","Unexpected error checking .git",{error:l instanceof Error?l.message:String(l)}),hn}if(!r.isFile())return hn;let n;try{n=(0,Mo.readFileSync)(e,"utf-8").trim()}catch(l){return f.warn("GIT","Failed to read .git file",{error:l instanceof Error?l.message:String(l)}),hn}let o=n.match(/^gitdir:\s*(.+)$/);if(!o)return hn;let i=o[1].match(/^(.+)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)$/);if(!i)return hn;let a=i[1],c=Ao.default.basename(t),u=Ao.default.basename(a);return{isWorktree:!0,worktreeName:c,parentRepoPath:a,parentProjectName:u}}function ip(t){return t==="~"||t.startsWith("~/")?t.replace(/^~/,(0,np.homedir)()):t}function yw(t){try{return(0,sp.execFileSync)("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0}).trim()||null}catch{return null}}function Hi(t){if(!t||t.trim()==="")return f.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:t}),"unknown-project";let e=ip(t),n=yw(e)??e,o=op.default.basename(n);if(o===""){if(process.platform==="win32"){let i=t.match(/^([A-Z]):\\/i);if(i){let c=`drive-${i[1].toUpperCase()}`;return f.info("PROJECT_NAME","Drive root detected",{cwd:t,projectName:c}),c}}return f.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:t}),"unknown-project"}return o}function kr(t){let e=Hi(t);if(!t)return{primary:e,parent:null,isWorktree:!1,allProjects:[e]};let r=ip(t),n=rp(r);if(n.isWorktree&&n.parentProjectName){let o=`${n.parentProjectName}/${e}`;return{primary:o,parent:n.parentProjectName,isWorktree:!0,allProjects:[n.parentProjectName,o]}}return{primary:e,parent:null,isWorktree:!1,allProjects:[e]}}var ap=require("child_process"),cp=require("util"),tr=require("fs");var up=require("path");var pA=(0,cp.promisify)(ap.execFile);function lp(){try{let t=(0,up.join)(fe.dataDir(),"oauth-stale.marker");return(0,tr.existsSync)(t)?(0,tr.readFileSync)(t,"utf-8"):void 0}catch{return}}var dp="claude";function Sw(t){return t.trim().toLowerCase().replace(/\s+/g,"-")}function Ce(t){if(!t)return dp;let e=Sw(t);return e?e==="transcript"||e.includes("codex")?"codex":e.includes("cursor")?"cursor":e.includes("claude")?"claude":e:dp}var pp;function S(t,e,r){function n(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(t))return;a._zod.traits.add(t),e(a,c);let u=i.prototype,l=Object.keys(u);for(let d=0;d<l.length;d++){let p=l[d];p in a||(a[p]=u[p].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:t});function i(a){var c;let u=r?.Parent?new s:this;n(u,a),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(t)}),Object.defineProperty(i,"name",{value:t}),i}var mt=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},xr=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(pp=globalThis).__zod_globalConfig??(pp.__zod_globalConfig={});var $r=globalThis.__zod_globalConfig;function Ze(t){return t&&Object.assign($r,t),$r}var F={};Rl(F,{BIGINT_FORMAT_RANGES:()=>gp,Class:()=>Vi,NUMBER_FORMAT_RANGES:()=>Xi,aborted:()=>Nt,allowsEval:()=>Gi,assert:()=>kw,assertEqual:()=>vw,assertIs:()=>ww,assertNever:()=>bw,assertNotEqual:()=>Ew,assignProp:()=>At,base64ToUint8Array:()=>yp,base64urlToUint8Array:()=>Fw,cached:()=>Tr,captureStackTrace:()=>Lo,cleanEnum:()=>Uw,cleanRegex:()=>Sn,clone:()=>nt,cloneDef:()=>$w,createTransparentProxy:()=>Iw,defineLazy:()=>V,esc:()=>Do,escapeRegex:()=>bt,explicitlyAborted:()=>Qi,extend:()=>Mw,finalizeIssue:()=>Je,floatSafeRemainder:()=>Ki,getElementAtPath:()=>Pw,getEnumValues:()=>_n,getLengthableOrigin:()=>vn,getParsedType:()=>Rw,getSizableOrigin:()=>_p,hexToUint8Array:()=>qw,isObject:()=>rr,isPlainObject:()=>Mt,issue:()=>Or,joinValues:()=>No,jsonStringifyReplacer:()=>Pr,merge:()=>Dw,mergeDefs:()=>wt,normalizeParams:()=>z,nullish:()=>yn,numKeys:()=>zw,objectClone:()=>xw,omit:()=>Aw,optionalKeys:()=>Yi,parsedType:()=>ea,partial:()=>Lw,pick:()=>Cw,prefixIssues:()=>kt,primitiveTypes:()=>hp,promiseAllObject:()=>Tw,propertyKeyTypes:()=>Bi,randomString:()=>Ow,required:()=>jw,safeExtend:()=>Nw,shallowClone:()=>mp,slugify:()=>Ji,stringifyPrimitive:()=>jo,uint8ArrayToBase64:()=>Sp,uint8ArrayToBase64url:()=>Zw,uint8ArrayToHex:()=>Hw,unwrapMessage:()=>gn});function vw(t){return t}function Ew(t){return t}function ww(t){}function bw(t){throw new Error("Unexpected value in exhaustive check")}function kw(t){}function _n(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,o])=>e.indexOf(+n)===-1).map(([n,o])=>o)}function No(t,e="|"){return t.map(r=>jo(r)).join(e)}function Pr(t,e){return typeof e=="bigint"?e.toString():e}function Tr(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function yn(t){return t==null}function Sn(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function Ki(t,e){let r=t/e,n=Math.round(r),o=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var fp=Symbol("evaluating");function V(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==fp)return n===void 0&&(n=fp,n=r()),n},set(o){Object.defineProperty(t,e,{value:o})},configurable:!0})}function xw(t){return Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t))}function At(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function wt(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}function $w(t){return wt(t._zod.def)}function Pw(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function Tw(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<e.length;s++)o[e[s]]=n[s];return o})}function Ow(t=10){let e="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<t;n++)r+=e[Math.floor(Math.random()*e.length)];return r}function Do(t){return JSON.stringify(t)}function Ji(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Lo="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function rr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Gi=Tr(()=>{if($r.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function Mt(t){if(rr(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(rr(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function mp(t){return Mt(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}function zw(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var Rw=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},Bi=new Set(["string","number","symbol"]),hp=new Set(["string","number","bigint","boolean","symbol","undefined"]);function bt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function nt(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function z(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Iw(t){let e;return new Proxy({},{get(r,n,o){return e??(e=t()),Reflect.get(e,n,o)},set(r,n,o,s){return e??(e=t()),Reflect.set(e,n,o,s)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,o){return e??(e=t()),Reflect.defineProperty(e,n,o)}})}function jo(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function Yi(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var Xi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},gp={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Cw(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=wt(t._zod.def,{get shape(){let i={};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(i[a]=r.shape[a])}return At(this,"shape",i),i},checks:[]});return nt(t,s)}function Aw(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=wt(t._zod.def,{get shape(){let i={...t._zod.def.shape};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete i[a]}return At(this,"shape",i),i},checks:[]});return nt(t,s)}function Mw(t,e){if(!Mt(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let s=t._zod.def.shape;for(let i in e)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=wt(t._zod.def,{get shape(){let s={...t._zod.def.shape,...e};return At(this,"shape",s),s}});return nt(t,o)}function Nw(t,e){if(!Mt(e))throw new Error("Invalid input to safeExtend: expected a plain object");let r=wt(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e};return At(this,"shape",n),n}});return nt(t,r)}function Dw(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=wt(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e._zod.def.shape};return At(this,"shape",n),n},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return nt(t,r)}function Lw(t,e,r){let o=e._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=wt(e._zod.def,{get shape(){let a=e._zod.def.shape,c={...a};if(r)for(let u in r){if(!(u in a))throw new Error(`Unrecognized key: "${u}"`);r[u]&&(c[u]=t?new t({type:"optional",innerType:a[u]}):a[u])}else for(let u in a)c[u]=t?new t({type:"optional",innerType:a[u]}):a[u];return At(this,"shape",c),c},checks:[]});return nt(e,i)}function jw(t,e,r){let n=wt(e._zod.def,{get shape(){let o=e._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new t({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new t({type:"nonoptional",innerType:o[i]});return At(this,"shape",s),s}});return nt(e,n)}function Nt(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function Qi(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue===!1)return!0;return!1}function kt(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function gn(t){return typeof t=="string"?t:t?.message}function Je(t,e,r){let n=t.message?t.message:gn(t.inst?._zod.def?.error?.(t))??gn(e?.error?.(t))??gn(r.customError?.(t))??gn(r.localeError?.(t))??"Invalid input",{inst:o,continue:s,input:i,...a}=t;return a.path??(a.path=[]),a.message=n,e?.reportInput&&(a.input=i),a}function _p(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function vn(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function ea(t){let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"nan":"number";case"object":{if(t===null)return"null";if(Array.isArray(t))return"array";let r=t;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return e}function Or(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function Uw(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}function yp(t){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function Sp(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function Fw(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-e.length%4)%4);return yp(e+r)}function Zw(t){return Sp(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function qw(t){let e=t.replace(/^0x/,"");if(e.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)r[n/2]=Number.parseInt(e.slice(n,n+2),16);return r}function Hw(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var Vi=class{constructor(...e){}};var vp=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Pr,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},Uo=S("$ZodError",vp),ta=S("$ZodError",vp,{Parent:Error});function Ep(t,e=r=>r.message){let r={},n=[];for(let o of t.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(e(o))):n.push(e(o));return{formErrors:n,fieldErrors:r}}function wp(t,e=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>n({issues:a},[...s,...i.path]));else if(i.code==="invalid_key")n({issues:i.issues},[...s,...i.path]);else if(i.code==="invalid_element")n({issues:i.issues},[...s,...i.path]);else{let a=[...s,...i.path];if(a.length===0)r._errors.push(e(i));else{let c=r,u=0;for(;u<a.length;){let l=a[u];u===a.length-1?(c[l]=c[l]||{_errors:[]},c[l]._errors.push(e(i))):c[l]=c[l]||{_errors:[]},c=c[l],u++}}}};return n(t),r}var Fo=t=>(e,r,n,o)=>{let s=n?{...n,async:!1}:{async:!1},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new mt;if(i.issues.length){let a=new(o?.Err??t)(i.issues.map(c=>Je(c,s,Ze())));throw Lo(a,o?.callee),a}return i.value};var Zo=t=>async(e,r,n,o)=>{let s=n?{...n,async:!0}:{async:!0},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??t)(i.issues.map(c=>Je(c,s,Ze())));throw Lo(a,o?.callee),a}return i.value};var En=t=>(e,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new mt;return s.issues.length?{success:!1,error:new(t??Uo)(s.issues.map(i=>Je(i,o,Ze())))}:{success:!0,data:s.value}},wn=En(ta),bn=t=>async(e,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=e._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new t(s.issues.map(i=>Je(i,o,Ze())))}:{success:!0,data:s.value}},qo=bn(ta),bp=t=>(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Fo(t)(e,r,o)};var kp=t=>(e,r,n)=>Fo(t)(e,r,n);var xp=t=>async(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Zo(t)(e,r,o)};var $p=t=>async(e,r,n)=>Zo(t)(e,r,n);var Pp=t=>(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return En(t)(e,r,o)};var Tp=t=>(e,r,n)=>En(t)(e,r,n);var Op=t=>async(e,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return bn(t)(e,r,o)};var zp=t=>async(e,r,n)=>bn(t)(e,r,n);var Rp=/^[cC][0-9a-z]{6,}$/,Ip=/^[0-9a-z]+$/,Cp=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ap=/^[0-9a-vA-V]{20}$/,Mp=/^[A-Za-z0-9]{27}$/,Np=/^[a-zA-Z0-9_-]{21}$/,Dp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Lp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ra=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;var jp=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Vw="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Up(){return new RegExp(Vw,"u")}var Fp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var qp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Hp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,na=/^[A-Za-z0-9_-]*$/;var Vp=/^https?$/,Kp=/^\+[1-9]\d{6,14}$/,Jp="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Gp=new RegExp(`^${Jp}$`);function Bp(t){let e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Yp(t){return new RegExp(`^${Bp(t)}$`)}function Xp(t){let e=Bp({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${e}(?:${r.join("|")})`;return new RegExp(`^${Jp}T(?:${n})$`)}var Qp=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)};var ef=/^-?\d+$/,oa=/^-?\d+(?:\.\d+)?$/,tf=/^(?:true|false)$/i,rf=/^null$/i;var nf=/^[^A-Z]*$/,of=/^[^a-z]*$/;var ge=S("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),sf={number:"number",bigint:"bigint",object:"date"},sa=S("$ZodCheckLessThan",(t,e)=>{ge.init(t,e);let r=sf[typeof e.value];t._zod.onattach.push(n=>{let o=n._zod.bag,s=(e.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<s&&(e.inclusive?o.maximum=e.value:o.exclusiveMaximum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value<=e.value:n.value<e.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),ia=S("$ZodCheckGreaterThan",(t,e)=>{ge.init(t,e);let r=sf[typeof e.value];t._zod.onattach.push(n=>{let o=n._zod.bag,s=(e.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>s&&(e.inclusive?o.minimum=e.value:o.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),af=S("$ZodCheckMultipleOf",(t,e)=>{ge.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):Ki(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),cf=S("$ZodCheckNumberFormat",(t,e)=>{ge.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[o,s]=Xi[e.format];t._zod.onattach.push(i=>{let a=i._zod.bag;a.format=e.format,a.minimum=o,a.maximum=s,r&&(a.pattern=ef)}),t._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:a,inst:t});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:t,continue:!e.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:t,continue:!e.abort})}});var uf=S("$ZodCheckMaxLength",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<o&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{let o=n.value;if(o.length<=e.maximum)return;let i=vn(o);n.issues.push({origin:i,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),lf=S("$ZodCheckMinLength",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>o&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{let o=n.value;if(o.length>=e.minimum)return;let i=vn(o);n.issues.push({origin:i,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),df=S("$ZodCheckLengthEquals",(t,e)=>{var r;ge.init(t,e),(r=t._zod.def).when??(r.when=n=>{let o=n.value;return!yn(o)&&o.length!==void 0}),t._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=e.length,o.maximum=e.length,o.length=e.length}),t._zod.check=n=>{let o=n.value,s=o.length;if(s===e.length)return;let i=vn(o),a=s>e.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),kn=S("$ZodCheckStringFormat",(t,e)=>{var r,n;ge.init(t,e),t._zod.onattach.push(o=>{let s=o._zod.bag;s.format=e.format,e.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),pf=S("$ZodCheckRegex",(t,e)=>{kn.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),ff=S("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=nf),kn.init(t,e)}),mf=S("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=of),kn.init(t,e)}),hf=S("$ZodCheckIncludes",(t,e)=>{ge.init(t,e);let r=bt(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),t._zod.check=o=>{o.value.includes(e.includes,e.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:o.value,inst:t,continue:!e.abort})}}),gf=S("$ZodCheckStartsWith",(t,e)=>{ge.init(t,e);let r=new RegExp(`^${bt(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),_f=S("$ZodCheckEndsWith",(t,e)=>{ge.init(t,e);let r=new RegExp(`.*${bt(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}});var yf=S("$ZodCheckOverwrite",(t,e)=>{ge.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}});var Wo=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
24
24
  `).filter(i=>i),o=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let e=Function,r=this?.args,o=[...(this?.content??[""]).map(s=>` ${s}`)];return new e(...r,o.join(`
25
25
  `))}};var vf={major:4,minor:4,patch:3};var X=S("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=vf;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let o of n)for(let s of o._zod.onattach)s(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let o=(i,a,c)=>{let u=Nt(i),l;for(let d of a){if(d._zod.def.when){if(Qi(i)||!d._zod.def.when(i))continue}else if(u)continue;let p=i.issues.length,m=d._zod.check(i);if(m instanceof Promise&&c?.async===!1)throw new mt;if(l||m instanceof Promise)l=(l??Promise.resolve()).then(async()=>{await m,i.issues.length!==p&&(u||(u=Nt(i,p)))});else{if(i.issues.length===p)continue;u||(u=Nt(i,p))}}return l?l.then(()=>i):i},s=(i,a,c)=>{if(Nt(i))return i.aborted=!0,i;let u=o(a,n,c);if(u instanceof Promise){if(c.async===!1)throw new mt;return u.then(l=>t._zod.parse(l,c))}return t._zod.parse(u,c)};t._zod.run=(i,a)=>{if(a.skipChecks)return t._zod.parse(i,a);if(a.direction==="backward"){let u=t._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return u instanceof Promise?u.then(l=>s(l,i,a)):s(u,i,a)}let c=t._zod.parse(i,a);if(c instanceof Promise){if(a.async===!1)throw new mt;return c.then(u=>o(u,n,a))}return o(c,n,a)}}V(t,"~standard",()=>({validate:o=>{try{let s=wn(t,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return qo(t,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Jo=S("$ZodString",(t,e)=>{X.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??Qp(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),Q=S("$ZodStringFormat",(t,e)=>{kn.init(t,e),Jo.init(t,e)}),Of=S("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=Lp),Q.init(t,e)}),zf=S("$ZodUUID",(t,e)=>{if(e.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(n===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=ra(n))}else e.pattern??(e.pattern=ra());Q.init(t,e)}),Rf=S("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=jp),Q.init(t,e)}),If=S("$ZodURL",(t,e)=>{Q.init(t,e),t._zod.check=r=>{try{let n=r.value.trim();if(!e.normalize&&e.protocol?.source===Vp.source&&!/^https?:\/\//i.test(n)){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:t,continue:!e.abort});return}let o=new URL(n);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),e.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}}),Cf=S("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=Up()),Q.init(t,e)}),Af=S("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=Np),Q.init(t,e)}),Mf=S("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=Rp),Q.init(t,e)}),Nf=S("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=Ip),Q.init(t,e)}),Df=S("$ZodULID",(t,e)=>{e.pattern??(e.pattern=Cp),Q.init(t,e)}),Lf=S("$ZodXID",(t,e)=>{e.pattern??(e.pattern=Ap),Q.init(t,e)}),jf=S("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=Mp),Q.init(t,e)}),Uf=S("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=Xp(e)),Q.init(t,e)}),Ff=S("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=Gp),Q.init(t,e)}),Zf=S("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=Yp(e)),Q.init(t,e)}),qf=S("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=Dp),Q.init(t,e)}),Hf=S("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=Fp),Q.init(t,e),t._zod.bag.format="ipv4"}),Wf=S("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=Zp),Q.init(t,e),t._zod.bag.format="ipv6",t._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:t,continue:!e.abort})}}});var Vf=S("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=qp),Q.init(t,e)}),Kf=S("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=Hp),Q.init(t,e),t._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:t,continue:!e.abort})}}});function Jf(t){if(t==="")return!0;if(/\s/.test(t)||t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}var Gf=S("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=Wp),Q.init(t,e),t._zod.bag.contentEncoding="base64",t._zod.check=r=>{Jf(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:t,continue:!e.abort})}});function Gw(t){if(!na.test(t))return!1;let e=t.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=e.padEnd(Math.ceil(e.length/4)*4,"=");return Jf(r)}var Bf=S("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=na),Q.init(t,e),t._zod.bag.contentEncoding="base64url",t._zod.check=r=>{Gw(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:t,continue:!e.abort})}}),Yf=S("$ZodE164",(t,e)=>{e.pattern??(e.pattern=Kp),Q.init(t,e)});function Bw(t,e=null){try{let r=t.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||e&&(!("alg"in o)||o.alg!==e))}catch{return!1}}var Xf=S("$ZodJWT",(t,e)=>{Q.init(t,e),t._zod.check=r=>{Bw(r.value,e.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:t,continue:!e.abort})}});var ca=S("$ZodNumber",(t,e)=>{X.init(t,e),t._zod.pattern=t._zod.bag.pattern??oa,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:t,...s?{received:s}:{}}),r}}),Qf=S("$ZodNumberFormat",(t,e)=>{cf.init(t,e),ca.init(t,e)}),em=S("$ZodBoolean",(t,e)=>{X.init(t,e),t._zod.pattern=tf,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:t}),r}});var tm=S("$ZodNull",(t,e)=>{X.init(t,e),t._zod.pattern=rf,t._zod.values=new Set([null]),t._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:t}),r}});var rm=S("$ZodUnknown",(t,e)=>{X.init(t,e),t._zod.parse=r=>r}),nm=S("$ZodNever",(t,e)=>{X.init(t,e),t._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:t}),r)});function Ef(t,e,r){t.issues.length&&e.issues.push(...kt(r,t.issues)),e.value[r]=t.value}var om=S("$ZodArray",(t,e)=>{X.init(t,e),t._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:t}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],c=e.element._zod.run({value:a,issues:[]},n);c instanceof Promise?s.push(c.then(u=>Ef(u,r,i))):Ef(c,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function Ko(t,e,r,n,o,s){let i=r in n;if(t.issues.length){if(o&&s&&!i)return;e.issues.push(...kt(r,t.issues))}if(!i&&!o){t.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}t.value===void 0?i&&(e.value[r]=void 0):e.value[r]=t.value}function sm(t){let e=Object.keys(t.shape);for(let n of e)if(!t.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=Yi(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(r)}}function im(t,e,r,n,o,s){let i=[],a=o.keySet,c=o.catchall._zod,u=c.def.type,l=c.optin==="optional",d=c.optout==="optional";for(let p in e){if(p==="__proto__"||a.has(p))continue;if(u==="never"){i.push(p);continue}let m=c.run({value:e[p],issues:[]},n);m instanceof Promise?t.push(m.then(h=>Ko(h,r,p,e,l,d))):Ko(m,r,p,e,l,d)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:e,inst:s}),t.length?Promise.all(t).then(()=>r):r}var Yw=S("$ZodObject",(t,e)=>{if(X.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){let a=e.shape;Object.defineProperty(e,"shape",{get:()=>{let c={...a};return Object.defineProperty(e,"shape",{value:c}),c}})}let n=Tr(()=>sm(e));V(t._zod,"propValues",()=>{let a=e.shape,c={};for(let u in a){let l=a[u]._zod;if(l.values){c[u]??(c[u]=new Set);for(let d of l.values)c[u].add(d)}}return c});let o=rr,s=e.catchall,i;t._zod.parse=(a,c)=>{i??(i=n.value);let u=a.value;if(!o(u))return a.issues.push({expected:"object",code:"invalid_type",input:u,inst:t}),a;a.value={};let l=[],d=i.shape;for(let p of i.keys){let m=d[p],h=m._zod.optin==="optional",y=m._zod.optout==="optional",g=m._zod.run({value:u[p],issues:[]},c);g instanceof Promise?l.push(g.then(v=>Ko(v,a,p,u,h,y))):Ko(g,a,p,u,h,y)}return s?im(l,u,a,c,n.value,t):l.length?Promise.all(l).then(()=>a):a}}),am=S("$ZodObjectJIT",(t,e)=>{Yw.init(t,e);let r=t._zod.parse,n=Tr(()=>sm(e)),o=p=>{let m=new Wo(["shape","payload","ctx"]),h=n.value,y=w=>{let $=Do(w);return`shape[${$}]._zod.run({ value: input[${$}], issues: [] }, ctx)`};m.write("const input = payload.value;");let g=Object.create(null),v=0;for(let w of h.keys)g[w]=`key_${v++}`;m.write("const newResult = {};");for(let w of h.keys){let $=g[w],x=Do(w),je=p[w],We=je?._zod?.optin==="optional",sn=je?._zod?.optout==="optional";m.write(`const ${$} = ${y(w)};`),We&&sn?m.write(`
26
26
  if (${$}.issues.length) {