claude-mem 13.34.1 → 13.34.2
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/npx-cli/index.js +1 -1
- package/dsh/package.json +1 -1
- package/openclaw/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/scripts/mcp-server.cjs +2 -2
- package/plugin/scripts/server-service.cjs +2 -2
- package/plugin/scripts/transcript-watcher.cjs +1 -1
- package/plugin/scripts/worker-service.cjs +331 -335
- package/plugin/scripts/worker-service.cjs.map +3 -3
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
<img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License">
|
|
60
60
|
</a>
|
|
61
61
|
<a href="package.json">
|
|
62
|
-
<img src="https://img.shields.io/badge/version-13.34.
|
|
62
|
+
<img src="https://img.shields.io/badge/version-13.34.2-green.svg" alt="Version">
|
|
63
63
|
</a>
|
|
64
64
|
<a href="package.json">
|
|
65
65
|
<img src="https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg" alt="Node">
|
package/dist/npx-cli/index.js
CHANGED
|
@@ -13,7 +13,7 @@ ${m.stack??""}
|
|
|
13
13
|
`)}debug(e,r,i,n){this.log(0,e,r,i,n)}info(e,r,i,n){this.log(1,e,r,i,n)}warn(e,r,i,n){this.log(2,e,r,i,n)}setErrorSink(e){g_=e}error(e,r,i,n){this.log(3,e,r,i,n),this.routeErrorToSink(r,i,n)}routeErrorToSink(e,r,i){try{if(!g_||!(i instanceof Error))return;g_(i)}catch{}}dataIn(e,r,i,n){this.info(e,`\u2192 ${r}`,i,n)}dataOut(e,r,i,n){this.info(e,`\u2190 ${r}`,i,n)}success(e,r,i,n){this.info(e,`\u2713 ${r}`,i,n)}failure(e,r,i,n){this.error(e,`\u2717 ${r}`,i,n)}},b=new v_});function sK(t=process.env){let e=Number.parseInt(t.CLAUDE_MEM_WEDGED_WORKER_UPTIME_S??"",10);return Number.isFinite(e)&&e>=oK.min&&e<=oK.max?e:See}function aK(t=process.platform){return t==="win32"?8e3:5e3}function E_(t=process.platform){return Pt.SESSION_INIT_HOOK_CAP-aK(t)}function oo(t){return process.platform==="win32"?Math.round(t*Pt.WINDOWS_MULTIPLIER):t}var Pt,See,oK,Bs=E(()=>{"use strict";Pt={HEALTH_CHECK:3e3,API_REQUEST:3e4,SESSION_INIT_HOOK_CAP:15e3,SESSION_INIT_REQUEST:1e4,SESSION_INIT_REQUEST_MAX:14e3,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5},See=300,oK={min:60,max:86400}});var lK=E(()=>{"use strict"});function cK(t){try{return new URL(t).hostname.toLowerCase()==="openrouter.ai"}catch{return!1}}var uK=E(()=>{"use strict";ve()});import{readFileSync as _ee,existsSync as dK,writeFileSync as wee}from"fs";import{basename as kee,dirname as Iee,join as __}from"path";import{homedir as pK,hostname as xee}from"os";function Dee(t){let e=t.CLAUDE_MEM_OPENROUTER_MODEL;if(typeof e!="string"||!Ree.has(e.trim()))return!1;let r=typeof t.CLAUDE_MEM_OPENROUTER_BASE_URL=="string"?t.CLAUDE_MEM_OPENROUTER_BASE_URL.trim():"";return r===""||cK(r)}function yK(t,e){return __(Iee(t),`.${kee(t)}.${e.markerTag}`)}function S_(t,e){try{wee(yK(t,e),new Date().toISOString(),{encoding:"utf-8",mode:384})}catch{}}function Pee(t){if(typeof t!="string")return null;let e=t.trim();if(e.length===0)return null;try{let r=new URL(e).hostname;if(r===Cee||r===Aee)return Oee}catch{return null}return null}var Tee,Cee,Aee,Oee,Ree,fK,mK,hK,Te,mr=E(()=>{"use strict";Bs();Vt();uK();Ti();Tee="security_alert",Cee="sync-hub.black-pond-afbb.workers.dev",Aee="ziczmqtpmaxbornfghye.supabase.co",Oee="https://sync.cmem.ai",Ree=new Set(["xiaomi/mimo-v2-flash:free"]);fK=18e4,mK=[{key:"CLAUDE_MEM_LLM_TIMEOUT_MS",legacy:"30000",markerTag:"llm-timeout-migrated-v1"},{key:"CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS",legacy:"30000",markerTag:"field-optimize-timeout-migrated-v1"}];hK=new Set;Te=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_SESSION_START_INCLUDE_ALL_SOURCES:"false",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_ALLOWED_ORIGINS:"",CLAUDE_MEM_PUBLIC_URL:"",CLAUDE_MEM_API_TIMEOUT_MS:String(oo(Pt.API_REQUEST)),CLAUDE_MEM_SESSION_INIT_TIMEOUT_MS:String(E_()),CLAUDE_MEM_IDLE_EXIT_SEC:"0",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_SKIP_BASH_PATTERNS:"",CLAUDE_MEM_SKIP_SUBAGENT_OBSERVATIONS:"false",CLAUDE_MEM_SKIP_AGENT_TYPES:"",CLAUDE_MEM_CAPTURE_ADVISOR_CALLS:"false",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CODEX_MODEL:"",CLAUDE_MEM_CODEX_PATH:"codex",CLAUDE_MEM_CODEX_REASONING_EFFORT:"low",CLAUDE_MEM_CODEX_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_SIZE:"8",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_MAX_CHARS:"32000",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_API_KEYS:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-flash-latest",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_API_KEYS:"",CLAUDE_MEM_OPENROUTER_MODEL:"cohere/north-mini-code:free",CLAUDE_MEM_OPENROUTER_BASE_URL:"",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_EXTRA_BODY:"",CLAUDE_MEM_OPENROUTER_REASONING_EFFORT:"",CLAUDE_MEM_OPENAI_COMPAT_PRESET:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEY:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEYS:"",CLAUDE_MEM_OPENAI_COMPAT_BASE_URL:"",CLAUDE_MEM_OPENAI_COMPAT_MODEL:"",CLAUDE_MEM_QUOTA_FALLBACK_PROVIDER:"",CLAUDE_MEM_QUOTA_FALLBACK_MODEL:"",CLAUDE_MEM_QUOTA_THRESHOLD_FIVE_HOUR:"0.95",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_OPUS:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_SONNET:"0.92",CLAUDE_MEM_QUOTA_THRESHOLD_OVERAGE:"0.95",CLAUDE_MEM_DATA_DIR:__(pK(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CLAUDE_CONFIG_DIR:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:"",CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:"",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_MAIN_AGENT_ONLY:"true",CLAUDE_MEM_REINFORCE_ALPHA:"0",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FILE_READ_GATE_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:__(pK(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_CODEX_SUBAGENT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_OBSERVER_MAX_CONVERSATION_CHARS:"400000",CLAUDE_MEM_OBSERVER_CONTEXT_WINDOW:"",CLAUDE_MEM_OBSERVER_MAX_OUTPUT_TOKENS:"4096",CLAUDE_MEM_OBSERVE_BARE_PROMPTS:"false",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_REDACT_ENABLED:"false",CLAUDE_MEM_REDACT_DISABLED_BUILTINS:"",CLAUDE_MEM_REDACT_CUSTOM_PATTERNS:"[]",CLAUDE_MEM_REDACT_LOG_MATCHES:"false",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_PROJECT_ENVIRONMENTS:"[]",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_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_CHROMA_PREWARM_TIMEOUT_MS:"120000",CLAUDE_MEM_CHROMA_MUTATION_TIMEOUT_MS:"600000",CLAUDE_MEM_CHROMA_MAX_PENDING_MUTATIONS:"5000",CLAUDE_MEM_CHROMA_EMBEDDING_FUNCTION:"default",CLAUDE_MEM_CLOUD_SYNC_TOKEN:"",CLAUDE_MEM_CLOUD_SYNC_USER_ID:"",CLAUDE_MEM_CLOUD_SYNC_HUB_URL:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_ID:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_NAME:xee(),CLAUDE_MEM_CLOUD_SYNC_WS:"true",CLAUDE_MEM_CLOUD_SYNC_CONTENT_BATCH_SIZE:"40",CLAUDE_MEM_CLOUD_SYNC_REQUEST_TIMEOUT_MS:"90000",CLAUDE_MEM_LLM_TIMEOUT_MS:String(fK),CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS:String(fK),CLAUDE_MEM_TV_TOKEN:"",CLAUDE_MEM_PRO_TRIAL_EMAIL:"",CLAUDE_MEM_PRO_TRIAL_AT:"",CLAUDE_MEM_PRO_TRIAL_STATE:"",CLAUDE_MEM_PRO_TRIAL_ENDS_AT:"",CLAUDE_MEM_PRO_PLAN:"",CLAUDE_MEM_PRO_FALLBACK_AT:"",CLAUDE_MEM_PRO_FALLBACK_MESSAGE:"",CLAUDE_MEM_PRO_FALLBACK_ACTION:"",CLAUDE_MEM_PRO_FALLBACK_URL:"",CLAUDE_MEM_PRO_MEMORY_KEY:"",CLAUDE_MEM_PRO_MEMORY_BASE_URL:"",CLAUDE_MEM_PRO_MEMORY_MODEL:"",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_WRAPUPS_ENABLED:"true",CLAUDE_MEM_TELEGRAM_OBSERVATION_ALERTS_ENABLED:"false",CLAUDE_MEM_TELEGRAM_WRAPUP_ROUTES:"{}",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert,sensitive",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_AWARENESS_ENABLED:"true",CLAUDE_MEM_GROK_BOT_AWARENESS_AGENT_IDS:"521e962d-2ec3-4488-bfbc-54d5209ce118,95601360-61f7-4fd9-bb3a-2c976b2b85c0",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_URL:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_SECRET:"",CLAUDE_MEM_GROK_BOT_INJECT_ENABLED:"true",CLAUDE_MEM_GROK_BOT_INJECT_AGENT_IDS:"*",CLAUDE_MEM_GROK_BOT_INJECT_TIER:"episode",CLAUDE_MEM_GROK_BOT_INJECT_WINDOW:"80",CLAUDE_MEM_GROK_BOT_INJECT_FALLBACK:"house",CLAUDE_MEM_GROK_BOT_INJECT_PLATFORM_SOURCE:"",CLAUDE_MEM_GROK_BOT_INJECT_PROJECTS_BY_AGENT:"",CLAUDE_MEM_GROK_BOT_INJECT_MAX_LINE_CHARS:"160",CLAUDE_MEM_GROK_BOT_INJECT_DEBOUNCE_MS:"1500",CLAUDE_MEM_GROK_BOT_INJECT_STANDING_LINE:"",CLAUDE_MEM_CCS_ALIGN_ENABLED:"true",CLAUDE_MEM_CCS_ALIGN_VIEWER_IDS:"ccs-align",CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS:"false",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:"",CLAUDE_MEM_DEDUP_ENABLED:"false",CLAUDE_MEM_DEDUP_COSINE_THRESHOLD:"0.80",CLAUDE_MEM_DEDUP_IDF_VETO_DF:"10",CLAUDE_MEM_DEDUP_MIN_SHARED_TOKENS:"2",CLAUDE_MEM_DEDUP_MIN_PROJECT_DOCS:"10",CLAUDE_MEM_DEDUP_MAX_SCAN:"2000",CLAUDE_MEM_DEDUP_MAX_BACKFILL_ROWS:"50000",CLAUDE_MEM_WORKER_AUTOSTART:"true",CLAUDE_MEM_PROJECT_NAME_SOURCE:"path"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){let r=process.env[e]??this.DEFAULTS[e];return e==="CLAUDE_MEM_WORKER_HOST"?this.normalizeWorkerHost(r):r}static normalizeWorkerHost(e){return e==="localhost"?"127.0.0.1":e}static finalizeSettings(e,r){let i=r?this.applyEnvOverrides(e):e;return i.CLAUDE_MEM_WORKER_HOST=this.normalizeWorkerHost(i.CLAUDE_MEM_WORKER_HOST),i}static getInt(e){let r=this.get(e);return parseInt(r,10)}static applyEnvOverrides(e){let r={...e};for(let i of Object.keys(this.DEFAULTS))process.env[i]!==void 0&&(r[i]=process.env[i]);return r}static loadFromFile(e,r=!0){try{if(!dK(e)){let d=this.getAllDefaults();try{Fe(e,d,{mode:384});for(let p of mK)S_(e,p);console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(p){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,p instanceof Error?p.message:String(p))}return this.finalizeSettings(d,r)}let i=_ee(e,"utf-8"),n=io(i),o=ri(n),s=o!==n,a=p_(n),l=s&&Object.keys(a).some(d=>d!=="env");if(s&&!l)try{Fe(e,o,{mode:384}),console.warn("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(d){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,d instanceof Error?d.message:String(d))}if(o.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES===Tee){o={...o,CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:this.DEFAULTS.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES};try{Fe(e,l?{...a,env:o}:o,{mode:384}),console.warn("[SETTINGS] Migrated Telegram trigger types off the legacy default:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate Telegram trigger types:",e,d instanceof Error?d.message:String(d))}}if(Dee(o)){let d=String(o.CLAUDE_MEM_OPENROUTER_MODEL).trim();o={...o,CLAUDE_MEM_OPENROUTER_MODEL:this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL};try{Fe(e,l?{...a,env:o}:o,{mode:384}),console.warn(`[SETTINGS] Migrated OpenRouter model off the retired default ${d} to ${this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL}:`,e)}catch(p){console.warn("[SETTINGS] Failed to migrate the retired OpenRouter model:",e,p instanceof Error?p.message:String(p))}}let c=Pee(o.CLAUDE_MEM_CLOUD_SYNC_HUB_URL);if(c!==null){o={...o,CLAUDE_MEM_CLOUD_SYNC_HUB_URL:c};try{Fe(e,l?{...a,env:o}:o,{mode:384}),console.warn("[SETTINGS] Migrated cloud sync hub URL to",c,"from a retired hub host:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate cloud sync hub URL:",e,d instanceof Error?d.message:String(d))}}for(let d of mK)if(!dK(yK(e,d))){if(o[d.key]!==d.legacy){S_(e,d);continue}o={...o,[d.key]:this.DEFAULTS[d.key]};try{Fe(e,l?{...a,env:o}:o,{mode:384}),S_(e,d),console.warn(`[SETTINGS] Migrated ${d.key} off the old ${d.legacy}ms default to ${this.DEFAULTS[d.key]}ms:`,e)}catch(p){let f=`${d.key}\0${e}`;hK.has(f)||(hK.add(f),console.warn(`[SETTINGS] Failed to migrate ${d.key}; using the new default in memory (reported once per process):`,e,p instanceof Error?p.message:String(p)))}}let u={...this.DEFAULTS};for(let d of Object.keys(this.DEFAULTS))o[d]!==void 0&&(u[d]=o[d]);return this.finalizeSettings(u,r)}catch(i){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,i instanceof Error?i.message:String(i));let n=this.getAllDefaults();return this.finalizeSettings(n,r)}}}});var gK=E(()=>{"use strict";mr();Ne()});function Ju(t){return(t.CLAUDE_MEM_WORKER_AUTOSTART??"true").trim().toLowerCase()==="false"}var tm=E(()=>{"use strict"});var bK=E(()=>{"use strict"});function zu(t){return t.startsWith("[")&&t.endsWith("]")?t:t.includes(":")?`[${t}]`:t}var w_=E(()=>{"use strict"});import{spawn as Mee,spawnSync as EK}from"node:child_process";import{dirname as Nee,extname as rm,join as Kee}from"node:path";function ni(t,e,r){return Mee(t,e??[],{...r,windowsHide:!0})}function Lee(t){return`"${t.replace(/"/g,'""')}"`}function vK(t){return SK.has(rm(t).toLowerCase())}function I_(t){if(process.platform!=="win32")return[];try{let e=EK("where",[t],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0});return e.status!==0||!e.stdout.trim()?[]:e.stdout.split(/\r?\n/).map(r=>r.trim()).filter(Boolean)}catch{return[]}}function Fee(t,e){let r=t.find(vK);if(r)return r;let i=t.find(n=>k_.has(rm(n).toLowerCase()));if(i&&e){let n=e(i);if(n&&vK(n))return n}return i??t.find(n=>jee.has(rm(n).toLowerCase()))??t[0]??null}function Jee(t,e,r=$ee){if(!/[\\/]volta[\\/]bin[\\/]/i.test(e))return null;try{let i=r(Kee(Nee(e),"volta.exe"),["which",t],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:Uee,windowsHide:!0});return i.status!==0||!i.stdout.trim()?null:i.stdout.split(/\r?\n/).map(n=>n.trim()).find(Boolean)??null}catch{return null}}function Ci(t){return Fee(I_(t),e=>Jee(t,e))}function Ai(t,e,r,i=process.platform){let n={...r,...i==="win32"?{windowsHide:!0}:{}};if(i==="win32"&&k_.has(rm(t).toLowerCase())){let o=[t,...e].map(Lee).join(" ");return{command:process.env.ComSpec??"cmd.exe",args:["/d","/s","/c",`"${o}"`],options:{...n,windowsVerbatimArguments:!0}}}return{command:t,args:[...e],options:n}}var k_,SK,jee,Uee,$ee,ii=E(()=>{"use strict";k_=new Set([".cmd",".bat"]),SK=new Set([".exe",".com"]),jee=new Set([...SK,...k_]);Uee=5e3,$ee=(t,e,r)=>EK(t,e,r)});function zr(t=process.env){let e={};for(let[r,i]of Object.entries(t))if(i!==void 0){if(Gee.has(r)){e[r]=i;continue}qee.has(r)||zee.some(n=>r.startsWith(n))||(e[r]=i)}return e}var zee,qee,Bee,Gee,Gs=E(()=>{"use strict";zee=["CLAUDECODE_","CLAUDE_CODE_"],qee=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Bee=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy","npm_config_noproxy"]),Gee=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_TMPDIR","CLAUDE_CODE_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","CLAUDE_CODE_USE_FOUNDRY","CLAUDE_CODE_SKIP_BEDROCK_AUTH","CLAUDE_CODE_SKIP_VERTEX_AUTH","CLAUDE_CODE_SKIP_FOUNDRY_AUTH","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",...Bee])});import{spawnSync as wK}from"child_process";import{readFileSync as Wee}from"fs";function kK(t,e,r){if(r.status!==0)return null;if(typeof r.stdout!="string")return b.warn("SYSTEM","captureProcessStartToken: start-token probe returned no stdout",{pid:e,source:t,status:r.status}),null;let i=r.stdout.trim();return i.length>0?i:null}function Hee(t){x_+=1;let e=wK("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...zr(process.env),LC_ALL:"C",LANG:"C"}});return kK("powershell-cim",t,e)}function Yee(t,e=!1){if(!e){let i=_K.get(t);if(i&&(t===process.pid||Date.now()-i.capturedAtMs<Vee))return i.token}let r=null;try{r=Hee(t)}catch(i){b.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:i instanceof Error?i.message:String(i)}),r=null}return(r!==null||t!==process.pid)&&_K.set(t,{token:r,capturedAtMs:Date.now()}),r}function IK(t,e){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux"){x_+=1;try{let r=Wee(`/proc/${t}/stat`,"utf-8"),i=r.lastIndexOf(") ");if(i<0)return null;let o=r.slice(i+2).split(" ")[19];return o&&/^\d+$/.test(o)?o:null}catch(r){return b.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}if(process.platform==="win32")return Yee(t,e);x_+=1;try{let r=wK("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...zr(process.env),LC_ALL:"C",LANG:"C"}});return kK("ps-lstart",t,r)}catch(r){return b.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}function Oi(t){return IK(t,!1)}function oi(t,e){if(e===null)return!0;let r=IK(t,!0);return r===null?!0:r===e}var Vee,_K,x_,nm=E(()=>{"use strict";ve();Gs();Vee=5e3,_K=new Map,x_=0});import{execFile as Zee}from"child_process";import{readdirSync as Xee,readFileSync as Qee}from"fs";import{promisify as ete}from"util";async function si(t,e={}){let r=e.signalMode==="immediate",i=e.expectedStartToken!==void 0?e.expectedStartToken:Oi(t),n=()=>oi(t,i);if(!n()){b.warn("PROCESS","Skipping tree-kill: root PID was reused since it was captured",{pid:t});return}if(b.debug("PROCESS",`Killing process tree rooted at PID ${t}`,{immediate:r}),process.platform==="win32"){try{await T_("taskkill",["/PID",String(t),"/T","/F"],{timeout:5e3,windowsHide:!0})}catch(o){let s=o.code,a=String(o.stderr??""),l=o instanceof Error?o.message:String(o);if(s===tte||rte.test(`${a} ${l}`)){b.debug("PROCESS","taskkill reported the process was already gone",{pid:t});return}throw new im(t,`taskkill failed for PID ${t} (exit ${String(s)}): ${a.trim()||l}`,{cause:o})}return}try{let o=r?"SIGKILL":"SIGTERM",s=await om(t);for(let c of s){if(!oi(c.pid,c.startToken)){b.debug("PROCESS",`Skipping ${o}: descendant PID was reused since enumeration`,{pid:c.pid,rootPid:t});continue}try{process.kill(c.pid,o)}catch{}}if(n())try{process.kill(t,o)}catch(c){let u=c instanceof Error?c:new Error(String(c)),d=u.code;d!=="ESRCH"&&b.debug("PROCESS",`Failed to ${o} PID ${t}`,{code:d},u)}else b.warn("PROCESS","Skipping root signal: PID was reused during descendant enumeration",{pid:t,signal:o});r||await new Promise(c=>setTimeout(c,500));let a=n()?await om(t):[],l=new Map;for(let c of s)l.set(c.pid,c.startToken);for(let c of a)l.set(c.pid,c.startToken);for(let[c,u]of l){if(!oi(c,u)){b.debug("PROCESS","Skipping SIGKILL: descendant PID was reused since the scan",{pid:c,rootPid:t});continue}try{process.kill(c,"SIGKILL")}catch{}}if(!r&&n())try{process.kill(t,"SIGKILL")}catch{}}catch(o){throw new im(t,`tree-kill failed for PID ${t}: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}async function nte(){return process.platform==="win32"?ste():process.platform==="linux"?ite():ote()}function ite(){let t=[],e;try{e=Xee("/proc")}catch(r){return b.warn("PROCESS","Cannot read /proc \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),t}for(let r of e){if(!/^\d+$/.test(r))continue;let i;try{i=Qee(`/proc/${r}/stat`,"utf-8")}catch{continue}let n=i.lastIndexOf(") ");if(n<0)continue;let o=i.slice(n+2).split(" "),s=Number.parseInt(o[1]??"",10),a=o[19];Number.isFinite(s)&&t.push({pid:Number.parseInt(r,10),ppid:s,startToken:a&&/^\d+$/.test(a)?a:null})}return t}async function ote(){let t;try{t=(await T_("ps",["-eo","pid=,ppid=,lstart="],{timeout:1e4,maxBuffer:33554432,env:{...process.env,LC_ALL:"C",LANG:"C"}})).stdout}catch(r){return b.warn("PROCESS","Cannot enumerate the process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(`
|
|
14
14
|
`)){let i=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);if(!i)continue;let n=i[3].trim();e.push({pid:Number.parseInt(i[1],10),ppid:Number.parseInt(i[2],10),startToken:n.length>0?n:null})}return e}async function ste(){let t;try{t=(await T_("powershell.exe",["-NoProfile","-NonInteractive","-Command","Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,@{Name='StartToken';Expression={$_.CreationDate.ToString('yyyyMMddHHmmss.ffffff')}} | ConvertTo-Csv -NoTypeInformation"],{timeout:3e4,windowsHide:!0,maxBuffer:33554432})).stdout}catch(r){return b.warn("PROCESS","Cannot enumerate the Windows process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(/\r?\n/).slice(1)){let i=r.match(/^"(\d+)","(\d+)","(.*)"$/);if(!i)continue;let n=i[3].trim();e.push({pid:Number.parseInt(i[1],10),ppid:Number.parseInt(i[2],10),startToken:n.length>0?n:null})}return e}async function om(t){let e=await nte(),r=new Map;for(let s of e){let a=r.get(s.ppid);a?a.push(s):r.set(s.ppid,[s])}let i=new Set([t]),n=[],o=s=>{for(let a of r.get(s)??[])i.has(a.pid)||(i.add(a.pid),o(a.pid),n.push({pid:a.pid,startToken:a.startToken}))};return o(t),n}var T_,tte,rte,im,wl=E(()=>{"use strict";ve();nm();T_=ete(Zee),tte=128,rte=/not found|no running instance|no tasks/i,im=class extends Error{pid;constructor(e,r,i){super(r,i),this.name="ProcessTreeKillError",this.pid=e}}});import{existsSync as xK,readFileSync as R_}from"fs";import ate from"path";function wt(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:(b.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return b.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}async function sm(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.every(i=>!wt(i.pid)))return;await new Promise(i=>setTimeout(i,100))}}function TK(t){if(!t||!wt(t.pid))return!1;if(!t.startToken)return!0;let e=Oi(t.pid);if(e===null)return!0;let r=e===t.startToken;return r||b.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:t.pid,stored:t.startToken,current:e}),r}function kl(t,e=pte){if(!TK(t))return!1;if(t.startToken||e.platform!=="linux")return!0;let r;try{r=e.readCommandLine(t.pid)}catch(n){return b.debug("SYSTEM","Could not read the command line of a token-less worker PID; trusting the live PID",{pid:t.pid,error:n instanceof Error?n.message:String(n)}),!0}let i=r.split("\0").some(n=>ate.basename(n)==="worker-service.cjs");return i||b.debug("SYSTEM","Token-less worker PID now belongs to another program (PID reused)",{pid:t.pid}),i}function Ri(t=Je.workerPid()){if(!xK(t))return null;let e;try{e=JSON.parse(R_(t,"utf-8"))}catch{return null}return e!==null&&kl(e)?e:null}function am(){return C_||(C_=new O_),C_}function A_(){let t=fte.shift();t&&t.notify()}var lte,cte,ute,dte,pte,O_,C_,zPe,fte,ln=E(()=>{"use strict";ii();ve();Vt();Gs();Ne();nm();wl();lte=5e3,cte=1e3,ute=Je.supervisorRegistry(),dte=null;pte={platform:process.platform,readCommandLine:t=>R_(`/proc/${t}/cmdline`,"utf-8")};O_=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;persistDegraded=!1;constructor(e=ute){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,!xK(this.registryPath)){this.persist();return}try{let i=JSON.parse(R_(this.registryPath,"utf-8")).processes??{};for(let[n,o]of Object.entries(i))this.entries.set(n,o)}catch(r){r instanceof Error?b.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):b.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&b.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}retainSupersededEntry(e,r){let i=this.entries.get(e);if(!i||i.pid===r||!wt(i.pid))return;let n=`${e}#superseded:${i.pid}`;this.entries.set(n,i);let o=this.runtimeProcesses.get(e);o&&(this.runtimeProcesses.set(n,o),this.runtimeProcesses.delete(e)),b.warn("SYSTEM","Registry id reused while the previous process was still alive; kept it for reaping",{id:e,supersededId:n,supersededPid:i.pid,incomingPid:r})}register(e,r,i){this.initialize(),this.retainSupersededEntry(e,r.pid),this.entries.set(e,r),i&&this.runtimeProcesses.set(e,i),this.persist()}unregister(e,r){this.initialize();let i=e,n=this.entries.get(i);r!==void 0&&n?.pid!==r&&(i=`${e}#superseded:${r}`,n=this.entries.get(i),n?.pid!==r)||n&&(this.entries.delete(i),this.runtimeProcesses.delete(i),this.persist(),n?.type==="sdk"&&A_())}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 i=Date.parse(e.startedAt),n=Date.parse(r.startedAt);return(Number.isNaN(i)?0:i)-(Number.isNaN(n)?0:n)})}getBySession(e){let r=String(e);return this.getAll().filter(i=>i.sessionId!==void 0&&String(i.sessionId)===r)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}pruneDeadEntries(){this.initialize();let e=0,r=0;for(let[i,n]of this.entries)wt(n.pid)||(this.entries.delete(i),this.runtimeProcesses.delete(i),e+=1,n.type==="sdk"&&(r+=1));e>0&&this.persist();for(let i=0;i<r;i+=1)A_();return e}async reapSession(e){this.initialize();let r=this.getBySession(e);if(r.length===0)return 0;let i=typeof e=="number"?e:Number(e)||void 0;b.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:i,pids:r.map(a=>a.pid)});let n=r.filter(a=>wt(a.pid)),o=new Map(n.map(a=>[a.pid,Oi(a.pid)]));for(let a of n)try{process.platform==="win32"?await si(a.pid,{expectedStartToken:o.get(a.pid)??null}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGTERM"):process.kill(a.pid,"SIGTERM")}catch(l){l instanceof Error?l.code!=="ESRCH"&&b.debug("SYSTEM",`Failed to SIGTERM session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},l):b.warn("SYSTEM",`Failed to SIGTERM session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(l)})}await sm(n,lte);let s=n.filter(a=>wt(a.pid));for(let a of s){b.warn("SYSTEM",`Session process PID ${a.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:a.pid,pgid:a.pgid,sessionId:i});let l=o.get(a.pid)??null;if(!oi(a.pid,l)){b.warn("SYSTEM","Skipping SIGKILL: session process PID was reused during the grace window",{pid:a.pid,sessionId:i});continue}try{process.platform==="win32"?await si(a.pid,{expectedStartToken:l}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGKILL"):process.kill(a.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&b.debug("SYSTEM",`Failed to SIGKILL session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):b.warn("SYSTEM",`Failed to SIGKILL session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}}if(s.length>0){let a=Date.now()+cte;for(;Date.now()<a&&s.filter(c=>wt(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100))}for(let a of r)this.entries.delete(a.id),this.runtimeProcesses.delete(a.id);this.persist();for(let a of r)a.type==="sdk"&&A_();return b.info("SYSTEM",`Reaped ${r.length} process(es) for session ${e}`,{sessionId:i,reaped:r.length}),r.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};try{Fe(this.registryPath,e),this.persistDegraded=!1}catch(r){this.reportPersistFailure(r)}}reportPersistFailure(e){if(this.persistDegraded)return;this.persistDegraded=!0;let r=e instanceof Error?e:new Error(String(e));b.warn("SYSTEM","Failed to persist supervisor registry; keeping it in memory",{path:this.registryPath},r);try{dte?.({errorCategory:r.code??"unknown"})}catch{}}},C_=null;zPe=180*1e3,fte=[]});import{existsSync as mte,readFileSync as hte,rmSync as yte}from"fs";async function AK(t){let e=t.currentPid??process.pid,r=t.pidFilePath??gte,i=t.registry.getAll(),n=[...i].filter(l=>l.pid!==e).sort((l,c)=>Date.parse(c.startedAt)-Date.parse(l.startedAt)),o=new Map,s=new Map;for(let l of n){if(!wt(l.pid)){t.registry.unregister(l.id);continue}s.set(l.id,Oi(l.pid)),o.set(l.id,await om(l.pid));try{await CK(l,"SIGTERM")}catch(c){c instanceof Error?b.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:l.pid,pgid:l.pgid,type:l.type},c):b.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:l.pid,pgid:l.pgid,type:l.type,error:String(c)})}}await sm(n,5e3);let a=n.filter(l=>wt(l.pid)||(o.get(l.id)??[]).some(c=>wt(c.pid)));for(let l of a){let c=oi(l.pid,s.get(l.id)??null);c||b.warn("SYSTEM","Skipping tree-kill: root PID was reused during the grace window",{pid:l.pid,type:l.type});try{c&&await CK(l,"SIGKILL")}catch(u){u instanceof Error?b.debug("SYSTEM","Failed to force kill child process",{pid:l.pid,pgid:l.pgid,type:l.type},u):b.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:l.pid,pgid:l.pgid,type:l.type,error:String(u)})}finally{bte(o.get(l.id)??[],l.pid)}}await sm(a,1e3);for(let l of n)t.registry.unregister(l.id);for(let l of i.filter(c=>c.pid===e))t.registry.unregister(l.id);D_(r,e),t.registry.pruneDeadEntries()}function D_(t,e,r=!1){if(!mte(t))return;let i=null;try{let s=JSON.parse(hte(t,"utf-8"));i=typeof s.pid=="number"?s.pid:null}catch(s){b.debug("SYSTEM","PID file unreadable \u2014 leaving it (cannot prove ownership)",{pidFilePath:t,error:s instanceof Error?s.message:String(s)});return}let n=e!==null&&i===e,o=i===null||!wt(i);if(!n&&!(r&&o)){b.debug("SYSTEM","PID file not owned by this process \u2014 leaving it for its owner (restart successor?)",{pidFilePath:t,recordedPid:i,currentPid:e});return}try{yte(t,{force:!0})}catch(s){s instanceof Error?b.debug("SYSTEM","Failed to remove PID file",{pidFilePath:t},s):b.warn("SYSTEM","Failed to remove PID file (non-Error)",{pidFilePath:t,error:String(s)})}}function bte(t,e){for(let{pid:r,startToken:i}of t)if(!(r===e||!wt(r))){if(!oi(r,i)){b.debug("SYSTEM","Skipping reap: PID was recycled during the grace window",{pid:r,rootPid:e});continue}try{process.kill(r,"SIGKILL"),b.debug("SYSTEM","Reaped orphaned descendant during shutdown cascade",{pid:r,rootPid:e})}catch(n){let o=n instanceof Error?n.code:void 0;o!=="ESRCH"&&b.warn("SYSTEM","Failed to reap orphaned descendant during shutdown cascade",{pid:r,rootPid:e,errno:o})}}}async function CK(t,e){let{pid:r,pgid:i}=t;if(process.platform!=="win32"){if(typeof i=="number")try{process.kill(-i,e);return}catch(n){if((n instanceof Error?n.code:void 0)!=="ESRCH")throw n}if(e==="SIGKILL"){await si(r,{signalMode:"immediate"});return}try{process.kill(r,e)}catch(n){if((n instanceof Error?n.code:void 0)!=="ESRCH")throw n}return}await si(r)}var gte,P_=E(()=>{"use strict";ve();ln();Ne();wl();gte=Je.workerPid()});function vte(){let e=am().pruneDeadEntries();e>0&&b.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function RK(){Il===null&&(Il=setInterval(vte,OK),Il.unref(),b.debug("SYSTEM","Health checker started",{intervalMs:OK}))}function DK(){Il!==null&&(clearInterval(Il),Il=null,b.debug("SYSTEM","Health checker stopped"))}var OK,Il,PK=E(()=>{"use strict";ve();ln();OK=3e4,Il=null});import{execFile as Ete}from"child_process";import{promisify as Ste}from"util";function kte(t){let e=[];for(let r of t.split(`
|
|
15
15
|
`)){let i=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);i&&e.push({pid:Number.parseInt(i[1],10),ppid:Number.parseInt(i[2],10),command:i[3].trim()})}return e}async function M_(){let t=await _te("ps",["-eo","pid=,ppid=,command="],{timeout:1e4,maxBuffer:33554432});return kte(t.stdout)}function N_(t,e){let r=t.filter(s=>wte.test(s.command)&&s.pid!==e.selfPid),i=new Set(r.map(s=>s.pid)),n=r.filter(s=>!i.has(s.ppid)),o=n.filter(s=>s.ppid===e.selfPid?!1:s.ppid===1?!0:!e.isAlive(s.ppid));return{matched:r,roots:n,orphans:o}}async function MK(t={}){let e=t.platform??process.platform,r={matched:0,trees:0,orphans:0,killed:0,failed:0,unregistered:0,skipped:null};if(e==="win32")return r.skipped="windows",r;let i=t.readTable??M_,n=t.isAlive??wt,o=t.killTree??(f=>si(f,{signalMode:"graceful"})),s=t.selfPid??process.pid,a;try{a=await i()}catch(f){return b.warn("PROCESS","Orphaned chroma-mcp sweep skipped: cannot read the process table",{error:f instanceof Error?f.message:String(f)}),r.skipped="unreadable",r}let{matched:l,roots:c,orphans:u}=N_(a,{isAlive:n,selfPid:s});if(r.matched=l.length,r.trees=c.length,r.orphans=u.length,u.length===0)return b.debug("PROCESS","No orphaned chroma-mcp trees found",{matched:r.matched,trees:r.trees}),r;b.warn("PROCESS","Reaping orphaned chroma-mcp trees left by dead workers",{orphans:u.length,roots:u.map(f=>f.pid)});let d=new Set,p=8;for(let f=0;f<u.length;f+=p){let m=u.slice(f,f+p);(await Promise.allSettled(m.map(g=>o(g.pid)))).forEach((g,S)=>{let v=m[S];g.status==="fulfilled"?(r.killed+=1,d.add(v.pid)):(r.failed+=1,b.warn("PROCESS","Failed to reap an orphaned chroma-mcp tree",{pid:v.pid,ppid:v.ppid,error:g.reason instanceof Error?g.reason.message:String(g.reason)}))})}if(t.registry)for(let f of t.registry.getAll())f.type==="chroma"&&d.has(f.pid)&&(t.registry.unregister(f.id),r.unregistered+=1);return b.info("PROCESS","Orphaned chroma-mcp sweep finished",{orphans:r.orphans,killed:r.killed,failed:r.failed,unregistered:r.unregistered}),r}var _te,wte,K_=E(()=>{"use strict";ve();wl();ln();_te=Ste(Ete),wte=/(?:^|\/)(?:uvx|uv|python[\d.]*)(?:\s|$).*chroma-mcp/});import{existsSync as Ite,readFileSync as xte,rmSync as NK}from"fs";function L_(){return Cte}function U_(t={}){let e=t.pidFilePath??Tte;if(!Ite(e))return"missing";let r=null;try{r=JSON.parse(xte(e,"utf-8"))}catch(n){return n instanceof Error?b.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},n):b.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(n)}),NK(e,{force:!0}),"invalid"}return kl(r)&&r?((t.logAlive??!0)&&b.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(t.removeStale===!1||(b.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),NK(e,{force:!0})),"stale")}var Tte,j_,Cte,qu=E(()=>{"use strict";ve();ln();P_();PK();K_();Ne();ln();Tte=Je.workerPid(),j_=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(),U_({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,MK({registry:this.registry}).catch(r=>{b.warn("PROCESS","Orphaned chroma-mcp sweep failed",{error:r instanceof Error?r.message:String(r)})}),RK()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async i=>{if(this.shutdownInitiated){b.warn("SYSTEM",`Received ${i} but shutdown already in progress`);return}this.shutdownInitiated=!0,b.info("SYSTEM",`Received ${i}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(n){n instanceof Error?b.error("SYSTEM","Error during shutdown",{},n):b.error("SYSTEM","Error during shutdown (non-Error)",{error:String(n)});try{await this.stop()}catch(o){o instanceof Error?b.debug("SYSTEM","Supervisor shutdown fallback failed",{},o):b.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(o)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{b.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}DK(),this.stopPromise=AK({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,i){this.registry.register(e,r,i)}unregisterProcess(e,r){this.registry.unregister(e,r)}getRegistry(){return this.registry}},Cte=new j_(am())});import{existsSync as Ate,readFileSync as Ote}from"fs";function Ht(t,e){if(!Ate(t))return e;try{return io(Ote(t,"utf-8"))}catch(r){throw new Error(`Corrupt JSON file, refusing to overwrite: ${t}: ${r instanceof Error?r.message:String(r)}`)}}var jo=E(()=>{"use strict";Vt()});import{join as KK}from"path";import{mkdirSync as Rte,writeFileSync as Dte}from"fs";import{randomUUID as Pte}from"crypto";function Mte(t){let e=t.DO_NOT_TRACK;return e===void 0||e===""?!1:e!=="0"&&e!=="false"}function $_(t,e){if(Mte(t))return{enabled:!1,source:"DO_NOT_TRACK"};let r=t.CLAUDE_MEM_TELEMETRY?.toLowerCase();return r==="0"||r==="false"||r==="off"?{enabled:!1,source:"env"}:r==="1"||r==="true"||r==="on"?{enabled:!0,source:"env"}:e?.enabled===!0?{enabled:!0,source:"config"}:e?.enabled===!1?{enabled:!1,source:"config"}:{enabled:!0,source:"default"}}function LK(t,e){return $_(t,e).enabled}function Bu(){return KK(an(),jK)}function Lo(){let t;try{t=Ht(Bu(),null)}catch(e){let r=e instanceof Error?e:new Error(String(e));return b.warn("SYSTEM","Telemetry: corrupt telemetry.json; treating as no recorded consent",void 0,r),null}return!t||typeof t!="object"||typeof t.installId!="string"||t.enabled!==void 0&&typeof t.enabled!="boolean"?null:{enabled:t.enabled,installId:t.installId,decidedAt:typeof t.decidedAt=="string"?t.decidedAt:""}}function xl(t){let e=an();Rte(e,{recursive:!0}),Dte(KK(e,jK),JSON.stringify(t,null,2)+`
|
|
16
|
-
`)}function lm(){let t=Lo();if(t?.installId)return t.installId;let e=Pte();return xl({installId:e,decidedAt:""}),e}var jK,cm=E(()=>{"use strict";Ne();jo();ve();jK="telemetry.json"});import Nte from"os";function Kte(t){try{if(typeof t!="string"){if(t==null)return"";try{t=String(t)}catch(r){let i=r instanceof Error?r:new Error(String(r));return b.warn("SYSTEM","error-scrub: String() coercion of non-string input failed",void 0,i),""}}let e=t;return e.length>UK?e.slice(0,UK):e}catch{return""}}function jte(t){if(typeof t!="string"||t.length===0)return t??"";let e="";try{e=Nte.homedir()||""}catch(i){let n=i instanceof Error?i:new Error(String(i));b.warn("SYSTEM","error-scrub: os.homedir() failed; skipping home-dir redaction",void 0,n),e=""}if(!e)return t;let r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");try{return t.replace(new RegExp(r,"g"),"~")}catch(i){let n=i instanceof Error?i:new Error(String(i));return b.warn("SYSTEM","error-scrub: home-dir RegExp replace failed; using split/join fallback",void 0,n),t.split(e).join("~")}}function Lte(t){return typeof t!="string"||t.length===0?t??"":t.replace(/(?<![~\w])\/(?:[^\s/:"'()]+\/)+([^\s/:"'()]+)/g,"$1").replace(/[A-Za-z]:\\(?:[^\s\\:"'()]+\\)*([^\s\\:"'()]+)/g,"$1").replace(/\\\\[^\s\\:"'()]+(?:\\[^\s\\:"'()]+)*\\([^\s\\:"'()]+)/g,"$1")}function Ute(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\b[A-Za-z][A-Za-z0-9+.-]*:\/\/[^\s"'()]+/g,e=>/^https?:\/\/hooks\.slack\.com\/services\//i.test(e)?e.replace(/^(https?:\/\/hooks\.slack\.com\/services\/)[^\s"'()]+/i,`$1${On}`):e.replace(/[?#].*$/,"").replace(/^([A-Za-z][A-Za-z0-9+.-]*:\/\/)[^/@\s]+@/,`$1${On}@`))}function $te(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\?[^\s"'()]*/g,"")}function Fte(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\b(?:access[_-]?token|api[_-]?key|auth(?:orization)?|secret|password|passwd|jwt|session[_-]?id|token)=[^\s"'&]+/gi,e=>{let r=e.indexOf("=");return`${e.slice(0,r+1)}${On}`})}function Jte(t){if(typeof t!="string"||t.length===0)return t??"";let e=t;return e=e.replace(/[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,255}\.[A-Za-z]{2,24}/g,On),e=e.replace(/\b[A-Za-z0-9_-]{10,512}\.[A-Za-z0-9_-]{10,512}\.[A-Za-z0-9_-]{10,512}\b/g,On),e=e.replace(/\b(?:sk|pk|rk|ak|phc|phx|ph|ghp|gho|ghs|xox[bpasr])[-_][A-Za-z0-9_-]{8,512}\b/gi,On),e=e.replace(/\bBearer\s+[A-Za-z0-9._-]{8,512}\b/gi,On),e=e.replace(/\b(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA|ANVA|AIPA)[0-9A-Z]{16}\b/g,On),e=e.replace(/\b[0-9a-fA-F]{24,4096}\b/g,On),e=e.replace(/\b[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}\b/g,On),e=e.replace(/\b(?=[A-Za-z0-9+/_-]{0,4096}\d)[A-Za-z0-9+/_-]{32,4096}={0,2}\b/g,On),e=e.replace(/\b(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}\b/g,On),e}function $K(t){let e=Kte(t);return e.length===0?"":(e=jte(e),e=Ute(e),e=Lte(e),e=$te(e),e=Fte(e),e=Jte(e),e)}var UK,On,FK=E(()=>{"use strict";ve();UK=8192,On="[REDACTED]"});function qte(t,e){if(!(!t||typeof t!="object"))for(let r of Object.keys(t)){if(!zte.has(r))continue;let i=t[r];if(typeof i=="string"){let n=i.length>JK?i.slice(0,JK):i;e[r]=$K(n)}else(typeof i=="number"&&Number.isFinite(i)||typeof i=="boolean")&&(e[r]=i)}}function zK(t){let e={};try{qte(t,e)}catch{}return e}var zte,JK,qK=E(()=>{"use strict";FK();zte=new Set(["version","os","os_version","is_wsl","arch","runtime","runtime_version","node_version","duration_ms","outcome","error_category","locale","is_ci","endpoint","ide","provider","runtime_mode","trigger","count","has_summary","is_update","stage","phase","install_method","interactive","provider_source","bun_version","uv_version","claude_code_version","trial_days","trial_variant","offer_surface","funnel_source","observation_count","session_count","timeline_depth_days","has_session_summary","obs_type_bugfix","obs_type_discovery","obs_type_decision","obs_type_refactor","obs_type_other","tokens_injected","tokens_saved_vs_naive","mode","search_strategy","observation_type","hook","compression_ms","tokens_input","tokens_output","compression_ratio","model","cost_usd","endpoint_class","db_observation_count","db_session_count","db_summary_count","db_project_count","db_size_mb","install_age_days","obs_count_7d","obs_count_30d","days_since_last_obs","result_count","chroma_available","fallback_reason","invalid_output_class","consecutive_invalid_outputs","respawn_triggered","abort_reason","previous_shutdown","previous_uptime_seconds","uptime_seconds","shutdown_reason","process_rss_mb","heap_used_mb","hook_type","error_mode","consecutive_failures","threshold_tripped","limit_window","overage_status","is_using_overage","resets_in_minutes","discovery_tokens","read_tokens","summary_count","prompt_count","project_count","backfilled","first_active_date","session_completed_count","session_failed_count","sessions_claude_count","sessions_codex_count","sessions_gemini_count","sessions_other_platform_count","subagent_obs_count","total_tokens_input","total_tokens_output","total_cost_usd","avg_duration_ms","avg_compression_ms","outcomes_ok","outcomes_error","outcomes_aborted","outcomes_aborted_deadline_exceeded","outcomes_invalid_output","top_model","top_abort_reason","observed_model","observed_billing","window_start_ts","rollup_reason","window_seq","total_tokens","avg_tokens","skill_id","skill_source","skill_trigger","observations_created","total_observations_injected","total_tokens_saved_vs_naive"]),JK=200});import BK from"os";function GK(){return process.env.CLAUDE_MEM_TELEMETRY_KEY||Gte}function WK(){return process.env.CLAUDE_MEM_TELEMETRY_HOST||Wte}function VK(t){let e={};for(let r of Vte)t[r]!==void 0&&(e[r]=t[r]);return e}function Hte(){if(process.platform!=="linux")return!1;try{return!!process.env.WSL_DISTRO_NAME||BK.release().toLowerCase().includes("microsoft")}catch(t){let e=t instanceof Error?t:new Error(String(t));return b.warn("SYSTEM","Telemetry: WSL detection failed; reporting is_wsl=false",void 0,e),!1}}function HK(){return{version:Bte,os:process.platform,os_version:BK.release(),is_wsl:Hte(),arch:process.arch,runtime:process.versions.bun?"bun":"node",runtime_version:process.versions.bun??process.versions.node,node_version:process.versions.node,is_ci:!!process.env.CI,locale:Intl.DateTimeFormat().resolvedOptions().locale}}var Bte,Gte,Wte,Vte,YK=E(()=>{"use strict";ve();Bte="13.34.
|
|
16
|
+
`)}function lm(){let t=Lo();if(t?.installId)return t.installId;let e=Pte();return xl({installId:e,decidedAt:""}),e}var jK,cm=E(()=>{"use strict";Ne();jo();ve();jK="telemetry.json"});import Nte from"os";function Kte(t){try{if(typeof t!="string"){if(t==null)return"";try{t=String(t)}catch(r){let i=r instanceof Error?r:new Error(String(r));return b.warn("SYSTEM","error-scrub: String() coercion of non-string input failed",void 0,i),""}}let e=t;return e.length>UK?e.slice(0,UK):e}catch{return""}}function jte(t){if(typeof t!="string"||t.length===0)return t??"";let e="";try{e=Nte.homedir()||""}catch(i){let n=i instanceof Error?i:new Error(String(i));b.warn("SYSTEM","error-scrub: os.homedir() failed; skipping home-dir redaction",void 0,n),e=""}if(!e)return t;let r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");try{return t.replace(new RegExp(r,"g"),"~")}catch(i){let n=i instanceof Error?i:new Error(String(i));return b.warn("SYSTEM","error-scrub: home-dir RegExp replace failed; using split/join fallback",void 0,n),t.split(e).join("~")}}function Lte(t){return typeof t!="string"||t.length===0?t??"":t.replace(/(?<![~\w])\/(?:[^\s/:"'()]+\/)+([^\s/:"'()]+)/g,"$1").replace(/[A-Za-z]:\\(?:[^\s\\:"'()]+\\)*([^\s\\:"'()]+)/g,"$1").replace(/\\\\[^\s\\:"'()]+(?:\\[^\s\\:"'()]+)*\\([^\s\\:"'()]+)/g,"$1")}function Ute(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\b[A-Za-z][A-Za-z0-9+.-]*:\/\/[^\s"'()]+/g,e=>/^https?:\/\/hooks\.slack\.com\/services\//i.test(e)?e.replace(/^(https?:\/\/hooks\.slack\.com\/services\/)[^\s"'()]+/i,`$1${On}`):e.replace(/[?#].*$/,"").replace(/^([A-Za-z][A-Za-z0-9+.-]*:\/\/)[^/@\s]+@/,`$1${On}@`))}function $te(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\?[^\s"'()]*/g,"")}function Fte(t){return typeof t!="string"||t.length===0?t??"":t.replace(/\b(?:access[_-]?token|api[_-]?key|auth(?:orization)?|secret|password|passwd|jwt|session[_-]?id|token)=[^\s"'&]+/gi,e=>{let r=e.indexOf("=");return`${e.slice(0,r+1)}${On}`})}function Jte(t){if(typeof t!="string"||t.length===0)return t??"";let e=t;return e=e.replace(/[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,255}\.[A-Za-z]{2,24}/g,On),e=e.replace(/\b[A-Za-z0-9_-]{10,512}\.[A-Za-z0-9_-]{10,512}\.[A-Za-z0-9_-]{10,512}\b/g,On),e=e.replace(/\b(?:sk|pk|rk|ak|phc|phx|ph|ghp|gho|ghs|xox[bpasr])[-_][A-Za-z0-9_-]{8,512}\b/gi,On),e=e.replace(/\bBearer\s+[A-Za-z0-9._-]{8,512}\b/gi,On),e=e.replace(/\b(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA|ANVA|AIPA)[0-9A-Z]{16}\b/g,On),e=e.replace(/\b[0-9a-fA-F]{24,4096}\b/g,On),e=e.replace(/\b[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}\b/g,On),e=e.replace(/\b(?=[A-Za-z0-9+/_-]{0,4096}\d)[A-Za-z0-9+/_-]{32,4096}={0,2}\b/g,On),e=e.replace(/\b(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}\b/g,On),e}function $K(t){let e=Kte(t);return e.length===0?"":(e=jte(e),e=Ute(e),e=Lte(e),e=$te(e),e=Fte(e),e=Jte(e),e)}var UK,On,FK=E(()=>{"use strict";ve();UK=8192,On="[REDACTED]"});function qte(t,e){if(!(!t||typeof t!="object"))for(let r of Object.keys(t)){if(!zte.has(r))continue;let i=t[r];if(typeof i=="string"){let n=i.length>JK?i.slice(0,JK):i;e[r]=$K(n)}else(typeof i=="number"&&Number.isFinite(i)||typeof i=="boolean")&&(e[r]=i)}}function zK(t){let e={};try{qte(t,e)}catch{}return e}var zte,JK,qK=E(()=>{"use strict";FK();zte=new Set(["version","os","os_version","is_wsl","arch","runtime","runtime_version","node_version","duration_ms","outcome","error_category","locale","is_ci","endpoint","ide","provider","runtime_mode","trigger","count","has_summary","is_update","stage","phase","install_method","interactive","provider_source","bun_version","uv_version","claude_code_version","trial_days","trial_variant","offer_surface","funnel_source","observation_count","session_count","timeline_depth_days","has_session_summary","obs_type_bugfix","obs_type_discovery","obs_type_decision","obs_type_refactor","obs_type_other","tokens_injected","tokens_saved_vs_naive","mode","search_strategy","observation_type","hook","compression_ms","tokens_input","tokens_output","compression_ratio","model","cost_usd","endpoint_class","db_observation_count","db_session_count","db_summary_count","db_project_count","db_size_mb","install_age_days","obs_count_7d","obs_count_30d","days_since_last_obs","result_count","chroma_available","fallback_reason","invalid_output_class","consecutive_invalid_outputs","respawn_triggered","abort_reason","previous_shutdown","previous_uptime_seconds","uptime_seconds","shutdown_reason","process_rss_mb","heap_used_mb","hook_type","error_mode","consecutive_failures","threshold_tripped","limit_window","overage_status","is_using_overage","resets_in_minutes","discovery_tokens","read_tokens","summary_count","prompt_count","project_count","backfilled","first_active_date","session_completed_count","session_failed_count","sessions_claude_count","sessions_codex_count","sessions_gemini_count","sessions_other_platform_count","subagent_obs_count","total_tokens_input","total_tokens_output","total_cost_usd","avg_duration_ms","avg_compression_ms","outcomes_ok","outcomes_error","outcomes_aborted","outcomes_aborted_deadline_exceeded","outcomes_invalid_output","top_model","top_abort_reason","observed_model","observed_billing","window_start_ts","rollup_reason","window_seq","total_tokens","avg_tokens","skill_id","skill_source","skill_trigger","observations_created","total_observations_injected","total_tokens_saved_vs_naive"]),JK=200});import BK from"os";function GK(){return process.env.CLAUDE_MEM_TELEMETRY_KEY||Gte}function WK(){return process.env.CLAUDE_MEM_TELEMETRY_HOST||Wte}function VK(t){let e={};for(let r of Vte)t[r]!==void 0&&(e[r]=t[r]);return e}function Hte(){if(process.platform!=="linux")return!1;try{return!!process.env.WSL_DISTRO_NAME||BK.release().toLowerCase().includes("microsoft")}catch(t){let e=t instanceof Error?t:new Error(String(t));return b.warn("SYSTEM","Telemetry: WSL detection failed; reporting is_wsl=false",void 0,e),!1}}function HK(){return{version:Bte,os:process.platform,os_version:BK.release(),is_wsl:Hte(),arch:process.arch,runtime:process.versions.bun?"bun":"node",runtime_version:process.versions.bun??process.versions.node,node_version:process.versions.node,is_ci:!!process.env.CI,locale:Intl.DateTimeFormat().resolvedOptions().locale}}var Bte,Gte,Wte,Vte,YK=E(()=>{"use strict";ve();Bte="13.34.2",Gte="phc_BKJAeNbpj932N9qEiU6qhutZEiu6LLfRpXfTbLM9MLaG",Wte="https://us.i.posthog.com";Vte=["version","os","os_version","is_wsl","arch","runtime","locale","ide","provider","runtime_mode","install_method","claude_code_version","first_active_date","db_observation_count","db_session_count","db_summary_count","db_project_count","db_size_mb","install_age_days","obs_count_7d","obs_count_30d","days_since_last_obs"]});async function kr(t,e,r){try{if(!LK(process.env,Lo()))return;let i=zK({...HK(),...e??{}});if(r?.person?i.$set=VK(i):i.$process_person_profile=!1,process.env.CLAUDE_MEM_TELEMETRY_DEBUG==="1"){process.stderr.write("[telemetry] "+JSON.stringify({event:t,properties:i})+`
|
|
17
17
|
`);return}let n=GK(),o=new AbortController,s=setTimeout(()=>o.abort(),Yte);try{await Zte(n,t,i,o.signal)}finally{clearTimeout(s)}}catch{}}async function Zte(t,e,r,i){await fetch(`${WK()}/capture/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:t,event:e,distinct_id:lm(),properties:r}),signal:i})}var Yte,Gu=E(()=>{"use strict";cm();qK();YK();Yte=2e3});import{createHash as LMe,randomUUID as UMe}from"crypto";var ZK=E(()=>{"use strict";ve()});import{randomUUID as GMe}from"crypto";var XK=E(()=>{"use strict";ve();ZK()});import{statSync as Xte,readFileSync as Qte}from"fs";import Ws from"path";function QK(t){let e=Ws.join(t,".git"),r;try{r=Xte(e)}catch(l){return l instanceof Error&&l.code!=="ENOENT"&&b.warn("GIT","Unexpected error checking .git",{error:l instanceof Error?l.message:String(l)}),Wu}if(!r.isFile())return Wu;let i;try{i=Qte(e,"utf-8").trim()}catch(l){return b.warn("GIT","Failed to read .git file",{error:l instanceof Error?l.message:String(l)}),Wu}let n=i.match(/^gitdir:\s*(.+)$/);if(!n)return Wu;let o=Ws.resolve(Ws.dirname(e),n[1]),s=o.match(/^(.+)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)$/);if(s){let l=s[1];return{isWorktree:!0,isSubmodule:!1,worktreeName:Ws.basename(t),parentRepoPath:l,parentProjectName:Ws.basename(l)}}let a=o.match(/^(.+)[/\\]\.git[/\\]modules[/\\](.+)$/);if(a){let l=a[1];return{isWorktree:!1,isSubmodule:!0,worktreeName:Ws.basename(t),parentRepoPath:l,parentProjectName:Ws.basename(l)}}return Wu}var Wu,ej=E(()=>{"use strict";ve();Wu={isWorktree:!1,isSubmodule:!1,worktreeName:null,parentRepoPath:null,parentProjectName:null}});import{basename as ere}from"path";function tre(t){let e=sn(t.replace(/\\/g,"/"));e=e.replace(/\\/g,"/");let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&");return r=r.replace(/\*\*/g,"<<<GLOBSTAR>>>").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/<<<GLOBSTAR>>>/g,".*"),new RegExp(`^${r}$`)}function tj(t,e){if(!e.length)return!1;let r=t.replace(/\\/g,"/"),i=ere(r);for(let n of e){let o=n.trim();if(o)try{let s=tre(o);if(s.test(r)||s.test(i))return!0}catch(s){b.warn("PROJECT_NAME","Invalid glob pattern",{pattern:o,error:s instanceof Error?s.message:String(s)});continue}}return!1}var rj=E(()=>{"use strict";Fu();ve()});import{realpathSync as rre}from"fs";function nj(t){let e=t;if(typeof e=="string"){if(!e.trim())return[];try{e=JSON.parse(e)}catch(i){return b.warn("PROJECT_NAME","CLAUDE_MEM_PROJECT_ENVIRONMENTS is not valid JSON; ignoring it",{error:i instanceof Error?i.message:String(i)}),[]}}if(!Array.isArray(e))return e!=null&&b.warn("PROJECT_NAME","CLAUDE_MEM_PROJECT_ENVIRONMENTS must be an array; ignoring it",{}),[];let r=[];for(let i of e){let n=typeof i?.name=="string"?i.name.trim():"",o=Array.isArray(i?.patterns)?i.patterns.filter(s=>typeof s=="string"&&s.trim()!==""):[];if(!n||o.length===0){b.warn("PROJECT_NAME","Ignoring a project environment without a name or patterns",{name:n});continue}r.push({name:n,patterns:o})}return r}function nre(t){try{return rre(t)}catch{return t}}function F_(t,e){if(e.length===0)return null;let r=[...new Set([t,nre(t)])].flatMap(i=>[i,`${i.replace(/[\\/]+$/,"")}/`]);for(let i of e)if(r.some(n=>tj(n,i.patterns)))return i.name;return null}var ij=E(()=>{"use strict";rj();ve()});import qr from"path";import{existsSync as ire,realpathSync as ore,statSync as sre}from"fs";import{homedir as are,tmpdir as lre}from"os";import{execFileSync as aj}from"child_process";function lj(t){try{return aj("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0}).trim()||null}catch(e){let r=e instanceof Error?e:new Error(String(e));return b.debug("PROJECT_NAME","git rev-parse failed, falling back to non-git root",{dir:t},r),null}}function cj(t){try{return ore(t)}catch{return t}}function dre(t,e){let r=qr.relative(e,t);return r===""||!r.startsWith("..")&&!qr.isAbsolute(r)}function pre(){return[are(),lre(),qs].flatMap(t=>{let e=qr.resolve(t);return[e,cj(e)]})}function uj(t){let e=pre(),r=qr.resolve(t);if([qr.resolve(qs),cj(qr.resolve(qs))].some(n=>dre(r,n)))return null;for(let n=0;n<ure;n++){if(e.includes(r))return null;let o=qr.dirname(r);if(o===r)return null;if(cre.some(s=>ire(qr.join(r,s))))return r;r=o}return null}function z_(t,e){let r=qr.basename(e);if(r===""){if(process.platform==="win32"){let n=t.match(/^([A-Z]):\\/i);if(n){let s=`drive-${n[1].toUpperCase()}`;return b.info("PROJECT_NAME","Drive root detected",{cwd:t,projectName:s}),s}}return b.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:t}),q_}return r}function oj(){try{return sre(Ue).mtimeMs}catch{return-1}}function dj(){let t=oj();if(t===-1)return Te.getAllDefaults();if(um&&um.mtimeMs===t)return um.settings;let e=Te.loadFromFile(Ue);return um={mtimeMs:oj(),settings:e},e}function mre(){let t=process.env[fre]??dj().CLAUDE_MEM_PROJECT_NAME_SOURCE;return String(t??"path").trim().toLowerCase()==="git-remote"}function pj(){let t=process.env[hre]??dj().CLAUDE_MEM_PROJECT_ENVIRONMENTS;return(!dm||dm.raw!==t)&&(dm={raw:t,environments:nj(t)}),dm.environments}function yre(t){let e=(t??"").trim();if(!e||/^file:/i.test(e)||e.startsWith("/")||e.startsWith(".")||e.startsWith("~")||e.startsWith("\\\\")||/^[a-z]:[\\/]/i.test(e))return null;let i=e.replace(/\/+$/,"").replace(/\.git$/i,""),n=i.match(/^[a-z][a-z0-9+.-]*:\/\/[^/]+\/(.+)$/i),o=n?null:i.match(/^(?:[^/@\s]+@)?[^:/\s]+:(?!\/\/)(.+)$/),s=n?.[1]??o?.[1];if(!s)return null;let a=s.split("/").filter(l=>l&&l!=="_git");return a.length>=2?a.slice(-2).join("/"):a.length===1?a[0]:null}function gre(t){try{let e=aj("git",["remote","get-url","origin"],{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0}).trim();return yre(e)}catch(e){let r=e instanceof Error?e:new Error(String(e));return b.debug("PROJECT_NAME","No usable origin remote, keeping the path-based name",{repoRoot:t},r),null}}function fj(t){return mre()?(J_.has(t)||J_.set(t,gre(t)),J_.get(t)??null):null}function bre(t,e=process.platform){if(!t||t.trim()==="")return b.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:t}),q_;let r=sn(t,e),i=F_(r,pj());if(i)return i;let n=lj(r),o=n?fj(n):null;if(o)return o;let s=n??uj(r)??r;return z_(t,s)}function mj(t,e){return e===t?t:`${t}/${e}`}function vre(t,e){if(!t.isSubmodule||!t.parentRepoPath)return null;let r=qr.relative(t.parentRepoPath,e);return!r||r.startsWith("..")||qr.isAbsolute(r)?null:r.split(qr.sep).join("/")}function Vu(t,e=process.platform){if(!t||t.trim()===""){let l=bre(t,e);return{primary:l,parent:null,isWorktree:!1,isSubmodule:!1,allProjects:[l],keySource:"path"}}let r=sn(t,e),i=lj(r),n=Ere(t,r,i),o=i?fj(i):null,s=o?sj(n,o,"git-remote"):n,a=F_(r,pj());return a?sj(s,a,"environment"):s}function sj(t,e,r){return{primary:e,parent:null,isWorktree:t.isWorktree,isSubmodule:t.isSubmodule,allProjects:[...t.allProjects.filter(i=>i!==e),e],keySource:r}}function Ere(t,e,r){let i=r?null:uj(e),n=z_(t,r??i??e),o=r??e,s=QK(o);if((s.isWorktree||s.isSubmodule)&&s.parentProjectName){let a=s.parentProjectName,l,c;return s.isSubmodule?(l=`${a}/${vre(s,o)??n}`,c=n!==a?[n]:[]):(l=mj(a,n),c=l===a?[`${a}/${n}`]:[]),{primary:l,parent:a,isWorktree:s.isWorktree,isSubmodule:s.isSubmodule,allProjects:[...new Set([a,...c,l])].filter(u=>u!==l).concat(l),keySource:"path"}}if(i&&qr.resolve(i)!==qr.resolve(e)){let a=z_(t,e);if(a!==n&&a!==q_)return{primary:n,parent:null,isWorktree:!1,isSubmodule:!1,allProjects:[a,n],keySource:"path"}}return{primary:n,parent:null,isWorktree:!1,isSubmodule:!1,allProjects:[n],keySource:"path"}}var q_,cre,ure,fre,um,hre,dm,J_,pm=E(()=>{"use strict";Fu();Ne();mr();ve();ej();ij();q_="unknown-project";cre=[".claude-mem-project",".claude-mem.json"],ure=64;fre="CLAUDE_MEM_PROJECT_NAME_SOURCE",um=null;hre="CLAUDE_MEM_PROJECT_ENVIRONMENTS",dm=null;J_=new Map});import cn from"path";import{homedir as Sre,tmpdir as wNe}from"os";import{existsSync as fm,writeFileSync as INe,readFileSync as _re,unlinkSync as xNe,mkdirSync as wre,statSync as TNe,utimesSync as kre,copyFileSync as CNe,realpathSync as Ire}from"fs";import{execFileSync as xre,spawnSync as gj}from"child_process";function Tre(t){return t===void 0?hj:Math.max(1,Math.min(hj,t))}function Cre(t){try{return Ire(t)}catch{return null}}function B_(t){return t?/(^|[\\/])bun(\.exe)?$/i.test(t.trim()):!1}function Are(t,e){let r=e==="win32"?"where.exe":"which",i=[t],n;try{n=xre(r,i,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(s){return s instanceof Error?b.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r,args:i},s):b.debug("SYSTEM",`Binary lookup failed for ${t}`,{command:r,args:i},new Error(String(s))),null}return n.split(/\r?\n/).map(s=>s.trim()).find(s=>s.length>0)||null}function W_(t={}){let e=Object.keys(t).length===0;if(e&&G_!==void 0)return G_;let r=Ore(t);return e&&r!==null&&(G_=r),r}function yj(t,e){let r=t?.trim();return r?e==="win32"?[cn.join(r,"bin","bun.exe"),cn.join(r,"bin","bun"),cn.join(r,"bun.exe")]:[cn.join(r,"bin","bun"),cn.join(r,"bun")]:[]}function Ore(t){let e=t.platform??process.platform,r=t.execPath??process.execPath;if(B_(r))return r;let i=t.env??process.env,n=t.homeDirectory??Sre(),o=t.pathExists??fm,s=t.lookupInPath??Are,a=t.realpath??Cre,l=e==="win32"?[i.BUN,i.BUN_PATH,...yj(i.BUN_INSTALL,e),cn.join(n,".bun","bin","bun.exe"),cn.join(n,".bun","bin","bun"),i.USERPROFILE?cn.join(i.USERPROFILE,".bun","bin","bun.exe"):void 0,i.LOCALAPPDATA?cn.join(i.LOCALAPPDATA,"bun","bun.exe"):void 0,i.LOCALAPPDATA?cn.join(i.LOCALAPPDATA,"bun","bin","bun.exe"):void 0,i.npm_config_prefix?cn.join(i.npm_config_prefix,"bun.exe"):void 0]:[i.BUN,i.BUN_PATH,...yj(i.BUN_INSTALL,e),cn.join(n,".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun","/usr/bin/bun","/snap/bin/bun",i.npm_config_prefix?cn.join(i.npm_config_prefix,"bin","bun"):void 0];for(let d of l){let p=d?.trim();if(p&&(B_(p)&&o(p)||p.toLowerCase()==="bun"))return p}let c=s("bun",e)?.trim();if(!c||!B_(c))return null;let u=a(c)??c;return o(u)?u:null}function vj(){if(!fm(Vs))return null;try{return JSON.parse(_re(Vs,"utf-8"))}catch(t){return t instanceof Error?b.warn("SYSTEM","Failed to parse PID file",{path:Vs},t):b.warn("SYSTEM","Failed to parse PID file",{path:Vs},new Error(String(t))),null}}function Ej(t){D_(Vs,t,!0)}function Uo(t){return process.platform==="win32"?Math.round(t*2):t}function V_(){let t=Je.dataDir();return wre(t,{recursive:!0}),t}function Rre(t,e,r=V_()){let i=n=>n.replace(/'/g,"''");return`Start-Process -FilePath '${i(t)}' -ArgumentList @('"${i(e)}"','--daemon') -WorkingDirectory '${i(r)}' -WindowStyle Hidden`}function Mre(t,e,r){return t?.code!=="ETIMEDOUT"?!1:e<r/2}function Sj(t,e=Uo(Dre)){let r=W_();if(!r)return;let i=()=>{let a=Date.now();try{return{result:gj(r,[t,"status"],{encoding:"utf-8",timeout:e,windowsHide:!0,env:zr({...process.env})}),elapsedMs:Date.now()-a}}catch(l){let c=l instanceof Error?l:new Error(String(l));b.debug("SYSTEM","Worker boot probe could not be launched",{scriptPath:t},c);return}},n=i();if(n===void 0||Mre(n.result.error,n.elapsedMs,e)&&(b.debug("SYSTEM","Worker boot probe timed out before it could run \u2014 retrying once",{scriptPath:t,elapsedMs:n.elapsedMs,timeoutMs:e}),n=i(),n===void 0))return;let{result:o}=n;if(o.error||o.status===0)return;let s=`${o.stdout??""}${o.stderr??""}`.trim();if(s)return s.split(/\r?\n/).slice(0,Pre).join(`
|
|
18
18
|
`)}function Nre(t=process.env){let e=t.SystemRoot||t.SYSTEMROOT;return e?`${e}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`:"powershell.exe"}function Kre(t,e,r=V_()){return["-NoProfile","-WindowStyle","Hidden","-EncodedCommand",Buffer.from(Rre(t,e,r),"utf16le").toString("base64")]}function _j(t,e,r,i=process.platform,n){if(i==="win32"){let u=Nre(r),d=Kre(t,e),p=Tre(n);try{let f=gj(u,d,{stdio:"ignore",windowsHide:!0,env:r,timeout:p,killSignal:"SIGTERM"});if(f.error)throw f.error;if(f.signal)throw new Error(`powershell Start-Process killed by signal=${f.signal} after ${p}ms`);if(f.status!==0)throw new Error(`powershell Start-Process exited ${f.status??"null"}`);return 0}catch(f){let m=f instanceof Error?f:new Error(String(f));b.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:t,powershell:u},m);return}}let o="/usr/bin/setsid",s=fm(o),a=s?o:t,c=ni(a,s?[t,e,"--daemon"]:[e,"--daemon"],{detached:!0,stdio:"ignore",cwd:V_(),env:r});if(c.on("error",u=>{b.error("SYSTEM",bj,{runtimePath:t,execPath:a},u)}),c.pid!==void 0)return c.unref(),c.pid}function wj(t,e,r={}){L_().assertCanSpawn("worker daemon");let i=zr({...process.env,CLAUDE_MEM_WORKER_PORT:String(e),...r}),n=W_();if(!n){b.error("SYSTEM",bj);return}return _j(n,t,i)}function kj(){try{if(!fm(Vs))return;let t=new Date;kre(Vs,t,t)}catch{}}function Hu(t={}){return U_({logAlive:!1,removeStale:t.removeStale})}var hj,$Ne,Vs,bj,G_,Dre,Pre,mm=E(()=>{"use strict";ii();ve();Gs();P_();qu();XK();pm();Ne();Bs();ln();hj=oo(Pt.POWERSHELL_COMMAND);$Ne=Je.dataDir(),Vs=Je.workerPid(),bj="Bun runtime not found \u2014 install from https://bun.sh and ensure it is on PATH, under ~/.bun/bin, or set BUN / BUN_PATH / BUN_INSTALL. The worker daemon requires Bun because it uses bun:sqlite.";Dre=5e3,Pre=8});function H_(t,e){if(!t||typeof t!="object"||e.has(t))return!1;e.add(t);let r=t;return typeof r.code=="string"&&jre.has(r.code)||H_(r.cause,e)?!0:Array.isArray(r.errors)&&r.errors.some(i=>H_(i,e))}function Tl(t){return H_(t,new Set)?!0:t instanceof Error&&t.message.includes("ECONNREFUSED")}function Ij(t){let e=t?.code;return e==="EACCES"||e==="EADDRNOTAVAIL"}var jre,hm,Cl=E(()=>{"use strict";jre=new Set(["ECONNREFUSED","ConnectionRefused"]);hm="Set CLAUDE_MEM_WORKER_PORT to a port between 1024 and 65535 and CLAUDE_MEM_WORKER_HOST to an address of this machine (127.0.0.1 by default) in claude-mem settings"});import Lre from"net";function Y_(){return Te.loadFromFile(Ue).CLAUDE_MEM_WORKER_HOST}function xj(t){return t.startsWith("[")&&t.endsWith("]")?t:t.includes(":")?`[${t}]`:t}async function Ure(t,e,r="GET",i=Yu){let n=await fetch(`http://${xj(Y_())}:${t}${e}`,{method:r,signal:AbortSignal.timeout(Math.max(1,i))}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function Z_(t,e=Yu){let r=Date.now()+e;if(process.platform==="win32")try{let n=await fetch(`http://${xj(Y_())}:${t}/api/health`,{signal:AbortSignal.timeout(Math.max(1,r-Date.now()))});if(n.ok)return!0;b.debug("SYSTEM","Windows health check returned non-ok; falling through to socket probe",{port:t,status:n.status})}catch(n){n instanceof Error?b.debug("SYSTEM","Windows health check threw; falling through to socket probe",{port:t,message:n.message}):b.debug("SYSTEM","Windows health check threw; falling through to socket probe",{port:t,error:String(n)})}let i=await Tj(t,Math.max(1,r-Date.now()));return i==="occupied"||i==="indeterminate"}async function Tj(t,e=Yu){return(await X_(t,e)).occupancy}function X_(t,e=Yu){return e<=0?Promise.resolve({occupancy:"indeterminate"}):new Promise(r=>{let i=!1,n=!1,o=!1,s;try{s=Lre.createServer()}catch{r({occupancy:"indeterminate"});return}let a=u=>{if(o){u?.();return}o=!0;try{s.close(u)}catch(d){u?.(d instanceof Error?d:new Error(String(d)))}},l=setTimeout(()=>{if(n)a();else try{s.close()}catch{}c({occupancy:"indeterminate"})},e),c=u=>{i||(i=!0,clearTimeout(l),r(u))};s.once("error",u=>{if(n)a();else try{s.close()}catch{}u.code==="EADDRINUSE"?c({occupancy:"occupied"}):Ij(u)?c({occupancy:"unbindable",bindErrorCode:u.code}):c({occupancy:"indeterminate"})}),s.once("listening",()=>{if(n=!0,i){a();return}try{a(u=>c({occupancy:u?"indeterminate":"free"}))}catch{c({occupancy:"indeterminate"})}});try{s.listen(t,Y_())}catch{try{s.close()}catch{}c({occupancy:"indeterminate"})}})}async function Cj(t,e,r,i){let n=Date.now()+r;for(;Date.now()<n;){try{let s=n-Date.now();if((await Ure(t,e,"GET",Math.min(Yu,s))).ok)return!0}catch(s){s instanceof Error?b.debug("SYSTEM",i,{},s):b.debug("SYSTEM",i,{error:String(s)})}let o=Math.min(500,n-Date.now());o>0&&await new Promise(s=>setTimeout(s,o))}return!1}function $o(t,e=3e4){return Cj(t,"/api/health",e,"Service not ready yet, will retry")}function Al(t,e=3e4){return Cj(t,"/api/readiness",e,"Worker not ready yet, will retry")}var Yu,Zu=E(()=>{"use strict";ve();mr();Ne();Cl();Yu=5e3});var Aj=E(()=>{"use strict";ve();qu()});var Oj=E(()=>{"use strict";mm();Zu();Aj()});import{dirname as $re,join as Fre}from"path";import{mkdirSync as Jre,readFileSync as ym,statSync as Rj,unlinkSync as Dj,utimesSync as zre,writeFileSync as qre}from"fs";function ew(){return Fre(an(),"spawn.lock")}function Q_(t){try{let e=JSON.parse(ym(t,"utf-8"));return typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0?null:e.pid}catch{return null}}function Wre(t){if(t===null)return null;try{return process.kill(t,0),!0}catch(e){return e?.code==="EPERM"}}function bm(){let t=ew(),e=JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()});for(let r=0;r<2;r++)try{return Jre($re(t),{recursive:!0}),qre(t,e,{flag:"wx"}),!0}catch(i){let n=i instanceof Error?i:new Error(String(i)),o=n.code;if(o!=="EEXIST")return b.warn("SYSTEM","Spawn lock write failed for a non-contention reason; failing open (spawning unlocked)",{lockPath:t,code:o},n),!0;if(r>0)return!1;let s;try{s=Rj(t).mtimeMs}catch{continue}let a=Q_(t),l=null;if(a===null)try{l=ym(t,"utf-8")}catch{continue}if(Date.now()-s<=gm&&Wre(a)!==!1)return!1;let u;try{u=Rj(t).mtimeMs}catch{continue}if(u!==s)return!1;if(a!==null){if(Q_(t)!==a)return!1}else try{if(ym(t,"utf-8")!==l)return!1}catch{continue}try{Dj(t)}catch{return!1}}return!1}function vm(){let t=ew();try{if(JSON.parse(ym(t,"utf-8")).pid!==process.pid)return;Dj(t)}catch{}}async function tw(t,e=Bre){let r=Date.now()+t;for(;!bm();){if(Date.now()>=r)return null;await new Promise(n=>setTimeout(n,Gre))}let i=setInterval(Vre,e);return i.unref(),()=>{clearInterval(i),vm()}}function Vre(){let t=ew();try{if(Q_(t)!==process.pid)return;let e=new Date;zre(t,e,e)}catch{}}var gm,Bre,Gre,Em=E(()=>{"use strict";Ne();ve();gm=9e4,Bre=gm/3,Gre=250});import{execFile as Hre}from"node:child_process";import{promisify as Yre}from"node:util";function Pj(t){return Zre.test(t.trim())}function Xre(t,e){if(!t)return!1;let r=t.toLowerCase().replace(/\\/g,"/"),i=r.indexOf("--data-dir");if(i<0)return!1;let n=r.slice(i+10).trim();if(n.startsWith('"')){let s=n.indexOf('"',1);n=s<0?n.slice(1):n.slice(1,s)}let o=e.toLowerCase().replace(/\\/g,"/");return n===o||n.startsWith(o)&&n[o.length]==="/"}function _m(t,e){return e===void 0?t:Math.max(1,Math.min(t,e))}async function Qre(t){try{let e=await Sm("powershell.exe",["-NoProfile","-NonInteractive","-Command","Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,CommandLine,@{Name='StartToken';Expression={$_.CreationDate.ToString('yyyyMMddHHmmss.ffffff')}} | ConvertTo-Json -Compress"],{timeout:_m(3e4,t),windowsHide:!0,maxBuffer:33554432}),r=JSON.parse(e.stdout),i=Array.isArray(r)?r:r===null?[]:[r],n=[];for(let o of i){let s=typeof o.Name=="string"?o.Name.trim():"";if(!s)continue;let a=typeof o.ProcessId=="number"?o.ProcessId:Number.parseInt(String(o.ProcessId),10),l=typeof o.ParentProcessId=="number"?o.ParentProcessId:Number.parseInt(String(o.ParentProcessId),10);!Number.isInteger(a)||!Number.isInteger(l)||n.push({pid:a,ppid:l,name:s,cmdline:typeof o.CommandLine=="string"?o.CommandLine:null,startToken:typeof o.StartToken=="string"&&o.StartToken.length>0?o.StartToken:null})}return n}catch(e){return b.warn("PROCESS","Cannot enumerate the Windows process table with names \u2014 ghost-port reclaim disabled",{error:e instanceof Error?e.message:String(e)}),null}}async function ene(t,e){try{let r=await Sm("netstat",["-ano"],{timeout:_m(15e3,e),windowsHide:!0,maxBuffer:16777216});return ine(r.stdout,t)}catch(r){return b.warn("PROCESS","netstat failed \u2014 ghost-port reclaim disabled for this attempt",{port:t,error:r instanceof Error?r.message:String(r)}),null}}async function tne(t,e){try{let r=await Sm("lsof",["-nP",`-iTCP:${t}`,"-sTCP:LISTEN","-t"],{timeout:_m(1e4,e),maxBuffer:1048576});return rne(r.stdout)}catch(r){let i=r;return i.code===1&&typeof i.stdout=="string"&&i.stdout.trim()===""?[]:(b.warn("PROCESS","lsof failed \u2014 cannot verify the worker port owner",{port:t,error:r instanceof Error?r.message:String(r)}),null)}}function rne(t){let e=new Set;for(let r of t.split(/\r?\n/)){let i=Number.parseInt(r.trim(),10);Number.isInteger(i)&&i>0&&e.add(i)}return[...e]}async function nne(t,e){try{let i=(await Sm("ps",["-p",String(t),"-o","command="],{timeout:_m(5e3,e)})).stdout.trim();return i.length>0?i:null}catch{return null}}function ine(t,e){let r=new Set,i=`:${e}`;for(let n of t.split(/\r?\n/)){let o=n.trim();if(!/^TCP\b/i.test(o))continue;let s=o.split(/\s+/);if(!s[1]?.endsWith(i)||s[3]!=="LISTENING")continue;let l=Number.parseInt(s[4]??"",10);Number.isInteger(l)&&l>0&&r.add(l)}return[...r]}async function sne(t,e){let r=e.readOwnedWorker();if(r===null||r.port!==t)return null;let i=(c,u={})=>(b.info("PROCESS","Wedged-worker reclaim declined",{port:t,pid:r.pid,reason:c,...u}),{reclaimed:!1,reason:c,killedPids:[]}),n=(e.now()-Date.parse(r.startedAt))/1e3;if(!Number.isFinite(n)||n<e.minOwnerAgeSeconds)return i("owner-booting",{ageSeconds:n,minOwnerAgeSeconds:e.minOwnerAgeSeconds});for(let c=0;c<2;c++)if(c>0&&await e.sleep(Kj),await e.probeHealth(t))return i("owner-responding");let o=await e.listOwners(t);if(o===null)return i("netstat-unreadable");if(!o.includes(r.pid))return b.info("PROCESS","Wedged-worker reclaim: our worker does not own the port \u2014 deferring to the ghost-listener check",{port:t,pid:r.pid,listeners:o}),null;let s=await e.readIdentity(r.pid),a=r.startToken!==void 0&&s.startToken!==null&&s.startToken!==r.startToken;if(a||s.cmdline===null||!one.test(s.cmdline))return i("owner-identity-mismatch",{tokenMismatch:a,hasCmdline:s.cmdline!==null});if(!e.hasKillBudget())return i("out-of-budget");b.warn("PROCESS","Reclaiming wedged worker: past its boot grace, silent on two health probes, and still holding the port",{port:t,pid:r.pid,ageSeconds:Math.round(n)});try{await e.killTree(r.pid,{expectedStartToken:s.startToken??r.startToken??void 0,signalMode:"graceful"})}catch(c){return b.error("PROCESS","Wedged-worker reclaim tree-kill failed",{port:t,pid:r.pid},c instanceof Error?c:new Error(String(c))),{reclaimed:!1,reason:"kill-failed",killedPids:[]}}let l=await e.listOwners(t);return l!==null&&l.length===0?(b.info("PROCESS","Wedged worker reclaimed \u2014 port is free again",{port:t,killedPids:[r.pid]}),{reclaimed:!0,killedPids:[r.pid]}):(b.warn("PROCESS","Wedged-worker reclaim killed the worker but the port is still bound",{port:t,pid:r.pid,stillOwnedBy:l}),{reclaimed:!1,reason:"still-bound",killedPids:[r.pid]})}async function ane(t,e,r,i){let n=Oi(t),o=e?(await r(i))?.find(s=>s.pid===t)?.cmdline??null:await nne(t,i);return oi(t,n)?{startToken:n,cmdline:o}:{startToken:null,cmdline:null}}async function nw(t,e={}){let r=e.isWin32??(()=>process.platform==="win32"),i=e.now??Date.now,n=e.deadlineAt??null,o=B=>n!==null&&n-i()<B,s=()=>n===null?void 0:Math.max(1,n-i());if(o(Mj))return b.info("PROCESS","Port reclaim skipped: not enough of the hook budget is left to finish one",{port:t,remainingMs:s(),neededMs:Mj}),{reclaimed:!1,reason:"out-of-budget",killedPids:[]};let a=e.listOwners??((B,Q)=>r()?ene(B,Q):tne(B,Q)),l=B=>a(B,s()),c=e.readTable??Qre,u=()=>c(s()),d=e.killTree??((B,Q)=>si(B,Q)),p=e.dataDir??(()=>We),f=e.readIdentity??((B,Q)=>ane(B,r(),c,Q)),m=await sne(t,{listOwners:l,killTree:d,readOwnedWorker:e.readOwnedWorker??Ri,probeHealth:e.probeHealth??(B=>$o(B,Nj)),readIdentity:B=>f(B,s()),minOwnerAgeSeconds:e.minOwnerAgeSeconds??sK(),now:i,sleep:e.sleep??(B=>new Promise(Q=>setTimeout(Q,B))),hasKillBudget:()=>!o(rw)});if(m!==null)return m;if(!r())return{reclaimed:!1,reason:"not-supported",killedPids:[]};let h=await l(t);if(h===null)return{reclaimed:!1,reason:"netstat-unreadable",killedPids:[]};if(h.length===0)return{reclaimed:!1,reason:"no-listener",killedPids:[]};let g=await u();if(g===null)return{reclaimed:!1,reason:"table-unreadable",killedPids:[]};if(h.filter(B=>wt(B)).length>0)return{reclaimed:!1,reason:"owner-alive",killedPids:[]};let v=new Map;for(let B of g){let Q=v.get(B.ppid);Q?Q.push(B):v.set(B.ppid,[B])}let T=new Map,O=new Set,M=B=>{for(let Q of v.get(B)??[])O.has(Q.pid)||(O.add(Q.pid),M(Q.pid),Pj(Q.name)&&T.set(Q.pid,Q))};for(let B of h)M(B);let z=p();if(z)for(let B of g)T.has(B.pid)||Pj(B.name)&&Xre(B.cmdline,z)&&T.set(B.pid,B);if(T.size===0)return b.info("PROCESS","Ghost listener owner is dead but no chroma-sidecar descendants found",{port:t,deadOwners:h,processTableRows:g.length,dataDir:z??"(unresolved)"}),{reclaimed:!1,reason:"no-chroma-descendants",killedPids:[]};b.warn("PROCESS","Reclaiming ghost listener: killing dead worker's surviving chroma sidecar chain",{port:t,deadOwners:h,targets:[...T.values()].map(B=>({pid:B.pid,name:B.name}))});let F=[];for(let B of T.values()){if(o(rw))return b.info("PROCESS","Ghost-listener reclaim stopped before a kill: the hook budget is spent",{port:t,killedPids:F}),{reclaimed:!1,reason:"out-of-budget",killedPids:F};try{await d(B.pid,{expectedStartToken:B.startToken,signalMode:"immediate"}),F.push(B.pid)}catch(Q){return b.error("PROCESS","Ghost-port reclaim tree-kill failed",{port:t,pid:B.pid},Q instanceof Error?Q:new Error(String(Q))),{reclaimed:!1,reason:"kill-failed",killedPids:F}}}let ce=await l(t);return ce!==null&&ce.length===0?(b.info("PROCESS","Ghost listener reclaimed \u2014 port is free again",{port:t,killedPids:F}),{reclaimed:!0,killedPids:F}):(b.warn("PROCESS","Ghost-port reclaim killed the sidecar chain but the port is still bound",{port:t,killedPids:F,stillOwnedBy:ce}),{reclaimed:!1,reason:"still-bound",killedPids:F})}var Sm,Zre,one,Nj,Kj,rw,Mj,iw=E(()=>{"use strict";ve();wl();ln();qu();Zu();nm();Bs();Ne();Sm=Yre(Hre),Zre=/^(uv|uvx|python|chroma-mcp)(\.exe)?$/i;one=/worker-service/i,Nj=1500,Kj=1e3,rw=5500,Mj=2*Nj+Kj+rw});import{existsSync as lne,readFileSync as cne,realpathSync as une}from"fs";import{createRequire as dne}from"module";import Hs from"path";function jj(t){try{return une(t)}catch{return t}}function fne(t,e){let r=Hs.relative(e,t);return r!==""&&!r.startsWith("..")&&!Hs.isAbsolute(r)}function ow(t){let e;try{let n=JSON.parse(cne(Hs.join(t,"package.json"),"utf-8"));e=Object.keys(n?.dependencies??{})}catch{return[]}if(e.length===0)return[];let r=Hs.join(t,"node_modules"),i=e.filter(n=>!lne(Hs.join(r,...n.split("/"),"package.json")));if(e.includes("zod")&&!i.includes("zod")){let n=dne(Hs.join(r,"noop.js")),o=jj(Hs.join(r,"zod"));for(let s of pne)try{let a=n.resolve(s,{paths:[r]});fne(jj(a),o)||i.push(s)}catch{i.push(s)}}return i}var pne,Lj=E(()=>{"use strict";pne=["zod/v3","zod/v4","zod/v4-mini"]});import Mt from"path";import{randomUUID as OKe}from"crypto";import{readFileSync as mne,existsSync as Tm,writeFileSync as DKe,renameSync as PKe,mkdirSync as MKe,readdirSync as hne,statSync as yne,unlinkSync as NKe}from"fs";function Fj(t,e,r){let i=process.env[t];if(i){let n=parseInt(i,10);if(Number.isFinite(n)&&n>=r.min&&n<=r.max)return n;b.warn("SYSTEM",`Invalid ${t}, using default`,{value:i,min:r.min,max:r.max})}return e}function Jj(t=process.env){let e=t.CLAUDE_MEM_FETCH_VERBOSE;if(e===void 0)return!1;let r=e.trim().toLowerCase();return r==="1"||r==="true"||r==="on"||r==="yes"}function bne(t){return Jj()?{...t,verbose:!0}:t}function vne(t){let e={},r=t;for(let i=0;r&&i<4;i++){let n=i===0?"error":`cause${i}`;if(r instanceof Error){let o=r;e[n]={name:r.name,message:r.message,...o.code!==void 0?{code:o.code}:{}},r=r.cause;continue}e[n]=String(r);break}return e}function Ene(t,e,r){let i=typeof e.method=="string"?e.method:"GET",n=vne(r),o=JSON.stringify(n);b.warn("SYSTEM","Worker IPC fetch failed",{url:t,method:i},o),ti(`[claude-mem] fetch verbose: ${i} ${t} ${o}
|
|
19
19
|
`)}async function sw(t,e={}){let r=bne(e);try{return await fetch(t,r)}catch(i){throw Jj()&&Ene(t,e,i),i}}async function Sne(t,e={},r){try{return await sw(t,{...e,signal:AbortSignal.timeout(r)})}catch(i){throw i instanceof DOMException&&i.name==="TimeoutError"?new Error(`Request timed out after ${r}ms`):i}}function _ne(t,e){let r=new AbortController,i=null,n=null,o=null,s=!1,a=()=>{n!==null&&(clearTimeout(n),n=null)},l=()=>{s=!0,a(),o!==null&&(clearTimeout(o),o=null)},c=d=>{s||(i=d,l(),r.abort(d))},u=()=>{s||(a(),n=setTimeout(()=>c(new Error(`Request timed out after ${t.idleTimeoutMs}ms idle`)),t.idleTimeoutMs))};if(t.absoluteCapMs!==void 0&&t.absoluteCapMs>0){let d=t.absoluteCapMs;o=setTimeout(()=>c(new Error(`Request timed out after ${d}ms`)),d)}return u(),{signal:e?AbortSignal.any([e,r.signal]):r.signal,touch:u,pause:a,dispose:l,translate:d=>i??d}}async function wne(t,e,r){let i=_ne(r,e.signal),n;try{n=await sw(t,{...e,signal:i.signal})}catch(c){throw i.dispose(),i.translate(c)}i.touch();let o=n.body,s=o?o.getReader():null,a=!1;async function*l(){if(!s){a=!0,i.dispose();return}try{for(;;){i.touch();let c;try{c=await s.read()}catch(u){throw a=!0,i.translate(u)}if(c.done){a=!0;return}i.pause(),r.onChunk?.(c.value),yield c.value}}finally{i.dispose(),a||await s.cancel()}}return{status:n.status,statusText:n.statusText,ok:n.ok,headers:n.headers,chunks:l(),cancel:async()=>{i.dispose(),s&&!a&&(a=!0,await s.cancel())}}}async function kne(t,e,r){let i=await wne(t,e,r),n=new TextDecoder,o="";for await(let s of i.chunks)o+=n.decode(s,{stream:!0});return o+=n.decode(),{status:i.status,statusText:i.statusText,ok:i.ok,headers:i.headers,text:o}}function Ine(){return Mt.join(Te.get("CLAUDE_MEM_DATA_DIR"),"settings.json")}function aw(){return Im!==null||(Im=Te.loadFromFile(Ine())),Im}function Uj(t,e){if(!t)return null;let r=parseInt(t,10);return Number.isFinite(r)&&r>=e.min&&r<=e.max?r:null}function xne(t,e,r){let i=process.env[t];if(i!==void 0){let s=Uj(i,r);return s!==null?s:(b.warn("SYSTEM",`Invalid ${t}, using default`,{value:i,min:r.min,max:r.max}),e)}let n=aw()[t],o=Uj(n,r);return o!==null?o:(b.warn("SYSTEM",`Invalid ${t} in settings.json, using default`,{value:n,min:r.min,max:r.max}),e)}function lw(){if(wm!==null)return wm;let t=aw();return wm=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),wm}function cw(){return km!==null||(km=aw().CLAUDE_MEM_WORKER_HOST),km}function Tne(){return xm!==null||(xm=xne("CLAUDE_MEM_API_TIMEOUT_MS",oo(Pt.API_REQUEST),gne)),xm}function uw(t){return`http://${zu(cw())}:${lw()}${t}`}function Ol(t,e={}){let r=e.method??"GET",i=uw(t),n={method:r};if(e.headers&&(n.headers=e.headers),e.body&&(n.body=e.body),e.idleTimeoutMs!==void 0&&e.idleTimeoutMs>0)return kne(i,n,{idleTimeoutMs:e.idleTimeoutMs,absoluteCapMs:e.timeoutMs}).then(s=>new Response(s.text.length>0?s.text:null,{status:s.status,statusText:s.statusText,headers:s.headers}));let o=e.timeoutMs??Tne();return o>0?Sne(i,n,o):sw(i,n)}function zj(t){let e=Tm(Mt.join(t,"plugin","scripts"))?Mt.join(t,"plugin"):t;return Mt.join(e,"scripts","worker-service.cjs")}function dw(t,e){let r=d=>{let p=d.split("-")[0].split(".");return[parseInt(p[0],10)||0,parseInt(p[1],10)||0,parseInt(p[2],10)||0]},[i,n,o]=r(t),[s,a,l]=r(e);if(s!==i)return s-i;if(a!==n)return a-n;if(l!==o)return l-o;let c=t.includes("-")?1:0,u=e.includes("-")?1:0;return c!==u?c-u:t<e?1:t>e?-1:0}function pw(t=Mt.join(Mt.dirname(Mt.dirname(Jr)),"cache","thedotmack","claude-mem")){try{return hne(t).filter(e=>/^\d/.test(e)).map(e=>Mt.join(t,e)).filter(e=>{try{if(!yne(e).isDirectory())return!1}catch{return!1}return!Tm(Mt.join(e,".orphaned_at"))}).map(e=>({scriptPath:zj(e),version:Mt.basename(e)}))}catch{return[]}}function $j(t){try{let e=JSON.parse(mne(t,"utf-8"));return typeof e.version=="string"?e.version:null}catch(e){let r=e.code;return r!=="ENOENT"&&b.debug("SYSTEM","Could not read package version for worker resolution",{packageJsonPath:t,code:r}),null}}function qj(){return{cacheRoot:Mt.join(Mt.dirname(Mt.dirname(Jr)),"cache","thedotmack","claude-mem"),marketplaceRoot:Jr,cwd:process.cwd()}}function fw(t=qj()){let e=process.env.CLAUDE_MEM_WORKER_SCRIPT_PATH?.trim();if(e){if(Tm(e))return{scriptPath:e,version:null};b.debug("SYSTEM","Ignoring missing CLAUDE_MEM_WORKER_SCRIPT_PATH override",{override:e})}let r=[...pw(t.cacheRoot),{scriptPath:zj(Mt.join(t.marketplaceRoot,"plugin")),version:$j(Mt.join(t.marketplaceRoot,"package.json"))},{scriptPath:Mt.join(t.cwd,"plugin","scripts","worker-service.cjs"),version:$j(Mt.join(t.cwd,"package.json"))}];return mw(r)}function Bj(t){return Mt.dirname(Mt.dirname(t))}function Cne(t){return ow(Bj(t.scriptPath)).length===0}function mw(t,e=Cne){let r=t.filter(i=>Tm(i.scriptPath));return r.length===0?null:(r.sort((i,n)=>i.version===null&&n.version===null?0:i.version===null?1:n.version===null?-1:dw(i.version,n.version)),r.find(e)??r[0])}function Rl(t=qj()){let e=fw(t);if(!e)return null;let r=Bj(e.scriptPath);return{root:r,version:e.version,missingDependencies:ow(r)}}var ije,oje,gne,sje,wm,km,Im,xm,Ane,One,aje,Fo=E(()=>{"use strict";ve();Bs();lK();mr();Ne();gK();tm();bK();w_();qu();$u();Gu();Oj();Zu();Cl();mm();Em();iw();Gs();wl();Vt();Lj();w_();ije=Fj("CLAUDE_MEM_HEALTH_TIMEOUT_MS",oo(Pt.HEALTH_CHECK),{min:500,max:3e5}),oje=Fj("CLAUDE_MEM_HOOK_READINESS_TIMEOUT_MS",oo(Pt.HOOK_READINESS_WAIT),{min:0,max:3e5}),gne={min:500,max:3e5},sje={min:500,max:Pt.SESSION_INIT_REQUEST_MAX};wm=null,km=null,Im=null,xm=null;Ane=1e3,One=5e3,aje=One+Ane});import{existsSync as hw,readFileSync as Gj}from"fs";import{homedir as Rne}from"os";import{dirname as Dne,join as un}from"path";import{fileURLToPath as Pne}from"url";function yw(){return process.env.CLAUDE_CONFIG_DIR||un(Rne(),".claude")}function hr(){return un(yw(),"plugins","marketplaces","thedotmack")}function Ys(){return un(yw(),"plugins")}function Dl(){return un(Ys(),"known_marketplaces.json")}function Jo(){return un(Ys(),"installed_plugins.json")}function zo(){return un(yw(),"settings.json")}function Pl(){return un(Ys(),"cache","thedotmack","claude-mem")}function Ml(t){return un(Pl(),t)}function Zs(){let t=Pne(import.meta.url),e=un(Dne(t),"..","..");if(!hw(un(e,"package.json")))throw new Error(`npmPackageRootDirectory: expected package.json at ${e}. Bundle structure may have changed \u2014 update the path walk.`);return e}function gw(){return un(Zs(),"plugin")}function qo(){let t=un(gw(),".claude-plugin","plugin.json");if(hw(t))try{let r=JSON.parse(Gj(t,"utf-8"));if(r.version)return r.version}catch{}let e=un(Zs(),"package.json");if(hw(e))try{let r=JSON.parse(Gj(e,"utf-8"));if(r.version)return r.version}catch{}return"0.0.0"}function Wj(){return Rl()!==null}var at,ai=E(()=>{"use strict";Vt();Fo();jo();at=process.platform==="win32"});var Hj,Yj,Zj,Xj=E(()=>{Hj=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return e=>{let r=0;for(t.lastIndex=0;t.test(e);)r+=1;return e.length-r}})(),Yj=t=>t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510,Zj=t=>t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141});var Mne,Nne,Qj,Kne,e1,jne,Lne,Une,t1,r1,n1=E(()=>{Xj();Mne=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Nne=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Qj=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,Kne=/\t{1,1000}/y,e1=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),jne=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Lne=new RegExp("\\p{M}+","gu"),Une={limit:1/0,ellipsis:""},t1=(t,e={},r={})=>{let i=e.limit??1/0,n=e.ellipsis??"",o=e?.ellipsisWidth??(n?t1(n,Une,r).width:0),s=0,a=r.controlWidth??0,l=r.tabWidth??8,c=r.emojiWidth??2,u=2,d=r.regularWidth??1,p=r.wideWidth??u,f=[[jne,d],[Mne,s],[Nne,a],[Kne,l],[e1,c],[Qj,p]],m=0,h=0,g=t.length,S=0,v=!1,T=g,O=Math.max(0,i-o),M=0,z=0,F=0,ce=0;e:for(;;){if(z>M||h>=g&&h>m){let B=t.slice(M,z)||t.slice(m,h);S=0;for(let Q of B.replaceAll(Lne,"")){let he=Q.codePointAt(0)||0;if(Yj(he)?ce=u:Zj(he)?ce=p:ce=d,F+ce>O&&(T=Math.min(T,Math.max(M,m)+S)),F+ce>i){v=!0;break e}S+=Q.length,F+=ce}M=z=0}if(h>=g)break e;for(let B=0,Q=f.length;B<Q;B++){let[he,on]=f[B];if(he.lastIndex=h,he.test(t)){if(S=he===Qj?Hj(t.slice(h,he.lastIndex)):he===e1?1:he.lastIndex-h,ce=S*on,F+ce>O&&(T=Math.min(T,h+Math.floor((O-F)/on))),F+ce>i){v=!0;break e}F+=ce,M=m,z=h,h=m=he.lastIndex;continue e}}h+=1}return{width:v?O:F,index:v?T:g,truncated:v,ellipsed:v&&i>=o}},r1=t1});var $ne,Fne,Ir,bw=E(()=>{n1();$ne={limit:1/0,ellipsis:"",ellipsisWidth:0},Fne=(t,e={})=>r1(t,$ne,e).width,Ir=Fne});function Di(t,e,r){return String(t).normalize().split(Gne).map(i=>Bne(i,e,r)).join(`
|
package/dsh/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "Claude-Mem (Persistent Memory)",
|
|
4
4
|
"description": "OpenClaw plugin for Claude-Mem. Records observations from embedded runner sessions and streams them to messaging channels.",
|
|
5
5
|
"kind": "memory",
|
|
6
|
-
"version": "13.34.
|
|
6
|
+
"version": "13.34.2",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"author": "thedotmack",
|
|
9
9
|
"homepage": "https://claude-mem.ai",
|
package/package.json
CHANGED