| 188 | `)}}});var dm={};_e(dm,{PLATFORM_ENV_VARS:()=>bs,__resetClaudeCodePluginCacheForTests:()=>kN,__seedClaudeCodePluginCacheMissForTests:()=>wN,detectPlatform:()=>Qe,foreignIdentificationEnv:()=>PN,foreignWorkspaceEnv:()=>$N,getAdapter:()=>Ui,getEnvVarNames:()=>TN,getSessionDirSegments:()=>Hi,workspaceEnvVarsFor:()=>lm});import{existsSync as Ye,readFileSync as SN}from"node:fs";import{resolve as He}from"node:path";import{homedir as bv}from"node:os";function vN(){if(co!==null)return co!=="miss"&&co.hasCM;try{let t=He(bv(),".claude","plugins","installed_plugins.json"),e=SN(t,"utf-8"),n=JSON.parse(e),o=[...Object.keys(n.plugins??{}),...Object.keys(n.enabledPlugins??{})].some(s=>s.includes("context-mode"));return co={hasCM:o},o}catch{return co="miss",!1}}function kN(){co=null}function wN(){co="miss"}function TN(t){return(bs.get(t)??[]).map(e=>e.name)}function lm(t){return(bs.get(t)??[]).filter(e=>e.role==="workspace").map(e=>e.name)}function $N(t){let e=new Set;for(let[n,r]of bs)if(n!==t)for(let o of r)o.role==="workspace"&&e.add(o.name);return e}function PN(t){let e=new Set;for(let[n,r]of bs)if(n!==t)for(let o of r)o.role==="identification"&&e.add(o.name);return e}function Hi(t){switch(t){case"claude-code":return[".claude"];case"gemini-cli":return[".gemini"];case"antigravity":return[".gemini"];case"antigravity-cli":return[".gemini"];case"openclaw":return[".openclaw"];case"codex":return[".codex"];case"cursor":return[".cursor"];case"vscode-copilot":return[".vscode"];case"copilot-cli":return[".copilot"];case"kiro":return[".kiro"];case"pi":return[".pi"];case"omp":return[".omp"];case"qwen-code":return[".qwen"];case"kimi":return[".kimi-code"];case"kilo":return[".config","kilo"];case"opencode":return[".config","opencode"];case"zed":return[".config","zed"];case"jetbrains-copilot":return[".config","JetBrains"];default:return null}}function Qe(t){if(t?.name){let s=ox[t.name];if(s)return{platform:s,confidence:"high",reason:`MCP clientInfo.name="${t.name}"`};if(t.name.startsWith("qwen-cli-mcp-client"))return{platform:"qwen-code",confidence:"high",reason:`MCP clientInfo.name="${t.name}" (qwen-cli pattern)`}}let e=process.env.CONTEXT_MODE_PLATFORM;if(e&&["claude-code","gemini-cli","kilo","opencode","codex","vscode-copilot","jetbrains-copilot","copilot-cli","cursor","antigravity","antigravity-cli","kiro","pi","omp","zed","qwen-code","kimi"].includes(e))return{platform:e,confidence:"high",reason:`CONTEXT_MODE_PLATFORM=${e} override`};for(let[s,i]of bs)if(i.some(a=>a.detect!==!1&&process.env[a.name]))return s==="vscode-copilot"&&vN()?{platform:"claude-code",confidence:"high",reason:"VSCODE_PID set but ~/.claude/plugins/installed_plugins.json lists context-mode (issue #539 fallback)"}:{platform:s,confidence:"high",reason:`${i.filter(a=>a.detect!==!1).map(a=>a.name).join(" or ")} env var set`};let n=bv(),r=(()=>{let s=process.env.COPILOT_HOME;return s&&s.trim()!==""?s.startsWith("~")?He(n,s.replace(/^~[/\\]?/,"")):He(s):He(n,".copilot")})(),o=Ye(He(r,"mcp-config.json"))||Ye(He(r,"hooks","context-mode.json"));return process.env.COPILOT_HOME?.trim()&&o?{platform:"copilot-cli",confidence:"medium",reason:"context-mode config in explicit COPILOT_HOME exists (mcp-config.json or hooks/context-mode.json)"}:Ye(He(n,".local","bin","agy"))||Ye(He(n,".gemini","antigravity-cli"))||Ye(He(n,".gemini","config","mcp_config.json"))?{platform:"antigravity-cli",confidence:"medium",reason:"Antigravity CLI marker exists (~/.local/bin/agy, ~/.gemini/antigravity-cli, or ~/.gemini/config/mcp_config.json)"}:o?{platform:"copilot-cli",confidence:"medium",reason:"context-mode config in Copilot CLI home exists (mcp-config.json or hooks/context-mode.json; honors COPILOT_HOME)"}:Ye(He(n,".claude"))?{platform:"claude-code",confidence:"medium",reason:"~/.claude/ directory exists"}:Ye(He(n,".gemini"))?{platform:"gemini-cli",confidence:"medium",reason:"~/.gemini/ directory exists"}:Ye(He(n,".codex"))?{platform:"codex",confidence:"medium",reason:"~/.codex/ directory exists"}:Ye(He(n,".kiro"))?{platform:"kiro",confidence:"medium",reason:"~/.kiro/ directory exists"}:Ye(He(n,".omp"))?{platform:"omp",confidence:"medium",reason:"~/.omp/ directory exists"}:Ye(He(n,".pi"))?{platform:"pi",confidence:"medium",reason:"~/.pi/ directory exists"}:Ye(He(n,".qwen"))?{platform:"qwen-code",confidence:"medium",reason:"~/.qwen/ directory exists"}:Ye(He(n,".kimi-code"))?{platform:"kimi",confidence:"medium",reason:"~/.kimi-code/ directory exists"}:Ye(He(n,".openclaw"))?{platform:"openclaw",confidence:"medium",reason:"~/.openclaw/ directory exists"}:Ye(He(n,".cursor"))?{platform:"cursor",confidence:"medium",reason:"~/.cursor/ directory exists"}:Ye(He(n,".config","kilo"))?{platform:"kilo",confidence:"medium",reason:"~/.config/kilo/ directory exists"}:Ye(He(n,".config","JetBrains"))?{platform:"jetbrains-copilot",confidence:"medium",reason:"~/.config/JetBrains/ directory exists"}:Ye(He(n,".config","opencode"))?{platform:"opencode",confidence:"medium",reason:"~/.config/opencode/ directory exists"}:Ye(He(n,".config","zed"))?{platform:"zed",confidence:"medium",reason:"~/.config/zed/ directory exists"}:{platform:"claude-code",confidence:"low",reason:"No platform detected, defaulting to Claude Code"}}async function Ui(t){let e=t??Qe().platform;switch(e){case"claude-code":{let{ClaudeCodeAdapter:n}=await Promise.resolve().then(()=>(hp(),fp));return new n}case"gemini-cli":{let{GeminiCLIAdapter:n}=await Promise.resolve().then(()=>(zx(),Lx));return new n}case"kilo":case"opencode":{let{OpenCodeAdapter:n}=await Promise.resolve().then(()=>(Zx(),Fx));return new n(e)}case"openclaw":{let{OpenClawAdapter:n}=await Promise.resolve().then(()=>(Vx(),qx));return new n}case"codex":{let{CodexAdapter:n}=await Promise.resolve().then(()=>($p(),rS));return new n}case"vscode-copilot":{let{VSCodeCopilotAdapter:n}=await Promise.resolve().then(()=>(uS(),cS));return new n}case"jetbrains-copilot":{let{JetBrainsCopilotAdapter:n}=await Promise.resolve().then(()=>(mS(),pS));return new n}case"copilot-cli":{let{CopilotCliAdapter:n}=await Promise.resolve().then(()=>(vS(),SS));return new n}case"cursor":{let{CursorAdapter:n}=await Promise.resolve().then(()=>(OS(),CS));return new n}case"antigravity":{let{AntigravityAdapter:n}=await Promise.resolve().then(()=>(Up(),AS));return new n}case"antigravity-cli":{let{AntigravityCliAdapter:n}=await Promise.resolve().then(()=>(ZS(),FS));return new n}case"kiro":{let{KiroAdapter:n}=await Promise.resolve().then(()=>(JS(),GS));return new n}case"zed":{let{ZedAdapter:n}=await Promise.resolve().then(()=>(ev(),QS));return new n}case"qwen-code":{let{QwenCodeAdapter:n}=await Promise.resolve().then(()=>(sv(),ov));return new n}case"omp":{let{OMPAdapter:n}=await Promise.resolve().then(()=>(av(),iv));return new n}case"pi":{let{PiAdapter:n}=await Promise.resolve().then(()=>(uv(),cv));return new n}case"kimi":{let{KimiAdapter:n}=await Promise.resolve().then(()=>(_v(),yv));return new n}default:{let{ClaudeCodeAdapter:n}=await Promise.resolve().then(()=>(hp(),fp));return new n}}}var co,EN,bs,uo=x(()=>{"use strict";sx();co=null;EN=[["claude-code",[{name:"CLAUDE_CODE_ENTRYPOINT",role:"identification"},{name:"CLAUDE_PLUGIN_ROOT",role:"identification"},{name:"CLAUDE_PROJECT_DIR",role:"workspace"},{name:"CLAUDE_SESSION_ID",role:"identification"}]],["antigravity",[{name:"ANTIGRAVITY_CLI_ALIAS",role:"identification"}]],["cursor",[{name:"CURSOR_CWD",role:"workspace"},{name:"CURSOR_TRACE_ID",role:"identification"},{name:"CURSOR_CLI",role:"identification"}]],["kilo",[{name:"KILO",role:"identification"},{name:"KILO_PID",role:"identification"}]],["opencode",[{name:"OPENCODE_PROJECT_DIR",role:"workspace"},{name:"OPENCODE_CLIENT",role:"identification"},{name:"OPENCODE_TERMINAL",role:"identification"},{name:"OPENCODE",role:"identification"},{name:"OPENCODE_PID",role:"identification"}]],["zed",[{name:"ZED_SESSION_ID",role:"identification"},{name:"ZED_TERM",role:"identification"}]],["codex",[{name:"CODEX_THREAD_ID",role:"identification"},{name:"CODEX_CI",role:"identification"}]],["gemini-cli",[{name:"GEMINI_PROJECT_DIR",role:"workspace"},{name:"GEMINI_CLI",role:"identification"}]],["vscode-copilot",[{name:"VSCODE_CWD",role:"workspace"},{name:"VSCODE_PID",role:"identification"}]],["jetbrains-copilot",[{name:"IDEA_INITIAL_DIRECTORY",role:"workspace"}]],["qwen-code",[{name:"QWEN_PROJECT_DIR",role:"workspace"}]],["omp",[{name:"PI_CODING_AGENT_DIR",role:"workspace"}]],["pi",[{name:"PI_WORKSPACE_DIR",role:"workspace",detect:!1},{name:"PI_PROJECT_DIR",role:"workspace",detect:!1},{name:"PI_CONFIG_DIR",role:"identification"},{name:"PI_SESSION_FILE",role:"identification"},{name:"PI_COMPILED",role:"identification"},{name:"PI_CODING_AGENT",role:"identification"}]]],bs=new Map(EN)});import{resolve as Fi}from"node:path";import{homedir as pm}from"node:os";function Ze(t=process.env){let e=t.CLAUDE_CONFIG_DIR;return e&&e.trim()!==""?e.startsWith("~")?Fi(pm(),e.replace(/^~[/\\]?/,"")):Fi(e):Fi(pm(),".claude")}function RN(t=process.env){return Fi(Ze(t),"settings.json")}function mm(t=process.env){let e=[],n=Qe();if(n.platform!=="claude-code"){let o=Hi(n.platform);o&&o.length>0&&e.push(Fi(pm(),...o,"settings.json"))}let r=RN(t);return e.includes(r)||e.push(r),e}var Sr=x(()=>{"use strict";uo()});import{readdirSync as CN,statSync as ON,lstatSync as IN,realpathSync as xv,existsSync as AN,readFileSync as NN}from"node:fs";import{join as vv,extname as MN,relative as kv,sep as DN,resolve as jN}from"node:path";function FN(t){let e="";for(let n=0;n<t.length;n++){let r=t[n];r==="*"?t[n+1]==="*"?(e+=".*",n++):e+="[^/]*":r==="?"?e+="[^/]":"\\^$.|+()[]{}".includes(r)?e+="\\"+r:e+=r}return new RegExp(`^${e}$`)}function Sv(t,e){if(e.length===0)return!1;let n=t.split("/").pop()??t;for(let r of e){if(!r.includes("/")&&!r.includes("*")){if(n===r||t.split("/").includes(r))return!0;continue}let o=FN(r);if(o.test(t)||o.test(n))return!0}return!1}function ZN(t){let e=vv(t,".gitignore");if(!AN(e))return[];try{return NN(e,"utf-8").split(/\r?\n/).map(r=>r.trim()).filter(r=>r.length>0&&!r.startsWith("#")&&!r.startsWith("!")).map(r=>r.replace(/^\//,"").replace(/\/$/,""))}catch{return[]}}function BN(t,e){return kv(t,e).split(DN).join("/")}function wv(t,e={}){let{include:n,exclude:r,maxDepth:o=HN,maxFiles:s=UN,extensions:i,respectGitignore:a=!0,followSymlinks:c=!1}=e,u;try{u=xv(t)}catch{return{files:[],capped:!1,totalSeen:0}}let l=(i&&i.length>0?i:zN).map(_=>(_.startsWith(".")?_:"."+_).toLowerCase()),d=[...LN,...r??[],...a?ZN(u):[]],p=n??[],f=[],m=new Set([u]),h=0,g=!1;function y(_,b){if(g||b>o)return;let S;try{S=CN(_,{withFileTypes:!0})}catch{return}for(let T of S){if(g)return;let M=vv(_,T.name),v=BN(u,M);if(Sv(v,d))continue;let $=T.isDirectory(),P=T.isFile(),A=!1;try{A=IN(M).isSymbolicLink()}catch{continue}if(A){if(!c)continue;let C;try{C=xv(M)}catch{continue}let H=kv(u,C);if((H.startsWith("..")||jN(H)===C)&&H.startsWith("..")||m.has(C))continue;m.add(C);try{let W=ON(C);$=W.isDirectory(),P=W.isFile()}catch{continue}}if($){y(M,b+1);continue}if(!P)continue;let R=MN(M).toLowerCase();if(l.includes(R)&&!(p.length>0&&!Sv(v,p))){if(h++,f.length>=s){g=!0;return}f.push(M)}}}return y(u,0),{files:f,capped:g,totalSeen:h}}var LN,zN,HN,UN,Ev=x(()=>{"use strict";LN=["node_modules",".git","dist","build",".next","coverage",".venv","__pycache__",".DS_Store"],zN=[".md",".mdx",".txt",".json",".yaml",".yml",".ts",".tsx",".js",".jsx",".py",".rs",".go",".sh"],HN=5,UN=200});import{readFileSync as Tv,readdirSync as Iv,unlinkSync as hm,existsSync as fm,statSync as Jc,openSync as $v,fstatSync as Pv,closeSync as Rv}from"node:fs";import{createHash as Cv}from"node:crypto";import{tmpdir as Av}from"node:os";import{join as gm}from"node:path";function Nv(t){let e=new Set,n=[];for(let r of t){let o=r.toLowerCase();e.has(o)||(e.add(o),n.push(r))}return n}function qN(t,e="AND"){let n=Nv(t.replace(/['"(){}[\]*:^~]/g," ").split(/\s+/).filter(s=>s.length>0&&!["AND","OR","NOT","NEAR"].includes(s.toUpperCase())));if(n.length===0)return'""';let r=n.filter(s=>!xs.has(s.toLowerCase()));return(r.length>0?r:n).map(s=>`"${s}"`).join(e==="OR"?" OR ":" ")}function VN(t,e="AND"){let n=t.replace(/["'(){}[\]*:^~]/g,"").trim();if(n.length<3)return"";let r=Nv(n.split(/\s+/).filter(i=>i.length>=3));if(r.length===0)return"";let o=r.filter(i=>!xs.has(i.toLowerCase()));return(o.length>0?o:r).map(i=>`"${i}"`).join(e==="OR"?" OR ":" ")}function WN(t,e){if(t.length===0)return e.length;if(e.length===0)return t.length;let n=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=t.length;r++){let o=[r];for(let s=1;s<=e.length;s++)o[s]=t[r-1]===e[s-1]?n[s-1]:1+Math.min(n[s],o[s-1],n[s-1]);n=o}return n[e.length]}function KN(t){return t<=4?1:t<=12?2:3}function ym(){let t=Av(),e=0;try{let n=Iv(t);for(let r of n){let o=r.match(/^context-mode-(\d+)\.db$/);if(!o)continue;let s=parseInt(o[1],10);if(s!==process.pid)try{process.kill(s,0)}catch{let i=gm(t,r);for(let a of["","-wal","-shm"])try{hm(i+a)}catch{}e++}}}catch{}return e}function _m(t,e){let n=0;try{if(!fm(t))return 0;let r=Date.now()-e*24*60*60*1e3,o=Iv(t).filter(s=>s.endsWith(".db"));for(let s of o)try{let i=gm(t,s),c=Jc(i).mtimeMs<r;if(!c){let u=i+"-wal";if(fm(u))try{let l=Jc(u);l.size>0&&Date.now()-l.mtimeMs>36e5&&(c=!0)}catch{}}if(c){for(let u of["","-wal","-shm"])try{hm(i+u)}catch{}n++}}catch{}}catch{}return n}function QN(t,e){let n=[],r=t.indexOf(e);for(;r!==-1;)n.push(r),r=t.indexOf(e,r+1);return n}function eM(t,e,n=30){if(t.length<2||e.length<2)return 0;let r=0,o=Math.min(t.length,e.length)-1;for(let s=0;s<o;s++){let i=t[s],a=t[s+1],c=e[s].length,u=0;for(let l of i){let d=l+c,p=d+n;for(;u<a.length&&a[u]<d;)u++;u<a.length&&a[u]<=p&&(r++,u++)}}return r}function tM(t){if(t.length===0)return 1/0;if(t.length===1)return 0;let e=t,n=new Array(e.length).fill(0),r=1/0;for(;;){let o=1/0,s=-1/0,i=0;for(let c=0;c<e.length;c++){let u=e[c][n[c]];u<o&&(o=u,i=c),u>s&&(s=u)}let a=s-o;if(a<r&&(r=a),n[i]++,n[i]>=e[i].length)break}return r}var xs,Gc,GN,JN,XN,Ov,YN,Ss,bm=x(()=>{"use strict";hr();Ev();xs=new Set(["the","and","for","are","but","not","you","all","can","had","her","was","one","our","out","has","his","how","its","may","new","now","old","see","way","who","did","get","got","let","say","she","too","use","will","with","this","that","from","they","been","have","many","some","them","than","each","make","like","just","over","such","take","into","year","your","good","could","would","about","which","their","there","other","after","should","through","also","more","most","only","very","when","what","then","these","those","being","does","done","both","same","still","while","where","here","were","much","update","updates","updated","deps","dev","tests","test","add","added","fix","fixed","run","running","using"]);Gc=4096,GN=3,JN=200,XN=5e3,Ov=80,YN=.5;Ss=class t{#e;#t;#n;#o;#s;#a;#c;#i;#u;#l;#f;#h;#g;#y;#_;#b;#x;#S;#v;#k;#w;#E;#T;#$;#P;#R;#C;#O;#I;#A;#N;#M;#D;#j=0;static OPTIMIZE_EVERY=50;#r=new Map;static FUZZY_CACHE_SIZE=256;constructor(e){let n=nt();this.#t=e??gm(Av(),`context-mode-${process.pid}.db`),rs(this.#t);let r;try{r=new n(this.#t,{timeout:3e4}),ns(r)}catch(o){let s=o instanceof Error?o.message:String(o);if(wc(s)){kc(this.#t),rs(this.#t);try{r=new n(this.#t,{timeout:3e4}),ns(r)}catch(i){throw new Error(`Failed to create fresh DB after deleting corrupt file: ${i instanceof Error?i.message:String(i)}`)}}else throw o}this.#e=r,this.#Z(),this.#B()}cleanup(){try{this.#e.close()}catch{}for(let e of["","-wal","-shm"])try{hm(this.#t+e)}catch{}}#Z(){this.#e.exec(` |